From: Miles Bader Date: Tue, 9 Oct 2007 08:52:57 +0000 (+0000) Subject: Merge from emacs--rel--22 X-Git-Tag: archive/raspbian/1%29.2+1-2+rpi1^2~5^2~26596 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=1af74d06e5bdafad9d629d2ed729c5d743cfaf0f;p=emacs.git Merge from emacs--rel--22 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-875 --- 1af74d06e5bdafad9d629d2ed729c5d743cfaf0f diff --cc ChangeLog index ac47cf9b8cf,f7234ae1ef9..f771639cb3d --- a/ChangeLog +++ b/ChangeLog @@@ -1,58 -1,7 +1,62 @@@ +2007-10-05 Eli Zaretskii + + * config.bat: Fix configuring `doc' due to changes in the + directory structure. + + 2007-09-16 Peter O'Gorman (tiny change) + + * configure.in: Don't use -lpthread on HP-UX. + +2007-09-16 Glenn Morris + + * make-dist: File gfdl.1 has been removed. + +2007-09-15 Glenn Morris + + * configure.in: Fix makeinfo version regexp. + +2007-09-12 Glenn Morris + + * configure.in (AC_FUNC_ALLOCA): Throw an error if a system + implementation of alloca is not found. + + * Makefile.in (SOURCES, unlock, relock): Delete. + (install-arch-indep): Do not exclude the etc/ Makefiles. + +2007-09-09 Juri Linkov + + * make-dist: Remove AUTHORS and CONTRIBUTE (moved to etc). + + * README: Add doc/ to documentation directories. + +2007-09-08 Michael Olson + + * MAINTAINERS: Add myself for ERC and tq.el. + Update for new doc/ directory layout. + +2007-09-06 Romain Francoise + + * make-dist: Update for new doc/ directory layout. + +2007-09-06 Glenn Morris + + * Makefile.in (mansrcdir): New variable. + (SUBDIR_MAKEFILES): Update for new doc/ directory layout. + (man/Makefile, lispref/Makefile, lispintro/Makefile): Rename and + update these targets for new doc/ directory layout. + (doc/misc/Makefile): New target. + (install-arch-indep): Use mansrcdir for new location of manpages. + (mostlyclean, clean, distclean, maintainer-clean, unlock) + (relock, info, dvi): Update targets for new doc/ directory layout. + + * configure.in (AC_OUTPUT): Update names of generated Makefiles + for new doc/ directory layout. + +2007-09-02 Andreas Schwab + + * configure.in: Use AS_HELP_STRING throughout. + * configure: Regenerate. + 2007-09-02 Jan Dj,Ad(Brv * configure.in: Require Gtk/Glib 2.6. diff --cc doc/emacs/ChangeLog index b3fd8db6f6f,00000000000..3381040d786 mode 100644,000000..100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@@ -1,4921 -1,0 +1,4937 @@@ ++2007-10-04 Nick Roberts ++ ++ * building.texi (GDB Graphical Interface): Remove references to gdba ++ and mention gud-gdb. ++ ++2007-08-31 Eli Zaretskii ++ ++ * rmail.texi (Rmail Sorting): Improve indexing. ++ +2007-10-06 Juri Linkov + + * text.texi (Fill Commands): Document fill-paragraph-or-region. + (Fill Prefix, Format Indentation): Replace fill-paragraph with + fill-paragraph-or-region. + + * basic.texi (Arguments): Replace fill-paragraph with + fill-paragraph-or-region. + +2007-10-06 Eric S. Raymond + + * files.texi: Update the section on version control for 2007 + conditions. None of these changes are new-VC-specific; that + will come later. + +2007-09-15 Glenn Morris + + * calendar.texi (Holidays): Change all instances of `holiday-list' back + to `list-holidays'. + +2007-09-14 Glenn Morris + + * calendar.texi: Update all instances of mark-calendar-holidays, + list-calendar-holidays, list-holidays with the new names. + +2007-09-06 Glenn Morris + + * Move manual sources from man/ to subdirectories of doc/. + Split into the Emacs manual in emacs/, and other manuals in misc/. + * Makefile.in (INFO_TARGETS, DVI_TARGETS): Reduce to just the Emacs + manual. + (infodir): New variable. + (info): Use $infodir. + (emacsman): Delete target, not needed any more. + Move all targets that are not the Emacs manual to misc/Makefile.in. + (mostlyclean): Remove `gnustmp'. + * makefile.w32-in (INFO_TARGETS, DVI_TARGETS): Reduce to just the Emacs + manual. + (MULTI_INSTALL_INFO, ENVADD, infodir): Go up one more level. + (emacsman): Delete target, not needed any more. + (clean): Remove all info files but Emacs manual. + Move all targets that are not the Emacs manual to misc/Makefile.in. + * emacs-xtra.texi, emacs.texi (setfilename): Go up one more level. + + * Makefile.in (INFOSOURCES): Delete. + (.SUFFIXES): Use $(TEXI2DVI) rather than texi2dvi. + (mostlyclean): Add *.op, *.ops. Move *.aux *.cps *.fns *.kys *.pgs + *.vrs *.toc here... + (maintainer-clean): ...from here. + +2007-09-05 Glenn Morris + + * custom.texi (Safe File Variables): Clarify `!' and risky variables. + +2007-08-29 Glenn Morris + + * emacs.texi (EMACSVER): Increase to 23.0.50. + ++2007-08-27 Richard Stallman ++ ++ * emacs.texi (Top): Clarify menu item for Glossary. ++ ++ * display.texi (Faces): Change secn title. ++ Clarify not all fonts come from Font Lock. ++ +2007-08-17 Eli Zaretskii + + * basic.texi (Position Info): Add index entry for face at point. + Mention that character faces are also displayed by "C-u C-x =". + +2007-08-08 Glenn Morris + + * glossary.texi (Glossary): Deprecate `iff'. + +2007-08-07 Chong Yidong + + * files.texi (File Conveniences): Document point motion keys in Image + mode. + +2007-07-27 Glenn Morris + + * emacs.texi (Copying): Include license text from gpl.texi, rather than + in-line. + + * gpl.texi: New file with text of GPL. + * Makefile.in (EMACSSOURCES): Add gpl.texi. + +2007-07-26 Dan Nicolaescu + + * vc2-xtra.texi (Customizing VC): Add GIT and HG. + + * dired.texi (Wdired): Mention C-x C-q key binding. + +2007-07-28 Nick Roberts + + * building.texi (GDB Graphical Interface): Qualify use of "M-x gdba". + +2007-07-25 Glenn Morris + + * emacs.texi (Copying): Replace license with GPLv3. + + * Relicense all FSF files to GPLv3 or later. + +2007-07-24 Glenn Morris + + * calendar.texi (Writing Calendar Files): cal-tex-diary etc only work + for some calendars. + +2007-07-23 Nick Roberts + + * screen.texi (Mode Line): Describe new mode-line flag that shows if + default-directory for the current buffer is on a remote machine. + +2007-07-21 Eli Zaretskii + + * vc2-xtra.texi (Customizing VC) : Update the + default value. + +2007-07-21 Richard Stallman + + * files.texi (Why Version Control?): Improve previous change. + +2007-07-18 Eric S. Raymond + + * files.texi (Why Version Control?): New node. + +2007-07-12 Nick Roberts + + * building.texi (Starting GUD): Add xref to this anchor. + +2007-06-24 Karl Berry + + * emacs.texi: new Back-Cover Text. + +2007-06-07 Alan Mackenzie + + * display.texi (Optional Mode Line): Document the new form of + line+column numbers, "(561,2)". + +2007-06-06 Juanma Barranquero + + * maintaining.texi (Create Tags Table): Fix typos. + +2007-06-02 Chong Yidong + + * Version 22.1 released. + +2007-05-07 Karl Berry + + * emacs.texi (EMACSVER): Back to 22. + +2007-05-06 Richard Stallman + + * maintaining.texi (Create Tags Table): Clean up previous change. + +2007-05-05 Francesco Potort,Al(B + + * maintaining.texi (Create Tags Table): Add text about the dangers of + making symbolic links to tags files. + +2007-05-04 Karl Berry + + * emacs.texi (EMACSVER) [smallbook]: 22.1 for printed version, not 22. + +2007-05-03 Karl Berry + + * emacs.texi (EMACSVER) [smallbook]: 22 for printed version. + + * .cvsignore (*.pdf): New entry. + + * emacs.texi (\urlcolor, \linkcolor) [smallbook]: \let to \Black + for printing. + +2007-05-01 Richard Stallman + + * cmdargs.texi (Initial Options): Under --batch, mention --eval. + +2007-04-28 Glenn Morris + + * ack.texi (Acknowledgments): + * anti.texi (Antinews): + * programs.texi (Program Modes): Restore mention of python.el pending + consideration of legal status. + +2007-04-28 Richard Stallman + + * files.texi (File Names): Fixes to ~ description on MS systems. + +2007-04-26 Glenn Morris + + * emacs.texi (EMACSVER): Increase to 22.1.50. + +2007-04-25 Karl Berry + + * emacs.texi: Improve line breaks on copyright page, + similar layout to lispref, 8.5x11 by default. + + * dired.texi (Image-Dired): Improve line break, fix typo. + +2007-04-24 Chong Yidong + + * programs.texi (Program Modes): + * anti.texi (Antinews): + * ack.texi (Acknowledgments): python.el removed. + +2007-04-23 Chong Yidong + + * display.texi (Highlight Interactively): Correct description of + hi-lock-file-patterns-policy. + + * files.texi (File Archives): Mention self-extracting executables. + +2007-04-23 Eli Zaretskii + + * search.texi (Unconditional Replace, Query Replace): Add xref to + "Replacement and Case". + +2007-04-22 Chong Yidong + + * dired.texi (Image-Dired): Move from Thumbnails node. + * misc.texi (Thumbnails): Node deleted. + * emacs.texi (Top): Update node listing. + + * files.texi (File Conveniences): + * ack.texi (Acknowledgments): Rename "tumme" to "image-dired". + +2007-04-21 Richard Stallman + + * display.texi (Highlight Interactively): Correct previous change. + Clarify doc of hi-lock-find-patterns, and move new features into it. + +2007-04-20 David Koppelman + + * display.texi (Highlight Interactively): Document + hi-lock-file-patterns-policy. + +2007-04-20 Martin Rudalics + + * display.texi (Scrolling): Fix typo. + +2007-04-15 Chong Yidong + + * doclicense.texi: Remove node heading, so that it can be included by + other files. + + * emacs.texi: Insert node heading for GFDL. + +2007-04-14 Eli Zaretskii + + * cmdargs.texi (Colors): Qualify "color of window" index entry by + "command line". + + * display.texi (Faces): Refer to "Creating Frames" for face + and other frame customizations in .emacs. + + * frames.texi (Creating Frames): Mention that face customizations can + be put in .emacs. Add index entries. + +2007-04-12 Richard Stallman + + * glossary.texi (Glossary): Explain `iff'. + +2007-04-11 Karl Berry + + * gnu.texi (Top), + * macos.texi (Mac Font Specs), + * anti.texi (Antinews), + * xresources.texi (Resources), + * misc.texi (Emulation), + * calendar.texi (Daylight Saving), + * dired.texi (Dired and Find), + * rmail.texi (Remote Mailboxes), + * sending.texi (Mail Headers), + * programs.texi (Which Function), + * files.texi (Recover), + * buffers.texi (Uniquify), + * frames.texi (Wheeled Mice), + * killing.texi (Rectangles): Wording to improve breaks in + 8.5x11 format. + * mule.texi (Language Environments): \hbadness=10000 since there's + no way to reword. + * emacs.texi (smallbook): New @set to more easily switch between + smallbook and 8.5x11. + +2007-04-11 Richard Stallman + + * files.texi (File Conveniences): Add xref to Tumme. + Delete text about Thumbnail mode. + +2007-04-09 Alan Mackenzie + + * cmdargs.texi (Initial Options): Call "inhibit-splash-screen" by its + new name. Insert concept index entries. + +2007-04-08 Chong Yidong + + * display.texi (Standard Faces): Document prefix arg for + list-faces-display. + + * rmail.texi (Rmail Scrolling): Document rmail-end-of-message. + +2007-04-07 Chong Yidong + + * killing.texi (Deletion): Rewrite description of M-\ prefix argument. + + * files.texi (Misc File Ops): Rewrite description of + insert-file-literally. + +2007-03-31 Eli Zaretskii + + * misc.texi (Printing): Postscript -> PostScript. + + * ack.texi (Acknowledgments): Postscript -> PostScript. + + * custom.texi (Init File, Init Non-ASCII): Fix last change. + + * emacs.texi (Top): Fix the menu due to the change in custom.texi + below. + +2007-03-30 Chong Yidong + + * custom.texi (Non-ASCII Rebinding): Node deleted. Material moved to + Init Non-ASCII. + (Init Rebinding, Init Syntax): Link to Init Non-ASCII instead. + (Init Non-ASCII): New node. + +2007-03-28 YAMAMOTO Mitsuharu + + * macos.texi (Mac Font Specs): Mention AppleAntiAliasingThreshold. + +2007-03-12 Glenn Morris + + * calendar.texi, emacs.texi (Daylight Saving): Rename node from + "Daylight Savings". + + * calendar.texi: Replace "daylight savings" with "daylight + saving" in text throughout. + +2007-03-04 Richard Stallman + + * custom.texi (Safe File Variables): Minor correction. + +2007-02-28 Thien-Thi Nguyen + + * rmail.texi (Movemail): Add internal ref. + Don't indent the intro for the PROTO table. + Format PROTO table items with @code. + +2007-02-26 Nick Roberts + + * building.texi: Remove references to bashdb. + +2007-02-19 Juanma Barranquero + + * mule.texi (Language Environments): Update list of supported language + environments. + +2007-02-14 Kim F. Storm + + * building.texi (Grep Searching): Fix lgrep doc. + +2007-02-12 Chong Yidong + + * back.texi: Remove unused file. + +2007-02-05 Francesco Potort,Al(B + + * maintaining.texi (Tag Syntax): Now --members is the default for + etags, not for ctags yet. + +2007-02-03 Eli Zaretskii + + * emacs.texi (Top): Update the top-level menus. Make the detailed menu + headers compliant with Texinfo guidelines and with what texnfo-upd.el + expects. Add comments to prevent people from inadvertently modifying + the key parts needed by `texinfo-multiple-files-update'. + +2007-01-29 Chong Yidong + + * frames.texi (Secondary Selection): Window clicked does not matter + when mouse-yank-at-point is non-nil. + +2007-01-16 Glenn Morris + + * abbrevs.texi (Editing Abbrevs): Describe how to disable a + system abbrev. + +2007-01-11 Richard Stallman + + * msdog.texi (Windows Keyboard): Another small cleanup. + +2007-01-10 Richard Stallman + + * msdog.texi (Windows Keyboard): Yet another try to make + everyone happy with that passage. + +2007-01-05 Richard Stallman + + * anti.texi (Antinews): Mention M-x shell scrolling. + +2007-01-05 Nick Roberts + + * building.texi (Watch Expressions): Describe gdb-max-children. + +2007-01-04 Richard Stallman + + * msdog.texi (Windows Keyboard): Clarify previous change. + +2007-01-02 Richard Stallman + + * custom.texi (Changing a Variable): Minor clarification. + (Specific Customization): customize-customized => customize-unsaved. + + * entering.texi (Entering Emacs): Clean up text about restarting + Emacs for each file. + + * misc.texi (Shell Options): Minor cleanup. + + * msdog.texi (Windows Keyboard): Explain that Windows was incompatible + with Emacs, not vice versa. + + * programs.texi (Symbol Completion): Recommend customizing + window manager. + + * xresources.texi (Resources): Minor fix. + +2007-01-01 Jan Dj,Ad(Brv + + * xresources.texi (Table of Resources): Add scrollBarWidth resource. + +2007-01-01 Richard Stallman + + * commands.texi (User Input): Document keys stolen by window mangers. + +2006-12-31 Richard Stallman + + * custom.texi (Specific Customization): Document customize-option + instead of customize-variable. + +2006-12-31 Kim F. Storm + + * major.texi (Choosing Modes): Document auto-mode-case-fold. + +2006-12-30 Kim F. Storm + + * killing.texi (CUA Bindings): Fix typo. + + * xresources.texi (Table of Resources): Mention grow-only value for + auto-resize-tool-bars. + +2006-12-27 Eli Zaretskii + + * msdog.texi (Windows Keyboard): Mention widespread Windows bindings, + and how to get them back. + +2006-12-26 Richard Stallman + + * calendar.texi (Holidays): Holiday listing is based on current + practice, but DST is not. + +2006-12-25 Richard Stallman + + * emacs.texi (Top): Update subnode menus. + + * mark.texi (Transient Mark): Fix xref. + + * killing.texi (Graphical Kill): Node deleted. + (Killing): Add xref to Cut and Paste. + (CUA Bindings): Update xref. + + * frames.texi (Cut and Paste): New section to hold other nodes. + (Mouse Commands): Node demoted. + (Cut/Paste Other App): Split out from Mouse Commands. + (Word and Line Mouse): Likewise. + (Secondary Selection, Clipboard): Nodes demoted. + +2006-12-24 Kevin Ryde + + * calendar.texi (Holidays): US daylight saving begins second Sunday + in March for 2007 onwards. + (Daylight Savings): Show new US default daylight saving rules, 2nd + Sun in Mar to 1st Sun in Nov, now in cal-dst.el. + +2006-12-23 Chong Yidong + + * calendar.texi (Scroll Calendar): < and > are switched. + +2006-12-23 Kevin Rodgers + + * killing.texi (Deletion): Describe M-\ prefix argument. + +2006-12-23 Richard Stallman + + * search.texi (Regexp Search): Explain why forward and reverse regexp + search are not mirror images. + +2006-12-19 Kim F. Storm + + * major.texi (Choosing Modes): Describe match-function elements for + magic-mode-alist. + +2006-12-18 Eli Zaretskii + + * msdog.texi (Windows Keyboard): Add a footnote about "Windows" keys + peculiarities. + +2006-12-18 Richard Stallman + + * abbrevs.texi (Editing Abbrevs): Fix previous change. + +2006-12-17 Alan Mackenzie + + * programs.texi (Left Margin Paren): Remove the bit which says + that CC Mode sets open-paren-in-column-0-is-defun-start to nil. + Discuss some of the issues of setting this option to nil. + +2006-12-17 Glenn Morris + + * abbrevs.texi (Editing Abbrevs): Mention system abbrevs. + +2006-12-16 Eli Zaretskii + + * msdog.texi (Windows Keyboard): Clarify `w32-recognize-altgr' effect. + (Windows Files): `w32-get-true-file-attributes' is only relevant for + NTFS volumes. + (ls in Lisp): `links' in `ls-lisp-verbosity' is only relevant to NTFS + volumes. + +2006-12-15 Eli Zaretskii + + * text.texi (HTML Mode): Fix "C-c TAB". + +2006-12-09 Richard Stallman + + * misc.texi (Invoking emacsclient): Simplify TCP file text. + +2006-12-08 Kevin Rodgers + + * files.texi (Misc File Ops): Document insert-file-literally. + +2006-12-08 Eli Zaretskii + + * cmdargs.texi (Colors): Note that --color is intended for overriding + the terminal defaults, not for normal invocation. + + * misc.texi (Emacs Server): Improve wording. Don't mention the + ``server program''. Add a cross-reference to "Init File" node. + (Invoking emacsclient): Add index entries. Document both short and + long versions of command-line options. Document the -f option. + +2006-12-06 Richard Stallman + + * text.texi (Outline Format): Say to set outline-regexp + and outline-level with major modes and file local variables. + +2006-12-05 Micha,Ak(Bl Cadilhac + + * anti.texi (Antinews): Mention the alternative to + `~/.emacs_SHELLNAME', which is `~/.emacs.d/init_SHELLNAME.sh'. + + * misc.texi (Interactive Shell): Ditto. + +2006-12-04 Eli Zaretskii + + * emacs.texi (Acknowledgments): Fix Arne J@o{}rgensen's name. + + * ack.texi (Acknowledgments): Fix Arne J@o{}rgensen's name. + +2006-12-01 Eli Zaretskii + + * mule.texi (Enabling Multibyte): Rephrase the confusing reference to a + colon in the mode line. + + * msdog.texi (Windows Processes) [@ifnottex]: Mention w32-shell-execute. + +2006-11-26 Nick Roberts + + * building.texi (Watch Expressions): Mention SPC for expanding/ + contracting watch expressions. + +2006-11-26 Kim F. Storm + + * kmacro.texi (Basic Keyboard Macro): Mention F3/F4 more. + +2006-11-26 Nick Roberts + + * building.texi (Debugger Operation): Define text command mode. + Clarify how tooltips work. + (GDB Graphical Interface): Explain how to run in text command mode + more clearly. + +2006-11-25 Juanma Barranquero + + * mule.texi (Defining Fontsets): Fix use of `charset' and `font'. + +2006-11-22 Juanma Barranquero + + * anti.texi (Antinews): Mention --server-file and TCP sockets. + +2006-11-18 Chong Yidong + + * misc.texi (Interactive Shell): INSIDE_EMACS is set to t, + and EMACS is deprecated. + +2006-11-18 Juanma Barranquero + + * makefile.w32-in (emacs.dvi): Remove xresmini.texi. + +2006-11-18 Jan Dj,Ad(Brv + + * Makefile.in (emacs.dvi): Remove xresmini.texi. + + * emacs.texi: Include xresources.texi both for info and dvi. + + * xresources.texi: Merge text from xresmini.texi. + +2006-11-12 Roberto Rodr,Am(Bguez (tiny change) + + * glossary.texi: Fix typos. + +2006-11-06 Richard Stallman + + * emacs.texi (Acknowledgments): Fix name spelling, add Anna Bigatti. + + * ack.texi (Acknowledgments): Fix name spelling. + +2006-11-01 Juri Linkov + + * search.texi (Word Search): Document incremental word search. + +2006-10-28 Glenn Morris + + * ack.texi (Acknowledgments): Add cal-html author. + + * calendar.texi (Writing Calendar Files): Rename section (was "LaTeX + Calendar"). Describe new package cal-html. + * emacs.texi (Top): Rename old node "LaTeX Calendar" to "Writing + Calendar Files." + +2006-10-23 Richard Stallman + + * abbrevs.texi (Expanding Abbrevs): Expansion happens only when + Abbrev mode is enabled. + +2006-10-16 Richard Stallman + + * emacs.texi: Update ISBN. + +2006-10-11 Kim F. Storm + + * emacs.texi (Acknowledgments): Use @dotless{i}. + +2006-10-08 Nick Roberts + + * building.texi (Breakpoints Buffer): Mention catchpoints. + +2006-10-08 Kim F. Storm + + * ack.texi (Acknowledgments): Update. + + * emacs.texi (Acknowledgments): Fix bad @/ form. + +2006-10-05 Kim F. Storm + + * emacs.texi (Acknowledgments): Add more contributors. + +2006-10-03 Richard Stallman + + * emacs.texi (Acknowledgments): Update version and edition. + +2006-10-01 Karl Berry + + * custom.texi (Customization Groups): Page break to keep example buffer + on one page. + +2006-09-30 Karl Berry + + * programs.texi (Basic Indent): @need to improve page break. + * text.texi: Rewording to improve page breaks, and use @LaTeX{}. + +2006-09-29 Glenn Morris + + * calendar.texi (Date Formats): Doc fix for european-calendar-style. + +2006-09-29 Karl Berry + + * windows.texi (Basic Window): Remove forced @break, no longer + desirable. + * frames.texi (Frame Commands), + * mark.texi (Marking Objects): Reword to avoid bad page break. + * display.texi (Auto Scrolling): Use @tie{} to avoid bad line break. + +2006-09-19 Richard Stallman + + * frames.texi (Dialog Boxes): Clean up wording: avoid passive, + stick to present tense. + +2006-09-18 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Rename x-use-old-gtk-file-dialog + to x-gtk-use-old-file-dialog. + (Dialog Boxes): Document x-gtk-file-dialog-help-text. + +2006-09-15 Jay Belanger + + * emacs.texi (GNU GENERAL PUBLIC LICENSE): + Change "Library Public License" to "Lesser Public License" + throughout. Use "yyyy" to represent year. + +2006-09-12 Reiner Steib + + * files.texi (Visiting): Add index entry "open file". + +2006-09-11 Richard Stallman + + * building.texi (Compilation Mode): Clarification. + (Grep Searching): Add xref to Compilation Mode. + +2006-09-08 Richard Stallman + + * search.texi (Search): Ref multi-file search commands here. + (Other Repeating Search): Not here. + +2006-08-28 Richard Stallman + + * windows.texi (Split Window): Update xref. + + * basic.texi (Continuation Lines): Update xref. + + * indent.texi (Tab Stops): Update xref. + + * emacs.texi (Top): Update subnode menu. + + * display.texi (Line Truncation, Displaying Boundaries): New nodes, + split out of Display Custom. + +2006-08-25 Kim F. Storm + + * display.texi (Display Custom): Add variables overline-margin + and x-underline-at-descent-line. + +2006-08-25 Richard Stallman + + * entering.texi (Exiting): Rewrite to give graphical displays + priority over text terminals. + + * search.texi (Incremental Search): Move index entries. + +2006-08-23 Chong Yidong + + * custom.texi (Init File): Reference Find Init to avoid "home + directory" confusion. + +2006-08-22 Nick Roberts + + * building.texi (Other GDB-UI Buffers): Describe how to edit + a value in the locals buffer. + +2006-08-21 Richard Stallman + + * search.texi (Basic Isearch): Add `isearch' index entry. + +2006-08-16 Richard Stallman + + * misc.texi (Saving Emacs Sessions): Clean up wording. + + * mark.texi (Marking Objects): Mention term "select all". + + * emacs.texi (Top): Update subnode menu. + + * help.texi (Help Mode): Move node up in file. + +2006-08-15 Nick Roberts + + * building.texi (Stack Buffer): Explain fringe arrow. + +2006-08-12 Eli Zaretskii + + * misc.texi (Saving Emacs Sessions): Clarify when desktop is restored + on startup. + +2006-08-11 Romain Francoise + + * ack.texi (Acknowledgments): Delete mention to zone-mode.el. + +2006-08-10 Sven Joachim (tiny change) + + * mule.texi (Recognize Coding, Text Coding): Fix typos. + +2006-08-10 Richard Stallman + + * text.texi (Format Faces): Substantial rewrites to deal + with face merging. Empty regions don't count. Clarify + face property inheritance. + +2006-08-08 Romain Francoise + + * dired.texi (Marks vs Flags): Fix typo reported by Ari Roponen + . + +2006-08-04 Eli Zaretskii + + * cmdargs.texi (Window Size X) <--geometry>: Only width and height + apply to all frames. + +2006-08-01 Richard Stallman + + * help.texi (Name Help): Add index entries for describe-variable. + +2006-08-01 Nick Roberts + + * building.texi (GDB Graphical Interface): Shorten node names. + (GDB-UI Layout): Use GDB-related. + (Other GDB-UI Buffers): Simplify English. + +2006-07-31 Richard Stallman + + * search.texi (Query Replace): Add xref for Dired's Q command. + +2006-07-31 Nick Roberts + + * building.texi (GDB commands in Fringe): Rename to... + (Source Buffers): ..this and move forward. Describe hollow arrow and + new option gdb-find-source-frame. + +2006-07-29 Richard Stallman + + * dired.texi (Operating on Files): Simplify previous change + and fix Texinfo usage. + +2006-07-29 Eli Zaretskii + + * dired.texi (Operating on Files): Add cross-references. State the + Unix commands that do similar things. + +2006-07-28 Richard Stallman + + * mark.texi (Transient Mark): Clarify that region never disappears + when Transient Mark mode is off, and not when it is on. + +2006-07-27 Richard Stallman + + * search.texi (Non-ASCII Isearch): Clarify. Mention C-q. + +2006-07-24 Richard Stallman + + * xresources.texi (GTK styles): Fix texinfo usage. + + * commands.texi (User Input): Explain why we teach keyboard cmds. + + * xresources.texi, xresmini.texi, search.texi, programs.texi: + * misc.texi, kmacro.texi, killing.texi, glossary.texi: + * fortran-xtra.texi, files.texi, emacs.texi, emacs-xtra.texi: + * doclicense.texi, display.texi, dired.texi, basic.texi: + * anti.texi, ack.texi: Move periods and commas inside quotes. + +2006-07-22 Eli Zaretskii + + * cmdargs.texi (General Variables): Document EMAIL. + +2006-07-21 Eli Zaretskii + + * frames.texi (Frame Commands): Mention that focus-follows-mouse + doesn't have effect on MS-Windows. + +2006-07-17 Richard Stallman + + * building.texi (Grep Searching): Explain about chaining grep commands. + +2006-07-10 Nick Roberts + + * killing.texi, mini.texi: Fix typos. + +2006-07-09 Chong Yidong + + * misc.texi (Invoking emacsclient): Document behavior when emacsclient + is invoked for multiple files. + +2006-07-08 Eli Zaretskii + + * msdog.texi (Windows Keyboard) [@iftex]: Add an @inforef to the + on-line manual for the rest of this node. + (Windows Mouse) : Include + unconditionally. + (Windows Processes) : Include unconditionally. + Improve wording. + (Windows Printing): Improve wording. + (Windows Misc) [@iftex]: Add an @inforef to the on-line manual for the + rest of this node. + +2006-07-05 Thien-Thi Nguyen + + * building.texi (Lisp Eval): Throughout, replace eval-current-buffer + with eval-buffer. + +2006-07-05 Nick Roberts + + * mule.texi (Coding Systems, Specify Coding): Link descriptions + of character translation. + +2006-07-04 Nick Roberts + + * rmail.texi (Remote Mailboxes): Add missing @code keyword. + +2006-07-03 Karl Berry + + * emacs.texi (\hbadness): Set to 6000 so we aren't bothered by + not-too-underfull hboxes in the TeX output. + * abbrevs.texi, buffers.texi, building.texi, calendar.texi, + * cmdargs.texi, custom.texi, dired.texi, macos.texi, + * maintaining.texi, misc.texi, mule.texi, programs.texi, rmail.texi, + * sending.texi, text.texi: Fix overfull/underfull boxes. + +2006-07-03 Romain Francoise + + * m-x.texi (M-x): Fix. + +2006-07-03 Richard Stallman + + * search.texi (Other Repeating Search): filename -> file name. + + * misc.texi (Narrowing): Minor cleanups. + + * files.texi (Visiting): filename -> file name. + + * emacs.texi (Top): Update subnode menus. + + * mule.texi (Coding Systems): Move char translation stuff here. + (Specify Coding, Output Coding): New nodes, out of Recognize Coding. + (Recognize Coding): Substantial local rewrites. + (International): Update menu. + + * display.texi (Auto Scrolling): New node, broken out of Scrolling. + (Scrolling): Substantial local rewrites. + (Display): Update menu and intro. + + * dired.texi: filename -> file name. + + * custom.texi (Safe File Variables): Texinfo usage fix. + +2006-07-03 Ted Zlatanov + + * help.texi, m-x.texi: Lots of cleanups. + +2006-06-30 Eli Zaretskii + + * msdog.texi (ls in Lisp, Windows Keyboard, Windows Mouse) + (Windows Processes, Windows Misc): Shorten the printed version by + selectively conditioning less important portions by @ifnottex. + +2006-06-27 Richard Stallman + + * mini.texi (Minibuffer File): Minor cleanup. + +2006-06-25 Nick Roberts + + * frames.texi (XTerm Mouse): Rename to... + (Text-Only Mouse): ...this. Mention t-mouse-mode. + + * emacs.texi (Top): Use new node name. + +2006-06-24 Eli Zaretskii + + * emacs.texi (Top): Update the detailed menu according to changes in + msdog.texi. + + * msdog.texi (Windows Keyboard): New section. + (Windows Mouse): New section. + (Windows System Menu): Remove section (text merged with "Windows + Keyboard"). + (Windows Misc): New section. + + * dired.texi (Dired Enter): Refer to msdog.texi for ls-lisp emulation. + + * msdog.texi (ls in Lisp): New section. + + * files.texi (Visiting): Document case-insensitive wildcard matching + under find-file-wildcards. + +2006-06-16 YAMAMOTO Mitsuharu + + * macos.texi (Mac Input): Add description of mac-function-modifier. + Now Unicode keyboard layouts work. + +2006-06-10 Richard Stallman + + * mule.texi (Recognize Coding): Clarify previous change. + +2006-06-09 Kenichi Handa + + * mule.texi (Recognize Coding): Describe the convention of "CODING!" + notation. + +2006-06-07 Kevin Ryde + + * mule.texi (Coding Systems): Footnote xref "MS-DOS and MULE" in main + manual for @ifnottex, but in emacs-extra for @iftex. + + * cmdargs.texi (General Variables): Fix smtpmail xref. + +2006-05-29 Stefan Monnier + + * programs.texi (Comment Commands): + * custom.texi (Specifying File Variables): + Use ;; instead of ;;; to better follow coding conventions. + +2006-06-07 Nick Roberts + + * building.texi (Watch Expressions): Move node to end. + (GDB Graphical Interface): Move description of clicks in fringe... + (GDB commands in the Fringe): ...to here. New node. + +2006-06-05 Romain Francoise + + * xresmini.texi (GTK resources): Fix various typos. + +2006-06-05 Nick Roberts + + * building.texi (GDB Graphical Interface): Update bindings. + (Commands of GUD): Add gud-print. Remove gud-run. + Restate availability more generally. + +2006-06-03 Ted Zlatanov + + * mini.texi: Lots of cleanups. + +2006-06-01 Luc Teirlinck + + * misc.texi (Shell History Copying): Update descriptions of `C-c RET' + and Mouse-2. + +2006-06-01 Jan Dj,Ad(Brv + + * screen.texi (Menu Bar): Change menu-bar-start to menu-bar-open. + +2006-05-31 Richard Stallman + + * basic.texi (Moving Point): Fix previous change. + +2006-05-29 Jan Dj,Ad(Brv + + * screen.texi (Menu Bar): F10 for Gtk+/Lesstif/Lucid menus. + +2006-05-28 Ted Zlatanov + + * basic.texi: Many simplifications and improvements in wording. + +2006-05-26 Nick Roberts + + * anti.texi (Antinews): Create a node for gdb-ui. + +2006-05-22 Reiner Steib + + * frames.texi (Menu Bars, Tool Bars): Add index entries. + +2006-05-20 Richard Stallman + + * dired.texi (Dired Navigation): dired-goto-file is now j. + +2006-05-20 Eli Zaretskii + + * mule.texi (Coding Systems): Mention the undecided-* coding systems + and their aliases. + + * msdog.texi (Windows Printing): Mention non-support of plain text + printing with some el-cheapo printers, and suggest a workaround. + +2006-05-20 Kevin Ryde + + * text.texi (TeX Print): tex-dvi-view-command has a default value, + remove the bit saying you must set it. + +2006-05-19 Luc Teirlinck + + * trouble.texi (Checklist): + * text.texi (Text, Auto Fill, Text Mode): + * search.texi (Nonincremental Search): + * rmail.texi (Rmail Labels): + * mule.texi (Input Methods, Multibyte Conversion): + * misc.texi (Gnus, Where to Look, PostScript): + * maintaining.texi (Create Tags Table): + * indent.texi (Indentation Commands): + * fixit.texi (Spelling): + * emacs.texi (Copying): + * custom.texi (Init File): ifinfo -> ifnottex. + +2006-05-17 Richard Stallman + + * files.texi (Diff Mode): Mention C-x `. + +2006-05-08 Richard Stallman + + * custom.texi (Disabling): Textual cleanups. + +2006-05-12 Glenn Morris + + * calendar.texi (Displaying the Diary, Format of Diary File): + Refer to diary-view-entries, diary-list-entries, + diary-show-all-entries rather than obsolete aliases. + +2006-05-12 Eli Zaretskii + + * calendar.texi (Calendar/Diary, Holidays, Displaying the Diary) + (Displaying the Diary, Special Diary Entries, Importing Diary): + * building.texi (Compilation Shell): + * buffers.texi (Several Buffers) [iftex]: Replace @xref's to + emacs-xtra with @inforef's. + + * files.texi (Visiting): Fix wording. + + * mule.texi (Coding Systems, Text Coding): More indexing. + Mention that C-x RET f can set eol conversion. + +2006-05-07 Jan Dj,Ad(Brv + + * xresmini.texi (GTK resources): Insert GTK description. + + * xresources.texi (GTK resources): metafont should be menufont. + +2006-05-06 Michael Albinus + + * mini.texi (Completion Options): Completion of remote files' + method, user name and host name is active only in partial + completion mode. + +2006-05-06 Eli Zaretskii + + * makefile.w32-in (emacs.dvi): + * Makefile.in (emacs.dvi): Add xresmini.texi. + + * xresmini.texi (Table of Resources): Remove xref to non-existent + node "LessTif Resources". + + * msdog.texi (Microsoft Windows): + * calendar.texi (Calendar/Diary, Displaying the Diary) + (Special Diary Entries, Importing Diary, Holidays): + * programs.texi (Program Modes): + * text.texi (Text): + * buffers.texi (Several Buffers): + * files.texi (Comparing Files): Fix cross-references to emacs-xtra. + +2006-05-06 Eli Zaretskii + + The following changes merge the emacs-xtra manual into the main + manual, but only for on-line version of the manual. + + * vc2-xtra.texi (Version Backups, Local Version Control) + (Making Snapshots, Change Logs and VC, Version Headers) + (Customizing VC, CVS Options) [ifnottex]: Conditional xref's for + on-line manual. + + * vc1-xtra.texi (VC Dired Mode) [ifnottex]: Conditional xref's + for on-line manual. + + * msdog-xtra.texi (MS-DOS, MS-DOS Keyboard, MS-DOS Mouse) + (MS-DOS Display, MS-DOS File Names, MS-DOS Printing) + (MS-DOS and MULE, MS-DOS Processes) [ifnottex]: Conditional xref's + for on-line manual. + + * fortran-xtra.texi (Fortran, Fortran Autofill) + (Fortran Autofill, Fortran Abbrev) [ifnottex]: Conditional xref's + for on-line manual. + + * picture-xtra.texi (Basic Picture, Rectangles in Picture) [ifnottex]: + Conditional xref's for on-line manual. + + * emerge-xtra.texi (Emerge, Overview of Emerge) + (Fine Points of Emerge) [ifnottex]: Conditional xref's for on-line + manual. + + * Makefile.in (INFO_TARGETS): Remove ../info/emacs-xtra. + (EMACS_XTRA): New variable, lists the new *-xtra.texi files. + (EMACSSOURCES): Use EMACS_XTRA. + (../info/emacs-xtra): Remove. + (emacs-xtra.dvi): Add EMACS_XTRA to prerequisites. + + * makefile.w32-in (INFO_TARGETS): Remove $(infodir)/emacs-xtra. + (EMACS_XTRA): New variable, lists the new *-xtra.texi files. + (EMACSSOURCES): Use EMACS_XTRA. + ($(infodir)/emacs-xtra): Remove. + (emacs-xtra.dvi): Add EMACS_XTRA to prerequisites. + + * trouble.texi (Quitting): + * text.texi (Text): + * programs.texi (Program Modes): + * msdog.texi (Microsoft Windows): + * frames.texi (Frames): + * files.texi (Backup, Version Control, VC Concepts) + (Types of Log File, Advanced C-x v v, Log Buffer, Old Versions) + (Registering, VC Status, VC Undo, Multi-User Branching) + (Comparing Files): + * calendar.texi (Calendar/Diary, Holidays, Displaying the Diary) + (Displaying the Diary, Special Diary Entries, Importing Diary): + * buffers.texi (Several Buffers): Replace inforef to emacs-xtra by + conditional xref's, depending on @iftex/@ifnottex. + + * msdog.texi (Microsoft Windows) [ifnottex]: Add menu entry for + "MS-DOS". @include msdog-xtra.texi. + + * programs.texi (Programs) [ifnottex]: Add menu entry for "Fortran". + [ifnottex]: @include fortran-xtra.texi. + + * files.texi (Secondary VC Commands) [ifnottex]: Add menu entries + for vc-xtra.texi subsections. + (VC Undo) [ifnottex]: @include vc1-xtra.texi and @lowersections it. + (Multi-User Branching) [ifnottex]: @include vc2-xtra.texi. + + * sending.texi (Sending Mail): A @node line without explicit Prev, + Next, and Up links. + + * abbrevs.texi (Abbrevs): A @node line without explicit Prev, + Next, and Up links. + + * emacs.texi (Top) [ifnottex]: Add menu entries for "Picture Mode" + and its sections. @include picture-xtra.texi. + + * maintaining.texi (Maintaining) [ifnottex]: Add menu entry for + "Emerge". + (List Tags) [ifnottex]: @include emerge-xtra.texi. + + * cal-xtra.texi (Daylight Savings): Remove this node: it is an + exact duplicate of its name-sake in calendar.texi. + + * calendar.texi (Calendar/Diary) [ifnottex]: Add menu item for + "Advanced Calendar/Diary Usage". + (Time Intervals) [ifnottex]: @include cal-xtra.texi. + + * dired.texi (Subdirectories in Dired) [ifnottex]: @include + dired-xtra.texi. + (Dired) [ifnottex]: Add menu entry for "Subdir Switches". + + * files.texi (Reverting) [ifnottex]: @include arevert-xtra.texi. + (Files) [ifnottex]: Add menu entry for Autorevert. + + * emacs-xtra.texi (Introduction): Reword to make consistent with + printed version only. + : Remove the body of all chapters and move them to the + new *-xtra.texi files. Use @raisesections and @lowersections to + convert sections to chapters etc. + + * msdog-xtra.texi: + * fortran-xtra.texi: + * vc-xtra.texi: + * vc1-xtra.texi: + * vc2-xtra.texi: + * emerge-xtra.texi: + * cal-xtra.texi: + * dired-xtra.texi: + * arevert-xtra.texi: New files, with text from respective chapters + of emacs-xtra.texi. Convert each @chapter into @section, @section + into @subsection, etc. + + * emacs-xtra.texi (MS-DOS): Renamed from "MS-DOG". All references + updated. + + * msdog.texi (Microsoft Windows): Rename from "Emacs and Microsoft + Windows". All references updated. + +2006-05-06 YAMAMOTO Mitsuharu + + * macos.texi (Mac Input): Mention input from Character Palette. + (Mac Font Specs): Fix typo. + +2006-05-05 Richard Stallman + + * files.texi (Diff Mode): Minor cleanup. + +2006-05-05 Karl Berry + + * emacs.texi: Call @fonttextsize 10, inside @tex to avoid + errors from the current release of makeinfo (4.8). + * help.texi (Library Keywords): Change widest word in multitable + template from `emulations' to `convenience'. (Not sure if this is + related to the font change.) + +2006-05-05 Eli Zaretskii + + * files.texi (File Names): Add a footnote about limited support of + ~USER on MS-Windows. + + * cmdargs.texi (Initial Options): Add a footnote about limited + support of ~USER on MS-Windows. + +2006-05-03 Richard Stallman + + * files.texi (Diff Mode): Node moved here. + (Comparing Files): Delete what duplicates new node. + (Files): Put Diff Mode in menu. + + * misc.texi (Diff Mode): Moved to files.texi. + + * emacs.texi (Top): Update menu for Diff Mode. + + * trouble.texi (Emergency Escape): Simplify. + + * emacs.texi (Top): Minor clarification. + +2006-05-03 Teodor Zlatanov + + * commands.texi, entering.texi, screen.texi: Many simplifications. + +2006-05-03 Richard Stallman + + * commands.texi (Text Characters): Delete paragraph about unibyte + non-ASCII printing chars. + + * killing.texi (Killing): Say "graphical displays". + * display.texi: Say "graphical displays". + + * cmdargs.texi (Misc X): Say "graphical displays". + +2006-05-01 Richard Stallman + + * emacs.texi (Top): Add Diff Mode to menu. + +2006-05-01 Aaron S. Hawley + + * misc.texi (Diff Mode): New node. + +2006-05-01 YAMAMOTO Mitsuharu + + * macos.texi (Mac International): Now Carbon Emacs has ATSUI support. + (Mac Environment Variables): Shorten example line. + (Mac Font Specs): Shorten lisp lines. Add descriptions for ATSUI. + +2006-05-01 Nick Roberts + + * building.texi (GUD Customization): Describe cases %d and %c. + Update description for %e. + +2006-04-30 Glenn Morris + + * calendar.texi (LaTeX Calendar): Mention cal-tex-preamble-extra. + +2006-04-29 Dan Nicolaescu + + * custom.texi (Examining): Update C-h v output example. + +2006-04-29 Kim F. Storm + + * building.texi (Grep Searching): Add lgrep and rgrep. + +2006-04-23 Richard Stallman + + * emacs.texi [TeX]: Use xresmini.texi instead of xresources.texi. + + * xresmini.texi: New file. + + * xresources.texi (Face Resources): Split table into font resources + and the rest. Combine similar attributes for brevity. + +2006-04-21 Eli Zaretskii + + * emacs-xtra.texi (MS-DOS File Names): Remove section about + backslashes and case-insensitivity in file names (moved to the + main manual). + (MS-DOS Printing): Move most of the text to the main manual. + + * msdog.texi (Windows Files, Windows HOME, MS-Windows Printing): + New nodes. + (Windows Processes, Windows System Menu): Add index entries and + fix wording. + +2006-04-18 J.D. Smith + + * misc.texi (Shell Ring): Add notes on saved input when + navigating off the end of the history list. + +2006-04-18 Chong Yidong + + * misc.texi (Shell Options): Correct default value of + comint-scroll-show-maximum-output. + +2006-04-18 Nick Roberts + + * building.texi (Watch Expressions): Update. + +2006-04-12 Richard Stallman + + * search.texi: Clean up previous change. + +2006-04-12 Eli Zaretskii + + * search.texi (Regexp Backslash, Regexp Replace): Add index + entries for ``back reference'' and mention the term itself in the + text. + +2006-04-11 Richard Stallman + + * custom.texi (Safe File Variables): + Document enable-local-variables = :safe. + +2006-04-11 Karl Berry + + * emacs-xtra.texi, emacs.texi (Dired under VC, VC Dired Commands) + (Remote Repositories, Version Backups, Local Version Control) + (Snapshots, Making and Using Snapshots, Snapshot Caveats) + (Miscellaneous Commands and Features of VC, Change Logs and VC) + (Renaming VC Work Files and Master Files) + (Inserting Version Control Headers, Customizing VC, General Options) + (Options for RCS and SCCS, Options specific for CVS): Move all + these nodes to emacs-xtra.texi, for brevity. + * cmdargs.texi, files.texi: Change cross-references. + +2006-04-11 J.D. Smith + + * files.texi (Old Versions): Update description of vc-annotate's + use of color to indicate date ranges. + +2006-04-09 Kevin Ryde + + * sending.texi (Mail Sending): In send-mail-function @pxref smtpmail, + put info and printed manual names the right way around. + +2006-04-09 Karl Berry + + * msdog.texi, emacs-xtra.texi: Move all the MS-DOS material to + emacs-xtra.texi, leaving only MS Windows information. + * building.texi, emacs.texi, frames.texi, gnu.texi, macos.texi, + * msdog.texi, mule.texi, trouble.texi: Change cross-references and + node names. + + * emacs.texi: Move @summarycontents and @contents to the beginning + of the file. + +2006-04-08 Kevin Ryde + + * text.texi (Fill Commands): fill-nobreak-predicate is now a hook. + +2006-04-07 Richard Stallman + + * programs.texi (Comments, Comment Commands, Options for Comments) + (Multi-Line Comments): "Align", not "indent". + (Basic Indent): C-j deletes trailing whitespace before the newline. + +2006-04-06 Richard Stallman + + * programs.texi (Basic Indent): Clarify relationship of C-j to TAB. + +2006-04-06 Eli Zaretskii + + * killing.texi (Rectangles): Add index entry for marking a rectangle. + +2006-04-05 Richard Stallman + + * emacs.texi (Top): Update subnode menu. + + * trouble.texi (Unasked-for Search): Node deleted. + (Lossage): Delete from menu. + +2006-04-04 Richard Stallman + + * trouble.texi: Various cleanups. + (Checklist): Don't bother saying how to snail a bug report. + (Emergency Escape): Much rewriting. + (After a Crash): Rename the core dump immediately. + (Total Frustration): Call it a psychotherapist. + (Bug Criteria): Avoid "illegal instruction". + (Sending Patches): We always put the contributor's name in. + + * misc.texi (Thumbnails): Minor correction. + +2006-04-03 Richard Stallman + + * misc.texi (Thumbnails): Minor cleanup. + +2006-04-02 Karl Berry + + * sending.texi (Mail Sending): pxref to Top needs five args. + + * texinfo.tex: Update to current version (2006-03-21.13). + +2006-03-31 Richard Stallman + + * emacs.texi (Top): Update subnode menu. + + * help.texi (Help Mode): Cleanup. + + * dired.texi: Many cleanups. + (Dired Deletion): Describe dired-recursive-deletes. + (Operating on Files): dired-create-directory moved. + (Misc Dired Features): Move to here. + (Tumme): Node moved to misc.texi. + + * custom.texi: Many cleanups. + (Minor Modes): Don't mention ISO Accents Mode. + (Examining): Update C-h v output example. + (Hooks): Add index and xref for add-hook. + (Locals): Delete list of vars that are always per-buffer. Rearrange. + (Local Keymaps): Don't mention lisp-mode-map, c-mode-map. + + * misc.texi: Many cleanups. + (beginning): Add to summary of topics. + (Shell): Put eshell xref at the end. Remove eshell from table. + (Thumbnails): New node. + +2006-03-28 Eli Zaretskii + + * files.texi (File Name Cache): Make it clear that the cache is + not persistent. + +2006-03-25 Karl Berry + + * emacs-xtra.texi, emacs.texi, gnu.texi: + (1) use @copyright{} instead of (C) in typeset text; + (2) do not indent copyright year list (or anything else). + +2006-03-21 Juanma Barranquero + + * files.texi (VC Dired Mode): Remove misplaced brackets. + +2006-03-21 Andre Spiegel + + * files.texi: Various updates and clarifications in the VC chapter. + +2006-03-19 Luc Teirlinck + + * help.texi (Help Mode): Document "C-c C-c". + +2006-03-16 Luc Teirlinck + + * emacs-xtra.texi (Top): Avoid ugly continuation line in + menu in the standalone Info reader. + +2006-03-15 Chong Yidong + + * emacs-xtra.texi (Emerge, Picture Mode, Fortran): New chapters, + moved here from Emacs manual. + + * programs.texi (Fortran): Section moved to emacs-xtra. + (Program Modes): Xref to Fortran in emacs-xtra. + + * maintaining.texi (Emerge): Move to emacs-xtra. + * files.texi (Comparing Files): Xref to Emerge in emacs-xtra. + + * picture.texi: File deleted. + * Makefile.in: + * makefile.w32-in: Remove picture.texi. + + * text.texi (Text): Xref to Picture Mode in emacs-xtra. + * abbrevs.texi (Abbrevs): + * sending.texi (Sending Mail): Picture node removed. + + * emacs.texi (Top): Update node listings. + +2006-03-12 Richard Stallman + + * calendar.texi: Various cleanups. + +2006-03-11 Luc Teirlinck + + * search.texi (Regexps): Use @samp for regexp that is not in Lisp + syntax. + +2006-03-08 Luc Teirlinck + + * search.texi (Regexps): More accurately describe which characters + are special in which situations. Recommend _not_ to quote `]' or + `-' when they are not special. + +2006-02-28 Andre Spiegel + + * files.texi (Old Versions): Clarify operation of C-x v =. + +2006-02-21 Nick Roberts + + * building.texi (Watch Expressions): Update and describe + gdb-speedbar-auto-raise. + +2006-02-19 Richard M. Stallman + + * emacs.texi: Use @smallbook. + (Top): Update ref to Emacs paper, delete ref to Cookbook. + Update subnode menu. + + * building.texi (Lisp Interaction): Minor addition. + +2006-02-18 Nick Roberts + + * building.texi (Watch Expressions): Update and be more precise. + +2006-02-15 Francesco Potort,Al(B + + * maintaining.texi (Create Tags Table): Explain why the + exception when etags writes to files under the /dev tree. + +2006-02-14 Richard M. Stallman + + * custom.texi (Safe File Variables): Lots of clarification. + Renamed from Unsafe File Variables. + +2006-02-14 Chong Yidong + + * custom.texi (Unsafe File Variables): File variable confirmation + assumed denied in batch mode. + +2006-02-14 Richard M. Stallman + + * building.texi (GDB User Interface Layout): Don't say `inferior' + for program being debugged. + +2006-02-15 Nick Roberts + + * building.texi (GDB Graphical Interface): + Replace gdb-use-inferior-io-buffer with gdb-use-separate-io-buffer. + +2006-02-13 Chong Yidong + + * custom.texi (Specifying File Variables, Unsafe File Variables): + New nodes, split from File Variables. Document new file local + variable behavior. + +2006-02-13 YAMAMOTO Mitsuharu + + * display.texi (Standard Faces): + * files.texi (Visiting): + * frames.texi (Clipboard): + * glossary.texi (Glossary) : + * xresources.texi (X Resources): Mention Mac OS port. + +2006-02-12 Richard M. Stallman + + * building.texi (Building): Clarify topic in intro. + + * maintaining.texi (Maintaining): Change title; clarify topic. + Delete duplicate index entries. + + * building.texi (Other GDB User Interface Buffers): Clarifications. + + * text.texi (Cell Commands): Clarifications. + + * programs.texi (Defuns): Delete duplicate explanation of + left-margin paren convention. + (Hungry Delete): Minor cleanup. + +2006-02-11 Mathias Dahl + + * dired.texi (Tumme): More tumme documentation. + +2006-02-11 Alan Mackenzie + + * programs.texi ("Hungry Delete"): Correct the appellation of the + backspace and delete keys to @kbd{DEL} and @kbd{DELETE}. + +2006-02-11 Mathias Dahl + + * dired.texi (Tumme): Fix small bug. + +2006-02-10 YAMAMOTO Mitsuharu + + * macos.texi (Mac International): Rename "fontset-mac" to + "fontset-standard". + +2006-02-09 Mathias Dahl + + * dired.texi (Tumme): Basic documentation for Tumme added. + +2006-02-07 Luc Teirlinck + + * mule.texi (International): + * programs.texi (Basic Indent): Fix typos. + + * custom.texi (Minor Modes): + * display.texi (Text Display): + * commands.texi (Text Characters): Update xrefs. + +2006-02-07 Richard M. Stallman + + * emacs.texi (Top): Update subnode menu. + Update info on old Emacs papers. + (Intro): "Graphical display", not window system. + + * xresources.texi (GTK styles): Minor clarifications. + + * trouble.texi: "Graphical display", not window system. + (Stuck Recursive): Minor clarification. + + * text.texi: Minor clarifications. + (Sentences): Explain why two-space convention is better. + Explain sentence-end-without-period here. + (Fill Commands): Not here. + (Refill): Node moved down. + (Filling): Update menu. + (Table Creation, Cell Justification, Column Commands): Clarify. + + * sending.texi: Minor clarifications. + + * search.texi (Regexp Backslash): Clarification. + + * rmail.texi: Minor cleanups. + (Rmail): Delete digression about `rmail-mode'. + (Rmail Inbox): Delete false advice wrt rmail-primary-inbox-list. + (Rmail Files): Mention C-u M-x rmail. + (Rmail Reply): Mention References. + (Rmail Display): Mention rmail-nonignored-headers. + + * programs.texi: Minor cleanups. + (Comment Commands): Mention momentary Transient Mark mode. + (Matching): Be more specific about customizing show-paren-mode. + (Info Lookup): Don't list the modes that support C-h S. + Just say what it does in an unsupported mode. + (Man Page): Delete excessive info on customizing woman. + (Motion in C): Don't mention c-for/backward-into-nomenclature. + + * abbrevs.texi: Minor clarifications. + (Dabbrev Customization): Talk about "dynamic abbrev expansion", + not "dynamic abbrevs" as if they were a kind of abbrev. + + * picture.texi (Picture): Minor cleanup. + + * mule.texi (Communication Coding): Say "other applications". + (Fontsets): Not specific to X. Add xref to X Resources. + (Unibyte Mode): Rename from Single-Byte Character Support. + "Graphical display", not window system. + (International): Update menu. + + * maintaining.texi (Format of ChangeLog): + New node, split out from ChangeLog. + (ChangeLog): Clarifications in the remaining text. + (Create Tags Table, Etags Regexps, Select Tags Table): Cleanups. + (Find Tag): Add @w. + (Tags Search): Explain tag table order here. Simplify grep ref. + (List Tags): tags-tag-face is a variable, not a face. + (Emerge): Cleanups. + + * kmacro.texi (Keyboard Macro Counter): Rewrite for clarity. + (Keyboard Macros): Avoid "the user". + + * killing.texi: "Graphical display", not window system. + + * help.texi (Help Echo): "Graphical display", not window system. + + * glossary.texi: Say "you", not "the user". Say "graphical display". + + * frames.texi: Minor cleanups. "Graphical display", not window system. + + * files.texi (Visiting): Make drag-and-drop not X-specific. + + * custom.texi: Minor cleanups. "Graphical display", not window system. + + * cmdargs.texi: Minor cleanups. + + * building.texi (Compilation): Move and split kill-compilation para. + Add para about multiple compilers. + (Compilation Mode): Commands also available in grep mode and others. + Mention C-u C-x ` more tutorially. Clarify C-x `. + (Compilation Shell): Clarify. Put Bash example first. + (Grep Searching): Minor cleanups; add @w. + (Debuggers): Minor cleanups. + (Starting GUD): Make GDB xgraphical mode issue clearer. + (Debugger Operation): Lots of clarifications including + GDB tooltip side-effect issue. + (Commands of GUD): Clarify. + (GUD Customization): Add bashdb-mode-hook. + (GDB Graphical Interface): Rewrite for clarity. + (GDB User Interface Layout): Rewrite for clarity. + (Stack Buffer, Watch Expressions): Likewise. + (Other GDB User Interface Buffers): Cleanups. + (Lisp Libraries, External Lisp): Cleanup. + + * basic.texi (Position Info): "Graphical displays", rather than + window systems. + + * anti.texi: Minor cleanup. + +2006-02-03 Eli Zaretskii + + * custom.texi (Init File, Find Init): Add cross-references to + where $HOME is described. + +2006-02-01 Luc Teirlinck + + * frames.texi (Frame Parameters): Remove @item for S-Mouse-1; it + is not inside the @table. + + * emacs.texi (Top): Correct node name. + + * files.texi (File Names): Fix @xref. + (Reverting): Fix typo. + + * mule.texi (International): Correct node name. + + * kmacro.texi (Save Keyboard Macro): Add missing @kbd to @table. + +2006-02-01 Richard M. Stallman + + * emacs.texi (Top): Update subnode menu. + + * mule.texi: Minor clarifications. + Reduce the specific references to X Windows. + Refer to "graphical" terminals, rather than window systems. + (Text Coding): Rename from Specify Coding. + (Communication Coding, File Name Coding, Terminal Coding): + New nodes split out from Text Coding. + + * kmacro.texi: Minor clarifications. + (Keyboard Macro Ring): Comment out some excessive commands. + (Basic Keyboard Macro): Split up the table, putting part in each node. + + * major.texi: Minor clarifications. + + * misc.texi (Single Shell, Interactive Shell): Fix xrefs. + + * windows.texi: Minor clarifications. + (Change Window): Don't describe mode-line mouse cmds here. + Add xref to Mode Line Mouse. + + * msdog.texi (Text and Binary, MS-DOS and MULE): Fix xrefs. + + * macos.texi (Mac International): Fix xref. + + * indent.texi: Minor clarifications. + + * frames.texi: Minor clarifications. + Reduce the specific references to X Windows. + Refer to "graphical" terminals, rather than window systems. + (Frame Parameters): Don't mention commands like + set-foreground-color. Just say to customize a face. + (Drag and Drop): Lisp-level stuff moved to Emacs Lisp manual. + + * files.texi: Minor clarifications. + (Numbered Backups): New node, split out from Backup Names. + + * display.texi (Font Lock): C mode no longer depends on (-in-col-0. + + * cmdargs.texi (General Variables): Fix xref. + + * buffers.texi: Minor clarifications. + +2006-01-31 Richard M. Stallman + + * display.texi (Scrolling, Horizontal Scrolling, Follow Mode): + Nodes moved to top. + + * display.texi: Minor clarifications. + (Display): Rearrange menu. + (Standard Faces): Mention query-replace face. + (Faces): Simplify. + (Font Lock): Simplify face customization info. + (Highlight Changes): Node merged into Highlight Interactively. + (Highlight Interactively): Much rewriting and cleanup. + (Optional Mode Line): Narrowed line number not good for goto-line. + Simplify face customization advice. + (Text Display): Mention use of escape-glyph face. + Move ctl-arrow and tab-width here. + (Display Custom): Move no-redraw-on-reenter to end of node. + + * search.texi: Minor clarifications. + (Isearch Scroll): Simplify. + (Other Repeating Search): Document multi-occur-in-matching-buffers. + + * regs.texi (Registers): Mention bookmarks here. + + * mark.texi: Minor clarifications. + (Selective Undo): Node deleted. + + * m-x.texi: Minor clarifications. + + * killing.texi: Minor clarifications. + Refer to "graphical" terminals, rather than window systems. + + * help.texi: Clarifications. + (Help): Don't describe C-h F and C-h K here. + (Key Help): Describe C-h K here. + (Name Help): Mention Emacs Lisp Intro. + Describe C-h F here. + (Misc Help): Mention C-h F and C-h K only briefly. + + * fixit.texi (Undo): New node, mostly copied from basic.texi. + Selective undo text merged in. + (Spelling): Mention Aspell along with Ispell. + + * emacs.texi (Top): Update subnode menus. + + * basic.texi (Basic Undo): Rename from Undo. Most of text + moved to new Undo node. + +2006-01-29 Chong Yidong + + * basic.texi (Continuation Lines, Inserting Text): + Mention longlines mode. + +2006-01-29 Richard M. Stallman + + * screen.texi: Minor cleaups. + (Screen): Clean up the intro paragraphs. + (Mode Line): Lots of rewriting. Handle frame-name better. + eol-mnemonic-... vars moved out. + + * emacs.texi (Top): Change menu item for MS-DOS node. + Update subnode menu. + + * msdog.texi (MS-DOS): Rewrite intro to explain how this + chapter relates to Windows. Title changed. + + * mini.texi: Minor cleanups. + + * mark.texi (Selective Undo): New node, text moved from basic.texi. + (Mark): Put it in the menu. + + * entering.texi: Minor cleanups. + + * emacs.texi (Top): Add xref to Mac chapter; explain Windows better. + (Intro): Refer to "graphical" terminals, rather than X. + + * display.texi (Display Custom): Add xref to Variables. + (Optional Mode Line): eol-mnemonic-... vars moved here. + + * commands.texi: Minor cleanups. Refer to "graphical" terminals, + rather than X. + + * basic.texi: Minor cleanups. + (Undo): selective-undo moved. + +2006-01-25 Luc Teirlinck + + * anti.texi (Antinews): Various corrections and additions. + +2006-01-23 Juri Linkov + + * custom.texi (Easy Customization, Customization Groups) + (Browsing Custom): Mention links along with buttons. + +2006-01-21 Eli Zaretskii + + * text.texi (TeX Print): Use @key for TAB. + + * kmacro.texi (Keyboard Macro Step-Edit): Use @key for TAB. + +2006-01-15 Sven Joachim (tiny change) + + * files.texi (File Aliases): Don't claim that usually separate + buffers are created for two file names that name the same data. + Mention additional situations where different names mean the same + file on disk. + +2006-01-19 Richard M. Stallman + + * killing.texi (Deletion): Upcase @key argument. + + * custom.texi (Custom Themes): Minor cleanup. + + * programs.texi (Hungry Delete): Upcase @key argument. + +2006-01-16 Juri Linkov + + * display.texi (Standard Faces): Add `mode-line-buffer-id'. + Move `mode-line-highlight' before `mode-line-buffer-id'. + +2006-01-14 Richard M. Stallman + + * basic.texi (Inserting Text): Minor cleanup. + +2006-01-11 Luc Teirlinck + + * custom.texi (Changing a Variable, Face Customization): + Update for changes in Custom menus. + +2006-01-05 YAMAMOTO Mitsuharu + + * macos.texi (Mac International): Undo last change. + +2006-01-02 Chong Yidong + + * custom.texi (Custom Themes): Describe the new + customize-create-theme interface. + +2005-12-30 Juri Linkov + + * basic.texi (Position Info): Update example. + +2005-12-27 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Add x-gtk-show-hidden-files. + +2005-12-24 Chong Yidong + + * custom.texi (Custom Themes): `load-theme' always loads. + +2005-12-23 Juri Linkov + + * display.texi (Highlight Interactively): Use double space to + separate sentences. Replace C-p with M-p, and C-n with M-n. + +2005-12-22 Richard M. Stallman + + * custom.texi (Easy Customization and subnodes): + Replace "active field" with "button". + Use "user option" only for variables. + Use "setting" for variable-or-face. + +2005-12-22 Luc Teirlinck + + * buffers.texi (Select Buffer): Change order in table to make + "Similar" refer to the correct item. + (Indirect Buffers): Minor rewording. + +2005-12-20 Juri Linkov + + * files.texi (VC Status): Put P and N near p and n. + +2005-12-19 Richard M. Stallman + + * programs.texi (Electric C): Delete the info about newline control. + (Other C Commands): Minor cleanup. + (Left Margin Paren): Minor cleanup. + +2005-12-19 Luc Teirlinck + + * custom.texi (Easy Customization): Add "Browsing Custom" to menu. + (Customization Groups): Delete text moved to "Browsing Custom". + (Browsing Custom): New node. + (Specific Customization): Clarify which commands only work for + loaded options. + +2005-12-18 Bill Wohler + + * frames.texi (Tool Bars): Shorten text of previous change. + +2005-12-18 Aaron S. Hawley + + * files.texi (VC Status): Document log-view mode. + +2005-12-18 Bill Wohler + + * frames.texi (Tool Bars): Mention that you can turn off tool bars + permanently via the customize interface. + +2005-12-16 Ralf Angeli + + * killing.texi (Killing by Lines): Document `kill-whole-line' + function. + +2005-12-16 L$,1 q(Brentey K,Aa(Broly + + * buffers.texi (Select Buffer): Change `prev-buffer' to + `previous-buffer'. Indicate that these functions use a frame + local buffer list. + +2005-12-12 Richard M. Stallman + + * custom.texi (Easy Customization): Change menu comment. + (Prefix Keymaps): Fix spelling of Control-X-prefix. + + * help.texi (Apropos): Rewrite. Talk about "apropos patterns". + (Help): Among the Apropos commands, describe only C-h a here. + +2005-12-11 Richard M. Stallman + + * programs.texi (Options for Comments): Comment-end starts with space. + + * glossary.texi (Glossary): Minor cleanup. + + * files.texi (Old Versions): Use @table. + +2005-12-10 David Koppelman + + * display.texi (Highlight Interactively): Include + global-hi-lock-mode. Add miscellaneous details and elaborations. + +2005-12-09 Richard M. Stallman + + * display.texi (Font Lock): Delete the Global FL menu item. + +2005-12-09 Luc Teirlinck + + * custom.texi (Minibuffer Maps): Mention the maps for file name + completion. + +2005-12-09 Kim F. Storm + + * killing.texi (CUA Bindings): Describe how to use C-x and C-c as + prefix keys even when mark is active. Decribe that RET moves + cursor to next corner in rectangle; clarify insert around rectangle. + +2005-12-08 Luc Teirlinck + + * custom.texi (Customization): Use xref to elisp manual for + non-TeX output. + (Minor Modes): Update. + (Customization Groups, Changing a Variable, Face Customization): + Update for new appearance of Custom buffers. + (Changing a Variable): `custom-buffer-done-function' has been + replaced by `custom-buffer-done-kill'. + (Specific Customization): In the `customize-group' buffer, a + subgroup's contents are not "hidden". They are not included at + all. They have no [Show] button. + (Mouse Buttons): Add pxref to description of mouse event lists in + Elisp manual. Add `menu-bar' and `header-line' dummy prefix keys. + (Find Init): Emacs now looks for ~/.emacs.d/init.el instead of + ~/.emacs.d/.emacs, if it can not find ~/.emacs(.el). + +2005-12-08 Richard M. Stallman + + * mini.texi (Completion Commands, Completion): + In file name input, SPC does not do completion. + +2005-12-08 Nick Roberts + + * building.texi (GDB Graphical Interface): Explain screen size + setting. + (Other GDB User Interface Buffers): Describe features specific to + GDB 6.4. + +2005-12-01 Nick Roberts + + * building.texi (GDB User Interface Layout): Describe how to + kill associated buffers. + (Breakpoints Buffer): Use D instead of d for gdb-delete-breakpoint. + (Watch Expressions): Be more precise. + (Other GDB User Interface Buffers): Describe how to change a + register value. + +2005-11-24 YAMAMOTO Mitsuharu + + * macos.texi (Mac Input): Remove description of + mac-command-key-is-meta. Add descriptions of + mac-control-modifier, mac-command-modifier, and + mac-option-modifier. + (Mac International): Fix description of conversion of clipboard data. + (Mac Font Specs): Add example of font customization by face attributes. + +2005-11-22 Nick Roberts + + * building.texi (Watch Expressions): Expand description. + (Other GDB User Interface Buffers): Describe local map for + gud-watch. + +2005-11-21 Chong Yidong + + * display.texi (Font Lock): Font lock is enabled by default now. + +2005-11-20 Juri Linkov + + * basic.texi (Position Info): Update examples of the output. + Remove the fact that examples are produced in the TeXinfo buffer, + because in the Info reader users will get a different output from + `C-x ='. + + * building.texi (Compilation Mode): Remove paragraph duplicated + from the node `Compilation'. Add `compilation-skip-threshold'. + + * display.texi (Font Lock): Suggest more user-friendly method of + finding all Font Lock faces (M-x customize-group RET font-lock-faces). + +2005-11-18 Richard M. Stallman + + * files.texi (Registering): Mention @@ in mode line. + + * mini.texi (Minibuffer File): Clarify previous change. Add @findex. + +2005-11-08 Aaron S. Hawley + + * files.texi (Renaming and VC): Some back-ends don't + handle renaming. + +2005-11-17 Juri Linkov + + * emacs.texi (Top): + * display.texi (Highlight Interactively): Put this font-lock based + mode near Font Lock node. + +2005-11-16 Chong Yidong + + * ack.texi (Acknowledgments): Acknowledge Andrew Zhilin for Emacs + icons. + +2005-11-12 Kim F. Storm + + * help.texi (Help): Fix C-h a entry. Add C-h d entry. + (Help Summary): Add C-h d and C-h e. + (Apropos): Clarify that all apropos commands may search for either + list of words or a regexp. Add C-h d for apropos-documentation. + Describe apropos-documentation-sort-by-scores user option. + +2005-11-09 Luc Teirlinck + + * killing.texi (CUA Bindings): Add @section. + +2005-11-10 Kim F. Storm + + * emacs.texi (Top): Add CUA Bindings entry to menu. + + * killing.texi (CUA Bindings): New node. Moved here from + misc.texi and extended with info on rectangle commands and + rectangle highlighting, interface to registers, and the global + mark feature. + + * misc.texi (Emulation): Move CUA bindings item to killing.texi. + + * regs.texi: Prev link points to CUA Bindings node. + +2005-11-07 Luc Teirlinck + + * help.texi (Help Echo): By default, help echos are only shown on + mouse-over, not on point-over. + +2005-11-04 J,Ai(Br,At(Bme Marant + + * misc.texi (Shell Mode): Describe how to activate password echoing. + +2005-11-04 Romain Francoise + + * mark.texi (Mark Ring): Fix typo. + +2005-11-03 Richard M. Stallman + + * mark.texi (Mark Ring): Mention set-mark-command-repeat-pop. + +2005-11-01 Bill Wohler + + * help.texi (Help Mode): Fix typo. + +2005-11-01 Nick Roberts + + * building.texi (Other GDB User Interface Buffers): Describe + the command gdb-use-inferior-io-buffer. + +2005-10-31 Romain Francoise + + * files.texi (Compressed Files): Fix typo. + + * buffers.texi (Misc Buffer): Downcase `*shell*'. + + * windows.texi (Force Same Window): Likewise. + +2005-10-30 Bill Wohler + + * help.texi (Help Mode): URLs viewed with browse-url. + +2005-10-31 Nick Roberts + + * building.texi (GDB Graphical Interface): Don't reference + gdb-mouse-set-clear-breakpoint. Explain gdb-mouse-until + must stay in same frame. + +2005-10-29 Chong Yidong + + * custom.texi (Init File): Document ~/.emacs.d/init.el. + + * anti.texi (Antinews): Likewise. + +2005-10-28 Bill Wohler + + * help.texi (Help): Help mode now creates hyperlinks for URLs. + +2005-10-28 Richard M. Stallman + + * files.texi (Visiting): Explain how to enter ? in a file name. + + * trouble.texi (Memory Full): Mention !MEM FULL! in mode line. + +2005-10-25 Nick Roberts + + * building.texi (GDB Graphical Interface): Describe + gdb-mouse-until. + +2005-10-23 Richard M. Stallman + + * custom.texi (Init File): Recommend when to use site-start.el. + +2005-10-21 Juri Linkov + + * custom.texi (Examining): Mention accessing the old variable + value via M-n in set-variable. + +2005-10-18 Romain Francoise + + * files.texi (Version Systems): Capitalize GNU. + +2005-10-18 Nick Roberts + + * building.texi (Compilation Mode): Remove redundant paragraph. + (Watch Expressions): Remove paragraph to reflect code change. + +2005-10-16 Richard M. Stallman + + * building.texi (Compilation Mode, Compilation): Clarified. + +2005-10-15 Richard M. Stallman + + * misc.texi (Saving Emacs Sessions): Mention savehist library. + +2005-10-13 Kenichi Handa + + * basic.texi (Position Info): Fix previous change. + +2005-10-12 Jan Dj,Ad(Brv + + * cmdargs.texi (Icons X): Fix typo. + +2005-10-12 Kenichi Handa + + * basic.texi (Position Info): Describe the case that Emacs shows + "part of display ...". + +2005-10-10 Jan Dj,Ad(Brv + + * cmdargs.texi (Icons X): -nb => -nbi. + +2005-10-10 Chong Yidong + + * frames.texi (Speedbar): A couple more clarifications. + +2005-10-11 Nick Roberts + + * building.texi (GDB User Interface Layout): Improve diagram. + (Watch Expressions): Explain how to make speedbar global. + (Other GDB User Interface Buffers): Make references more precise. + +2005-10-09 Richard M. Stallman + + * frames.texi (Speedbar): Clarify the text. + +2005-10-09 Chong Yidong + + * frames.texi (Speedbar): Add information on keybindings, + dismissing the speedbar, and buffer display mode. Link to + speedbar manual. + +2005-10-09 Jan Dj,Ad(Brv + + * cmdargs.texi (Icons X): Removed options -i, -itype, --icon-type, + added -nb, --no-bitmap-icon. + +2005-10-07 Nick Roberts + + * building.texi (GDB Graphical Interface): Add variables and + functions to indices. Be more precise. + +2005-10-03 Jan Dj,Ad(Brv + + * frames.texi (Drag and Drop): Remove the x- from + x-dnd-open-file-other-window and xdnd-protocol-alist. + +2005-09-30 Romain Francoise + + * mini.texi (Minibuffer): The default value now appears before the + colon in minibuffer prompts. + +2005-09-25 Richard M. Stallman + + * search.texi (Regexp Search): Doc search-whitespace-regexp. + +2005-09-20 Emanuele Giaquinta (tiny change) + + * text.texi (Paragraphs): Correction about Paragraph-Indent Text mode. + +2005-09-21 YAMAMOTO Mitsuharu + + * emacs.texi (Top): Update submenus from macos.texi. + + * macos.texi: Change `Mac OS 8 or 9' to `Mac OS Classic'. + (Mac OS): Update feature support status. + (Mac Input): List supported input scripts. Remove description + about `mac-keyboard-text-encoding'. Mention mouse button + emulation and related variables. + (Mac International): Mention Central European and Cyrillic + support. Now `keyboard-coding-system' is dynamically changed. + Add description about coding system for selection. Add + description about language environment. + (Mac Environment Variables): Mention + `~/.MacOSX/environment.plist'. Give example of command line + arguments. Add Preferences support. + (Mac Directories): Explicitly state that this node is for Mac OS + Classic only. + (Mac Font Specs): Mention specification for scalable fonts. List + supported charsets. Add preferred way of creating fontsets. Add + description about `mac-allow-anti-aliasing'. + (Mac Functions): Add descriptions about `mac-set-file-creator', + `mac-get-file-creator', `mac-set-file-type', `mac-get-file-type', + and `mac-get-preference'. + +2005-09-16 Romain Francoise + + Update all files to specify GFDL version 1.2. + + * doclicense.texi (GNU Free Documentation License): Update to + version 1.2. + +2005-09-15 Richard M. Stallman + + * buffers.texi (List Buffers): Fix xref. + + * rmail.texi (Rmail Basics): Fix xref. + + * emacs.texi (Top): Update subnode menus. + + * files.texi (Saving Commands): New node, broken out of Saving. + (Customize Save): New node, broken out of Saving. + Clarify effect of write-region-inhibit-fsync. + (Misc File Ops): Say write-region-inhibit-fsync affects write-region. + +2005-09-14 Romain Francoise + + * files.texi (Saving): Mention write-region-inhibit-fsync. + +2005-09-05 Chong Yidong + + * custom.texi (Custom Themes): New node. + +2005-09-03 Richard M. Stallman + + * search.texi (Search Case): Mention vars that control + case-fold-search for various operations. + +2005-08-22 Juri Linkov + + * display.texi (Standard Faces): Merge the text from + `(elisp)Standard Faces' into this node. + +2005-08-18 Luc Teirlinck + + * emacs.texi (Top): Delete menu item for deleted node + Keyboard Translations. + +2005-08-18 Richard M. Stallman + + * trouble.texi (Unasked-for Search): + Delete xref to Keyboard Translations. + + * glossary.texi (Glossary): Delete xref. + + * custom.texi (Minor Modes): Say that the list here is not complete. + (Keyboard Translations): Node deleted. + (Disabling): Delete xref to it. + (Customization Groups): Fix Custom buffer example. + (Hooks): Mention remove-hooks. + +2005-08-17 Luc Teirlinck + + * building.texi (GDB Graphical Interface): Improve filling of menu + item. + +2005-08-18 Nick Roberts + + * building.texi (GDB Graphical Interface): Use better node names. + +2005-08-14 Richard M. Stallman + + * text.texi (Sentences): Fix xref. + +2005-08-14 Juri Linkov + + * building.texi (Compilation, Grep Searching): Move grep command + headings from `Compilation' to `Grep Searching'. + + * dired.texi (Dired and Find): + * maintaining.texi (Tags Search): Replace grep xref to + `Compilation' node with `Grep Searching'. + + * files.texi (Comparing Files): Replace xref to `Compilation' with + `Compilation Mode'. + +2005-08-13 Alan Mackenzie + + * search.texi (Non-ASCII Isearch): Correct a typo. + (Replacement Commands): Mention query-replace key binding. + +2005-08-11 Richard M. Stallman + + * programs.texi (Options for Comments): Fix xref. + + * search.texi (Regexp Backslash, Regexp Example): New nodes split + out of Regexps. + +2005-08-09 Juri Linkov + + * building.texi (Compilation): Use `itemx' instead of `item'. + (Grep Searching): Simplify phrase. + + * display.texi (Standard Faces): Describe vertical-border on + window systems. + + * windows.texi (Split Window): Simplify phrase and mention + vertical-border face. + +2005-08-09 Richard M. Stallman + + * files.texi (Comparing Files): Clarify compare-windows. + + * calendar.texi (Scroll Calendar): Document < and > in calendar. + +2005-08-06 Eli Zaretskii + + * mule.texi (Coding Systems): Rephrase the paragraph about + codepages: no need for "M-x codepage-setup" anymore, except on + MS-DOS. + + * msdog.texi (MS-DOS and MULE): Clarify that this section is for + the MS-DOS port only. + +2005-07-30 Eli Zaretskii + + * makefile.w32-in (info): Don't run multi-install-info.bat. + ($(infodir)/dir): New target, produced by running + multi-install-info.bat. + +2005-07-22 Eli Zaretskii + + * files.texi (Quoted File Names): Add index entry. + +2005-07-19 Juri Linkov + + * files.texi (Comparing Files): Mention resync for `compare-windows'. + +2005-07-18 Juri Linkov + + * custom.texi (Easy Customization): + * files.texi (Old Versions): + * frames.texi (Wheeled Mice): + * mule.texi (Specify Coding): + * text.texi (Cell Justification): + * trouble.texi (After a Crash): + * xresources.texi (GTK styles): + Delete duplicate duplicate words. + +2005-07-17 Richard M. Stallman + + * frames.texi (Creating Frames): Fix foreground color example. + + * custom.texi (Init Examples): Clean up text about conditionals. + +2005-07-16 Richard M. Stallman + + * mini.texi (Completion Commands): Fix command name for ?. + +2005-07-16 Eli Zaretskii + + * display.texi (Standard Faces): Explain that customization of + `menu' face has no effect on w32 and with GTK. Add + cross-references. + + * cmdargs.texi (General Variables): Clarify the default location + of $HOME on w32 systems. + +2005-07-15 Jason Rumney + + * cmdargs.texi (General Variables): Default HOME on MS Windows has + changed. + +2005-07-08 Kenichi Handa + + * mule.texi (Recognize Coding): Recommend + revert-buffer-with-coding-system instead of revert-buffer. + +2005-07-07 Richard M. Stallman + + * anti.texi (Antinews): Mention mode-line-inverse-video. + + * files.texi (Saving): Minor correction about C-x C-w. + + * display.texi (Display Custom): Don't mention mode-line-inverse-video. + +2005-07-07 Luc Teirlinck + + * search.texi (Isearch Scroll): Add example of using the + `isearch-scroll' property. + (Slow Isearch): Reference anchor for `baud-rate' instead of entire + `Display Custom' node. + (Regexp Replace): Put text that requires Emacs Lisp knowledge last + and de-emphasize it. + (Other Repeating Search): `occur' currently can not correctly + handle multiline matches. Correct, clarify and update description + of `flush-lines' and `keep-lines'. + + * display.texi (Display Custom): Add anchor for `baud-rate'. + +2005-07-07 Richard M. Stallman + + * gnu.texi: Update where to get GNU status; add refs for how to help. + Add footnotes 6 and 7. + +2005-07-04 Lute Kamstra + + Update FSF's address in GPL notices. + + * doclicense.texi (GNU Free Documentation License): + * trouble.texi (Checklist): Update FSF's address. + +2005-06-24 Richard M. Stallman + + * display.texi (Text Display): Change index entries. + +2005-06-24 Eli Zaretskii + + * makefile.w32-in (MAKEINFO): Use --force. + (INFO_TARGETS, DVI_TARGETS): Make identical to the lists in + Makefile.in. + +2005-06-23 Richard M. Stallman + + * anti.texi (Antinews): Renamed show-nonbreak-escape to + nobreak-char-display. + + * emacs.texi (Top): Update detailed node listing. + + * display.texi (Text Display): Renamed show-nonbreak-escape + to nobreak-char-display and no-break-space to nobreak-space. + (Standard Faces): Split up the list of standard faces + and put it in a separate node. Add nobreak-space and + escape-glyph. + +2005-06-23 Lute Kamstra + + * mule.texi (Select Input Method): Fix typo. + +2005-06-23 Kenichi Handa + + * mule.texi (International): List all supported scripts. Adjust + text for that leim is now included in the normal Emacs + distribution. + (Language Environments): List all language environments. + Intlfonts contains fonts for most supported scripts, not all.. + (Select Input Method): Refer to C-u C-x = to see how to type to + input a specifc character. + (Recognize Coding): Fix typo, china-iso-8bit -> chinese-iso-8bit. + +2005-06-23 Juanma Barranquero + + * building.texi (Grep Searching): Texinfo usage fix. + +2005-06-22 Miles Bader + + * display.texi (Faces): Change `vertical-divider' to `vertical-border'. + +2005-06-20 Miles Bader + + * display.texi (Faces): Add `vertical-divider'. + +2005-06-17 Richard M. Stallman + + * text.texi (Adaptive Fill): Minor clarification. + +2005-06-10 Lute Kamstra + + * emacs.texi (Top): Correct version number. + * anti.texi (Antinews): Correct version number. Use EMACSVER to + refer to the current version of Emacs. + +2005-06-08 Luc Teirlinck + + * files.texi (Log Buffer): Document when there can be more than + one file to be committed. + +2005-06-08 Juri Linkov + + * display.texi (Faces): Add `shadow' face. + +2005-06-07 Masatake YAMATO + + * display.texi (Faces): Write about mode-line-highlight. + +2005-06-06 Richard M. Stallman + + * misc.texi (Printing Package): Explain how to initialize + printing package. + + * cmdargs.texi (Action Arguments): Clarify directory default for -l. + +2005-06-05 Chong Yidong + + * emacs.texi: Rename Hardcopy to Printing. + Make PostScript and PostScript Variables subnodes of it. + + * misc.texi (Printing): Rename node from Hardcopy. + Mention menu bar options. + Move PostScript and PostScript Variables to submenu. + (Printing package): New node. + + * mark.texi (Using Region): Change Hardcopy xref to Printing. + + * dired.texi (Operating on Files): Likewise. + + * calendar.texi (Displaying the Diary): Likewise. + + * msdog.texi (MS-DOS Printing, MS-DOS Processes): Likewise. + + * glossary.texi (Glossary): Likewise. + + * frames.texi (Mode Line Mouse): Mention mode-line-highlight + effect. + +2005-06-04 Richard M. Stallman + + * trouble.texi (After a Crash): Polish previous change. + +2005-05-30 Noah Friedman + + * trouble.texi (After a Crash): Mention emacs-buffer.gdb as a + recovery mechanism. + +2005-05-28 Nick Roberts + + * building.texi (Other Buffers): SPC toggles display of + floating point registers. + +2005-05-27 Nick Roberts + + * files.texi (Log Buffer): Merge in description of Log Edit + mode from pcl-cvs.texi. + +2005-05-26 Richard M. Stallman + + * building.texi (Lisp Eval): C-M-x with arg runs Edebug. + +2005-05-24 Luc Teirlinck + + * fixit.texi (Spelling): Delete confusing sentence; flyspell is + not enabled by default. + When not on a word, `ispell-word' by default checks the word + before point. + +2005-05-24 Nick Roberts + + * building.texi (Debugger Operation): Simplify last sentence. + +2005-05-23 Lute Kamstra + + * emacs.texi: Update FSF's address throughout. + (Preface): Use @cite. + (Distrib): Add cross reference to the node "Copying". Mention the + FDL. Don't refer to etc/{FTP,ORDERS}. Mention the sale of + printed manuals. + (Intro): Use @xref for the Emacs Lisp Intro. + +2005-05-18 Luc Teirlinck + + * buffers.texi (Select Buffer): Document `C-u M-g M-g'. + + * basic.texi (Moving Point): Mention default for `goto-line'. + + * programs.texi (Lisp Doc): Eldoc mode shows only the first line + of a variable's docstring. + +2005-05-18 Lute Kamstra + + * maintaining.texi (Overview of Emerge): Add cross reference. + Remove duplication. + + * emacs.texi (Top): Update to the current structure of the manual. + * misc.texi (Emacs Server): Add menu description. + * files.texi (Saving): Fix menu. + * custom.texi (Customization): Fix menu. + * mule.texi (International): Fix menu. + * kmacro.texi (Keyboard Macros): Fix menu. + +2005-05-16 Luc Teirlinck + + * display.texi: Various minor changes. + (Faces): Delete text that is repeated in the next section. + +2005-05-16 Nick Roberts + + * building.texi (Debugger Operation): Mention GUD tooltips are + disabled with GDB in text command mode. + +2005-05-16 Nick Roberts + + * building.texi: Replace toolbar with "tool bar" for consistency. + (Compilation Mode): Describe compilation-context-lines + and use of arrow in compilation buffer. + (Debugger Operation): Replace help text with variable's value. + + * frames.texi (Tooltips): Replace toolbar with "tool bar" for + consistency. + +2005-05-15 Luc Teirlinck + + * major.texi (Choosing Modes): normal-mode processes the -*- line. + Add xref. + +2005-05-14 Luc Teirlinck + + * basic.texi (Moving Point): Mention `M-g g' binding for `goto-line'. + (Position Info): Delete discussion of `goto-line'. It is already + described in `Moving point'. + + * mini.texi (Completion Commands): Correct reference. + (Completion Options): Fix typo. + + * killing.texi (Deletion): Complete description of `C-x C-o'. + +2005-05-10 Richard M. Stallman + + * building.texi (Compilation): Clarify recompile's directory choice. + + * frames.texi (Tooltips): Cleanups. + + * basic.texi (Arguments): Fix punctuation. + +2005-05-09 Luc Teirlinck + + * screen.texi (Menu Bar): The up and down (not left and right) + arrow keys move through a keyboard menu. + +2005-05-08 Luc Teirlinck + + * basic.texi: Various typo and grammar fixes. + (Moving Point): C-a now runs move-beginning-of-line. + +2005-05-08 Nick Roberts + + * building.texi (Debugger Operation): Describe gud-tooltip-echo-area. + + * frames.texi (Tooltips): Describe help tooltips and GUD tooltips + as different animals. + +2005-05-07 Luc Teirlinck + + * frames.texi (Mouse References): Clarify `mouse-1-click-follows-link'. + Correct index entry. + +2005-05-07 Nick Roberts + + * building.texi (Debugger Operation): Update to reflect changes + in GUD tooltips. + +2005-04-30 Richard M. Stallman + + * files.texi (Compressed Files): Auto Compression normally enabled. + + * building.texi (Debugger Operation): Clarify previous change. + +2005-04-28 Nick Roberts + + * building.texi (Debugger Operation): Add description for + GUD tooltips when program is not running. + +2005-04-26 Luc Teirlinck + + * misc.texi (Shell): Add `Shell Prompts' to menu. + (Shell Mode): Add xref to `Shell Prompts'. Clarify `C-c C-u' + description. Delete remarks moved to new node. + (Shell Prompts): New node. + (History References): Replace remarks moved to `Shell Prompts' + with xref to that node. + (Remote Host): Clarify how to specify the terminal type when + logging in to a different machine. + +2005-04-26 Richard M. Stallman + + * emacs.texi (Top): Update submenus from files.texi. + + * files.texi (Filesets): Clarify previous change. + + * dired.texi (Misc Dired Features): Clarify previous change. + +2005-04-25 Chong Yidong + + * ack.texi (Acknowledgments): Delete info about iso-acc.el. + + * dired.texi (Misc Dired Features): Document + dired-compare-directories. + + * files.texi (Filesets): New node. + (File Conveniences): Document Image mode. + + * text.texi (TeX Print): Document tex-compile. + +2005-04-25 Luc Teirlinck + + * frames.texi (Tooltips): Tooltip mode is enabled by default. + Delete redundant reference to tooltip Custom group. It is + referred too again in the next paragraph. + +2005-04-24 Richard M. Stallman + + * ack.texi: Delete info about lazy-lock.el and fast-lock.el. + +2005-04-19 Kim F. Storm + + * building.texi (Compilation Mode): Add M-g M-n and M-g M-p bindings. + +2005-04-18 Lars Hansen + + * misc.texi (Saving Emacs Sessions): Add that "--no-desktop" now + turns off desktop-save-mode. + +2005-04-17 Luc Teirlinck + + * frames.texi (XTerm Mouse): Xterm Mouse mode is no longer enabled + by default in terminals compatible with xterm. Mention that + xterm-mouse-mode is a minor mode and put in pxref to Minor Modes + node. + +2005-04-12 Luc Teirlinck + + * frames.texi (XTerm Mouse): Xterm Mouse mode is now enabled by default. + +2005-04-12 Jan Dj,Ad(Brv + + * xresources.texi (Table of Resources): Add cursorBlink. + +2005-04-11 Luc Teirlinck + + * rmail.texi (Rmail Summary Edit): Explain numeric arguments to + `d', `C-d' and `u'. + +2005-04-11 Richard M. Stallman + + * cmdargs.texi (Initial Options): -Q is now --quick, and does less. + (Misc X): Add -D, --basic-display. + + * maintaining.texi (Change Log): Correct the description of + the example. + + * major.texi (Choosing Modes): Document magic-mode-alist. + +2005-04-10 Luc Teirlinck + + * rmail.texi (Rmail Basics): Clarify description of `q' and `b'. + (Rmail Deletion): `C-d' in RMAIL buffer does not accept a numeric arg. + (Rmail Inbox): Give full name of `rmail-primary-inbox-list'. + (Rmail Output): Clarify which statements apply to `o', `C-o' and + `w', respectively. + (Rmail Labels): Mention `l'. + (Rmail Attributes): Correct pxref. Mention `stored' attribute. + (Rmail Summary Edit): Describe `j' and RET. + +2005-04-10 Jan Dj,Ad(Brv + + * xresources.texi (Lucid Resources): Add fontSet resource. + +2005-04-09 Luc Teirlinck + + * display.texi (Useless Whitespace): `indicate-unused-lines' is + now called `indicate-empty-lines'. + +2005-04-06 Kim F. Storm + + * cmdargs.texi (Initial Options): Add --bare-bones alias for -Q. + +2005-04-04 Luc Teirlinck + + * dired.texi (Dired Visiting): `dired-view-command-alist' has been + deleted. + (Marks vs Flags): Add some convenient key bindings. + (Hiding Subdirectories): Delete redundant and inaccurate sentence. + (Misc Dired Features): Correct and expand description of `w' command. + + * frames.texi (XTerm Mouse): Delete apparently false info. + The GNU/Linux console currently does not appear to support + `xterm-mouse-mode'. + +2005-04-03 Glenn Morris + + * calendar.texi (Diary): Mention shell utility `calendar'. + +2005-04-01 Richard M. Stallman + + * cmdargs.texi (Misc X): Explain horizontal scroll bars don't exist. + +2005-04-01 Lute Kamstra + + * maintaining.texi (Change Log): add-change-log-entry uses + add-log-mailing-address. + +2005-03-31 Luc Teirlinck + + * files.texi (Reverting): Move `auto-revert-check-vc-info' to + `VC Mode Line' and put in an xref to that node. + (VC Mode Line): Move `auto-revert-check-vc-info' here and clarify + its description. + +2005-03-31 Paul Eggert + + * calendar.texi (Calendar Systems): Say that the Persian calendar + implemented here is the arithmetical one championed by Birashk. + +2005-03-30 Glenn Morris + + * programs.texi (Fortran Motion): Fix previous change. + +2005-03-29 Richard M. Stallman + + * mule.texi (Single-Byte Character Support): Reinstall the C-x 8 info. + +2005-03-29 Chong Yidong + + * text.texi (Refill): Refer to Long Lines Mode. + (Longlines): New node. + (Auto Fill): Don't index "word wrap" here. + (Filling): Add Longlines to menu. + +2005-03-29 Richard M. Stallman + + * xresources.texi: Minor fixes. + + * misc.texi (Emacs Server): Fix Texinfo usage. + + * emacs.texi (Top): Don't use a real section heading for + "Detailed Node Listing". Fake it instead. + + * basic.texi (Position Info): Minor cleanup. + + * mule.texi (Input Methods): Minor cleanup. + +2005-03-29 Glenn Morris + + * programs.texi (ForIndent Vars): `fortran-if-indent' does other + constructs as well. + (Fortran Motion): Add fortran-end-of-block, fortran-beginning-of-block. + +2005-03-29 Kenichi Handa + + * mule.texi (Input Methods): Refer to the command C-u C-x =. + + * basic.texi (Position Info): Update the description about the + command C-u C-x =. + +2005-03-28 Richard M. Stallman + + * emacs.texi (Top): Use @section for the detailed node listing. + + * calendar.texi: Minor fixes to previous change. + + * programs.texi (Fortran): Small fixes to previous changes. + + * emacs.texi (Top): Update list of subnodes of Dired. + Likewise for building.texi. + + * files.texi (File Conveniences): Delete Auto Image File mode. + +2005-03-28 Chong Yidong + + * building.texi (Flymake): New node. + + * custom.texi (Function Keys): Document kp- event types and + keypad-setup package. + + * dired.texi (Wdired): New node. + + * files.texi (File Conveniences): Reorder entries. + Explain how to turn on Auto-image-file mode. + Document Thumbs mode. + + * mule.texi (Specify Coding): Document recode-region and + recode-file-name. + + * programs.texi (Program Modes): Add Conf mode and DNS mode. + +2005-03-27 Luc Teirlinck + + * commands.texi (Keys): M-o is now a prefix key. + +2005-03-27 Glenn Morris + + * programs.texi: Reformat and update copyright years. + (Fortran): Update section. + +2005-03-26 Luc Teirlinck + + * files.texi: Several small changes in addition to: + (Visiting): Change xref for Dialog Boxes to ref. + (Version Headers): Replace references to obsolete var + `vc-header-alist' with `vc-BACKEND-header'. + (Customizing VC): Update value of `vc-handled-backends'. + +2005-03-26 Glenn Morris + + * emacs-xtra.texi (Advanced Calendar/Diary Usage): New section; + move here from Emacs Lisp Reference Manual. + * calendar.texi (Calendar/Diary, Diary Commands) + (Special Diary Entries, Importing Diary): Change some xrefs to + point to emacs-xtra rather than elisp. + + * emacs-xtra.texi (Calendar Customizing): + Move view-diary-entries-initially, view-calendar-holidays-initially, + mark-diary-entries-in-calendar, mark-holidays-in-calendar to main + Emacs Manual. + (Appt Customizing): Merge entire section into main Emacs Manual. + * calendar.texi (Holidays): Move view-calendar-holidays-initially, + mark-holidays-in-calendar here from emacs-xtra. + (Displaying the Diary): Move view-diary-entries-initially, + mark-diary-entries-in-calendar here from emacs-xtra. + (Appointments): Move appt-display-mode-line, + appt-display-duration, appt-disp-window-function, + appt-delete-window-function here from emacs-xtra. + + * calendar.texi: Update and reformat copyright. + Change all @xrefs to the non-printing emacs-xtra to @inforefs. + (Calendar/Diary): Menu now only on Mouse-3, not C-Mouse-3. + (Diary): Refer to `diary-file' rather than ~/diary. + (Diary Commands): Rename node to "Displaying the Diary". + * emacs.texi (Top): Rename "Diary Commands" section. + * misc.texi (Hardcopy): Rename "Diary Commands" xref. + +2005-03-26 Eli Zaretskii + + * misc.texi (Emacs Server): Fix the command for setting + server-name. Add an xref to Invoking emacsclient. + + * help.texi (Help Summary): Clarify when "C-h ." will do something + nontrivial. + (Apropos): Add cindex entry for apropos-sort-by-scores. + + * display.texi (Text Display): Add index entries for how no-break + characters are displayed. + +2005-03-26 Eli Zaretskii + + * files.texi (Visiting): Fix cross-references introduced with the + last change. + + * xresources.texi (GTK resources): Fix last change. + +2005-03-25 Chong Yidong + + * xresources.texi (X Resources): GTK options documented too. + (Resources): Clarify meaning of program name. + (Table of Resources): Add visualClass. + (GTK resources): Rewrite. + (GTK widget names, GTK Names in Emacs, GTK styles): Cleanups. + + * display.texi (Text Display): Mention non-breaking spaces. + + * files.texi (Reverting): Document auto-revert-check-vc-info. + + * frames.texi (Mouse Commands): Document + x-mouse-click-focus-ignore-position and mouse-drag-copy-region. + + * help.texi (Help Summary): Add `C-h .'. + (Apropos): Apropos accepts a list of search terms. + Document apropos-sort-by-scores. + (Help Echo): Document display-local-help. + + * misc.texi (Emacs Server): Document server-name. + (Invoking emacsclient): Document -s option for server names. + + * text.texi (Outline Visibility): Introduce "current heading + line" (commands can be called with point on a body line). + Re-order table to follow the sequence of discussion. + hide-body won't hide lines before first header line. + (TeX Mode): Add DocTeX mode. + +2005-03-24 Richard M. Stallman + + * mule.texi (Single-Byte Character Support): Delete mention + of iso-acc.el and iso-transl.el. + +2005-03-23 Lute Kamstra + + * search.texi (Non-ASCII Isearch): Rename from Non-Ascii Isearch. + +2005-03-23 Richard M. Stallman + + * search.texi: Delete explicit node pointers. + (Incremental Search): New menu. + (Basic Isearch, Repeat Isearch, Error in Isearch) + (Non-Ascii Isearch, Isearch Yank, Highlight Isearch, Isearch Scroll) + (Slow Isearch): New subnodes. + (Configuring Scrolling): Node deleted. + (Search Case): Doc default-case-fold-search. + (Regexp Replace): Move replace-regexp doc here. + + * rmail.texi (Movemail): Put commas inside closequotes. + + * picture.texi (Insert in Picture): Document C-c arrow combos. + (Basic Picture): Clarify erasure. + + * display.texi (Font Lock): Put commas inside closequotes. + + * cmdargs.texi (General Variables): Put commas inside closequotes. + +2005-03-23 Nick Roberts + + * building.texi (Stack Buffer): Mention reverse contrast for + *selected* frame (might not be current frame). + +2005-03-21 Richard M. Stallman + + * building.texi (Starting GUD): Add bashdb. + +2005-03-20 Chong Yidong + + * basic.texi (Moving Point): Add M-g M-g binding. + (Undo): Document undo-only. + (Position Info): Document M-g M-g and C-u M-g M-g. + + * building.texi (Building): Put Grep Searching after Compilation + Shell. + (Compilation Mode): Document M-n, M-p, M-}, M-{, and C-c C-f bindings. + Document next-error-highlight. + (Grep Searching): Document grep-highlight-matches. + (Lisp Eval): Typing C-x C-e twice prints integers specially. + + * calendar.texi (Importing Diary): Rename node from iCalendar. + Document diary-from-outlook. + + * dired.texi (Misc Dired Features): Rename node from Misc Dired + Commands. + Mention effect of X drag and drop on Dired buffers. + + * files.texi (Visiting): Document large-file-warning-threshold. + Move paragraph on file-selection dialog. + Mention visiting files using X drag and drop. + (Reverting): Mention using Auto-Revert mode to tail files. + Document auto-revert-tail-mode. + (Version Systems): Minor correction. + (Comparing Files): Diff-mode is no longer based on Compilation + mode. + Document compare-ignore-whitespace. + (Misc File Ops): Explain passing a directory to rename-file. + Likewise for copy-file and make-symbolic-link. + + * frames.texi (Wheeled Mice): Mouse wheel support on by default. + Document mouse-wheel-progressive speed. + + * help.texi (Misc Help): Document numeric argument for C-h i. + Correctly explain the effect of just C-u as argument. + + * killing.texi (Deletion): Document numeric argument for + just-one-space. + + * mini.texi (Completion): Completion acts on text before point. + + * misc.texi (Saving Emacs Sessions): Document desktop-restore-eager. + (Emulation): CUA mode replaces pc-bindings-mode, + pc-selection-mode, and s-region. + + * mule.texi (Input Methods): Leim is now built-in. + (Select Input Method): Document quail-show-key. + (Specify Coding): Document revert-buffer-with-coding-system. + + * programs.texi (Fortran Motion): Document f90-next-statement, + f90-previous-statement, f90-next-block, f90-previous-block, + f90-end-of-block, and f90-beginning-of-block. + + * text.texi (Format Faces): Replace old M-g key prefix with M-o. + + * emacs.texi (Acknowledgments): Updated. + + * anti.texi: Total rewrite. + +2005-03-19 Chong Yidong + + * ack.texi (Acknowledgments): Update. + +2005-03-19 Eli Zaretskii + + * anti.texi (Antinews): Refer to Emacs 21.4, not 21.3. Update + copyright years. + +2005-03-14 Nick Roberts + + * building.texi (Commands of GUD): Move paragraph on setting + breakpoints with mouse to the GDB Graphical Interface node. + +2005-03-07 Richard M. Stallman + + * misc.texi (Single Shell, Shell Options): Fix previous change. + + * building.texi (Debugger Operation): Update GUD tooltip enable info. + +2005-03-06 Richard M. Stallman + + * building.texi (Starting GUD): Don't explain text vs graphical + GDB here. Just mention it and xref. + Delete "just one debugger process". + (Debugger Operation): Move GUD tooltip info here. + (GUD Tooltips): Node deleted. + (GDB Graphical Interface): Explain the two GDB modes here. + + * sending.texi (Sending Mail): Minor cleanup. + (Mail Aliases): Explain quoting conventions. + Update key rebinding example. + (Header Editing): C-M-i is like M-TAB. + (Mail Mode Misc): mail-attach-file does not do MIME. + + * rmail.texi (Rmail Inbox): Move text from Remote Mailboxes + that really belongs here. + (Remote Mailboxes): Text moved to Rmail Inbox. + (Rmail Display): Mention Mouse-1. + (Movemail): Clarify two movemail versions. + Clarify rmail-movemail-program. + + * misc.texi (Single Shell): Replace uudecode example with gpg example. + Document async shell commands. + (Shell History): Clarify. + (Shell Ring): Mention C-UP an C-DOWN. + (Shell Options): Add comint-prompt-read-only. + (Invoking emacsclient): Set EDITOR to run Emacs. + (Sorting): No need to explain what region is. + (Saving Emacs Sessions): Fix typo. + (Recursive Edit): Fix punctuation. + (Emulation): Don't mention "PC bindings" which are standard. + (Hyperlinking): Explain Mouse-1 convention here. + (Find Func): Node deleted. + + * help.texi (Name Help): Xref to Hyperlinking. + + * glossary.texi (Glossary): + Rename "Balance Parentheses" to "Balancing...". + Add "Byte Compilation". Correct "Copyleft". + New xref in "Customization". + Clarify "Current Line", "Echoing", "Fringe", "Frame", "Speedbar". + Add "Graphical Terminal" "Keybinding", "Margin", "Window System". + Rename "Registers" to "Register". + Replace "Selecting" with "Selected Frame", + "Selected Window", and "Selecting a Buffer". + + * files.texi (Types of Log File): Explain how projects' + methods can vary. + + * display.texi (Faces): Delete "Emacs 21". + + * custom.texi (Changing a Variable): C-M-i like M-TAB. + * fixit.texi (Spelling): C-M-i like M-TAB. + * mini.texi (Completion Options): C-M-i like M-TAB. + * programs.texi (Symbol Completion): C-M-i like M-TAB. + * text.texi (Text Mode): C-M-i like M-TAB. + + * commands.texi (Keys): Mention F1 and F2 in list of prefixes. + + * calendar.texi (Specified Dates): Mention `g w'. + (Appointments): appt-activate toggles with no arg. + +2005-03-05 Juri Linkov + + * cmdargs.texi (Emacs Invocation): Add cindex + "invocation (command line arguments)" + (Misc X): Add -nbc, --no-blinking-cursor. + +2005-03-04 Ulf Jasper + + * calendar.texi (iCalendar): No need to require it now. + +2005-03-03 Nick Roberts + + * trouble.texi (Contributing): Mention Savannah. Direct users to + emacs-devel. + +2005-03-01 Glenn Morris + + * calendar.texi (Adding to Diary): Mention redrawing of calendar + window. + +2005-02-27 Richard M. Stallman + + * building.texi (Compilation): Update mode line status info. + +2005-02-27 Matt Hodges + + * calendar.texi (General Calendar): Document binding of + scroll-other-window-down. + (Mayan Calendar): Fix earliest date. + (Time Intervals): Document timeclock-change. + Fix timeclock-ask-before-exiting documentation. + +2005-02-26 Kim F. Storm + + * frames.texi (Mouse References): + Add mouse-1-click-in-non-selected-windows. + +2005-02-25 Richard M. Stallman + + * screen.texi (Screen): Explain better about cursors and mode lines; + don't presuppose text terminals. + (Point): Don't assume just one cursor. + Clarify explanation of cursors. + (Echo Area, Menu Bar): Cleanups. + + * mini.texi (Minibuffer): Prompts are highlighted. + (Minibuffer Edit): Newline = C-j only on text terminals. + Clarify resize-mini-windows values. + Mention M-PAGEUP and M-PAGEDOWN. + (Completion Commands): Mouse-1 like Mouse-2. + (Minibuffer History): Explain history commands better. + (Repetition): Add xref to Incremental Search. + + * mark.texi (Setting Mark): Clarify info about displaying mark. + Clarify explanation of C-@ and C-SPC. + (Transient Mark): Mention Delete Selection mode. + (Marking Objects): Clean up text about extending the region. + + * m-x.texi (M-x): One C-g doesn't always go to top level. + No delay before suggest-key-bindings output. + + * fixit.texi (Fixit): Mention C-/ for undo. + (Spelling): Mention ESC TAB like M-TAB. + Replacement words with r and R are rechecked. + Say where C-g leaves point. Mention ? as input. + +2005-02-23 Lute Kamstra + + * cmdargs.texi (Initial Options): Add cross reference. + +2005-02-16 Luc Teirlinck + + * emacs.texi (Top): Update menu for splitting of node in + msdog.texi. + * frames.texi (Frames): Update xref for splitting of node in + msdog.texi. + * trouble.texi (Quitting): Ditto. + +2005-02-16 Richard M. Stallman + + * windows.texi (Split Window): Simplify line truncation info + and xref to Display Custom. + + * trouble.texi (Quitting): Emergency escape only for text terminal. + (Screen Garbled): C-l for ungarbling is only for text terminal. + + * text.texi (Text Mode): ESC TAB alternative for M-TAB. + + * sending.texi (Header Editing): ESC TAB alternative for M-TAB. + + * programs.texi (Program Modes): Mention Python mode. + (Moving by Defuns): Repeating C-M-h extends region. + (Basic Indent): Clarify. + (Custom C Indent): Clarify. + (Expressions): Repeating C-M-@ extends region. + (Info Lookup): Clarify for C-h S. + (Symbol Completion): ESC TAB alternative for M-TAB. + (Electric C): Clarify. + + * emacs.texi (Top): Update display.texi and frames.texi submenu data. + + * msdog.texi (MS-DOS Keyboard, MS-DOS Mouse): Split from + MS-DOS Input node. + (MS-DOS Keyboard): Start with explaining DEL and BREAK. + (MS-DOS and MULE): Clarify. + (MS-DOS Processes, Windows Processes): Fix typos. + + * major.texi (Choosing Modes): Clarify. + + * kmacro.texi (Basic Keyboard Macro): Doc F3, F4. + (Keyboard Macro Step-Edit): Clarify. + + * indent.texi (Indentation): Clarifications. + + * help.texi (Help): Correct error about C-h in query-replace. + Clarify apropos vs C-h a. Fix how to search in FAQ. + (Key Help): Describe C-h w here. + (Name Help): Minor cleanup. C-h w moved to Key Help. + Clarify the "object" joke. + (Apropos): Clarify. Mouse-1 like Mouse-2. + (Help Mode): Mouse-1 like Mouse-2. + + * fixit.texi (Spelling): Mention ESC TAB as alt. for M-TAB. + + * display.texi (Display): Reorder menu. + (Faces): Cleanup. + (Font Lock): Cleanup. Mention Options menu. + Delete obsolete text. + (Scrolling): For C-l, don't presume text terminal. + (Horizontal Scrolling): Simplify intro. + (Follow Mode): Clarify. + (Cursor Display): Moved before Display Custom. + (Display Custom): Explain no-redraw-on-reenter is for text terminals. + Doc default-tab-width. Doc line truncation more thoroughly. + + * dired.texi (Dired Enter): C-x C-f can run Dired. + (Dired Visiting): Comment out `a' command. + Mouse-1 is like Mouse-2. + (Shell Commands in Dired): ? can be used more than once. + + * basic.texi (Continuation Lines): Simplify description of truncation, + and refer to Display Custom for the rest of it. + +2005-02-06 Lute Kamstra + + * basic.texi (Undo): Fix typo. + + * cmdargs.texi (Emacs Invocation): Fix typo. + + * custom.texi (Init Examples): Fix typo. + + * abbrevs.texi (Expanding Abbrevs): Fix typo. + +2005-02-06 Richard M. Stallman + + * regs.texi (Registers): Registers can hold numbers, too. + + * killing.texi (Other Kill Commands): Cleanup. + Delete redundant explanation of kill in read-only buffer. + (Yanking): Mention term "copying". + (Accumulating Text): Fix typo. + + * entering.texi (Entering Emacs): Update rationale at start. + (Exiting): Treat iconifying on a par with suspension. + + * custom.texi (Minor Modes): Fix typo. + (Easy Customization): Fix menu style. + (Variables): Add xref. + (Examining): Setting for future sessions works through .emacs. + (Keymaps): "Text terminals", not "Many". + (Init Rebinding): Explain \C-. Show example of \M-. + Fix minor wording errors. + (Function Keys): Explain vector syntax just once. + (Named ASCII Chars): Clarify history of TAB/C-i connection. + (Init File): Mention .emacs.d directory. + (Init Examples): Add xref. + (Find Init): Mention .emacs.d directory. + + * cmdargs.texi (Emacs Invocation): +LINENUM is also an option. + (Action Arguments): Explain which kinds of -l args are found how. + (Initial Options): --batch does not inhibit site-start. + Add xrefs. + (Command Example): Use --batch, not -batch. + + * basic.texi (Inserting Text): Cleanup wording. + (Moving Point): Doc PRIOR, PAGEUP, NEXT, PAGEDOWN more systematically. + C-n is not error at end of buffer. + (Undo): Doc C-/ like C-_. Add xrefs. + (Arguments): META key may be labeled ALT. + Peculiar arg meanings are explained in doc strings. + + * abbrevs.texi (Expanding Abbrevs): Clarify. + +2005-02-05 Eli Zaretskii + + * frames.texi (Frame Parameters): Add an xref to the description + of list-colors-display. Add a pointer to the X docs about colors. + + * cmdargs.texi (Colors): Mention 16-, 88- and 256-color modes. + Impove docs of list-colors-display. + +2005-02-03 Lute Kamstra + + * frames.texi (Frames, Drag and Drop): Fix typos. + +2005-02-03 Richard M. Stallman + + * windows.texi (Basic Window): Mention color-change in mode line. + (Change Window): Explain dragging vertical boundaries. + + * text.texi (Sentences): Clarify. + (Paragraphs): Explain M-a and blank lines. + (Outline Mode): Clarify text and menu. + (Hard and Soft Newlines): Mention use-hard-newlines. + + * frames.texi (Frames): Delete unnecessary mention of Windows. + (Mouse Commands): Likewise. Mention xterm mouse support. + (Clipboard): Clarify. + (Mouse References): Mention use of Mouse-1 for following links. + (Menu Mouse Clicks): Clarify. + (Mode Line Mouse): Clarify. + (Drag and Drop): Rewrite. + + * fixit.texi (Spelling): Fix typo. + + * files.texi (File Names): Clarify. + (Visiting): Update conditions for use of file dialog. Clarify. + (Saving): Doc d as answer in save-some-buffers. + (Remote Files): Clean up the text. + + * dired.texi (Misc Dired Commands): Delete dired-marked-files. + + * buffers.texi (Select Buffer): Doc next-buffer and prev-buffer. + (List Buffers): Clarify. + (Several Buffers): Doc T command. + (Buffer Convenience): Clarify menu. + + * basic.texi (Undo): Clarify last change. + +2005-02-02 Matt Hodges + + * fixit.texi (Spelling): Fix typo. + +2005-02-01 Luc Teirlinck + + * basic.texi (Undo): Update description of `undo-outer-limit'. + +2005-02-01 Nick Roberts + + * building.texi: Update documentation relating to GDB Graphical + Interface. + +2005-01-30 Luc Teirlinck + + * custom.texi (Easy Customization): Adapt menu to node name change. + +2005-01-30 Richard M. Stallman + + * custom.texi (Easy Customization): Defn of "User Option" now + includes faces. Don't say just "option" when talking about variables. + Do say just "options" to mean "anything customizable". + (Specific Customization): Describe `customize-variable', + not `customize-option'. + + * glossary.texi (Glossary) : Add xref. + : Change definition--include faces. Change xref. + + * picture.texi (Picture): Mention artist.el. + + * sending.texi, screen.texi, programs.texi, misc.texi: + * mini.texi, major.texi, maintaining.texi, macos.texi: + * help.texi, frames.texi, files.texi: + Don't say just "option" when talking about variables. + + * display.texi, mule.texi: Don't say just "option" when talking + about variables. Other minor cleanups. + +2005-01-26 Lute Kamstra + + * cmdargs.texi (Initial Options): Add a cross reference to `Init + File'. Mention the `-Q' option at the `--no-site-file' option. + +2005-01-22 David Kastrup + + * building.texi (Grep Searching): Mention alias `find-grep' for + `grep-find'. + +2005-01-20 Richard M. Stallman + + * calendar.texi (Time Intervals): Delete special stuff for MS-DOS. + +2005-01-15 Sergey Poznyakoff + + * rmail.texi (Movemail): Explain differences + between standard and mailutils versions of movemail. + Describe command line and configuration options introduced + with the latter. + Explain the notion of mailbox URL, provide examples and + cross-references to mailutils documentation. + Describe various methods of specifying mailbox names, + user names and user passwords for rmail. + (Remote Mailboxes): New section. Describe + how movemail handles remote mailboxes. Describe configuration + options used to control its behavior. + (Other Mailbox Formats): Explain handling of various mailbox + formats. + +2005-01-13 Richard M. Stallman + + * commands.texi (Commands): Clarification. + +2005-01-11 Richard M. Stallman + + * programs.texi (Multi-line Indent): Fix previous change. + (Fortran Autofill): Simplify description of fortran-auto-fill-mode. + +2005-01-08 Richard M. Stallman + + * display.texi (Faces): isearch-lazy-highlight-face renamed to + lazy-highlight. + + * search.texi (Query Replace): Mention faces query-replace + and lazy-highlight. + (Incremental Search): Update isearch highlighting info. + +2005-01-04 Richard M. Stallman + + * custom.texi (Saving Customizations): Minor improvement. + +2005-01-03 Luc Teirlinck + + * custom.texi (Saving Customizations): Emacs no longer loads + `custom-file' after .emacs. No longer mention customizing through + Custom. + +2005-01-01 Andreas Schwab + + * killing.texi (Graphical Kill): Move up under node Killing, + change @section to @subsection. + +2005-01-01 Richard M. Stallman + + * custom.texi (Face Customization): Mention hex color specs. + + * emacs.texi (Top): Update Killing submenu. + + * killing.texi (Killing): Reorganize section. + No more TeX-only text; put the node command at start of chapter. + But the first section heading is used only in TeX. + Rewrite the text to read better in this mode. + (Graphical Kill): New subnode gets some of the text that + used to be in the first section. + +2004-12-31 Richard M. Stallman + + * dired.texi (Shell Commands in Dired): Delete the ? example. + + * display.texi (Scrolling): Correct scroll-preserve-screen-position. + + * files.texi (Saving): Describe new require-final-newline features + and mode-require-final-newline. + +2004-12-29 Richard M. Stallman + + * custom.texi (File Variables): Clarify previous change. + +2004-12-27 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Mention Gtk+ 2.6 also, as that version is + out now. + +2004-12-27 Richard M. Stallman + + * Makefile.in (MAKEINFO): Specify --force. + + * basic.texi (Moving Point): C-e now runs move-end-of-line. + (Undo): Doc undo-outer-limit. + +2004-12-15 Juri Linkov + + * mark.texi (Transient Mark, Mark Ring): M-< and other + movement commands don't set mark in Transient Mark mode + if mark is active. + +2004-12-12 Juri Linkov + + * misc.texi (FFAP): Add C-x C-r, C-x C-v, C-x C-d, + C-x 4 r, C-x 4 d, C-x 5 r, C-x 5 d. + + * dired.texi (Dired Navigation): Add @r{(Dired)} to M-g. + (Misc Dired Commands): Add @r{(Dired)} to w. + +2004-12-12 Juri Linkov + + * mark.texi (Marking Objects): Marking commands also extend the + region when mark is active in Transient Mark mode. + +2004-12-08 Luc Teirlinck + + * custom.texi (Saving Customizations): Emacs only loads the custom + file automatically after the init file in version 22.1 or later. + Adapt text and examples to this fact. + +2004-12-07 Luc Teirlinck + + * frames.texi (Scroll Bars): The option `scroll-bar-mode' has to + be set through Custom. Otherwise, it has no effect. + +2004-12-05 Richard M. Stallman + + * cmdargs.texi, doclicense.texi, xresources.texi, emacs.texi: + * entering.texi: Rename Command Line to Emacs Invocation. + + * misc.texi (Term Mode): Correcty describe C-c. + + * custom.texi (Easy Customization): Move up to section level, + before Variables. Avoid using the term "variable"; say "option". + New initial explanation. + (Variables): In initial explanation, connect "variable" to the + already-explained "user option". + + * emacs.texi (Top): Fix ref to Command Line. + Move reference to Easy Customization. + + * xresources.texi (X Resources): Fix From link. + + * doclicense.texi (GNU Free Documentation License): Fix To link. + + * entering.texi (Entering Emacs): Fix xref, now to Command Line. + + * cmdargs.texi (Command Line): Node renamed from Command Arguments. + +2004-12-03 Richard M. Stallman + + * cmdargs.texi (Initial Options): Clarify batch mode i/o. + +2004-12-01 Luc Teirlinck + + * kmacro.texi: Several small changes in addition to the following. + (Keyboard Macro Ring): Describe behavior of `C-x C-k C-k' when + defining a keyboard macro. + Mention `kmacro-ring-max'. + (Keyboard Macro Counter): Clarify description of + `kmacro-insert-counter', `kmacro-set-counter', + `kmacro-add-counter' and `kmacro-set-format'. + +2004-11-29 Reiner Steib + + * custom.texi (File Variables): Add `unibyte' and make it more + clear that `unibyte' and `coding' are special. Suggested by Simon + Krahnke . + + * mule.texi (Enabling Multibyte): Refer to File Variables. + Suggested by Simon Krahnke . + +2004-11-26 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Rename use-old-gtk-file-dialog to + x-use-old-gtk-file-dialog. + +2004-11-20 Richard M. Stallman + + * text.texi (Fill Prefix): M-q doesn't apply fill prefix to first line. + +2004-11-09 Lars Brinkhoff + + * building.texi (Lisp Eval): Delete hyphen in section name. + +2004-11-19 Thien-Thi Nguyen + + * files.texi (Old Versions): + No longer document annotation as "CVS only". + +2004-11-10 Andre Spiegel + + * files.texi (Version Control): Rewrite the introduction about + version systems, mentioning the new ones that we support. Thanks + to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for + suggestions. + +2004-11-03 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Replace non-nil with non-@code{nil}. + +2004-11-02 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Document use-old-gtk-file-dialog. + +2004-10-23 Eli Zaretskii + + * text.texi (Text Based Tables, Table Definition) + (Table Creation, Table Recognition, Cell Commands) + (Cell Justification, Row Commands, Column Commands) + (Fixed Width Mode, Table Conversion, Measuring Tables) + (Table Misc): New nodes, documenting the Table Mode. + +2004-10-19 Jason Rumney + + * makefile.w32-in (info): Change order of arguments to makeinfo. + +2004-10-19 Ulf Jasper + + * calendar.texi (iCalendar): Update for package changes. + +2004-10-09 Luc Teirlinck + + * files.texi (Misc File Ops): View mode is a minor mode. + +2004-10-08 Glenn Morris + + * calendar.texi (iCalendar): Style changes. + +2004-10-07 Luc Teirlinck + + * search.texi (Regexps): The regexp described in the example is no + longer stored in the variable `sentence-end'. + +2004-10-06 Nick Roberts + + * building.texi (Starting GUD): Note that multiple debugging + sessions requires `gdb --fullname'. + +2004-10-05 Ulf Jasper + + * calendar.texi (iCalendar): New section for a new package. + +2004-10-05 Luc Teirlinck + + * text.texi: Various small changes in addition to the following. + (Text): Replace xref for autotype with inforef. + (Sentences): Explain nil value for `sentence-end'. + (Paragraphs): Update default values for `paragraph-start' and + `paragraph-separate'. + (Text Mode): Correct description of Text mode's effect on the + syntax table. + (Outline Visibility): `hide-other' does not hide top level headings. + `selective-display-ellipses' no longer has an effect on Outline mode. + (TeX Misc): Add missing @cindex. + Replace xref for RefTeX with inforef. + (Requesting Formatted Text): The variable + `enriched-fill-after-visiting' no longer exists. + (Editing Format Info): Update names of menu items and commands. + (Format Faces): Mention special effect of specifying the default face. + Describe inheritance of text properties. + Correct description of `fixed' face. + (Format Indentation): Correct description of effect of setting + margins. Mention `set-left-margin' and `set-right-margin'. + (Format Justification): Update names of menu items. + `set-justification-full' is now bound to `M-j b'. + Mention that `default-justification' is a per buffer variable. + (Format Properties): Update name of menu item. + (Forcing Enriched Mode): `format-decode-buffer' automatically + turns on Enriched mode if the buffer is in text/enriched format. + +2004-10-05 Emilio C. Lopes + + * calendar.texi (From Other Calendar): Add calendar-goto-iso-week. + +2004-09-28 Kim F. Storm + + * display.texi (Display Custom) : + Align with new functionality. + +2004-09-22 Luc Teirlinck + + * display.texi (Display Custom): Remove stray `@end defvar'. + +2004-09-23 Kim F. Storm + + * display.texi (Display Custom): Add `overflow-newline-into-fringe', + `indicate-buffer-boundaries' and `default-indicate-buffer-boundaries'. + +2004-09-20 Richard M. Stallman + + * custom.texi (Hooks): Explain using setq to clear out a hook. + (File Variables): Explain multiline string constants. + (Non-ASCII Rebinding): Explain when you need to update + non-ASCII char codes in .emacs. + + * building.texi (Compilation): Explain how to make a silent + subprocess that won't be terminated. Explain compilation-environment. + +2004-09-13 Kim F. Storm + + * mini.texi (Repetition): Rename isearch-resume-enabled to + isearch-resume-in-command-history and change default to disabled. + +2004-09-09 Kim F. Storm + + * kmacro.texi (Save Keyboard Macro): Replace `name-last-kbd-macro' + with new `kmacro-name-last-macro'. + +2004-09-08 Juri Linkov + + * mini.texi (Minibuffer History): Add `history-delete-duplicates'. + +2004-09-03 Juri Linkov + + * search.texi (Incremental Search): Update wording for M-%. + +2004-09-02 Luc Teirlinck + + * killing.texi (Killing): Correct description of kill commands in + read-only buffer. + +2004-09-02 Teodor Zlatanov + + * building.texi (Compilation Mode): Add a paragraph about rules + for finding the compilation buffer for `next-error'. + + * search.texi (Other Repeating Search): Mention that Occur mode + supports the next-error functionality. + +2004-09-02 Juri Linkov + + * search.texi (Regexp Replace): Add missing backslash to \footnote. + +2004-08-31 Luc Teirlinck + + * kmacro.texi (Basic Keyboard Macro): + `apply-macro-to-region-lines' now operates on all lines that begin + in the region, rather than on all complete lines in the region. + +2004-08-31 Jan Dj,Ad(Brv + + * frames.texi (Drag and drop): Add documentation about + x-dnd-test-function and x-dnd-known-types. + +2004-08-30 Luc Teirlinck + + * indent.texi: Various minor changes in addition to: + (Indentation Commands): Correct description of `indent-relative'. + (Tab Stops): is no longer bound to `tab-to-tab-stop' in Text + mode. The *Tab Stops* buffer uses Overwrite Mode. + (Just Spaces): `tabify' converts sequences of at least two spaces + to tabs. + +2004-08-27 Luc Teirlinck + + * frames.texi (Secondary Selection): Setting the secondary + selection with M-Drag-Mouse-1 does not alter the kill ring, + setting it with M-Mouse-1 and M-Mouse-3 does. + (Mode Line Mouse): C-Mouse-2 on scroll bar now also works for + toolkit scroll bars. + (Scroll Bars): Ditto. + + * windows.texi (Basic Window): When using a window system, the value + of point in a non-selected window is indicated by a hollow box. + (Split Window): Side by side windows are separated by a scroll bar, + if scroll bars are used. + C-Mouse-2 on scroll bar now also works for toolkit scroll bars. + (Change Window): Correct Mouse-2 vs Mouse-3 mess-up. + (Window Convenience): Update bindings for `winner-undo' and + `winner-redo'. + + * ack.texi (Acknowledgments): Use `@unnumbered'. + * misc.texi : Adapt sectioning in Info to the node structure. + (Invoking emacsclient): Make "Invoking emacsclient" a subsection + of "Using Emacs as a Server". + * building.texi (Building): Interchange nodes (for correct numbering). + * programs.texi (Programs): Interchange nodes (for correct numbering). + * killing.texi, entering.texi, commands.texi: Adapt sectioning in + Info to the node structure. + * emacs.texi: Make "GNU GENERAL PUBLIC LICENSE" an appendix. + Rearrange order of nodes and sections such that both "GNU GENERAL + PUBLIC LICENSE" and "GNU Free Documentation License" appear at the + end, as appropriate for appendices. + (Acknowledgments): Put inside @iftex instead of @ifnotinfo. + Use `@unnumberedsec'. + * trouble.texi: Adapt sectioning in Info to the node structure. + Adapt node pointers to change in emacs.texi. + * cmdargs.texi, doclicense.texi: Adapt node pointers. + +2004-08-25 Kenichi Handa + + * custom.texi (Non-ASCII Rebinding): Fix and simplify the + description for unibyte mode. + +2004-08-23 Luc Teirlinck + + * display.texi (Font Lock): Correct invalid (for hardcopy) @xref. + + * search.texi (Regexps): Correct cryptic (in hardcopy) @ref. + (Configuring Scrolling): Correct invalid (for hardcopy) @xref. + (Regexp Replace): Standardize reference to hardcopy Elisp Manual + in @pxref. + +2004-08-22 Luc Teirlinck + + * kmacro.texi (Keyboard Macro Counter, Keyboard Macro Step-Edit): + Change section names. + +2004-08-21 Luc Teirlinck + + * kmacro.texi (Keyboard Macro Ring): Rename section. + Emacs treats the head of the macro ring as the `last keyboard macro'. + (Keyboard Macro Counter): Minor change. + (Save Keyboard Macro): Some clarifications. + (Edit Keyboard Macro): Rename section. + + * buffers.texi (Buffers): Maximum buffer size is now 256M on + 32-bit machines. + (Several Buffers): Clarify which buffer is selected if `2' is + pressed in the Buffer Menu. + Auto Revert mode can be used to update the Buffer Menu + automatically. + +2004-08-21 Eli Zaretskii + + * help.texi (Misc Help): Add an index entry for finding an Info + manual by its file name. + +2004-08-20 Luc Teirlinck + + * files.texi (Backup Deletion): Correct description of + `delete-old-versions'. + (Time Stamps): `time-stamp' needs to be added to `before-save-hook'. + (Auto Save Files): Recommend `auto-save-mode' to reenable + auto-saving, rather than the abbreviation `auto-save'. + +2004-08-17 Luc Teirlinck + + * emacs.texi (Top): Mention "cutting" and "pasting" as synonyms + for "killing" and "yanking" in main menu. + +2004-08-16 Richard M. Stallman + + * killing.texi (Yanking, Killing): Minor cleanups. + + * mark.texi (Momentary Mark): Minor cleanups. + +2004-08-15 Kenichi Handa + + * custom.texi (Non-ASCII Rebinding): + C-q always inserts the right code to pass to global-set-key. + +2004-08-13 Luc Teirlinck + + * regs.texi (RegNumbers): Mention `C-x r i' binding for + `insert-register', instead of `C-x r g' binding, for consistency. + +2004-08-12 Luc Teirlinck + + * fixit.texi (Spelling): Fix typo. + +2004-08-11 Luc Teirlinck + + * help.texi (Help): Fix Texinfo usage. + +2004-07-24 Richard M. Stallman + + * text.texi (Paragraphs): Update how paragraphs are separated + and the default for paragraph-separate. + + * search.texi (Regexp Replace): Further update text for new + replacement operators. + +2004-07-18 Luc Teirlinck + + * emacs-xtra.texi (Subdir switches): Dired does not remember the + `R' switch. + + * dired.texi (Dired Updating): `k' only deletes inserted + subdirectories from the Dired buffer if a prefix argument was given. + + * search.texi (Regexps): Delete redundant definition of `symbol' in + description of `\_>'. It already occurs in the description of `\_<'. + +2004-07-01 Juri Linkov + + * search.texi (Incremental Search): Add C-M-w, C-M-y, M-%, C-M-%, M-e. + (Regexp Search): Add M-r. + +2004-06-30 Luc Teirlinck + + * makefile.w32-in (EMACSSOURCES): Remove emacs-xtra. + +2004-06-29 Jesper Harder + + * search.texi, calendar.texi: Markup fixes. + +2004-06-25 Richard M. Stallman + + * search.texi (Regexp Replace): Rewrite description of \# \, and \?. + +2004-06-25 David Kastrup + + * search.texi (Regexp Replace): Some typo corrections and + rearrangement. + +2004-06-24 David Kastrup + + * search.texi (Unconditional Replace): Use replace-string instead + of query-replace in example. + (Regexp Replace): Add explanations for `\,', `\#' and `\?' + sequences. + (Query Replace): Correct explanation of `^' which does not use + the mark stack. + +2004-06-21 Nick Roberts + + * misc.texi (Shell History Copying): Document comint-insert-input. + (Shell Ring): Describe comint-dynamic-list-input-ring here. + +2004-06-20 Jesper Harder + + * msdog.texi (Text and Binary, MS-DOS Printing): Use m-dash. + * custom.texi (Customization): Do. + * anti.texi (Antinews): Do. + * abbrevs.texi (Defining Abbrevs): Do. + + * programs.texi (Info Lookup): Fix keybinding for + info-lookup-symbol. + +2004-06-16 Juanma Barranquero + + * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, EMACSSOURCES): + Add emacs-xtra. + ($(infodir)/emacs-xtra, emacs-xtra.dvi): New dependencies. + (clean): Add emacs-xtra and flymake. Remove redundancies. + +2004-06-15 Luc Teirlinck + + * Makefile.in (INFO_TARGETS, DVI_TARGETS, ../info/emacs-xtra): + Add emacs-xtra. + * emacs-xtra.texi: New file. + +2004-06-14 Luc Teirlinck + + * dired.texi (Dired Enter): Mention conditions on `ls' switches. + (Dired and Find): Mention differences with ordinary Dired buffers. + +2004-06-13 Richard M. Stallman + + * custom.texi (Init Syntax): Explain about vars that do special + things when set with setq or with Custom. + (Init Examples): Add line-number-mode example. + +2004-06-12 Juri Linkov + + * dired.texi (Operating on Files): Add dired-do-touch. + +2004-06-10 Juri Linkov + + * building.texi (Lisp Eval): Add C-M-x on defface. + +2004-06-08 Luc Teirlinck + + * files.texi (Reverting): Auto-Revert mode and + Global Auto-Revert mode no longer revert remote files. + +2004-05-29 Richard M. Stallman + + * custom.texi (Init File): Two dashes start --no-site-file. + +2004-05-29 Alan Mackenzie + + * programs.texi: Update for CC Mode 5.30 and incidental amendments. + ("AWK"): Is consistently thus spelt throughout. + (AWK, Pike): Document as "C-like modes". + (@kbd{M-j}): Document as alternative to @kbd{C-M-j}. + (M-x man): Supersedes M-x manual-entry. + Add numerous index entries. Correct "ESC a/e" to "M-a/e". + + ("Comments in C"): Delete node; the info is in CC Mode manual. + (c-comment-only-line-offset): Remove description. + + (C-c ., C-c C-c): Describe new C Mode bindings. + + (C-u TAB, indent-code-rigidly, c-indent-exp, c-tab-always-indent) + (@dfn{Style}, c-default-style, comment-column, comment-padding) + (c-up-conditional, c-beginning-of-statement, c-end-of-statement): + Amend definitions. + + (c-beginning-of-defun, c-end-of-defun, c-context-line-break): + Describe functions. + + (c-comment-start-regexp, c-hanging-comment-ender-p) + (c-hanging-comment-starter-p): Remove obsolete definitions. + + * emacs.texi: Remove the menu entry "Comments in C". + +2004-05-27 Luc Teirlinck + + * dired.texi (Dired and Find): `find-ls-option' does not apply to + `M-x locate'. + +2004-05-16 Karl Berry + + * emacs.texi (ack.texi) [@ifnottex]: Change condition; with @ifinfo, + makeinfo --html fails. + * help.texi (Help Summary) [@ifnottex]: Likewise. + +2004-05-13 Nick Roberts + + * building.texi (GDB Graphical Interface): Update and describe + layout first. + +2004-05-04 Jason Rumney + + * makefile.w32-in: Revert last change. + +2004-05-03 Jason Rumney + + * makefile.w32-in (MULTI_INSTALL_INFO, ENVADD): Use forward slashes. + +2004-04-23 Juanma Barranquero + + * makefile.w32-in: Add "-*- makefile -*-" mode tag. + +2004-04-18 Juri Linkov + + * fixit.texi (Spelling): Remove file extension from ispell xref. + +2004-04-15 Kim F. Storm + + * cmdargs.texi (Initial Options): Add -Q. + +2004-04-05 Kim F. Storm + + * custom.texi (File Variables): Add safe-local-eval-forms. + +2004-04-02 Luc Teirlinck + + * files.texi (Reverting): Correct description of revert-buffer's + handling of point. + +2004-03-22 Juri Linkov + + * emacs.texi (Top): Add `Misc X'. + + * trouble.texi: Fix help key bindings. + + * glossary.texi: Improve references. + + * help.texi: Sync keywords with finder.el. + + * mini.texi (Completion): Add description for menu items. + + * misc.texi (Browse-URL, FFAP): Add information about keywords. + + * sending.texi (Mail Methods): Fix xref to Message manual. + +2004-03-12 Richard M. Stallman + + * buffers.texi (Misc Buffer): Add index entry for rename-uniquely. + +2004-03-04 Richard M. Stallman + + * search.texi (Regexps): Explain that ^ and $ have their + special meanings only in certain contexts. + + * programs.texi (Expressions): Doc C-M-SPC as alias for C-M-@. + + * mule.texi (Specify Coding): Doc C-x RET F. + + * buffers.texi (Misc Buffer): Explain use of M-x rename-uniquely + for multiple compile and grep buffers. + (Indirect Buffers): Don't recommand clone-indirect-buffer + for multiple compile and grep buffers. + +2004-02-29 Juanma Barranquero + + * makefile.w32-in (mostlyclean, clean, maintainer-clean): + Use $(DEL) instead of rm, and ignore exit code. + +2004-02-23 Nick Roberts + + * building.texi (Watch Expressions): Update. + +2004-02-21 Juri Linkov + + * cmdargs.texi (Action Arguments): Add alias --find-file. Add + --directory, --help, --version. Move text about command-line-args + to Command Arguments. + (Initial Options): Add @cindex for --script. Fix @cindex for -q. + Add --no-desktop. Add alias --no-multibyte, --no-unibyte. + (Window Size X): Join -g and --geometry. Add @cindex. + (Borders X): Fix @cindex for -ib. Add @cindex for -bw. + (Title X): Remove alias -title. + (Misc X): New node. + +2004-02-15 Jan Dj,Ad(Brv + + * frames.texi (Drag and drop): Add Motif to list of supported + protocols. + +2004-02-03 Jan Dj,Ad(Brv + + * frames.texi (Drag and drop): New section. + +2004-01-24 Richard M. Stallman + + * emacs.texi (Acknowledgments): Renamed from Acknowledgements. + Include it only @ifnotinfo. Patch the preceding and following + node headers to point to each other. + +2004-01-11 Glenn Morris + + * calendar.texi (Appointments): Update section. + +2003-12-29 Kevin Ryde + + * programs.texi (C Modes): Fix the xref. + +2003-12-23 Nick Roberts + + * building.texi (Watch Expressions): Update. + (Commands of GUD): Include use of toolbar + breakpoints set from + fringe/margin. + +2003-12-03 Andre Spiegel + + * files.texi: Say how to disable VC. Suggested by Alan Mackenzie + . + +2003-11-29 Jan Dj,Ad(Brv + + * frames.texi (Dialog Boxes): Add use-file-dialog. + +2003-11-22 Martin Stjernholm + + * ack.texi: Note that Alan Mackenzie contributed the AWK support + in CC Mode. + +2003-11-02 Jesper Harder (tiny change) + + * man/ack.texi, man/basic.texi, man/cmdargs.texi: + * man/commands.texi, man/custom.texi, man/display.texi: + * man/emacs.texi, man/files.texi: + * man/frames.texi, man/glossary.texi, man/killing.texi: + * man/macos.texi, man/mark.texi, man/misc.texi, man/msdog.texi: + * man/mule.texi, man/rmail.texi, man/search.texi: + * man/sending.texi, man/text.texi, man/trouble.texi: + Replace @sc{ascii} and ASCII with @acronym{ASCII}. + +2003-11-01 Alan Mackenzie + + * search.texi (Scrolling During Incremental Search): Document a + new scrolling facility in isearch mode. + +2003-10-22 Miles Bader + + * Makefile.in (info): Move before $(top_srcdir)/info. + +2003-10-22 Nick Roberts + + * building.texi (Watch Expressions): Update section on data display + to reflect code changes (GDB Graphical Interface). + +2003-10-13 Richard M. Stallman + + * xresources.texi (GTK resources): Clean up previous change. + +2003-10-12 Jan Dj,Ad(Brv + + * xresources.texi (GTK resources): Add a note that some themes + disallow customizations. Add scroll theme example. + +2003-09-30 Richard M. Stallman + + * cmdargs.texi (General Variables): Remove MAILRC envvar. + + * misc.texi (Saving Emacs Sessions): Shorten the section, + collapsing back into one node. + +2003-09-30 Lars Hansen + + * misc.texi: Section "Saving Emacs Sessions" rewritten. + +2003-09-29 Jan Dj,Ad(Brv. + + * xresources.texi (GTK names in Emacs): Correct typo. + +2003-09-24 Luc Teirlinck + + * cmdargs.texi (Font X): Mention new default font. More + fully describe long font names, wildcard patterns and the + problems involved. (Result of discussion on emacs-devel.) + +2003-09-22 Luc Teirlinck + + * emacs.texi (Acknowledgements): Correct typo. + +2003-09-22 Richard M. Stallman + + * dired.texi (Misc Dired Commands): New node. + (Dired Navigation): Add dired-goto-file. + + * files.texi (File Aliases, Misc File Ops): Add @cindex entries. + + * emacs.texi (Acknowledgements): New node, split from Distribution. + + * cmdargs.texi (Action Arguments): -f reads interactive args. + +2003-09-08 Lute Kamstra + + * screen.texi (Mode Line): Say that POS comes before LINE. + Mention `size-indication-mode'. + * display.texi (Optional Mode Line): Document + `size-indication-mode'. + * basic.texi (Position Info): Mention `size-indication-mode'. + +2003-09-07 Luc Teirlinck + + * xresources.texi (Resources): Refer to `editres' man page. + (Lucid Resources): Update defaults. Expand description of + `shadowThickness'. + +2003-09-04 Miles Bader + + * Makefile.in (top_srcdir): New variable. + ($(top_srcdir)/info): New rule. + (info): Depend on it. + +2003-09-03 Peter Runestig + + * makefile.w32-in: New file. + +2003-08-29 Richard M. Stallman + + * misc.texi (Saving Emacs Sessions): Correct previous change. + +2003-08-19 Luc Teirlinck + + * emacs.texi (Top): Update menu to reflect new Keyboard Macros chapter. + (Intro): Include kmacro.texi after fixit.texi instead of after + custom.texi. (As suggested by Kim Storm.) + +2003-08-18 Luc Teirlinck + + * fixit.texi (Fixit): Update `Next' pointer. + * files.texi (Files): Update `Previous' pointer. + * kmacro.texi (Keyboard Macros): Remove redundant node and section. + * emacs.texi (Intro): Include kmacro.texi after custom.texi. + (Suggested by Kim Storm.) + * Makefile (EMACSSOURCES): Add kmacro.texi. (Suggested by Kim Storm.) + +2003-08-18 Kim F. Storm + + * kmacro.texi: New file describing enhanced keyboard macro + functionality. Replaces old description in custom.texi. + + * custom.texi (Customization): Add xref to Keyboard Macros chapter. + (Keyboard Macros): Move to new kmacro.texi file. + + * emacs.texi (Keyboard Macros): Reference new keyboard macro topics. + +2003-08-17 Edward M. Reingold + + * calendar.texi (Specified Dates): Add `calendar-goto-day-of-year'. + +2003-08-17 Alex Schroeder + + * misc.texi (Saving Emacs Sessions): Manual M-x desktop-save not + required. + +2003-08-05 Richard M. Stallman + + * programs.texi (Lisp Indent): Don't describe + lisp-indent-function property here. Use xref to Lisp Manual. + +2003-08-03 Glenn Morris + + * calendar.texi (Date Formats): Document changed behaviour of + abbreviations. + +2003-07-24 Markus Rost + + * buffers.texi (List Buffers): Fix previous change. + +2003-07-13 Markus Rost + + * buffers.texi (List Buffers): Adjust to new format of *Buffer + List*. + +2003-07-07 Luc Teirlinck + + * display.texi (Font Lock): Fix typo. + +2003-07-07 Richard M. Stallman + + * display.texi (Font Lock): Add xref for format info on + font-lock-remove-keywords. + + * building.texi (Compilation): Document what happens with asynch + children of compiler process. + + * help.texi (Library Keywords): Use @multitable. + +2003-06-04 Richard M. Stallman + + * programs.texi (Expressions): Delete C-M-DEL. + + * misc.texi (Shell Options): Clarify comint-scroll-show-maximum-output. + comint-move-point-for-output renamed from + comint-scroll-to-bottom-on-output. + + * custom.texi (Init Rebinding): Replace previous change with xref. + (Non-ASCII Rebinding): Explain that issue more briefly here. + +2003-05-28 Richard M. Stallman + + * indent.texi (Indentation): Condense, simplify, clarify prev change. + +2003-05-28 Nick Roberts + + * building.texi (GDB Graphical Interface): New node. + (Rewritten somewhat by RMS.) + +2003-05-28 Kai Gro,A_(Bjohann + + * custom.texi (Init Rebinding): Xref Non-ASCII Rebinding, for + non-English letters. Explain how to set coding systems correctly + and how to include the right coding cookie in the file. + +2003-05-22 Kai Gro,A_(Bjohann + + * indent.texi (Indentation): Explain the concepts. + (Just Spaces): Explain why preventing tabs for indentation might + be useful. + +2003-04-16 Richard M. Stallman + + * search.texi (Regexps): Ref to Lisp manual for more regexp features. + +2003-02-22 Alex Schroeder + + * cmdargs.texi (General Variables): Document SMTPSERVER. + + * sending.texi: Remove SMTP node. + (Mail Sending): Describe `send-mail-function'. Link to SMTP + library. + +2003-02-22 Alex Schroeder + + * sending.texi (Sending via SMTP): Explain MTA/MUA. + +2003-02-22 Simon Josefsson + + * sending.texi (Mail Methods): Add node about SMTP. + +2003-02-17 Jan Dj,Ad(Brv + + * xresources.texi (GTK names in Emacs): Add emacs-toolbar - GtkToolbar. + +2003-02-01 Kevin Ryde + + * glossary.texi (Glossary): Correction to cl cross reference. + +2003-01-20 Richard M. Stallman + + * killing.texi (Rectangles): Document C-x c r. + +2003-01-19 Jan Dj,Ad(Brv + + * xresources.texi (GTK resources): New node. + (GTK widget names): New node. + (GTK names in Emacs): New node. + (GTK styles): New node. + +2003-01-09 Francesco Potort,Al(B + + * maintaining.texi (Create Tags Table): Add reference to the new + `etags --help --lang=LANG' option. + +2002-10-02 Karl Berry + + * emacs.texi: Per rms, update all manuals to use @copying instead of + @ifinfo. Also use @ifnottex instead of @ifinfo around the top node, + where needed for the sake of the HTML output. + +2001-12-20 Eli Zaretskii + + * Makefile.in (EMACSSOURCES): Update the list of Emacs manual + source files. + +2001-11-16 Eli Zaretskii + + * Makefile.in (emacsman): New target. + +2001-10-20 Gerd Moellmann + + * (Version 21.1 released.) + +2001-10-05 Gerd Moellmann + + * Branch for 21.1. + +2001-03-05 Gerd Moellmann + + * Makefile.in (mostlyclean, maintainer-clean): Delete more files. + +2000-05-31 Stefan Monnier + + * .cvsignore (*.tmp): New entry. Seems to be used for @macro. + +1999-07-12 Richard Stallman + + * Version 20.4 released. + +1998-12-04 Markus Rost + + * Makefile.in (INFO_TARGETS): Delete customize.info. + (DVI_TARGETS): Delete customize.dvi. + (../info/customize, customize.dvi): Targets deleted. + +1998-08-19 Richard Stallman + + * Version 20.3 released. + +1998-05-06 Richard Stallman + + * Makefile.in (EMACSSOURCES): Add mule.texi. + Add msdog.texi, ack.texi. Remove gnu1.texi. + +1998-04-06 Andreas Schwab + + * Makefile.in (ENVADD): Enviroment vars to pass to texi2dvi. Use + it in dvi targets. + +1997-09-23 Paul Eggert + + * Makefile.in: Merge changes mistakenly made to `Makefile'. + (INFO_TARGETS): Change ../info/custom to ../info/customize. + (../info/customize): Rename from ../info/custom. + +1997-09-19 Richard Stallman + + * Version 20.2 released. + +1997-09-15 Richard Stallman + + * Version 20.1 released. + +1997-08-24 Richard Stallman + + * Makefile (../info/customize, customize.dvi): New targets. + (INFO_TARGETS): Add ../info/customize. + (DVI_TARGETS): Add customize.dvi. + +1996-08-11 Richard Stallman + + * Version 19.33 released. + +1996-07-31 Richard Stallman + + * Version 19.32 released. + +1996-06-20 Richard Stallman + + * Makefile.in (All info targets): cd $(srcdir) to do the work. + +1996-06-19 Richard Stallman + + * Makefile.in (All info targets): Specify $(srcdir) in input files. + Specify -I option. + (All dvi targets): Set the TEXINPUTS variable. + +1996-05-25 Karl Heuer + + * Version 19.31 released. + +1995-11-24 Richard Stallman + + * Version 19.30 released. + +1995-02-07 Richard Stallman + + * Makefile.in (maintainer-clean): Rename from realclean. + +1994-11-23 Richard Stallman + + * Makefile.in: New file. + * Makefile: File deleted. + +1994-11-19 Richard Stallman + + * Makefile (TEXINDEX_OBJS): Variable deleted. + (texindex, texindex.o, getopt.o): Rules deleted. + All deps on texindex deleted. + (distclean): Don't delete texindex. + (mostlyclean): Don't delete *.o. + * texindex.c, getopt.c: Files deleted. + +1994-09-07 Richard Stallman + + * Version 19.26 released. + +1994-07-02 Richard Stallman (rms@gnu.ai.mit.edu) + + * Makefile (EMACSSOURCES): Exclude undo.texi. + +1994-05-30 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.25 released. + +1994-05-23 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.24 released. + +1994-05-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.23 released. + +1994-04-17 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile: Delete spurious tab. + +1994-02-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (.SUFFIXES): New rule. + +1993-12-04 Richard Stallman (rms@srarc2) + + * getopt.c: New file. + * Makefile (TEXINDEX_OBJS): Use getopt.o in this dir, not ../lib-src. + (getopt.o): New rule. + (dvi): Don't depend on texindex. + (emacs.dvi): Depend on texindex. + +1993-12-03 Richard Stallman (rms@srarc2) + + * Makefile (TEXI2DVI): New variable. + (emacs.dvi): Add explicit command. + (TEXINDEX_OBJS): Delete duplicate getopt.o. + +1993-11-27 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.22 released. + +1993-11-18 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (TEXINDEX_OBJS): Delete spurious period. + +1993-11-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.21 released. + +1993-11-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (realclean): Don't delete the Info files. + +1993-10-25 Brian Fox (bfox@albert.gnu.ai.mit.edu) + + * frames.texi (Creating Frames): Mention `C-x 5' instead of `C-x + 4' where appropriate. + +1993-10-20 Brian Fox (bfox@ai.mit.edu) + + * Makefile: Fix targets for texindex. + + * texindex.c: Include "../src/config.h" if building in emacs. + + * Makefile: Change all files to FILENAME.texi, force all targets + to be FILENAME, not FILENAME.info. + Add target to build texindex.c, defining `emacs'. + +1993-08-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.19 released. + +1993-08-08 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.18 released. + +1993-07-20 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile: Fix source file names of the separate manuals. + +1993-07-18 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.17 released. + +1993-07-10 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * split-man: Fix typos in last change. + +1993-07-06 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.16 released. + +1993-06-19 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * version 19.15 released. + +1993-06-18 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Makefile (distclean): It's rm, not rf. + +1993-06-17 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Version 19.14 released. + +1993-06-16 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile: New file. + +1993-06-08 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Version 19.13 released. + +1993-05-27 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.9 released. + +1993-05-25 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Version 19.8 released. + +1993-05-25 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * cmdargs.texi: Document the -i, -itype, and -iconic options. + + * trouble.texi: It's `enable-flow-control-on', not + `evade-flow-control-on'. + +1993-05-24 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * display.texi: Document standard-display-european. + +1993-05-22 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.7 released. + + * emacs.texi: Add a sentence to the top menu mentioning the + specific version of Emacs this manual applies to. + +1993-04-25 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * basic.texi: Document next-line-add-lines variable used to + implement down-arrow. + + * killing.texi: Document kill-whole-line. + +1993-04-18 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * text.texi: Update unix TeX ordering information. + +1993-03-26 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) + + * news.texi: Mention fill-rectangle in keybinding list. + + * killing.texi: Document fill-rectangle. + +1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * vc.texi: Bring the docs up to date with VC 5.2. + +1992-01-10 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * emacs.tex: Mention blackbox and gomoku under Amusements. + Assembler mode is now mentioned and appropriately indexed + under Programming Modes. + +1991-02-15 Robert J. Chassell (bob@wookumz.ai.mit.edu) + + * emacs.tex: Update TeX ordering information. + +1990-06-26 David Lawrence (tale@geech) + + * emacs.tex: Note that completion-ignored-extensions is not used + to filter out names when all completions are displayed in + *Completions*. + +1990-05-25 Richard Stallman (rms@sugar-bombs.ai.mit.edu) + + * texindex.tex: If USG, include sys/types.h and sys/fcntl.h. + +1990-03-21 Jim Kingdon (kingdon@pogo.ai.mit.edu) + + * emacs.tex: Add @findex grep. + +1988-08-16 Robert J. Chassell (bob@frosted-flakes.ai.mit.edu) + + * emacs.tex: Correct two typos. No other changes before + Version 19 will be made. + +1988-05-23 Robert J. Chassell (bob@frosted-flakes.ai.mit.edu) + + * emacs.tex: Update information for obtaining TeX distribution from the + University of Washington. + +;; Local Variables: +;; coding: iso-2022-7bit +;; fill-column: 79 +;; add-log-time-zone-rule: t +;; End: + + Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, + 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + + This file is part of GNU Emacs. + + GNU Emacs is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU Emacs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Emacs; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + +;;; arch-tag: f1d62776-3ed5-4811-9d96-267252577dbd diff --cc doc/emacs/building.texi index 62e5f7b4316,00000000000..5689bf1fe34 mode 100644,000000..100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@@ -1,1440 -1,0 +1,1437 @@@ +@c This is part of the Emacs manual. +@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, +@c 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See file emacs.texi for copying conditions. +@node Building, Maintaining, Programs, Top +@chapter Compiling and Testing Programs +@cindex building programs +@cindex program building +@cindex running Lisp functions + + The previous chapter discusses the Emacs commands that are useful for +making changes in programs. This chapter deals with commands that assist +in the larger process of compiling and testing programs. + +@menu +* Compilation:: Compiling programs in languages other + than Lisp (C, Pascal, etc.). +* Compilation Mode:: The mode for visiting compiler errors. +* Compilation Shell:: Customizing your shell properly + for use in the compilation buffer. +* Grep Searching:: Searching with grep. +* Flymake:: Finding syntax errors on the fly. +* Debuggers:: Running symbolic debuggers for non-Lisp programs. +* Executing Lisp:: Various modes for editing Lisp programs, + with different facilities for running + the Lisp programs. +* Libraries: Lisp Libraries. Creating Lisp programs to run in Emacs. +* Eval: Lisp Eval. Executing a single Lisp expression in Emacs. +* Interaction: Lisp Interaction. Executing Lisp in an Emacs buffer. +* External Lisp:: Communicating through Emacs with a separate Lisp. +@end menu + +@node Compilation +@section Running Compilations under Emacs +@cindex inferior process +@cindex make +@cindex compilation errors +@cindex error log + + Emacs can run compilers for noninteractive languages such as C and +Fortran as inferior processes, feeding the error log into an Emacs buffer. +It can also parse the error messages and show you the source lines where +compilation errors occurred. + +@table @kbd +@item M-x compile +Run a compiler asynchronously under Emacs, with error messages going to +the @samp{*compilation*} buffer. +@item M-x recompile +Invoke a compiler with the same command as in the last invocation of +@kbd{M-x compile}. +@item M-x kill-compilation +Kill the running compilation subprocess. +@end table + +@findex compile + To run @code{make} or another compilation command, do @kbd{M-x +compile}. This command reads a shell command line using the minibuffer, +and then executes the command in an inferior shell, putting output in +the buffer named @samp{*compilation*}. The current buffer's default +directory is used as the working directory for the execution of the +command; normally, therefore, the compilation happens in this +directory. + +@vindex compile-command + The default for the compilation command is normally @samp{make -k}, +which is correct most of the time for nontrivial programs. +(@xref{Top,, Make, make, GNU Make Manual}.) If you have done @kbd{M-x +compile} before, the default each time is the command you used the +previous time. @code{compile} stores this command in the variable +@code{compile-command}, so setting that variable specifies the default +for the next use of @kbd{M-x compile}. If a file specifies a file +local value for @code{compile-command}, that provides the default when +you type @kbd{M-x compile} in that file's buffer. @xref{File +Variables}. + + Starting a compilation displays the buffer @samp{*compilation*} in +another window but does not select it. The buffer's mode line tells +you whether compilation is finished, with the word @samp{run}, +@samp{signal} or @samp{exit} inside the parentheses. You do not have +to keep this buffer visible; compilation continues in any case. While +a compilation is going on, the string @samp{Compiling} appears in the +mode lines of all windows. When this string disappears, the +compilation is finished. + + If you want to watch the compilation transcript as it appears, switch +to the @samp{*compilation*} buffer and move point to the end of the +buffer. When point is at the end, new compilation output is inserted +above point, which remains at the end. If point is not at the end of +the buffer, it remains fixed while more compilation output is added at +the end of the buffer. + +@cindex compilation buffer, keeping point at end +@vindex compilation-scroll-output + If you set the variable @code{compilation-scroll-output} to a +non-@code{nil} value, then the compilation buffer always scrolls to +follow output as it comes in. + +@findex recompile + To rerun the last compilation with the same command, type @kbd{M-x +recompile}. This automatically reuses the compilation command from +the last invocation of @kbd{M-x compile}. It also reuses the +@samp{*compilation*} buffer and starts the compilation in its default +directory, which is the directory in which the previous compilation +was started. + + When the compiler process terminates, for whatever reason, the mode +line of the @samp{*compilation*} buffer changes to say @samp{exit} +(followed by the exit code, @samp{[0]} for a normal exit), or +@samp{signal} (if a signal terminated the process), instead of +@samp{run}. + +@findex kill-compilation + Starting a new compilation also kills any compilation already +running in @samp{*compilation*}, as the buffer can only handle one +compilation at any time. However, @kbd{M-x compile} asks for +confirmation before actually killing a compilation that is running. +You can also kill the compilation process with @kbd{M-x +kill-compilation}. + + If you want to run two compilations at once, you should start the +first one, then rename the @samp{*compilation*} buffer (perhaps using +@code{rename-uniquely}; @pxref{Misc Buffer}), and start the other +compilation. That will create a new @samp{*compilation*} buffer. + + Emacs does not expect a compiler process to launch asynchronous +subprocesses; if it does, and they keep running after the main +compiler process has terminated, Emacs may kill them or their output +may not arrive in Emacs. To avoid this problem, make the main process +wait for its subprocesses to finish. In a shell script, you can do this +using @samp{$!} and @samp{wait}, like this: + +@example +(sleep 10; echo 2nd)& pid=$! # @r{Record pid of subprocess} +echo first message +wait $pid # @r{Wait for subprocess} +@end example + + If the background process does not output to the compilation buffer, +so you only need to prevent it from being killed when the main +compilation process terminates, this is sufficient: + +@example +nohup @var{command}; sleep 1 +@end example + +@vindex compilation-environment + You can control the environment passed to the compilation command +with the variable @code{compilation-environment}. Its value is a list +of environment variable settings; each element should be a string of +the form @code{"@var{envvarname}=@var{value}"}. These environment +variable settings override the usual ones. + +@node Compilation Mode +@section Compilation Mode + +@cindex Compilation mode +@cindex mode, Compilation + The @samp{*compilation*} buffer uses a special major mode, +Compilation mode, whose main feature is to provide a convenient way to +visit the source line corresponding to an error message. These +commands are also available in other special buffers that list +locations in files, including those made by @kbd{M-x grep} and +@kbd{M-x occur}. + +@table @kbd +@item M-g M-n +@itemx M-g n +@itemx C-x ` +Visit the locus of the next error message or match. +@item M-g M-p +@itemx M-g p +Visit the locus of the previous error message or match. +@item @key{RET} +Visit the locus of the error message that point is on. +This command is used in the compilation buffer. +@item Mouse-2 +Visit the locus of the error message that you click on. +@item M-n +Find and highlight the locus of the next error message, without +selecting the source buffer. +@item M-p +Find and highlight the locus of the previous error message, without +selecting the source buffer. +@item M-@} +Move point to the next error for a different file than the current +one. +@item M-@{ +Move point to the previous error for a different file than the current +one. +@item C-c C-f +Toggle Next Error Follow minor mode, which makes cursor motion in the +compilation buffer produce automatic source display. +@end table + +@findex compile-goto-error + You can visit the source for any particular error message by moving +point in the @samp{*compilation*} buffer to that error message and +typing @key{RET} (@code{compile-goto-error}). Alternatively, you can +click @kbd{Mouse-2} on the error message; you need not switch to the +@samp{*compilation*} buffer first. + +@kindex M-g M-n +@kindex M-g n +@kindex C-x ` +@findex next-error +@vindex next-error-highlight + To parse the compiler error messages sequentially, type @kbd{C-x `} +(@code{next-error}). The character following the @kbd{C-x} is the +backquote or ``grave accent,'' not the single-quote. This command is +available in all buffers, not just in @samp{*compilation*}; it +displays the next error message at the top of one window and source +location of the error in another window. It also temporarily +highlights the relevant source line, for a period controlled by the +variable @code{next-error-highlight}. + + The first time @w{@kbd{C-x `}} is used after the start of a compilation, +it moves to the first error's location. Subsequent uses of @kbd{C-x +`} advance down to subsequent errors. If you visit a specific error +message with @key{RET} or @kbd{Mouse-2}, subsequent @w{@kbd{C-x `}} +commands advance from there. When @w{@kbd{C-x `}} gets to the end of the +buffer and finds no more error messages to visit, it fails and signals +an Emacs error. @w{@kbd{C-u C-x `}} starts scanning from the beginning of +the compilation buffer, and goes to the first error's location. + +@vindex compilation-skip-threshold + By default, @w{@kbd{C-x `}} skips less important messages. The variable +@code{compilation-skip-threshold} controls this. If its value is 2, +@w{@kbd{C-x `}} skips anything less than error, 1 skips anything less +than warning, and 0 doesn't skip any messages. The default is 1. + + When the window has a left fringe, an arrow in the fringe points to +the current message in the compilation buffer. The variable +@code{compilation-context-lines} controls the number of lines of +leading context to display before the current message. Going to an +error message location scrolls the @samp{*compilation*} buffer to put +the message that far down from the top. The value @code{nil} is +special: if there's a left fringe, the window doesn't scroll at all +if the message is already visible. If there is no left fringe, +@code{nil} means display the message at the top of the window. + + If you're not in the compilation buffer when you run +@code{next-error}, Emacs will look for a buffer that contains error +messages. First, it looks for one displayed in the selected frame, +then for one that previously had @code{next-error} called on it, and +then at the current buffer. Finally, Emacs looks at all the remaining +buffers. @code{next-error} signals an error if it can't find any such +buffer. + +@vindex compilation-error-regexp-alist +@vindex grep-regexp-alist + To parse messages from the compiler, Compilation mode uses the +variable @code{compilation-error-regexp-alist} which lists various +formats of error messages and tells Emacs how to extract the source file +and the line number from the text of a message. If your compiler isn't +supported, you can tailor Compilation mode to it by adding elements to +that list. A similar variable @code{grep-regexp-alist} tells Emacs how +to parse output of a @code{grep} command. + +@findex compilation-next-error +@findex compilation-previous-error +@findex compilation-next-file +@findex compilation-previous-file + Compilation mode also redefines the keys @key{SPC} and @key{DEL} to +scroll by screenfuls, and @kbd{M-n} (@code{compilation-next-error}) +and @kbd{M-p} (@code{compilation-previous-error}) to move to the next +or previous error message. You can also use @kbd{M-@{} +(@code{compilation-next-file} and @kbd{M-@}} +(@code{compilation-previous-file}) to move up or down to an error +message for a different source file. + +@cindex Next Error Follow mode +@findex next-error-follow-minor-mode + You can type @kbd{C-c C-f} to toggle Next Error Follow mode. In +this minor mode, ordinary cursor motion in the compilation buffer +automatically updates the source buffer. For instance, moving the +cursor to the next error message causes the location of that error to +be displayed immediately. + + The features of Compilation mode are also available in a minor mode +called Compilation Minor mode. This lets you parse error messages in +any buffer, not just a normal compilation output buffer. Type @kbd{M-x +compilation-minor-mode} to enable the minor mode. This defines the keys +@key{RET} and @kbd{Mouse-2}, as in the Compilation major mode. + + Compilation minor mode works in any buffer, as long as the contents +are in a format that it understands. In an Rlogin buffer (@pxref{Remote +Host}), Compilation minor mode automatically accesses remote source +files by FTP (@pxref{File Names}). + +@node Compilation Shell +@section Subshells for Compilation + + Emacs uses a shell to run the compilation command, but specifies the +option for a noninteractive shell. This means, in particular, that +the shell should start with no prompt. If you find your usual shell +prompt making an unsightly appearance in the @samp{*compilation*} +buffer, it means you have made a mistake in your shell's init file by +setting the prompt unconditionally. (This init file's name may be +@file{.bashrc}, @file{.profile}, @file{.cshrc}, @file{.shrc}, or +various other things, depending on the shell you use.) The shell init +file should set the prompt only if there already is a prompt. Here's +how to do it in bash: + +@example +if [ "$@{PS1+set@}" = set ] +then PS1=@dots{} +fi +@end example + +@noindent +And here's how to do it in csh: + +@example +if ($?prompt) set prompt = @dots{} +@end example + + There may well be other things that your shell's init file +ought to do only for an interactive shell. You can use the same +method to conditionalize them. + + The MS-DOS ``operating system'' does not support asynchronous +subprocesses; to work around this lack, @kbd{M-x compile} runs the +compilation command synchronously on MS-DOS. As a consequence, you must +wait until the command finishes before you can do anything else in +Emacs. +@iftex +@inforef{MS-DOS,,emacs-xtra}. +@end iftex +@ifnottex +@xref{MS-DOS}. +@end ifnottex + +@node Grep Searching +@section Searching with Grep under Emacs + + Just as you can run a compiler from Emacs and then visit the lines +with compilation errors, you can also run @code{grep} and then visit +the lines on which matches were found. This works by treating the +matches reported by @code{grep} as if they were ``errors.'' The +buffer of matches uses Grep mode, which is a variant of Compilation +mode (@pxref{Compilation Mode}). + +@table @kbd +@item M-x grep +@item M-x lgrep +Run @code{grep} asynchronously under Emacs, with matching lines +listed in the buffer named @samp{*grep*}. +@item M-x grep-find +@itemx M-x find-grep +@itemx M-x rgrep +Run @code{grep} via @code{find}, with user-specified arguments, and +collect output in the buffer named @samp{*grep*}. +@item M-x kill-grep +Kill the running @code{grep} subprocess. +@end table + +@findex grep + To run @code{grep}, type @kbd{M-x grep}, then enter a command line +that specifies how to run @code{grep}. Use the same arguments you +would give @code{grep} when running it normally: a @code{grep}-style +regexp (usually in single-quotes to quote the shell's special +characters) followed by file names, which may use wildcards. If you +specify a prefix argument for @kbd{M-x grep}, it finds the tag +(@pxref{Tags}) in the buffer around point, and puts that into the +default @code{grep} command. + + Your command need not simply run @code{grep}; you can use any shell +command that produces output in the same format. For instance, you +can chain @code{grep} commands, like this: + +@example +grep -nH -e foo *.el | grep bar | grep toto +@end example + + The output from @code{grep} goes in the @samp{*grep*} buffer. You +can find the corresponding lines in the original files using @w{@kbd{C-x +`}}, @key{RET}, and so forth, just like compilation errors. + + Some grep programs accept a @samp{--color} option to output special +markers around matches for the purpose of highlighting. You can make +use of this feature by setting @code{grep-highlight-matches} to +@code{t}. When displaying a match in the source buffer, the exact +match will be highlighted, instead of the entire source line. + +@findex grep-find +@findex find-grep + The command @kbd{M-x grep-find} (also available as @kbd{M-x +find-grep}) is similar to @kbd{M-x grep}, but it supplies a different +initial default for the command---one that runs both @code{find} and +@code{grep}, so as to search every file in a directory tree. See also +the @code{find-grep-dired} command, in @ref{Dired and Find}. + +@findex lgrep +@findex rgrep + The commands @kbd{M-x lgrep} (local grep) and @kbd{M-x rgrep} +(recursive grep) are more user-friendly versions of @code{grep} and +@code{grep-find}, which prompt separately for the regular expression +to match, the files to search, and the base directory for the search. +Case sensitivity of the search is controlled by the +current value of @code{case-fold-search}. + +These commands build the shell commands based on the variables +@code{grep-template} (for @code{lgrep}) and @code{grep-find-template} +(for @code{rgrep}). + +The files to search can use aliases defined in the variable +@code{grep-files-aliases}. + +Subdirectories listed in the variable +@code{grep-find-ignored-directories} such as those typically used by +various version control systems, like CVS and arch, are automatically +skipped by @code{rgrep}. + +@node Flymake +@section Finding Syntax Errors On The Fly +@cindex checking syntax + + Flymake mode is a minor mode that performs on-the-fly syntax +checking for many programming and markup languages, including C, C++, +Perl, HTML, and @TeX{}/La@TeX{}. It is somewhat analogous to Flyspell +mode, which performs spell checking for ordinary human languages in a +similar fashion (@pxref{Spelling}). As you edit a file, Flymake mode +runs an appropriate syntax checking tool in the background, using a +temporary copy of the buffer. It then parses the error and warning +messages, and highlights the erroneous lines in the buffer. The +syntax checking tool used depends on the language; for example, for +C/C++ files this is usually the C compiler. Flymake can also use +build tools such as @code{make} for checking complicated projects. + + To activate Flymake mode, type @kbd{M-x flymake-mode}. You can move +to the errors spotted by Flymake mode with @kbd{M-x +flymake-goto-next-error} and @kbd{M-x flymake-goto-prev-error}. To +display any error messages associated with the current line, use +@kbd{M-x flymake-display-err-menu-for-current-line}. + + For more details about using Flymake, see @ref{Top, Flymake, +Flymake, flymake, The Flymake Manual}. + +@node Debuggers +@section Running Debuggers Under Emacs +@cindex debuggers +@cindex GUD library +@cindex GDB +@cindex DBX +@cindex SDB +@cindex XDB +@cindex Perldb +@cindex JDB +@cindex PDB + +@c Do you believe in GUD? +The GUD (Grand Unified Debugger) library provides an interface to +various symbolic debuggers from within Emacs. We recommend the +debugger GDB, which is free software, but GUD can also run DBX, SDB or +XDB. GUD can also serve as an interface to Perl's debugging mode, the +Python debugger PDB, and to JDB, the Java Debugger. +@xref{Debugging,, The Lisp Debugger, elisp, the Emacs Lisp Reference +Manual}, for information on debugging Emacs Lisp programs. + +@menu +* Starting GUD:: How to start a debugger subprocess. +* Debugger Operation:: Connection between the debugger and source buffers. +* Commands of GUD:: Key bindings for common commands. +* GUD Customization:: Defining your own commands for GUD. +* GDB Graphical Interface:: An enhanced mode that uses GDB features to + implement a graphical debugging environment through + Emacs. +@end menu + +@node Starting GUD +@subsection Starting GUD + + There are several commands for starting a debugger, each corresponding +to a particular debugger program. + +@table @kbd +@item M-x gdb @key{RET} @var{file} @key{RET} +@findex gdb +Run GDB as a subprocess of Emacs. By default, this uses an IDE-like +graphical interface; see @ref{GDB Graphical Interface}. Only GDB +works with the graphical interface. + +@item M-x dbx @key{RET} @var{file} @key{RET} +@findex dbx +Run DBX as a subprocess of Emacs. Since Emacs does not implement a +graphical interface for DBX, communication with DBX works by typing +commands in the GUD interaction buffer. The same is true for all +the other supported debuggers. + +@item M-x xdb @key{RET} @var{file} @key{RET} +@findex xdb +@vindex gud-xdb-directories +Similar, but run XDB. Use the variable +@code{gud-xdb-directories} to specify directories to search for source +files. + +@item M-x sdb @key{RET} @var{file} @key{RET} +@findex sdb +Similar, but run SDB. + + Some versions of SDB do not mention source file names in their +messages. When you use them, you need to have a valid tags table +(@pxref{Tags}) in order for GUD to find functions in the source code. +If you have not visited a tags table or the tags table doesn't list one +of the functions, you get a message saying @samp{The sdb support +requires a valid tags table to work}. If this happens, generate a valid +tags table in the working directory and try again. + +@item M-x perldb @key{RET} @var{file} @key{RET} +@findex perldb +Run the Perl interpreter in debug mode to debug @var{file}, a Perl program. + +@item M-x jdb @key{RET} @var{file} @key{RET} +@findex jdb +Run the Java debugger to debug @var{file}. + +@item M-x pdb @key{RET} @var{file} @key{RET} +@findex pdb +Run the Python debugger to debug @var{file}. +@end table + + Each of these commands takes one argument: a command line to invoke +the debugger. In the simplest case, specify just the name of the +executable file you want to debug. You may also use options that the +debugger supports. However, shell wildcards and variables are not +allowed. GUD assumes that the first argument not starting with a +@samp{-} is the executable file name. + +Tramp provides a facility to debug programs on remote hosts. +@xref{Running a debugger on a remote host, Running a debugger on a remote host,, tramp, The Tramp Manual}. +@c Running a debugger on a remote host + +@node Debugger Operation +@subsection Debugger Operation + +@cindex fringes, and current execution line in GUD + Generally when you run a debugger with GUD, the debugger uses an Emacs +buffer for its ordinary input and output. This is called the GUD +buffer. Input and output from the program you are debugging also use +this buffer. We call this @dfn{text command mode}. The GDB Graphical +Interface can use further buffers (@pxref{GDB Graphical Interface}). + + The debugger displays the source files of the program by visiting +them in Emacs buffers. An arrow in the left fringe indicates the +current execution line.@footnote{On a text-only terminal, the arrow +appears as @samp{=>} and overlays the first two text columns.} Moving +point in this buffer does not move the arrow. The arrow is not part +of the file's text; it appears only on the screen. + + You can start editing these source files at any time in the buffers +that display them. If you do modify a source file, keep in mind that +inserting or deleting lines will throw off the arrow's positioning; +GUD has no way of figuring out which line corresponded before your +changes to the line number in a debugger message. Also, you'll +typically have to recompile and restart the program for your changes +to be reflected in the debugger's tables. + +@cindex tooltips with GUD +@vindex tooltip-gud-modes +@vindex gud-tooltip-mode +@vindex gud-tooltip-echo-area + The Tooltip facility (@pxref{Tooltips}) provides support for GUD@. +You activate this feature by turning on the minor mode +@code{gud-tooltip-mode}. Then you can display a variable's value in a +tooltip simply by pointing at it with the mouse. This operates in the +GUD buffer and in source buffers with major modes in the list +@code{gud-tooltip-modes}. If the variable @code{gud-tooltip-echo-area} +is non-@code{nil} then the variable's value is displayed in the echo +area. When debugging a C program using the GDB Graphical Interface, you +can also display macro definitions associated with an identifier when +the program is not executing. + + GUD tooltips are disabled when you use GDB in text command mode +(@pxref{GDB Graphical Interface}), because displaying an expression's +value in GDB can sometimes expand a macro and result in a side effect +that interferes with the program's operation. The GDB graphical +interface supports GUD tooltips and assures they will not cause side +effects. + +@node Commands of GUD +@subsection Commands of GUD + + The GUD interaction buffer uses a variant of Shell mode, so the +Emacs commands of Shell mode are available (@pxref{Shell Mode}). All +the usual commands for your debugger are available, and you can use +the Shell mode history commands to repeat them. If you wish, you can +control your debugger process entirely through this buffer. + + GUD mode also provides commands for setting and clearing +breakpoints, for selecting stack frames, and for stepping through the +program. These commands are available both in the GUD buffer and +globally, but with different key bindings. It also has its own tool +bar from which you can invoke the more common commands by clicking on +the appropriate icon. This is particularly useful for repetitive +commands like @code{gud-next} and @code{gud-step}, and allows you to +keep the GUD buffer hidden. + + The breakpoint commands are normally used in source file buffers, +because that is the easiest way to specify where to set or clear the +breakpoint. Here's the global command to set a breakpoint: + +@table @kbd +@item C-x @key{SPC} +@kindex C-x SPC +Set a breakpoint on the source line that point is on. +@end table + +@kindex C-x C-a @r{(GUD)} + Here are the other special commands provided by GUD@. The keys +starting with @kbd{C-c} are available only in the GUD interaction +buffer. The key bindings that start with @kbd{C-x C-a} are available +in the GUD interaction buffer and also in source files. Some of these +commands are not available to all the supported debuggers. + +@table @kbd +@item C-c C-l +@kindex C-c C-l @r{(GUD)} +@itemx C-x C-a C-l +@findex gud-refresh +Display in another window the last line referred to in the GUD +buffer (that is, the line indicated in the last location message). +This runs the command @code{gud-refresh}. + +@item C-c C-s +@kindex C-c C-s @r{(GUD)} +@itemx C-x C-a C-s +@findex gud-step +Execute a single line of code (@code{gud-step}). If the line contains +a function call, execution stops after entering the called function. + +@item C-c C-n +@kindex C-c C-n @r{(GUD)} +@itemx C-x C-a C-n +@findex gud-next +Execute a single line of code, stepping across entire function calls +at full speed (@code{gud-next}). + +@item C-c C-i +@kindex C-c C-i @r{(GUD)} +@itemx C-x C-a C-i +@findex gud-stepi +Execute a single machine instruction (@code{gud-stepi}). + +@item C-c C-p +@kindex C-c C-p @r{(GUD)} +@itemx C-x C-a C-p +@findex gud-print +Evaluate the expression at point (@code{gud-print}). If Emacs +does not print the exact expression that you want, mark it as a region +first. + +@need 3000 +@item C-c C-r +@kindex C-c C-r @r{(GUD)} +@itemx C-x C-a C-r +@findex gud-cont +Continue execution without specifying any stopping point. The program +will run until it hits a breakpoint, terminates, or gets a signal that +the debugger is checking for (@code{gud-cont}). + +@need 1000 +@item C-c C-d +@kindex C-c C-d @r{(GUD)} +@itemx C-x C-a C-d +@findex gud-remove +Delete the breakpoint(s) on the current source line, if any +(@code{gud-remove}). If you use this command in the GUD interaction +buffer, it applies to the line where the program last stopped. + +@item C-c C-t +@kindex C-c C-t @r{(GUD)} +@itemx C-x C-a C-t +@findex gud-tbreak +Set a temporary breakpoint on the current source line, if any +(@code{gud-tbreak}). If you use this command in the GUD interaction +buffer, it applies to the line where the program last stopped. + +@item C-c < +@kindex C-c < @r{(GUD)} +@itemx C-x C-a < +@findex gud-up +Select the next enclosing stack frame (@code{gud-up}). This is +equivalent to the GDB command @samp{up}. + +@item C-c > +@kindex C-c > @r{(GUD)} +@itemx C-x C-a > +@findex gud-down +Select the next inner stack frame (@code{gud-down}). This is +equivalent to the GDB command @samp{down}. + +@item C-c C-u +@kindex C-c C-u @r{(GUD)} +@itemx C-x C-a C-u +@findex gud-until +Continue execution to the current line (@code{gud-until}). The +program will run until it hits a breakpoint, terminates, gets a signal +that the debugger is checking for, or reaches the line on which the +cursor currently sits. + +@item C-c C-f +@kindex C-c C-f @r{(GUD)} +@itemx C-x C-a C-f +@findex gud-finish +Run the program until the selected stack frame returns or +stops for some other reason (@code{gud-finish}). +@end table + + If you are using GDB, these additional key bindings are available: + +@table @kbd +@item C-x C-a C-j +@kindex C-x C-a C-j @r{(GUD)} +@findex gud-jump +Only useful in a source buffer, @code{gud-jump} transfers the +program's execution point to the current line. In other words, the +next line that the program executes will be the one where you gave the +command. If the new execution line is in a different function from +the previously one, GDB prompts for confirmation since the results may +be bizarre. See the GDB manual entry regarding @code{jump} for +details. + +@item @key{TAB} +@kindex TAB @r{(GUD)} +@findex gud-gdb-complete-command +With GDB, complete a symbol name (@code{gud-gdb-complete-command}). +This key is available only in the GUD interaction buffer. +@end table + + These commands interpret a numeric argument as a repeat count, when +that makes sense. + + Because @key{TAB} serves as a completion command, you can't use it to +enter a tab as input to the program you are debugging with GDB. +Instead, type @kbd{C-q @key{TAB}} to enter a tab. + +@node GUD Customization +@subsection GUD Customization + +@vindex gdb-mode-hook +@vindex dbx-mode-hook +@vindex sdb-mode-hook +@vindex xdb-mode-hook +@vindex perldb-mode-hook +@vindex pdb-mode-hook +@vindex jdb-mode-hook + On startup, GUD runs one of the following hooks: @code{gdb-mode-hook}, +if you are using GDB; @code{dbx-mode-hook}, if you are using DBX; +@code{sdb-mode-hook}, if you are using SDB; @code{xdb-mode-hook}, if you +are using XDB; @code{perldb-mode-hook}, for Perl debugging mode; +@code{pdb-mode-hook}, for PDB; @code{jdb-mode-hook}, for JDB. You can +use these hooks to define custom key bindings for the debugger +interaction buffer. @xref{Hooks}. + + Here is a convenient way to define a command that sends a particular +command string to the debugger, and set up a key binding for it in the +debugger interaction buffer: + +@findex gud-def +@example +(gud-def @var{function} @var{cmdstring} @var{binding} @var{docstring}) +@end example + + This defines a command named @var{function} which sends +@var{cmdstring} to the debugger process, and gives it the documentation +string @var{docstring}. You can then use the command @var{function} in any +buffer. If @var{binding} is non-@code{nil}, @code{gud-def} also binds +the command to @kbd{C-c @var{binding}} in the GUD buffer's mode and to +@kbd{C-x C-a @var{binding}} generally. + + The command string @var{cmdstring} may contain certain +@samp{%}-sequences that stand for data to be filled in at the time +@var{function} is called: + +@table @samp +@item %f +The name of the current source file. If the current buffer is the GUD +buffer, then the ``current source file'' is the file that the program +stopped in. + +@item %l +The number of the current source line. If the current buffer is the GUD +buffer, then the ``current source line'' is the line that the program +stopped in. + +@item %e +In transient-mark-mode the text in the region, if it is active. +Otherwise the text of the C lvalue or function-call expression at or +adjacent to point. + +@item %a +The text of the hexadecimal address at or adjacent to point. + +@item %p +The numeric argument of the called function, as a decimal number. If +the command is used without a numeric argument, @samp{%p} stands for the +empty string. + +If you don't use @samp{%p} in the command string, the command you define +ignores any numeric argument. + +@item %d +The name of the directory of the current source file. + +@item %c +Fully qualified class name derived from the expression surrounding point +(jdb only). +@end table + +@node GDB Graphical Interface +@subsection GDB Graphical Interface + + By default, the command @code{gdb} starts GDB using a graphical +interface, using Emacs windows for display program state information. +In effect, this makes Emacs into an IDE (interactive development +environment). With it, you do not need to use textual GDB commands; +you can control the debugging session with the mouse. For example, +you can click in the fringe of a source buffer to set a breakpoint +there, or on a stack frame in the stack buffer to select that frame. + + This mode requires telling GDB that its ``screen size'' is +unlimited, so it sets the height and width accordingly. For correct +operation you must not change these values during the GDB session. + +@vindex gud-gdb-command-name - @findex gdba - You can also run GDB in text command mode, like other debuggers. To - do this, replace the GDB @code{"--annotate=3"} option with - @code{"--fullname"} either in the minibuffer for the current Emacs - session, or the custom variable @code{gud-gdb-command-name} for all - future sessions. You need to use text command mode to debug multiple - programs within one Emacs session. If you have customized - @code{gud-gdb-command-name} in this way, you can use @kbd{M-x gdba} to - invoke GDB in graphical mode. Moreover, this command succeeds where - @kbd{M-x gdb} fails, such as when your @file{.gdbinit} file contains - executable GDB commands. ++ You can also run GDB in text command mode, like the other debuggers ++in Emacs. To do this, replace the GDB @code{"--annotate=3"} option ++with @code{"--fullname"} either in the minibuffer for the current ++Emacs session, or the custom variable @code{gud-gdb-command-name} for ++all future sessions. You need to use text command mode to debug ++multiple programs within one Emacs session. You can also use ++@kbd{M-x gud-gdb} to invoke GDB in text command mode if you have ++problems before execution has started. + +@menu +* GDB-UI Layout:: Control the number of displayed buffers. +* Source Buffers:: Use the mouse in the fringe/margin to + control your program. +* Breakpoints Buffer:: A breakpoint control panel. +* Stack Buffer:: Select a frame from the call stack. +* Other GDB-UI Buffers:: Input/output, locals, registers, + assembler, threads and memory buffers. +* Watch Expressions:: Monitor variable values in the speedbar. +@end menu + +@node GDB-UI Layout +@subsubsection GDB User Interface Layout +@cindex GDB User Interface layout + +@vindex gdb-many-windows + If the variable @code{gdb-many-windows} is @code{nil} (the default +value) then @kbd{M-x gdb} normally displays only the GUD buffer. +However, if the variable @code{gdb-show-main} is also non-@code{nil}, +it starts with two windows: one displaying the GUD buffer, and the +other showing the source for the @code{main} function of the program +you are debugging. + + If @code{gdb-many-windows} is non-@code{nil}, then @kbd{M-x gdb} +displays the following frame layout: + +@smallexample +@group ++--------------------------------+--------------------------------+ +| GUD buffer (I/O of GDB) | Locals buffer | +|--------------------------------+--------------------------------+ +| Primary Source buffer | I/O buffer for debugged pgm | +|--------------------------------+--------------------------------+ +| Stack buffer | Breakpoints buffer | ++--------------------------------+--------------------------------+ +@end group +@end smallexample + + However, if @code{gdb-use-separate-io-buffer} is @code{nil}, the I/O +buffer does not appear and the primary source buffer occupies the full +width of the frame. + +@findex gdb-restore-windows + If you change the window layout, for example, while editing and +re-compiling your program, then you can restore this standard window +layout with the command @code{gdb-restore-windows}. + +@findex gdb-many-windows + To switch between this standard layout and a simple layout +containing just the GUD buffer and a source file, type @kbd{M-x +gdb-many-windows}. + + You may also specify additional GDB-related buffers to display, +either in the same frame or a different one. Select the buffers you +want with the @samp{GUD->GDB-windows} and @samp{GUD->GDB-Frames} +sub-menus. If the menu-bar is unavailable, type @code{M-x +gdb-display-@var{buffertype}-buffer} or @code{M-x +gdb-frame-@var{buffertype}-buffer} respectively, where +@var{buffertype} is the relevant buffer type, such as +@samp{breakpoints}. Most of these buffers are read-only, and typing +@kbd{q} in them kills them. + + When you finish debugging, kill the GUD buffer with @kbd{C-x k}, +which will also kill all the buffers associated with the session. +However you need not do this if, after editing and re-compiling your +source code within Emacs, you wish continue debugging. When you +restart execution, GDB will automatically find your new executable. +Keeping the GUD buffer has the advantage of keeping the shell history +as well as GDB's breakpoints. You do need to check that the +breakpoints in recently edited source files are still in the right +places. + +@node Source Buffers +@subsubsection Source Buffers +@cindex GDB commands in Fringe + +@c @findex gdb-mouse-set-clear-breakpoint +@c @findex gdb-mouse-toggle-breakpoint +Many GDB commands can be entered using keybindings or the tool bar but +sometimes it is quicker to use the fringe. These commands either +manipulate breakpoints or control program execution. When there is no +fringe, you can use the margin but this is only present when the +source file already has a breakpoint. + +You can click @kbd{Mouse-1} in the fringe or display margin of a +source buffer to set a breakpoint there and, on a graphical display, a +red bullet will appear on that line. If a breakpoint already exists +on that line, the same click will remove it. You can also enable or +disable a breakpoint by clicking @kbd{C-Mouse-1} on the bullet. + +A solid arrow in the left fringe of a source buffer indicates the line +of the innermost frame where the debugged program has stopped. A +hollow arrow indicates the current execution line of higher level +frames. + +If you drag the arrow in the fringe with @kbd{Mouse-1} +(@code{gdb-mouse-until}), execution will continue to the line where +you release the button, provided it is still in the same frame. +Alternatively, you can click @kbd{Mouse-3} at some point in the fringe +of this buffer and execution will advance to there. A similar command +(@code{gdb-mouse-jump}) allows you to jump to a source line without +executing the intermediate lines by clicking @kbd{C-Mouse-3}. This +command allows you to go backwards which can be useful for running +through code that has already executed, in order to examine its +execution in more detail. + +@table @kbd +@item Mouse-1 +Set or clear a breakpoint. + +@item C-Mouse-1 +Enable or disable a breakpoint. + +@item Mouse-3 +Continue execution to here. + +@item C-Mouse-3 +Jump to here. +@end table + +If the variable @code{gdb-find-source-frame} is non-@code{nil} and +execution stops in a frame for which there is no source code e.g after +an interrupt, then Emacs finds and displays the first frame further up +stack for which there is source. If it is @code{nil} then the source +buffer continues to display the last frame which maybe more useful, +for example, when re-setting a breakpoint. + +@node Breakpoints Buffer +@subsubsection Breakpoints Buffer + + The breakpoints buffer shows the existing breakpoints, watchpoints and +catchpoints (@pxref{Breakpoints,,, gdb, The GNU debugger}). It has +these special commands, which mostly apply to the @dfn{current +breakpoint}, the breakpoint which point is on. + +@table @kbd +@item @key{SPC} +@kindex SPC @r{(GDB breakpoints buffer)} +@findex gdb-toggle-breakpoint +Enable/disable the current breakpoint (@code{gdb-toggle-breakpoint}). +On a graphical display, this changes the color of a bullet in the +margin of a source buffer at the relevant line. This is red when +the breakpoint is enabled and grey when it is disabled. Text-only +terminals correspondingly display a @samp{B} or @samp{b}. + +@item D +@kindex D @r{(GDB breakpoints buffer)} +@findex gdb-delete-breakpoint +Delete the current breakpoint (@code{gdb-delete-breakpoint}). + +@item @key{RET} +@kindex RET @r{(GDB breakpoints buffer)} +@findex gdb-goto-breakpoint +Visit the source line for the current breakpoint +(@code{gdb-goto-breakpoint}). + +@item Mouse-2 +@kindex Mouse-2 @r{(GDB breakpoints buffer)} +Visit the source line for the breakpoint you click on. +@end table + +@node Stack Buffer +@subsubsection Stack Buffer + + The stack buffer displays a @dfn{call stack}, with one line for each +of the nested subroutine calls (@dfn{stack frames}) now active in the +program. @xref{Backtrace,, Backtraces, gdb, The GNU debugger}. + +@findex gdb-frames-select +An arrow in the fringe points to the selected frame or, if the fringe is +not present, the number of the selected frame is displayed in reverse +contrast. To select a frame in GDB, move point in the stack buffer to +that stack frame and type @key{RET} (@code{gdb-frames-select}), or click +@kbd{Mouse-2} on a stack frame. If the locals buffer is visible, +selecting a stack frame updates it to display the local variables of the +new frame. + +@node Other GDB-UI Buffers +@subsubsection Other Buffers + +@table @asis +@item Input/Output Buffer +@vindex gdb-use-separate-io-buffer +If the variable @code{gdb-use-separate-io-buffer} is non-@code{nil}, +the program being debugged takes its input and displays its output +here. Otherwise it uses the GUD buffer for that. To toggle whether +GUD mode uses this buffer, do @kbd{M-x gdb-use-separate-io-buffer}. +This takes effect when you next restart the program you are debugging. + +The history and replay commands from Shell mode are available here, +as are the commands to send signals to the debugged program. +@xref{Shell Mode}. + +@item Locals Buffer +The locals buffer displays the values of local variables of the +current frame for simple data types (@pxref{Frame Info, Frame Info, +Information on a frame, gdb, The GNU debugger}). Press @key{RET} or +click @kbd{Mouse-2} on the value if you want to edit it. + +Arrays and structures display their type only. With GDB 6.4 or later, +move point to their name and press @key{RET}, or alternatively click +@kbd{Mouse-2} there, to examine their values. With earlier versions +of GDB, use @kbd{Mouse-2} or @key{RET} on the type description +(@samp{[struct/union]} or @samp{[array]}). @xref{Watch Expressions}. + +@item Registers Buffer +@findex toggle-gdb-all-registers +The registers buffer displays the values held by the registers +(@pxref{Registers,,, gdb, The GNU debugger}). Press @key{RET} or +click @kbd{Mouse-2} on a register if you want to edit its value. +With GDB 6.4 or later, recently changed register values display with +@code{font-lock-warning-face}. With earlier versions of GDB, you can +press @key{SPC} to toggle the display of floating point registers +(@code{toggle-gdb-all-registers}). + +@item Assembler Buffer +The assembler buffer displays the current frame as machine code. An +arrow points to the current instruction, and you can set and remove +breakpoints as in a source buffer. Breakpoint icons also appear in +the fringe or margin. + +@item Threads Buffer +@findex gdb-threads-select +The threads buffer displays a summary of all threads currently in your +program (@pxref{Threads, Threads, Debugging programs with multiple +threads, gdb, The GNU debugger}). Move point to any thread in the +list and press @key{RET} to select it (@code{gdb-threads-select}) and +display the associated source in the primary source buffer. +Alternatively, click @kbd{Mouse-2} on a thread to select it. If the +locals buffer is visible, its contents update to display the variables +that are local in the new thread. + +@item Memory Buffer +The memory buffer lets you examine sections of program memory +(@pxref{Memory, Memory, Examining memory, gdb, The GNU debugger}). +Click @kbd{Mouse-1} on the appropriate part of the header line to +change the starting address or number of data items that the buffer +displays. Click @kbd{Mouse-3} on the header line to select the +display format or unit size for these data items. +@end table + +@node Watch Expressions +@subsubsection Watch Expressions +@cindex Watching expressions in GDB + +@findex gud-watch +@kindex C-x C-a C-w @r{(GUD)} + If you want to see how a variable changes each time your program +stops, move point into the variable name and click on the watch icon +in the tool bar (@code{gud-watch}) or type @kbd{C-x C-a C-w}. If you +specify a prefix argument, you can enter the variable name in the +minibuffer. + + Each watch expression is displayed in the speedbar. Complex data +types, such as arrays, structures and unions are represented in a tree +format. Leaves and simple data types show the name of the expression +and its value and, when the speedbar frame is selected, display the +type as a tooltip. Higher levels show the name, type and address +value for pointers and just the name and type otherwise. Root expressions +also display the frame address as a tooltip to help identify the frame +in which they were defined. + + To expand or contract a complex data type, click @kbd{Mouse-2} or +press @key{SPC} on the tag to the left of the expression. Emacs asks +for confirmation before expanding the expression if its number of +immediate children exceeds the value of the variable +@code{gdb-max-children}. + +@kindex D @r{(GDB speedbar)} +@findex gdb-var-delete + To delete a complex watch expression, move point to the root +expression in the speedbar and type @kbd{D} (@code{gdb-var-delete}). + +@kindex RET @r{(GDB speedbar)} +@findex gdb-edit-value + To edit a variable with a simple data type, or a simple element of a +complex data type, move point there in the speedbar and type @key{RET} +(@code{gdb-edit-value}). Or you can click @kbd{Mouse-2} on a value to +edit it. Either way, this reads the new value using the minibuffer. + +@vindex gdb-show-changed-values + If you set the variable @code{gdb-show-changed-values} to +non-@code{nil} (the default value), Emacs uses +@code{font-lock-warning-face} to highlight values that have recently +changed and @code{shadow} face to make variables which have gone out of +scope less noticeable. When a variable goes out of scope you can't +edit its value. + +@vindex gdb-use-colon-colon-notation + If the variable @code{gdb-use-colon-colon-notation} is +non-@code{nil}, Emacs uses the @samp{@var{function}::@var{variable}} +format. This allows the user to display watch expressions which share +the same variable name. The default value is @code{nil}. + +@vindex gdb-speedbar-auto-raise +To automatically raise the speedbar every time the display of watch +expressions updates, set @code{gdb-speedbar-auto-raise} to +non-@code{nil}. This can be useful if you are debugging with a full +screen Emacs frame. + +@node Executing Lisp +@section Executing Lisp Expressions + + Emacs has several different major modes for Lisp and Scheme. They are +the same in terms of editing commands, but differ in the commands for +executing Lisp expressions. Each mode has its own purpose. + +@table @asis +@item Emacs-Lisp mode +The mode for editing source files of programs to run in Emacs Lisp. +This mode defines @kbd{C-M-x} to evaluate the current defun. +@xref{Lisp Libraries}. +@item Lisp Interaction mode +The mode for an interactive session with Emacs Lisp. It defines +@kbd{C-j} to evaluate the sexp before point and insert its value in the +buffer. @xref{Lisp Interaction}. +@item Lisp mode +The mode for editing source files of programs that run in Lisps other +than Emacs Lisp. This mode defines @kbd{C-M-x} to send the current defun +to an inferior Lisp process. @xref{External Lisp}. +@item Inferior Lisp mode +The mode for an interactive session with an inferior Lisp process. +This mode combines the special features of Lisp mode and Shell mode +(@pxref{Shell Mode}). +@item Scheme mode +Like Lisp mode but for Scheme programs. +@item Inferior Scheme mode +The mode for an interactive session with an inferior Scheme process. +@end table + + Most editing commands for working with Lisp programs are in fact +available globally. @xref{Programs}. + +@node Lisp Libraries +@section Libraries of Lisp Code for Emacs +@cindex libraries +@cindex loading Lisp code + + Lisp code for Emacs editing commands is stored in files whose names +conventionally end in @file{.el}. This ending tells Emacs to edit them in +Emacs-Lisp mode (@pxref{Executing Lisp}). + +@cindex byte code + Emacs Lisp code can be compiled into byte-code, which loads faster, +takes up less space, and executes faster. @xref{Byte Compilation,, +Byte Compilation, elisp, the Emacs Lisp Reference Manual}. By +convention, the compiled code for a library goes in a separate file +whose name ends in @samp{.elc}. Thus, the compiled code for +@file{foo.el} goes in @file{foo.elc}. + +@findex load-file + To execute a file of Emacs Lisp code, use @kbd{M-x load-file}. This +command reads a file name using the minibuffer and then executes the +contents of that file as Lisp code. It is not necessary to visit the +file first; in any case, this command reads the file as found on disk, +not text in an Emacs buffer. + +@findex load +@findex load-library + Once a file of Lisp code is installed in the Emacs Lisp library +directories, users can load it using @kbd{M-x load-library}. Programs +can load it by calling @code{load}, a more primitive function that is +similar but accepts some additional arguments. + + @kbd{M-x load-library} differs from @kbd{M-x load-file} in that it +searches a sequence of directories and tries three file names in each +directory. Suppose your argument is @var{lib}; the three names are +@file{@var{lib}.elc}, @file{@var{lib}.el}, and lastly just +@file{@var{lib}}. If @file{@var{lib}.elc} exists, it is by convention +the result of compiling @file{@var{lib}.el}; it is better to load the +compiled file, since it will load and run faster. + + If @code{load-library} finds that @file{@var{lib}.el} is newer than +@file{@var{lib}.elc} file, it issues a warning, because it's likely +that somebody made changes to the @file{.el} file and forgot to +recompile it. Nonetheless, it loads @file{@var{lib}.elc}. This is +because people often leave unfinished edits the source file, and don't +recompile it until they think it is ready to use. + + Because the argument to @code{load-library} is usually not in itself +a valid file name, file name completion is not available. Indeed, when +using this command, you usually do not know exactly what file name +will be used. + +@vindex load-path + The sequence of directories searched by @kbd{M-x load-library} is +specified by the variable @code{load-path}, a list of strings that are +directory names. The default value of the list contains the directories where +the Lisp code for Emacs itself is stored. If you have libraries of +your own, put them in a single directory and add that directory +to @code{load-path}. @code{nil} in this list stands for the current default +directory, but it is probably not a good idea to put @code{nil} in the +list. If you find yourself wishing that @code{nil} were in the list, +most likely what you really want to do is use @kbd{M-x load-file} +this once. + +@cindex autoload + Often you do not have to give any command to load a library, because +the commands defined in the library are set up to @dfn{autoload} that +library. Trying to run any of those commands calls @code{load} to load +the library; this replaces the autoload definitions with the real ones +from the library. + +@vindex load-dangerous-libraries +@cindex Lisp files byte-compiled by XEmacs + By default, Emacs refuses to load compiled Lisp files which were +compiled with XEmacs, a modified versions of Emacs---they can cause +Emacs to crash. Set the variable @code{load-dangerous-libraries} to +@code{t} if you want to try loading them. + +@node Lisp Eval +@section Evaluating Emacs Lisp Expressions +@cindex Emacs-Lisp mode +@cindex mode, Emacs-Lisp + +@findex emacs-lisp-mode + Lisp programs intended to be run in Emacs should be edited in +Emacs-Lisp mode; this happens automatically for file names ending in +@file{.el}. By contrast, Lisp mode itself is used for editing Lisp +programs intended for other Lisp systems. To switch to Emacs-Lisp mode +explicitly, use the command @kbd{M-x emacs-lisp-mode}. + + For testing of Lisp programs to run in Emacs, it is often useful to +evaluate part of the program as it is found in the Emacs buffer. For +example, after changing the text of a Lisp function definition, +evaluating the definition installs the change for future calls to the +function. Evaluation of Lisp expressions is also useful in any kind of +editing, for invoking noninteractive functions (functions that are +not commands). + +@table @kbd +@item M-: +Read a single Lisp expression in the minibuffer, evaluate it, and print +the value in the echo area (@code{eval-expression}). +@item C-x C-e +Evaluate the Lisp expression before point, and print the value in the +echo area (@code{eval-last-sexp}). +@item C-M-x +Evaluate the defun containing or after point, and print the value in +the echo area (@code{eval-defun}). +@item M-x eval-region +Evaluate all the Lisp expressions in the region. +@item M-x eval-buffer +Evaluate all the Lisp expressions in the buffer. +@end table + +@ifinfo +@c This uses ``colon'' instead of a literal `:' because Info cannot +@c cope with a `:' in a menu +@kindex M-@key{colon} +@end ifinfo +@ifnotinfo +@kindex M-: +@end ifnotinfo +@findex eval-expression + @kbd{M-:} (@code{eval-expression}) is the most basic command for evaluating +a Lisp expression interactively. It reads the expression using the +minibuffer, so you can execute any expression on a buffer regardless of +what the buffer contains. When the expression is evaluated, the current +buffer is once again the buffer that was current when @kbd{M-:} was +typed. + +@kindex C-M-x @r{(Emacs-Lisp mode)} +@findex eval-defun + In Emacs-Lisp mode, the key @kbd{C-M-x} is bound to the command +@code{eval-defun}, which parses the defun containing or following point +as a Lisp expression and evaluates it. The value is printed in the echo +area. This command is convenient for installing in the Lisp environment +changes that you have just made in the text of a function definition. + + @kbd{C-M-x} treats @code{defvar} expressions specially. Normally, +evaluating a @code{defvar} expression does nothing if the variable it +defines already has a value. But @kbd{C-M-x} unconditionally resets the +variable to the initial value specified in the @code{defvar} expression. +@code{defcustom} expressions are treated similarly. +This special feature is convenient for debugging Lisp programs. +Typing @kbd{C-M-x} on a @code{defface} expression reinitializes +the face according to the @code{defface} specification. + +@kindex C-x C-e +@findex eval-last-sexp + The command @kbd{C-x C-e} (@code{eval-last-sexp}) evaluates the Lisp +expression preceding point in the buffer, and displays the value in the +echo area. It is available in all major modes, not just Emacs-Lisp +mode. It does not treat @code{defvar} specially. + + When the result of an evaluation is an integer, you can type +@kbd{C-x C-e} a second time to display the value of the integer result +in additional formats (octal, hexadecimal, and character). + + If @kbd{C-x C-e}, or @kbd{M-:} is given a numeric argument, it +inserts the value into the current buffer at point, rather than +displaying it in the echo area. The argument's value does not matter. +@kbd{C-M-x} with a numeric argument instruments the function +definition for Edebug (@pxref{Instrumenting, Instrumenting for Edebug,, elisp, the Emacs Lisp Reference Manual}). + +@findex eval-region +@findex eval-buffer + The most general command for evaluating Lisp expressions from a buffer +is @code{eval-region}. @kbd{M-x eval-region} parses the text of the +region as one or more Lisp expressions, evaluating them one by one. +@kbd{M-x eval-buffer} is similar but evaluates the entire +buffer. This is a reasonable way to install the contents of a file of +Lisp code that you are ready to test. Later, as you find bugs and +change individual functions, use @kbd{C-M-x} on each function that you +change. This keeps the Lisp world in step with the source file. + +@vindex eval-expression-print-level +@vindex eval-expression-print-length +@vindex eval-expression-debug-on-error + The two customizable variables @code{eval-expression-print-level} and +@code{eval-expression-print-length} control the maximum depth and length +of lists to print in the result of the evaluation commands before +abbreviating them. @code{eval-expression-debug-on-error} controls +whether evaluation errors invoke the debugger when these commands are +used; its default is @code{t}. + +@node Lisp Interaction +@section Lisp Interaction Buffers + + The buffer @samp{*scratch*} which is selected when Emacs starts up is +provided for evaluating Lisp expressions interactively inside Emacs. + + The simplest way to use the @samp{*scratch*} buffer is to insert Lisp +expressions and type @kbd{C-j} after each expression. This command +reads the Lisp expression before point, evaluates it, and inserts the +value in printed representation before point. The result is a complete +typescript of the expressions you have evaluated and their values. + + The @samp{*scratch*} buffer's major mode is Lisp Interaction mode, which +is the same as Emacs-Lisp mode except for the binding of @kbd{C-j}. + +@findex lisp-interaction-mode + The rationale for this feature is that Emacs must have a buffer when +it starts up, but that buffer is not useful for editing files since a +new buffer is made for every file that you visit. The Lisp interpreter +typescript is the most useful thing I can think of for the initial +buffer to do. Type @kbd{M-x lisp-interaction-mode} to put the current +buffer in Lisp Interaction mode. + +@findex ielm + An alternative way of evaluating Emacs Lisp expressions interactively +is to use Inferior Emacs-Lisp mode, which provides an interface rather +like Shell mode (@pxref{Shell Mode}) for evaluating Emacs Lisp +expressions. Type @kbd{M-x ielm} to create an @samp{*ielm*} buffer +which uses this mode. For more information see that command's +documentation. + +@node External Lisp +@section Running an External Lisp + + Emacs has facilities for running programs in other Lisp systems. You can +run a Lisp process as an inferior of Emacs, and pass expressions to it to +be evaluated. You can also pass changed function definitions directly from +the Emacs buffers in which you edit the Lisp programs to the inferior Lisp +process. + +@findex run-lisp +@vindex inferior-lisp-program +@kindex C-x C-z + To run an inferior Lisp process, type @kbd{M-x run-lisp}. This runs +the program named @code{lisp}, the same program you would run by typing +@code{lisp} as a shell command, with both input and output going through +an Emacs buffer named @samp{*lisp*}. That is to say, any ``terminal +output'' from Lisp will go into the buffer, advancing point, and any +``terminal input'' for Lisp comes from text in the buffer. (You can +change the name of the Lisp executable file by setting the variable +@code{inferior-lisp-program}.) + + To give input to Lisp, go to the end of the buffer and type the input, +terminated by @key{RET}. The @samp{*lisp*} buffer is in Inferior Lisp +mode, which combines the special characteristics of Lisp mode with most +of the features of Shell mode (@pxref{Shell Mode}). The definition of +@key{RET} to send a line to a subprocess is one of the features of Shell +mode. + +@findex lisp-mode + For the source files of programs to run in external Lisps, use Lisp +mode. You can switch to this mode with @kbd{M-x lisp-mode}, and it is +used automatically for files whose names end in @file{.l}, +@file{.lsp}, or @file{.lisp}. + +@kindex C-M-x @r{(Lisp mode)} +@findex lisp-eval-defun + When you edit a function in a Lisp program you are running, the easiest +way to send the changed definition to the inferior Lisp process is the key +@kbd{C-M-x}. In Lisp mode, this runs the function @code{lisp-eval-defun}, +which finds the defun around or following point and sends it as input to +the Lisp process. (Emacs can send input to any inferior process regardless +of what buffer is current.) + + Contrast the meanings of @kbd{C-M-x} in Lisp mode (for editing +programs to be run in another Lisp system) and Emacs-Lisp mode (for +editing Lisp programs to be run in Emacs; see @pxref{Lisp Eval}): in +both modes it has the effect of installing the function definition +that point is in, but the way of doing so is different according to +where the relevant Lisp environment is found. + + +@ignore + arch-tag: 9c3c2f71-b332-4144-8500-3ff9945a50ed +@end ignore diff --cc doc/emacs/display.texi index 21a65999ec3,00000000000..d4d2945d584 mode 100644,000000..100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@@ -1,1259 -1,0 +1,1259 @@@ +@c This is part of the Emacs manual. +@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, +@c 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See file emacs.texi for copying conditions. +@node Display, Search, Registers, Top +@chapter Controlling the Display + + Since only part of a large buffer fits in the window, Emacs tries to +show a part that is likely to be interesting. Display-control +commands allow you to specify which part of the text you want to see, +and how to display it. Many variables also affect the details of +redisplay. Unless otherwise stated, the variables described in this +chapter have their effect by customizing redisplay itself; therefore, +their values only make a difference at the time of redisplay. + +@menu +* Scrolling:: Commands to move text up and down in a window. +* Auto Scrolling:: Redisplay scrolls text automatically when needed. +* Horizontal Scrolling:: Moving text left and right in a window. +* Follow Mode:: Follow mode lets two windows scroll as one. +* Faces:: How to change the display style using faces. +* Standard Faces:: Emacs' predefined faces. +* Font Lock:: Minor mode for syntactic highlighting using faces. +* Highlight Interactively:: Tell Emacs what text to highlight. +* Fringes:: Enabling or disabling window fringes. +* Displaying Boundaries:: Displaying top and bottom of the buffer. +* Useless Whitespace:: Showing possibly-spurious trailing whitespace. +* Selective Display:: Hiding lines with lots of indentation. +* Optional Mode Line:: Optional mode line display features. +* Text Display:: How text characters are normally displayed. +* Cursor Display:: Features for displaying the cursor. +* Line Truncation:: Truncating lines to fit the screen width instead + of continuing them to multiple screen lines. +* Display Custom:: Information on variables for customizing display. +@end menu + +@node Scrolling +@section Scrolling + + If a buffer contains text that is too large to fit entirely within a +window that is displaying the buffer, Emacs shows a contiguous portion of +the text. The portion shown always contains point. + +@cindex scrolling + @dfn{Scrolling} means moving text up or down in the window so that +different parts of the text are visible. Scrolling ``forward'' or +``up'' means that text moves up, and new text appears at the bottom. +Scrolling ``backward'' or ``down'' moves text down, and new text +appears at the top. + + Scrolling happens automatically if you move point past the bottom or +top of the window. You can also scroll explicitly with the commands +in this section. + +@table @kbd +@item C-l +Clear screen and redisplay, scrolling the selected window to center +point vertically within it (@code{recenter}). +@item C-v +Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}). +@item @key{NEXT} +@itemx @key{PAGEDOWN} +Likewise, scroll forward. +@item M-v +Scroll backward (@code{scroll-down}). +@item @key{PRIOR} +@itemx @key{PAGEUP} +Likewise, scroll backward. +@item @var{arg} C-l +Scroll so point is on line @var{arg} (@code{recenter}). +@item C-M-l +Scroll heuristically to bring useful information onto the screen +(@code{reposition-window}). +@end table + +@kindex C-l +@findex recenter + The most basic scrolling command is @kbd{C-l} (@code{recenter}) with +no argument. It scrolls the selected window so that point is halfway +down from the top of the window. On a text terminal, it also clears +the screen and redisplays all windows. That is useful in case the +screen is garbled (@pxref{Screen Garbled}). + +@kindex C-v +@kindex M-v +@kindex NEXT +@kindex PRIOR +@kindex PAGEDOWN +@kindex PAGEUP +@findex scroll-up +@findex scroll-down + To read the buffer a windowful at a time, use @kbd{C-v} +(@code{scroll-up}) with no argument. This scrolls forward by nearly +the whole window height. The effect is to take the two lines at the +bottom of the window and put them at the top, followed by nearly a +whole windowful of lines that were not previously visible. If point +was in the text that scrolled off the top, it ends up at the new top +of the window. + +@vindex next-screen-context-lines + @kbd{M-v} (@code{scroll-down}) with no argument scrolls backward in +a similar way, also with overlap. The number of lines of overlap that +the @kbd{C-v} or @kbd{M-v} commands leave is controlled by the +variable @code{next-screen-context-lines}; by default, it is 2. The +function keys @key{NEXT} and @key{PRIOR}, or @key{PAGEDOWN} and +@key{PAGEUP}, are equivalent to @kbd{C-v} and @kbd{M-v}. + + The commands @kbd{C-v} and @kbd{M-v} with a numeric argument scroll +the text in the selected window up or down a few lines. @kbd{C-v} +with an argument moves the text and point up, together, that many +lines; it brings the same number of new lines into view at the bottom +of the window. @kbd{M-v} with numeric argument scrolls the text +downward, bringing that many new lines into view at the top of the +window. @kbd{C-v} with a negative argument is like @kbd{M-v} and vice +versa. + + The names of scroll commands are based on the direction that the +text moves in the window. Thus, the command to scroll forward is +called @code{scroll-up} because it moves the text upward on the +screen. The keys @key{PAGEDOWN} and @key{PAGEUP} derive their names +and customary meanings from a different convention that developed +elsewhere; hence the strange result that @key{PAGEDOWN} runs +@code{scroll-up}. + +@vindex scroll-preserve-screen-position + Some users like the full-screen scroll commands to keep point at the +same screen line. To enable this behavior, set the variable +@code{scroll-preserve-screen-position} to a non-@code{nil} value. In +this mode, when these commands would scroll the text around point off +the screen, or within @code{scroll-margin} lines of the edge, they +move point to keep the same vertical position within the window. +This mode is convenient for browsing through a file by scrolling by +screenfuls; if you come back to the screen where you started, point +goes back to the line where it started. However, this mode is +inconvenient when you move to the next screen in order to move point +to the text there. + + Another way to do scrolling is with @kbd{C-l} with a numeric argument. +@kbd{C-l} does not clear the screen when given an argument; it only scrolls +the selected window. With a positive argument @var{n}, it repositions text +to put point @var{n} lines down from the top. An argument of zero puts +point on the very top line. Point does not move with respect to the text; +rather, the text and point move rigidly on the screen. @kbd{C-l} with a +negative argument puts point that many lines from the bottom of the window. +For example, @kbd{C-u - 1 C-l} puts point on the bottom line, and @kbd{C-u +- 5 C-l} puts it five lines from the bottom. @kbd{C-u C-l} scrolls to put +point at the center (vertically) of the selected window. + +@kindex C-M-l +@findex reposition-window + The @kbd{C-M-l} command (@code{reposition-window}) scrolls the current +window heuristically in a way designed to get useful information onto +the screen. For example, in a Lisp file, this command tries to get the +entire current defun onto the screen if possible. + +@node Auto Scrolling +@section Automatic Scrolling + +@vindex scroll-conservatively + Redisplay scrolls the buffer automatically when point moves out of +the visible portion of the text. The purpose of automatic scrolling +is to make point visible, but you can customize many aspects of how +this is done. + + Normally, automatic scrolling centers point vertically within the +window. However, if you set @code{scroll-conservatively} to a small +number @var{n}, then if you move point just a little off the +screen---less than @var{n} lines---then Emacs scrolls the text just +far enough to bring point back on screen. By default, +@code{scroll-conservatively} is@tie{}0. + +@cindex aggressive scrolling +@vindex scroll-up-aggressively +@vindex scroll-down-aggressively + When the window does scroll by a longer distance, you can control +how aggressively it scrolls, by setting the variables +@code{scroll-up-aggressively} and @code{scroll-down-aggressively}. +The value of @code{scroll-up-aggressively} should be either +@code{nil}, or a fraction @var{f} between 0 and 1. A fraction +specifies where on the screen to put point when scrolling upward. +More precisely, when a window scrolls up because point is above the +window start, the new start position is chosen to put point @var{f} +part of the window height from the top. The larger @var{f}, the more +aggressive the scrolling. + + @code{nil}, which is the default, scrolls to put point at the center. +So it is equivalent to .5. + + Likewise, @code{scroll-down-aggressively} is used for scrolling +down. The value, @var{f}, specifies how far point should be placed +from the bottom of the window; thus, as with +@code{scroll-up-aggressively}, a larger value is more aggressive. + +@vindex scroll-margin + The variable @code{scroll-margin} restricts how close point can come +to the top or bottom of a window. Its value is a number of screen +lines; if point comes within that many lines of the top or bottom of the +window, Emacs recenters the window. By default, @code{scroll-margin} is +0. + +@node Horizontal Scrolling +@section Horizontal Scrolling +@cindex horizontal scrolling + + @dfn{Horizontal scrolling} means shifting all the lines sideways +within a window---so that some of the text near the left margin is not +displayed at all. When the text in a window is scrolled horizontally, +text lines are truncated rather than continued (@pxref{Line +Truncation}). Whenever a window shows truncated lines, Emacs +automatically updates its horizontal scrolling whenever point moves +off the left or right edge of the screen. You can also use these +commands to do explicit horizontal scrolling. + +@table @kbd +@item C-x < +Scroll text in current window to the left (@code{scroll-left}). +@item C-x > +Scroll to the right (@code{scroll-right}). +@end table + +@kindex C-x < +@kindex C-x > +@findex scroll-left +@findex scroll-right + The command @kbd{C-x <} (@code{scroll-left}) scrolls the selected +window to the left by @var{n} columns with argument @var{n}. This moves +part of the beginning of each line off the left edge of the window. +With no argument, it scrolls by almost the full width of the window (two +columns less, to be precise). + + @kbd{C-x >} (@code{scroll-right}) scrolls similarly to the right. The +window cannot be scrolled any farther to the right once it is displayed +normally (with each line starting at the window's left margin); +attempting to do so has no effect. This means that you don't have to +calculate the argument precisely for @w{@kbd{C-x >}}; any sufficiently large +argument will restore the normal display. + + If you use those commands to scroll a window horizontally, that sets +a lower bound for automatic horizontal scrolling. Automatic scrolling +will continue to scroll the window, but never farther to the right +than the amount you previously set by @code{scroll-left}. + +@vindex hscroll-margin + The value of the variable @code{hscroll-margin} controls how close +to the window's edges point is allowed to get before the window will +be automatically scrolled. It is measured in columns. If the value +is 5, then moving point within 5 columns of the edge causes horizontal +scrolling away from that edge. + +@vindex hscroll-step + The variable @code{hscroll-step} determines how many columns to +scroll the window when point gets too close to the edge. If it's +zero, horizontal scrolling centers point horizontally within the +window. If it's a positive integer, it specifies the number of +columns to scroll by. If it's a floating-point number, it specifies +the fraction of the window's width to scroll by. The default is zero. + +@vindex auto-hscroll-mode + To disable automatic horizontal scrolling, set the variable +@code{auto-hscroll-mode} to @code{nil}. + +@node Follow Mode +@section Follow Mode +@cindex Follow mode +@cindex mode, Follow +@findex follow-mode +@cindex windows, synchronizing +@cindex synchronizing windows + + @dfn{Follow mode} is a minor mode that makes two windows, both +showing the same buffer, scroll as a single tall ``virtual window.'' +To use Follow mode, go to a frame with just one window, split it into +two side-by-side windows using @kbd{C-x 3}, and then type @kbd{M-x +follow-mode}. From then on, you can edit the buffer in either of the +two windows, or scroll either one; the other window follows it. + + In Follow mode, if you move point outside the portion visible in one +window and into the portion visible in the other window, that selects +the other window---again, treating the two as if they were parts of +one large window. + + To turn off Follow mode, type @kbd{M-x follow-mode} a second time. + +@node Faces - @section Using Multiple Typefaces ++@section Faces: Controlling Text Display Style +@cindex faces + + You can specify various styles for displaying text using +@dfn{faces}. Each face can specify various @dfn{face attributes}, +such as the font family, the height, weight and slant of the +characters, the foreground and background color, and underlining or +overlining. A face does not have to specify all of these attributes; +often it inherits most of them from another face. + + On graphical display, all the Emacs face attributes are meaningful. +On a text-only terminal, only some of them work. Some text-only +terminals support inverse video, bold, and underline attributes; some +support colors. Text-only terminals generally do not support changing +the height and width or the font family. + - Emacs uses faces automatically for highlighting, through the work of - Font Lock mode. @xref{Font Lock}, for more information about Font - Lock mode and syntactic highlighting. You can print out the buffer - with the highlighting that appears on your screen using the command - @code{ps-print-buffer-with-faces}. @xref{PostScript}. ++ Most major modes assign faces to the text automatically through the ++work of Font Lock mode. @xref{Font Lock}, for more information about ++Font Lock mode and syntactic highlighting. You can print the current ++buffer with the highlighting that appears on your screen using the ++command @code{ps-print-buffer-with-faces}. @xref{PostScript}. + + You control the appearance of a part of the text in the buffer by +specifying the face or faces to use for it. The style of display used +for any given character is determined by combining the attributes of +all the applicable faces specified for that character. Any attribute +that isn't specified by these faces is taken from the @code{default} face, +whose attributes reflect the default settings of the frame itself. + + Enriched mode, the mode for editing formatted text, includes several +commands and menus for specifying faces for text in the buffer. +@xref{Format Faces}, for how to specify the font for text in the +buffer. @xref{Format Colors}, for how to specify the foreground and +background color. + +@cindex face colors, setting +@findex set-face-foreground +@findex set-face-background + To alter the appearance of a face, use the customization buffer. +@xref{Face Customization}. You can also use X resources to specify +attributes of particular faces (@pxref{Resources}). Alternatively, +you can change the foreground and background colors of a specific face +with @kbd{M-x set-face-foreground} and @kbd{M-x set-face-background}. +These commands prompt in the minibuffer for a face name and a color +name, with completion, and then set that face to use the specified +color. Changing the colors of the @code{default} face also changes +the foreground and background colors on all frames, both existing and +those to be created in the future. (You can also set foreground and +background colors for the current frame only; see @ref{Frame +Parameters}.) + + If you want to alter the appearance of all Emacs frames, you need to +customize the frame parameters in the variable +@code{default-frame-alist}; see @ref{Creating Frames, +default-frame-alist}. + + Emacs can correctly display variable-width fonts, but Emacs commands +that calculate width and indentation do not know how to calculate +variable widths. This can sometimes lead to incorrect results when +you use variable-width fonts. In particular, indentation commands can +give inconsistent results, so we recommend you avoid variable-width +fonts for editing program source code. Filling will sometimes make +lines too long or too short. We plan to address these issues in +future Emacs versions. + +@node Standard Faces +@section Standard Faces + +@findex list-faces-display + To see what faces are currently defined, and what they look like, +type @kbd{M-x list-faces-display}. It's possible for a given face to +look different in different frames; this command shows the appearance +in the frame in which you type it. With a prefix argument, this +prompts for a regular expression, and displays only faces with names +matching that regular expression. + + Here are the standard faces for specifying text appearance. You can +apply them to specific text when you want the effects they produce. + +@table @code +@item default +This face is used for ordinary text that doesn't specify any face. +@item bold +This face uses a bold variant of the default font, if it has one. +It's up to you to choose a default font that has a bold variant, +if you want to use one. +@item italic +This face uses an italic variant of the default font, if it has one. +@item bold-italic +This face uses a bold italic variant of the default font, if it has one. +@item underline +This face underlines text. +@item fixed-pitch +This face forces use of a particular fixed-width font. +@item variable-pitch +This face forces use of a particular variable-width font. It's +reasonable to customize this face to use a different variable-width font, +if you like, but you should not make it a fixed-width font. +@item shadow +This face is used for making the text less noticeable than the surrounding +ordinary text. Usually this can be achieved by using shades of gray in +contrast with either black or white default foreground color. +@end table + + Here's an incomplete list of faces used to highlight parts of the +text temporarily for specific purposes. (Many other modes define +their own faces for this purpose.) + +@table @code +@item highlight +This face is used for highlighting portions of text, in various modes. +For example, mouse-sensitive text is highlighted using this face. +@item isearch +This face is used for highlighting the current Isearch match. +@item query-replace +This face is used for highlighting the current Query Replace match. +@item lazy-highlight +This face is used for lazy highlighting of Isearch and Query Replace +matches other than the current one. +@item region +This face is used for displaying a selected region (when Transient Mark +mode is enabled---see below). +@item secondary-selection +This face is used for displaying a secondary X selection (@pxref{Secondary +Selection}). +@item trailing-whitespace +The face for highlighting excess spaces and tabs at the end of a line +when @code{show-trailing-whitespace} is non-@code{nil}; see +@ref{Useless Whitespace}. +@item nobreak-space +The face for displaying the character ``nobreak space.'' +@item escape-glyph +The face for highlighting the @samp{\} or @samp{^} that indicates +a control character. It's also used when @samp{\} indicates a +nobreak space or nobreak (soft) hyphen. +@end table + +@cindex @code{region} face + When Transient Mark mode is enabled, the text of the region is +highlighted when the mark is active. This uses the face named +@code{region}; you can control the style of highlighting by changing the +style of this face (@pxref{Face Customization}). @xref{Transient Mark}, +for more information about Transient Mark mode and activation and +deactivation of the mark. + + These faces control the appearance of parts of the Emacs frame. +They exist as faces to provide a consistent way to customize the +appearance of these parts of the frame. + +@table @code +@item mode-line +@itemx modeline +This face is used for the mode line of the currently selected window, +and for menu bars when toolkit menus are not used. By default, it's +drawn with shadows for a ``raised'' effect on graphical displays, and +drawn as the inverse of the default face on non-windowed terminals. +@code{modeline} is an alias for the @code{mode-line} face, for +compatibility with old Emacs versions. +@item mode-line-inactive +Like @code{mode-line}, but used for mode lines of the windows other +than the selected one (if @code{mode-line-in-non-selected-windows} is +non-@code{nil}). This face inherits from @code{mode-line}, so changes +in that face affect mode lines in all windows. +@item mode-line-highlight +Like @code{highlight}, but used for portions of text on mode lines. +@item mode-line-buffer-id +This face is used for buffer identification parts in the mode line. +@item header-line +Similar to @code{mode-line} for a window's header line, which appears +at the top of a window just as the mode line appears at the bottom. +Most windows do not have a header line---only some special modes, such +Info mode, create one. +@item vertical-border +This face is used for the vertical divider between windows. +By default this face inherits from the @code{mode-line-inactive} face +on character terminals. On graphical displays the foreground color of +this face is used for the vertical line between windows without +scrollbars. +@item minibuffer-prompt +@cindex @code{minibuffer-prompt} face +@vindex minibuffer-prompt-properties +This face is used for the prompt strings displayed in the minibuffer. +By default, Emacs automatically adds this face to the value of +@code{minibuffer-prompt-properties}, which is a list of text +properties used to display the prompt text. (This variable takes +effect when you enter the minibuffer.) +@item fringe +@cindex @code{fringe} face +The face for the fringes to the left and right of windows on graphic +displays. (The fringes are the narrow portions of the Emacs frame +between the text area and the window's right and left borders.) +@xref{Fringes}. +@item scroll-bar +This face determines the visual appearance of the scroll bar. +@xref{Scroll Bars}. +@item border +This face determines the color of the frame border. +@item cursor +This face determines the color of the cursor. +@item mouse +This face determines the color of the mouse pointer. +@item tool-bar +This face determines the color of tool bar icons. @xref{Tool Bars}. +@item tooltip +This face is used for tooltips. @xref{Tooltips}. +@item menu +@cindex menu bar appearance +@cindex @code{menu} face, no effect if customized +@cindex customization of @code{menu} face +This face determines the colors and font of Emacs's menus. @xref{Menu +Bars}. Setting the font of LessTif/Motif menus is currently not +supported; attempts to set the font are ignored in this case. +Likewise, attempts to customize this face in Emacs built with GTK and +in the MS-Windows/Mac ports are ignored by the respective GUI toolkits; +you need to use system-wide styles and options to change the +appearance of the menus. +@end table + +@node Font Lock +@section Font Lock mode +@cindex Font Lock mode +@cindex mode, Font Lock +@cindex syntax highlighting and coloring + + Font Lock mode is a minor mode, always local to a particular buffer, +which highlights (or ``fontifies'') the buffer contents according to +the syntax of the text you are editing. It can recognize comments and +strings in most languages; in several languages, it can also recognize +and properly highlight various other important constructs---for +example, names of functions being defined or reserved keywords. +Some special modes, such as Occur mode and Info mode, have completely +specialized ways of assigning fonts for Font Lock mode. + +@findex font-lock-mode + Font Lock mode is turned on by default in all modes which support it. +You can toggle font-lock for each buffer with the command @kbd{M-x +font-lock-mode}. Using a positive argument unconditionally turns Font +Lock mode on, and a negative or zero argument turns it off. + +@findex global-font-lock-mode +@vindex global-font-lock-mode + If you do not wish Font Lock mode to be turned on by default, +customize the variable @code{global-font-lock-mode} using the Customize +interface (@pxref{Easy Customization}), or use the function +@code{global-font-lock-mode} in your @file{.emacs} file, like this: + +@example +(global-font-lock-mode 0) +@end example + +@noindent +This variable, like all the variables that control Font Lock mode, +take effect whenever fontification is done; that is, potentially at +any time. + +@findex turn-on-font-lock + If you have disabled Global Font Lock mode, you can still enable Font +Lock for specific major modes by adding the function +@code{turn-on-font-lock} to the mode hooks (@pxref{Hooks}). For +example, to enable Font Lock mode for editing C files, you can do this: + +@example +(add-hook 'c-mode-hook 'turn-on-font-lock) +@end example + + Font Lock mode uses several specifically named faces to do its job, +including @code{font-lock-string-face}, @code{font-lock-comment-face}, +and others. The easiest way to find them all is to use @kbd{M-x +customize-group @key{RET} font-lock-faces @key{RET}}. You can then +use that customization buffer to customize the appearance of these +faces. @xref{Face Customization}. + + You can also customize these faces using @kbd{M-x +set-face-foreground} or @kbd{M-x set-face-background}. @xref{Faces}. + +@vindex font-lock-maximum-decoration + The variable @code{font-lock-maximum-decoration} specifies the +preferred level of fontification, for modes that provide multiple +levels. Level 1 is the least amount of fontification; some modes +support levels as high as 3. The normal default is ``as high as +possible.'' You can specify an integer, which applies to all modes, or +you can specify different numbers for particular major modes; for +example, to use level 1 for C/C++ modes, and the default level +otherwise, use this: + +@example +(setq font-lock-maximum-decoration + '((c-mode . 1) (c++-mode . 1))) +@end example + +@vindex font-lock-maximum-size + Fontification can be too slow for large buffers, so you can suppress +it for buffers above a certain size. The variable +@code{font-lock-maximum-size} specifies a buffer size, beyond which +buffer fontification is suppressed. + +@c @w is used below to prevent a bad page-break. +@vindex font-lock-beginning-of-syntax-function +@cindex incorrect fontification +@cindex parenthesis in column zero and fontification +@cindex brace in column zero and fontification + Comment and string fontification (or ``syntactic'' fontification) +relies on analysis of the syntactic structure of the buffer text. For +the sake of speed, some modes, including Lisp mode, rely on a special +convention: an open-parenthesis or open-brace in the leftmost column +always defines the @w{beginning} of a defun, and is thus always +outside any string or comment. (@xref{Left Margin Paren}.) If you +don't follow this convention, Font Lock mode can misfontify the text +that follows an open-parenthesis or open-brace in the leftmost column +that is inside a string or comment. + +@cindex slow display during scrolling + The variable @code{font-lock-beginning-of-syntax-function} (always +buffer-local) specifies how Font Lock mode can find a position +guaranteed to be outside any comment or string. In modes which use the +leftmost column parenthesis convention, the default value of the variable +is @code{beginning-of-defun}---that tells Font Lock mode to use the +convention. If you set this variable to @code{nil}, Font Lock no longer +relies on the convention. This avoids incorrect results, but the price +is that, in some cases, fontification for a changed text must rescan +buffer text from the beginning of the buffer. This can considerably +slow down redisplay while scrolling, particularly if you are close to +the end of a large buffer. + +@findex font-lock-add-keywords + Font Lock highlighting patterns already exist for many modes, but you +may want to fontify additional patterns. You can use the function +@code{font-lock-add-keywords}, to add your own highlighting patterns for +a particular mode. For example, to highlight @samp{FIXME:} words in C +comments, use this: + +@example +(font-lock-add-keywords + 'c-mode + '(("\\<\\(FIXME\\):" 1 font-lock-warning-face t))) +@end example + +@findex font-lock-remove-keywords + To remove keywords from the font-lock highlighting patterns, use the +function @code{font-lock-remove-keywords}. @xref{Search-based +Fontification,,, elisp, The Emacs Lisp Reference Manual}, for +documentation of the format of this list. + +@cindex just-in-time (JIT) font-lock +@cindex background syntax highlighting + Fontifying large buffers can take a long time. To avoid large +delays when a file is visited, Emacs fontifies only the visible +portion of a buffer. As you scroll through the buffer, each portion +that becomes visible is fontified as soon as it is displayed. The +parts of the buffer that are not displayed are fontified +``stealthily,'' in the background, i.e.@: when Emacs is idle. You can +control this background fontification, also called @dfn{Just-In-Time} +(or @dfn{JIT}) Lock, by customizing variables in the customization +group @samp{jit-lock}. @xref{Specific Customization}. + +@node Highlight Interactively +@section Interactive Highlighting +@cindex highlighting by matching +@cindex interactive highlighting +@cindex Highlight Changes mode + +@findex highlight-changes-mode + Use @kbd{M-x highlight-changes-mode} to enable (or disable) +Highlight Changes mode, a minor mode that uses faces (colors, +typically) to indicate which parts of the buffer were changed most +recently. + +@cindex Hi Lock mode +@findex hi-lock-mode + Hi Lock mode highlights text that matches regular expressions you +specify. For example, you might wish to see all the references to a +certain variable in a program source file, highlight certain parts in +a voluminous output of some program, or make certain names stand out +in an article. Use the @kbd{M-x hi-lock-mode} command to enable (or +disable) Hi Lock mode. To enable Hi Lock mode for all buffers, use +@kbd{M-x global-hi-lock-mode} or place @code{(global-hi-lock-mode 1)} +in your @file{.emacs} file. + + Hi Lock mode works like Font Lock mode (@pxref{Font Lock}), except +that you specify explicitly the regular expressions to highlight. You +control them with these commands: + +@table @kbd +@item C-x w h @var{regexp} @key{RET} @var{face} @key{RET} +@kindex C-x w h +@findex highlight-regexp +Highlight text that matches @var{regexp} using face @var{face} +(@code{highlight-regexp}). The highlighting will remain as long as +the buffer is loaded. For example, to highlight all occurrences of +the word ``whim'' using the default face (a yellow background) +@kbd{C-x w h whim @key{RET} @key{RET}}. Any face can be used for +highlighting, Hi Lock provides several of its own and these are +pre-loaded into a history list. While being prompted for a face use +@kbd{M-p} and @kbd{M-n} to cycle through them. + +You can use this command multiple times, specifying various regular +expressions to highlight in different ways. + +@item C-x w r @var{regexp} @key{RET} +@kindex C-x w r +@findex unhighlight-regexp +Unhighlight @var{regexp} (@code{unhighlight-regexp}). + +If you invoke this from the menu, you select the expression to +unhighlight from a list. If you invoke this from the keyboard, you +use the minibuffer. It will show the most recently added regular +expression; use @kbd{M-p} to show the next older expression and +@kbd{M-n} to select the next newer expression. (You can also type the +expression by hand, with completion.) When the expression you want to +unhighlight appears in the minibuffer, press @kbd{@key{RET}} to exit +the minibuffer and unhighlight it. + +@item C-x w l @var{regexp} @key{RET} @var{face} @key{RET} +@kindex C-x w l +@findex highlight-lines-matching-regexp +@cindex lines, highlighting +@cindex highlighting lines of text +Highlight entire lines containing a match for @var{regexp}, using face +@var{face} (@code{highlight-lines-matching-regexp}). + +@item C-x w b +@kindex C-x w b +@findex hi-lock-write-interactive-patterns +Insert all the current highlighting regexp/face pairs into the buffer +at point, with comment delimiters to prevent them from changing your +program. (This key binding runs the +@code{hi-lock-write-interactive-patterns} command.) + +These patterns are extracted from the comments, if appropriate, if you +invoke @kbd{M-x hi-lock-find-patterns}, or if you visit the file while +Hi Lock mode is enabled (since that runs @code{hi-lock-find-patterns}). + +@item C-x w i +@kindex C-x w i +@findex hi-lock-find-patterns +Extract regexp/face pairs from comments in the current buffer +(@code{hi-lock-find-patterns}). Thus, you can enter patterns +interactively with @code{highlight-regexp}, store them into the file +with @code{hi-lock-write-interactive-patterns}, edit them (perhaps +including different faces for different parenthesized parts of the +match), and finally use this command (@code{hi-lock-find-patterns}) to +have Hi Lock highlight the edited patterns. + +@vindex hi-lock-file-patterns-policy +The variable @code{hi-lock-file-patterns-policy} controls whether Hi +Lock mode should automatically extract and highlight patterns found in +a file when it is visited. Its value can be @code{nil} (never +highlight), @code{t} (highlight the patterns), @code{ask} (query the +user), or a function. If it is a function, +@code{hi-lock-find-patterns} calls it with the patterns as argument; +if the function returns non-@code{nil}, the patterns are used. The +default is @code{nil}. Note that patterns are always highlighted if +you call @code{hi-lock-find-patterns} directly, regardless of the +value of this variable. + +@vindex hi-lock-exclude-modes +Also, @code{hi-lock-find-patterns} does nothing if the current major +mode's symbol is a member of the list @code{hi-lock-exclude-modes}. +@end table + +@node Fringes +@section Window Fringes +@cindex fringes + + On a graphical display, each Emacs window normally has narrow +@dfn{fringes} on the left and right edges. The fringes display +indications about the text in the window. + + The most common use of the fringes is to indicate a continuation +line, when one line of text is split into multiple lines on the +screen. The left fringe shows a curving arrow for each screen line +except the first, indicating that ``this is not the real beginning.'' +The right fringe shows a curving arrow for each screen line except the +last, indicating that ``this is not the real end.'' + + The fringes indicate line truncation with short horizontal arrows +meaning ``there's more text on this line which is scrolled +horizontally out of view;'' clicking the mouse on one of the arrows +scrolls the display horizontally in the direction of the arrow. The +fringes can also indicate other things, such as empty lines, or where a +program you are debugging is executing (@pxref{Debuggers}). + +@findex set-fringe-style +@findex fringe-mode + You can enable and disable the fringes for all frames using +@kbd{M-x fringe-mode}. To enable and disable the fringes +for the selected frame, use @kbd{M-x set-fringe-style}. + +@node Displaying Boundaries +@section Displaying Boundaries + +@vindex indicate-buffer-boundaries + On a graphical display, Emacs can indicate the buffer boundaries in +the fringes. It indicates the first line and the last line with +angle images in the fringes. This can be combined with up and down +arrow images which say whether it is possible to scroll the window up +and down. + + The buffer-local variable @code{indicate-buffer-boundaries} controls +how the buffer boundaries and window scrolling is indicated in the +fringes. If the value is @code{left} or @code{right}, both angle and +arrow bitmaps are displayed in the left or right fringe, respectively. + + If value is an alist, each element @code{(@var{indicator} . +@var{position})} specifies the position of one of the indicators. +The @var{indicator} must be one of @code{top}, @code{bottom}, +@code{up}, @code{down}, or @code{t} which specifies the default +position for the indicators not present in the alist. +The @var{position} is one of @code{left}, @code{right}, or @code{nil} +which specifies not to show this indicator. + + For example, @code{((top . left) (t . right))} places the top angle +bitmap in left fringe, the bottom angle bitmap in right fringe, and +both arrow bitmaps in right fringe. To show just the angle bitmaps in +the left fringe, but no arrow bitmaps, use @code{((top . left) +(bottom . left))}. + +@vindex default-indicate-buffer-boundaries + The value of the variable @code{default-indicate-buffer-boundaries} +is the default value for @code{indicate-buffer-boundaries} in buffers +that do not override it. + +@node Useless Whitespace +@section Useless Whitespace + +@cindex trailing whitespace +@cindex whitespace, trailing +@vindex show-trailing-whitespace + It is easy to leave unnecessary spaces at the end of a line, or +empty lines at the end of a file, without realizing it. In most +cases, this @dfn{trailing whitespace} has no effect, but there are +special circumstances where it matters. It can also be a nuisance +that the line has ``changed,'' when the change is just spaces added or +removed at the end. + + You can make trailing whitespace at the end of a line visible on the +screen by setting the buffer-local variable +@code{show-trailing-whitespace} to @code{t}. Then Emacs displays +trailing whitespace in the face @code{trailing-whitespace}. + + This feature does not apply when point is at the end of the line +containing the whitespace. Strictly speaking, that is ``trailing +whitespace'' nonetheless, but displaying it specially in that case +looks ugly while you are typing in new text. In this special case, +the location of point is enough to show you that the spaces are +present. + +@findex delete-trailing-whitespace + To delete all trailing whitespace within the current buffer's +accessible portion (@pxref{Narrowing}), type @kbd{M-x +delete-trailing-whitespace @key{RET}}. (This command does not remove +the form-feed characters.) + +@vindex indicate-empty-lines +@vindex default-indicate-empty-lines +@cindex unused lines +@cindex fringes, and unused line indication + Emacs can indicate unused lines at the end of the window with a +small image in the left fringe (@pxref{Fringes}). The image appears +for window lines that do not correspond to any buffer text. Blank +lines at the end of the buffer then stand out because they do not have +this image in the fringe. + + To enable this feature, set the buffer-local variable +@code{indicate-empty-lines} to a non-@code{nil} value. The default +value of this variable is controlled by the variable +@code{default-indicate-empty-lines}; by setting that variable, you +can enable or disable this feature for all new buffers. (This feature +currently doesn't work on text-only terminals.) + +@node Selective Display +@section Selective Display +@cindex selective display +@findex set-selective-display +@kindex C-x $ + + Emacs has the ability to hide lines indented more than a certain number +of columns (you specify how many columns). You can use this to get an +overview of a part of a program. + + To hide lines in the current buffer, type @kbd{C-x $} +(@code{set-selective-display}) with a numeric argument @var{n}. Then +lines with at least @var{n} columns of indentation disappear from the +screen. The only indication of their presence is that three dots +(@samp{@dots{}}) appear at the end of each visible line that is +followed by one or more hidden ones. + + The commands @kbd{C-n} and @kbd{C-p} move across the hidden lines as +if they were not there. + + The hidden lines are still present in the buffer, and most editing +commands see them as usual, so you may find point in the middle of the +hidden text. When this happens, the cursor appears at the end of the +previous line, after the three dots. If point is at the end of the +visible line, before the newline that ends it, the cursor appears before +the three dots. + + To make all lines visible again, type @kbd{C-x $} with no argument. + +@vindex selective-display-ellipses + If you set the variable @code{selective-display-ellipses} to +@code{nil}, the three dots do not appear at the end of a line that +precedes hidden lines. Then there is no visible indication of the +hidden lines. This variable becomes local automatically when set. + + See also @ref{Outline Mode} for another way to hide part of +the text in a buffer. + +@node Optional Mode Line +@section Optional Mode Line Features + +@cindex buffer size display +@cindex display of buffer size +@findex size-indication-mode + The buffer percentage @var{pos} indicates the percentage of the +buffer above the top of the window. You can additionally display the +size of the buffer by typing @kbd{M-x size-indication-mode} to turn on +Size Indication mode. The size will be displayed immediately +following the buffer percentage like this: + +@example +@var{POS} of @var{SIZE} +@end example + +@noindent +Here @var{SIZE} is the human readable representation of the number of +characters in the buffer, which means that @samp{k} for 10^3, @samp{M} +for 10^6, @samp{G} for 10^9, etc., are used to abbreviate. + +@cindex narrowing, and buffer size display + If you have narrowed the buffer (@pxref{Narrowing}), the size of the +accessible part of the buffer is shown. + +@cindex line number display +@cindex display of line number +@findex line-number-mode + The current line number of point appears in the mode line when Line +Number mode is enabled. Use the command @kbd{M-x line-number-mode} to +turn this mode on and off; normally it is on. The line number appears +after the buffer percentage @var{pos}, with the letter @samp{L} to +indicate what it is. + +@cindex Column Number mode +@cindex mode, Column Number +@findex column-number-mode + Similarly, you can display the current column number by turning on +Column number mode with @kbd{M-x column-number-mode}. The column +number is indicated by the letter @samp{C}. However, when both of +these modes are enabled, the line and column numbers are displayed in +parentheses, the line number first, rather than with @samp{L} and +@samp{C}. For example: @samp{(561,2)}. @xref{Minor Modes}, for more +information about minor modes and about how to use these commands. + +@cindex narrowing, and line number display + If you have narrowed the buffer (@pxref{Narrowing}), the displayed +line number is relative to the accessible portion of the buffer. +Thus, it isn't suitable as an argument to @code{goto-line}. (Use +@code{what-line} command to see the line number relative to the whole +file.) + +@vindex line-number-display-limit + If the buffer is very large (larger than the value of +@code{line-number-display-limit}), then the line number doesn't appear. +Emacs doesn't compute the line number when the buffer is large, because +that would be too slow. Set it to @code{nil} to remove the limit. + +@vindex line-number-display-limit-width + Line-number computation can also be slow if the lines in the buffer +are too long. For this reason, Emacs normally doesn't display line +numbers if the average width, in characters, of lines near point is +larger than the value of the variable +@code{line-number-display-limit-width}. The default value is 200 +characters. + +@findex display-time +@cindex time (on mode line) + Emacs can optionally display the time and system load in all mode +lines. To enable this feature, type @kbd{M-x display-time} or customize +the option @code{display-time-mode}. The information added to the mode +line usually appears after the buffer name, before the mode names and +their parentheses. It looks like this: + +@example +@var{hh}:@var{mm}pm @var{l.ll} +@end example + +@noindent +@vindex display-time-24hr-format +Here @var{hh} and @var{mm} are the hour and minute, followed always by +@samp{am} or @samp{pm}. @var{l.ll} is the average number of running +processes in the whole system recently. (Some fields may be missing if +your operating system cannot support them.) If you prefer time display +in 24-hour format, set the variable @code{display-time-24hr-format} +to @code{t}. + +@cindex mail (on mode line) +@vindex display-time-use-mail-icon +@vindex display-time-mail-face +@vindex display-time-mail-file +@vindex display-time-mail-directory + The word @samp{Mail} appears after the load level if there is mail +for you that you have not read yet. On a graphical display you can use +an icon instead of @samp{Mail} by customizing +@code{display-time-use-mail-icon}; this may save some space on the mode +line. You can customize @code{display-time-mail-face} to make the mail +indicator prominent. Use @code{display-time-mail-file} to specify +the mail file to check, or set @code{display-time-mail-directory} +to specify the directory to check for incoming mail (any nonempty regular +file in the directory is considered as ``newly arrived mail''). + +@cindex mode line, 3D appearance +@cindex attributes of mode line, changing +@cindex non-integral number of lines in a window + By default, the mode line is drawn on graphics displays with +3D-style highlighting, like that of a button when it is not being +pressed. If you don't like this effect, you can disable the 3D +highlighting of the mode line, by customizing the attributes of the +@code{mode-line} face. @xref{Face Customization}. + +@cindex non-selected windows, mode line appearance + By default, the mode line of nonselected windows is displayed in a +different face, called @code{mode-line-inactive}. Only the selected +window is displayed in the @code{mode-line} face. This helps show +which window is selected. When the minibuffer is selected, since +it has no mode line, the window from which you activated the minibuffer +has its mode line displayed using @code{mode-line}; as a result, +ordinary entry to the minibuffer does not change any mode lines. + +@vindex mode-line-in-non-selected-windows + You can disable use of @code{mode-line-inactive} by setting variable +@code{mode-line-in-non-selected-windows} to @code{nil}; then all mode +lines are displayed in the @code{mode-line} face. + +@vindex eol-mnemonic-unix +@vindex eol-mnemonic-dos +@vindex eol-mnemonic-mac +@vindex eol-mnemonic-undecided + You can customize the mode line display for each of the end-of-line +formats by setting each of the variables @code{eol-mnemonic-unix}, +@code{eol-mnemonic-dos}, @code{eol-mnemonic-mac}, and +@code{eol-mnemonic-undecided} to the strings you prefer. + +@node Text Display +@section How Text Is Displayed +@cindex characters (in text) + + @acronym{ASCII} printing characters (octal codes 040 through 0176) in Emacs +buffers are displayed with their graphics, as are non-ASCII multibyte +printing characters (octal codes above 0400). + + Some @acronym{ASCII} control characters are displayed in special ways. The +newline character (octal code 012) is displayed by starting a new line. +The tab character (octal code 011) is displayed by moving to the next +tab stop column (normally every 8 columns). + + Other @acronym{ASCII} control characters are normally displayed as a caret +(@samp{^}) followed by the non-control version of the character; thus, +control-A is displayed as @samp{^A}. The caret appears in face +@code{escape-glyph}. + + Non-@acronym{ASCII} characters 0200 through 0237 (octal) are +displayed with octal escape sequences; thus, character code 0230 +(octal) is displayed as @samp{\230}. The backslash appears in face +@code{escape-glyph}. + +@vindex ctl-arrow + If the variable @code{ctl-arrow} is @code{nil}, control characters in +the buffer are displayed with octal escape sequences, except for newline +and tab. Altering the value of @code{ctl-arrow} makes it local to the +current buffer; until that time, the default value is in effect. The +default is initially @code{t}. + + The display of character codes 0240 through 0377 (octal) may be +either as escape sequences or as graphics. They do not normally occur +in multibyte buffers, but if they do, they are displayed as Latin-1 +graphics. In unibyte mode, if you enable European display they are +displayed using their graphics (assuming your terminal supports them), +otherwise as escape sequences. @xref{Unibyte Mode}. + +@vindex nobreak-char-display +@cindex no-break space, display +@cindex no-break hyphen, display +@cindex soft hyphen, display + Some character sets define ``no-break'' versions of the space and +hyphen characters, which are used where a line should not be broken. +Emacs normally displays these characters with special faces +(respectively, @code{nobreak-space} and @code{escape-glyph}) to +distinguish them from ordinary spaces and hyphens. You can turn off +this feature by setting the variable @code{nobreak-char-display} to +@code{nil}. If you set the variable to any other value, that means to +prefix these characters with an escape character. + +@vindex tab-width +@vindex default-tab-width + Normally, a tab character in the buffer is displayed as whitespace which +extends to the next display tab stop position, and display tab stops come +at intervals equal to eight spaces. The number of spaces per tab is +controlled by the variable @code{tab-width}, which is made local by +changing it. Note that how the tab character +in the buffer is displayed has nothing to do with the definition of +@key{TAB} as a command. The variable @code{tab-width} must have an +integer value between 1 and 1000, inclusive. The variable +@code{default-tab-width} controls the default value of this variable +for buffers where you have not set it locally. + + You can customize the way any particular character code is displayed +by means of a display table. @xref{Display Tables,, Display Tables, +elisp, The Emacs Lisp Reference Manual}. + +@node Cursor Display +@section Displaying the Cursor + +@findex blink-cursor-mode +@vindex blink-cursor-alist +@cindex cursor, locating visually +@cindex cursor, blinking + You can customize the cursor's color, and whether it blinks, using +the @code{cursor} Custom group (@pxref{Easy Customization}). On +a graphical display, the command @kbd{M-x blink-cursor-mode} enables +or disables the blinking of the cursor. (On text terminals, the +terminal itself blinks the cursor, and Emacs has no control over it.) +You can control how the cursor appears when it blinks off by setting +the variable @code{blink-cursor-alist}. + +@vindex visible-cursor + Some text terminals offer two different cursors: the normal cursor +and the very visible cursor, where the latter may be e.g. bigger or +blinking. By default Emacs uses the very visible cursor, and switches +to it when you start or resume Emacs. If the variable +@code{visible-cursor} is @code{nil} when Emacs starts or resumes, it +doesn't switch, so it uses the normal cursor. + +@cindex cursor in non-selected windows +@vindex cursor-in-non-selected-windows + Normally, the cursor appears in non-selected windows in the ``off'' +state, with the same appearance as when the blinking cursor blinks +``off.'' For a box cursor, this is a hollow box; for a bar cursor, +this is a thinner bar. To turn off cursors in non-selected windows, +customize the variable @code{cursor-in-non-selected-windows} and assign +it a @code{nil} value. + +@vindex x-stretch-cursor +@cindex wide block cursor + On graphical displays, Emacs can optionally draw the block cursor +as wide as the character under the cursor---for example, if the cursor +is on a tab character, it would cover the full width occupied by that +tab character. To enable this feature, set the variable +@code{x-stretch-cursor} to a non-@code{nil} value. + +@findex hl-line-mode +@findex global-hl-line-mode +@cindex highlight current line + To make the cursor even more visible, you can use HL Line mode, a +minor mode that highlights the line containing point. Use @kbd{M-x +hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x +global-hl-line-mode} enables or disables the same mode globally. + +@node Line Truncation +@section Truncation of Lines + +@cindex truncation +@cindex line truncation, and fringes + As an alternative to continuation, Emacs can display long lines by +@dfn{truncation}. This means that all the characters that do not fit +in the width of the screen or window do not appear at all. On +graphical displays, a small straight arrow in the fringe indicates +truncation at either end of the line. On text-only terminals, @samp{$} +appears in the first column when there is text truncated to the left, +and in the last column when there is text truncated to the right. + +@vindex truncate-lines +@findex toggle-truncate-lines + Horizontal scrolling automatically causes line truncation +(@pxref{Horizontal Scrolling}). You can explicitly enable line +truncation for a particular buffer with the command @kbd{M-x +toggle-truncate-lines}. This works by locally changing the variable +@code{truncate-lines}. If that variable is non-@code{nil}, long lines +are truncated; if it is @code{nil}, they are continued onto multiple +screen lines. Setting the variable @code{truncate-lines} in any way +makes it local to the current buffer; until that time, the default +value is in effect. The default value is normally @code{nil}. + +@c @vindex truncate-partial-width-windows @c Idx entry is in Split Windows. + If the variable @code{truncate-partial-width-windows} is +non-@code{nil}, it forces truncation rather than continuation in any +window less than the full width of the screen or frame, regardless of +the value of @code{truncate-lines}. For information about side-by-side +windows, see @ref{Split Window}. See also @ref{Display,, Display, +elisp, The Emacs Lisp Reference Manual}. + +@vindex overflow-newline-into-fringe + If the variable @code{overflow-newline-into-fringe} is +non-@code{nil} on a graphical display, then Emacs does not continue or +truncate a line which is exactly as wide as the window. Instead, the +newline overflows into the right fringe, and the cursor appears in the +fringe when positioned on that newline. + +@node Display Custom +@section Customization of Display + + This section describes variables (@pxref{Variables}) that you can +change to customize how Emacs displays. Beginning users can skip +it. +@c the reason for that pxref is because an xref early in the +@c ``echo area'' section leads here. + +@vindex inverse-video + If the variable @code{inverse-video} is non-@code{nil}, Emacs attempts +to invert all the lines of the display from what they normally are. + +@vindex visible-bell + If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts +to make the whole screen blink when it would normally make an audible bell +sound. This variable has no effect if your terminal does not have a way +to make the screen blink. + +@vindex echo-keystrokes + The variable @code{echo-keystrokes} controls the echoing of multi-character +keys; its value is the number of seconds of pause required to cause echoing +to start, or zero, meaning don't echo at all. The value takes effect when +there is someting to echo. @xref{Echo Area}. + +@vindex baud-rate + The variable @anchor{baud-rate}@code{baud-rate} holds the output +speed of the terminal, as far as Emacs knows. Setting this variable +does not change the speed of actual data transmission, but the value +is used for calculations. On text-only terminals, it affects padding, +and decisions about whether to scroll part of the screen or redraw it +instead. It also affects the behavior of incremental search. + + On graphical displays, @code{baud-rate} is only used to determine +how frequently to look for pending input during display updating. A +higher value of @code{baud-rate} means that check for pending input +will be done less frequently. + +@cindex hourglass pointer display +@vindex hourglass-delay + On graphical display, Emacs can optionally display the mouse pointer +in a special shape to say that Emacs is busy. To turn this feature on +or off, customize the group @code{cursor}. You can also control the +amount of time Emacs must remain busy before the busy indicator is +displayed, by setting the variable @code{hourglass-delay}. + +@vindex overline-margin + On graphical display, this variables specifies the vertical position +of an overline above the text, including the height of the overline +itself (1 pixel). The default value is 2 pixels. + +@vindex x-underline-at-descent-line + On graphical display, Emacs normally draws an underline at the +baseline level of the font. If @code{x-underline-at-descent-line} is +non-@code{nil}, Emacs draws the underline at the same height as the +font's descent line. + +@findex tty-suppress-bold-inverse-default-colors + On some text-only terminals, bold face and inverse video together +result in text that is hard to read. Call the function +@code{tty-suppress-bold-inverse-default-colors} with a non-@code{nil} +argument to suppress the effect of bold-face in this case. + +@vindex no-redraw-on-reenter + On a text-only terminal, when you reenter Emacs after suspending, Emacs +normally clears the screen and redraws the entire display. On some +terminals with more than one page of memory, it is possible to arrange +the termcap entry so that the @samp{ti} and @samp{te} strings (output +to the terminal when Emacs is entered and exited, respectively) switch +between pages of memory so as to use one page for Emacs and another +page for other output. On such terminals, you might want to set the variable +@code{no-redraw-on-reenter} non-@code{nil}; this tells Emacs to +assume, when resumed, that the screen page it is using still contains +what Emacs last wrote there. + +@ignore + arch-tag: 2219f910-2ff0-4521-b059-1bd231a536c4 +@end ignore diff --cc doc/emacs/emacs.texi index d71ff67407b,00000000000..96cf365497d mode 100644,000000..100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@@ -1,1365 -1,0 +1,1365 @@@ +\input texinfo + +@setfilename ../../info/emacs +@settitle GNU Emacs Manual + +@c The edition number appears in several places in this file +@set EDITION Sixteenth +@set EMACSVER 23.0.50 + +@copying +This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},@* +updated for Emacs version @value{EMACSVER}. + +Copyright @copyright{} 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, +1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software +Foundation, Inc. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with the +Invariant Sections being ``The GNU Manifesto,'' ``Distribution'' and +``GNU GENERAL PUBLIC LICENSE,'' with the Front-Cover texts being ``A GNU +Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License.'' + +(a) The FSF's Back-Cover Text is: ``You are free to copy and modify +this GNU Manual. Buying copies from GNU Press supports the FSF in +developing GNU and promoting software freedom.'' +@end quotation +@end copying + +@dircategory Emacs +@direntry +* Emacs: (emacs). The extensible self-documenting text editor. +@end direntry + +@c in general, keep the following line commented out, unless doing a +@c copy of this manual that will be published. The manual should go +@c onto the distribution in the full, 8.5 x 11" size. +@c set smallbook + +@ifset smallbook +@smallbook +@end ifset + +@c per rms and peterb, use 10pt fonts for the main text, mostly to +@c save on paper cost. +@c Do this inside @tex for now, so current makeinfo does not complain. +@tex +@ifset smallbook +@fonttextsize 10 +@set EMACSVER 22 +\global\let\urlcolor=\Black % don't print links in grayscale +\global\let\linkcolor=\Black +@end ifset +\global\hbadness=6666 % don't worry about not-too-underfull boxes +@end tex + +@defcodeindex op +@synindex pg cp + +@iftex +@kbdinputstyle code + +@shorttitlepage GNU Emacs Manual +@end iftex + +@titlepage +@sp 6 +@center @titlefont{GNU Emacs Manual} +@sp 4 +@center @value{EDITION} Edition, Updated for Emacs Version @value{EMACSVER}. +@sp 5 +@center Richard Stallman +@page +@vskip 0pt plus 1filll +@insertcopying + +@sp 2 +Published by the Free Software Foundation @* +51 Franklin Street, Fifth Floor @* +Boston, MA 02110-1301 USA @* +ISBN 1-882114-86-8 + +@sp 2 +Cover art by Etienne Suvasa. + +@end titlepage + + +@summarycontents +@contents + + +@ifnottex +@node Top, Distrib, (dir), (dir) +@top The Emacs Editor + +Emacs is the extensible, customizable, self-documenting real-time +display editor. This Info file describes how to edit with Emacs and +some of how to customize it; it corresponds to GNU Emacs version +@value{EMACSVER}. + +@ifinfo +To learn more about the Info documentation system, type @kbd{h}, and +Emacs will take you to a programmed instruction sequence for the Info +commands. +@end ifinfo + +For information on extending Emacs, see @ref{Top, Emacs Lisp,, elisp, The +Emacs Lisp Reference Manual}. +@end ifnottex + +@ignore +These subcategories have been deleted for simplicity +and to avoid conflicts. +Completion +Backup Files +Auto-Saving: Protection Against Disasters +Snapshots +Text Mode +Outline Mode +@TeX{} Mode +Formatted Text +Shell Command History + +The ones for Dired and Rmail have had the items turned into :: items +to avoid conflicts. +Also Running Shell Commands from Emacs +and Sending Mail and Registers and Minibuffer. +@end ignore + +@menu +* Distrib:: How to get the latest Emacs distribution. +* Copying:: The GNU General Public License gives you permission + to redistribute GNU Emacs on certain terms; + it also explains that there is no warranty. +* GNU Free Documentation License:: The license for this documentation. +* Intro:: An introduction to Emacs concepts. - * Glossary:: The glossary. ++* Glossary:: Terms used in this manual. +* Antinews:: Information about Emacs version 21. +* Mac OS:: Using Emacs in the Mac. +* Microsoft Windows:: Using Emacs on Microsoft Windows and MS-DOS. +* Manifesto:: What's GNU? Gnu's Not Unix! +* Acknowledgments:: Major contributors to GNU Emacs. + +Indexes (each index contains a large menu) +* Key Index:: An item for each standard Emacs key sequence. +* Option Index:: An item for every command-line option. +* Command Index:: An item for each command name. +* Variable Index:: An item for each documented variable. +* Concept Index:: An item for each concept. + +Important General Concepts +* Screen:: How to interpret what you see on the screen. +* User Input:: Kinds of input events (characters, buttons, + function keys). +* Keys:: Key sequences: what you type to request one + editing action. +* Commands:: Named functions run by key sequences to do editing. +* Text Characters:: Character set for text (the contents of buffers + and strings). +* Entering Emacs:: Starting Emacs from the shell. +* Exiting:: Stopping or killing Emacs. +* Emacs Invocation:: Hairy startup options. + +Fundamental Editing Commands +* Basic:: The most basic editing commands. +* Minibuffer:: Entering arguments that are prompted for. +* M-x:: Invoking commands by their names. +* Help:: Commands for asking Emacs about its commands. + +Important Text-Changing Commands +* Mark:: The mark: how to delimit a ``region'' of text. +* Killing:: Killing (cutting) text. +* Yanking:: Recovering killed text. Moving text. (Pasting.) +* Accumulating Text:: Other ways of copying text. +* Rectangles:: Operating on the text inside a rectangle on the screen. +* Registers:: Saving a text string or a location in the buffer. +* Display:: Controlling what text is displayed. +* Search:: Finding or replacing occurrences of a string. +* Fixit:: Commands especially useful for fixing typos. +* Keyboard Macros:: A keyboard macro records a sequence of + keystrokes to be replayed with a single command. + +Major Structures of Emacs +* Files:: All about handling files. +* Buffers:: Multiple buffers; editing several files at once. +* Windows:: Viewing two pieces of text at once. +* Frames:: Running the same Emacs session in multiple X windows. +* International:: Using non-@acronym{ASCII} character sets (the MULE features). + +Advanced Features +* Major Modes:: Text mode vs. Lisp mode vs. C mode ... +* Indentation:: Editing the white space at the beginnings of lines. +* Text:: Commands and modes for editing English. +* Programs:: Commands and modes for editing programs. +* Building:: Compiling, running and debugging programs. +* Maintaining:: Features for maintaining large programs. +* Abbrevs:: How to define text abbreviations to reduce + the number of characters you must type. +@ifnottex +* Picture Mode:: Editing pictures made up of characters using + the quarter-plane screen model. +@end ifnottex +* Sending Mail:: Sending mail in Emacs. +* Rmail:: Reading mail in Emacs. +* Dired:: You can ``edit'' a directory to manage files in it. +* Calendar/Diary:: The calendar and diary facilities. +* Gnus:: How to read netnews with Emacs. +* Shell:: Executing shell commands from Emacs. +* Emacs Server:: Using Emacs as an editing server for @code{mail}, etc. +* Printing:: Printing hardcopies of buffers or regions. +* Sorting:: Sorting lines, paragraphs or pages within Emacs. +* Narrowing:: Restricting display and editing to a portion + of the buffer. +* Two-Column:: Splitting apart columns to edit them + in side-by-side windows. +* Editing Binary Files::Using Hexl mode to edit binary files. +* Saving Emacs Sessions:: Saving Emacs state from one session to the next. +* Recursive Edit:: A command can allow you to do editing + "within the command". This is called a + "recursive editing level". +* Emulation:: Emulating some other editors with Emacs. +* Hyperlinking:: Following links in buffers. +* Dissociated Press:: Dissociating text for fun. +* Amusements:: Various games and hacks. +* Customization:: Modifying the behavior of Emacs. +* X Resources:: X resources for customizing Emacs. + +Recovery from Problems +* Quitting:: Quitting and aborting. +* Lossage:: What to do if Emacs is hung or malfunctioning. +* Bugs:: How and when to report a bug. +* Contributing:: How to contribute improvements to Emacs. +* Service:: How to get help for your own Emacs needs. + +@c Do NOT modify the following 3 lines! They must have this form to +@c be correctly identified by `texinfo-multiple-files-update'. In +@c particular, the detailed menu header line MUST be identical to the +@c value of `texinfo-master-menu-header'. See texnfo-upd.el. + +@detailmenu + --- The Detailed Node Listing --- + --------------------------------- + +Here are some other nodes which are really inferiors of the ones +already listed, mentioned here so you can get to them in one step: + +The Organization of the Screen + +* Point:: The place in the text where editing commands operate. +* Echo Area:: Short messages appear at the bottom of the screen. +* Mode Line:: Interpreting the mode line. +* Menu Bar:: How to use the menu bar. + +Basic Editing Commands + +* Inserting Text:: Inserting text by simply typing it. +* Moving Point:: How to move the cursor to the place where you want to + change something. +* Erasing:: Deleting and killing text. +* Basic Undo:: Undoing recent changes in the text. +* Basic Files:: Visiting, creating, and saving files. +* Basic Help:: Asking what a character does. +* Blank Lines:: Commands to make or delete blank lines. +* Continuation Lines:: Lines too wide for the screen. +* Position Info:: What page, line, row, or column is point on? +* Arguments:: Numeric arguments for repeating a command. +* Repeating:: A short-cut for repeating the previous command. + +The Minibuffer + +* Minibuffer File:: Entering file names with the minibuffer. +* Minibuffer Edit:: How to edit in the minibuffer. +* Completion:: An abbreviation facility for minibuffer input. +* Minibuffer History:: Reusing recent minibuffer arguments. +* Repetition:: Re-executing commands that used the minibuffer. + +Completion + +* Example: Completion Example. Examples of using completion. +* Commands: Completion Commands. A list of completion commands. +* Strict Completion:: Different types of completion. +* Options: Completion Options. Options for completion. + +Help + +* Help Summary:: Brief list of all Help commands. +* Key Help:: Asking what a key does in Emacs. +* Name Help:: Asking about a command, variable or function name. +* Apropos:: Asking what pertains to a given topic. +* Help Mode:: Special features of Help mode and Help buffers. +* Library Keywords:: Finding Lisp libraries by keywords (topics). +* Language Help:: Help relating to international language support. +* Misc Help:: Other help commands. +* Help Files:: Commands to display pre-written help files. +* Help Echo:: Help on active text and tooltips (`balloon help') + +The Mark and the Region + +* Setting Mark:: Commands to set the mark. +* Transient Mark:: How to make Emacs highlight the region-- + when there is one. +* Momentary Mark:: Enabling Transient Mark mode momentarily. +* Using Region:: Summary of ways to operate on contents of the region. +* Marking Objects:: Commands to put region around textual units. +* Mark Ring:: Previous mark positions saved so you can go back there. +* Global Mark Ring:: Previous mark positions in various buffers. + +Killing and Moving Text + +* Deletion:: Commands for deleting small amounts of text and + blank areas. +* Killing by Lines:: How to kill entire lines of text at one time. +* Other Kill Commands:: Commands to kill large regions of text and + syntactic units such as words and sentences. +* CUA Bindings:: Using @kbd{C-x}, @kbd{C-c}, @kbd{C-v} for copy + and paste, with enhanced rectangle support. + +Yanking + +* Kill Ring:: Where killed text is stored. Basic yanking. +* Appending Kills:: Several kills in a row all yank together. +* Earlier Kills:: Yanking something killed some time ago. + +Registers + +* RegPos:: Saving positions in registers. +* RegText:: Saving text in registers. +* RegRect:: Saving rectangles in registers. +* RegConfig:: Saving window configurations in registers. +* RegNumbers:: Numbers in registers. +* RegFiles:: File names in registers. +* Bookmarks:: Bookmarks are like registers, but persistent. + +Controlling the Display + +* Scrolling:: Moving text up and down in a window. +* Auto Scrolling:: Redisplay scrolls text automatically when needed. +* Horizontal Scrolling:: Moving text left and right in a window. +* Follow Mode:: Follow mode lets two windows scroll as one. +* Faces:: How to change the display style using faces. +* Standard Faces:: Emacs' predefined faces. +* Font Lock:: Minor mode for syntactic highlighting using faces. +* Highlight Interactively:: Tell Emacs what text to highlight. +* Fringes:: Enabling or disabling window fringes. +* Displaying Boundaries:: Displaying top and bottom of the buffer. +* Useless Whitespace:: Showing possibly-spurious trailing whitespace. +* Selective Display:: Hiding lines with lots of indentation. +* Optional Mode Line:: Optional mode line display features. +* Text Display:: How text characters are normally displayed. +* Cursor Display:: Features for displaying the cursor. +* Line Truncation:: Truncating lines to fit the screen width instead + of continuing them to multiple screen lines. +* Display Custom:: Information on variables for customizing display. + +Searching and Replacement + +* Incremental Search:: Search happens as you type the string. +* Nonincremental Search:: Specify entire string and then search. +* Word Search:: Search for sequence of words. +* Regexp Search:: Search for match for a regexp. +* Regexps:: Syntax of regular expressions. +* Regexp Backslash:: Regular expression constructs starting with `\'. +* Regexp Example:: A complex regular expression explained. +* Search Case:: To ignore case while searching, or not. +* Replace:: Search, and replace some or all matches. +* Other Repeating Search:: Operating on all matches for some regexp. + +Incremental Search + +* Basic Isearch:: Basic incremental search commands. +* Repeat Isearch:: Searching for the same string again. +* Error in Isearch:: When your string is not found. +* Special Isearch:: Special input in incremental search. +* Non-ASCII Isearch:: How to search for non-ASCII characters. +* Isearch Yank:: Commands that grab text into the search string + or else edit the search string. +* Highlight Isearch:: Isearch highlights the other possible matches. +* Isearch Scroll:: Scrolling during an incremental search. +* Slow Isearch:: Incremental search features for slow terminals. + +Replacement Commands + +* Unconditional Replace:: Replacing all matches for a string. +* Regexp Replace:: Replacing all matches for a regexp. +* Replacement and Case:: How replacements preserve case of letters. +* Query Replace:: How to use querying. + +Commands for Fixing Typos + +* Undo:: Full details of Emacs undo commands. +* Kill Errors:: Commands to kill a batch of recently entered text. +* Transpose:: Exchanging two characters, words, lines, lists... +* Fixing Case:: Correcting case of last word entered. +* Spelling:: Apply spelling checker to a word or a whole buffer. + +Keyboard Macros + +* Basic Keyboard Macro:: Defining and running keyboard macros. +* Keyboard Macro Ring:: Where previous keyboard macros are saved. +* Keyboard Macro Counter:: Inserting incrementing numbers in macros. +* Keyboard Macro Query:: Making keyboard macros do different things each time. +* Save Keyboard Macro:: Giving keyboard macros names; saving them in files. +* Edit Keyboard Macro:: Editing keyboard macros. +* Keyboard Macro Step-Edit:: Interactively executing and editing a keyboard + macro. + +File Handling + +* File Names:: How to type and edit file-name arguments. +* Visiting:: Visiting a file prepares Emacs to edit the file. +* Saving:: Saving makes your changes permanent. +* Reverting:: Reverting cancels all the changes not saved. +* Autorevert:: Auto Reverting non-file buffers. +* Auto Save:: Auto Save periodically protects against loss of data. +* File Aliases:: Handling multiple names for one file. +* Version Control:: Version control systems (RCS, CVS and SCCS). +* Directories:: Creating, deleting, and listing file directories. +* Comparing Files:: Finding where two files differ. +* Diff Mode:: Editing diff output. +* Misc File Ops:: Other things you can do on files. +* Compressed Files:: Accessing compressed files. +* File Archives:: Operating on tar, zip, jar etc. archive files. +* Remote Files:: Accessing files on other sites. +* Quoted File Names:: Quoting special characters in file names. +* File Name Cache:: Completion against a list of files you often use. +* File Conveniences:: Convenience Features for Finding Files. +* Filesets:: Handling sets of files. + +Saving Files + +* Save Commands:: Commands for saving files. +* Backup:: How Emacs saves the old version of your file. +* Customize Save:: Customizing the saving of files. +* Interlocking:: How Emacs protects against simultaneous editing + of one file by two users. +* File Shadowing:: Copying files to "shadows" automatically. +* Time Stamps:: Emacs can update time stamps on saved files. + +Backup Files + +* One or Many: Numbered Backups. Whether to make one backup file or many. +* Names: Backup Names. How backup files are named. +* Deletion: Backup Deletion. Emacs deletes excess numbered backups. +* Copying: Backup Copying. Backups can be made by copying or renaming. + +Auto-Saving: Protection Against Disasters + +* Files: Auto Save Files. The file where auto-saved changes are + actually made until you save the file. +* Control: Auto Save Control. Controlling when and how often to auto-save. +* Recover:: Recovering text from auto-save files. + +Version Control + +* Introduction to VC:: How version control works in general. +* VC Mode Line:: How the mode line shows version control status. +* Basic VC Editing:: How to edit a file under version control. +* Old Versions:: Examining and comparing old versions. +* Secondary VC Commands:: The commands used a little less frequently. +* Branches:: Multiple lines of development. +* Remote Repositories:: Efficient access to remote CVS servers. +* Snapshots:: Sets of file versions treated as a unit. +* Miscellaneous VC:: Various other commands and features of VC. +* Customizing VC:: Variables that change VC's behavior. + +Using Multiple Buffers + +* Select Buffer:: Creating a new buffer or reselecting an old one. +* List Buffers:: Getting a list of buffers that exist. +* Misc Buffer:: Renaming; changing read-onliness; copying text. +* Kill Buffer:: Killing buffers you no longer need. +* Several Buffers:: How to go through the list of all buffers + and operate variously on several of them. +* Indirect Buffers:: An indirect buffer shares the text of another buffer. +* Buffer Convenience:: Convenience and customization features for + buffer handling. + +Multiple Windows + +* Basic Window:: Introduction to Emacs windows. +* Split Window:: New windows are made by splitting existing windows. +* Other Window:: Moving to another window or doing something to it. +* Pop Up Window:: Finding a file or buffer in another window. +* Force Same Window:: Forcing certain buffers to appear in the selected + window rather than in another window. +* Change Window:: Deleting windows and changing their sizes. +* Window Convenience:: Convenience functions for window handling. + +Frames and Graphical Displays + +* Cut and Paste:: Mouse commands for cut and paste. +* Mouse References:: Using the mouse to select an item from a list. +* Menu Mouse Clicks:: Mouse clicks that bring up menus. +* Mode Line Mouse:: Mouse clicks on the mode line. +* Creating Frames:: Creating additional Emacs frames with various contents. +* Frame Commands:: Iconifying, deleting, and switching frames. +* Speedbar:: How to make and use a speedbar frame. +* Multiple Displays:: How one Emacs job can talk to several displays. +* Special Buffer Frames:: You can make certain buffers have their own frames. +* Frame Parameters:: Changing the colors and other modes of frames. +* Scroll Bars:: How to enable and disable scroll bars; how to use them. +* Wheeled Mice:: Using mouse wheels for scrolling. +* Drag and Drop:: Using drag and drop to open files and insert text. +* Menu Bars:: Enabling and disabling the menu bar. +* Tool Bars:: Enabling and disabling the tool bar. +* Dialog Boxes:: Controlling use of dialog boxes. +* Tooltips:: Showing "tooltips", AKA "balloon help" for active text. +* Mouse Avoidance:: Moving the mouse pointer out of the way. +* Non-Window Terminals:: Multiple frames on terminals that show only one. +* Text-Only Mouse:: Using the mouse in text-only terminals. + +International Character Set Support + +* International Chars:: Basic concepts of multibyte characters. +* Enabling Multibyte:: Controlling whether to use multibyte characters. +* Language Environments:: Setting things up for the language you use. +* Input Methods:: Entering text characters not on your keyboard. +* Select Input Method:: Specifying your choice of input methods. +* Multibyte Conversion:: How single-byte characters convert to multibyte. +* Coding Systems:: Character set conversion when you read and + write files, and so on. +* Recognize Coding:: How Emacs figures out which conversion to use. +* Specify Coding:: Specifying a file's coding system explicitly. +* Output Coding:: Choosing coding systems for output. +* Text Coding:: Choosing conversion to use for file text. +* Communication Coding:: Coding systems for interprocess communication. +* File Name Coding:: Coding systems for file @emph{names}. +* Terminal Coding:: Specifying coding systems for converting + terminal input and output. +* Fontsets:: Fontsets are collections of fonts + that cover the whole spectrum of characters. +* Defining Fontsets:: Defining a new fontset. +* Undisplayable Characters::When characters don't display. +* Unibyte Mode:: You can pick one European character set + to use without multibyte characters. +* Charsets:: How Emacs groups its internal character codes. + +Major Modes + +* Choosing Modes:: How major modes are specified or chosen. + +Indentation + +* Indentation Commands:: Various commands and techniques for indentation. +* Tab Stops:: You can set arbitrary "tab stops" and then + indent to the next tab stop when you want to. +* Just Spaces:: You can request indentation using just spaces. + +Commands for Human Languages + +* Words:: Moving over and killing words. +* Sentences:: Moving over and killing sentences. +* Paragraphs:: Moving over paragraphs. +* Pages:: Moving over pages. +* Filling:: Filling or justifying text. +* Case:: Changing the case of text. +* Text Mode:: The major modes for editing text files. +* Outline Mode:: Editing outlines. +* TeX Mode:: Editing input to the formatter TeX. +* HTML Mode:: Editing HTML, SGML, and XML files. +* Nroff Mode:: Editing input to the formatter nroff. +* Formatted Text:: Editing formatted text directly in WYSIWYG fashion. +* Text Based Tables:: Editing text-based tables in WYSIWYG fashion. + +Filling Text + +* Auto Fill:: Auto Fill mode breaks long lines automatically. +* Refill:: Keeping paragraphs filled. +* Fill Commands:: Commands to refill paragraphs and center lines. +* Fill Prefix:: Filling paragraphs that are indented + or in a comment, etc. +* Adaptive Fill:: How Emacs can determine the fill prefix automatically. +* Longlines:: Editing text with very long lines. + +Outline Mode + +* Format: Outline Format. What the text of an outline looks like. +* Motion: Outline Motion. Special commands for moving through + outlines. +* Visibility: Outline Visibility. Commands to control what is visible. +* Views: Outline Views. Outlines and multiple views. +* Foldout:: Folding means zooming in on outlines. + +@TeX{} Mode + +* Editing: TeX Editing. Special commands for editing in TeX mode. +* LaTeX: LaTeX Editing. Additional commands for LaTeX input files. +* Printing: TeX Print. Commands for printing part of a file with TeX. +* Misc: TeX Misc. Customization of TeX mode, and related features. + +Editing Formatted Text + +* Requesting Formatted Text:: Entering and exiting Enriched mode. +* Hard and Soft Newlines:: There are two different kinds of newlines. +* Editing Format Info:: How to edit text properties. +* Faces: Format Faces. Bold, italic, underline, etc. +* Color: Format Colors. Changing the color of text. +* Indent: Format Indentation. Changing the left and right margins. +* Justification: Format Justification. + Centering, setting text flush with the + left or right margin, etc. +* Other: Format Properties. The "special" text properties submenu. +* Forcing Enriched Mode:: How to force use of Enriched mode. + +Editing Text-based Tables + +* Table Definition:: What is a text based table. +* Table Creation:: How to create a table. +* Table Recognition:: How to activate and deactivate tables. +* Cell Commands:: Cell-oriented commands in a table. +* Cell Justification:: Justifying cell contents. +* Row Commands:: Manipulating rows of table cell. +* Column Commands:: Manipulating columns of table cell. +* Fixed Width Mode:: Fixing cell width. +* Table Conversion:: Converting between plain text and tables. +* Measuring Tables:: Analyzing table dimension. +* Table Misc:: Table miscellany. + +Editing Programs + +* Program Modes:: Major modes for editing programs. +* Defuns:: Commands to operate on major top-level parts + of a program. +* Program Indent:: Adjusting indentation to show the nesting. +* Parentheses:: Commands that operate on parentheses. +* Comments:: Inserting, killing, and aligning comments. +* Documentation:: Getting documentation of functions you plan to call. +* Hideshow:: Displaying blocks selectively. +* Symbol Completion:: Completion on symbol names of your program or language. +* Glasses:: Making identifiersLikeThis more readable. +* Misc for Programs:: Other Emacs features useful for editing programs. +* C Modes:: Special commands of C, C++, Objective-C, + Java, and Pike modes. +* Asm Mode:: Asm mode and its special features. +* Fortran:: Fortran mode and its special features. + +Top-Level Definitions, or Defuns + +* Left Margin Paren:: An open-paren or similar opening delimiter + starts a defun if it is at the left margin. +* Moving by Defuns:: Commands to move over or mark a major definition. +* Imenu:: Making buffer indexes as menus. +* Which Function:: Which Function mode shows which function you are in. + +Indentation for Programs + +* Basic Indent:: Indenting a single line. +* Multi-line Indent:: Commands to reindent many lines at once. +* Lisp Indent:: Specifying how each Lisp function should be indented. +* C Indent:: Extra features for indenting C and related modes. +* Custom C Indent:: Controlling indentation style for C and related modes. + +Commands for Editing with Parentheses + +* Expressions:: Expressions with balanced parentheses. +* Moving by Parens:: Commands for moving up, down and across + in the structure of parentheses. +* Matching:: Insertion of a close-delimiter flashes matching open. + +Manipulating Comments + +* Comment Commands:: Inserting, killing, and aligning comments. +* Multi-Line Comments:: Commands for adding and editing multi-line comments. +* Options for Comments::Customizing the comment features. + +Documentation Lookup + +* Info Lookup:: Looking up library functions and commands + in Info files. +* Man Page:: Looking up man pages of library functions and commands. +* Lisp Doc:: Looking up Emacs Lisp functions, etc. + +C and Related Modes + +* Motion in C:: Commands to move by C statements, etc. +* Electric C:: Colon and other chars can automatically reindent. +* Hungry Delete:: A more powerful DEL command. +* Other C Commands:: Filling comments, viewing expansion of macros, + and other neat features. + +Compiling and Testing Programs + +* Compilation:: Compiling programs in languages other + than Lisp (C, Pascal, etc.). +* Compilation Mode:: The mode for visiting compiler errors. +* Compilation Shell:: Customizing your shell properly + for use in the compilation buffer. +* Grep Searching:: Searching with grep. +* Flymake:: Finding syntax errors on the fly. +* Debuggers:: Running symbolic debuggers for non-Lisp programs. +* Executing Lisp:: Various modes for editing Lisp programs, + with different facilities for running + the Lisp programs. +* Lisp Libraries:: Creating Lisp programs to run in Emacs. +* Lisp Eval:: Executing a single Lisp expression in Emacs. +* Lisp Interaction:: Executing Lisp in an Emacs buffer. +* External Lisp:: Communicating through Emacs with a separate Lisp. + +Running Debuggers Under Emacs + +* Starting GUD:: How to start a debugger subprocess. +* Debugger Operation:: Connection between the debugger and source buffers. +* Commands of GUD:: Key bindings for common commands. +* GUD Customization:: Defining your own commands for GUD. +* GDB Graphical Interface:: An enhanced mode that uses GDB features to + implement a graphical debugging environment through + Emacs. + +Maintaining Large Programs + +* Change Log:: Maintaining a change history for your program. +* Format of ChangeLog:: What the change log file looks like. +* Tags:: Go direct to any function in your program in one + command. Tags remembers which file it is in. +* Emerge:: A convenient way of merging two versions of a program. + +Tags Tables + +* Tag Syntax:: Tag syntax for various types of code and text files. +* Create Tags Table:: Creating a tags table with @code{etags}. +* Etags Regexps:: Create arbitrary tags using regular expressions. +* Select Tags Table:: How to visit a tags table. +* Find Tag:: Commands to find the definition of a specific tag. +* Tags Search:: Using a tags table for searching and replacing. +* List Tags:: Listing and finding tags defined in a file. + +Abbrevs + +* Abbrev Concepts:: Fundamentals of defined abbrevs. +* Defining Abbrevs:: Defining an abbrev, so it will expand when typed. +* Expanding Abbrevs:: Controlling expansion: prefixes, canceling expansion. +* Editing Abbrevs:: Viewing or editing the entire list of defined abbrevs. +* Saving Abbrevs:: Saving the entire list of abbrevs for another session. +* Dynamic Abbrevs:: Abbreviations for words already in the buffer. +* Dabbrev Customization:: What is a word, for dynamic abbrevs. Case handling. + +@ifnottex +Editing Pictures + +* Basic Picture:: Basic concepts and simple commands of Picture Mode. +* Insert in Picture:: Controlling direction of cursor motion + after "self-inserting" characters. +* Tabs in Picture:: Various features for tab stops and indentation. +* Rectangles in Picture:: Clearing and superimposing rectangles. +@end ifnottex + +Sending Mail + +* Mail Format:: Format of the mail being composed. +* Mail Headers:: Details of permitted mail header fields. +* Mail Aliases:: Abbreviating and grouping mail addresses. +* Mail Mode:: Special commands for editing mail being composed. +* Mail Amusements:: Distract the NSA's attention; add a fortune to a msg. +* Mail Methods:: Using alternative mail-composition methods. + +Reading Mail with Rmail + +* Rmail Basics:: Basic concepts of Rmail, and simple use. +* Rmail Scrolling:: Scrolling through a message. +* Rmail Motion:: Moving to another message. +* Rmail Deletion:: Deleting and expunging messages. +* Rmail Inbox:: How mail gets into the Rmail file. +* Rmail Files:: Using multiple Rmail files. +* Rmail Output:: Copying message out to files. +* Rmail Labels:: Classifying messages by labeling them. +* Rmail Attributes:: Certain standard labels, called attributes. +* Rmail Reply:: Sending replies to messages you are viewing. +* Rmail Summary:: Summaries show brief info on many messages. +* Rmail Sorting:: Sorting messages in Rmail. +* Rmail Display:: How Rmail displays a message; customization. +* Rmail Coding:: How Rmail handles decoding character sets. +* Rmail Editing:: Editing message text and headers in Rmail. +* Rmail Digest:: Extracting the messages from a digest message. +* Out of Rmail:: Converting an Rmail file to mailbox format. +* Rmail Rot13:: Reading messages encoded in the rot13 code. +* Movemail:: More details of fetching new mail. +* Remote Mailboxes:: Retrieving Mail from Remote Mailboxes. +* Other Mailbox Formats:: Retrieving Mail from Local Mailboxes in + Various Formats + +Dired, the Directory Editor + +* Dired Enter:: How to invoke Dired. +* Dired Navigation:: How to move in the Dired buffer. +* Dired Deletion:: Deleting files with Dired. +* Flagging Many Files:: Flagging files based on their names. +* Dired Visiting:: Other file operations through Dired. +* Marks vs Flags:: Flagging for deletion vs marking. +* Operating on Files:: How to copy, rename, print, compress, etc. + either one file or several files. +* Shell Commands in Dired:: Running a shell command on the marked files. +* Transforming File Names:: Using patterns to rename multiple files. +* Comparison in Dired:: Running `diff' by way of Dired. +* Subdirectories in Dired:: Adding subdirectories to the Dired buffer. +* Subdir Switches:: Subdirectory switches in Dired. +* Subdirectory Motion:: Moving across subdirectories, and up and down. +* Hiding Subdirectories:: Making subdirectories visible or invisible. +* Dired Updating:: Discarding lines for files of no interest. +* Dired and Find:: Using `find' to choose the files for Dired. +* Wdired:: Operating on files by editing the Dired buffer. +* Image-Dired:: Viewing image thumbnails in Dired +* Misc Dired Features:: Various other features. + +The Calendar and the Diary + +* Calendar Motion:: Moving through the calendar; selecting a date. +* Scroll Calendar:: Bringing earlier or later months onto the screen. +* Counting Days:: How many days are there between two dates? +* General Calendar:: Exiting or recomputing the calendar. +* Writing Calendar Files:: Writing calendars to files of various formats. +* Holidays:: Displaying dates of holidays. +* Sunrise/Sunset:: Displaying local times of sunrise and sunset. +* Lunar Phases:: Displaying phases of the moon. +* Other Calendars:: Converting dates to other calendar systems. +* Diary:: Displaying events from your diary. +* Appointments:: Reminders when it's time to do something. +* Importing Diary:: Converting diary events to/from other formats. +* Daylight Saving:: How to specify when daylight saving time is active. +* Time Intervals:: Keeping track of time intervals. +* Advanced Calendar/Diary Usage:: Advanced Calendar/Diary customization. + +Movement in the Calendar + +* Calendar Unit Motion:: Moving by days, weeks, months, and years. +* Move to Beginning or End:: Moving to start/end of weeks, months, and years. +* Specified Dates:: Moving to the current date or another + specific date. + +Conversion To and From Other Calendars + +* Calendar Systems:: The calendars Emacs understands + (aside from Gregorian). +* To Other Calendar:: Converting the selected date to various calendars. +* From Other Calendar:: Moving to a date specified in another calendar. +* Mayan Calendar:: Moving to a date specified in a Mayan calendar. + +The Diary + +* Displaying the Diary:: Viewing diary entries and associated calendar dates. +* Format of Diary File:: Entering events in your diary. +* Date Formats:: Various ways you can specify dates. +* Adding to Diary:: Commands to create diary entries. +* Special Diary Entries:: Anniversaries, blocks of dates, cyclic entries, etc. + +Gnus + +* Buffers of Gnus:: The group, summary, and article buffers. +* Gnus Startup:: What you should know about starting Gnus. +* Summary of Gnus:: A short description of the basic Gnus commands. + +Running Shell Commands from Emacs + +* Single Shell:: How to run one shell command and return. +* Interactive Shell:: Permanent shell taking input via Emacs. +* Shell Mode:: Special Emacs commands used with permanent shell. +* Shell Prompts:: Two ways to recognize shell prompts. +* Shell History:: Repeating previous commands in a shell buffer. +* Directory Tracking:: Keeping track when the subshell changes directory. +* Shell Options:: Options for customizing Shell mode. +* Terminal emulator:: An Emacs window as a terminal emulator. +* Term Mode:: Special Emacs commands used in Term mode. +* Paging in Term:: Paging in the terminal emulator. +* Remote Host:: Connecting to another computer. + +Using Emacs as a Server + +* Invoking emacsclient:: Emacs client startup options. + +Printing Hard Copies + +* PostScript:: Printing buffers or regions as PostScript. +* PostScript Variables:: Customizing the PostScript printing commands. +* Printing Package:: An optional advanced printing interface. + +Hyperlinking and Navigation Features + +* Browse-URL:: Following URLs. +* Goto-address:: Activating URLs. +* FFAP:: Finding files etc. at point. + +Customization + +* Minor Modes:: Each minor mode is one feature you can turn on + independently of any others. +* Easy Customization:: Convenient way to browse and change user options. +* Variables:: Many Emacs commands examine Emacs variables + to decide what to do; by setting variables, + you can control their functioning. +* Key Bindings:: The keymaps say what command each key runs. + By changing them, you can "redefine keys". +* Syntax:: The syntax table controls how words and + expressions are parsed. +* Init File:: How to write common customizations in the + @file{.emacs} file. + +Variables + +* Examining:: Examining or setting one variable's value. +* Hooks:: Hook variables let you specify programs for parts + of Emacs to run on particular occasions. +* Locals:: Per-buffer values of variables. +* File Variables:: How files can specify variable values. + +Customizing Key Bindings + +* Keymaps:: Generalities. The global keymap. +* Prefix Keymaps:: Keymaps for prefix keys. +* Local Keymaps:: Major and minor modes have their own keymaps. +* Minibuffer Maps:: The minibuffer uses its own local keymaps. +* Rebinding:: How to redefine one key's meaning conveniently. +* Init Rebinding:: Rebinding keys with your init file, @file{.emacs}. +* Function Keys:: Rebinding terminal function keys. +* Named ASCII Chars:: Distinguishing @key{TAB} from @kbd{C-i}, and so on. +* Mouse Buttons:: Rebinding mouse buttons in Emacs. +* Disabling:: Disabling a command means confirmation is required + before it can be executed. This is done to protect + beginners from surprises. + +The Init File, @file{~/.emacs} + +* Init Syntax:: Syntax of constants in Emacs Lisp. +* Init Examples:: How to do some things with an init file. +* Terminal Init:: Each terminal type can have an init file. +* Find Init:: How Emacs finds the init file. +* Init Non-ASCII:: Using non-@acronym{ASCII} characters in an init file. + +Dealing with Emacs Trouble + +* DEL Does Not Delete:: What to do if @key{DEL} doesn't delete. +* Stuck Recursive:: `[...]' in mode line around the parentheses. +* Screen Garbled:: Garbage on the screen. +* Text Garbled:: Garbage in the text. +* Memory Full:: How to cope when you run out of memory. +* After a Crash:: Recovering editing in an Emacs session that crashed. +* Emergency Escape:: Emergency escape--- + What to do if Emacs stops responding. +* Total Frustration:: When you are at your wits' end. + +Reporting Bugs + +* Bug Criteria:: Have you really found a bug? +* Understanding Bug Reporting:: How to report a bug effectively. +* Checklist:: Steps to follow for a good bug report. +* Sending Patches:: How to send a patch for GNU Emacs. + +Command Line Arguments for Emacs Invocation + +* Action Arguments:: Arguments to visit files, load libraries, + and call functions. +* Initial Options:: Arguments that take effect while starting Emacs. +* Command Example:: Examples of using command line arguments. +* Resume Arguments:: Specifying arguments when you resume a running Emacs. +* Environment:: Environment variables that Emacs uses. +* Display X:: Changing the default display and using remote login. +* Font X:: Choosing a font for text, under X. +* Colors:: Choosing display colors. +* Window Size X:: Start-up window size, under X. +* Borders X:: Internal and external borders, under X. +* Title X:: Specifying the initial frame's title. +* Icons X:: Choosing what sort of icon to use, under X. +* Misc X:: Other display options. + +Environment Variables + +* General Variables:: Environment variables that all versions of Emacs use. +* Misc Variables:: Certain system specific variables. +* MS-Windows Registry:: An alternative to the environment on MS-Windows. + +X Options and Resources + +* Resources:: Using X resources with Emacs (in general). +* Table of Resources:: Table of specific X resources that affect Emacs. +* Face Resources:: X resources for customizing faces. +* Lucid Resources:: X resources for Lucid menus. +* LessTif Resources:: X resources for LessTif and Motif menus. +* GTK resources:: Resources for GTK widgets. + +Emacs and Mac OS + +* Mac Input:: Keyboard and mouse input on Mac. +* Mac International:: International character sets on Mac. +* Mac Environment Variables:: Setting environment variables for Emacs. +* Mac Directories:: Volumes and directories on Mac. +* Mac Font Specs:: Specifying fonts on Mac. +* Mac Functions:: Mac-specific Lisp functions. + +Emacs and Microsoft Windows/MS-DOS + +* Text and Binary:: Text files use CRLF to terminate lines. +* Windows Files:: File-name conventions on Windows. +* ls in Lisp:: Emulation of @code{ls} for Dired. +* Windows HOME:: Where Emacs looks for your @file{.emacs}. +* Windows Keyboard:: Windows-specific keyboard features. +* Windows Mouse:: Windows-specific mouse features. +* Windows Processes:: Running subprocesses on Windows. +* Windows Printing:: How to specify the printer on MS-Windows. +* Windows Misc:: Miscellaneous Windows features. +* MS-DOS:: Using Emacs on MS-DOS (otherwise known as @dfn{MS-DOG}). +@end detailmenu +@end menu + +@iftex +@unnumbered Preface + + This manual documents the use and simple customization of the Emacs +editor. Simple Emacs customizations do not require you to be a +programmer, but if you are not interested in customizing, you can +ignore the customization hints. + + This is primarily a reference manual, but can also be used as a +primer. If you are new to Emacs, we recommend you start with +the on-line, learn-by-doing tutorial, before reading the manual. To +run the tutorial, start Emacs and type @kbd{C-h t}. The tutorial +describes commands, tells you when to try them, and explains the +results. + + On first reading, just skim chapters 1 and 2, which describe the +notational conventions of the manual and the general appearance of the +Emacs display screen. Note which questions are answered in these +chapters, so you can refer back later. After reading chapter 4, you +should practice the commands shown there. The next few chapters +describe fundamental techniques and concepts that are used constantly. +You need to understand them thoroughly, so experiment with them +until you are fluent. + + Chapters 14 through 19 describe intermediate-level features that are +useful for many kinds of editing. Chapter 20 and following chapters +describe optional but useful features; read those chapters when you +need them. + + Read the Trouble chapter if Emacs does not seem to be working +properly. It explains how to cope with several common problems +(@pxref{Lossage}), as well as when and how to report Emacs bugs +(@pxref{Bugs}). + + To find the documentation of a particular command, look in the index. +Keys (character commands) and command names have separate indexes. +There is also a glossary, with a cross reference for each term. + + This manual is available as a printed book and also as an Info file. +The Info file is for on-line perusal with the Info program, which is +the principal means of accessing on-line documentation in the GNU +system. Both the Emacs Info file and an Info reader are included with +GNU Emacs. The Info file and the printed book contain substantially +the same text and are generated from the same source files, which are +also distributed with GNU Emacs. + + GNU Emacs is a member of the Emacs editor family. There are many +Emacs editors, all sharing common principles of organization. For +information on the underlying philosophy of Emacs and the lessons +learned from its development, see @cite{Emacs, the Extensible, +Customizable Self-Documenting Display Editor}, available from +@url{ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-519A.pdf}. + +This edition of the manual is intended for use with GNU Emacs +installed on GNU and Unix systems. GNU Emacs can also be used on VMS, +MS-DOS (also called MS-DOG), Microsoft Windows, and Macintosh systems. +Those systems use different file name syntax; in addition, VMS and +MS-DOS do not support all GNU Emacs features. @xref{Microsoft +Windows}, for information about using Emacs on Windows. +@xref{Mac OS}, for information about using Emacs on Macintosh. We +don't try to describe VMS usage in this manual. +@end iftex + +@node Distrib, Intro, Top, Top +@unnumbered Distribution + +GNU Emacs is @dfn{free software}; this means that everyone is free to +use it and free to redistribute it on certain conditions. GNU Emacs +is not in the public domain; it is copyrighted and there are +restrictions on its distribution, but these restrictions are designed +to permit everything that a good cooperating citizen would want to do. +What is not allowed is to try to prevent others from further sharing +any version of GNU Emacs that they might get from you. The precise +conditions are found in the GNU General Public License that comes with +Emacs and also appears in this manual@footnote{This manual is itself +covered by the GNU Free Documentation License. This license is +similar in spirit to the General Public License, but is more suitable +for documentation. @xref{GNU Free Documentation License}.}. +@xref{Copying}. + +One way to get a copy of GNU Emacs is from someone else who has it. +You need not ask for our permission to do so, or tell any one else; +just copy it. If you have access to the Internet, you can get the +latest distribution version of GNU Emacs by anonymous FTP; see +@url{http://www.gnu.org/software/emacs} on our website for more +information. + +You may also receive GNU Emacs when you buy a computer. Computer +manufacturers are free to distribute copies on the same terms that apply to +everyone else. These terms require them to give you the full sources, +including whatever changes they may have made, and to permit you to +redistribute the GNU Emacs received from them under the usual terms of the +General Public License. In other words, the program must be free for you +when you get it, not just free for the manufacturer. + +You can also order copies of GNU Emacs from the Free Software +Foundation. This is a convenient and reliable way to get a copy; it is +also a good way to help fund our work. We also sell hardcopy versions +of this manual and @cite{An Introduction to Programming in Emacs Lisp}, +by Robert J. Chassell. You can find an order form on our web site at +@url{http://www.gnu.org/order/order.html}. For further information, +write to + +@display +Free Software Foundation +51 Franklin Street, Fifth Floor +Boston, MA 02110-1301 +USA +@end display + +The income from distribution fees goes to support the foundation's +purpose: the development of new free software, and improvements to our +existing programs including GNU Emacs. + +If you find GNU Emacs useful, please @strong{send a donation} to the +Free Software Foundation to support our work. Donations to the Free +Software Foundation are tax deductible in the US. If you use GNU Emacs +at your workplace, please suggest that the company make a donation. If +company policy is unsympathetic to the idea of donating to charity, you +might instead suggest ordering a CD-ROM from the Foundation +occasionally, or subscribing to periodic updates. + +@iftex +@node Acknowledgments, Intro, Distrib, Top +@unnumberedsec Acknowledgments + +Contributors to GNU Emacs include Jari Aalto, Per Abrahamsen, Tomas +Abrahamsson, Jay K.@: Adams, Michael Albinus, Nagy Andras, Ralf +Angeli, Joe Arceneaux, Miles Bader, David Bakhash, Juanma Barranquero, +Eli Barzilay, Steven L.@: Baur, Jay Belanger, Alexander L.@: Belikoff, +Boaz Ben-Zvi, Karl Berry, Anna M.@: Bigatti, Ray Blaak, Jim Blandy, Johan Bockg@aa{}rd, +Per Bothner, Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel +Briot, Kevin Broadey, Vincent Broman, David M.@: Brown, Georges +Brun-Cottan, Joe Buehler, W@l{}odek Bzyl, Bill Carpenter, Per +Cederqvist, Hans Chalupsky, Chris Chase, Bob Chassell, Andrew Choi, +Sacha Chua, James Clark, Mike Clarkson, Glynn Clements, Andrew +Csillag, Doug Cutting, Mathias Dahl, Satyaki Das, Michael DeCorte, +Gary Delp, Matthieu Devin, Eri Ding, Jan Dj@"{a}rv, Carsten Dominik, +Scott Draves, Benjamin Drieu, Viktor Dukhovni, John Eaton, Rolf Ebert, +Paul Eggert, Stephen Eglen, Torbj@"orn Einarsson, Tsugutomo Enami, +Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick Farnbach, +Oscar Figueiredo, Fred Fish, Karl Fogel, Gary Foster, Romain +Francoise, Noah Friedman, Andreas Fuchs, Hallvard Furuseth, Keith +Gabryelski, Peter S.@: Galbraith, Kevin Gallagher, Kevin Gallo, Juan +Le@'{o}n Lahoz Garc@'{@dotless{i}}a, Howard Gayle, Stephen Gildea, Julien +Gilles, David Gillespie, Bob Glickstein, Deepak Goel, Boris Goldowsky, +Michelangelo Grigni, Odd Gripenstam, Kai Gro@ss{}johann, Michael +Gschwind, Henry Guillaume, Doug Gwyn, Ken'ichi Handa, Lars Hansen, +Chris Hanson, K. Shane Hartman, John Heidemann, Jon K.@: Hellan, +Jesper Harder, Markus Heritsch, Karl Heuer, Manabu Higashida, Anders +Holst, Jeffrey C.@: Honig, Kurt Hornik, Tom Houlder, Joakim Hove, +Denis Howe, Lars Ingebrigtsen, Andrew Innes, Seiichiro Inoue, Pavel +Janik, Paul Jarc, Ulf Jasper, Michael K. Johnson, Kyle Jones, Terry +Jones, Simon Josefsson, Arne J@o{}rgensen, Tomoji Kagatani, Brewster +Kahle, Lute Kamstra, David Kastrup, David Kaufman, Henry Kautz, Taichi +Kawabata, Howard Kaye, Michael Kifer, Richard King, Peter Kleiweg, +Shuhei Kobayashi, Pavel Kobiakov, Larry K.@: Kolodney, David M.@: +Koppelman, Koseki Yoshinori, Robert Krawitz, Sebastian Kremer, Ryszard +Kubiak, Geoff Kuenning, David K@aa{}gedal, Daniel LaLiberte, Mario +Lang, Aaron Larson, James R.@: Larus, Vinicius Jose Latorre, Werner +Lemberg, Frederic Lepied, Peter Liljenberg, Lars Lindberg, Chris +Lindblad, Anders Lindgren, Thomas Link, Juri Linkov, Francis Litterio, +Emilio C. Lopes, Dave Love, Sascha L@"{u}decke, Eric Ludlam,Alan +Mackenzie, Christopher J.@: Madsen, Neil M.@: Mager, Ken Manheimer, +Bill Mann, Brian Marick, Simon Marshall, Bengt Martensson, Charlie +Martin, Thomas May, Roland McGrath, Will Mengarini, David Megginson, +Ben A. Mesander, Wayne Mesard, Brad Miller, Lawrence Mitchell, Richard +Mlynarik, Gerd Moellmann, Stefan Monnier, Morioka Tomohiko, Keith +Moore, Glenn Morris, Diane Murray, Sen Nagata, Erik Naggum, Thomas +Neumann, Thien-Thi Nguyen, Mike Newton, Jurgen Nickelsen, Dan +Nicolaescu, Hrvoje Niksic, Jeff Norden, Andrew Norman, Alexandre +Oliva, Bob Olson, Michael Olson, Takaaki Ota, Pieter E.@: J.@: Pareit, +David Pearson, Jeff Peck, Damon Anton Permezel, Tom Perrine, William +M.@: Perry, Per Persson, Jens Petersen, Daniel Pfeiffer, Richard L.@: +Pieri, Fred Pierresteguy, Christian Plaunt, David Ponce, Francesco +A.@: Potorti, Michael D. Prange, Mukesh Prasad, Ken Raeburn, Marko +Rahamaa, Ashwin Ram, Eric S. Raymond, Paul Reilly, Edward M. Reingold, +Alex Rezinsky, Rob Riepel, David Reitter, Nick Roberts, Roland B.@: +Roberts, John Robinson, Danny Roozendaal, William Rosenblatt, +Guillermo J.@: Rozas, Martin Rudalics, Ivar Rummelhoff, Jason Rumney, +Wolfgang Rupprecht, Kevin Ryde, James B. Salem, Masahiko Sato, Jorgen +Schaefer, Holger Schauer, William Schelter, Ralph Schleicher, Gregor +Schmid, Michael Schmidt, Ronald S. Schnell, Philippe Schnoebelen, Jan +Schormann, Alex Schroeder, Stephen Schoef, Raymond Scholz, Randal +Schwartz, Oliver Seidel, Manuel Serrano, Hovav Shacham, Stanislav +Shalunov, Marc Shapiro, Richard Sharman, Olin Shivers, Espen Skoglund, +Rick Sladkey, Lynn Slater, Chris Smith, David Smith, Paul D.@: Smith, +Andre Spiegel, Michael Staats, William Sommerfeld, Michael Staats, +Reiner Steib, Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken +Stevens, Jonathan Stigelman, Martin Stjernholm, Kim F.@: Storm, Steve +Strassman, Olaf Sylvester, Naoto Takahashi, Steven Tamm, Jean-Philippe +Theberge, Jens T.@: Berger Thielemann, Spencer Thomas, Jim Thompson, +Luc Teirlinck, Tom Tromey, Enami Tsugutomo, Eli Tziperman, Daiki Ueno, +Masanobu Umeda, Rajesh Vaidheeswarran, Neil W.@: Van Dyke, Didier +Verna, Ulrik Vieth, Geoffrey Voelker, Johan Vromans, Inge Wallin, John +Paul Wallington, Colin Walters, Barry Warsaw, Morten Welinder, Joseph +Brian Wells, Rodney Whitby, John Wiegley, Ed Wilkinson, Mike Williams, +Bill Wohler, Steven A. Wood, Dale R.@: Worley, Francis J.@: Wright, +Felix S. T. Wu, Tom Wurgler, Katsumi Yamaoka, Masatake Yamato, +Jonathan Yavner, Ryan Yeske, Chong Yidong, Ilya Zakharevich, Milan +Zamazal, Victor Zandy, Eli Zaretskii, Jamie Zawinski, Shenghuo Zhu, +Ian T.@: Zimmermann, Reto Zimmermann, Neal Ziring, Teodor Zlatanov, +and Detlev Zundel. +@end iftex + +@node Intro, Glossary, Distrib, Top +@unnumbered Introduction + + You are reading about GNU Emacs, the GNU incarnation of the +advanced, self-documenting, customizable, extensible editor Emacs. +(The `G' in `GNU' is not silent.) + + We call Emacs advanced because it provides much more than simple +insertion and deletion. It can control subprocesses, indent programs +automatically, show two or more files at once, and edit formatted +text. Emacs editing commands operate in terms of characters, words, +lines, sentences, paragraphs, and pages, as well as expressions and +comments in various programming languages. + + @dfn{Self-documenting} means that at any time you can type a special +character, @kbd{Control-h}, to find out what your options are. You can +also use it to find out what any command does, or to find all the commands +that pertain to a topic. @xref{Help}. + + @dfn{Customizable} means that you can alter Emacs commands' behavior +in simple ways. For example, if you use a programming language in +which comments start with @samp{<**} and end with @samp{**>}, you can +tell the Emacs comment manipulation commands to use those strings +(@pxref{Comments}). Another sort of customization is rearrangement of +the command set. For example, you can rebind the basic cursor motion +commands (up, down, left and right) to any keys on the keyboard that +you find comfortable. @xref{Customization}. + + @dfn{Extensible} means that you can go beyond simple customization +and write entirely new commands---programs in the Lisp language to be +run by Emacs's own Lisp interpreter. Emacs is an ``on-line +extensible'' system, which means that it is divided into many +functions that call each other, any of which can be redefined in the +middle of an editing session. Almost any part of Emacs can be +replaced without making a separate copy of all of Emacs. Most of the +editing commands of Emacs are written in Lisp; the few exceptions +could have been written in Lisp but use C instead for efficiency. +Writing an extension is programming, but non-programmers can use it +afterwards. @xref{Top, Emacs Lisp Intro, Preface, eintr, An +Introduction to Programming in Emacs Lisp}, if you want to learn Emacs +Lisp programming. + + When running on a graphical display, Emacs provides its own menus +and convenient handling of mouse buttons. In addition, Emacs provides +many of the benefits of a graphical display even on a text-only +terminal. For instance, it can highlight parts of a file, display and +edit several files at once, move text between files, and edit files +while running shell commands. + +@include screen.texi +@include commands.texi +@include entering.texi +@include basic.texi +@include mini.texi +@include m-x.texi +@include help.texi +@include mark.texi +@include killing.texi +@include regs.texi +@include display.texi +@include search.texi +@include fixit.texi +@include kmacro.texi +@include files.texi +@include buffers.texi +@include windows.texi +@include frames.texi +@include mule.texi +@include major.texi +@include indent.texi +@include text.texi +@include programs.texi +@include building.texi +@include maintaining.texi +@include abbrevs.texi +@ifnottex +@include picture-xtra.texi +@end ifnottex +@include sending.texi +@include rmail.texi +@include dired.texi +@include calendar.texi +@include misc.texi +@include custom.texi +@include trouble.texi + +@node Copying, GNU Free Documentation License, Service, Top +@appendix GNU GENERAL PUBLIC LICENSE +@include gpl.texi + +@node GNU Free Documentation License, Emacs Invocation, Copying, Top +@appendix GNU Free Documentation License +@include doclicense.texi + +@include cmdargs.texi +@include xresources.texi + +@include anti.texi +@include macos.texi +@include msdog.texi +@include gnu.texi +@include glossary.texi +@ifnottex +@include ack.texi +@end ifnottex + +@c The Option Index is produced only in the on-line version, +@c because the index entries related to command-line options +@c tend to point to the same pages and all begin with a dash. +@c This, and the need to keep the node links consistent, are +@c the reasons for the funky @iftex/@ifnottex dance below. +@c The Option Index is _not_ before Key Index, because that +@c would require changes in the glossary.texi's @node line. +@c It is not after Concept Index for similar reasons. + +@iftex +@node Key Index, Command Index, Glossary, Top +@unnumbered Key (Character) Index +@printindex ky +@end iftex + +@ifnottex +@node Key Index, Option Index, Glossary, Top +@unnumbered Key (Character) Index +@printindex ky + +@node Option Index, Command Index, Key Index, Top +@unnumbered Command-Line Options Index +@printindex op + +@node Command Index, Variable Index, Option Index, Top +@unnumbered Command and Function Index +@printindex fn +@end ifnottex + +@iftex +@node Command Index, Variable Index, Key Index, Top +@unnumbered Command and Function Index +@printindex fn +@end iftex + +@node Variable Index, Concept Index, Command Index, Top +@unnumbered Variable Index +@printindex vr + +@node Concept Index, Acknowledgments, Variable Index, Top +@unnumbered Concept Index +@printindex cp + +@bye + +@ignore + arch-tag: ed48740a-410b-46ea-9387-c9a9252a3392 +@end ignore diff --cc doc/emacs/rmail.texi index 7c36a31ff18,00000000000..9ccdffedca1 mode 100644,000000..100644 --- a/doc/emacs/rmail.texi +++ b/doc/emacs/rmail.texi @@@ -1,1430 -1,0 +1,1439 @@@ +@c This is part of the Emacs manual. +@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002, +@c 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See file emacs.texi for copying conditions. +@node Rmail, Dired, Sending Mail, Top +@chapter Reading Mail with Rmail +@cindex Rmail +@cindex reading mail +@findex rmail +@findex rmail-mode +@vindex rmail-mode-hook + + Rmail is an Emacs subsystem for reading and disposing of mail that +you receive. Rmail stores mail messages in files called Rmail files +which use a special format. Reading the message in an Rmail file is +done in a special major mode, Rmail mode, which redefines most letters +to run commands for managing mail. +@menu +* Basic: Rmail Basics. Basic concepts of Rmail, and simple use. +* Scroll: Rmail Scrolling. Scrolling through a message. +* Motion: Rmail Motion. Moving to another message. +* Deletion: Rmail Deletion. Deleting and expunging messages. +* Inbox: Rmail Inbox. How mail gets into the Rmail file. +* Files: Rmail Files. Using multiple Rmail files. +* Output: Rmail Output. Copying message out to files. +* Labels: Rmail Labels. Classifying messages by labeling them. +* Attrs: Rmail Attributes. Certain standard labels, called attributes. +* Reply: Rmail Reply. Sending replies to messages you are viewing. +* Summary: Rmail Summary. Summaries show brief info on many messages. +* Sort: Rmail Sorting. Sorting messages in Rmail. +* Display: Rmail Display. How Rmail displays a message; customization. +* Coding: Rmail Coding. How Rmail handles decoding character sets. +* Editing: Rmail Editing. Editing message text and headers in Rmail. +* Digest: Rmail Digest. Extracting the messages from a digest message. +* Out of Rmail:: Converting an Rmail file to mailbox format. +* Rot13: Rmail Rot13. Reading messages encoded in the rot13 code. +* Movemail:: More details of fetching new mail. +* Remote Mailboxes:: Retrieving Mail from Remote Mailboxes. +* Other Mailbox Formats:: Retrieving Mail from Local Mailboxes in + Various Formats +@end menu + +@node Rmail Basics +@section Basic Concepts of Rmail + +@cindex primary Rmail file +@vindex rmail-file-name + Using Rmail in the simplest fashion, you have one Rmail file +@file{~/RMAIL} in which all of your mail is saved. It is called your +@dfn{primary Rmail file}. The command @kbd{M-x rmail} reads your primary +Rmail file, merges new mail in from your inboxes, displays the first +message you haven't read yet, and lets you begin reading. The variable +@code{rmail-file-name} specifies the name of the primary Rmail file. + + Rmail uses narrowing to hide all but one message in the Rmail file. +The message that is shown is called the @dfn{current message}. Rmail +mode's special commands can do such things as delete the current +message, copy it into another file, send a reply, or move to another +message. You can also create multiple Rmail files and use Rmail to move +messages between them. + +@cindex message number + Within the Rmail file, messages are normally arranged sequentially in +order of receipt; you can specify other ways to sort them. Messages are +identified by consecutive integers which are their @dfn{message numbers}. +The number of the current message is displayed in Rmail's mode line, +followed by the total number of messages in the file. You can move to +a message by specifying its message number with the @kbd{j} key +(@pxref{Rmail Motion}). + +@kindex s @r{(Rmail)} +@findex rmail-expunge-and-save + Following the usual conventions of Emacs, changes in an Rmail file +become permanent only when you save the file. You can save it with +@kbd{s} (@code{rmail-expunge-and-save}), which also expunges deleted +messages from the file first (@pxref{Rmail Deletion}). To save the +file without expunging, use @kbd{C-x C-s}. Rmail also saves the Rmail +file after merging new mail from an inbox file (@pxref{Rmail Inbox}). + +@kindex q @r{(Rmail)} +@findex rmail-quit +@kindex b @r{(Rmail)} +@findex rmail-bury + You can exit Rmail with @kbd{q} (@code{rmail-quit}); this expunges +and saves the Rmail file, then buries the Rmail buffer as well as its +summary buffer, if present (@pxref{Rmail Summary}). But there is no +need to ``exit'' formally. If you switch from Rmail to editing in +other buffers, and never switch back, you have exited. Just make sure +to save the Rmail file eventually (like any other file you have +changed). @kbd{C-x s} is a suitable way to do this (@pxref{Save +Commands}). The Rmail command @kbd{b}, @code{rmail-bury}, buries the +Rmail buffer and its summary buffer without expunging and saving the +Rmail file. + +@node Rmail Scrolling +@section Scrolling Within a Message + + When Rmail displays a message that does not fit on the screen, you +must scroll through it to read the rest. You could do this with +@kbd{C-v}, @kbd{M-v} and @kbd{M-<}, but in Rmail scrolling is so +frequent that it deserves to be easier. + +@table @kbd +@item @key{SPC} +Scroll forward (@code{scroll-up}). +@item @key{DEL} +Scroll backward (@code{scroll-down}). +@item . +Scroll to start of message (@code{rmail-beginning-of-message}). +@item / +Scroll to end of message (@code{rmail-end-of-message}). +@end table + +@kindex SPC @r{(Rmail)} +@kindex DEL @r{(Rmail)} + Since the most common thing to do while reading a message is to scroll +through it by screenfuls, Rmail makes @key{SPC} and @key{DEL} synonyms of +@kbd{C-v} (@code{scroll-up}) and @kbd{M-v} (@code{scroll-down}) + +@kindex . @r{(Rmail)} +@kindex / @r{(Rmail)} +@findex rmail-beginning-of-message +@findex rmail-end-of-message + The command @kbd{.} (@code{rmail-beginning-of-message}) scrolls back to the +beginning of the selected message. This is not quite the same as @kbd{M-<}: +for one thing, it does not set the mark; for another, it resets the buffer +boundaries to the current message if you have changed them. Similarly, +the command @kbd{/} (@code{rmail-end-of-message}) scrolls forward to the end +of the selected message. + +@node Rmail Motion +@section Moving Among Messages + + The most basic thing to do with a message is to read it. The way to +do this in Rmail is to make the message current. The usual practice is +to move sequentially through the file, since this is the order of +receipt of messages. When you enter Rmail, you are positioned at the +first message that you have not yet made current (that is, the first one +that has the @samp{unseen} attribute; @pxref{Rmail Attributes}). Move +forward to see the other new messages; move backward to re-examine old +messages. + +@table @kbd +@item n +Move to the next nondeleted message, skipping any intervening deleted +messages (@code{rmail-next-undeleted-message}). +@item p +Move to the previous nondeleted message +(@code{rmail-previous-undeleted-message}). +@item M-n +Move to the next message, including deleted messages +(@code{rmail-next-message}). +@item M-p +Move to the previous message, including deleted messages +(@code{rmail-previous-message}). +@item j +Move to the first message. With argument @var{n}, move to +message number @var{n} (@code{rmail-show-message}). +@item > +Move to the last message (@code{rmail-last-message}). +@item < +Move to the first message (@code{rmail-first-message}). + +@item M-s @var{regexp} @key{RET} +Move to the next message containing a match for @var{regexp} +(@code{rmail-search}). + +@item - M-s @var{regexp} @key{RET} +Move to the previous message containing a match for @var{regexp}. +@end table + +@kindex n @r{(Rmail)} +@kindex p @r{(Rmail)} +@kindex M-n @r{(Rmail)} +@kindex M-p @r{(Rmail)} +@findex rmail-next-undeleted-message +@findex rmail-previous-undeleted-message +@findex rmail-next-message +@findex rmail-previous-message + @kbd{n} and @kbd{p} are the usual way of moving among messages in +Rmail. They move through the messages sequentially, but skip over +deleted messages, which is usually what you want to do. Their command +definitions are named @code{rmail-next-undeleted-message} and +@code{rmail-previous-undeleted-message}. If you do not want to skip +deleted messages---for example, if you want to move to a message to +undelete it---use the variants @kbd{M-n} and @kbd{M-p} +(@code{rmail-next-message} and @code{rmail-previous-message}). A +numeric argument to any of these commands serves as a repeat +count. + + In Rmail, you can specify a numeric argument by typing just the +digits. You don't need to type @kbd{C-u} first. + +@kindex M-s @r{(Rmail)} +@findex rmail-search +@cindex searching in Rmail + The @kbd{M-s} (@code{rmail-search}) command is Rmail's version of +search. The usual incremental search command @kbd{C-s} works in Rmail, +but it searches only within the current message. The purpose of +@kbd{M-s} is to search for another message. It reads a regular +expression (@pxref{Regexps}) nonincrementally, then searches starting at +the beginning of the following message for a match. It then selects +that message. If @var{regexp} is empty, @kbd{M-s} reuses the regexp +used the previous time. + + To search backward in the file for another message, give @kbd{M-s} a +negative argument. In Rmail you can do this with @kbd{- M-s}. + + It is also possible to search for a message based on labels. +@xref{Rmail Labels}. + +@kindex j @r{(Rmail)} +@kindex > @r{(Rmail)} +@kindex < @r{(Rmail)} +@findex rmail-show-message +@findex rmail-last-message +@findex rmail-first-message + To move to a message specified by absolute message number, use @kbd{j} +(@code{rmail-show-message}) with the message number as argument. With +no argument, @kbd{j} selects the first message. @kbd{<} +(@code{rmail-first-message}) also selects the first message. @kbd{>} +(@code{rmail-last-message}) selects the last message. + +@node Rmail Deletion +@section Deleting Messages + +@cindex deletion (Rmail) + When you no longer need to keep a message, you can @dfn{delete} it. This +flags it as ignorable, and some Rmail commands pretend it is no longer +present; but it still has its place in the Rmail file, and still has its +message number. + +@cindex expunging (Rmail) + @dfn{Expunging} the Rmail file actually removes the deleted messages. +The remaining messages are renumbered consecutively. Expunging is the only +action that changes the message number of any message, except for +undigestifying (@pxref{Rmail Digest}). + +@table @kbd +@item d +Delete the current message, and move to the next nondeleted message +(@code{rmail-delete-forward}). +@item C-d +Delete the current message, and move to the previous nondeleted +message (@code{rmail-delete-backward}). +@item u +Undelete the current message, or move back to a deleted message and +undelete it (@code{rmail-undelete-previous-message}). +@item x +Expunge the Rmail file (@code{rmail-expunge}). +@end table + +@kindex d @r{(Rmail)} +@kindex C-d @r{(Rmail)} +@findex rmail-delete-forward +@findex rmail-delete-backward + There are two Rmail commands for deleting messages. Both delete the +current message and select another message. @kbd{d} +(@code{rmail-delete-forward}) moves to the following message, skipping +messages already deleted, while @kbd{C-d} (@code{rmail-delete-backward}) +moves to the previous nondeleted message. If there is no nondeleted +message to move to in the specified direction, the message that was just +deleted remains current. @kbd{d} with a numeric argument is +equivalent to @kbd{C-d}. + +@vindex rmail-delete-message-hook + Whenever Rmail deletes a message, it runs the hook +@code{rmail-delete-message-hook}. When the hook functions are invoked, +the message has been marked deleted, but it is still the current message +in the Rmail buffer. + +@cindex undeletion (Rmail) +@kindex x @r{(Rmail)} +@findex rmail-expunge +@kindex u @r{(Rmail)} +@findex rmail-undelete-previous-message + To make all the deleted messages finally vanish from the Rmail file, +type @kbd{x} (@code{rmail-expunge}). Until you do this, you can still +@dfn{undelete} the deleted messages. The undeletion command, @kbd{u} +(@code{rmail-undelete-previous-message}), is designed to cancel the +effect of a @kbd{d} command in most cases. It undeletes the current +message if the current message is deleted. Otherwise it moves backward +to previous messages until a deleted message is found, and undeletes +that message. + + You can usually undo a @kbd{d} with a @kbd{u} because the @kbd{u} +moves back to and undeletes the message that the @kbd{d} deleted. But +this does not work when the @kbd{d} skips a few already-deleted messages +that follow the message being deleted; then the @kbd{u} command +undeletes the last of the messages that were skipped. There is no clean +way to avoid this problem. However, by repeating the @kbd{u} command, +you can eventually get back to the message that you intend to +undelete. You can also select a particular deleted message with +the @kbd{M-p} command, then type @kbd{u} to undelete it. + + A deleted message has the @samp{deleted} attribute, and as a result +@samp{deleted} appears in the mode line when the current message is +deleted. In fact, deleting or undeleting a message is nothing more than +adding or removing this attribute. @xref{Rmail Attributes}. + +@node Rmail Inbox +@section Rmail Files and Inboxes +@cindex inbox file + + When you receive mail locally, the operating system places incoming +mail for you in a file that we call your @dfn{inbox}. When you start +up Rmail, it runs a C program called @code{movemail} to copy the new +messages from your local inbox into your primary Rmail file, which +also contains other messages saved from previous Rmail sessions. It +is in this file that you actually read the mail with Rmail. This +operation is called @dfn{getting new mail}. You can get new mail at +any time in Rmail by typing @kbd{g}. + +@vindex rmail-primary-inbox-list +@cindex @env{MAIL} environment variable + The variable @code{rmail-primary-inbox-list} contains a list of the +files which are inboxes for your primary Rmail file. If you don't set +this variable explicitly, it is initialized from the @env{MAIL} +environment variable, or, as a last resort, set to @code{nil}, which +means to use the default inbox. The default inbox file depends on +your operating system; often it is @file{/var/mail/@var{username}}, +@file{/usr/spool/mail/@var{username}}, or +@file{/usr/mail/@var{username}}. + + You can specify the inbox file(s) for any Rmail file with the +command @code{set-rmail-inbox-list}; see @ref{Rmail Files}. + + There are two reasons for having separate Rmail files and inboxes. + +@enumerate +@item +The inbox file format varies between operating systems and according to +the other mail software in use. Only one part of Rmail needs to know +about the alternatives, and it need only understand how to convert all +of them to Rmail's own format. + +@item +It is very cumbersome to access an inbox file without danger of losing +mail, because it is necessary to interlock with mail delivery. +Moreover, different operating systems use different interlocking +techniques. The strategy of moving mail out of the inbox once and for +all into a separate Rmail file avoids the need for interlocking in all +the rest of Rmail, since only Rmail operates on the Rmail file. +@end enumerate + + Rmail was written to use Babyl format as its internal format. Since +then, we have recognized that the usual inbox format on Unix and GNU +systems is adequate for the job, and we plan to change Rmail to use that +as its internal format. However, the Rmail file will still be separate +from the inbox file, even when their format is the same. + +@vindex rmail-preserve-inbox + When getting new mail, Rmail first copies the new mail from the +inbox file to the Rmail file; then it saves the Rmail file; then it +clears out the inbox file. This way, a system crash may cause +duplication of mail between the inbox and the Rmail file, but cannot +lose mail. If @code{rmail-preserve-inbox} is non-@code{nil}, then +Rmail does not clear out the inbox file when it gets new mail. You +may wish to set this, for example, on a portable computer you use to +check your mail via POP while traveling, so that your mail will remain +on the server and you can save it later on your workstation. + + In some cases, Rmail copies the new mail from the inbox file +indirectly. First it runs the @code{movemail} program to move the mail +from the inbox to an intermediate file called +@file{~/.newmail-@var{inboxname}}. Then Rmail merges the new mail from +that file, saves the Rmail file, and only then deletes the intermediate +file. If there is a crash at the wrong time, this file continues to +exist, and Rmail will use it again the next time it gets new mail from +that inbox. + + If Rmail is unable to convert the data in +@file{~/.newmail-@var{inboxname}} into Babyl format, it renames the file +to @file{~/RMAILOSE.@var{n}} (@var{n} is an integer chosen to make the +name unique) so that Rmail will not have trouble with the data again. +You should look at the file, find whatever message confuses Rmail +(probably one that includes the control-underscore character, octal code +037), and delete it. Then you can use @kbd{1 g} to get new mail from +the corrected file. + +@node Rmail Files +@section Multiple Rmail Files + + Rmail operates by default on your @dfn{primary Rmail file}, which is named +@file{~/RMAIL} and receives your incoming mail from your system inbox file. +But you can also have other Rmail files and edit them with Rmail. These +files can receive mail through their own inboxes, or you can move messages +into them with explicit Rmail commands (@pxref{Rmail Output}). + +@table @kbd +@item i @var{file} @key{RET} +Read @var{file} into Emacs and run Rmail on it (@code{rmail-input}). + +@item M-x set-rmail-inbox-list @key{RET} @var{files} @key{RET} +Specify inbox file names for current Rmail file to get mail from. + +@item g +Merge new mail from current Rmail file's inboxes +(@code{rmail-get-new-mail}). + +@item C-u g @var{file} @key{RET} +Merge new mail from inbox file @var{file}. +@end table + +@kindex i @r{(Rmail)} +@findex rmail-input + To run Rmail on a file other than your primary Rmail file, you can use +the @kbd{i} (@code{rmail-input}) command in Rmail. This visits the file +in Rmail mode. You can use @kbd{M-x rmail-input} even when not in +Rmail, but it is easier to type @kbd{C-u M-x rmail}, which does the +same thing. + + The file you read with @kbd{i} should normally be a valid Rmail file. +If it is not, Rmail tries to decompose it into a stream of messages in +various known formats. If it succeeds, it converts the whole file to an +Rmail file. If you specify a file name that doesn't exist, @kbd{i} +initializes a new buffer for creating a new Rmail file. + +@vindex rmail-secondary-file-directory +@vindex rmail-secondary-file-regexp + You can also select an Rmail file from a menu. In the Classify menu, +choose the Input Rmail File item; then choose the Rmail file you want. +The variables @code{rmail-secondary-file-directory} and +@code{rmail-secondary-file-regexp} specify which files to offer in the +menu: the first variable says which directory to find them in; the +second says which files in that directory to offer (all those that +match the regular expression). These variables also apply to choosing +a file for output (@pxref{Rmail Output}). + +@findex set-rmail-inbox-list + Each Rmail file can contain a list of inbox file names; you can specify +this list with @kbd{M-x set-rmail-inbox-list @key{RET} @var{files} +@key{RET}}. The argument can contain any number of file names, separated +by commas. It can also be empty, which specifies that this file should +have no inboxes. Once you specify a list of inboxes in an Rmail file, +the Rmail file remembers it permanently until you specify a different list. + + As a special exception, if your primary Rmail file does not specify any +inbox files, it uses your standard system inbox. + +@kindex g @r{(Rmail)} +@findex rmail-get-new-mail + The @kbd{g} command (@code{rmail-get-new-mail}) merges mail into the +current Rmail file from its inboxes. If the Rmail file has no +inboxes, @kbd{g} does nothing. The command @kbd{M-x rmail} also +merges new mail into your primary Rmail file. + + To merge mail from a file that is not the usual inbox, give the +@kbd{g} key a numeric argument, as in @kbd{C-u g}. Then it reads a file +name and merges mail from that file. The inbox file is not deleted or +changed in any way when @kbd{g} with an argument is used. This is, +therefore, a general way of merging one file of messages into another. + +@node Rmail Output +@section Copying Messages Out to Files + + These commands copy messages from an Rmail file into another file. + +@table @kbd +@item o @var{file} @key{RET} +Append a copy of the current message to the file @var{file}, using Rmail +file format by default (@code{rmail-output-to-rmail-file}). + +@item C-o @var{file} @key{RET} +Append a copy of the current message to the file @var{file}, using +system inbox file format by default (@code{rmail-output}). + +@item w @var{file} @key{RET} +Output just the message body to the file @var{file}, taking the default +file name from the message @samp{Subject} header. +@end table + +@kindex o @r{(Rmail)} +@findex rmail-output-to-rmail-file +@kindex C-o @r{(Rmail)} +@findex rmail-output + The commands @kbd{o} and @kbd{C-o} copy the current message into a +specified file. This file may be an Rmail file or it may be in system +inbox format; the output commands ascertain the file's format and write +the copied message in that format. + + The @kbd{o} and @kbd{C-o} commands differ in two ways: each has its +own separate default file name, and each specifies a choice of format to +use when the file does not already exist. The @kbd{o} command uses +Rmail format when it creates a new file, while @kbd{C-o} uses system +inbox format for a new file. The default file name for @kbd{o} is the +file name used last with @kbd{o}, and the default file name for +@kbd{C-o} is the file name used last with @kbd{C-o}. + + If the output file is an Rmail file currently visited in an Emacs buffer, +the output commands copy the message into that buffer. It is up to you +to save the buffer eventually in its file. + +@kindex w @r{(Rmail)} +@findex rmail-output-body-to-file + Sometimes you may receive a message whose body holds the contents of a +file. You can save the body to a file (excluding the message header) +with the @kbd{w} command (@code{rmail-output-body-to-file}). Often +these messages contain the intended file name in the @samp{Subject} +field, so the @kbd{w} command uses the @samp{Subject} field as the +default for the output file name. However, the file name is read using +the minibuffer, so you can specify a different name if you wish. + + You can also output a message to an Rmail file chosen with a menu. +In the Classify menu, choose the Output Rmail File menu item; then +choose the Rmail file you want. This outputs the current message to +that file, like the @kbd{o} command. The variables +@code{rmail-secondary-file-directory} and +@code{rmail-secondary-file-regexp} specify which files to offer in the +menu: the first variable says which directory to find them in; the +second says which files in that directory to offer (all those that +match the regular expression). + +@vindex rmail-delete-after-output + Copying a message with @kbd{o} or @kbd{C-o} gives the original copy +of the message the @samp{filed} attribute, so that @samp{filed} +appears in the mode line when such a message is current. @kbd{w} +gives it the @samp{stored} attribute. If you like to keep just a +single copy of every mail message, set the variable +@code{rmail-delete-after-output} to @code{t}; then the @kbd{o}, +@kbd{C-o} and @kbd{w} commands delete the original message after +copying it. (You can undelete the original afterward if you wish.) + + Copying messages into files in system inbox format uses the header +fields that are displayed in Rmail at the time. Thus, if you use the +@kbd{t} command to view the entire header and then copy the message, the +entire header is copied. @xref{Rmail Display}. + +@vindex rmail-output-file-alist + The variable @code{rmail-output-file-alist} lets you specify +intelligent defaults for the output file, based on the contents of the +current message. The value should be a list whose elements have this +form: + +@example +(@var{regexp} . @var{name-exp}) +@end example + +@noindent +If there's a match for @var{regexp} in the current message, then the +default file name for output is @var{name-exp}. If multiple elements +match the message, the first matching element decides the default file +name. The subexpression @var{name-exp} may be a string constant giving +the file name to use, or more generally it may be any Lisp expression +that returns a file name as a string. @code{rmail-output-file-alist} +applies to both @kbd{o} and @kbd{C-o}. + +@node Rmail Labels +@section Labels +@cindex label (Rmail) +@cindex attribute (Rmail) + + Each message can have various @dfn{labels} assigned to it as a means +of classification. Each label has a name; different names are different +labels. Any given label is either present or absent on a particular +message. A few label names have standard meanings and are given to +messages automatically by Rmail when appropriate; these special labels +are called @dfn{attributes}. +@ifnottex +(@xref{Rmail Attributes}.) +@end ifnottex +All other labels are assigned only by users. + +@table @kbd +@item a @var{label} @key{RET} +Assign the label @var{label} to the current message (@code{rmail-add-label}). +@item k @var{label} @key{RET} +Remove the label @var{label} from the current message (@code{rmail-kill-label}). +@item C-M-n @var{labels} @key{RET} +Move to the next message that has one of the labels @var{labels} +(@code{rmail-next-labeled-message}). +@item C-M-p @var{labels} @key{RET} +Move to the previous message that has one of the labels @var{labels} +(@code{rmail-previous-labeled-message}). +@item l @var{labels} @key{RET} +@itemx C-M-l @var{labels} @key{RET} +Make a summary of all messages containing any of the labels @var{labels} +(@code{rmail-summary-by-labels}). +@end table + +@kindex a @r{(Rmail)} +@kindex k @r{(Rmail)} +@findex rmail-add-label +@findex rmail-kill-label + The @kbd{a} (@code{rmail-add-label}) and @kbd{k} +(@code{rmail-kill-label}) commands allow you to assign or remove any +label on the current message. If the @var{label} argument is empty, it +means to assign or remove the same label most recently assigned or +removed. + + Once you have given messages labels to classify them as you wish, there +are two ways to use the labels: in moving and in summaries. + +@kindex C-M-n @r{(Rmail)} +@kindex C-M-p @r{(Rmail)} +@findex rmail-next-labeled-message +@findex rmail-previous-labeled-message + The command @kbd{C-M-n @var{labels} @key{RET}} +(@code{rmail-next-labeled-message}) moves to the next message that has +one of the labels @var{labels}. The argument @var{labels} specifies one +or more label names, separated by commas. @kbd{C-M-p} +(@code{rmail-previous-labeled-message}) is similar, but moves backwards +to previous messages. A numeric argument to either command serves as a +repeat count. + + The command @kbd{C-M-l @var{labels} @key{RET}} +(@code{rmail-summary-by-labels}) displays a summary containing only the +messages that have at least one of a specified set of labels. The +argument @var{labels} is one or more label names, separated by commas. +@xref{Rmail Summary}, for information on summaries. + + If the @var{labels} argument to @kbd{C-M-n}, @kbd{C-M-p} or +@kbd{C-M-l} is empty, it means to use the last set of labels specified +for any of these commands. + +@node Rmail Attributes +@section Rmail Attributes + + Some labels such as @samp{deleted} and @samp{filed} have built-in +meanings, and Rmail assigns them to messages automatically at +appropriate times; these labels are called @dfn{attributes}. Here is +a list of Rmail attributes: + +@table @samp +@item unseen +Means the message has never been current. Assigned to messages when +they come from an inbox file, and removed when a message is made +current. When you start Rmail, it initially shows the first message +that has this attribute. +@item deleted +Means the message is deleted. Assigned by deletion commands and +removed by undeletion commands (@pxref{Rmail Deletion}). +@item filed +Means the message has been copied to some other file. Assigned by the +@kbd{o} and @kbd{C-o} file output commands (@pxref{Rmail Output}). +@item stored +Assigned by the @kbd{w} file output command (@pxref{Rmail Output}). +@item answered +Means you have mailed an answer to the message. Assigned by the @kbd{r} +command (@code{rmail-reply}). @xref{Rmail Reply}. +@item forwarded +Means you have forwarded the message. Assigned by the @kbd{f} command +(@code{rmail-forward}). @xref{Rmail Reply}. +@item edited +Means you have edited the text of the message within Rmail. +@xref{Rmail Editing}. +@item resent +Means you have resent the message. Assigned by the command @kbd{M-x +rmail-resend}. @xref{Rmail Reply}. +@end table + + All other labels are assigned or removed only by users, and have no +standard meaning. + +@node Rmail Reply +@section Sending Replies + + Rmail has several commands that use Mail mode to send outgoing mail. +@xref{Sending Mail}, for information on using Mail mode, including +certain features meant to work with Rmail. What this section documents +are the special commands of Rmail for entering Mail mode. Note that the +usual keys for sending mail---@kbd{C-x m}, @kbd{C-x 4 m}, and @kbd{C-x 5 +m}---also work normally in Rmail mode. + +@table @kbd +@item m +Send a message (@code{rmail-mail}). +@item c +Continue editing the already started outgoing message (@code{rmail-continue}). +@item r +Send a reply to the current Rmail message (@code{rmail-reply}). +@item f +Forward the current message to other users (@code{rmail-forward}). +@item C-u f +Resend the current message to other users (@code{rmail-resend}). +@item M-m +Try sending a bounced message a second time (@code{rmail-retry-failure}). +@end table + +@kindex r @r{(Rmail)} +@findex rmail-reply +@cindex reply to a message + The most common reason to send a message while in Rmail is to reply +to the message you are reading. To do this, type @kbd{r} +(@code{rmail-reply}). This displays the @samp{*mail*} buffer in +another window, much like @kbd{C-x 4 m}, but preinitializes the +@samp{Subject}, @samp{To}, @samp{CC}, @samp{In-reply-to} and +@samp{References} header fields based on the message you are replying +to. The @samp{To} field starts out as the address of the person who +sent the message you received, and the @samp{CC} field starts out with +all the other recipients of that message. + +@vindex rmail-dont-reply-to-names + You can exclude certain recipients from being placed automatically in +the @samp{CC}, using the variable @code{rmail-dont-reply-to-names}. Its +value should be a regular expression (as a string); any recipient that +the regular expression matches, is excluded from the @samp{CC} field. +The default value matches your own name, and any name starting with +@samp{info-}. (Those names are excluded because there is a convention +of using them for large mailing lists to broadcast announcements.) + + To omit the @samp{CC} field completely for a particular reply, enter +the reply command with a numeric argument: @kbd{C-u r} or @kbd{1 r}. +This means to reply only to the sender of the original message. + + Once the @samp{*mail*} buffer has been initialized, editing and +sending the mail goes as usual (@pxref{Sending Mail}). You can edit the +presupplied header fields if they are not what you want. You can also +use the commands of Mail mode (@pxref{Mail Mode}), including @kbd{C-c +C-y} which yanks in the message that you are replying to. You can +also switch to the Rmail buffer, select a different message there, switch +back, and yank the new current message. + +@kindex M-m @r{(Rmail)} +@findex rmail-retry-failure +@cindex retrying a failed message +@vindex rmail-retry-ignored-headers + Sometimes a message does not reach its destination. Mailers usually +send the failed message back to you, enclosed in a @dfn{failure +message}. The Rmail command @kbd{M-m} (@code{rmail-retry-failure}) +prepares to send the same message a second time: it sets up a +@samp{*mail*} buffer with the same text and header fields as before. If +you type @kbd{C-c C-c} right away, you send the message again exactly +the same as the first time. Alternatively, you can edit the text or +headers and then send it. The variable +@code{rmail-retry-ignored-headers}, in the same format as +@code{rmail-ignored-headers} (@pxref{Rmail Display}), controls which +headers are stripped from the failed message when retrying it. + +@kindex f @r{(Rmail)} +@findex rmail-forward +@cindex forwarding a message + Another frequent reason to send mail in Rmail is to @dfn{forward} the +current message to other users. @kbd{f} (@code{rmail-forward}) makes +this easy by preinitializing the @samp{*mail*} buffer with the current +message as the text, and a subject designating a forwarded message. All +you have to do is fill in the recipients and send. When you forward a +message, recipients get a message which is ``from'' you, and which has +the original message in its contents. + +@findex unforward-rmail-message + Forwarding a message encloses it between two delimiter lines. It also +modifies every line that starts with a dash, by inserting @w{@samp{- }} +at the start of the line. When you receive a forwarded message, if it +contains something besides ordinary text---for example, program source +code---you might find it useful to undo that transformation. You can do +this by selecting the forwarded message and typing @kbd{M-x +unforward-rmail-message}. This command extracts the original forwarded +message, deleting the inserted @w{@samp{- }} strings, and inserts it +into the Rmail file as a separate message immediately following the +current one. + +@findex rmail-resend + @dfn{Resending} is an alternative similar to forwarding; the +difference is that resending sends a message that is ``from'' the +original sender, just as it reached you---with a few added header fields +@samp{Resent-From} and @samp{Resent-To} to indicate that it came via +you. To resend a message in Rmail, use @kbd{C-u f}. (@kbd{f} runs +@code{rmail-forward}, which is programmed to invoke @code{rmail-resend} +if you provide a numeric argument.) + +@kindex m @r{(Rmail)} +@findex rmail-mail + The @kbd{m} (@code{rmail-mail}) command is used to start editing an +outgoing message that is not a reply. It leaves the header fields empty. +Its only difference from @kbd{C-x 4 m} is that it makes the Rmail buffer +accessible for @kbd{C-c C-y}, just as @kbd{r} does. Thus, @kbd{m} can be +used to reply to or forward a message; it can do anything @kbd{r} or @kbd{f} +can do. + +@kindex c @r{(Rmail)} +@findex rmail-continue + The @kbd{c} (@code{rmail-continue}) command resumes editing the +@samp{*mail*} buffer, to finish editing an outgoing message you were +already composing, or to alter a message you have sent. + +@vindex rmail-mail-new-frame + If you set the variable @code{rmail-mail-new-frame} to a +non-@code{nil} value, then all the Rmail commands to start sending a +message create a new frame to edit it in. This frame is deleted when +you send the message, or when you use the @samp{Cancel} item in the +@samp{Mail} menu. + + All the Rmail commands to send a message use the mail-composition +method that you have chosen (@pxref{Mail Methods}). + +@node Rmail Summary +@section Summaries +@cindex summary (Rmail) + + A @dfn{summary} is a buffer containing one line per message to give +you an overview of the mail in an Rmail file. Each line shows the +message number and date, the sender, the line count, the labels, and +the subject. Moving point in the summary buffer selects messages as +you move to their summary lines. Almost all Rmail commands are valid +in the summary buffer also; when used there, they apply to the message +described by the current line of the summary. + + A summary buffer applies to a single Rmail file only; if you are +editing multiple Rmail files, each one can have its own summary buffer. +The summary buffer name is made by appending @samp{-summary} to the +Rmail buffer's name. Normally only one summary buffer is displayed at a +time. + +@menu +* Rmail Make Summary:: Making various sorts of summaries. +* Rmail Summary Edit:: Manipulating messages from the summary. +@end menu + +@node Rmail Make Summary +@subsection Making Summaries + + Here are the commands to create a summary for the current Rmail file. +Once the Rmail file has a summary buffer, changes in the Rmail file +(such as deleting or expunging messages, and getting new mail) +automatically update the summary. + +@table @kbd +@item h +@itemx C-M-h +Summarize all messages (@code{rmail-summary}). +@item l @var{labels} @key{RET} +@itemx C-M-l @var{labels} @key{RET} +Summarize messages that have one or more of the specified labels +(@code{rmail-summary-by-labels}). +@item C-M-r @var{rcpts} @key{RET} +Summarize messages that have one or more of the specified recipients +(@code{rmail-summary-by-recipients}). +@item C-M-t @var{topic} @key{RET} +Summarize messages that have a match for the specified regexp +@var{topic} in their subjects (@code{rmail-summary-by-topic}). +@item C-M-s @var{regexp} +Summarize messages whose headers and the subject line match the +specified regular expression @var{regexp} +(@code{rmail-summary-by-regexp}). +@end table + +@kindex h @r{(Rmail)} +@findex rmail-summary + The @kbd{h} or @kbd{C-M-h} (@code{rmail-summary}) command fills the summary buffer +for the current Rmail file with a summary of all the messages in the file. +It then displays and selects the summary buffer in another window. + +@kindex l @r{(Rmail)} +@kindex C-M-l @r{(Rmail)} +@findex rmail-summary-by-labels + @kbd{C-M-l @var{labels} @key{RET}} (@code{rmail-summary-by-labels}) makes +a partial summary mentioning only the messages that have one or more of the +labels @var{labels}. @var{labels} should contain label names separated by +commas. + +@kindex C-M-r @r{(Rmail)} +@findex rmail-summary-by-recipients + @kbd{C-M-r @var{rcpts} @key{RET}} (@code{rmail-summary-by-recipients}) +makes a partial summary mentioning only the messages that have one or more +of the recipients @var{rcpts}. @var{rcpts} should contain mailing +addresses separated by commas. + +@kindex C-M-t @r{(Rmail)} +@findex rmail-summary-by-topic + @kbd{C-M-t @var{topic} @key{RET}} (@code{rmail-summary-by-topic}) +makes a partial summary mentioning only the messages whose subjects have +a match for the regular expression @var{topic}. + +@kindex C-M-s @r{(Rmail)} +@findex rmail-summary-by-regexp + @kbd{C-M-s @var{regexp} @key{RET}} (@code{rmail-summary-by-regexp}) +makes a partial summary which mentions only the messages whose headers +(including the date and the subject lines) match the regular +expression @var{regexp}. + + Note that there is only one summary buffer for any Rmail file; +making any kind of summary discards any previous summary. + +@vindex rmail-summary-window-size +@vindex rmail-summary-line-count-flag + The variable @code{rmail-summary-window-size} says how many lines to +use for the summary window. The variable +@code{rmail-summary-line-count-flag} controls whether the summary line +for a message should include the line count of the message. + +@node Rmail Summary Edit +@subsection Editing in Summaries + + You can use the Rmail summary buffer to do almost anything you can do +in the Rmail buffer itself. In fact, once you have a summary buffer, +there's no need to switch back to the Rmail buffer. + + You can select and display various messages in the Rmail buffer, from +the summary buffer, just by moving point in the summary buffer to +different lines. It doesn't matter what Emacs command you use to move +point; whichever line point is on at the end of the command, that +message is selected in the Rmail buffer. + + Almost all Rmail commands work in the summary buffer as well as in the +Rmail buffer. Thus, @kbd{d} in the summary buffer deletes the current +message, @kbd{u} undeletes, and @kbd{x} expunges. (However, in the +summary buffer, a numeric argument to @kbd{d}, @kbd{C-d} and @kbd{u} +serves as a repeat count. A negative argument reverses the meaning of +@kbd{d} and @kbd{C-d}.) @kbd{o} and @kbd{C-o} output the current +message to a file; @kbd{r} starts a reply to it. You can scroll the +current message while remaining in the summary buffer using @key{SPC} +and @key{DEL}. + + The Rmail commands to move between messages also work in the summary +buffer, but with a twist: they move through the set of messages included +in the summary. They also ensure the Rmail buffer appears on the screen +(unlike cursor motion commands, which update the contents of the Rmail +buffer but don't display it in a window unless it already appears). +Here is a list of these commands: + +@table @kbd +@item n +Move to next line, skipping lines saying `deleted', and select its +message. +@item p +Move to previous line, skipping lines saying `deleted', and select +its message. +@item M-n +Move to next line and select its message. +@item M-p +Move to previous line and select its message. +@item > +Move to the last line, and select its message. +@item < +Move to the first line, and select its message. +@item j +@itemx @key{RET} +Select the message on the current line (ensuring that the RMAIL buffer +appears on the screen). With argument @var{n}, select message number +@var{n} and move to its line in the summary buffer; this signals an +error if the message is not listed in the summary buffer. +@item M-s @var{pattern} @key{RET} +Search through messages for @var{pattern} starting with the current +message; select the message found, and move point in the summary buffer +to that message's line. +@end table + +@vindex rmail-redisplay-summary + Deletion, undeletion, and getting new mail, and even selection of a +different message all update the summary buffer when you do them in the +Rmail buffer. If the variable @code{rmail-redisplay-summary} is +non-@code{nil}, these actions also bring the summary buffer back onto +the screen. + +@kindex Q @r{(Rmail summary)} +@findex rmail-summary-wipe +@kindex q @r{(Rmail summary)} +@findex rmail-summary-quit + When you are finished using the summary, type @kbd{Q} +(@code{rmail-summary-wipe}) to delete the summary buffer's window. You +can also exit Rmail while in the summary: @kbd{q} +(@code{rmail-summary-quit}) deletes the summary window, then exits from +Rmail by saving the Rmail file and switching to another buffer. + +@node Rmail Sorting +@section Sorting the Rmail File ++@cindex sorting Rmail file ++@cindex Rmail file sorting + +@table @kbd ++@findex rmail-sort-by-date +@item M-x rmail-sort-by-date +Sort messages of current Rmail file by date. + ++@findex rmail-sort-by-subject +@item M-x rmail-sort-by-subject +Sort messages of current Rmail file by subject. + ++@findex rmail-sort-by-author +@item M-x rmail-sort-by-author +Sort messages of current Rmail file by author's name. + ++@findex rmail-sort-by-recipient +@item M-x rmail-sort-by-recipient +Sort messages of current Rmail file by recipient's names. + ++@findex rmail-sort-by-correspondent +@item M-x rmail-sort-by-correspondent +Sort messages of current Rmail file by the name of the other +correspondent. + ++@findex rmail-sort-by-lines +@item M-x rmail-sort-by-lines +Sort messages of current Rmail file by size (number of lines). + ++@findex rmail-sort-by-keywords +@item M-x rmail-sort-by-keywords @key{RET} @var{labels} @key{RET} +Sort messages of current Rmail file by labels. The argument +@var{labels} should be a comma-separated list of labels. The order of +these labels specifies the order of messages; messages with the first +label come first, messages with the second label come second, and so on. +Messages which have none of these labels come last. +@end table + + The Rmail sort commands perform a @emph{stable sort}: if there is no +reason to prefer either one of two messages, their order remains +unchanged. You can use this to sort by more than one criterion. For +example, if you use @code{rmail-sort-by-date} and then +@code{rmail-sort-by-author}, messages from the same author appear in +order by date. + + With a numeric argument, all these commands reverse the order of +comparison. This means they sort messages from newest to oldest, from +biggest to smallest, or in reverse alphabetical order. + +@node Rmail Display +@section Display of Messages + + Rmail reformats the header of each message before displaying it for +the first time. Reformatting hides uninteresting header fields to +reduce clutter. You can use the @kbd{t} command to show the entire +header or to repeat the header reformatting operation. + +@table @kbd +@item t +Toggle display of complete header (@code{rmail-toggle-header}). +@end table + +@vindex rmail-ignored-headers +@vindex rmail-nonignored-headers + Reformatting the header involves deleting most header fields, on the +grounds that they are not interesting. The variable +@code{rmail-ignored-headers} holds a regular expression that specifies +which header fields to hide in this way---if it matches the beginning +of a header field, that whole field is hidden. However, the variable +@code{rmail-nonignored-headers} provides a further override: a header +matching that regular expression is shown even if it matches +@code{rmail-ignored-headers} too. + +@kindex t @r{(Rmail)} +@findex rmail-toggle-header + Rmail saves the complete original header before reformatting; to see +it, use the @kbd{t} command (@code{rmail-toggle-header}). This +discards the reformatted headers of the current message and displays +it with the original header. Repeating @kbd{t} reformats the message +again, which shows only the interesting headers according to the +current values of those variable. Selecting the message again also +reformats it if necessary. + + One consequence of this is that if you edit the reformatted header +(using @kbd{e}; @pxref{Rmail Editing}), subsequent use of @kbd{t} will +discard your edits. On the other hand, if you use @kbd{e} after +@kbd{t}, to edit the original (unreformatted) header, those changes are +permanent. + + When the @kbd{t} command has a prefix argument, a positive argument +means to show the reformatted header, and a zero or negative argument +means to show the full header. + +@vindex rmail-highlighted-headers + When the terminal supports multiple fonts or colors, Rmail +highlights certain header fields that are especially interesting---by +default, the @samp{From} and @samp{Subject} fields. The variable +@code{rmail-highlighted-headers} holds a regular expression that +specifies the header fields to highlight; if it matches the beginning +of a header field, that whole field is highlighted. + + If you specify unusual colors for your text foreground and +background, the colors used for highlighting may not go well with +them. If so, specify different colors by setting the variable +@code{rmail-highlight-face} to a suitable face. To turn off +highlighting entirely in Rmail, set @code{rmail-highlighted-headers} +to @code{nil}. + + You can highlight and activate URLs in incoming messages by adding +the function @code{goto-address} to the hook +@code{rmail-show-message-hook}. Then you can browse these URLs by +clicking on them with @kbd{Mouse-2} (or @kbd{Mouse-1} quickly) or by +moving to one and typing @kbd{C-c @key{RET}}. @xref{Goto-address, +Activating URLs, Activating URLs}. + +@node Rmail Coding +@section Rmail and Coding Systems + +@cindex decoding mail messages (Rmail) + Rmail automatically decodes messages which contain non-@acronym{ASCII} +characters, just as Emacs does with files you visit and with subprocess +output. Rmail uses the standard @samp{charset=@var{charset}} header in +the message, if any, to determine how the message was encoded by the +sender. It maps @var{charset} into the corresponding Emacs coding +system (@pxref{Coding Systems}), and uses that coding system to decode +message text. If the message header doesn't have the @samp{charset} +specification, or if @var{charset} is not recognized, +Rmail chooses the coding system with the usual Emacs heuristics and +defaults (@pxref{Recognize Coding}). + +@cindex fixing incorrectly decoded mail messages + Occasionally, a message is decoded incorrectly, either because Emacs +guessed the wrong coding system in the absence of the @samp{charset} +specification, or because the specification was inaccurate. For +example, a misconfigured mailer could send a message with a +@samp{charset=iso-8859-1} header when the message is actually encoded +in @code{koi8-r}. When you see the message text garbled, or some of +its characters displayed as empty boxes, this may have happened. + +@findex rmail-redecode-body + You can correct the problem by decoding the message again using the +right coding system, if you can figure out or guess which one is +right. To do this, invoke the @kbd{M-x rmail-redecode-body} command. +It reads the name of a coding system, encodes the message body using +whichever coding system was used to decode it before, then redecodes +it using the coding system you specified. If you specified the right +coding system, the result should be readable. + + Decoding and encoding using the wrong coding system is lossless for +most encodings, in particular with 8-bit encodings such as iso-8859 or +koi8. So, if the initial attempt to redecode the message didn't +result in a legible text, you can try other coding systems until you +succeed. + + With some coding systems, notably those from the iso-2022 family, +information can be lost in decoding, so that encoding the message +again won't bring back the original incoming text. In such a case, +@code{rmail-redecode-body} cannot work. However, the problems that +call for use of @code{rmail-redecode-body} rarely occur with those +coding systems. So in practice the command works when you need it. + +@node Rmail Editing +@section Editing Within a Message + + Most of the usual Emacs commands are available in Rmail mode, though a +few, such as @kbd{C-M-n} and @kbd{C-M-h}, are redefined by Rmail for +other purposes. However, the Rmail buffer is normally read only, and +most of the letters are redefined as Rmail commands. If you want to +edit the text of a message, you must use the Rmail command @kbd{e}. + +@table @kbd +@item e +Edit the current message as ordinary text. +@end table + +@kindex e @r{(Rmail)} +@findex rmail-edit-current-message + The @kbd{e} command (@code{rmail-edit-current-message}) switches from +Rmail mode into Rmail Edit mode, another major mode which is nearly the +same as Text mode. The mode line indicates this change. + + In Rmail Edit mode, letters insert themselves as usual and the Rmail +commands are not available. When you are finished editing the message and +are ready to go back to Rmail, type @kbd{C-c C-c}, which switches back to +Rmail mode. Alternatively, you can return to Rmail mode but cancel all the +editing that you have done, by typing @kbd{C-c C-]}. + +@vindex rmail-edit-mode-hook + Entering Rmail Edit mode runs the hook @code{text-mode-hook}; then it +runs the hook @code{rmail-edit-mode-hook} (@pxref{Hooks}). It adds the +attribute @samp{edited} to the message. It also displays the full +headers of the message, so that you can edit the headers as well as the +body of the message, and your changes in the headers will be +permanent. + +@node Rmail Digest +@section Digest Messages +@cindex digest message +@cindex undigestify + + A @dfn{digest message} is a message which exists to contain and carry +several other messages. Digests are used on some moderated mailing +lists; all the messages that arrive for the list during a period of time +such as one day are put inside a single digest which is then sent to the +subscribers. Transmitting the single digest uses much less computer +time than transmitting the individual messages even though the total +size is the same, because the per-message overhead in network mail +transmission is considerable. + +@findex undigestify-rmail-message + When you receive a digest message, the most convenient way to read it is +to @dfn{undigestify} it: to turn it back into many individual messages. +Then you can read and delete the individual messages as it suits you. +To do this, select the digest message and type the command @kbd{M-x +undigestify-rmail-message}. This extracts the submessages as separate +Rmail messages, and inserts them following the digest. The digest +message itself is flagged as deleted. + +@node Out of Rmail +@section Converting an Rmail File to Inbox Format +@cindex Babyl format to Inbox format +@cindex converting Rmail file to mailbox format + +@findex unrmail + The command @kbd{M-x unrmail} converts a file in Rmail format to inbox +format (also known as the system mailbox, or mbox, format), so that +you can use it with other mail-editing tools. You must specify two +arguments, the name of the Rmail file and the name to use for the +converted file. @kbd{M-x unrmail} does not alter the Rmail file itself. + +@pindex b2m + @kbd{M-x unrmail} is useful if you can run Emacs on the machine +where the Rmail file resides, or can access the Rmail file remotely +(@pxref{Remote Files}) from a machine where Emacs is installed. If +accessing Rmail files from Emacs is impossible, you can use the +@command{b2m} program instead. @command{b2m} is part of the Emacs +distribution, it is installed into the same directory where all the +other auxiliary programs (@command{etags} etc.) are installed, and its +source is available in the Emacs source distribution, so that you +could copy the source to the target machine and compile it there. + + To convert a file @file{@var{babyl-file}} into @file{@var{mbox-file}}, +invoke @command{b2m} like this: + +@example + b2m < @var{babyl-file} > @var{mbox-file} +@end example + +@node Rmail Rot13 +@section Reading Rot13 Messages +@cindex rot13 code + + Mailing list messages that might offend some readers are sometimes +encoded in a simple code called @dfn{rot13}---so named because it +rotates the alphabet by 13 letters. This code is not for secrecy, as it +provides none; rather, it enables those who might be offended to avoid +seeing the real text of the message. + +@findex rot13-other-window + To view a buffer which uses the rot13 code, use the command @kbd{M-x +rot13-other-window}. This displays the current buffer in another window +which applies the code when displaying the text. + +@node Movemail +@section @code{movemail} program +@cindex @code{movemail} program + + When invoked for the first time, Rmail attempts to locate the +@code{movemail} program and determine its version. There are two +versions of @code{movemail} program: the native one, shipped with GNU +Emacs (the ``emacs version'') and the one included in GNU mailutils +(the ``mailutils version,'' @pxref{movemail,,,mailutils,GNU +mailutils}). They support the same command line syntax and the same +basic subset of options. However, the Mailutils version offers +additional features. + + The Emacs version of @code{movemail} is able to retrieve mail from +usual UNIX mailbox formats and from remote mailboxes using the POP3 +protocol. + + The Mailutils version is able to handle a wide set of mailbox +formats, such as plain UNIX mailboxes, @code{maildir} and @code{MH} +mailboxes, etc. It is able to retrieve remote mail using POP3 or +IMAP4 protocol, and can retrieve mail from them using a TLS encrypted +channel. It also accepts mailbox argument in the @acronym{URL} form. +The detailed description of mailbox @acronym{URL}s can be found in +@ref{URL,,,mailutils,Mailbox URL Formats}. In short, a @acronym{URL} +is: + +@smallexample +@var{proto}://[@var{user}[:@var{password}]@@]@var{host-or-file-name} +@end smallexample + +@noindent +where square brackets denote optional elements. + +@table @var +@item proto +Specifies the @dfn{mailbox protocol}, or @dfn{format} to +use. The exact semantics of the rest of @acronym{URL} elements depends +on the actual value of @var{proto} (see below). + +@item user +User name to access the remote mailbox. + +@item password +User password to access the remote mailbox. + +@item host-or-file-name +Hostname of the remote server for remote mailboxes or file name of a +local mailbox. +@end table + +@noindent +@var{Proto} can be one of: + +@table @code +@item mbox +Usual UNIX mailbox format. In this case, neither @var{user} nor +@var{pass} are used, and @var{host-or-file-name} denotes the file name of +the mailbox file, e.g., @code{mbox://var/spool/mail/smith}. + +@item mh +A local mailbox in the @acronym{MH} format. @var{User} and +@var{pass} are not used. @var{Host-or-file-name} denotes the name of +@acronym{MH} folder, e.g., @code{mh://Mail/inbox}. + +@item maildir +A local mailbox in the @acronym{maildir} format. @var{User} and +@var{pass} are not used, and @var{host-or-file-name} denotes the name of +@code{maildir} mailbox, e.g., @code{maildir://mail/inbox}. + +@item file +Any local mailbox format. Its actual format is detected automatically +by @code{movemail}. + +@item pop +A remote mailbox to be accessed via POP3 protocol. @var{User} +specifies the remote user name to use, @var{pass} may be used to +specify the user password, @var{host-or-file-name} is the name or IP +address of the remote mail server to connect to; e.g., +@code{pop://smith:guessme@@remote.server.net}. + +@item imap +A remote mailbox to be accessed via IMAP4 protocol. @var{User} +specifies the remote user name to use, @var{pass} may be used to +specify the user password, @var{host-or-file-name} is the name or IP +address of the remote mail server to connect to; +e.g., @code{imap://smith:guessme@@remote.server.net}. +@end table + + Alternatively, you can specify the file name of the mailbox to use. +This is equivalent to specifying the @samp{file} protocol: + +@smallexample +/var/spool/mail/@var{user} @equiv{} file://var/spool/mail/@var{user} +@end smallexample + +@vindex rmail-movemail-program +@vindex rmail-movemail-search-path + The variable @code{rmail-movemail-program} controls which version of +@code{movemail} to use. If that is a string, it specifies the +absolute file name of the @code{movemail} executable. If it is +@code{nil}, Rmail searches for @code{movemail} in the directories +listed in @code{rmail-movemail-search-path} and @code{exec-path}, then +in @code{exec-directory}. + +@node Remote Mailboxes +@section Retrieving Mail from Remote Mailboxes +@pindex movemail + + Some sites use a method called POP for accessing users' inbox data +instead of storing the data in inbox files. The @code{Emacs +movemail} can work with POP if you compile it with the macro +@code{MAIL_USE_POP} defined. (You can achieve that by specifying +@samp{--with-pop} when you run @code{configure} during the +installation of Emacs.) + +The Mailutils @code{movemail} by default supports POP, unless it was +configured with @samp{--disable-pop} option. + +Both versions of @code{movemail} only work with POP3, not with older +versions of POP. + +@cindex @env{MAILHOST} environment variable +@cindex POP mailboxes + No matter which flavor of @code{movemail} you use, you can specify +POP inbox by using POP @dfn{URL} (@pxref{Movemail}). A POP +@acronym{URL} is a ``file name'' of the form +@samp{pop://@var{username}@@@var{hostname}}, where +@var{hostname} is the host name or IP address of the remote mail +server and @var{username} is the user name on that server. +Additionally, you may specify the password in the mailbox @acronym{URL}: +@samp{pop://@var{username}:@var{password}@@@var{hostname}}. In this +case, @var{password} takes preference over the one set by +@code{rmail-remote-password}. This is especially useful if you have +several remote mailboxes with different passwords. + + For backward compatibility, Rmail also supports two alternative ways +of specifying remote POP mailboxes. First, specifying an inbox name +in the form @samp{po:@var{username}:@var{hostname}} is equivalent to +@samp{pop://@var{username}@@@var{hostname}}. Alternatively, you may +set a ``file name'' of @samp{po:@var{username}} in the inbox list of +an Rmail file. @code{movemail} will handle such a name by opening a +connection to the POP server. In this case, the @env{MAILHOST} +environment variable specifies the machine on which to look for the +POP server. + +@cindex IMAP mailboxes + Another method for accessing remote mailboxes is IMAP. This method is +supported only by the Mailutils @code{movemail}. To specify an IMAP +mailbox in the inbox list, use the following mailbox @acronym{URL}: +@samp{imap://@var{username}[:@var{password}]@@@var{hostname}}. The +@var{password} part is optional, as described above. + +@vindex rmail-remote-password +@vindex rmail-remote-password-required +@vindex rmail-pop-password +@vindex rmail-pop-password-required + Accessing a remote mailbox may require a password. Rmail uses the +following algorithm to retrieve it: + +@enumerate +@item +If the @var{password} is present in mailbox URL (see above), it is +used. +@item +If the variable @code{rmail-remote-password} is non-@code{nil}, its +value is used. +@item +Otherwise, if @code{rmail-remote-password-required} is non-@code{nil}, +then Rmail will ask you for the password to use. +@item +Otherwise, Rmail assumes no password is required. +@end enumerate + + For compatibility with previous versions, the variables +@code{rmail-pop-password} and @code{rmail-pop-password-required} may +be used instead of @code{rmail-remote-password} and +@code{rmail-remote-password-required}. + +@vindex rmail-movemail-flags + If you need to pass additional command-line flags to @code{movemail}, +set the variable @code{rmail-movemail-flags} a list of the flags you +wish to use. Do not use this variable to pass the @samp{-p} flag to +preserve your inbox contents; use @code{rmail-preserve-inbox} instead. + +@cindex Kerberos POP authentication + The @code{movemail} program installed at your site may support +Kerberos authentication. If it is +supported, it is used by default whenever you attempt to retrieve +POP mail when @code{rmail-pop-password} and +@code{rmail-pop-password-required} are unset. + +@cindex reverse order in POP inboxes + Some POP servers store messages in reverse order. If your server does +this, and you would rather read your mail in the order in which it was +received, you can tell @code{movemail} to reverse the order of +downloaded messages by adding the @samp{-r} flag to +@code{rmail-movemail-flags}. + +@cindex TLS encryption (Rmail) + Mailutils @code{movemail} supports TLS encryption. If you wish to +use it, add the @samp{--tls} flag to @code{rmail-movemail-flags}. + +@node Other Mailbox Formats +@section Retrieving Mail from Local Mailboxes in Various Formats + + If your incoming mail is stored on a local machine in a format other +than UNIX mailbox, you will need the Mailutils @code{movemail} to +retrieve it. @xref{Movemail}, for the detailed description of +@code{movemail} versions. For example, to access mail from a inbox in +@code{maildir} format located in @file{/var/spool/mail/in}, you would +include the following in the Rmail inbox list: + +@smallexample +maildir://var/spool/mail/in +@end smallexample + +@ignore + arch-tag: 034965f6-38df-47a2-a9f1-b8bc8ab37e23 +@end ignore diff --cc doc/lispref/ChangeLog index e5097a4d172,00000000000..5c4f9159066 mode 100644,000000..100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@@ -1,6309 -1,0 +1,6342 @@@ +2007-10-06 Juri Linkov + + * text.texi (Filling): Document fill-paragraph-or-region. + +2007-10-05 Juanma Barranquero + + * display.texi (Auto Faces): Fix typo. + ++2007-10-02 Richard Stallman ++ ++ * display.texi (Display Property): Explain some display specs ++ don't let you move point in. ++ ++ * frames.texi (Cursor Parameters): Describe ++ cursor-in-non-selected-windows here. Explain more values. ++ ++ * windows.texi (Basic Windows): Don't describe ++ cursor-in-non-selected-windows here. ++ ++2007-10-01 Eli Zaretskii ++ ++ * processes.texi (Misc Network): Note that these functions are ++ supported only on some systems. ++ +2007-10-01 Richard Stallman + + * display.texi (Overlay Properties): Explain nil as priority. + Explain that conflicts are unpredictable if not resolved by + priorities. + +2007-09-23 Richard Stallman + + * macros.texi (Backquote): Minor clarification. + ++2007-09-19 Richard Stallman ++ ++ * display.texi (Display Property): Explain multiple display specs. ++ Clarify when they work in parallel and when one overrides. ++ Fix error in example. ++ +2007-09-06 Glenn Morris + + * Move from lispref/ to doc/lispref/. Change all setfilename + commands to use ../../info. + * Makefile.in (infodir): Go up one more level. + (usermanualdir): Change from ../man to ../emacs. + (miscmanualdir): New. + (dist): Use new variable miscmanualdir. + * makefile.w32-in (infodir, texinputdir): Go up one more level. + (usermanualdir): Change from ../man to ../emacs. + ++2007-08-30 Martin Rudalics ++ ++ * commands.texi (Command Loop Info): Advise against changing ++ most variables described here. Explain new variable ++ last-repeatable-command. ++ +2007-08-29 Glenn Morris + + * elisp.texi (EMACSVER): Increase to 23.0.50. + +2007-08-29 Dan Nicolaescu + + * frames.texi (Basic Parameters): Add display-environment-variable + and term-environment-variable. + +2007-08-28 Juri Linkov + + * display.texi (Image Formats, Other Image Types): Add SVG. + +2007-08-28 Juri Linkov + + * display.texi (Images): Move formats-related text to new node + "Image Formats". + (Image Formats): New node. + ++2007-08-27 Richard Stallman ++ ++ * windows.texi (Window Configurations): Clarify what ++ a window configuration saves. ++ +2007-08-25 Richard Stallman + + * display.texi (Images): Delete redundant @findex. + +2007-08-16 Richard Stallman + + * processes.texi (Asynchronous Processes): Clarify + doc of start-file-process. + +2007-08-08 Martin Rudalics + + * modes.texi (Example Major Modes): Fix typo. + +2007-08-08 Glenn Morris + + * intro.texi (nil and t): Do not use `iff' in documentation. + + * tips.texi (Documentation Tips): Recommend against `iff'. + +2007-08-07 Chong Yidong + + * display.texi (Image Cache): Document image-refresh. + +2007-08-06 Martin Rudalics + + * windows.texi (Size of Window): Document window-full-width-p. + +2007-07-25 Glenn Morris + + * gpl.texi (GPL): Replace license with GPLv3. + + * Relicense all FSF files to GPLv3 or later. + +2007-07-24 Michael Albinus + + * processes.texi (Synchronous Processes): + Add `process-file-shell-command'. + (Asynchronous Processes): Mention restricted use of + `process-filter' and `process-sentinel' in + `start-file-process'. Add `start-file-process-shell-command'. + +2007-07-17 Michael Albinus + + * files.texi (Magic File Names): Introduce optional parameter + IDENTIFICATION for `file-remote-p'. + +2007-07-16 Richard Stallman + + * display.texi (Defining Faces): Fix previous change. + +2007-07-14 Richard Stallman + + * control.texi (Handling Errors): Document `debug' in handler list. + +2007-07-10 Richard Stallman + + * display.texi (Defining Faces): Explain C-M-x feature for defface. + +2007-07-09 Richard Stallman + + * files.texi (Magic File Names): Rewrite previous change. + +2007-07-08 Michael Albinus + + * files.texi (Magic File Names): Introduce optional parameter + CONNECTED for `file-remote-p'. + +2007-07-07 Michael Albinus + + * processes.texi (Asynchronous Processes): + * files.texi (Magic File Names): Add `start-file-process'. + +2007-06-27 Richard Stallman + + * files.texi (Format Conversion Piecemeal): Clarify + `after-insert-file-functions' calling convention. + +2007-06-27 Michael Albinus + + * files.texi (Magic File Names): Remove `dired-call-process'. + Add `process-file'. + +2007-06-27 Kenichi Handa + + * text.texi (Special Properties): Fix description about + `composition' property. + +2007-06-26 Kenichi Handa + + * nonascii.texi (Default Coding Systems): Document about the + return value `undecided'. + +2007-06-25 David Kastrup + + * keymaps.texi (Active Keymaps): Document new POSITION argument of + `current-active-maps'. + +2007-06-24 Karl Berry + + * elisp.texi, vol1.texi, vol2.texi: New Back-Cover Text. + +2007-06-15 Juanma Barranquero + + * display.texi (Overlay Arrow): Doc fix. + +2007-06-14 Karl Berry + + * anti.texi (Antinews): Typo. + +2007-06-14 Chong Yidong + + * display.texi (Image Cache): Document image-refresh. + +2007-06-12 Karl Berry + + * vol1.texi, vol2.texi, two-volume-cross-refs.txt: Update. + * two-volume.make: New file. + * .cvsignore: Ignore two-volume files. + +2007-06-12 Tom Tromey + + * os.texi (Init File): Document user-emacs-directory. + +2007-06-03 Nick Roberts + + * commands.texi (Click Events): Describe width and height when + object is nil. + +2007-05-30 Nick Roberts + + * commands.texi (Click Events): Layout more logically. Describe + width and height. + (Drag Events, Motion Events): Update to new format for position. + +2007-06-02 Richard Stallman + + * frames.texi (Color Parameters): Add xref to (emacs)Standard Faces. + +2007-06-02 Chong Yidong + + * Version 22.1 released. + +2007-06-01 Stefan Monnier + + * text.texi (Special Properties): Correct meaning of fontified face. + +2007-05-30 Richard Stallman + + * text.texi (Special Properties): Add link to Adjusting Point. + +2007-05-12 Richard Stallman + + * text.texi (Margins): indent-to-left-margin is not the default. + (Mode-Specific Indent): For indent-line-function, the default + is indent-relative. + + * modes.texi (Example Major Modes): Explain last line of text-mode + is redundant. + +2007-05-10 Richard Stallman + + * keymaps.texi (Scanning Keymaps): Update where-is-internal example. + + * help.texi (Keys in Documentation): Add reference to + Documentation Tips. + + * files.texi (Format Conversion): TO-FN gets three arguments. + + * modes.texi (Auto Major Mode): Document file-start-mode-alist. + +2007-05-10 Thien-Thi Nguyen + + * elisp.texi (Top): Remove "Saving Properties" from detailed menu. + * files.texi (Format Conversion): Expand intro; add menu. + (Format Conversion Overview, Format Conversion Round-Trip) + (Format Conversion Piecemeal): New nodes/subsections. + * hooks.texi: Xref "Format Conversion" , not "Saving Properties". + * text.texi (Text Properties): Remove "Saving Properties" from menu. + (Saving Properties): Delete node/subsection. + +2007-05-07 Karl Berry + + * elisp.texi (EMACSVER): Back to 22. + +2007-05-06 Richard Stallman + + * processes.texi (Accepting Output): Revert most of previous change. + +2007-05-05 Richard Stallman + + * processes.texi (Accepting Output): accept-process-output + uses microseconds, not milliseconds. But that arg is obsolete. + +2007-05-04 Karl Berry + + * elisp.texi (EMACSVER) [smallbook]: 22.1, not 22. + +2007-05-04 Eli Zaretskii + + * tips.texi (Documentation Tips): Rearrange items to place the + more important ones first. Add an index entry for hyperlinks. + +2007-05-03 Karl Berry + + * elisp.texi (\urlcolor, \linkcolor) [smallbook]: \Black for printing. + (EMACSVER) [smallbook]: 22 for printed version. + + * control.texi (Signaling Errors) : texinfo.tex is fixed, + so restore anchor to normal position after defun. Found by Kevin Ryde. + +2007-04-26 Glenn Morris + + * elisp.texi (EMACSVER): Increase to 22.1.50. + +2007-04-28 Karl Berry + + * elisp.texi: Improve line breaks on copyright page, + similar layout to emacs manual, 8.5x11 by default. + +2007-04-24 Richard Stallman + + * text.texi (Special Properties): Add xref to Overlay Properties. + + * display.texi (Overlay Properties): Add xref to Special Properties. + +2007-04-22 Richard Stallman + + * keymaps.texi (Extended Menu Items): Move the info about + format with cached keyboard binding. + +2007-04-21 Richard Stallman + + * text.texi (Special Properties): Clarify previous change. + + * files.texi (File Name Expansion): Clarify previous change. + + * display.texi (Attribute Functions): Fix example for + face-attribute-relative-p. + +2007-04-19 Kenichi Handa + + * text.texi (Special Properties): Document composition property. + +2007-04-19 Glenn Morris + + * files.texi (File Name Expansion): Mention "superroot". + +2007-04-15 Chong Yidong + + * frames.texi (Multiple Displays): Add note about "multi-monitor" + setups. + (Display Feature Testing): Note that display refers to all + physical monitors for multi-monitor setups. + +2007-04-14 Richard Stallman + + * lists.texi (Sets And Lists): Clarify `delete' examples. + Remove spurious xref to same node. + Clarify xref for add-to-list. + +2007-04-12 Nick Roberts + + * keymaps.texi (Format of Keymaps): Remove spurious ")" from + value of lisp-mode-map. + +2007-04-11 Karl Berry + + * anti.texi (Antinews): + * display.texi (Overlay Properties, Defining Images): + * processes.texi (Synchronous Processes, Sentinels): + * syntax.texi (Syntax Table Internals): + * searching.texi (Regexp Special): + * nonascii.texi (Default Coding Systems): + * text.texi (Special Properties): + * minibuf.texi (Basic Completion): Wording to improve breaks in + 8.5x11 format. + * elisp.texi (smallbook): New @set to more easily switch between + smallbook and 8.5x11. + +2007-04-11 Richard Stallman + + * text.texi (Lazy Properties): Minor fix. + +2007-04-08 Karl Berry + + * symbols.texi (Plists and Alists): Period after "vs" in index entries. + * macros.texi (Backquote): Downcase Backquote in index entries for + consistency. + +2007-04-08 Richard Stallman + + * text.texi (Adaptive Fill): Just describe default, + don't show it (since it contains non-ASCII chars). + +2007-04-07 Karl Berry + + * text.texi (Adaptive Fill) [@iftex]: Omit binary characters in + adaptive-fill-regexp's value, since they are not in the standard + TeX fonts. + +2007-04-07 Guanpeng Xu + + * display.texi (Defining Faces): Fix example. + +2007-04-07 Karl Berry + + * display.texi (Button Buffer Commands): Improve page break. + +2007-04-07 Richard Stallman + + * advice.texi (Activation of Advice): Remove redundant index entry. + + * backups.texi: Improve index entries. Remove redundant ones. + + * compile.texi (Byte Compilation): Improve index entry. + + * hash.texi (Creating Hash): Improve index entry. + + * symbols.texi (Definitions): Improve index entry. + + * edebug.texi: Improve index entries. Remove redundant/useless ones. + + * maps.texi (Standard Keymaps): Remove useless index entry. + + * help.texi (Documentation Basics): Remove redundant index entries. + + * customize.texi: Improve index entries. + Remove redundant/useless ones. + + * locals.texi (Standard Buffer-Local Variables): Clarify intro text. + + * streams.texi (Output Variables): Improve index entry. + + * abbrevs.texi (Abbrevs): Remove useless index entry. + + * macros.texi (Expansion): Remove useless index entry. + + * text.texi: Improve index entries. Remove redundant/useless ones. + (Text Properties, Examining Properties) + (Special Properties): Use "property category" instead of "category" + to refer to the `category' property. + + * positions.texi: Improve index entries. Remove useless one. + + * lists.texi: Improve index entries. Remove redundant/useless ones. + + * os.texi: Improve index entries. + (Timers): Fix previous change. + + * buffers.texi: Improve index entries. + (Modification Time): Get rid of term "obsolete buffer". + + * debugging.texi: Improve index entries. + (Test Coverage): Add xref to other test coverage ftr. + + * eval.texi: Improve index entry. Remove redundant ones. + + * numbers.texi: Improve index entries. Remove redundant/useless ones. + + * files.texi: Improve index entries. Remove redundant/useless ones. + + * objects.texi: Improve index entries. + + * processes.texi: Improve index entries. + + * modes.texi: Improve index entry. Remove redundant one. + + * nonascii.texi: Improve index entries. + + * internals.texi: Improve index entries. + + * syntax.texi: Improve index entries. + + * keymaps.texi (Active Keymaps): Improve index entries. + + * commands.texi: Improve index entries. Remove redundant/useless ones. + + * frames.texi: Improve index entries. Remove redundant/useless ones. + + * markers.texi: Improve index entries. Remove redundant ones. + + * tips.texi: Improve index entries. + + * loading.texi (Unloading): Improve index entry. + + * variables.texi: Improve index entries. Remove redundant one. + + * sequences.texi: Improve index entry. + + * display.texi: Improve index entries. Remove redundant ones. + + * windows.texi: Improve index entries. + + * searching.texi: Improve index entries. Remove redundant one. + + * strings.texi (Case Tables): Improve last change. + +2007-04-04 Chong Yidong + + * strings.texi (Case Tables): Document with-case-table and + ascii-case-table. + +2007-04-03 Karl Berry + + * processes.texi (Network): Reword to improve page break. + +2007-04-03 Eli Zaretskii + + * functions.texi (Inline Functions): Describe more disadvantages + of defsubst, and make advice against it stronger. + +2007-04-02 Karl Berry + + * backups.texi (Backup Names): Avoid widow words. + * modes.texi (Example Major Modes): Align last comment. + +2007-04-01 Chong Yidong + + * keymaps.texi (Remapping Commands): Document new arg to + command-remapping. + +2007-04-01 Karl Berry + + * processes.texi (Low-Level Network): Typo. + * loading.texi (Hooks for Loading): Avoid double "the". + * keymaps.texi (Key Sequences): No double "and". + (Changing Key Bindings): Shorten to improve line break. + +2007-03-31 Glenn Morris + + * os.texi (Timers): Fix description of run-at-time TIME formats. + +2007-03-31 Richard Stallman + + * display.texi (Invisible Text): Correct buffer-invisibility-spec + regarding ellipsis. + +2007-03-31 Eli Zaretskii + + * intro.texi (nil and t): + * symbols.texi (Plists and Alists): + * variables.texi (Variable Aliases, Constant Variables): + * functions.texi (Defining Functions): + * advice.texi (Advising Primitives): + * debugging.texi (Syntax Errors, Compilation Errors): + * minibuf.texi (Minibuffer Windows): + * commands.texi (Adjusting Point): + * modes.texi (Syntactic Font Lock, Faces for Font Lock) + (Auto Major Mode, Major Mode Conventions): + * help.texi (Describing Characters): + * files.texi (Create/Delete Dirs, Information about Files) + (File Locks, Writing to Files, Reading from Files) + (Saving Buffers): + * windows.texi (Resizing Windows, Cyclic Window Ordering): + * frames.texi (Finding All Frames): + * positions.texi (Buffer End, Motion): + * markers.texi (The Region): + * text.texi (Deletion, Near Point): + * display.texi (Displaying Messages, Truncation): + * os.texi (Processor Run Time): + * tips.texi (Key Binding Conventions, Programming Tips) + (Warning Tips, Documentation Tips, Comment Tips): + * internals.texi (Memory Usage): Improve indexing. + + * variables.texi (Frame-Local Variables): + * functions.texi (Argument List): + * loading.texi (Library Search): + * streams.texi (Output Variables): + * keymaps.texi (Translation Keymaps, Searching Keymaps): + * searching.texi (Replacing Match, Search and Replace): + * processes.texi (Byte Packing, Decoding Output) + (Accepting Output, Network Servers, Shell Arguments): + * display.texi (Abstract Display, Image Cache, Scroll Bars): + * windows.texi (Window Point, Window Start): + * frames.texi (Management Parameters, Frame Parameters, Frame Titles): + * commands.texi (Reading Input, Keyboard Events): + * minibuf.texi (Reading File Names, Minibuffer Completion) + (Recursive Mini): + * positions.texi (List Motion): + * hash.texi (Hash Tables, Creating Hash, Defining Hash): + * numbers.texi (Arithmetic Operations, Math Functions) + (Predicates on Numbers, Comparison of Numbers): + (Numeric Conversions): + * locals.texi (Standard Buffer-Local Variables): + * maps.texi (Standard Keymaps): + * os.texi (User Identification, System Environment, Recording Input) + (X11 Keysyms): + * nonascii.texi (Non-ASCII Characters, Splitting Characters): + * backups.texi (Backups and Auto-Saving): + * customize.texi (Customization, Group Definitions) + (Variable Definitions): + * compile.texi (Byte Compilation): Improve index entries. + +2007-03-31 Karl Berry + + * macros.texi (Defining Macros): Avoid widow syllable. + +2007-03-31 Eli Zaretskii + + * elisp.texi (Top): Postscript -> PostScript. + + * display.texi (Images, Postscript Images): Postscript -> PostScript. + +2007-03-31 Markus Triska + + * internals.texi (Writing Emacs Primitives): Untabify `For'. + +2007-03-30 Karl Berry + + * lists.texi (List-related Predicates): Remove spurious @need. + (Setcdr): Use @smallexample to improve page break. + (Association Lists) : Reword to improve page break. + + * strings.texi (String Conversion): Insert blank line to improve + page break. + + * numbers.texi (Random Numbers): Use @minus{}. + (Math Functions): Use @minus{}. + + * intro.texi (Acknowledgements): Avoid line breaks before middle + initials. + +2007-03-24 Eli Zaretskii + + * errors.texi (Standard Errors): Add an index entry. + +2007-03-19 Richard Stallman + + * os.texi (Recording Input): recent-keys now gives 300 keys. + +2007-03-12 Glenn Morris + + * os.texi: Replace "daylight savings" with "daylight saving" + throughout. + +2007-03-05 Richard Stallman + + * variables.texi (File Local Variables): Update + enable-local-variables values. + +2007-03-04 Richard Stallman + + * syntax.texi (Control Parsing): Minor clarification. + + * strings.texi (Formatting Strings): Clarify width, precision, flags. + + * sequences.texi (Sequence Functions): Move string-bytes away, + add xref. + + * nonascii.texi (Text Representations): Move string-bytes here. + + * modes.texi (Major Mode Conventions): Fundamental mode is exception. + + * minibuf.texi (Basic Completion): Minor clarification. + + * markers.texi (The Mark): Clarify existence vs activation of mark. + Other cleanup. + + * display.texi (Finding Overlays): Write better example. + + * compile.texi (Eval During Compile): Clarify putting macros + in eval-when-compile. + +2007-02-25 Vinicius Jose Latorre + + * loading.texi (How Programs Do Loading): Fix anchor position at + load-read-function definition doc. (tiny change) + +2007-02-21 Kim F. Storm + + * strings.texi (Text Comparison): Mention that assoc-string + converts symbols to strings before testing. + +2007-02-17 Kim F. Storm + + * processes.texi (Bindat Spec): Vector types can have optional + element type. + (Bindat Examples): Fix example. Add vector with element type. + +2007-02-16 Andreas Schwab + + * strings.texi (Formatting Strings): Document '+' flag. + +2007-02-15 Juanma Barranquero + + * strings.texi (Modifying Strings): Clarify that `clear-string' + always converts the string to unibyte. + +2007-02-14 Kim F. Storm + + * display.texi (Glyphs): Add make-glyph-code, glyph-char, glyph-face. + Rewrite glyph code description to refer to these functions. + Remove details of encoding face number and char into integer code. + +2007-02-03 Alan Mackenzie + + * loading.texi (Hooks for Loading): Make the description of + `eval-after-load' more detailed, and amend the description of + after-load-alist, in accordance with changes from 2006-05. + +2007-02-03 Chong Yidong + + * modes.texi (Defining Minor Modes): Document that a :require + keyword or similar may be required to make saved customization + variables work. + +2007-02-03 Eli Zaretskii + + * elisp.texi (Top): Make the detailed menu headers compliant with + Texinfo guidelines and with what texnfo-upd.el expects. Add + comments to prevent people from inadvertently modifying the key + parts needed by `texinfo-multiple-files-update'. + +2007-02-02 Eli Zaretskii + + * elisp.texi (Top): Update the top-level menus. + + * syntax.texi (Categories): Add index entries. + +2007-02-01 Juanma Barranquero + + * display.texi (Attribute Functions): Fix name and description of + the UNDERLINE arg of `set-face-underline-p'. + +2007-01-29 Eli Zaretskii + + * elisp.texi (Top): Add "Standard Errors", "Standard Buffer-Local + Variables", and "Standard Keymaps" to the detailed menu. + + * variables.texi (Future Local Variables): Add index entry. + +2007-01-28 Richard Stallman + + * tips.texi (Coding Conventions): Clarify the tip about macros + that define a function or a variable. + + * files.texi (File Attributes): UID and GID can be floats. + (Magic File Names): Explain why deferring all operations to + the standard handler does not work. + +2007-01-23 Martin Rudalics + + * backups.texi (Reverting): Use "buffer" instead of "file" + when talking about major and minor modes. + +2007-01-21 Richard Stallman + + * help.texi (Documentation): Add xref to Documentation Tips. + +2007-01-14 Juanma Barranquero + + * tips.texi (Coding Conventions): Fix typos. + +2007-01-05 Richard Stallman + + * modes.texi (Defining Minor Modes): Fix previous change. + +2007-01-03 Richard Stallman + + * customize.texi (Variable Definitions, Customization Types): + Don't use * in doc string for defcustom. + +2007-01-02 Richard Stallman + + * variables.texi (Variable Aliases): Clarify that aliases vars + always have the same value. + + * processes.texi (Bindat Spec): Fix Texinfo usage. + + * modes.texi (Defining Minor Modes): Explain effect of command + defined with define-global-minor-mode on new buffers. + +2006-12-30 Kim F. Storm + + * keymaps.texi (Tool Bar): Describe `grow-only' value of + `auto-resize-tool-bars'. + +2006-12-30 Richard Stallman + + * keymaps.texi (Active Keymaps): Fix previous change. + +2006-12-30 Nick Roberts + + * keymaps.texi (Active Keymaps): Make xref to lookup-key. + +2006-12-30 Kim F. Storm + + * processes.texi (Bindat Spec): Clarify using field names in + length specifications. + +2006-12-29 Kim F. Storm + + * processes.texi (Bindat Spec): Explain eval forms and lengths better. + Add count and index variables for eval forms in repeat blocks. + +2006-12-24 Richard Stallman + + * customize.texi (Variable Definitions): Document + new name custom-add-frequent-value. + +2006-12-19 Kim F. Storm + + * commands.texi (Misc Events): User signals now result in sigusr1 + and sigusr2 events which are handled through special-event-map. + (Special Events): User signals and drag-n-drop are special. + +2006-12-17 Richard Stallman + + * loading.texi (Named Features): Explain subfeatures better. + + * customize.texi: Use "option" only for user options. + For the keyword values inside defcustom etc, say "keywords". + For :options value's elements, say "elements". + :group should not be omitted. + + * syntax.texi (Parsing Expressions): Split up node. + (Motion via Parsing, Position Parse, Parser State) + (Low-Level Parsing, Control Parsing): New subnodes. + (Parser State): Document syntax-ppss-toplevel-pos. + + * positions.texi (List Motion): Punctuation fix. + + * files.texi (File Name Completion): Document PREDICATE arg + to file-name-completion. + +2006-12-16 Eli Zaretskii + + * internals.texi (Building Emacs, Writing Emacs Primitives): + Add index entries. + +2006-12-11 Richard Stallman + + * modes.texi (Font Lock Basics): Explain how nil for font-lock-defaults + affects face menu. Explain how to make it non-nil without enabling + any fontification. + +2006-12-10 Chong Yidong + + * modes.texi (Font Lock Basics): Document nil value of + font-lock-defaults. + +2006-12-10 Glenn Morris + + * abbrevs.texi (Defining Abbrevs): Mention `define-abbrev' 'force + value for system-flag argument. Abbrev tables may not be empty + when major modes are loaded. + +2006-12-08 Juanma Barranquero + + * makefile.w32-in (maintainer-clean): Partially revert last + change; delete "elisp-?" and "elisp-??" instead of "elisp-*" + to protect elisp-covers.texi. + +2006-12-07 Juanma Barranquero + + * makefile.w32-in (maintainer-clean): Depend on `distclean'. + Don't remove elisp* info files; they are already deleted by the + `clean' and `distclean' targets, and they are in the $(infodir) + directory, not the current one. + +2006-12-04 Kim F. Storm + + * commands.texi (Misc Events): Update signal events. + (Event Examples): Add signal example. + +2006-11-29 Richard Stallman + + * frames.texi (Visibility of Frames): Explain visible windows + can be covered by others. Add xref for raise-frame. + +2006-11-28 Richard Stallman + + * searching.texi (Regexp Special): Update when ^ is special. + +2006-11-27 Eli Zaretskii + + * customize.texi (Customization, Common Keywords) + (Group Definitions, Variable Definitions, Composite Types) + (Type Keywords, Customization Types): Add index entries for + various customization keywords. + +2006-11-23 Stefan Monnier + + * modes.texi (Multiline Font Lock): Rephrase some parts for clarity. + +2006-11-10 Jan Dj,Ad(Brv + + * frames.texi (Window System Selections): Remove clipboard from + description of selection-coding-system. + +2006-11-06 Richard Stallman + + * lists.texi (List Variables): Document COMPARE-FN. + + * keymaps.texi: Avoid use of "binding" to mean a relation; + use it only to refer to the meaning associated with a key. + (Keymaps): Change menu node description. + + * elisp.texi (Top): Change menu node description. + + * display.texi (Managing Overlays): Document overlay-recenter. + +2006-10-29 Chong Yidong + + * Makefile.in: Use relative paths to avoid advertising filesystem + contents during compilation. + +2006-10-23 Kim F. Storm + + * commands.texi (Event Input Misc): Update unread-command-events. + +2006-10-23 Nick Roberts + + * lists.texi (Sets And Lists): Fix typos. + +2006-10-18 Juanma Barranquero + + * control.texi (Processing of Errors): Use @var for an argument, + not @code. + +2006-10-16 Richard Stallman + + * edebug.texi (Edebug Recursive Edit): Minor cleanup. + + * keymaps.texi (Format of Keymaps): Show all the keymap element + patterns that result from menu items. + (Key Lookup): Minor cleanups. + + * modes.texi (Precalculated Fontification): Don't say that + not setting font-lock-defaults avoids loading font-lock. + + * help.texi (Documentation): Move xref to Emacs Manual here. + (Documentation Basics): From here. + Also doc emacs-lisp-docstring-fill-column. + + * elisp.texi: Update version and ISBN. + + * commands.texi (Interactive Call): Clarify KEYS arg to + call-interactively is a vector. + (Command Loop Info): Delete anchor in this-command-keys. + Add anchor in this-command-keys-vector. + (Recursive Editing): Document how recursive-edit + handles the current buffer. + +2006-10-13 Chong Yidong + + * frames.texi (Frame Titles): %c and %l are ignored in + frame-title-format. + +2006-10-11 Richard Stallman + + * keymaps.texi (Key Sequences): Clarify use of kbd. + +2006-10-10 Kim F. Storm + + * lists.texi (Sets And Lists): Add memql. + +2006-10-03 Richard Stallman + + * searching.texi (Char Classes): Document :multibyte: and :unibyte:. + Clarify :ascii: and :nonascii:. + +2006-09-29 Juri Linkov + + * modes.texi (%-Constructs): Reorder coding systems in the + documentation of %z to the real order displayed in the modeline. + +2006-09-25 Richard Stallman + + * os.texi (Timers): Describe timer-max-repeats. + +2006-09-25 Chong Yidong + + * os.texi (Timers): Mention with-local-quit. + +2006-09-24 Richard Stallman + + * searching.texi (Searching and Matching): Mention property search. + + * commands.texi (Command Loop Info): Explain how read-event affects + this-command-keys. + +2006-09-20 Richard Stallman + + * os.texi (Timers): Clarify about REPEAT when timer is delayed. + + * windows.texi (Window Start): Minor cleanups. + +2006-09-20 Kim F. Storm + + * windows.texi (Window Start): pos-visible-in-window-p allows + specifying t for position to mean "end of window". + Add window-line-height. + + * anti.texi (Antinews): Mention window-line-height. + +2006-09-19 David Kastrup + + * keymaps.texi (Searching Keymaps): Small clarification. + +2006-09-18 Richard Stallman + + * keymaps.texi (Creating Keymaps): Explain that keymap prompt strings + cause keyboard menus. + (Menu Keymaps): Likewise. + (Defining Menus, Keyboard Menus): Clarify. + + * text.texi (Fields): Clarify explanation of constrain-to-field. + +2006-09-16 Eli Zaretskii + + * variables.texi (Tips for Defining): Fix a typo. + +2006-09-15 Richard Stallman + + * keymaps.texi (Remapping Commands, Searching Keymaps) + (Active Keymaps): Clean up previous change. + +2006-09-15 Jay Belanger + + * gpl.texi: Replace "Library Public License" by "Lesser Public + License" throughout. + +2006-09-15 David Kastrup + + * keymaps.texi (Active Keymaps): Adapt description to use + `get-char-property' instead `get-text-property'. Explain how + mouse events change this. Explain the new optional argument of + `key-binding' and its mouse-dependent lookup. + (Searching Keymaps): Adapt description similarly. + (Remapping Commands): Explain the new optional argument of + `command-remapping'. + +2006-09-14 Richard Stallman + + * keymaps.texi (Searching Keymaps): Clarification. + (Active Keymaps): Refer to Searching Keymaps instead of duplication. + +2006-09-13 Richard Stallman + + * objects.texi (Character Type): Node split. + Add xref to Describing Characters. + (Basic Char Syntax, General Escape Syntax) + (Ctl-Char Syntax, Meta-Char Syntax): New subnodes. + +2006-09-11 Richard Stallman + + * display.texi (Display Table Format): Wording clarification. + (Glyphs): Clarifications. + +2006-09-10 Chong Yidong + + * keymaps.texi (Active Keymaps): Mention that key-binding checks + local maps. + +2006-09-10 Kim F. Storm + + * display.texi (Forcing Redisplay): Document return value of + function redisplay. + +2006-09-09 Richard Stallman + + * windows.texi (Window Hooks): Explain limits of + window-scroll-functions. + + * display.texi (Fringe Indicators): Update for last change in + indicate-buffer-boundaries. + +2006-09-08 Richard Stallman + + * processes.texi (Bindat Spec): Suggest names ending in -bindat-spec. + +2006-09-06 Kim F. Storm + + * frames.texi (Display Feature Testing): display-mm-dimensions-alist. + + * windows.texi (Window Start): Update pos-visible-in-window-p. + +2006-09-04 Richard Stallman + + * processes.texi (Accepting Output): Explain SECONDS=0 for + accept-process-output. + + * os.texi (Idle Timers): Explain why timer functions should not + loop until (input-pending-p). + +2006-09-02 Eli Zaretskii + + * makefile.w32-in (usermanualdir): New variable. + (elisp.dvi): Use it. + +2006-09-01 Eli Zaretskii + + * buffers.texi (Buffer Modification): Fix last change. + +2006-09-01 Chong Yidong + + * buffers.texi (Buffer Modification): Document + buffer-chars-modified-tick. + +2006-08-31 Richard Stallman + + * modes.texi (Syntactic Font Lock): Mention specific faces once again. + +2006-08-31 Richard Bielawski (tiny change) + + * modes.texi (Syntactic Font Lock): + Mention font-lock-syntactic-face-function + instead of specific faces. + +2006-08-29 Chong Yidong + + * display.texi (Images): Add xrref to display-images-p. + +2006-08-28 Kenichi Handa + + * nonascii.texi (Lisp and Coding Systems): Fix description of + detect-coding-region. + +2006-08-27 Michael Olson + + * processes.texi (Transaction Queues): Remove stray quote + character. + +2006-08-25 Richard Stallman + + * os.texi (Idle Timers): run-with-idle-timer allows Lisp time value. + Add xref. + +2006-08-24 Chong Yidong + + * os.texi (Timers): Avoid waiting inside timers. + +2006-08-21 Lute Kamstra + + * Makefile.in: Use ../man/texinfo.tex to build elisp.dvi. + +2006-08-20 Richard Stallman + + * os.texi (Idle Timers): New node, split out from Timers. + Document current-idle-time. + * commands.texi (Reading One Event): Update xref. + * elisp.texi (Top): Update subnode menu. + +2006-08-16 Richard Stallman + + * keymaps.texi (Extended Menu Items): Show format of cached + bindings in extended menu items. + + * customize.texi (Variable Definitions): Explain when the + standard value expression is evaluated. + +2006-08-15 Chong Yidong + + * commands.texi (Reading One Event): Explain idleness in + `read-event'. + +2006-08-12 Chong Yidong + + * text.texi (Near Point): Say "cursor" not "terminal cursor". + (Commands for Insertion): Removed split-line since it's not + relevant for Lisp programming. + (Yank Commands): Rewrite introduction. + (Undo): Clarify. + (Maintaining Undo): Clarify. Document undo-ask-before-discard. + (Filling): Remove redundant comment. Clarify return value of + current-justification. + (Margins): Minor clarifications. + (Adaptive Fill): Update default value of adaptive-fill-regexp. + (Sorting): Update definition of sort-lines. + (Columns): Clarify behavior of sort-columns. + (Indent Tabs): Link to Tab Stops in Emacs manual. + (Special Properties): Clarify. + (Clickable Text): Mention Buttons package. + +2006-08-12 Kevin Ryde + + * os.texi (Time Parsing): Add %z to description of + format-time-string, as per docstring. Add cross reference to + glibc manual for strftime. + +2006-08-08 Richard Stallman + + * modes.texi: Clean up wording in previous change. + +2006-08-07 Chong Yidong + + * modes.texi (Hooks): Clarify. + (Major Mode Basics): Mention define-derived-mode explicitly. + (Major Mode Conventions): Rebinding RET is OK for some modes. + Mention change-major-mode-hook and after-change-major-mode-hook. + (Example Major Modes): Moved to end of Modes section. + (Mode Line Basics): Clarify. + (Mode Line Data): Mention help-echo and local-map in strings. + Explain reason for treatment of non-risky variables. + (Properties in Mode): Clarify. + (Faces for Font Lock): Add font-lock-negation-char-face. + +2006-08-04 Eli Zaretskii + + * strings.texi (Formatting Strings): Warn against arbitrary + strings as first arg to `format'. + +2006-07-31 Thien-Thi Nguyen + + * text.texi (Clickable Text): Mention `help-echo' text property. + Update intro, examples and associated explanations. + +2006-07-31 Richard Stallman + + * commands.texi: Update xrefs. + (Event Mod): New node, cut out from old Translating Input. + + * maps.texi: Update xrefs. + + * keymaps.texi (Translation Keymaps): New node. + Update xrefs from Translating Input to Translation Keymaps. + + * elisp.texi (Top): Update subnode menu. + + * display.texi (Face Functions): Fix explanations of FRAME=t or nil. + + * os.texi (System Interface): Fix menu descriptions of some nodes. + (Translating Input): Node deleted. + +2006-07-31 Nick Roberts + + * modes.texi (Minor Mode Conventions): Update xref for add-to-list. + + * lists.texi (Sets And Lists): Likewise. + +2006-07-30 Thien-Thi Nguyen + + * text.texi (Fields): Mention POS + requirement when narrowing is in effect. + +2006-07-28 Richard Stallman + + * display.texi (Face Attributes): Simplify wording. + (Attribute Functions): Clarify meaning of new-frame default + attribute settings. + + * customize.texi (Common Keywords): Document how to use + :package-version in a package not in Emacs. + +2006-07-28 Kim F. Storm + + * commands.texi (Reading One Event): Fix last change. + +2006-07-26 Chong Yidong + + * commands.texi (Reading One Event): Document SECONDS argument for + read-event, read-char, and read-char-exclusive. + +2006-07-25 Stefan Monnier + + * modes.texi (Multiline Font Lock): Can't use jit-lock-defer-multiline + to ensure correct identification. + +2006-07-24 Richard Stallman + + * text.texi (Clickable Text): Clarify. + + * sequences.texi (Vector Functions): Delete duplicate xref. + + * objects.texi (Function Type): Clarify. + + * modes.texi (Keymaps and Minor Modes): List punct chars for minor + modes. + + * lists.texi (List Variables): New node. + Material moved from other nodes. + + * variables.texi (Setting Variables): add-to-list and + add-to-ordered-list moved to List Variables node. + +2006-07-23 Thien-Thi Nguyen + + * text.texi (Links and Mouse-1): + For mouse-on-link-p, expand on arg POS. + +2006-07-21 Kim F. Storm + + * display.texi (Forcing Redisplay): Don't mention systems which + don't support sub-second timers for redisplay-preemption-period. + + * os.texi (Terminal Output): Clarify text vs graphical terminal. + +2006-07-21 Eli Zaretskii + + * frames.texi (Input Focus): Document that focus-follows-mouse has + no effect on MS-Windows. + +2006-07-18 Richard Stallman + + * display.texi (Forcing Redisplay): Cleanups in previous change. + + * processes.texi (Low-Level Network): Make menu more convenient. + +2006-07-18 Kim F. Storm + + * display.texi (Forcing Redisplay): redisplay-preemption-period + only used on window systems. Add xref to Terminal Output. + + * os.texi (Terminal Output): baud-rate only controls preemption on + non-window systems. Add xref to Forcing Redisplay. + + * processes.texi (Low-Level Network): Rename node "Make Network" + to "Network Processes". + +2006-07-18 Karl Berry + + * variables.texi, functions.texi, customize.texi, loading.texi: + * edebug.texi, minibuf.texi: Fix page breaks through chapter 20. + +2006-07-17 Chong Yidong + + * commands.texi (Waiting): Document batch-mode sit-for behavior. + +2006-07-17 Richard Stallman + + * eval.texi, elisp.texi, text.texi: Use real doublequote inside menus. + Put period and comma inside quotes. + + * loading.texi, markers.texi: Use real doublequote inside menus. + + * windows.texi: Put point and comma inside quotes. + (Textual Scrolling): Use @samp for error message. + + * variables.texi, tips.texi, syntax.texi, symbols.texi: + * strings.texi, streams.texi, processes.texi, os.texi: + * objects.texi, numbers.texi, modes.texi, minibuf.texi: + * lists.texi, keymaps.texi, intro.texi, hash.texi, internals.texi: + * gpl.texi, functions.texi, files.texi, frames.texi, doclicense.texi: + * display.texi, control.texi, commands.texi, buffers.texi, anti.texi: + Put point and comma inside quotes. + + * control.texi (Processing of Errors): Add command-error-function. + + * variables.texi (File Local Variables): Clarify that + file local variables make buffer-local bindings. + + * modes.texi (Syntactic Font Lock): Give default for + font-lock-syntax-table. + +2006-07-17 Nick Roberts + + * text.texi (Special Properties): Clean up previous change. + +2006-07-16 Karl Berry + + * objects.texi, numbers.texi, strings.texi, lists.texi, hash.texi: + * control.texi: Fix bad page breaks through chapter 10 (control). + + * anti.texi (Antinews): Reorder face-attribute fns to avoid + underfull hbox. + +2006-07-15 Nick Roberts + + * text.texi (Special Properties): Describe fontified text property + in relation to a character (not text). + +2006-07-15 Kim F. Storm + + * maps.texi (Standard Keymaps): Add xref for minibuffer maps. + Add apropos-mode-map, custom-mode-map, esc-map, global-map, + grep-mode-map, help-map, help-mode-map, kmacro-map, and tool-bar-map. + + * anti.texi (Antinews): Mention redisplay function. + The kbd macro existed, but was not documented, before 22.x. + Function pos-visible-in-window-p is not new in 22.x, just enhanced. + +2006-07-14 Nick Roberts + + * display.texi (Displaying Messages): Add anchor. + + * frames.texi (Dialog Boxes): Use it. + +2006-07-12 Richard Stallman + + * objects.texi (Frame Type): Explain nature of frames better. + + * frames.texi (Frames): Explain nature of frames better. + +2006-07-12 Ken Manheimer + + * tips.texi (Coding Conventions): Explain why use cl at compile time. + +2006-07-12 YAMAMOTO Mitsuharu + + * frames.texi (Window System Selections): Mention scrap support for Mac. + Default value of x-select-enable-clipboard is t on Mac. + + * os.texi (Getting Out): Suspending is not allowed on Mac, either. + +2006-07-11 Kim F. Storm + + * display.texi (Forcing Redisplay): Add `redisplay' function. + Don't mention (sit-for -1) -- use (redisplay t) instead. + + * commands.texi (Waiting): (sit-for -1) is no longer special. + (sit-for 0) is equivalent to (redisplay). + Iconifying/deiconifying no longer makes sit-for return. + +2006-07-10 Nick Roberts + + * display.texi (Buttons): Fix typo. + + * index.texi, elisp.texi (New Symbols): Comment node out. + +2006-07-09 Richard Stallman + + * display.texi (Truncation): Clean up previous change. + +2006-07-08 Richard Stallman + + * commands.texi (Interactive Call): Use 3 as prefix in example + for execute-extended-command. + + * display.texi (Attribute Functions): Move paragraph about + compatibility with Emacs < 21. + +2006-07-09 Kim F. Storm + + * display.texi (Refresh Screen): Clarify force-window-update. + (Truncation): "Normally" indicated by fringe arrows. + +2006-07-08 Eli Zaretskii + + * windows.texi (Textual Scrolling, Resizing Windows): + * variables.texi (Constant Variables): + * text.texi (Buffer Contents, Deletion, Changing Properties) + (Property Search, Special Properties, Sticky Properties) + (Links and Mouse-1, Fields, Change Hooks): + * syntax.texi (Syntax Table Functions, Parsing Expressions) + (Categories): + * symbols.texi (Other Plists): + * streams.texi (Output Variables): + * processes.texi (Input to Processes, Query Before Exit): + * positions.texi (Word Motion, Text Lines, List Motion): + * os.texi (Init File, System Environment, Sound Output) + (Session Management): + * nonascii.texi (Text Representations, Character Sets) + (Chars and Bytes, Locales): + * modes.texi (Defining Minor Modes, Header Lines): + * minibuf.texi (Minibuffer Contents): + * markers.texi (Information from Markers): + * lists.texi (List Elements, Building Lists, Association Lists): + * keymaps.texi (Tool Bar): + * hash.texi (Creating Hash, Hash Access, Defining Hash, Other Hash): + * functions.texi (What Is a Function, Mapping Functions): + * frames.texi (Creating Frames, Parameter Access, Pointer Shape) + (Color Names, Text Terminal Colors, Display Feature Testing): + * files.texi (Visiting Functions, File Name Components) + (Unique File Names, Contents of Directories): + * display.texi (Forcing Redisplay, Displaying Messages) + (Temporary Displays, Font Selection, Auto Faces) + (Font Lookup, Fringe Indicators, Display Margins) + (Image Descriptors, Showing Images, Image Cache, Button Types) + (Making Buttons, Manipulating Buttons, Button Buffer Commands) + (Display Table Format, Glyphs): + * control.texi (Iteration): + * commands.texi (Command Loop Info, Adjusting Point): + * backups.texi (Making Backups, Auto-Saving): + Remove @tindex entries. + +2006-07-07 Kim F. Storm + + * display.texi (Fringe Cursors): Fix typo. + (Customizing Bitmaps): Fix define-fringe-bitmap entry. + (Overlay Arrow): Default is overlay-arrow fringe indicator. + +2006-07-05 Richard Stallman + + * text.texi (Buffer Contents): Add example of text props + in result of buffer-substring. + (Text Properties): Explain better about use of specific property names. + (Property Search): Some cleanups; reorder some functions. + + * keymaps.texi (Changing Key Bindings): Cleanup. + Add xref to Key Binding Conventions. + + * display.texi (Attribute Functions): Add examples for + face-attribute-relative-p. + + * tips.texi (Coding Conventions): Cleanup last change. + +2006-07-05 Karl Berry + + * elisp.texi: Use @fonttextsize 10pt, a la emacs.texi. + Remove @setchapternewpage odd. + Result is 1013 pages, down from 1100. + + * anti.texi, customize.texi, display.texi, internals.texi: + * minibuf.texi, modes.texi, tips.texi: + Fix overfull/underfull boxes. + +2006-07-05 Thien-Thi Nguyen + + * edebug.texi (Instrumenting): + Add Edebug-specific findex for eval-buffer. + * loading.texi (Loading): + Replace eval-current-buffer with eval-buffer. + +2006-06-30 Nick Roberts + + * locals.texi (Standard Buffer-Local Variables): Update the list + of variables. + +2006-06-26 Nick Roberts + + * files.texi (File Name Completion): Point user to the node + "Reading File Names". + +2006-06-24 Eli Zaretskii + + * files.texi (Contents of Directories): Document case-insensitive + behavior on respective filesystems. + + * objects.texi (Character Type): Document that Emacs signals an + error for unsupported Unicode characters specified as \uNNNN. + +2006-06-19 Richard Stallman + + * processes.texi (Bindat Spec): Clarify previous change. + +2006-06-16 Richard Stallman + + * tips.texi (Coding Conventions): Better explain conventions + for definition constructs. + + * text.texi (Special Properties): String value of `read-only' + serves as the error message. + + * objects.texi (Character Type): Clarify prev. change. + (Non-ASCII in Strings): Mention \u and \U. + + * commands.texi (Using Interactive): Explain problem of + markers, etc., in command-history. + +2006-06-14 Kim F. Storm + + * commands.texi (Waiting): Negative arg to sit-for forces + redisplay even if input is pending. + + * display.texi (Forcing Redisplay): Use (sit-for -1) to force a + redisplay. Remove incorrect example of binding redisplay-dont-pause + around (sit-for 0). + +2006-06-13 Richard Stallman + + * display.texi (Forcing Redisplay): Clarify previous change. + +2006-06-13 Romain Francoise + + * display.texi (Forcing Redisplay): Fix typo. + +2006-06-13 Kim F. Storm + + * display.texi (Forcing Redisplay): Add redisplay-preemption-period. + +2006-06-10 Luc Teirlinck + + * tips.texi (Coding Conventions): Add `@end itemize'. + +2006-06-10 Richard Stallman + + * tips.texi (Coding Conventions): Explain use of coding systems + to ensure one decoding for strings. + +2006-06-09 Aidan Kehoe + + * objects.texi (Character Type): Describe the \uABCD and \U00ABCDEF + syntax. + +2006-06-07 Eli Zaretskii + + * display.texi (Font Selection): Remove description of + clear-face-cache. + + * compile.texi (Eval During Compile): Fix a typo. Add index + entries for possible uses of eval-when-compile. + +2006-06-04 Thien-Thi Nguyen + + * display.texi (Abstract Display): Fix typo. + +2006-06-03 Eli Zaretskii + + * minibuf.texi (Minibuffer History) : + Reword variable's description. + +2006-06-01 Richard Stallman + + * windows.texi (Splitting Windows): Clarify splitting nonselected + window. + +2006-05-31 Juri Linkov + + * minibuf.texi (Minibuffer History): Add history-add-new-input. + +2006-05-30 Richard Stallman + + * display.texi (Line Height): Fix errors in description of + default line height and line-height properyty. + + * nonascii.texi (Default Coding Systems): Further clarification. + +2006-05-29 Luc Teirlinck + + * internals.texi (Pure Storage): Mention that an overflow in pure + space causes a memory leak. + (Garbage Collection): If there was an overflow in pure space, + `garbage-collect' returns nil. + +2006-05-30 Eli Zaretskii + + * nonascii.texi (Default Coding Systems): Fix it some more. + +2006-05-29 Eli Zaretskii + + * nonascii.texi (Default Coding Systems): Fix last change. + +2006-05-29 Kenichi Handa + + * nonascii.texi (find-operation-coding-system): Describe the new + argument format (FILENAME . BUFFER). + +2006-05-28 Richard Stallman + + * tips.texi (Coding Conventions): Better explain reasons not to + advise other packages or use `eval-after-load'. + +2006-05-29 Kim F. Storm + + * processes.texi (Bindat Functions): Rename `pos' and `raw-data' to + `bindat-idx' and `bindat-raw' for clarity. + +2006-05-27 Thien-Thi Nguyen + + * processes.texi (Bindat Spec): Expand on `repeat' handler. + + * display.texi (Display): Add "Abstract Display" to menu. + (Abstract Display, Abstract Display Functions) + (Abstract Display Example): New nodes. + * elisp.texi (Top): Add "Abstract Display" to menu. + +2006-05-27 Chong Yidong + + * keymaps.texi (Key Sequences): Link to input events definition. + (Format of Keymaps): Delete material duplicated in Keymap Basics. + + * files.texi (Changing Files): Document updated argument list for + copy-file. + +2006-05-27 Thien-Thi Nguyen + + * processes.texi (Bindat Functions): Explain term "total length". + Use it in bindat-length and bindat-pack descriptions. + +2006-05-26 Eli Zaretskii + + * tips.texi (Coding Conventions): Advise against using + eval-after-load in packages. Add an index entry. + +2006-05-25 Juri Linkov + + * minibuf.texi (Text from Minibuffer): Undocument keep-all. + + * modes.texi (%-Constructs): Add %e, %z, %Z. + +2006-05-25 Richard Stallman + + * elisp.texi (Top): Update subnode menu. + + * keymaps.texi (Keymap Basics): New node, split out of Key Sequences. + (Keymaps): Update menu. + +2006-05-25 Chong Yidong + + * keymaps.texi (Key Sequences): Some clarifications. + +2006-05-25 Thien-Thi Nguyen + + * processes.texi (Bindat Functions): Say "unibyte string" + explicitly for bindat-unpack and bindat-pack descriptions. + (Bindat Examples): Don't call `string-make-unibyte' in example. + +2006-05-25 Chong Yidong + + * keymaps.texi (Key Sequences): Renamed from Keymap Terminology. + Explain string and vector representations of key sequences + + * keymaps.texi (Changing Key Bindings): + * commands.texi (Interactive Codes, Interactive Codes): + * help.texi (Describing Characters): Refer to it. + +2006-05-23 Luc Teirlinck + + * frames.texi (Pointer Shape): @end table -> @end defvar. + +2006-05-22 Richard Stallman + + * elisp.texi (Top): Update subnode menus. + + * frames.texi (Pointer Shape): Node renamed from Pointer Shapes. + Contents rewritten; material from old Pointer Shape node moved here. + + * display.texi (Pointer Shape): Node deleted. + (Image Descriptors): Minor cleanup. + +2006-05-21 Richard Stallman + + * syntax.texi (Parsing Expressions): Update info on which STATE + elements are ignored. + +2006-05-19 Luc Teirlinck + + * hooks.texi (Standard Hooks): Correct typo. + + * gpl.texi (GPL): ifinfo -> ifnottex. + +2006-05-19 Michael Ernst (tiny change) + + * searching.texi (Simple Match Data): Warn about match data being + set anew by every search. + +2006-05-17 Richard Stallman + + * minibuf.texi (Minibuffer History): Clarify. + + * searching.texi (Regexp Special): Clarify nested regexp warning. + +2006-05-16 Kim F. Storm + + * minibuf.texi (Minibuffer History): Update add-to-history. + +2006-05-15 Oliver Scholz (tiny change) + + * nonascii.texi (Explicit Encoding): Fix + typo (encoding<->decoding). + +2006-05-14 Richard Stallman + + * buffers.texi (Creating Buffers): Cleanup. + + * files.texi (Visiting Functions): Rewrite in find-file-noselect. + +2006-05-13 Eli Zaretskii + + * buffers.texi (Current Buffer): Document that with-temp-buffer + disables undo. + + * os.texi (Terminal-Specific): More accurate description of how + Emacs searches for the terminal-specific libraries. + +2006-05-12 Eli Zaretskii + + * hooks.texi (Standard Hooks) [iftex]: Convert @xref's to + emacs-xtra to @inforef's. + + * text.texi (Undo): Document that undo is turned off in buffers + whose names begin with a space. + + * buffers.texi (Buffer Names): Add index entries for buffers whose + names begin with a space. + (Creating Buffers): Document that undo is turned off in buffers + whose names begin with a space. + + * files.texi (Visiting Functions, Reading from Files) + (Saving Buffers): Mention code and EOL conversions by file I/O + primitives and subroutines. + + * nonascii.texi (Lisp and Coding Systems): Document + coding-system-eol-type. Add index entries for eol conversion. + + * display.texi (Defining Faces): Mention `mac', and add an xref to + where window-system is described. + +2006-05-10 Richard Stallman + + * internals.texi (Writing Emacs Primitives): Clarify GCPRO rules. + +2006-05-10 Reiner Steib + + * variables.texi (File Local Variables): Recommend to quote lambda + expressions in safe-local-variable property. + +2006-05-09 Richard Stallman + + * variables.texi (File Local Variables): Document + safe-local-eval-forms and safe-local-eval-function. + +2006-05-07 Kim F. Storm + + * minibuf.texi (Minibuffer History): Remove keep-dups arg + from add-to-history. + +2006-05-07 Romain Francoise + + * commands.texi (Event Input Misc): + * compile.texi (Eval During Compile): + * internals.texi (Buffer Internals): + * minibuf.texi (Initial Input): + * nonascii.texi (Scanning Charsets): + * numbers.texi (Comparison of Numbers): + * windows.texi (Textual Scrolling, Vertical Scrolling): + Fix various typos. + +2006-05-06 Eli Zaretskii + + * hooks.texi (Standard Hooks): Replace inforef to emacs-xtra by + conditional xref's to either emacs or emacs-xtra, depending on + @iftex/@ifnottex. + + * minibuf.texi (Minibuffer History): Document add-to-history. + +2006-05-05 Eli Zaretskii + + * internals.texi (Pure Storage): Mention the pure overflow message + at startup. + +2006-05-05 Johan Bockg,Ae(Brd + + * keymaps.texi (Active Keymaps): Fix pseudo-Lisp syntax. + (Searching Keymaps): Fix pseudo-Lisp description of keymap + search. + +2006-05-01 Richard Stallman + + * intro.texi (nil and t): Clarify. + + * variables.texi (File Local Variables): Suggest using booleanp. + +2006-05-01 Juanma Barranquero + + * objects.texi (Type Predicates): Fix typos. + +2006-05-01 Stefan Monnier + + * intro.texi (nil and t): Add booleanp. + + * objects.texi (Type Predicates): Add links for booleanp and + string-or-null-p. + +2006-04-29 Richard Stallman + + * modes.texi (Multiline Font Lock): Rename from + Multi line Font Lock Elements. Much clarification. + (Font Lock Multiline, Region to Fontify): Much clarification. + +2006-04-29 Stefan Monnier + + * variables.texi (File Local Variables): Remove the special case t for + safe-local-variable. + +2006-04-26 Richard Stallman + + * syntax.texi (Parsing Expressions): Minor cleanup. + +2006-04-18 Richard Stallman + + * tips.texi (Coding Conventions): Explain when the package's + prefix should appear later on (not at the start of the name). + + * searching.texi (String Search): Clarify effect of NOERROR. + + * modes.texi (Imenu): Clarify what special items do. + + * hooks.texi (Standard Hooks): Delete text about old hook names. + +2006-04-17 Romain Francoise + + * variables.texi (Local Variables): Update the default value of + `max-specpdl-size'. + +2006-04-15 Michael Olson + + * processes.texi (Transaction Queues): Mention the new optional + `delay-question' argument for `tq-enqueue'. + +2006-04-13 Bill Wohler + + * customize.texi (Common Keywords): Use dotted notation for + :package-version value. Specify its values. Improve documentation + for customize-package-emacs-version-alist. + +2006-04-12 Bill Wohler + + * customize.texi (Common Keywords): Move description of + customize-package-emacs-version-alist to @defvar. + +2006-04-10 Bill Wohler + + * customize.texi (Common Keywords): Add :package-version. + +2006-04-10 Kim F. Storm + + * text.texi (Buffer Contents): Add NOPROPS arg to + filter-buffer-substring. + +2006-04-08 Kevin Ryde + + * os.texi (Command-Line Arguments): Update xref to emacs manual + "Command Arguments" -> "Emacs Invocation", per change there. + +2006-04-08 Thien-Thi Nguyen + + * display.texi (Other Display Specs): Arrange a @code{DOTTED-LIST} to + be on one line to help makeinfo not render two spaces after the dot. + +2006-04-07 Reiner Steib + + * strings.texi (Predicates for Strings): Add string-or-null-p. + +2006-03-28 Kim F. Storm + + * processes.texi (Accepting Output): Remove obsolete (and incorrect) + remarks about systems that don't support fractional seconds. + +2006-03-25 Karl Berry + + * elisp.texi: Use @copyright{} instead of (C), and do not indent + the year list. + +2006-03-21 Nick Roberts + + * display.texi (Fringe Indicators): Fix typos. + +2006-03-19 Luc Teirlinck + + * tips.texi (Documentation Tips): One can now also write `program' + in front of a quoted symbol in a docstring to prevent making a + hyperlink. + +2006-03-19 Alan Mackenzie + + * text.texi (Special Properties): Clarify `fontified' property. + +2006-03-16 Richard Stallman + + * display.texi (Defining Images): Minor cleanup. + +2006-03-16 Bill Wohler + + * display.texi (Defining Images): In image-load-path-for-library, + prefer user's images. + +2006-03-15 Stefan Monnier + + * modes.texi (Region to Fontify): Remove font-lock-lines-before. + +2006-03-15 Bill Wohler + + * display.texi (Defining Images): Fix example in + image-load-path-for-library by not recommending that one binds + image-load-path. Just defvar it to placate compiler and only use + it if previously defined. + +2006-03-14 Bill Wohler + + * display.texi (Defining Images): In image-load-path-for-library, + always return list of directories. Update example. + +2006-03-14 Alan Mackenzie + + * modes.texi: New node, "Region to Fontify" (for Font Lock). + This describes font-lock-extend-region-function. + ("Other Font Lock Variables"): Move "font-lock-lines-before" to + the new node "Region to Fontify". + +2006-03-13 Richard Stallman + + * display.texi (Invisible Text): The impossible position is + now before the invisible text, not after. + (Defining Images): Clean up last change. + +2006-03-11 Bill Wohler + + * display.texi (Defining Images): Add image-load-path-for-library. + +2006-03-11 Luc Teirlinck + + * text.texi (Adaptive Fill): Fix Texinfo usage. + + * strings.texi (Creating Strings): Fix Texinfo usage. + + * searching.texi (Regexp Special): Use @samp for regular + expressions that are not in Lisp syntax. + +2006-03-08 Luc Teirlinck + + * searching.texi (Regexp Special): Put remark between parentheses + to avoid misreading. + +2006-03-07 Luc Teirlinck + + * searching.texi (Syntax of Regexps): More accurately describe + which characters are special in which situations. + (Regexp Special): Recommend _not_ to quote `]' or `-' when they + are not special. Describe in detail when `[' and `]' are special. + (Regexp Backslash): Plenty of regexps with unbalanced square + brackets are valid, so reword that statement. + +2006-03-02 Kim F. Storm + + * keymaps.texi (Tool Bar): Add tool-bar-border. + +2006-02-28 Luc Teirlinck + + * loading.texi (Load Suffixes): Rephrase last paragraph. Fix typos. + +2006-02-27 Luc Teirlinck + + * elisp.texi (Top): Include "Load Suffixes" in the detailed menu. + + * files.texi (Locating Files): Suggest additional values for the + SUFFIXES arg of `locate-file'. Update pxref. + + * loading.texi (Loading): Include new node "Load Suffixes" in menu. + (How Programs Do Loading): Discuss the effects of Auto Compression + mode on `load'. + (Load Suffixes): New node. + (Library Search): Delete description of `load-suffixes'; it was + moved to "Load Suffixes". + (Autoload, Named Features): Mention `load-suffixes'. + +2006-02-21 Giorgos Keramidas (tiny change) + + * display.texi (Fringe Indicators, Fringe Cursors): Fix typos. + + * windows.texi (Window Tree): Fix typo. + +2006-02-20 Kim F. Storm + + * display.texi (Fringe Indicators): New section. + Move indicate-empty-lines, indicate-buffer-boundaries, and + default-indicate-buffer-boundaries here. + Add fringe-indicator-alist and default-fringes-indicator-alist. + Add list of logical fringe indicator symbols. + Update list of standard bitmap names. + (Fringe Cursors): New section. + Move overflow-newline-into-fringe here. + Add fringe-cursor-alist and default-fringes-cursor-alist. + Add list of fringe cursor symbols. + +2006-02-20 Juanma Barranquero + + * commands.texi (Using Interactive): Fix reference to node + "Minibuffers". + +2006-02-19 Richard M. Stallman + + * minibuf.texi (High-Level Completion): + Add xref to read-input-method-name. + + * files.texi (Relative File Names): Move file-relative-name here. + (File Name Expansion): From here. Minor clarifications. + + * commands.texi (Using Interactive): Add xrefs about reading input. + Clarify remarks about that moving point and mark. + Put string case before list case. + +2006-02-16 Johan Bockg,Ae(Brd + + * display.texi (Other Display Specs, Image Descriptors): + Revert erroneous changes. The previous description of + image-descriptors as `(image . PROPS)' was correct. + +2006-02-14 Richard M. Stallman + + * variables.texi (File Local Variables): Clarifications. + +2006-02-14 Juanma Barranquero + + * variables.texi (File Local Variables): Use @code for a cons + cell, not @var. + +2006-02-13 Chong Yidong + + * variables.texi (File Local Variables): Document new file local + variable behavior. + +2006-02-10 Kim F. Storm + + * eval.texi (Function Indirection): Add NOERROR to indirect-function. + +2006-02-08 Juanma Barranquero + + * modes.texi (%-Constructs): Remove obsolete info about + `global-mode-string'. + +2006-02-07 Richard M. Stallman + + * commands.texi (Prefix Command Arguments): Minor cleanup. + + * display.texi: "Graphical display", not window system. + + * functions.texi (What Is a Function): Fix xref. + + * keymaps.texi (Key Lookup): Clarify wrt commands vs other functions. + (Changing Key Bindings): Clarify when remapping is better than + substitute-key-definition. + +2006-02-02 Richard M. Stallman + + * minibuf.texi (Basic Completion): Completion alists are risky. + + * keymaps.texi (Active Keymaps): Clarifications. + (Searching Keymaps): New node. + (Keymaps): Update menu. + + * frames.texi (Layout Parameters): Minor clarification. + (Drag and Drop): New node. + (Frames): Update menu. + +2006-01-29 Chong Yidong + + * display.texi (Other Display Specs, Image Descriptors): + Image description is a list, not a cons cell. + +2006-01-28 Luc Teirlinck + + * lists.texi (Cons Cells): Minor correction (the cdr of a dotted + list is not necessarily a list). + +2006-01-27 Eli Zaretskii + + * frames.texi (Layout Parameters): border-width and + internal-border-width belong to the frame, not the window. + +2006-01-19 Richard M. Stallman + + * nonascii.texi (Translation of Characters): Search cmds use + translation-table-for-input. Automatically made local. + + * markers.texi (Overview of Markers): Count insertion type + as one of a marker's attributes. + + * keymaps.texi (Controlling Active Maps): New node, split out of + Active Keymaps. + (Keymaps): Menu updated. + (Active Keymaps): Give pseudocode to explain how the active + maps are searched. current-active-maps and key-binding moved here. + (Functions for Key Lookup): current-active-maps and key-binding moved. + Clarifications. + (Searching the Keymaps): New subnode. + + * elisp.texi (Top): Menu clarification. + + * display.texi (Other Display Specs): Delete duplicate entry for + just a string as display spec. Move text about recursive display + specs on such a string. + + * commands.texi (Key Sequence Input): Clarify. + Move num-nonmacro-input-events out. + (Reading One Event): num-nonmacro-input-events moved here. + +2006-01-14 Nick Roberts + + * advice.texi (Simple Advice): Update example to fit argument + change in previous-line. + +2006-01-05 Richard M. Stallman + + * markers.texi (The Mark): Fix in `mark'. + +2006-01-04 Richard M. Stallman + + * processes.texi (Misc Network, Make Network): Minor cleanups. + +2006-01-04 Kim F. Storm + + * processes.texi (Make Network): Add IPv6 addresses and handling. + (Network Feature Testing): Mention (:family ipv6). + (Misc Network): Add IPv6 formats to format-network-address. + +2005-12-30 Richard M. Stallman + + * text.texi (Changing Properties): + Don't use return value of set-text-properties. + +2005-12-29 Luc Teirlinck + + * modes.texi (Mode Line Format): Correct typo in menu. + +2005-12-29 Richard M. Stallman + + * modes.texi (Mode Line Top): New node. + (Mode Line Data): Some text moved to new node. + Explain the data structure more concretely. + (Mode Line Basics): Clarifications. + (Mode Line Variables): Clarify intro paragraph. + (%-Constructs): Clarify intro paragraph. + (Mode Line Format): Update menu. + +2005-12-28 Luc Teirlinck + + * minibuf.texi (Basic Completion): Update lazy-completion-table + examples for removal of ARGS argument. + +2005-12-23 Richard M. Stallman + + * text.texi (Undo): Restore some explanation from the version + that was deleted. + +2005-12-23 Eli Zaretskii + + * text.texi (Undo): Remove duplicate descriptions of `apply + funname' and `apply delta' elements of the undo list. + +2005-12-20 Richard M. Stallman + + * help.texi (Help Functions): Update documentation of `apropos'. + +2005-12-20 Luc Teirlinck + + * customize.texi (Type Keywords): Delete xref to "Text help-echo", + because it is confusing. If the :help-echo keyword is a function, + it is not directly used as the :help-echo overlay property, as the + xref seems to suggest (it does not take the appropriate args). + +2005-12-19 Luc Teirlinck + + * customize.texi (Common Keywords): Fix Texinfo usage. + (Group Definitions, Variable Definitions): Update for new + conventions for using `*' in docstrings. + + * tips.texi (Documentation Tips): Update for new conventions for + using `*' in docstrings. + +2005-12-16 Richard M. Stallman + + * minibuf.texi (Minibuffer Contents): Minor cleanup. + +2005-12-16 Juri Linkov + + * minibuf.texi (Minibuffer Contents): Add minibuffer-completion-contents. + +2005-12-14 Romain Francoise + + * modes.texi (Customizing Keywords): Rename `append' to `how'. + Fix typo. + +2005-12-11 Juri Linkov + + * minibuf.texi (Completion Commands): Add mention of read-file-name + for filename completion keymaps. + (Reading File Names): Add mention of filename completion keymaps + for read-file-name and xref to `Completion Commands'. + +2005-12-10 Richard M. Stallman + + * customize.texi (Common Keywords): State caveats for use of :tag. + +2005-12-08 Richard M. Stallman + + * minibuf.texi (Intro to Minibuffers): Replace list of local maps + with xrefs and better explanation. + (Completion Commands): Add the filename completion maps. + + * objects.texi (Character Type): Clarify that \s is not space + if a dash follows. + +2005-12-05 Richard M. Stallman + + * windows.texi (Resizing Windows): Delete preserve-before args. + +2005-12-05 Stefan Monnier + + * keymaps.texi (Format of Keymaps): Remove mention of a quirk + in full keymaps, since the quirk has been fixed. + +2005-12-03 Eli Zaretskii + + * hooks.texi (Standard Hooks): Add index entries. Mention + `compilation-finish-functions'. + +2005-11-27 Richard M. Stallman + + * windows.texi (Resizing Windows): Add adjust-window-trailing-edge. + +2005-11-21 Juri Linkov + + * customize.texi (Common Keywords): Update links types + custom-manual and url-link. Add link types emacs-library-link, + file-link, function-link, variable-link, custom-group-link. + +2005-11-20 Chong Yidong + + * display.texi: Revert 2005-11-20 change. + +2005-11-20 Thien-Thi Nguyen + + * processes.texi (Bindat Functions): + Say "third" to refer to zero-based index "2". + +2005-11-18 Luc Teirlinck + + * loading.texi (Library Search): Update the default value of + `load-suffixes'. + +2005-11-17 Chong Yidong + + * display.texi (Attribute Functions): Mention :ignore-defface. + +2005-11-16 Stefan Monnier + + * modes.texi (Minor Mode Conventions): Use custom-set-minor-mode. + (Minor Mode Conventions): Mention the use of a hook. + +2005-11-06 Richard M. Stallman + + * files.texi (Magic File Names): find-file-name-handler checks the + `operations' property of the handler. + +2005-11-03 Richard M. Stallman + + * variables.texi (Frame-Local Variables): Small clarification. + +2005-10-29 Chong Yidong + + * os.texi (Init File): Document ~/.emacs.d/init.el. + +2005-10-29 Richard M. Stallman + + * internals.texi (Garbage Collection): Document memory-full. + +2005-10-28 Bill Wohler + + * tips.texi (Documentation Tips): Help mode now creates hyperlinks + for URLs. + +2005-10-28 Richard M. Stallman + + * minibuf.texi (Completion Commands): Clean up prev change. + +2005-10-26 Kevin Ryde + + * compile.texi (Eval During Compile): Explain recommended uses + of eval-when-compile and eval-and-compile. + +2005-10-27 Masatake YAMATO + + * minibuf.texi (Completion Commands): + Write about new optional argument for `display-completion-list'. + +2005-10-23 Richard M. Stallman + + * display.texi (Overlay Arrow): Clarify about local bindings of + overlay-arrow-position. + +2005-10-22 Eli Zaretskii + + * internals.texi (Building Emacs): Fix last change. + +2005-10-22 Richard M. Stallman + + * internals.texi (Building Emacs): Document eval-at-startup. + +2005-10-21 Richard M. Stallman + + * loading.texi (Where Defined): load-history contains abs file names. + symbol-file returns abs file names. + +2005-10-19 Kim F. Storm + + * display.texi (Showing Images): Add max-image-size integer value. + +2005-10-18 Chong Yidong + + * display.texi (Showing Images): Document max-image-size. + +2005-10-17 Richard M. Stallman + + * commands.texi (Quitting): Minor clarification. + + * processes.texi (Sentinels): Clarify about output and quitting. + (Filter Functions): Mention with-local-quit. + +2005-10-17 Juri Linkov + + * buffers.texi (Current Buffer): + * commands.texi (Event Input Misc): + * compile.texi (Eval During Compile, Compiler Errors): + * customize.texi (Group Definitions): + * display.texi (Progress, Defining Faces): + * files.texi (Writing to Files): + * modes.texi (Mode Hooks, Defining Minor Modes): + * streams.texi (Output Functions): + * syntax.texi (Syntax Table Functions): + * text.texi (Change Hooks): + Replace `...' with `@dots{}' in `@defmac' and `@defspec'. + + * commands.texi (Quitting): Replace arg `forms' with `body' in + `with-local-quit'. + + * positions.texi (Excursions): Replace arg `forms' with `body' in + `save-excursion'. + +2005-10-08 Kim F. Storm + + * windows.texi (Window Tree): Rename window-split-tree to window-tree. + Rename manual section accordingly. + +2005-10-04 Kim F. Storm + + * windows.texi (Window Split Tree): New section describing + new function window-split-tree function. + +2005-10-03 Nick Roberts + + * display.texi (Fringe Size/Pos): Simplify and add detail. + +2005-09-30 Romain Francoise + + * minibuf.texi (High-Level Completion): Explain that the prompt + given to `read-buffer' should end with a colon and a space. + Update usage examples. + +2005-09-29 Juri Linkov + + * display.texi (Displaying Messages): Rename argument name + `string' to `format-string' in functions `message', `message-box', + `message-or-box'. + +2005-09-26 Chong Yidong + + * errors.texi (Standard Errors): Correct xrefs. + +2005-09-18 Chong Yidong + + * display.texi (Defining Images): Update documentation for + `image-load-path'. + +2005-09-17 Richard M. Stallman + + * display.texi (Defining Images): Clean up previous change. + +2005-09-16 Romain Francoise + + * elisp.texi: Specify GFDL version 1.2. + + * doclicense.texi (GNU Free Documentation License): Update to + version 1.2. + +2005-09-15 Chong Yidong + + * display.texi (Defining Images): Document `image-load-path'. + +2005-09-15 Richard M. Stallman + + * objects.texi (Printed Representation): Minor cleanup. + (Box Diagrams): Minor fix. + (Cons Cell Type): Move (...) index item here. + (Box Diagrams): From here. + (Array Type): Minor fix. + (Type Predicates): Delete index "predicates". + (Hash Table Type): Clarify xref. + (Dotted Pair Notation): Minor fix. + +2005-09-10 Chong Yidong + + * files.texi (Saving Buffers): Fix typo. + +2005-09-08 Richard M. Stallman + + * tips.texi (Programming Tips): Correct the "default" prompt spec. + +2005-09-08 Chong Yidong + + * locals.texi (Standard Buffer-Local Variables): Don't include + mode variables for minor modes. + Fix xrefs for buffer-display-count, buffer-display-table, + buffer-offer-save, buffer-saved-size, cache-long-line-scans, + enable-multibyte-characters, fill-column, header-line-format, + left-fringe-width, left-margin, and right-fringe-width. + + * hooks.texi (Standard Hooks): All hooks should conform to the + standard naming convention now. + Fix xref for `echo-area-clear-hook'. + + * display.texi (Usual Display): Note that indicate-empty-lines and + tab-width are buffer-local. + + * files.texi (Saving Buffers): Add xref to `Killing Buffers'. + + * modes.texi (Mode Help): Note that major-mode is buffer-local. + + * nonascii.texi (Encoding and I/O): Note that + buffer-file-coding-system is buffer-local. + + * positions.texi (List Motion): Note that defun-prompt-regexp is + buffer-local. + + * text.texi (Auto Filling): Note that auto-fill-function is + buffer-local. + (Undo): Note that buffer-undo-list is buffer-local. + + * windows.texi (Buffers and Windows): Document + buffer-display-count. + +2005-09-06 Richard M. Stallman + + * tips.texi (Coding Conventions): Sometimes it is ok to put the + package prefix elsewhere than at the start of the name. + +2005-09-03 Richard M. Stallman + + * tips.texi (Programming Tips): Add conventions for minibuffer + questions and prompts. + +2005-09-03 Joshua Varner (tiny change) + + * intro.texi (nil and t): Minor cleanup. + Delete spurious mention of keyword symbols. + (Evaluation Notation): Add index entry. + (A Sample Function Description): Minor cleanup. + (A Sample Variable Description): Not all vars can be set. + +2005-09-03 Thien-Thi Nguyen + + * text.texi (Buffer Contents): Use "\n" in examples' result strings. + + (Insertion): Document precise type of `insert-char' arg COUNT. + +2005-09-02 Stefan Monnier + + * modes.texi (Other Font Lock Variables): Sync the default of + font-lock-lines-before. + +2005-08-31 Michael Albinus + + * files.texi (Magic File Names): Add `make-auto-save-file-name'. + +2005-08-29 Richard M. Stallman + + * elisp.texi (Top): Update subnode menu. + + * searching.texi (Searching and Matching): Move node. + Rearrange contents and add overall explanation. + (Searching and Case): Move node. + (Searching and Matching): Update menu. + +2005-08-27 Eli Zaretskii + + * os.texi (Startup Summary): Fix the description of the initial + startup message display. + +2005-08-25 Richard M. Stallman + + * searching.texi (Search and Replace): Add replace-regexp-in-string. + +2005-08-25 Emilio C. Lopes + + * display.texi (Finding Overlays): Fix `find-overlay-prop' in + `next-overlay-change' example. + +2005-08-22 Juri Linkov + + * display.texi (Attribute Functions): Add set-face-inverse-video-p. + Fix invert-face. Fix args of face-background. + + * display.texi (Standard Faces): Delete node. + (Faces): Add xref to `(emacs)Standard Faces'. + (Displaying Faces): Fix xref to `Standard Faces'. + + * modes.texi (Mode Line Data): Fix xref to Standard Faces. + +2005-08-20 Alan Mackenzie + + * buffers.texi (The Buffer List): Clarify the manipulation of the + buffer list. + +2005-08-14 Richard M. Stallman + + * modes.texi (Auto Major Mode): interpreter-mode-alist key is not + a regexp. + +2005-08-11 Richard M. Stallman + + * elisp.texi (Top): Update subnode lists. + + * display.texi (Inverse Video): Node deleted. + + * tips.texi (Key Binding Conventions, Programming Tips, Warning Tips): + New nodes split out of Coding Conventions. + + * searching.texi (Regular Expressions): Document re-builder. + + * os.texi (Time Parsing): New node split out of Time Conversion. + + * processes.texi (Misc Network, Network Feature Testing) + (Network Options, Make Network): New nodes split out of + Low-Level Network. + +2005-08-09 Richard M. Stallman + + * frames.texi (Geometry): New node, split from Size and Position. + (Frame Parameters): Refer to Geometry. + + * buffers.texi (The Buffer List): Fix xrefs. + + * windows.texi (Splitting Windows): Fix xref. + + * frames.texi (Layout Parameters): Add xref. + + * display.texi (Line Height, Scroll Bars): Fix xrefs. + + * keymaps.texi (Menu Bar): Fix xref. + + * locals.texi (Standard Buffer-Local Variables): Fix xref. + + * modes.texi (%-Constructs): Fix xref. + + * frames.texi (Window Frame Parameters): Node split up. + (Basic Parameters, Position Parameters, Size Parameters) + (Layout Parameters, Buffer Parameters, Management Parameters) + (Cursor Parameters, Color Parameters): New subnodes. + +2005-08-09 Luc Teirlinck + + * positions.texi (Screen Lines): Update xref for previous change + in minibuf.texi. + + * minibuf.texi (Intro to Minibuffers): Update pxref for previous + change in minibuf.texi. + +2005-08-09 Richard M. Stallman + + * tips.texi (Coding Conventions): Minor cleanup. + + * modes.texi (Defining Minor Modes): Explain when init-value + can be non-nil. + + * elisp.texi (Top): Update submenu for Minibuffer. + + * minibuf.texi (Minibuffer Misc): Node split up. + (Minibuffer Commands, Minibuffer Windows, Minibuffer Contents) + (Recursive Mini): New nodes split out from Minibuffer Misc. + (Minibuffer Misc): Document max-mini-window-height. + + * hash.texi (Defining Hash): Delete stray paren in example. + + * display.texi (Echo Area Customization): Don't define + max-mini-window-height here; xref instead. + + * commands.texi (Event Input Misc): Update while-no-input. + + * advice.texi (Advising Functions): Explain when to use advice + and when to use a hook. + +2005-07-30 Eli Zaretskii + + * makefile.w32-in (info): Don't run install-info. + ($(infodir)/dir): New target, produced by running install-info. + +2005-07-27 Luc Teirlinck + + * modes.texi (Defining Minor Modes): The keyword for the initial + value is :init-value, not :initial-value. + +2005-07-23 Eli Zaretskii + + * loading.texi (Autoload): Make the `doctor' example be consistent + with what's in current loaddefs.el. Describe the "fn" magic in + the usage portion of the doc string. + +2005-07-22 Richard M. Stallman + + * internals.texi (Garbage Collection): Clarify previous change. + +2005-07-21 Stefan Monnier + + * internals.texi (Garbage Collection): Add gc-cons-percentage. + +2005-07-18 Juri Linkov + + * commands.texi (Accessing Events): + * frames.texi (Text Terminal Colors, Resources): + * markers.texi (The Mark): + * modes.texi (Defining Minor Modes): + Delete duplicate duplicate words. + +2005-07-16 Richard M. Stallman + + * display.texi (Managing Overlays): Clarify make-overlay + args for insertion types. + +2005-07-13 Luc Teirlinck + + * customize.texi (Variable Definitions): + Add `custom-initialize-safe-set' and `custom-initialize-safe-default'. + `standard-value' is a list too. + (Defining New Types): Use @key{RET} instead of @key{ret}. + +2005-07-13 Francis Litterio (tiny change) + + * os.texi (Translating Input): Fix typo. + +2005-07-08 Richard M. Stallman + + * README: Update edition number and size estimate. + + * elisp.texi (VERSION): Set to 2.9. + +2005-07-07 Richard M. Stallman + + * book-spine.texinfo: Update Emacs version. + + * display.texi (Inverse Video): Delete mode-line-inverse-video. + +2005-07-06 Richard M. Stallman + + * searching.texi (Regexp Search): Clarify what re-search-forward + does when the search fails. + +2005-07-05 Lute Kamstra + + * Update FSF's address in GPL notices. + + * doclicense.texi (GNU Free Documentation License): + * gpl.texi (GPL): + * tips.texi (Coding Conventions, Library Headers): + * vol1.texi: + * vol2.texi: Update FSF's address. + +2005-07-04 Richard M. Stallman + + * hooks.texi (Standard Hooks): Add occur-hook. + +2005-07-03 Luc Teirlinck + + * display.texi (The Echo Area): Correct menu. + +2005-07-03 Richard M. Stallman + + * elisp.texi (Top): Update subnode menu for Display. + + * display.texi (Displaying Messages): New node, with most + of what was in The Echo Area. + (Progress): Moved under The Echo Area. + (Logging Messages): New node with new text. + (Echo Area Customization): New node, the rest of what was + in The Echo Area. Document message-truncate-lines with @defvar. + (Display): Update menu. + + * windows.texi (Textual Scrolling): Doc 3 values for + scroll-preserve-screen-position. + + * text.texi (Special Properties): Change hook functions + should bind inhibit-modification-hooks around altering buffer text. + + * keymaps.texi (Key Binding Commands): Call binding BINDING + rather than DEFINITION. + +2005-06-29 Juanma Barranquero + + * variables.texi (Defining Variables): `user-variable-p' returns t + for aliases of user options, nil for alias loops. + +2005-06-28 Richard M. Stallman + + * keymaps.texi (Creating Keymaps): Put make-sparse-keymap before + make-keymap. + +2005-06-27 Luc Teirlinck + + * variables.texi (Setting Variables): Correct and clarify + description of `add-to-ordered-list'. + +2005-06-26 Richard M. Stallman + + * display.texi (Faces): Minor cleanup. + +2005-06-25 Luc Teirlinck + + * display.texi (Faces): `facep' returns t for strings that are + face names. + +2005-06-25 Richard M. Stallman + + * objects.texi (Equality Predicates): Clarify meaning of equal. + + * windows.texi (Selecting Windows): save-selected-window + and with-selected-window save and restore the current buffer. + +2005-06-24 Richard M. Stallman + + * numbers.texi (Float Basics): Explain how to test for NaN, + and printing the sign of NaNs. + +2005-06-24 Eli Zaretskii + + * makefile.w32-in (MAKEINFO): Use --force. + +2005-06-23 Richard M. Stallman + + * display.texi (Face Functions): Correct Texinfo usage. + +2005-06-23 Luc Teirlinck + + * lists.texi (Rings): `ring-elements' now returns the elements of + RING in order. + +2005-06-23 Juanma Barranquero + + * markers.texi (The Mark): Texinfo usage fix. + +2005-06-23 Kim F. Storm + + * searching.texi (Entire Match Data): Remove evaporate option for + match-data. Do not mention evaporate option for set-match-data. + +2005-06-22 Glenn Morris + + * display.texi (Face Functions): Mention face aliases. + +2005-06-21 Richard M. Stallman + + * anti.texi (Antinews): Texinfo usage fix. + +2005-06-21 Karl Berry + + * elisp.texi: Use @copying. + + * elisp.texi: Put @summarycontents and @contents before the Top + node, instead of the end of the file, so that the contents appear + in the right place in the dvi/pdf output. + +2005-06-21 Juri Linkov + + * display.texi (Defining Faces): Add `customized-face'. + +2005-06-20 Kim F. Storm + + * variables.texi (Setting Variables): Any type of element can be + given order in add-to-ordered-list. Compare elements with eq. + + * lists.texi (Rearrangement): Sort predicate may just return non-nil. + +2005-06-20 Karl Berry + + * syntax.texi (Syntax Flags): Make last column very slightly wider + to avoid "generic comment" breaking on two lines and causing an + underfull box. + +2005-06-19 Luc Teirlinck + + * lists.texi (Rings): Various minor clarifications and corrections. + +2005-06-18 Richard M. Stallman + + * functions.texi (Obsolete Functions): Simplify. + + * variables.texi (Variable Aliases): Simplify. + + * anti.texi, backups.texi, compile.texi, customization.texi: + * debugging.texi, display.texi, edebug.texi, errors.texi, frames.texi: + * functions.texi, help.texi, keymaps.texi, modes.texi, nonascii.texi: + * os.texi, processes.texi, searching.texi, strings.texi, text.texi: + * variables.texi: Fix formatting ugliness. + + * elisp.texi: Add links to Rings and Byte Packing. + Update version and copyright years. + + * minibuf.texi: Fix formatting ugliness. + (Completion Commands): Move keymap vars to the end + and vars completing-read binds to the top. + +2005-06-17 Luc Teirlinck + + * processes.texi: Fix typos. + (Bindat Spec): Correct Texinfo error. + (Byte Packing): Fix ungrammatical sentence. + +2005-06-17 Thien-Thi Nguyen + + * lists.texi (Rings): New node. + (Lists): Add it to menu. + + * processes.texi (Byte Packing): New node. + (Processes): Add it to menu. + +2005-06-17 Richard M. Stallman + + * syntax.texi (Parsing Expressions): Fix texinfo usage. + + * help.texi (Documentation Basics): Explain the xref to + Documentation Tips. + + * debugging.texi (Debugger Commands): Minor fix. + +2005-06-16 Luc Teirlinck + + * edebug.texi (Instrumenting): Eliminate duplicate link. + (Specification List): Replace references to "below", referring to + a later node, with one @ref to that node. + + * os.texi (Timers): Timers should save and restore the match data + if they change it. + + * debugging.texi (Debugger Commands): Mention that the Lisp + debugger can not step through primitive functions. + +2005-06-16 Juanma Barranquero + + * functions.texi (Obsolete Functions): Update argument names of + `make-obsolete' and `define-obsolete-function-alias'. + + * variables.texi (Variable Aliases): Update argument names of + `defvaralias', `make-obsolete-variable' and + `define-obsolete-variable-alias'. + +2005-06-15 Kim F. Storm + + * searching.texi (Entire Match Data): Rephrase warnings about + evaporate arg to match-data and set-match-data. + +2005-06-14 Luc Teirlinck + + * elisp.texi (Top): Update detailed menu. + + * edebug.texi (Edebug): Update menu. + (Instrumenting): Update xrefs. + (Edebug Execution Modes): Correct xref. + (Jumping): Clarify description of `h' command. + Eliminate redundant @ref. + (Breaks): New node. + (Breakpoints): Is now a subsubsection. + (Global Break Condition): Mention `C-x X X'. + (Edebug Views): Clarify `v' and `p'. Mention `C-x X w'. + (Trace Buffer): Clarify STRING arg of `edebug-tracing'. + (Edebug Display Update): Correct pxref. + (Edebug and Macros): New node. + (Instrumenting Macro Calls): Is now a subsubsection. + Neither arg of `def-edebug-spec' is evaluated. + (Instrumenting Macro Calls): Mention `edebug-eval-macro-args'. + (Specification Examples): Fix typo. + +2005-06-14 Lute Kamstra + + * debugging.texi (Function Debugging): Primitives can break on + entry too. + +2005-06-14 Kim F. Storm + + * variables.texi (Setting Variables): Add add-to-ordered-list. + +2005-06-13 Stefan Monnier + + * syntax.texi (Parsing Expressions): Document aux functions and vars of + syntax-ppss: syntax-ppss-flush-cache and syntax-begin-function. + +2005-06-13 Lute Kamstra + + * text.texi (Special Properties): Fix cross reference. + +2005-06-11 Luc Teirlinck + + * debugging.texi (Function Debugging): Delete mention of empty + string argument to `cancel-debug-on-entry'. Delete inaccurate + description of the return value of that command. + +2005-06-11 Alan Mackenzie + + * text.texi (Adaptive Fill): Amplify the description of + fill-context-prefix. + +2005-06-10 Luc Teirlinck + + * syntax.texi (Parsing Expressions): Fix Texinfo error. + +2005-06-10 Stefan Monnier + + * syntax.texi (Parsing Expressions): Document syntax-ppss. + +2005-06-10 Luc Teirlinck + + * debugging.texi (Error Debugging): Minor rewording. + (Function Debugging): FUNCTION-NAME arg to `cancel-debug-on-entry' + is optional. + +2005-06-10 Lute Kamstra + + * elisp.texi: Use EMACSVER to refer to the current version of Emacs. + (Top): Give it a title. Correct version number. Give the + detailed node listing a more prominent header. + * intro.texi: Don't set VERSION here a second time. + Mention Emacs's version too. + * anti.texi (Antinews): Use EMACSVER to refer to the current + version of Emacs. + +2005-06-09 Kim F. Storm + + * searching.texi (Entire Match Data): Explain new `reseat' argument to + match-data and set-match-data. + +2005-06-08 Richard M. Stallman + + * searching.texi (Entire Match Data): Clarify when match-data + returns markers and when integers. + + * display.texi (Defining Faces): Explain that face name should not + end in `-face'. + + * modes.texi (Mode Line Data): Minor cleanup. + (Customizing Keywords): Node split out of Search-based Fontification. + Add example of using font-lock-add-keywords from a hook. + Clarify when MODE should be non-nil, and when nil. + +2005-06-06 Richard M. Stallman + + * modes.texi (Mode Line Data): Explain what happens when the car + of a list is a void symbol. + (Search-based Fontification): Explain MODE arg to + font-lock-add-keywords and warn about calls from major modes. + +2005-06-08 Juri Linkov + + * display.texi (Standard Faces): Add `shadow' face. + +2005-05-29 Luc Teirlinck + + * modes.texi (Major Mode Conventions): A derived mode only needs + to put the call to the parent mode inside `delay-mode-hooks'. + +2005-05-29 Richard M. Stallman + + * modes.texi (Mode Hooks): Explain that after-change-major-mode-hook is + new, and what that implies. Clarify. + + * files.texi (Locating Files): Clean up the text. + + * frames.texi (Window Frame Parameters): Document user-size. + Shorten entry for top by referring to left. + +2005-05-26 Richard M. Stallman + + * modes.texi (Mode Hooks): Explain that after-change-major-mode-hook + is new, and what the implications are. Other clarifications. + +2005-05-24 Richard M. Stallman + + * frames.texi (Dialog Boxes): Minor fixes. + +2005-05-25 Masatake YAMATO + + * display.texi (Standard Faces): Write about `mode-line-highlight'. + +2005-05-24 Luc Teirlinck + + * frames.texi (Dialog Boxes): HEADER argument to `x-popup-dialog' + is optional. + +2005-05-24 Nick Roberts + + * frames.texi (Dialog Boxes): Descibe new optional argument. + +2005-05-23 Lute Kamstra + + * modes.texi (Font Lock Basics, Syntactic Font Lock): Recommend + syntax-begin-function over font-lock-beginning-of-syntax-function. + +2005-05-21 Luc Teirlinck + + * minibuf.texi (Reading File Names): Update description of + `read-directory-name'. + + * modes.texi (Derived Modes): Clarify :group keyword. + +2005-05-21 Eli Zaretskii + + * files.texi (Locating Files): New subsection. + Describe locate-file and executable-find. + +2005-05-21 Kevin Ryde + + * frames.texi (Initial Parameters): Update cross reference to + "Emacs Invocation". + +2005-05-19 Luc Teirlinck + + * keymaps.texi (Active Keymaps): Add anchor. + + * modes.texi (Hooks): Delete confusing and unnecessary sentence. + (Major Mode Conventions): Refer to `Auto Major Mode' in more + appropriate place. + (Derived Modes): Small clarifications. + (Minor Mode Conventions, Keymaps and Minor Modes): + Replace references to nodes with references to anchors. + (Mode Line Data): Warn that `(:eval FORM)' should not load any files. + Clarify description of lists whose first element is an integer. + (Mode Line Variables): Add anchor. + (%-Constructs): Clarify description of integer after %. + (Emulating Mode Line): Describe nil value for FACE. + +2005-05-18 Luc Teirlinck + + * modes.texi (Derived Modes): Correct references to non-existing + variable standard-syntax-table. + +2005-05-17 Lute Kamstra + + * modes.texi (Defining Minor Modes): Mention the mode hook. + +2005-05-15 Kim F. Storm + + * processes.texi (Network): Remove open-network-stream-nowait. + (Network Servers): Remove open-network-stream-server. + +2005-05-15 Luc Teirlinck + + * elisp.texi (Top): Update detailed menu. + + * variables.texi: Reorder nodes. + (Variables): Update menu. + (File Local Variables): Do not refer to the `-*-' line as + a "local variables list". Add pxref. + +2005-05-14 Luc Teirlinck + + * elisp.texi (Top): Update detailed menu for node changes. + + * modes.texi (Modes): Update Menu. + (Hooks): Move to beginning of chapter. + Most minor modes run mode hooks too. + `add-hook' can handle void hooks or hooks whose value is a single + function. + (Major Modes): Update Menu. + (Major Mode Basics): New node, split off from `Major Modes'. + (Major Mode Conventions): Correct xref. Explain how to handle + auto-mode-alist if the major mode command has an autoload cookie. + (Auto Major Mode): Major update. Add magic-mode-alist. + (Derived Modes): Major update. + (Mode Line Format): Update Menu. + (Mode Line Basics): New node, split off from `Mode Line Format'. + + * loading.texi (Autoload): Mention `autoload cookie' as synonym + for `magic autoload comment'. Add index entries and anchor. + +2005-05-14 Richard M. Stallman + + * tips.texi (Coding Conventions): Explain how important it is + that just loading certain files not change Emacs behavior. + + * modes.texi (Defining Minor Modes): Define define-global-minor-mode. + +2005-05-12 Lute Kamstra + + * modes.texi (Generic Modes): Update. + (Major Modes): Refer to node "Generic Modes". + + * elisp.texi (Top): Update to the current structure of the manual. + * processes.texi (Processes): Add menu description. + * customize.texi (Customization): Add menu descriptions. + +2005-05-11 Thien-Thi Nguyen + + * processes.texi (Signals to Processes) + (Low-Level Network): Fix typos. + +2005-05-11 Lute Kamstra + + * elisp.texi (Top): Add some nodes from the chapter "Major and + Minor Modes" to the detailed node listing. + +2005-05-10 Richard M. Stallman + + * keymaps.texi (Extended Menu Items): Menu item filter functions + can be called at any time. + +2005-05-08 Luc Teirlinck + + * variables.texi (File Local Variables): `(hack-local-variables t)' + now also checks whether a mode is specified in the local variables + list. + +2005-05-05 Kevin Ryde + + * display.texi (The Echo Area): Correct format function cross + reference. + +2005-05-05 Luc Teirlinck + + * variables.texi (Variable Aliases): Change description of + `define-obsolete-variable-alias'. + + * functions.texi (Functions): Add "Obsolete Functions" to menu. + (Defining Functions): Add xref. + (Obsolete Functions): New node. + (Function Safety): Standardize capitalization of section title. + + * frames.texi (Pop-Up Menus): Complete description of `x-popup-menu'. + (Dialog Boxes): Complete description of `x-popup-dialog'. + +2005-05-04 Richard M. Stallman + + * commands.texi (Interactive Codes): Fix Texinfo usage. + Document U more clearly. + +2005-05-01 Luc Teirlinck + + * variables.texi (Variable Aliases): `make-obsolete-variable' is a + function and not a macro. + + * frames.texi (Pop-Up Menus): Correct and clarify description of + `x-popup-menu'. + (Dialog Boxes): Clarify description of `x-popup-dialog'. + +2005-05-01 Richard M. Stallman + + * edebug.texi (Checking Whether to Stop): Fix previous change. + +2005-05-01 Luc Teirlinck + + * display.texi: Fix typos and Texinfo usage. + + * edebug.texi (Checking Whether to Stop): executing-macro -> + executing-kbd-macro. + +2005-05-01 Richard M. Stallman + + * display.texi (Invisible Text): Correct add-to-invisibility-spec. + +2005-04-30 Richard M. Stallman + + * files.texi (Magic File Names): Document `operations' property. + +2005-04-29 Lute Kamstra + + * modes.texi (Generic Modes): New node. + (Major Modes): Add it to the menu. + (Derived Modes): Add "derived mode" to concept index. + +2005-04-28 Lute Kamstra + + * modes.texi (Defining Minor Modes): Fix previous change. + (Font Lock Mode): Simplify. + (Font Lock Basics): Say that font-lock-defaults is buffer-local + when set and that some parts are optional. Add cross references. + (Search-based Fontification): Say how to specify font-lock-keywords. + Add cross references. Add font-lock-multiline to index. + Move font-lock-keywords-case-fold-search here from node "Other Font + Lock Variables". Document font-lock-add-keywords and + font-lock-remove-keywords. + (Other Font Lock Variables): Move font-lock-keywords-only, + font-lock-syntax-table, font-lock-beginning-of-syntax-function, + and font-lock-syntactic-face-function to node "Syntactic Font + Lock". Move font-lock-keywords-case-fold-search to node + "Search-based Fontification". Document font-lock-inhibit-thing-lock + and font-lock-{,un}fontify-{buffer,region}-function. + (Precalculated Fontification): Remove reference to deleted variable + font-lock-core-only. + (Faces for Font Lock): Add font-lock-comment-delimiter-face. + (Syntactic Font Lock): Add intro. Move font-lock-keywords-only, + font-lock-syntax-table, font-lock-beginning-of-syntax-function, + and font-lock-syntactic-face-function here from node "Other Font + Lock Variables". Move font-lock-syntactic-keywords to "Setting + Syntax Properties". Add cross references. + (Setting Syntax Properties): New node. + Move font-lock-syntactic-keywords here from "Syntactic Font Lock". + * syntax.texi (Syntax Properties): Add cross reference. + * hooks.texi (Standard Hooks): Add Font-Lock hooks. + +2005-04-26 Richard M. Stallman + + * display.texi (Defining Faces): + Document `default' elements of defface spec. + + * modes.texi (Major Mode Conventions): Explain customizing ElDoc mode. + + * variables.texi (Variable Aliases): Clarify text. + +2005-04-25 Chong Yidong + + * windows.texi (Window Hooks): Remove reference to obsolete Lazy Lock. + +2005-04-25 Luc Teirlinck + + * hooks.texi (Standard Hooks): Most minor modes have mode hooks too. + +2005-04-24 Eli Zaretskii + + * syntax.texi (Syntax Table Internals): Elaborate documentation of + syntax-after and syntax-class. + + * files.texi (Changing Files): Fix last change's cross-reference. + (Unique File Names): Don't mention "numbers" in the documentation + of make-temp-file and make-temp-name. + +2005-04-23 Richard M. Stallman + + * files.texi (Changing Files): Document MUSTBENEW arg in copy-file. + +2005-04-22 Nick Roberts + + * windows.texi (Cyclic Window Ordering): Clarify window-list. + +2005-04-22 Nick Roberts + + * variables.texi (Variable Aliases): Describe make-obsolete-variable + and define-obsolete-variable-alias. + +2005-04-22 Kim F. Storm + + * symbols.texi (Symbol Plists): Remove safe-get, as get is now safe. + (Other Plists): Remove safe-plist-get, as plist-get is now safe. + +2005-04-21 Lute Kamstra + + * lists.texi (Association Lists): Document rassq-delete-all. + +2005-04-19 Richard M. Stallman + + * modes.texi (Search-based Fontification): Explain that + facespec is an expression to be evaluated. + +2005-04-19 Kevin Ryde + + * streams.texi (Output Functions): Fix xref. + * strings.texi (String Conversion): Fix xref. + +2005-04-19 Kim F. Storm + + * symbols.texi (Symbol Plists): Add safe-get. + Mention that `get' may signal an error. + +2005-04-18 Nick Roberts + + * customize.texi (Variable Definitions): Replace tooltip-mode + example with save-place. + +2005-04-17 Richard M. Stallman + + * buffers.texi (Indirect Buffers): Clarify. + + * positions.texi (Positions): Clarify converting marker to integer. + + * strings.texi (String Basics): Mention string-match; clarify. + +2005-04-08 Lute Kamstra + + * modes.texi (Search-based Fontification): Fix cross references. + Use consistent terminology. Document anchored highlighting. + +2005-04-05 Lute Kamstra + + * modes.texi (Defining Minor Modes): Document :group keyword + argument and its default value. + +2005-04-03 Lute Kamstra + + * hooks.texi (Standard Hooks): Add some hooks. Add cross + references and/or descriptions. Delete major mode hooks; mention + them as a category instead. Rename or delete obsolete hooks. + +2005-04-02 Richard M. Stallman + + * nonascii.texi (Coding System Basics): Another wording cleanup. + +2005-04-01 Richard M. Stallman + + * nonascii.texi (Coding System Basics): Clarify previous change. + +2005-04-01 Kenichi Handa + + * nonascii.texi (Coding System Basics): Describe about rondtrip + identity of coding systems. + +2005-03-29 Chong Yidong + + * text.texi (Buffer Contents): Add filter-buffer-substring and + buffer-substring-filters. + +2005-03-26 Chong Yidong + + * anti.texi (Antinews): Mention `G' interactive code. + + * tips.texi (Compilation Tips): Mention benchmark.el. + +2005-03-27 Luc Teirlinck + + * modes.texi (Other Font Lock Variables): `font-lock-fontify-block' + is now bound to M-o M-o. + + * keymaps.texi (Prefix Keys): `facemenu-keymap' is now on M-o. + +2005-03-26 Glenn Morris + + * calendar.texi: Delete file (and move contents to emacs-xtra.texi + in the Emacs Manual). + * Makefile.in (srcs): Remove calendar.texi. + * makefile.w32-in (srcs): Remove calendar.texi. + * display.texi (Display): Change name of next node. + * os.texi (System In): Change name of previous node. + * elisp.texi (Top): Remove Calendar references. + * vol1.texi (Top): Remove Calendar references. + * vol2.texi (Top): Remove Calendar references. + +2005-03-25 Richard M. Stallman + + * display.texi (Standard Faces, Fringe Bitmaps, Customizing Bitmaps): + Cleanup previous change. + +2005-03-25 Chong Yidong + + * display.texi (Face Attributes): Faces earlier in an :inherit + list take precedence. + (Scroll Bars): Fix description of vertical-scroll-bars. + Document frame-current-scroll-bars and window-current-scroll-bars. + + * markers.texi (The Mark): Document temporary Transient Mark mode. + + * minibuf.texi (Reading File Names): + Document read-file-name-completion-ignore-case. + + * positions.texi (Screen Lines): Document nil for width argument + to compute-motion. + +2005-03-23 Kim F. Storm + + * display.texi (Standard Faces): Other faces used in the fringe + implicitly inherits from the fringe face. + (Fringe Bitmaps): FACE in right-fringe and left-fringe display + properties implicitly inherits from fringe face. + (Customizing Bitmaps): Likewise for set-fringe-bitmap-face. + +2005-03-20 Chong Yidong + + * display.texi (Invisible Text): State default value of + line-move-ignore-invisible. + (Managing Overlays): Document remove-overlays. + (Standard Faces): Document escape-glyph face. + + * minibuf.texi (Reading File Names): Document read-file-name-function. + + * modes.texi (Other Font Lock Variables): + Document font-lock-lines-before. + + * positions.texi (Skipping Characters): skip-chars-forward allows + character classes. + +2005-03-18 Lute Kamstra + + * edebug.texi (Instrumenting Macro Calls): Fix another typo. + +2005-03-17 Richard M. Stallman + + * text.texi (Undo): Document extensible undo entries. + + * searching.texi (String Search, Regexp Search, Regexp Search): + Cleanups. + + * nonascii.texi (Character Codes): Minor fix. + + * display.texi (Display Property): Explain the significance + of having text properties that are eq. + (Other Display Specs): Explain string as display spec. + + * commands.texi (Interactive Codes): Document G option. + +2005-03-17 Chong Yidong + + * text.texi (Filling): Add sentence-end-without-period and + sentence-end-without-space. + (Changing Properties): Minor fix. + + * anti.texi: Total rewrite. + +2005-03-15 Lute Kamstra + + * edebug.texi (Instrumenting Macro Calls): Fix typos. + +2005-03-08 Kim F. Storm + + * display.texi (Specified Space): Property :width is support on + non-graphic terminals, :height is not. + +2005-03-07 Richard M. Stallman + + * display.texi (Overlay Arrow, Fringe Bitmaps, Customizing Bitmaps): + Now subnodes of Fringes. + (Overlay Arrow): Document overlay-arrow-variable-list. + (Fringe Size/Pos): New node, broken out of Fringes. + (Display): Explain clearing vs redisplay better. + (Truncation): Clarify use of bitmaps. + (The Echo Area): Clarify the uses of the echo area. + Add max-mini-window-height. + (Progress): Clarify. + (Invisible Text): Explain that main loop moves point out. + (Selective Display): Say "hidden", not "invisible". + (Managing Overlays): Move up. Describe relation to Undo here. + (Overlay Properties): Clarify intro. + (Finding Overlays): Explain return values when nothing found. + (Width): truncate-string-to-width has added arg. + (Displaying Faces): Clarify and update mode line face handling. + (Face Functions): Minor cleanup. + (Conditional Display): Merge into Other Display Specs. + (Pixel Specification, Other Display Specs): Minor cleanups. + (Images, Image Descriptors): Minor cleanups. + (GIF Images): Patents have expired. + (Showing Images): Explain default text for insert-image. + (Manipulating Button Types): Merge into Manipulating Buttons. + (Making Buttons): Explain return values. + (Button Buffer Commands): Add xref. + (Inverse Video): Update mode-line-inverse-video. + (Display Table Format): Clarify. + (Active Display Table): Give defaults for window-display-table. + + * calendar.texi (Calendar Customizing): calendar-holiday-marker + and calendar-today-marker are strings, not chars. + (Holiday Customizing): Minor fix. + + * internals.texi (Writing Emacs Primitives): Update `or' example. + Update limit on # args of subr. + + * edebug.texi (Using Edebug): Arrow is in fringe. + (Instrumenting): Arg to eval-defun works without loading edebug. + (Edebug Execution Modes): Add xref. + + * customize.texi (Common Keywords): Clarify :require. + Mention :version here. + (Variable Definitions, Group Definitions): Not here. + (Variable Definitions): Clarify symbol arg to :initialize and :set fns. + +2005-03-07 Chong Yidong + * nonascii.texi (Text Representations): Clarify position-bytes. + (Character Sets): Add list-charset-chars. + (Scanning Charsets): Add charset-after. + (Encoding and I/O): Minor fix. + +2005-03-06 Richard M. Stallman + + * windows.texi (Vertical Scrolling): Get rid of "Emacs 21". + (Resizing Windows): Likewise. + + * text.texi (Change Hooks): Get rid of "Emacs 21". + + * strings.texi (Formatting Strings): Get rid of "Emacs 21". + + * streams.texi (Output Variables): Get rid of "Emacs 21". + + * searching.texi (Regexp Special, Char Classes): Get rid of "Emacs 21". + + * os.texi (Translating Input): Replace flow-control example + with a less obsolete example that uses `keyboard-translate'. + + * objects.texi (Hash Table Type, Circular Objects): + Get rid of "Emacs 21". + + * modes.texi (Mode Line Format): Get rid of "Emacs 21". + (Mode Line Data, Properties in Mode, Header Lines): Likewise. + + * minibuf.texi (Minibuffer Misc): Get rid of "Emacs 21". + + * lists.texi (List Elements, Building Lists): Get rid of "Emacs 21". + + * keymaps.texi (Menu Separators, Tool Bar): Get rid of "Emacs 21". + (Menu Bar): Fix when menu-bar-update-hook is called. + + * hash.texi (Hash Tables): Get rid of "Emacs 21". + + * frames.texi (Text Terminal Colors): Get rid of "Emacs 21", + and make it read better. + + * files.texi (Writing to Files): Get rid of "Emacs 21". + (Unique File Names): Likewise. + + * elisp.texi: Update Emacs version to 22. + + * display.texi (Forcing Redisplay): Get rid of "Emacs 21". + (Overlay Properties, Face Attributes): Likewise. + (Managing Overlays): Fix punctuation. + (Attribute Functions): Clarify set-face-font; get rid of + info about old Emacs versions. + (Auto Faces, Font Lookup, Display Property, Images): + Get rid of "Emacs 21". + + * calendar.texi (Calendar Customizing): Get rid of "Emacs 21". + +2005-03-05 Richard M. Stallman + + * debugging.texi (Error Debugging): Remove stack-trace-on-error. + +2005-03-04 Lute Kamstra + + * debugging.texi (Error Debugging): Document stack-trace-on-error. + +2005-03-03 Lute Kamstra + + * edebug.texi (Instrumenting Macro Calls): Fix typo. + +2005-03-01 Lute Kamstra + + * debugging.texi (Debugger Commands): Update `j'. + +2005-02-28 Lute Kamstra + + * debugging.texi (Debugging): Fix typo. + (Error Debugging): Document eval-expression-debug-on-error. + (Function Debugging): Update example. + (Using Debugger): Mention starred stack frames. + (Debugger Commands): Document `j' and `l'. + (Invoking the Debugger): `d' and `j' exit recursive edit too. + Update the messages that the debugger displays. + (Internals of Debugger): Add cross reference. Update example. + (Excess Open): Minor improvement. + (Excess Close): Minor improvement. + +2005-02-26 Richard M. Stallman + + * tips.texi (Coding Conventions): Clarify. + Put all the major mode key reservations together. + Mention the Mouse-1 => Mouse-2 conventions. + + * syntax.texi (Syntax Class Table): Clarify. + (Syntax Table Functions): syntax-after moved from here. + (Syntax Table Internals): syntax-after moved to here. + (Parsing Expressions): Update info on number of values + and what's meaningful in the STATE argument. + (Categories): Fix typo. + + * sequences.texi (Arrays): Cleanup. + (Char-Tables): Clarify. + + * processes.texi (Deleting Processes): Cleanups, add xref. + (Subprocess Creation): Explain nil in exec-path. Cleanup. + (Process Information): set-process-coding-system, some args optional. + (Input to Processes): Explain various types for PROCESS args. + Rename them from PROCESS-NAME to PROCESS. + (Signals to Processes): Likewise. + (Decoding Output): Cleanup. + (Query Before Exit): Clarify. + + * os.texi (Startup Summary): Correct the options; add missing ones. + (Terminal Output, Batch Mode): Clarify. + (Flow Control): Node deleted. + + * markers.texi (The Mark): Clarify. + + * macros.texi (Expansion): Cleanup. + (Indenting Macros): indent-spec allows ints, not floats. + + * keymaps.texi (Keymaps): Clarify. + (Format of Keymaps): Update lisp-mode-map example. + (Active Keymaps, Key Lookup): Clarify. + (Changing Key Bindings): Add xref to `kbd'. + (Key Binding Commands, Simple Menu Items): Clarify. + (Mouse Menus, Menu Bar): Clarify. + (Menu Example): Replace print example with menu-bar-replace-menu. + + * help.texi (Documentation Basics): Add function-documentation prop. + + * elisp.texi (Top): Don't refer to Flow Control node. + + * commands.texi (Command Overview): Improve xrefs. + (Adjusting Point): Adjusting point applies to intangible and invis. + (Key Sequence Input): Doc extra read-key-sequence args. + Likewise for read-key-sequence-vector. + + * backups.texi (Rename or Copy): Minor fix. + (Numbered Backups): For version-control, say the default. + (Auto-Saving): make-auto-save-file-name example is simplified. + + * advice.texi (Advising Functions): Don't imply one part of Emacs + should advise another part. Markup changes. + (Defining Advice): Move transitional para. + (Activation of Advice): Cleanup. + Explain if COMPILE is nil or negative. + + * abbrevs.texi (Abbrev Expansion): Clarify, fix typo. + +2005-02-24 Lute Kamstra + + * modes.texi (Defining Minor Modes): Explain that INIT-VALUE, + LIGHTER, and KEYMAP can be omitted when KEYWORD-ARGS are used. + +2005-02-23 Lute Kamstra + + * modes.texi (Defining Minor Modes): define-minor-mode can be used + to define global minor modes as well. + + * display.texi (Managing Overlays): overlay-buffer returns nil for + deleted overlays. + +2005-02-22 Kim F. Storm + + * minibuf.texi (Basic Completion): Allow symbols in addition to + strings in try-completion and all-completions. + +2005-02-14 Lute Kamstra + + * elisp.texi (Top): Remove reference to deleted node. + + * lists.texi (Lists): Remove reference to deleted node. + (Cons Cells): Fix typo. + + * loading.texi (Where Defined): Fix typo. + +2005-02-14 Richard M. Stallman + + * variables.texi (Creating Buffer-Local): change-major-mode-hook + is useful for discarding some minor modes. + + * symbols.texi (Symbol Components): Reorder examples. + + * streams.texi (Input Functions): State standard-input default. + (Output Variables): State standard-output default. + + * objects.texi (Printed Representation): Clarify read syntax vs print. + (Floating Point Type): Explain meaning better. + (Symbol Type): Explain uniqueness better. + (Cons Cell Type): Explain empty list sooner. CAR and CDR later. + List examples sooner. + (Box Diagrams): New subnode broken out. + Some examples moved from old Lists as Boxes node. + (Dotted Pair Notation): Clarify intro. + (Array Type): Clarify. + (Type Predicates): Add hash-table-p. + + * numbers.texi (Integer Basics): Clarify radix explanation. + (Predicates on Numbers): Minor clarification. + (Comparison of Numbers): Minor clarification. Clarify eql. + Typos in min, max. + (Math Functions): Clarify overflow in expt. + + * minibuf.texi (Text from Minibuffer): Minor clarification. + Mention arrow keys. + + * loading.texi (Autoload): defun's doc string overrides autoload's + doc string. + (Repeated Loading): Modernize "add to list" examples. + (Where Defined): Finish updating table of load-history elts. + + * lists.texi (List-related Predicates): Minor wording improvement. + (Lists as Boxes): Node deleted. + (Building Lists): Explain trivial cases of number-sequence. + + * hash.texi (Hash Tables): Add desc to menu items. + (Creating Hash): Expain "full" means "make larger", + (Hash Access): Any object can be a key. + State value of maphash. + + * functions.texi (What Is a Function): Wording cleanup. + (Function Documentation): Minor cleanup. + Explain purpose of calling convention at end of doc string. + (Function Names): Wording cleanup. + (Calling Functions): Wording cleanup. + Explain better how funcall calls the function. + (Function Cells): Delete example of saving and redefining function. + + * control.texi (Combining Conditions): Wording cleanup. + (Iteration): dolist and dotimes bind VAR locally. + (Cleanups): Xref to Atomic Changes. + + * compile.texi (Byte Compilation): Delete 19.29 info. + (Compilation Functions): Macros' difficulties don't affect defsubst. + (Docs and Compilation): Delete 19.29 info. + +2005-02-10 Richard M. Stallman + + * objects.texi (Symbol Type): Minor correction. + +2005-02-06 Lute Kamstra + + * modes.texi (Example Major Modes): Fix typos. + +2005-02-06 Richard M. Stallman + + * text.texi (Margins): fill-nobreak-predicate can be one function. + + * strings.texi (Modifying Strings): clear-string can make unibyte. + (Formatting Strings): format gives error if values missing. + + * positions.texi (Character Motion): Mention default arg + for forward-char. backward-char refers to forward-char. + (Word Motion): Mention default arg for forward-word. + (Buffer End Motion): Mention default arg for beginning-of-buffer. + Simplify end-of-buffer. + (Text Lines): Mention default arg for forward-line. + (List Motion): Mention default arg for beginning/end-of-defun. + (Skipping Characters): Minor fixes in explaining character-set. + + * modes.texi (Major Mode Conventions): Mention "system abbrevs". + Mode inheritance applies only when default-major-mode is nil. + Clarifications. + (Example Major Modes): Update Text mode and Lisp mode examples. + (Minor Mode Conventions): Mention define-minor-mode at top. + (Defining Minor Modes): In Hungry example, don't define C-M-DEL. + (Mode Line Format): Update mode line face display info. + (Properties in Mode): Mention effect of risky vars. + (Imenu): Define imenu-add-to-menubar. + (Font Lock Mode): Add descriptions to menu lines. + (Faces for Font Lock): Add font-lock-doc-face. + +2005-02-05 Lute Kamstra + + * text.texi (Maintaining Undo): Remove obsolete function. + +2005-02-05 Eli Zaretskii + + * frames.texi (Color Names): Add pointer to the X docs about RGB + color specifications. Improve indexing + (Text Terminal Colors): Replace the description of RGB values by + an xref to "Color Names". + +2005-02-03 Richard M. Stallman + + * windows.texi (Basic Windows): Add cursor-in-non-selected-windows. + Clarify. + (Selecting Windows): Clarify save-selected-window. + (Cyclic Window Ordering): Clarify walk-windows. + (Window Point): Clarify. + (Window Start): Add comment to example. + (Resizing Windows): Add `interactive' specs in examples. + Document fit-window-to-buffer. + + * text.texi (User-Level Deletion): just-one-space takes numeric arg. + (Undo, Maintaining Undo): Clarify last change. + (Sorting): In sort-numeric-fields, explain about octal and hex. + Mention sort-numeric-base. + (Format Properties): Add xref for hard newlines. + + * frames.texi (Window Frame Parameters): Explain pixel=char on tty. + (Pop-Up Menus): Fix typo. + (Color Names): Explain all types of color names. + Explain color-values on B&W terminal. + (Text Terminal Colors): Explain "rgb values" are lists. Fix arg names. + + * files.texi (File Locks): Not supported on MS systems. + (Testing Accessibility): Clarify. + + * edebug.texi (Printing in Edebug): Fix edebug-print-circle. + (Coverage Testing): Fix typo. + + * commands.texi (Misc Events): Remove stray space. + + * buffers.texi (Buffer Names): Clarify generate-new-buffer-name. + (Modification Time): Clarify when visited-file-modtime returns 0. + (The Buffer List): Clarify bury-buffer. + (Killing Buffers): Clarify. + (Indirect Buffers): Add clone-indirect-buffer. + +2005-02-02 Matt Hodges + + * edebug.texi (Printing in Edebug): Fix default value of + edebug-print-circle. + (Coverage Testing): Fix displayed frequency count data. + +2005-02-02 Luc Teirlinck + + * text.texi (Maintaining Undo): Add `undo-outer-limit'. + +2005-02-02 Kim F. Storm + + * text.texi (Undo) : Describe `apply' elements. + +2005-01-29 Eli Zaretskii + + * commands.texi (Misc Events): Describe the help-echo event. + + * text.texi (Special Properties) : Use `pos' + consistently in description of the help-echo property. + Use @code{nil} instead of @var{nil}. + + * display.texi (Overlay Properties): Fix the index entry for + help-echo overlay property. + + * customize.texi (Type Keywords): Uncomment the xref to the + help-echo property documentation. + +2005-01-23 Kim F. Storm + + * windows.texi (Window Start): Fix `pos-visible-in-window-p' + return value. Third element FULLY replaced by PARTIAL which + specifies number of invisible pixels if row is only partially visible. + (Textual Scrolling): Mention auto-window-vscroll. + (Vertical Scrolling): New defvar auto-window-vscroll. + +2005-01-16 Luc Teirlinck + + * keymaps.texi (Changing Key Bindings): `suppress-keymap' now uses + command remapping. + +2005-01-15 Richard M. Stallman + + * display.texi (Defining Images): Mention DATA-P arg of create-image. + +2005-01-14 Kim F. Storm + + * commands.texi (Accessing Events): Add WHOLE arg to posn-at-x-y. + + * text.texi (Links and Mouse-1): Fix string and vector item. + +2005-01-13 Richard M. Stallman + + * keymaps.texi (Active Keymaps): Rewrite the text, and update the + descriptions of overriding-local-map and overriding-terminal-local-map. + + * text.texi (Links and Mouse-1): Clarify text. + +2005-01-13 Kim F. Storm + + * modes.texi (Emulating Mode Line): Update format-mode-line entry. + +2005-01-13 Francis Litterio (tiny change) + + * keymaps.texi (Active Keymaps): Fix overriding-local-map description. + +2005-01-12 Kim F. Storm + + * text.texi (Links and Mouse-1): Rename section from Enabling + Mouse-1 to Following Links. Change xrefs. + Add examples for define-button-type and define-widget. + + * display.texi (Button Properties, Button Buffer Commands): + Clarify mouse-1 and follow-link functionality. + +2005-01-12 Richard M. Stallman + + * text.texi (Enabling Mouse-1 to Follow Links): Redo prev. change. + + * display.texi (Beeping): Fix Texinfo usage. + + * modes.texi (Emulating Mode Line): Doc FACE arg in format-header-line. + +2005-01-11 Kim F. Storm + + * display.texi (Button Properties, Button Buffer Commands): + Mention mouse-1 binding. Add follow-link keyword. + + * text.texi (Text Properties): Add "Enable Mouse-1" to submenu. + (Enabling Mouse-1 to Follow Links): New subsection. + +2005-01-06 Richard M. Stallman + + * text.texi (Special Properties): Minor change. + + * os.texi (Timers): Clarify previous change. + + * modes.texi (Emulating Mode Line): format-mode-line requires 1 arg. + +2005-01-01 Luc Teirlinck + + * display.texi (Face Attributes): Correct xref to renamed node. + +2005-01-01 Richard M. Stallman + + * display.texi (Face Attributes): Describe hex color specs. + +2004-12-31 Richard M. Stallman + + * os.texi (Timers): Update previous change. + +2004-12-30 Kim F. Storm + + * display.texi (Line Height): Total line-height is now specified + in line-height property of form (HEIGHT TOTAL). Swap (FACE . RATIO) + in cons cells. (nil . RATIO) is relative to actual line height. + Use line-height `t' instead of `0' to get minimum height. + +2004-12-29 Richard M. Stallman + + * os.texi (Timers): Discuss timers vs editing the buffer and undo. + +2004-12-28 Richard M. Stallman + + * commands.texi (Quitting): Clarify value of with-local-quit. + + * elisp.texi (Top): Fix previous change. + + * loading.texi (Loading): Fix previous change. + +2004-12-27 Richard M. Stallman + + * Makefile.in (MAKEINFO): Specify --force. + + * buffers.texi (Killing Buffers): Add buffer-save-without-query. + + * modes.texi (Emulating Mode Line): Document format's BUFFER arg. + + * display.texi (Line Height): Further clarify. + + * elisp.texi (Top): Update Loading submenu. + + * loading.texi (Where Defined): New node. + (Unloading): load-history moved to Where Defined. + +2004-12-21 Richard M. Stallman + + * commands.texi (Event Input Misc): Add while-no-input. + +2004-12-11 Richard M. Stallman + + * display.texi (Line Height): Rewrite text for clarity. + +2004-12-11 Kim F. Storm + + * display.texi (Display): Add node "Line Height" to menu. + (Line Height): New node. Move full description of line-spacing + and line-height text properties here from text.texi. + (Scroll Bars): Add vertical-scroll-bar variable. + + * frames.texi (Window Frame Parameters): Remove line-height defvar. + + * locals.texi (Standard Buffer-Local Variables): Fix xref for + line-spacing and vertical-scroll-bar. + + * text.texi (Special Properties): Just mention line-spacing and + line-height here, add xref to new "Line Height" node. + +2004-12-09 Thien-Thi Nguyen + + * frames.texi (Window Frame Parameters): New @defvar for `line-spacing'. + + * locals.texi (Standard Buffer-Local Variables): + Add @xref for `line-spacing'. + +2004-12-05 Richard M. Stallman + + * Makefile.in (maintainer-clean): Remove the info files + in $(infodir) where they are created. + +2004-12-03 Richard M. Stallman + + * windows.texi (Selecting Windows): get-lru-window and + get-largest-window don't consider dedicated windows. + + * text.texi (Undo): Document undo-in-progress. + +2004-11-26 Richard M. Stallman + + * locals.texi (Standard Buffer-Local Variables): Undo prev change. + Remove a few vars that are not always buffer-local. + +2004-11-24 Luc Teirlinck + + * locals.texi (Standard Buffer-Local Variables): Comment out + xref's to non-existent node `Yet to be written'. + +2004-11-24 Richard M. Stallman + + * processes.texi (Synchronous Processes): Grammar fix. + + * numbers.texi (Comparison of Numbers): Add eql. + + * locals.texi (Standard Buffer-Local Variables): Add many vars. + + * intro.texi (Printing Notation): Fix previous change. + + * display.texi (Customizing Bitmaps): Move indicate-buffer-boundaries + and default-indicate-buffer-boundaries from here. + (Usual Display): To here. + (Scroll Bars): Add scroll-bar-mode and scroll-bar-width. + (Usual Display): Move tab-width up. + + * customize.texi (Variable Definitions): Replace + show-paren-mode example with tooltip-mode. + (Simple Types, Composite Types, Defining New Types): + Minor cleanups. + +2004-11-21 Jesper Harder + + * processes.texi (Synchronous Processes, Output from Processes): + Markup fix. + +2004-11-20 Richard M. Stallman + + * positions.texi (Skipping Characters): skip-chars-forward + now handles char classes. + + * intro.texi (Printing Notation): Avoid confusion of `print' + when explaining @print. + + * macros.texi (Argument Evaluation): Fix 1st `for' expansion example. + + * display.texi (Display Table Format): Minor fix. + + * streams.texi (Output Functions): Fix print example. + + * Makefile.in (elisp): New target. + (dist): Depend on $(infodir)/elisp, not elisp. + Copy the info files from $(infodir). + + * minibuf.texi (Text from Minibuffer): Document KEEP-ALL arg in + read-from-minibuffer. + + * searching.texi (Regexp Search): Rename that to search-spaces-regexp. + +2004-11-19 Richard M. Stallman + + * searching.texi (Regexp Search): Add search-whitespace-regexp. + +2004-11-19 CHENG Gao (tiny change) + + * tips.texi (Coding Conventions): Fix typo. + +2004-11-16 Richard M. Stallman + + * tips.texi (Coding Conventions): Separate defvar and require + methods to avoid warnings. Use require only when there are many + functions and variables from that package. + + * minibuf.texi (Minibuffer Completion): When ignoring case, + predicate must not be case-sensitive. + + * debugging.texi (Function Debugging, Explicit Debug): Clarified. + (Test Coverage): Don't talk about "splotches". Clarified. + +2004-11-16 Thien-Thi Nguyen + + * frames.texi (Window Frame Parameters): Fix typo. + +2004-11-15 Kim F. Storm + + * symbols.texi (Other Plists): Note that plist-get may signal error. + Add safe-plist-get. + +2004-11-15 Thien-Thi Nguyen + + * modes.texi (Font Lock Basics): Fix typo. + +2004-11-08 Richard M. Stallman + + * syntax.texi (Syntax Table Functions): Add syntax-after. + +2004-11-06 Lars Brinkhoff + + * os.texi (Processor Run Time): New section documenting + get-internal-run-time. + +2004-11-06 Eli Zaretskii + + * Makefile.in (install, maintainer-clean): Don't use "elisp-*" as + it nukes elisp-cover.texi. + (dist): Change elisp-[0-9] to elisp-[1-9], as there could be no + elisp-0 etc. + +2004-11-05 Luc Teirlinck + + * commands.texi (Keyboard Macros): Document `append' return value + of `defining-kbd-macro'. + +2004-11-01 Richard M. Stallman + + * commands.texi (Interactive Call): Add called-interactively-p. + +2004-10-29 Simon Josefsson + + * minibuf.texi (Reading a Password): Revert. + +2004-10-28 Richard M. Stallman + + * frames.texi (Display Feature Testing): Explain about "vendor". + +2004-10-27 Richard M. Stallman + + * commands.texi (Interactive Codes): `N' uses numeric prefix, + not raw. Clarify `n'. + (Interactive Call): Rewrite interactive-p, focusing on when + and how to use it. + (Misc Events): Clarify previous change. + + * advice.texi (Simple Advice): Clarify what job the example does. + (Around-Advice): Clarify ad-do-it. + (Activation of Advice): An option of ad-default-compilation-action + is `never', not `nil'. + +2004-10-26 Kim F. Storm + + * commands.texi (Interactive Codes): Add U code letter. + +2004-10-25 Simon Josefsson + + * minibuf.texi (Reading a Password): Add. + +2004-10-24 Jason Rumney + + * commands.texi (Misc Events): Remove mouse-wheel. Add wheel-up + and wheel-down. + +2004-10-24 Kai Grossjohann + + * processes.texi (Synchronous Processes): Document process-file. + +2004-10-22 Kenichi Handa + + * text.texi (translate-region): Document that it accepts also a + char-table. + +2004-10-22 David Ponce + + * windows.texi (Resizing Windows): Document the `preserve-before' + argument of the functions `enlarge-window' and `shrink-window'. + +2004-10-19 Jason Rumney + + * makefile.w32-in (elisp): Change order of arguments to makeinfo. + +2004-10-09 Luc Teirlinck + + * text.texi (Filling): Add anchor for definition of + `sentence-end-double-space'. + + * searching.texi (Regexp Example): Update description of how + Emacs currently recognizes the end of a sentence. + (Standard Regexps): Update definition of the variable + `sentence-end'. Add definition of the function `sentence-end'. + +2004-10-08 Paul Pogonyshev + + * display.texi (Progress): New node. + +2004-10-05 Kim F. Storm + + * display.texi (Fringe Bitmaps): Update fringe-bitmaps-at-pos. + +2004-09-29 Kim F. Storm + + * display.texi (Fringe Bitmaps): Use symbols rather than numbers + to identify bitmaps. Remove -fringe-bitmap suffix for standard + fringe bitmap symbols, as they now have their own namespace. + (Customizing Bitmaps) : Clarify bit ordering + vs. pixels. Signal error if no free bitmap slots. + (Pixel Specification): Change IMAGE to @var{image}. + +2004-09-28 Richard M. Stallman + + * text.texi (Special Properties): Clarify line-spacing and line-height. + + * searching.texi (Regexp Search): Add looking-back. + +2004-09-25 Luc Teirlinck + + * display.texi: Correct typos. + (Image Descriptors): Correct xref's. + +2004-09-25 Richard M. Stallman + + * text.texi (Special Properties): Cleanups in `cursor'. + Rewrites in `line-height' and `line-spacing'; exchange them. + + * display.texi (Fringes): Rewrite previous change. + (Fringe Bitmaps): Merge text from Display Fringe Bitmaps. Rewrite. + (Display Fringe Bitmaps): Node deleted, text moved. + (Customizing Bitmaps): Split off from Fringe Bitmaps. Rewrite. + (Scroll Bars): Clarify set-window-scroll-bars. + (Pointer Shape): Rewrite. + (Specified Space): Clarify :align-to, etc. + (Pixel Specification): Use @var. Clarify new text. + (Other Display Specs): Clarify `slice'. + (Image Descriptors): Cleanups. + (Showing Images): Cleanups. + +2004-09-24 Luc Teirlinck + + * hooks.texi (Standard Hooks): Add `after-change-major-mode-hook'. + + * modes.texi: Various minor changes in addition to: + (Major Mode Conventions): Final call to `run-mode-hooks' should + not be inside the `delay-mode-hooks' form. + (Mode Hooks): New node. + (Hooks): Delete obsolete example. + Move definitions of `run-mode-hooks' and `delay-mode-hooks' to new + node "Mode Hooks". + +2004-09-22 Luc Teirlinck + + * display.texi: Correct various typos. + (Display): Rename node "Pointer Shapes" to "Pointer + Shape". (There is already a node called "Pointer Shapes" in + frames.texi.) + (Images): Remove non-existent node "Image Slices" from menu. + +2004-09-23 Kim F. Storm + + * text.texi (Special Properties): Add `cursor', `pointer', + `line-height', and `line-spacing' properties. + + * display.texi (Display): Add 'Fringe Bitmaps' and 'Pointer + Shapes' to menu. + (Standard Faces): Doc fix for fringe face. + (Fringes): Add `overflow-newline-into-fringe' and + 'indicate-buffer-boundaries'. + (Fringe Bitmaps, Pointer Shapes): New nodes. + (Display Property): Add 'Pixel Specification' and 'Display Fringe + Bitmaps' to menu. + (Specified Space): Describe pixel width and height. + (Pixel Specification): New node. + (Other Display Specs): Add `slice' property. + (Display Fringe Bitmaps): New node. + (Images): Add 'Image Slices' to menu. + (Image Descriptors): Add `:pointer' and `:map' properties. + (Showing Images): Add slice arg to `insert-image'. Add + 'insert-sliced-image'. + +2004-09-20 Richard M. Stallman + + * commands.texi (Key Sequence Input): + Clarify downcasing in read-key-sequence. + +2004-09-08 Juri Linkov + + * minibuf.texi (Minibuffer History): Add `history-delete-duplicates'. + +2004-09-07 Luc Teirlinck + + * locals.texi (Standard Buffer-Local Variables): Add + `buffer-auto-save-file-format'. + * internals.texi (Buffer Internals): Describe new + auto_save_file_format field of the buffer structure. + * files.texi (Format Conversion): `auto-save-file-format' has been + renamed `buffer-auto-save-file-format'. + +2004-08-27 Luc Teirlinck + + * abbrevs.texi (Abbrev Expansion): `abbrev-start-location' can be + an integer or a marker. + (Abbrev Expansion): Replace example for `pre-abbrev-expand-hook'. + +2004-08-22 Richard M. Stallman + + * modes.texi (Major Mode Conventions): Discuss rebinding of + standard key bindings. + +2004-08-18 Kim F. Storm + + * processes.texi (Accepting Output): Add `just-this-one' arg to + `accept-process-output'. + (Output from Processes): New var `process-adaptive-read-buffering'. + +2004-08-10 Luc Teirlinck + + * keymaps.texi: Various changes in addition to: + (Keymap Terminology): `kbd' uses same syntax as Edit Macro mode. + Give more varied examples for `kbd'. + (Creating Keymaps): Char tables have slots for all characters + without modifiers. + (Active Keymaps): `overriding-local-map' and + `overriding-terminal-local-map' also override text property and + overlay keymaps. + (Functions for Key Lookup): Mention OLP arg to `current-active-maps'. + (Scanning Keymaps): `accessible-keymaps' uses `[]' instead of `""' + to denote a prefix of no events. + `map-keymap' includes parent's bindings _recursively_. + Clarify and correct description of `where-is-internal'. + Mention BUFFER-OR-NAME arg to `describe-bindings'. + (Menu Example): For menus intended for use with the keyboard, the + menu items should be bound to characters or real function keys. + +2004-08-08 Luc Teirlinck + + * objects.texi (Character Type): Reposition `@anchor' to prevent + double space inside sentence in Info. + + * hooks.texi (Standard Hooks): `disabled-command-hook' has been + renamed to `disabled-command-function'. + * commands.texi (Key Sequence Input): Remove unnecessary anchor. + (Command Loop Info): Replace reference to it. + (Disabling Commands): `disabled-command-hook' has been renamed to + `disabled-command-function'. + +2004-08-07 Luc Teirlinck + + * os.texi (Translating Input): Only non-prefix bindings in + `key-translation-map' override actual key bindings. Warn about + possible indirect effect of actual key bindings on non-prefix + bindings in `key-translation-map'. + +2004-08-06 Luc Teirlinck + + * minibuf.texi (High-Level Completion): Add anchor for definition + of `read-variable'. + + * commands.texi: Various changes in addition to: + (Using Interactive): Clarify description of `interactive-form'. + (Interactive Call): Mention default for KEYS argument to + `call-interactively'. + (Command Loop Info): Clarify description of `this-command-keys'. + Mention KEEP-RECORD argument to `clear-this-command-keys'. + Value of `last-event-frame' can be `macro'. + (Repeat Events): `double-click-fuzz' is also used to distinguish + clicks and drags. + (Classifying Events): Clarify descriptions of `event-modifiers' + `event-basic-type' and `event-convert-list'. + (Accessing Events): `posn-timestamp' takes POSITION argument. + (Quoted Character Input): Clarify description of + `read-quoted-char' and fix example. + (Quitting): Add `with-local-quit'. + (Disabling Commands): Correct and clarify descriptions of + `enable-command' and `disable-command'. + Mention what happens if `disabled-command-hook' is nil. + (Keyboard Macros): Mention LOOPFUNC arg to `execute-kbd-macro'. + Describe `executing-kbd-macro' instead of obsolete `executing-macro'. + +2004-07-24 Luc Teirlinck + + * frames.texi: Various changes in addition to: + (Creating Frames): Expand and clarify description of `make-frame'. + (Window Frame Parameters): Either none or both of the `icon-left' + and `icon-top' parameters must be specified. Put descriptions of + `menu-bar-lines' and `toolbar-lines' closer together and change + them accordingly. + (Frame Titles): `multiple-frames' is not guaranteed to be accurate + except while processing `frame-title-format' or `icon-title-format'. + (Deleting Frames): Correct description of `delete-frame'. + Non-nil return values of `frame-live-p' are like those of `framep'. + (Frames and Windows): Mention return value of + `set-frame-selected-window'. + (Visibility of Frames): Mention `force' argument to + `make-frame-invisible'. `frame-visible-p' returns t for all + frames on text-only terminals. + (Frame Configurations): Restoring a frame configuration does not + restore deleted frames. + (Window System Selections): `x-set-selection' returns DATA. + (Resources): Add example. + (Display Feature Testing): Clarify descriptions of + `display-pixel-height', `display-pixel-width', `x-server-version' + and `x-server-vendor'. + + * windows.texi (Choosing Window): Add anchor. + * minibuf.texi (Minibuffer Misc): Add anchor. + +2004-07-23 John Paul Wallington + + * macros.texi (Defining Macros): Declaration keyword for setting + Edebug spec is `debug' not `edebug'. + +2004-07-19 Luc Teirlinck + + * windows.texi: Various small changes in addition to: + (Window Point): Mention return value of `set-window-point'. + (Window Start): `pos-visible-in-window-p' disregards horizontal + scrolling. Explain return value if PARTIALLY is non-nil. + (Vertical Scrolling): Mention PIXELS-P argument to `window-vscroll' + and `set-window-vscroll'. + (Size of Window): The argument WINDOW to `window-inside-edges', + `window-pixel-edges' and `window-inside-pixel-edges' is optional. + (Resizing Windows): Explain return value of + `shrink-window-if-larger-than-buffer'. + `window-size-fixed' automatically becomes buffer local when set. + (Window Configurations): Explain return value of + `set-window-configuration'. + + * minibuf.texi (Minibuffer Misc): Add anchor for + `minibuffer-scroll-window'. + + * positions.texi (Text Lines): Add anchor for `count-lines'. + +2004-07-17 Richard M. Stallman + + * display.texi (Overlay Properties): Adding `evaporate' prop + deletes empty overlay immediately. + + * abbrevs.texi (Abbrev Expansion): Clarify pre-abbrev-expand-hook, + fix example. + +2004-07-16 Jim Blandy + + * searching.texi (Regexp Backslash): Document new \_< and \_> + operators. + +2004-07-16 Juanma Barranquero + + * display.texi (Images): Fix Texinfo usage. + +2004-07-14 Luc Teirlinck + + * buffers.texi (Modification Time): `visited-file-modtime' now + returns a list of two integers, instead of a cons. + +2004-07-13 Luc Teirlinck + + * windows.texi: Various changes in addition to: + (Splitting Windows): Add `split-window-keep-point'. + +2004-07-09 Richard M. Stallman + + * frames.texi (Input Focus): Minor fix. + +2004-07-07 Luc Teirlinck + + * frames.texi (Input Focus): Clarify descriptions of + `select-frame-set-input-focus' and `select-frame'. + +2004-07-06 Luc Teirlinck + + * os.texi: Various small changes in addition to: + (Killing Emacs): Expand and clarify description of + `kill-emacs-query-functions' and `kill-emacs-hook'. + (System Environment): Expand and clarify description of `getenv' + and `setenv'. + (Timers): Clarify description of `run-at-time'. + (Translating Input): Correct description of + `extra-keyboard-modifiers'. + (Flow Control): Correct description of `enable-flow-control'. + +2004-07-06 Thien-Thi Nguyen + + * os.texi: Update copyright. + (Session Management): Grammar fix. + Clarify which Emacs does the restarting. + Use @samp for *scratch* buffer. + +2004-07-04 Alan Mackenzie + + * frames.texi (Input Focus): Add documentation for + `select-frame-set-input-focus'. Replace refs to non-existent + `switch-frame' with `select-frame'. Minor corrections and tidying + up of text-only terminal stuff. + +2004-07-02 Richard M. Stallman + + * files.texi (Saving Buffers): Cleanup write-contents-function. + (Magic File Names): Cleanup file-remote-p. + +2004-07-02 Kai Grossjohann + + * files.texi (Magic File Names): `file-remote-p' returns an + identifier of the remote system, not just t. + +2004-07-02 David Kastrup + + * searching.texi (Entire Match Data): Add explanation about new + match-data behavior when @var{integers} is non-nil. + +2004-06-24 Richard M. Stallman + + * commands.texi (Misc Events): Describe usr1-signal, usr2-signal event. + + * customize.texi (Variable Definitions): Note about doc strings + and :set. + + * keymaps.texi (Keymap Terminology): Document `kbd'. + (Changing Key Bindings, Key Binding Commands): Use kbd in examples. + + * display.texi (Invisible Text): Setting buffer-invisibility-spec + makes it buffer-local. + + * files.texi (Saving Buffers): Correct previous change. + + * commands.texi (Accessing Events): + Clarify posn-col-row and posn-actual-col-row. + +2004-06-24 David Ponce + + * commands.texi (Accessing Events): New functions + posn-at-point and posn-at-x-y. Add example to posn-x-y. + +2004-06-23 Luc Teirlinck + + * lists.texi, files.texi, processes.texi, macros.texi, hash.texi: + * frames.texi, buffers.texi, backups.texi, variables.texi: + * loading.texi, eval.texi, functions.texi, control.texi: + * symbols.texi, minibuf.texi: Reposition @anchor's. + + * help.texi: Various small changes in addition to the following. + (Describing Characters): Describe PREFIX argument to + `key-description'. Correct and clarify definition of + `text-char-description'. Describe NEED-VECTOR argument to + `read-kbd-macro'. + (Help Functions): Clarify definition of `apropos'. + +2004-06-23 Lars Hansen + + * files.texi (Saving Buffers): Correct description of + `write-contents-functions'. + +2004-06-21 Juanma Barranquero + + * display.texi (Images): Remove redundant @vindex directives. + Rewrite `image-library-alist' doc in active voice. + +2004-06-14 Juanma Barranquero + + * display.texi (Images): Document new delayed library loading, + variable `image-library-alist' and (existing but undocumented) + function `image-type-available-p'. + +2004-06-05 Richard M. Stallman + + * minibuf.texi (Minibuffer Completion): For INITIAL arg, + refer the user to the Initial Input node. + (Text from Minibuffer): Likewise. + (Initial Input): New node. Document this feature + and say it is mostly deprecated. + +2004-05-30 Richard M. Stallman + + * loading.texi (Named Features): Clarify return value + and meaning of NOERROR. + + * variables.texi (File Local Variables): Minor cleanup. + +2004-05-30 Michael Albinus + + * files.texi (Magic File Names): Add `file-remote-p' as operation + of file name handlers. + +2004-05-29 Richard M. Stallman + + * modes.texi (Minor Mode Conventions): (-) has no special meaning + as arg to a minor mode command. + +2004-05-22 Richard M. Stallman + + * syntax.texi (Syntax Class Table): Word syntax not just for English. + + * streams.texi (Output Variables): Doc float-output-format. + + * searching.texi (Regexp Special): Nested repetition can be infloop. + + * eval.texi (Eval): Increasing max-lisp-eval-depth can cause + real stack overflow. + + * compile.texi: Minor cleanups. + +2004-05-22 Luc Teirlinck + + * lists.texi (Cons Cells): Explain dotted lists, true lists, + circular lists. + (List Elements): Explain handling of circular and dotted lists. + +2004-05-19 Thien-Thi Nguyen + + * modes.texi (Search-based Fontification): Fix typo. + +2004-05-10 Juanma Barranquero + + * modes.texi (Mode Line Variables): Fix description of + global-mode-string, which is now after which-func-mode, not the + buffer name. + +2004-05-07 Lars Hansen + + * modes.texi (Desktop Save Mode): Add. + (Modes): Add menu entry Desktop Save Mode. + + * hooks.texi: Add desktop-after-read-hook, + desktop-no-desktop-file-hook and desktop-save-hook. + + * locals.texi: Add desktop-save-buffer. + +2004-04-30 Jesper Harder + + * display.texi: emacs -> Emacs. + +2004-04-27 Matthew Mundell + + * files.texi (Changing Files): Document set-file-times. + +2004-04-23 Juanma Barranquero + + * makefile.w32-in: Add "-*- makefile -*-" mode tag. + +2004-04-18 Jesper Harder + + * tips.texi (Coding Conventions): defopt -> defcustom. + +2004-04-16 Luc Teirlinck + + * sequences.texi: Various clarifications. + +2004-04-14 Luc Teirlinck + + * buffers.texi (Read Only Buffers): Mention optional ARG to + `toggle-read-only'. + +2004-04-14 Nick Roberts + + * windows.texi (Selecting Windows): Note that get-lru-window + returns a full-width window if possible. + +2004-04-13 Luc Teirlinck + + * buffers.texi: Various changes in addition to: + (Buffer File Name): Add `find-buffer-visiting'. + (Buffer Modification): Mention optional ARG to `not-modified'. + (Indirect Buffers): Mention optional CLONE argument to + `make-indirect-buffer'. + + * files.texi: Various changes in addition to: + (Visiting Functions): `find-file-hook' is now a normal hook. + (File Name Expansion): Explain difference between the way that + `expand-file-name' and `file-truename' treat `..'. + (Contents of Directories): Mention optional ID-FORMAT argument to + `directory-files-and-attributes'. + (Format Conversion): Mention new optional CONFIRM argument to + `format-write-file'. + +2004-04-12 Miles Bader + + * macros.texi (Expansion): Add description of `macroexpand-all'. + +2004-04-05 Jesper Harder + + * variables.texi (Variable Aliases): Mention + cyclic-variable-indirection. + + * errors.texi (Standard Errors): Ditto. + +2004-04-04 Luc Teirlinck + + * backups.texi: Various small changes in addition to: + (Making Backups): Mention return value of `backup-buffer'. + (Auto-Saving): Mention optional FORCE argument to + `delete-auto-save-file-if-necessary'. + (Reverting): Mention optional PRESERVE-MODES argument to + `revert-buffer'. Correct description of `revert-buffer-function'. + +2004-03-22 Juri Linkov + + * sequences.texi (Sequence Functions): Replace xref to `Vectors' + with `Vector Functions'. + + * text.texi (Sorting): Add missing quote. + +2004-03-14 Luc Teirlinck + + * intro.texi (Lisp History): Replace xref to `cl' manual with + inforef. + +2004-03-12 Richard M. Stallman + + * intro.texi (Version Info): Add arg to emacs-version. + (Lisp History): Change xref to CL manual. + +2004-03-09 Luc Teirlinck + + * minibuf.texi (Completion Commands): Add xref to Emacs manual + for Partial Completion mode. + +2004-03-07 Thien-Thi Nguyen + + * customize.texi: Fix typo. Remove eol whitespace. + +2004-03-04 Richard M. Stallman + + * processes.texi: Fix typos. + + * lists.texi (Building Lists): Minor clarification. + + * hash.texi (Creating Hash): Correct the meaning of t for WEAK + in make-hash-table. + +2004-02-29 Juanma Barranquero + + * makefile.w32-in (clean, maintainer-clean): Use $(DEL) instead of + rm, and ignore exit code. + +2004-02-27 Dan Nicolaescu + + * display.texi (Defining Faces): Add description for min-colors. + Update example. + +2004-02-23 Luc Teirlinck + + * abbrevs.texi: Various corrections and clarifications in addition + to the following: + (Abbrev Tables): Delete add-abbrev (as suggested by RMS). + +2004-02-22 Matthew Mundell (tiny change) + + * calendar.texi (Holiday Customizing): Quote arg of holiday-sexp. + +2004-02-21 Luc Teirlinck + + * text.texi: Various small changes in addition to the following: + (User-Level Deletion): Mention optional BACKWARD-ONLY argument + to delete-horizontal-space. + (Kill Functions, Yanking, Low-Level Kill Ring): Clarify and correct + description of yank-handler text property at various places. + + * frames.texi (Window System Selections): Add anchor. + + * syntax.texi (Syntax Table Functions): Clarify and correct + descriptions of make-syntax-table and copy-syntax-table. + (Motion and Syntax): Clarify SYNTAXES argument to + skip-syntax-forward. + (Parsing Expressions): Mention that the return value of + parse-partial-sexp is currently a list of ten rather than nine + elements. + (Categories): Various corrections and clarifications. + +2004-02-17 Luc Teirlinck + + * markers.texi (Marker Insertion Types): Minor change. + + * locals.texi (Standard Buffer-Local Variables): + * commands.texi (Interactive Codes, Using Interactive): + * functions.texi (Related Topics): Fix xrefs. + +2004-02-16 Luc Teirlinck + + * lists.texi (Sets And Lists): Update description of delete-dups. + +2004-02-16 Jesper Harder (tiny change) + + * keymaps.texi (Tool Bar): tool-bar-item => tool-bar-button. + +2004-02-16 Jan Dj,Ad(Brv + + * frames.texi (Parameter Access): frame-parameters arg is optional. + modify-frame-parameters handles nil for FRAME. + (Window Frame Parameters): menu-bar-lines and tool-bar-lines + are all-or-nothing for certain toolkits. + Mention parameter wait-for-wm. + (Frames and Windows): In frame-first-window and frame-selected-window + the arg is optional. + (Input Focus): In redirect-frame-focus the second arg is optional. + (Window System Selections): Mention selection type CLIPBOARD. + Mention data-type UTF8_STRING. + Mention numbering of cut buffers. + (Resources): Describe x-resource-name. + +2004-02-16 Richard M. Stallman + + * windows.texi (Buffers and Windows): Delete false table + about all-frames. + + * syntax.texi (Parsing Expressions): Delete old caveat + about parse-sexp-ignore-comments. + + * streams.texi (Output Variables): Add print-quoted. + + * lists.texi (Building Lists): Minor cleanup. + + * hash.texi (Creating Hash): Correct and clarify doc of WEAK values. + + * display.texi (Overlays): Explain overlays use markers. + (Managing Overlays): Explain front-advance and rear-advance + in more detail. + + * loading.texi (Unloading): Document unload-feature-special-hooks. + Get rid of fns-NNN.el file. + +2004-02-16 Matthew Mundell (tiny change) + + * help.texi (Describing Characters): Fix text-char-description + example output. + + * edebug.texi (Using Edebug): Fix example. + + * debugging.texi (Internals of Debugger): Fix return value. + + * files.texi (Changing Files): Fix argname. + + * calendar.texi: Fix parens, and default values. + + * display.texi, frames.texi, internals.texi, modes.texi: Minor fixes. + * nonascii.texi, objects.texi, os.texi: Minor fixes. + * searching.texi, text.texi, tips.texi, windows.text: Minor fixes. + + * positions.texi (Text Lines): Don't add -1 in current-line. + +2004-02-16 Richard M. Stallman + + * compile.texi (Compiler Errors): if-boundp feature applies to cond. + +2004-02-16 Jesper Harder (tiny change) + + * processes.texi (Low-Level Network): Fix a typo. + +2004-02-12 Kim F. Storm + + * display.texi (Fringes): Use consistent wording. + Note that window-fringe's window arg is optional. + (Scroll Bars): Use consistent wording. + +2004-02-11 Luc Teirlinck + + * tips.texi (Comment Tips): Document the new conventions for + commenting out code. + +2004-02-07 Jan Dj,Ad(Brv + + * positions.texi (Text Lines): Added missing end defun. + +2004-02-07 Kim F. Storm + + * positions.texi (Text Lines): Add line-number-at-pos. + +2004-02-06 John Paul Wallington + + * display.texi (Button Properties, Button Buffer Commands): + mouse-2 invokes button, not down-mouse-1. + +2004-02-04 Jason Rumney + + * makefile.w32-in: Sync with Makefile.in changes. + +2004-02-03 Luc Teirlinck + + * minibuf.texi (Text from Minibuffer): Various corrections and + clarifications. + (Object from Minibuffer): Correct Lisp description of + read-minibuffer. + (Minibuffer History): Clarify description of cons values for + HISTORY arguments. + (Basic Completion): Various corrections and clarifications. Add + completion-regexp-list. + (Minibuffer Completion): Correct and clarify description of + completing-read. + (Completion Commands): Mention Partial Completion mode. Various + other minor changes. + (High-Level Completion): Various corrections and clarifications. + (Reading File Names): Ditto. + (Minibuffer Misc): Ditto. + +2004-01-26 Luc Teirlinck + + * strings.texi (Text Comparison): assoc-string also matches + elements of alists that are strings instead of conses. + (Formatting Strings): Standardize Texinfo usage. Update index + entries. + +2004-01-20 Luc Teirlinck + + * lists.texi (Sets And Lists): Add delete-dups. + +2004-01-15 Luc Teirlinck + + * edebug.texi (Instrumenting Macro Calls): `declare' is not a + special form. + * macros.texi (Defining Macros): Update description of `declare', + which now is a macro. + (Wrong Time): Fix typos. + +2004-01-14 Luc Teirlinck + + * compile.texi (Compilation Functions): Expand descriptions of + `compile-defun', `byte-compile-file', `byte-recompile-directory' + and `batch-byte-compile'. In particular, mention and describe + all optional arguments. + (Disassembly): Correct and clarify the description of `disassemble'. + +2004-01-11 Luc Teirlinck + + * searching.texi: Various small changes in addition to the + following. + (Regexp Example): Adapt to new value of `sentence-end'. + (Regexp Functions): The PAREN argument to `regexp-opt' can be + `words'. + (Search and Replace): Add usage note for `perform-replace'. + (Entire Match Data): Mention INTEGERS and REUSE arguments to + `match-data'. + (Standard Regexps): Update for new values of `paragraph-start' + and `sentence-end'. + +2004-01-07 Luc Teirlinck + + * files.texi (Saving Buffers): Clarify descriptions of + `write-contents-functions' and `before-save-hook'. + Make the defvar's for `before-save-hook' and `after-save-hook' + into defopt's. + +2004-01-07 Kim F. Storm + + * commands.texi (Click Events): Describe new image and + width/height elements of click events. + (Accessing Events): Add posn-string, posn-image, and + posn-object-width-height. Change posn-object to return either + image or string object. + +2004-01-01 Simon Josefsson + + * hooks.texi (Standard Hooks): Add before-save-hook. + * files.texi (Saving Buffers): Likewise. + +2004-01-03 Richard M. Stallman + + * frames.texi (Frames and Windows): Delete frame-root-window. + +2004-01-03 Luc Teirlinck + + * eval.texi, hash.texi, help.texi, symbols.texi: Add anchors. + + * functions.texi: Various small changes in addition to the + following. + (What Is a Function): `functionp' returns nil for macros. Clarify + behavior of this and following functions for symbol arguments. + (Function Documentation): Add `\' in front of (fn @var{arglist}) + and explain why. + (Defining Functions): Mention DOCSTRING argument to `defalias'. + Add anchor. + (Mapping Functions): Add anchor. Unquote nil in mapcar* example. + +2004-01-01 Miles Bader + + * display.texi (Buttons): New section. + +2003-12-31 Andreas Schwab + + * numbers.texi (Math Functions): sqrt reports a domain-error + error. + (Float Basics): Use `(/ 0.0 0.0)' instead of `(sqrt -1.0)'. + +2003-12-30 Luc Teirlinck + + * tips.texi (Documentation Tips): Update item on hyperlinks in + documentation strings. + + * errors.texi (Standard Errors): Various small corrections and + additions. + + * control.texi: Various small changes in addition to the + following. + (Signaling Errors): Provide some more details on how `signal' + constructs the error message. Add anchor to the definition of + `signal'. + (Error Symbols): Describe special treatment of `quit'. + (Cleanups): Rename BODY argument of `unwind-protect' to BODY-FORM + to emphasize that it has to be a single form. + + * buffers.texi: Add anchor. + +2003-12-29 Richard M. Stallman + + * windows.texi (Choosing Window): Add same-window-p, special-display-p. + (Window Configurations): Add window-configuration-frame. + + * variables.texi (Creating Buffer-Local): Add local-variable-if-set-p. + + * text.texi (Examining Properties): Add get-char-property-and-overlay. + Change arg name in get-char-property. + (Special Properties): Update handling of keymap property. + + * strings.texi (Modifying Strings): Add clear-string. + (Text Comparison): Add assoc-string and remove + assoc-ignore-case, assoc-ignore-representation. + + * os.texi (Time of Day): Add set-time-zone-rule. + + * numbers.texi (Math Functions): asin, acos, log, log10 + report domain-error errors. + + * nonascii.texi (Converting Representations): + Add multibyte-char-to-unibyte and unibyte-char-to-multibyte. + (Encoding and I/O): Add file-name-coding-system. + + * modes.texi (Search-based Fontification): Explain that + face specs are symbols with face names as values. + + * minibuf.texi (Minibuffer Misc): Add set-minibuffer-window. + + * lists.texi (Building Lists): remq moved elsewhere. + (Sets And Lists): remq moved here. + (Association Lists): Refer to assoc-string. + + * internals.texi (Garbage Collection): Add memory-use-counts. + + * frames.texi (Frames and Windows): Add set-frame-selected-window + and frame-root-window. + + * files.texi (Contents of Directories): + Add directory-files-and-attributes. + + * display.texi (Refresh Screen): Add force-window-update. + (Invisible Text): Explain about moving point out of invis text. + (Overlay Properties): Add overlay-properties. + (Managing Overlays): Add overlayp. + (GIF Images): Invalid image number displays a hollow box. + + * buffers.texi (Buffer Modification): Add restore-buffer-modified-p. + (Killing Buffers): Add buffer-live-p. + +2003-12-25 Markus Rost + + * display.texi (Fringes): Fix typo "set-buffer-window". + +2003-12-24 Luc Teirlinck + + * display.texi, eval.texi, help.texi, internals.texi, loading.texi: + * nonascii.texi, processes.texi, tips.texi, variables.texi: + Add or change various xrefs and anchors. + + * commands.texi: Replace all occurrences of @acronym{CAR} with + @sc{car}, for consistency with the rest of the Elisp manual. + `car' and `cdr' are historically acronyms, but are no longer + widely thought of as such. + + * internals.texi (Pure Storage): Mention that `purecopy' does not + copy text properties. + (Object Internals): Now 29 bits are used (in most implementations) + to address Lisp objects. + + * variables.texi (Variables with Restricted Values): New node. + + * objects.texi (Lisp Data Types): Mention that certain variables + can only take on a restricted set of values and add an xref to + the new node "Variables with Restricted Values". + + * eval.texi (Function Indirection): Describe the errors that + `indirect-function' can signal. + (Eval): Clarify the descriptions of `eval-region' and `values'. + Describe `eval-buffer' instead of `eval-current-buffer' and + mention `eval-current-buffer' as an alias for `current-buffer'. + Correct the description and mention all optional arguments. + + * nonascii.texi: Various small changes in addition to the + following. + (Converting Representations): Clarify behavior of + `string-make-multibyte' and `string-to-multibyte' for unibyte all + ASCII arguments. + (Character Sets): Document the variable `charset-list' and adapt + the definition of the function `charset-list' accordingly. + (Translation of Characters): Clarify use of generic characters in + `make-translation-table'. Clarify and correct the description of + the use of translation tables in encoding and decoding. + (User-Chosen Coding Systems): Correct and clarify the description + of `select-safe-coding-system'. + (Default Coding Systems): Clarify description of + `file-coding-system-alist'. + +2003-11-30 Luc Teirlinck + + * strings.texi (Text Comparison): Correctly describe when two + strings are `equal'. Combine and clarify descriptions of + `assoc-ignore-case' and `assoc-ignore-representation'. + + * objects.texi (Non-ASCII in Strings): Clarify description of + when a string is unibyte or multibyte. + (Bool-Vector Type): Update examples. + (Equality Predicates): Correctly describe when two strings are + `equal'. + +2003-11-29 Luc Teirlinck + + * lists.texi (Building Lists): `append' no longer accepts integer + arguments. Update the description of `number-sequence' to reflect + recent changes. + (Sets And Lists): Describe `member-ignore-case' after `member'. + +2003-11-27 Kim F. Storm + + * commands.texi (Click Events): Click object may be an images. + Describe (dx . dy) element of click positions. + (Accessing Events): Remove duplicate posn-timestamp. + New functions posn-object and posn-object-x-y. + +2003-11-23 Kim F. Storm + + * commands.texi (Click Events): Describe enhancements to event + position lists, including new text-pos and (col . row) items. + Mention left-fringe and right-fringe area events. + (Accessing Events): New functions posn-area and + posn-actual-col-row. Mention posn-timestamp. Mention that + posn-point in non-text area still returns buffer position. + Clarify posn-col-row. + +2003-11-21 Lars Hansen + + * files.texi (File Attributes): Describe new parameter ID-FORMAT. + * anti.texi (File Attributes): Describe removed parameter + ID-FORMAT. + +2003-11-20 Luc Teirlinck + + * positions.texi (Positions): Mention that, if a marker is used as + a position, its buffer is ignored. + + * markers.texi (Overview of Markers): Mention it here too. + +2003-11-12 Luc Teirlinck + + * numbers.texi (Numeric Conversions): Not just `floor', but also + `truncate', `ceiling' and `round' accept optional argument DIVISOR. + +2003-11-10 Luc Teirlinck + + * markers.texi (Creating Markers): Specify insertion type of + created markers. Add xref to `Marker Insertion Types'. + Second argument to `copy-marker' is optional. + (Marker Insertion Types): Mention that most markers are created + with insertion type nil. + (The Mark): Correctly describe when `mark' signals an error. + (The Region): Correctly describe when `region-beginning' and + `region-end' signal an error. + +2003-11-08 Luc Teirlinck + + * hash.texi (Creating Hash): Clarify description of `eql'. + `makehash' is obsolete. + (Hash Access): Add Common Lisp notes for `remhash' and `clrhash'. + + * positions.texi (Point): Change description of `buffer-end', so + that it is also correct for floating point arguments. + (List Motion): Correct argument lists of `beginning-of-defun' and + `end-of-defun'. + (Excursions): Add xref to `Marker Insertion Types'. + (Narrowing): Argument to `narrow-to-page' is optional. + +2003-11-06 Luc Teirlinck + + * streams.texi (Output Streams): Clarify behavior of point for + marker output streams. + +2003-11-04 Luc Teirlinck + + * variables.texi (Defining Variables): Second argument to + `defconst' is not optional. + (Setting Variables): Mention optional argument APPEND to + `add-to-list'. + (Creating Buffer-Local): Expand description of + `make-variable-buffer-local'. + (Frame-Local Variables): Expand description of + `make-variable-frame-local'. + (Variable Aliases): Correct description of optional argument + DOCSTRING to `defvaralias'. Mention return value of + `defvaralias'. + (File Local Variables): Add xref to `File variables' in Emacs + Manual. Correct description of `hack-local-variables'. Mention + `safe-local-variable' property. Mention optional second argument + to `risky-local-variable-p'. + +2003-11-03 Luc Teirlinck + + * symbols.texi (Symbol Plists): Mention return value of `setplist'. + +2003-11-02 Jesper Harder (tiny change) + + * lispref/anti.texi, lispref/backups.texi, lispref/commands.texi + lispref/customize.texi, lispref/display.texi, lispref/files.texi, + lispref/internals.texi, lispref/keymaps.texi, lispref/loading.texi, + lispref/modes.texi, lispref/nonascii.texi, lispref/numbers.texi, + lispref/objects.texi, lispref/os.texi, lispref/positions.texi, + lispref/processes.texi, lispref/searching.texi, + lispref/sequences.texi, lispref/streams.texi, lispref/strings.texi, + lispref/syntax.texi, lispref/text.texi: Replace @sc{foo} with + @acronym{FOO}. + +2003-10-27 Luc Teirlinck + + * strings.texi (Creating Strings): Argument START to `substring' + can not be `nil'. Expand description of + `substring-no-properties'. Correct description of `split-string', + especially with respect to empty matches. Prevent very bad line + break in definition of `split-string-default-separators'. + (Text Comparison): `string=' and `string<' also accept symbols as + arguments. + (String Conversion): More completely describe argument BASE in + `string-to-number'. + (Formatting Strings): `%s' and `%S' in `format' do require + corresponding object. Clarify behavior of numeric prefix after + `%' in `format'. + (Case Conversion): The argument to `upcase-initials' can be a + character. + +2003-10-27 Kenichi Handa + + * display.texi (Fontsets): Fix texinfo usage. + +2003-10-25 Kenichi Handa + + * display.texi (Fontsets): Add description of the function + set-fontset-font. + +2003-10-23 Luc Teirlinck + + * display.texi (Temporary Displays): Add xref to `Documentation + Tips'. + + * functions.texi (Function Safety): Use inforef instead of pxref + for SES. + +2003-10-23 Andreas Schwab + + * Makefile.in (TEX, texinputdir): Don't define. + (TEXI2DVI): Define. + (srcs): Remove $(srcdir)/index.perm and $(srcdir)/index.unperm, + add $(srcdir)/index.texi. + ($(infodir)/elisp): Remove index.texi dependency. + (elisp.dvi): Likewise. Use $(TEXI2DVI). + (index.texi): Remove target. + (dist): Don't link $(srcdir)/permute-index. + (clean): Don't remove index.texi. + + * permute-index, index.perm: Remove. + * index.texi: Rename from index.unperm. + +2003-10-22 Luc Teirlinck + + * tips.texi (Documentation Tips): Document new behavior for face + and variable hyperlinks in Help mode. + +2003-10-21 Luc Teirlinck + + * objects.texi (Integer Type): Update for extra bit of integer range. + (Character Type): Ditto. + +2003-10-16 Eli Zaretskii + + * numbers.texi (Integer Basics): Add index entries for reading + numbers in hex, octal, and binary. + +2003-10-16 Lute Kamstra + + * modes.texi (Mode Line Format): Mention force-mode-line-update's + argument. + +2003-10-13 Luc Teirlinck + + * windows.texi (Choosing Window): Fix typo. + * edebug.texi (Edebug Execution Modes): Fix typo. + +2003-10-13 Richard M. Stallman + + * windows.texi (Basic Windows): A window has fringe settings, + display margins and scroll-bar settings. + (Splitting Windows): Doc split-window return value. + Clean up one-window-p. + (Selecting Windows): Fix typo. + (Cyclic Window Ordering): Explain frame as ALL-FRAMES in next-window. + (Buffers and Windows): In set-window-buffer, explain effect + on fringe settings and scroll bar settings. + (Displaying Buffers): In pop-to-buffer, explain nil as buffer arg. + (Choosing Window): Use defopt for pop-up-frame-function. + For special-display-buffer-names, explain same-window and same-frame. + Clarify window-dedicated-p return value. + (Textual Scrolling): scroll-up and scroll-down can get an error. + (Horizontal Scrolling): Clarify auto-hscroll-mode. + Clarify set-window-hscroll. + (Size of Window): Don't mention tool bar in window-height. + (Coordinates and Windows): Explain what coordinates-in-window-p + returns for fringes and display margins. + (Window Configurations): Explain saving fringes, etc. + + * tips.texi (Library Headers): Clean up Documentation. + + * syntax.texi (Parsing Expressions): Clean up forward-comment + and parse-sexp-lookup-properties. + + * sequences.texi (Sequence Functions): sequencep accepts bool-vectors. + + * os.texi (System Environment): Clean up text for load-average errors. + + * modes.texi (Hooks): Don't explain local hook details at front. + Clarify run-hooks and run-hook-with-args a little. + Clean up add-hook and remove-hook. + + * edebug.texi (Edebug Execution Modes): Clarify t. + Document edebug-sit-for-seconds. + (Coverage Testing): Document C-x X = and =. + (Instrumenting Macro Calls): Fix typo. + (Specification List): Don't index the specification keywords. + +2003-10-10 Kim F. Storm + + * processes.texi (Network): Introduce make-network-process. + +2003-10-09 Luc Teirlinck + + * tips.texi (Library Headers): Fix typo. + +2003-10-07 Juri Linkov + + * modes.texi (Imenu): Mention imenu-create-index-function's + default value. Explain submenus better. + +2003-10-07 Lute Kamstra + + * modes.texi (Faces for Font Lock): Fix typo. + (Hooks): Explain how buffer-local hook variables can refer to + global hook variables. + Various minor clarifications. + +2003-10-06 Lute Kamstra + + * tips.texi (Coding Conventions): Mention naming conventions for + hooks. + +2003-10-05 Luc Teirlinck + + * loading.texi (Library Search): Correct default value of + load-suffixes. + (Named Features): Fix typo. + +2003-10-05 Richard M. Stallman + + * loading.texi (Named Features): In `provide', + say how to test for subfeatures. + (Unloading): In unload-feature, use new var name + unload-feature-special-hooks. + +2003-10-03 Lute Kamstra + + * modes.texi (Major Mode Conventions): Mention third way to set up + Imenu. + (Imenu): A number of small fixes. + Delete documentation of internal variable imenu--index-alist. + Document the return value format of imenu-create-index-function + functions. + +2003-09-30 Richard M. Stallman + + * processes.texi (Network): Say what stopped datagram connections do. + + * lists.texi (Association Lists): Clarify `assq-delete-all'. + + * display.texi (Overlay Properties): Clarify `evaporate' property. + +2003-09-29 Lute Kamstra + + * modes.texi (Mode Line Data): Explain when symbols in mode-line + constructs should be marked as risky. + Change cons cell into proper list. + (Mode Line Variables): Change cons cell into proper list. + +2003-09-26 Lute Kamstra + + * modes.texi (Mode Line Data): Document the :propertize construct. + (Mode Line Variables): Reorder the descriptions of the variables + to match their order in the default mode-line-format. + Describe the new variables mode-line-position and mode-line-modes. + Update the default values of mode-line-frame-identification, + minor-mode-alist, and default-mode-line-format. + (Properties in Mode): Mention the :propertize construct. + +2003-09-26 Richard M. Stallman + + * buffers.texi, commands.texi, debugging.texi, eval.texi: + * loading.texi, minibuf.texi, text.texi, variables.texi: + Avoid @strong{Note:}. + +2003-09-26 Richard M. Stallman + + * keymaps.texi (Remapping Commands): Fix typo. + +2003-09-23 Luc Teirlinck + + * processes.texi (Low-Level Network): Fix typo. + +2003-09-23 Kim F. Storm + + * processes.texi (Network, Network Servers): Fix typos. + (Low-Level Network): Add timeout value for :server keyword. + Add new option keywords to make-network-process. + Add set-network-process-options. + Explain how to test availability of network options. + +2003-09-19 Richard M. Stallman + + * text.texi (Motion by Indent): Arg to + backward-to-indentation and forward-to-indentation is optional. + + * strings.texi (Creating Strings): Add substring-no-properties. + + * processes.texi + (Process Information): Add list-processes arg QUERY-ONLY. + Delete process-contact from here. + Add new status values for process-status. + Add process-get, process-put, process-plist, set-process-plist. + (Synchronous Processes): Add call-process-shell-command. + (Signals to Processes): signal-process allows process objects. + (Network): Complete rewrite. + (Network Servers, Datagrams, Low-Level Network): New nodes. + + * positions.texi (Word Motion): forward-word, backward-word + arg is optional. Reword. + + * abbrevs.texi (Defining Abbrevs): Index no-self-insert. + + * variables.texi (Creating Buffer-Local): + Delete duplicate definition of buffer-local-value. + (File Local Variables): Explain about discarding text props. + +2003-09-11 Richard M. Stallman + + * minibuf.texi (Intro to Minibuffers): Explain that the minibuffer + changes variables that record input events. + (Minibuffer Misc): Add minibuffer-selected-window. + + * lists.texi (Building Lists): Add copy-tree. + + * display.texi (Fontsets): Add char-displayable-p. + (Scroll Bars): New node. + +2003-09-08 Lute Kamstra + + * modes.texi (%-Constructs): Document new `%i' and `%I' + constructs. + +2003-09-03 Peter Runestig + + * makefile.w32-in: New file. + +2003-08-29 Richard M. Stallman + + * display.texi (Overlay Properties): Clarify how priorities + affect use of the properties. + +2003-08-19 Luc Teirlinck + + * customize.texi (Type Keywords): Correct the description of + `:help-echo' in the case where `motion-doc' is a function. + +2003-08-14 John Paul Wallington + + * modes.texi (Emulating Mode Line): Subsection, not section. + +2003-08-13 Richard M. Stallman + + * elisp.texi (Top): Update subnode lists in menu. + + * text.texi (Insertion): Add insert-buffer-substring-no-properties. + (Kill Functions): kill-region has new arg yank-handler. + (Yanking): New node. + (Yank Commands): Add yank-undo-function. + (Low-Level Kill Ring): + kill-new and kill-append have new arg yank-handler. + (Changing Properties): Add remove-list-of-text-properties. + (Atomic Changes): New node. + + * symbols.texi (Other Plists): Add lax-plist-get, lax-plist-put. + + * streams.texi (Output Variables): Add eval-expression-print-length + and eval-expression-print-level. + + * os.texi (Time Conversion): For encode-time, explain limits on year. + + * objects.texi (Character Type): Define anchor "modifier bits". + + * modes.texi (Emulating Mode Line): New node. + (Search-based Fontification): Font Lock uses font-lock-face property. + (Other Font Lock Variables): Likewise. + + * keymaps.texi (Format of Keymaps): Keymaps contain char tables, + not vectors. + (Active Keymaps): Add emulation-mode-map-alists. + (Functions for Key Lookup): key-binding has new arg no-remap. + (Remapping Commands): New node. + (Scanning Keymaps): where-is-internal has new arg no-remap. + (Tool Bar): Add tool-bar-local-item-from-menu. + Clarify when to use tool-bar-add-item-from-menu. + + * commands.texi (Interactive Call): commandp has new arg. + (Command Loop Info): Add this-original-command. + +2003-08-06 John Paul Wallington + + * compile.texi (Compiler Errors): Say `@end defmac' after `@defmac'. + + * display.texi (Warning Basics): Fix typo. + (Fringes): Add closing curly bracket and fix typo. + + * elisp.texi (Top): Fix typo. + +2003-08-05 Richard M. Stallman + + * elisp.texi: Update lists of subnodes. + + * windows.texi (Buffers and Windows): set-window-buffer has new arg. + + * variables.texi (Local Variables): Use lc for example variable names. + + * tips.texi (Library Headers): Explain where to put -*-. + + * strings.texi (Creating Strings): Fix xref for vconcat. + + * sequences.texi (Vector Functions): + vconcat no longer allows integer args. + + * minibuf.texi (Reading File Names): read-file-name has new + arg PREDICATE. New function read-directory-name. + + * macros.texi (Defining Macros): Give definition of `declare' + (Indenting Macros): New node. + + * frames.texi (Parameter Access): Add modify-all-frames-parameters. + (Window Frame Parameters): Make separate table of parameters + that are coupled with specific face attributes. + (Deleting Frames): delete-frame-hooks renamed to + delete-frame-functions. + + * files.texi (Magic File Names): Add file-remote-p. + Clarify file-local-copy. + + * edebug.texi (Instrumenting Macro Calls): Don't define `declare' + here; instead xref Defining Macros. + + * display.texi (Warnings): New node, and subnodes. + (Fringes): New node. + + * debugging.texi (Test Coverage): New node. + + * compile.texi (Compiler Errors): Explain with-no-warnings + and other ways to suppress warnings. + + * commands.texi (Interactive Call): Minor clarification. + + * buffers.texi (Buffer File Name): set-visited-file-name + renames the buffer too. + + * abbrevs.texi (Abbrev Tables): Add copy-abbrev-table. + +2003-07-24 Markus Rost + + * abbrevs.texi (Abbrev Expansion): Use \s syntax in example. + +2003-07-22 Markus Rost + + * internals.texi (Garbage Collection): Fix previous change. + +2003-07-22 Richard M. Stallman + + * files.texi (Truenames): Add LIMIT arg to file-chase-links. + + * display.texi (Width): Use \s syntax in example. + (Font Selection): Add face-font-rescale-alist. + + * modes.texi (Imenu): Add xref to Emacs Manual node on Imenu. + Remove spurious indent in example. + + * lists.texi (Building Lists): Add number-sequence. + + * internals.texi (Garbage Collection): Add gcs-done, gc-elapsed. + + * functions.texi (Function Documentation): Explain how to + show calling convention explicitly in the doc string. + + * windows.texi (Selecting Windows): save-selected-window saves + selected window of each frame. + (Window Configurations): Minor change. + + * syntax.texi (Syntax Table Functions): Use \s syntax in examples. + + * streams.texi (Output Variables): Add print-continuous-numbering + and print-number-table. + + * processes.texi (Decoding Output): New node. + + * os.texi (Time Conversion): decode-time arg is optional. + + * objects.texi (Character Type): Don't use space as example for \. + Make list of char names and \-sequences correspond. + Explain that \s is not used in strings. `\ ' needs space after. + + * nonascii.texi (Converting Representations): Add string-to-multibyte. + (Translation of Characters): Add translation-table-for-input. + (Default Coding Systems): Add auto-coding-functions. + (Explicit Encoding): Add decode-coding-inserted-region. + (Locales): Add locale-info. + + * minibuf.texi (Basic Completion): Describe test-completion. + Collections can be lists of strings. + Clean up lazy-completion-table. + (Programmed Completion): Mention test-completion. + Clarify why lambda expressions are not accepted. + (Minibuffer Misc): Describe minibufferp. + +2003-07-14 Richard M. Stallman + + * buffers.texi (Killing Buffers): kill-buffer-hook is perm local. + + * windows.texi (Selecting Windows): New arg to select-window. + (Selecting Windows): Add with-selected-window. + (Size of Window): Add window-inside-edges, etc. + + * internals.texi (Garbage Collection): Add post-gc-hook. + + * processes.texi (Subprocess Creation): Add exec-suffixes. + + * keymaps.texi (Functions for Key Lookup): Add current-active-maps. + (Scanning Keymaps): Add map-keymaps. + (Defining Menus): Add keymap-prompt. + + * numbers.texi (Integer Basics): Add most-positive-fixnum, + most-negative-fixnum. + + * compile.texi (Byte Compilation): Explain no-byte-compile + (Compiler Errors): New node. + + * os.texi (User Identification): user-uid, user-real-uid + can return float. + + * modes.texi (Major Mode Conventions): Explain about run-mode-hooks + and about derived modes. + (Minor Modes): Add minor-mode-list. + (Defining Minor Modes): Keyword args for define-minor-mode. + (Search-based Fontification): Explain managing other properties. + (Other Font Lock Variables): Add font-lock-extra-managed-props. + (Faces for Font Lock): Add font-locl-preprocessor-face. + (Hooks): Add run-mode-hooks and delay-mode-hooks. + + * variables.texi (Creating Buffer-Local): Add buffer-local-value. + (Variable Aliases): Clarify defvaralias. + + * loading.texi (Library Search): Add load-suffixes. + + * minibuf.texi (Basic Completion): Add lazy-completion-table. + (Programmed Completion): Add dynamic-completion-table. + + * files.texi (Changing Files): copy-file allows dir as NEWNAME. + (Magic File Names): Specify precedence order of handlers. + + * commands.texi (Command Overview): Emacs server runs pre-command-hook + and post-command-hook. + (Waiting): New calling convention for sit-for. + + * text.texi (Special Properties): local-map and keymap properties + apply based on their stickiness. + +2003-07-07 Richard M. Stallman + + * modes.texi (Minor Mode Conventions): Specify only some kinds + of list values as args to minor modes. + + * files.texi (File Name Expansion): Warn about iterative use + of substitute-in-file-name. + + * advice.texi (Activation of Advice): Clean up previous change. + +2003-07-06 Markus Rost + + * advice.texi (Activation of Advice): Note that ad-start-advice is + turned on by default. + +2003-06-30 Richard M. Stallman + + * text.texi (Buffer Contents): Document current-word. + (Change Hooks): Not called for *Messages*. + + * functions.texi (Defining Functions): Explain about redefining + primitives. + (Function Safety): Renamed. Minor changes. + Comment out the detailed criteria for what is safe. + +2003-06-22 Andreas Schwab + + * objects.texi (Symbol Type): Fix description of examples. + +2003-06-16 Andreas Schwab + + * hash.texi (Creating Hash): Fix description of :weakness. + +2003-06-13 Kai Gro,A_(Bjohann + + * files.texi (Changing Files): copy-file copies file modes, too. + +2003-05-28 Richard M. Stallman + + * strings.texi (Creating Strings): Clarify split-string. + +2003-05-22 Stephen J. Turnbull + + * strings.texi (Creating Strings): Update split-string specification + and examples. + +2003-05-19 Richard M. Stallman + + * elisp.texi: Correct invariant section names. + +2003-04-20 Richard M. Stallman + + * os.texi (Timers): Explain about timers and quitting. + +2003-04-19 Richard M. Stallman + + * internals.texi (Writing Emacs Primitives): Strings are + no longer special for GCPROs. Mention GCPRO5, GCPRO6. + Explain GCPRO convention for varargs function args. + +2003-04-16 Richard M. Stallman + + * minibuf.texi (Minibuffer Misc): Document fn minibuffer-message. + +2003-04-08 Richard M. Stallman + + * files.texi (Kinds of Files): Correct return value of file-symlink-p. + +2003-02-13 Kim F. Storm + + * objects.texi (Character Type): New \s escape for space. + +2003-01-31 Joe Buehler + + * os.texi (System Environment): Added cygwin system-type. + +2003-01-25 Richard M. Stallman + + * keymaps.texi: Document that a symbol can act as a keymap. + +2003-01-13 Richard M. Stallman + + * text.texi (Changing Properties): Say string indices are origin-0. + + * positions.texi (Screen Lines) : + Correct order of elts in return value. + + * keymaps.texi (Changing Key Bindings) : Mention + how to define a default binding. + +2002-12-07 Markus Rost + + * loading.texi (Unloading): Fix recent change for load-history. + + * customize.texi (Simple Types): Clarify description of custom + type 'number. Describe new custom type 'float. + +2002-12-04 Markus Rost + + * variables.texi (File Local Variables): Fix typo. + +2002-10-23 Kai Gro,A_(Bjohann + + From Michael Albinus . + + * README: Target for Info file is `make info'. + + * files.texi (File Name Components): Fixed typos in + `file-name-sans-extension'. + (Magic File Names): Complete list of operations for magic file + name handlers. + +2002-09-16 Jonathan Yavner + + * variables.texi (File Local Variables): New function + risky-local-variable-p. + +2002-09-15 Jonathan Yavner + + * functions.texi (Function safety): New node about unsafep. + +2002-08-05 Per Abrahamsen + + * customize.texi (Splicing into Lists): Fixed example. + Reported by Fabrice Bauzac + +2002-06-17 Juanma Barranquero + + * frames.texi (Display Feature Testing): Fix typo. + +2002-06-12 Andreas Schwab + + * frames.texi (Initial Parameters, Resources): Fix references to + the Emacs manual. + +2002-05-13 Kim F. Storm + + * variables.texi (Intro to Buffer-Local): Updated warning and + example relating to changing buffer inside let. + +2002-03-10 Jan Dj,Ad(Brv + + * os.texi (Session Management): New node about X Session management. + +2002-01-18 Eli Zaretskii + + * elisp.texi (VERSION): Set to 2.9. Update the version of Emacs + to which the manual corresponds, and the copyright years. + + * Makefile.in (VERSION): Set to 2.9. + +2001-11-29 Eli Zaretskii + + * elisp.texi: Change the category in @dircategory to "Emacs", to + make it consistent with info/dir. + +2001-11-25 Miles Bader + + * text.texi (Fields): Describe new `limit' arg in + field-beginning/field-end. + +2001-11-17 Eli Zaretskii + + * permute-index: Don't depend on csh-specific features. Replace + the interpreter name with /bin/sh. + + * two-volume-cross-refs.txt: New file. + * two.el: New file. + * spellfile: New file. + +2001-11-16 Eli Zaretskii + + * permute-index: New file. + + * vol1.texi, vol2.texi: Renamed from elisp-vol1.texi and + elisp-vol2.texi, respectively, to avoid file-name clashes in DOS + 8+3 restricted namespace. + + * Makefile.in (infodir): Define relative to $(srcdir). + ($(infodir)/elisp): Don't chdir into $(srcdir), but add it to the + include directories list via -I switch to makeinfo. + (index.texi): Use cp if both hard and symbolic links fail. + +2001-11-10 Eli Zaretskii + + * Makefile.in (distclean): Add. + + The following changes make ELisp manual part of the Emacs + distribution: + + * Makefile.in: Add Copyright notice. + (prefix): Remove. + (infodir): Change value to "../info". + (VPATH): New variable. + (MAKE): Don't define. + (texmacrodir): Don't define. + (texinputdir): Append the existing value of TEXINPUTS. + ($(infodir)/elisp): Instead of just "elisp". Reformat the + command to be compatible with man/Makefile.in, and to put the + output into ../info. + (info): Add target. + (installall): Target removed. + +2001-10-31 Pavel Jan,Am(Bk + + * tips.texi (Coding Conventions): Fix typo. + +2001-10-23 Gerd Moellmann + + * Makefile.in (srcs): Add gpl.texi and doclicense.texi. + +2001-10-22 Eli Zaretskii + + * files.texi (File Name Components): Update the description of + file-name-sans-extension and file-name-extension, as they now + ignore leading dots. + +2001-10-20 Gerd Moellmann + + * (Version 21.1 released.) + +2001-10-19 Miles Bader + + * positions.texi (Text Lines): Describe behavior of + `beginning-of-line'/`end-of-line' in the presence of field properties. + +2001-10-17 Gerd Moellmann + + * Makefile.in (VERSION): Set to 2.8. + (manual): Use `manual-21'. + + * elisp.texi (VERSION): Add and use it where the version + number was used. Set it to 2.8. + + * intro.texi: Likewise. + +2001-10-13 Eli Zaretskii + + * files.texi (File Name Completion): Document the significance of + a trailing slash in elements of completion-ignored-extensions. + +2001-10-06 Miles Bader + + * variables.texi (Variable Aliases): It's `@defmac', not `@defmacro'. + +2001-10-04 Gerd Moellmann + + * variables.texi (Variable Aliases): New node. + +2001-10-04 Gerd Moellmann + + * Branch for 21.1. + +2001-10-02 Miles Bader + + * minibuf.texi (Minibuffer Misc): Add entries for + `minibuffer-contents', `minibuffer-contents-no-properties', and + `delete-minibuffer-contents'. + Correct description for `minibuffer-prompt-end'. + + * text.texi (Property Search): Correct descriptions of + `next-char-property-change' and `previous-char-property-change'. + Add entries for `next-single-char-property-change' and + `previous-single-char-property-change'. + Make operand names a bit more consistent. + +2001-09-30 Eli Zaretskii + + * frames.texi (Finding All Frames): Document that next-frame and + previous-frame are local to current terminal. + +2001-09-26 Eli Zaretskii + + * keymaps.texi (Creating Keymaps): Fix the description of the + result of make-keymap. + +2001-09-23 Eli Zaretskii + + * display.texi (Font Lookup, Attribute Functions) + (Image Descriptors): Add cross-references to the definition of + selected frame. + + * buffers.texi (The Buffer List): Add cross-references to the + definition of selected frame. + + * frames.texi (Input Focus): Clarify which frame is _the_ selected + frame at any given time. + (Multiple Displays, Size and Position): Add a cross-reference to + the definition of the selected frame. + +2001-09-08 Eli Zaretskii + + * strings.texi (String Conversion) : Document + that a float is returned for integers that are too large. + + * frames.texi (Mouse Position): Document mouse-position-function. + (Display Feature Testing): Document display-images-p. + (Window Frame Parameters): Document the cursor-type variable. + + * numbers.texi (Integer Basics): Document CL style read syntax for + integers in bases other than 10. + + * positions.texi (List Motion): Document + open-paren-in-column-0-is-defun-start. + + * lists.texi (Sets And Lists): Document member-ignore-case. + + * internals.texi (Garbage Collection): Document the used and free + strings report. + (Memory Usage): Document strings-consed. + + * os.texi (Time of Day): Document float-time. + (Recording Input): Document that clear-this-command-keys clears + the vector to be returned by recent-keys. + + * keymaps.texi (Scanning Keymaps) : The + argument keymap can be a list. + + * nonascii.texi (User-Chosen Coding Systems) + : Document the new argument + accept-default-p and the variable + select-safe-coding-system-accept-default-p. Tell what happens if + buffer-file-coding-system is undecided. + (Default Coding Systems): Document auto-coding-regexp-alist. + + * display.texi (The Echo Area) : Document + message-truncate-lines. + (Glyphs): Document that the glyph table is unused on windowed + displays. + + * help.texi (Describing Characters) : + Document the new argument no-angles. + (Accessing Documentation) : Document that + a non-string property is evaluated. + : Document that the function-documentation property + is looked for. + + * windows.texi (Selecting Windows): Document some-window. + + * text.texi (MD5 Checksum): New node, documents the md5 primitive. + + * hooks.texi (Standard Hooks): Add kbd-macro-termination-hook and + apropos-mode-hook. + + * commands.texi (Using Interactive): Document interactive-form. + (Keyboard Macros): Document kbd-macro-termination-hook. + (Command Loop Info): Document that clear-this-command-keys clears + the vector to be returned by recent-keys. + +2001-09-04 Werner LEMBERG + + * Makefile.in (srcdir, texinputdir): New variables. + (srcs, index.texi, install): Use $(srcdir). + (.PHONY): Remove elisp.dvi. + (elisp): Use -I switch for makeinfo. + (elisp.dvi): Use $(srcdir) and $(texinputdir). + (installall, dist): Use $(srcdir). + Fix path to texinfo.tex. + (maintainer-clean): Add elisp.dvi and elisp.oaux. + +2001-08-30 Gerd Moellmann + + * display.texi (Conditional Display): Adjust to API change. + + * configure: New file. + +2001-07-30 Gerd Moellmann + + * commands.texi (Repeat Events): Add description of + double-click-fuzz. + +2001-05-08 Stefan Monnier + + * syntax.texi (Syntax Class Table): Add the missing designator for + comment and string fences. + (Syntax Properties): Add a xref to syntax table internals. + (Syntax Table Internals): Document string-to-syntax. + +2001-05-07 Gerd Moellmann + + * Makefile.in (install): Use install-info command line options + like in Emacs' Makefile.in. + +2000-12-09 Miles Bader + + * windows.texi (Window Start): Update documentation for + `pos-visible-in-window-p'. + +2000-11-12 Stefan Monnier + + * lists.texi (Building Lists): Add footnote to explain how to add + to the end of a list. + +2000-10-25 Gerd Moellmann + + * files.texi (Visiting Functions): Typos. + +2000-10-25 Kenichi Handa + + * files.texi (Visiting Functions): Return value of + find-file-noselect may be a list of buffers if wildcards are used. + +2000-10-24 Miles Bader + + * display.texi (Defining Faces): Document `graphic' display type + in face specs. + +2000-10-18 Kai Grossjohann + + * hooks.texi (Standard Hooks): Replace obsolete + `after-make-frame-hook' with `after-make-frame-functions'. + + * frames.texi (Creating Frames): Ditto. + + * variables.texi (Future Local Variables): Ditto. + +2000-10-16 Gerd Moellmann + + * display.texi (Other Image Types): Add description of :foreground + and :background properties of mono PBM images. + +2000-08-17 Werner LEMBERG + + * .cvsignore: New file. + +2000-01-05 Gerd Moellmann + + * tindex.pl: New script. + +1999-12-03 Dave Love + + * Makefile.in (MAKEINFO): New parameter. + +1999-09-17 Richard Stallman + + * Makefile.in (srcs): Add hash.texi. + (VERSION): Update to 20.6. + +1999-09-13 Richard Stallman + + * Makefile.in (index.texi): If cannot make a symlink, make a hard link. + +1998-08-29 Karl Heuer + + * configure.in: New file. + * Makefile.in: Renamed from Makefile. + (prefix, infodir): Use value obtained from configure. + (emacslibdir): Obsolete variable deleted. + (dist): Distribute configure.in, configure, Makefile.in. + +1998-06-12 Richard Stallman + + * Makefile (INSTALL_INFO): New variable. + (install): Run install-info. + +1998-05-09 Richard Stallman + + * Makefile (elisp.dvi): Add missing backslash. + +1998-05-02 Richard Stallman + + * Makefile (elisp.dvi): Don't depend on texindex or on elisp.tps. + Run texindex without `./'. Always run texindex on elisp.tp. + (elisp.tps): Target deleted. + +1998-04-05 Richard Stallman + + * Makefile (srcs): Add nonascii.texi and customize.texi. + (dist): Start by deleting `temp'. + +1998-02-17 Richard Stallman + + * Makefile (makeinfo, texindex): Targets deleted. + (makeinfo.o, texindex.o): Targets deleted. + (clean, dist): Don't do anything with them or with getopt*. + +1998-01-30 Richard Stallman + + * Makefile (SHELL): Defined. + +1998-01-27 Richard Stallman + + * Makefile (elisp.tps): New target. + (elisp.dvi): Depend on elisp.tps. + +Wed Apr 3 15:24:25 1996 Karl Heuer + + * README: Update phone number. + + * Makefile (elisp): Make this be the default target. + Depend on makeinfo.c instead of makeinfo. + (install): Don't depend on elisp.dvi, since we don't install that. + Use mkinstalldirs. + (dist): Add mkinstalldirs. + +Mon Jun 19 14:35:26 1995 Richard Stallman + + * Makefile (VERSION): Update version number. + (maintainer-clean): Renamed from realclean. + +Wed Jun 7 17:04:59 1995 Karl Heuer + + * Makefile (realclean): New target. + (elisp): Remove any old elisp-* files first. + +Tue Nov 23 19:59:40 1993 Noah Friedman (friedman@nutrimat.gnu.ai.mit.edu) + + * Makefile (VERSION): New variable. + (dist): Make packaged directory name `elisp-manual-19-$(VERSION)'. + Compressed file suffix should be `.gz', not `.z'. + +Mon Nov 22 15:06:19 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (elisp): Depend on makeinfo. + +Fri Nov 19 02:29:33 1993 Noah Friedman (friedman@gnu.ai.mit.edu) + + * Makefile (srcs): Add anti.texi. + +Fri May 28 18:04:53 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (infodir, prefix): New vars. + (install): Use infodir. + (emacsinfodir): Deleted. + +Thu May 27 02:11:25 1993 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (srcs): Add calendar.texi. + + * Makefile (dist): Copy texindex.c and makeinfo.c. + Limit elisp-* files to those with one or two digits. + +Sun May 16 17:58:21 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile (dist): Changed to use Gzip instead of compress. + +Fri Apr 23 01:05:23 1993 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * loading.texi (Unloading): define-function changed back to + defalias. It may not stay this way, but at least it's + consistent with the known-good version of the code patch. + +Fri Mar 26 21:14:54 1993 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) + + * modes.texi (Hooks): Document new optional arg of add-hook. + +Wed Mar 17 08:48:24 1993 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) + + * variables.texi: Document nil initial value of buffer-local variables. + + * tips.texi: Add new section on standard library headers. + +Sat Feb 27 18:00:25 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile (srcs): Add frame.texi to the list of sources. + +Tue Feb 23 10:50:25 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile (dist): Don't bother excluding autosave files; they'll + never make it into the temp directory anyway, and the hash marks + in the name are problematic for make and the Bourne shell. + (srcs): + +Fri Feb 12 16:54:38 1993 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile (dist): Don't include backup files or autosave files in + the distribution tar file. + +Tue Nov 26 21:10:34 1991 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (srcs): Added index.perm. + (elisp.dvi): Remove erroneous shell comment. + Expect output of permute-index in permuted.fns. + Save old elisp.aux in elisp.oaux. + (clean): Added index.texi to be deleted. + +Sat Aug 11 17:39:10 1990 Richard Stallman (rms@sugar-bombs.ai.mit.edu) + + * Makefile (elisp.dvi, index.texi): Use shell if instead of ifdef. + +Tue Jun 26 09:57:26 1990 David Lawrence (tale@geech) + + * files.texi: Noted that completion-ignored-extensions is ignored + when making *Completions*. + +Fri Jun 8 16:44:44 EDT 1990 Jay Fenlason (hack@ai.mit.edu) + + * Makefile make dist now depends on elisp.dvi, since it tries + to include it in the dist file. + +Wed Mar 28 22:57:35 1990 Jim Kingdon (kingdon@mole.ai.mit.edu) + + * functions.texinfo (Mapping Functions): Add missing quote + +Mon Jun 19 18:09:24 1989 Richard Stallman (rms@sugar-bombs.ai.mit.edu) + + * texinfo.tex (frenchspacing): Use decimal codes for char to be set. + (defunargs): Turn off \hyphenchar of \sl font temporarily. + +Wed May 10 18:01:17 1989 Robert J. Chassell (bob@rice-chex.ai.mit.edu) + + * @result{}, @expansion{}, @print{}, @quiv{}, @point{}, + and @error{} are the terms now being used. The files in the + directory have been changed to reflect this. + + * All instances of @indentedresultt{} have been changed to + ` @result{}', using 5 spaces at the begining of the line. + +Mon Apr 24 21:02:55 1989 Robert J. Chassell (bob@rice-chex.ai.mit.edu) + + * @result{}, @expandsto{}, @prints{}, @quiv{}, @error{}, and the + experimental @indentedresult{}, @indentedexpandsto{} are part of + the texinfo.tex in this directory. These TeX macros are not + stable yet. + +Mon Apr 17 18:56:50 1989 Robert J. Chassell (bob@rice-chex.ai.mit.edu) + + * texinfo.tex: Temporarily added + \let\result=\dblarrow + \def\error{{\it ERROR} \longdblarrow} + We need to do this better soon. + +Tue Apr 11 12:23:28 1989 Robert J. Chassell (bob@rice-chex.ai.mit.edu) + + * Applied Karl Berry's patches to *.texinfo files, but not to + texinfo.tex; those diffs are in `berry-texinfo-tex-diffs'. (Karl's + new title page format is also not applied, since it requires + texinfo.tex changes.) + + * Cleaned up `Makefile' and defined the `emacslibdir' directory + for the Project GNU development environment. + +;; Local Variables: +;; coding: iso-2022-7bit +;; add-log-time-zone-rule: t +;; End: + + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, + 2005, 2006, 2007 Free Software Foundation, Inc. + + This file is part of GNU Emacs. + + GNU Emacs is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU Emacs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Emacs; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + +;;; arch-tag: 985ae0ce-df29-475b-b3f8-4bbcbf6f7fda diff --cc doc/lispref/commands.texi index ae48b0e39d9,00000000000..aaad7ca82a7 mode 100644,000000..100644 --- a/doc/lispref/commands.texi +++ b/doc/lispref/commands.texi @@@ -1,3290 -1,0 +1,3298 @@@ +@c -*-texinfo-*- +@c This is part of the GNU Emacs Lisp Reference Manual. +@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, 2002, +@c 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See the file elisp.texi for copying conditions. +@setfilename ../../info/commands +@node Command Loop, Keymaps, Minibuffers, Top +@chapter Command Loop +@cindex editor command loop +@cindex command loop + + When you run Emacs, it enters the @dfn{editor command loop} almost +immediately. This loop reads key sequences, executes their definitions, +and displays the results. In this chapter, we describe how these things +are done, and the subroutines that allow Lisp programs to do them. + +@menu +* Command Overview:: How the command loop reads commands. +* Defining Commands:: Specifying how a function should read arguments. +* Interactive Call:: Calling a command, so that it will read arguments. +* Command Loop Info:: Variables set by the command loop for you to examine. +* Adjusting Point:: Adjustment of point after a command. +* Input Events:: What input looks like when you read it. +* Reading Input:: How to read input events from the keyboard or mouse. +* Special Events:: Events processed immediately and individually. +* Waiting:: Waiting for user input or elapsed time. +* Quitting:: How @kbd{C-g} works. How to catch or defer quitting. +* Prefix Command Arguments:: How the commands to set prefix args work. +* Recursive Editing:: Entering a recursive edit, + and why you usually shouldn't. +* Disabling Commands:: How the command loop handles disabled commands. +* Command History:: How the command history is set up, and how accessed. +* Keyboard Macros:: How keyboard macros are implemented. +@end menu + +@node Command Overview +@section Command Loop Overview + + The first thing the command loop must do is read a key sequence, which +is a sequence of events that translates into a command. It does this by +calling the function @code{read-key-sequence}. Your Lisp code can also +call this function (@pxref{Key Sequence Input}). Lisp programs can also +do input at a lower level with @code{read-event} (@pxref{Reading One +Event}) or discard pending input with @code{discard-input} +(@pxref{Event Input Misc}). + + The key sequence is translated into a command through the currently +active keymaps. @xref{Key Lookup}, for information on how this is done. +The result should be a keyboard macro or an interactively callable +function. If the key is @kbd{M-x}, then it reads the name of another +command, which it then calls. This is done by the command +@code{execute-extended-command} (@pxref{Interactive Call}). + + To execute a command requires first reading the arguments for it. +This is done by calling @code{command-execute} (@pxref{Interactive +Call}). For commands written in Lisp, the @code{interactive} +specification says how to read the arguments. This may use the prefix +argument (@pxref{Prefix Command Arguments}) or may read with prompting +in the minibuffer (@pxref{Minibuffers}). For example, the command +@code{find-file} has an @code{interactive} specification which says to +read a file name using the minibuffer. The command's function body does +not use the minibuffer; if you call this command from Lisp code as a +function, you must supply the file name string as an ordinary Lisp +function argument. + + If the command is a string or vector (i.e., a keyboard macro) then +@code{execute-kbd-macro} is used to execute it. You can call this +function yourself (@pxref{Keyboard Macros}). + + To terminate the execution of a running command, type @kbd{C-g}. This +character causes @dfn{quitting} (@pxref{Quitting}). + +@defvar pre-command-hook +The editor command loop runs this normal hook before each command. At +that time, @code{this-command} contains the command that is about to +run, and @code{last-command} describes the previous command. +@xref{Command Loop Info}. +@end defvar + +@defvar post-command-hook +The editor command loop runs this normal hook after each command +(including commands terminated prematurely by quitting or by errors), +and also when the command loop is first entered. At that time, +@code{this-command} refers to the command that just ran, and +@code{last-command} refers to the command before that. +@end defvar + + Quitting is suppressed while running @code{pre-command-hook} and +@code{post-command-hook}. If an error happens while executing one of +these hooks, it terminates execution of the hook, and clears the hook +variable to @code{nil} so as to prevent an infinite loop of errors. + + A request coming into the Emacs server (@pxref{Emacs Server,,, +emacs, The GNU Emacs Manual}) runs these two hooks just as a keyboard +command does. + +@node Defining Commands +@section Defining Commands +@cindex defining commands +@cindex commands, defining +@cindex functions, making them interactive +@cindex interactive function + + A Lisp function becomes a command when its body contains, at top +level, a form that calls the special form @code{interactive}. This +form does nothing when actually executed, but its presence serves as a +flag to indicate that interactive calling is permitted. Its argument +controls the reading of arguments for an interactive call. + +@menu +* Using Interactive:: General rules for @code{interactive}. +* Interactive Codes:: The standard letter-codes for reading arguments + in various ways. +* Interactive Examples:: Examples of how to read interactive arguments. +@end menu + +@node Using Interactive +@subsection Using @code{interactive} +@cindex arguments, interactive entry + + This section describes how to write the @code{interactive} form that +makes a Lisp function an interactively-callable command, and how to +examine a command's @code{interactive} form. + +@defspec interactive arg-descriptor +This special form declares that the function in which it appears is a +command, and that it may therefore be called interactively (via +@kbd{M-x} or by entering a key sequence bound to it). The argument +@var{arg-descriptor} declares how to compute the arguments to the +command when the command is called interactively. + +A command may be called from Lisp programs like any other function, but +then the caller supplies the arguments and @var{arg-descriptor} has no +effect. + +The @code{interactive} form has its effect because the command loop +(actually, its subroutine @code{call-interactively}) scans through the +function definition looking for it, before calling the function. Once +the function is called, all its body forms including the +@code{interactive} form are executed, but at this time +@code{interactive} simply returns @code{nil} without even evaluating its +argument. +@end defspec + +There are three possibilities for the argument @var{arg-descriptor}: + +@itemize @bullet +@item +It may be omitted or @code{nil}; then the command is called with no +arguments. This leads quickly to an error if the command requires one +or more arguments. + +@item +It may be a string; then its contents should consist of a code character +followed by a prompt (which some code characters use and some ignore). +The prompt ends either with the end of the string or with a newline. +Here is a simple example: + +@smallexample +(interactive "bFrobnicate buffer: ") +@end smallexample + +@noindent +The code letter @samp{b} says to read the name of an existing buffer, +with completion. The buffer name is the sole argument passed to the +command. The rest of the string is a prompt. + +If there is a newline character in the string, it terminates the prompt. +If the string does not end there, then the rest of the string should +contain another code character and prompt, specifying another argument. +You can specify any number of arguments in this way. + +@c Emacs 19 feature +The prompt string can use @samp{%} to include previous argument values +(starting with the first argument) in the prompt. This is done using +@code{format} (@pxref{Formatting Strings}). For example, here is how +you could read the name of an existing buffer followed by a new name to +give to that buffer: + +@smallexample +@group +(interactive "bBuffer to rename: \nsRename buffer %s to: ") +@end group +@end smallexample + +@cindex @samp{*} in @code{interactive} +@cindex read-only buffers in interactive +If the first character in the string is @samp{*}, then an error is +signaled if the buffer is read-only. + +@cindex @samp{@@} in @code{interactive} +@c Emacs 19 feature +If the first character in the string is @samp{@@}, and if the key +sequence used to invoke the command includes any mouse events, then +the window associated with the first of those events is selected +before the command is run. + +You can use @samp{*} and @samp{@@} together; the order does not matter. +Actual reading of arguments is controlled by the rest of the prompt +string (starting with the first character that is not @samp{*} or +@samp{@@}). + +@item +It may be a Lisp expression that is not a string; then it should be a +form that is evaluated to get a list of arguments to pass to the +command. Usually this form will call various functions to read input +from the user, most often through the minibuffer (@pxref{Minibuffers}) +or directly from the keyboard (@pxref{Reading Input}). + +Providing point or the mark as an argument value is also common, but +if you do this @emph{and} read input (whether using the minibuffer or +not), be sure to get the integer values of point or the mark after +reading. The current buffer may be receiving subprocess output; if +subprocess output arrives while the command is waiting for input, it +could relocate point and the mark. + +Here's an example of what @emph{not} to do: + +@smallexample +(interactive + (list (region-beginning) (region-end) + (read-string "Foo: " nil 'my-history))) +@end smallexample + +@noindent +Here's how to avoid the problem, by examining point and the mark after +reading the keyboard input: + +@smallexample +(interactive + (let ((string (read-string "Foo: " nil 'my-history))) + (list (region-beginning) (region-end) string))) +@end smallexample + +@strong{Warning:} the argument values should not include any data +types that can't be printed and then read. Some facilities save +@code{command-history} in a file to be read in the subsequent +sessions; if a command's arguments contain a data type that prints +using @samp{#<@dots{}>} syntax, those facilities won't work. + +There are, however, a few exceptions: it is ok to use a limited set of +expressions such as @code{(point)}, @code{(mark)}, +@code{(region-beginning)}, and @code{(region-end)}, because Emacs +recognizes them specially and puts the expression (rather than its +value) into the command history. To see whether the expression you +wrote is one of these exceptions, run the command, then examine +@code{(car command-history)}. +@end itemize + +@cindex examining the @code{interactive} form +@defun interactive-form function +This function returns the @code{interactive} form of @var{function}. +If @var{function} is an interactively callable function +(@pxref{Interactive Call}), the value is the command's +@code{interactive} form @code{(interactive @var{spec})}, which +specifies how to compute its arguments. Otherwise, the value is +@code{nil}. If @var{function} is a symbol, its function definition is +used. +@end defun + +@node Interactive Codes +@comment node-name, next, previous, up +@subsection Code Characters for @code{interactive} +@cindex interactive code description +@cindex description for interactive codes +@cindex codes, interactive, description of +@cindex characters for interactive codes + + The code character descriptions below contain a number of key words, +defined here as follows: + +@table @b +@item Completion +@cindex interactive completion +Provide completion. @key{TAB}, @key{SPC}, and @key{RET} perform name +completion because the argument is read using @code{completing-read} +(@pxref{Completion}). @kbd{?} displays a list of possible completions. + +@item Existing +Require the name of an existing object. An invalid name is not +accepted; the commands to exit the minibuffer do not exit if the current +input is not valid. + +@item Default +@cindex default argument string +A default value of some sort is used if the user enters no text in the +minibuffer. The default depends on the code character. + +@item No I/O +This code letter computes an argument without reading any input. +Therefore, it does not use a prompt string, and any prompt string you +supply is ignored. + +Even though the code letter doesn't use a prompt string, you must follow +it with a newline if it is not the last code character in the string. + +@item Prompt +A prompt immediately follows the code character. The prompt ends either +with the end of the string or with a newline. + +@item Special +This code character is meaningful only at the beginning of the +interactive string, and it does not look for a prompt or a newline. +It is a single, isolated character. +@end table + +@cindex reading interactive arguments + Here are the code character descriptions for use with @code{interactive}: + +@table @samp +@item * +Signal an error if the current buffer is read-only. Special. + +@item @@ +Select the window mentioned in the first mouse event in the key +sequence that invoked this command. Special. + +@item a +A function name (i.e., a symbol satisfying @code{fboundp}). Existing, +Completion, Prompt. + +@item b +The name of an existing buffer. By default, uses the name of the +current buffer (@pxref{Buffers}). Existing, Completion, Default, +Prompt. + +@item B +A buffer name. The buffer need not exist. By default, uses the name of +a recently used buffer other than the current buffer. Completion, +Default, Prompt. + +@item c +A character. The cursor does not move into the echo area. Prompt. + +@item C +A command name (i.e., a symbol satisfying @code{commandp}). Existing, +Completion, Prompt. + +@item d +@cindex position argument +The position of point, as an integer (@pxref{Point}). No I/O. + +@item D +A directory name. The default is the current default directory of the +current buffer, @code{default-directory} (@pxref{File Name Expansion}). +Existing, Completion, Default, Prompt. + +@item e +The first or next mouse event in the key sequence that invoked the command. +More precisely, @samp{e} gets events that are lists, so you can look at +the data in the lists. @xref{Input Events}. No I/O. + +You can use @samp{e} more than once in a single command's interactive +specification. If the key sequence that invoked the command has +@var{n} events that are lists, the @var{n}th @samp{e} provides the +@var{n}th such event. Events that are not lists, such as function keys +and @acronym{ASCII} characters, do not count where @samp{e} is concerned. + +@item f +A file name of an existing file (@pxref{File Names}). The default +directory is @code{default-directory}. Existing, Completion, Default, +Prompt. + +@item F +A file name. The file need not exist. Completion, Default, Prompt. + +@item G +A file name. The file need not exist. If the user enters just a +directory name, then the value is just that directory name, with no +file name within the directory added. Completion, Default, Prompt. + +@item i +An irrelevant argument. This code always supplies @code{nil} as +the argument's value. No I/O. + +@item k +A key sequence (@pxref{Key Sequences}). This keeps reading events +until a command (or undefined command) is found in the current key +maps. The key sequence argument is represented as a string or vector. +The cursor does not move into the echo area. Prompt. + +If @samp{k} reads a key sequence that ends with a down-event, it also +reads and discards the following up-event. You can get access to that +up-event with the @samp{U} code character. + +This kind of input is used by commands such as @code{describe-key} and +@code{global-set-key}. + +@item K +A key sequence, whose definition you intend to change. This works like +@samp{k}, except that it suppresses, for the last input event in the key +sequence, the conversions that are normally used (when necessary) to +convert an undefined key into a defined one. + +@item m +@cindex marker argument +The position of the mark, as an integer. No I/O. + +@item M +Arbitrary text, read in the minibuffer using the current buffer's input +method, and returned as a string (@pxref{Input Methods,,, emacs, The GNU +Emacs Manual}). Prompt. + +@item n +A number, read with the minibuffer. If the input is not a number, the +user has to try again. @samp{n} never uses the prefix argument. +Prompt. + +@item N +The numeric prefix argument; but if there is no prefix argument, read +a number as with @kbd{n}. The value is always a number. @xref{Prefix +Command Arguments}. Prompt. + +@item p +@cindex numeric prefix argument usage +The numeric prefix argument. (Note that this @samp{p} is lower case.) +No I/O. + +@item P +@cindex raw prefix argument usage +The raw prefix argument. (Note that this @samp{P} is upper case.) No +I/O. + +@item r +@cindex region argument +Point and the mark, as two numeric arguments, smallest first. This is +the only code letter that specifies two successive arguments rather than +one. No I/O. + +@item s +Arbitrary text, read in the minibuffer and returned as a string +(@pxref{Text from Minibuffer}). Terminate the input with either +@kbd{C-j} or @key{RET}. (@kbd{C-q} may be used to include either of +these characters in the input.) Prompt. + +@item S +An interned symbol whose name is read in the minibuffer. Any whitespace +character terminates the input. (Use @kbd{C-q} to include whitespace in +the string.) Other characters that normally terminate a symbol (e.g., +parentheses and brackets) do not do so here. Prompt. + +@item U +A key sequence or @code{nil}. Can be used after a @samp{k} or +@samp{K} argument to get the up-event that was discarded (if any) +after @samp{k} or @samp{K} read a down-event. If no up-event has been +discarded, @samp{U} provides @code{nil} as the argument. No I/O. + +@item v +A variable declared to be a user option (i.e., satisfying the +predicate @code{user-variable-p}). This reads the variable using +@code{read-variable}. @xref{Definition of read-variable}. Existing, +Completion, Prompt. + +@item x +A Lisp object, specified with its read syntax, terminated with a +@kbd{C-j} or @key{RET}. The object is not evaluated. @xref{Object from +Minibuffer}. Prompt. + +@item X +@cindex evaluated expression argument +A Lisp form's value. @samp{X} reads as @samp{x} does, then evaluates +the form so that its value becomes the argument for the command. +Prompt. + +@item z +A coding system name (a symbol). If the user enters null input, the +argument value is @code{nil}. @xref{Coding Systems}. Completion, +Existing, Prompt. + +@item Z +A coding system name (a symbol)---but only if this command has a prefix +argument. With no prefix argument, @samp{Z} provides @code{nil} as the +argument value. Completion, Existing, Prompt. +@end table + +@node Interactive Examples +@comment node-name, next, previous, up +@subsection Examples of Using @code{interactive} +@cindex examples of using @code{interactive} +@cindex @code{interactive}, examples of using + + Here are some examples of @code{interactive}: + +@example +@group +(defun foo1 () ; @r{@code{foo1} takes no arguments,} + (interactive) ; @r{just moves forward two words.} + (forward-word 2)) + @result{} foo1 +@end group + +@group +(defun foo2 (n) ; @r{@code{foo2} takes one argument,} + (interactive "p") ; @r{which is the numeric prefix.} + (forward-word (* 2 n))) + @result{} foo2 +@end group + +@group +(defun foo3 (n) ; @r{@code{foo3} takes one argument,} + (interactive "nCount:") ; @r{which is read with the Minibuffer.} + (forward-word (* 2 n))) + @result{} foo3 +@end group + +@group +(defun three-b (b1 b2 b3) + "Select three existing buffers. +Put them into three windows, selecting the last one." +@end group + (interactive "bBuffer1:\nbBuffer2:\nbBuffer3:") + (delete-other-windows) + (split-window (selected-window) 8) + (switch-to-buffer b1) + (other-window 1) + (split-window (selected-window) 8) + (switch-to-buffer b2) + (other-window 1) + (switch-to-buffer b3)) + @result{} three-b +@group +(three-b "*scratch*" "declarations.texi" "*mail*") + @result{} nil +@end group +@end example + +@node Interactive Call +@section Interactive Call +@cindex interactive call + + After the command loop has translated a key sequence into a command it +invokes that command using the function @code{command-execute}. If the +command is a function, @code{command-execute} calls +@code{call-interactively}, which reads the arguments and calls the +command. You can also call these functions yourself. + +@defun commandp object &optional for-call-interactively +Returns @code{t} if @var{object} is suitable for calling interactively; +that is, if @var{object} is a command. Otherwise, returns @code{nil}. + +The interactively callable objects include strings and vectors (treated +as keyboard macros), lambda expressions that contain a top-level call to +@code{interactive}, byte-code function objects made from such lambda +expressions, autoload objects that are declared as interactive +(non-@code{nil} fourth argument to @code{autoload}), and some of the +primitive functions. + +A symbol satisfies @code{commandp} if its function definition +satisfies @code{commandp}. Keys and keymaps are not commands. +Rather, they are used to look up commands (@pxref{Keymaps}). + +If @var{for-call-interactively} is non-@code{nil}, then +@code{commandp} returns @code{t} only for objects that +@code{call-interactively} could call---thus, not for keyboard macros. + +See @code{documentation} in @ref{Accessing Documentation}, for a +realistic example of using @code{commandp}. +@end defun + +@defun call-interactively command &optional record-flag keys +This function calls the interactively callable function @var{command}, +reading arguments according to its interactive calling specifications. +It returns whatever @var{command} returns. An error is signaled if +@var{command} is not a function or if it cannot be called +interactively (i.e., is not a command). Note that keyboard macros +(strings and vectors) are not accepted, even though they are +considered commands, because they are not functions. If @var{command} +is a symbol, then @code{call-interactively} uses its function definition. + +@cindex record command history +If @var{record-flag} is non-@code{nil}, then this command and its +arguments are unconditionally added to the list @code{command-history}. +Otherwise, the command is added only if it uses the minibuffer to read +an argument. @xref{Command History}. + +The argument @var{keys}, if given, should be a vector which specifies +the sequence of events to supply if the command inquires which events +were used to invoke it. If @var{keys} is omitted or @code{nil}, the +default is the return value of @code{this-command-keys-vector}. +@xref{Definition of this-command-keys-vector}. +@end defun + +@defun command-execute command &optional record-flag keys special +@cindex keyboard macro execution +This function executes @var{command}. The argument @var{command} must +satisfy the @code{commandp} predicate; i.e., it must be an interactively +callable function or a keyboard macro. + +A string or vector as @var{command} is executed with +@code{execute-kbd-macro}. A function is passed to +@code{call-interactively}, along with the optional @var{record-flag} +and @var{keys}. + +A symbol is handled by using its function definition in its place. A +symbol with an @code{autoload} definition counts as a command if it was +declared to stand for an interactively callable function. Such a +definition is handled by loading the specified library and then +rechecking the definition of the symbol. + +The argument @var{special}, if given, means to ignore the prefix +argument and not clear it. This is used for executing special events +(@pxref{Special Events}). +@end defun + +@deffn Command execute-extended-command prefix-argument +@cindex read command name +This function reads a command name from the minibuffer using +@code{completing-read} (@pxref{Completion}). Then it uses +@code{command-execute} to call the specified command. Whatever that +command returns becomes the value of @code{execute-extended-command}. + +@cindex execute with prefix argument +If the command asks for a prefix argument, it receives the value +@var{prefix-argument}. If @code{execute-extended-command} is called +interactively, the current raw prefix argument is used for +@var{prefix-argument}, and thus passed on to whatever command is run. + +@c !!! Should this be @kindex? +@cindex @kbd{M-x} +@code{execute-extended-command} is the normal definition of @kbd{M-x}, +so it uses the string @w{@samp{M-x }} as a prompt. (It would be better +to take the prompt from the events used to invoke +@code{execute-extended-command}, but that is painful to implement.) A +description of the value of the prefix argument, if any, also becomes +part of the prompt. + +@example +@group +(execute-extended-command 3) +---------- Buffer: Minibuffer ---------- +3 M-x forward-word RET +---------- Buffer: Minibuffer ---------- + @result{} t +@end group +@end example +@end deffn + +@defun interactive-p +This function returns @code{t} if the containing function (the one +whose code includes the call to @code{interactive-p}) was called in +direct response to user input. This means that it was called with the +function @code{call-interactively}, and that a keyboard macro is +not running, and that Emacs is not running in batch mode. + +If the containing function was called by Lisp evaluation (or with +@code{apply} or @code{funcall}), then it was not called interactively. +@end defun + + The most common use of @code{interactive-p} is for deciding whether +to give the user additional visual feedback (such as by printing an +informative message). For example: + +@example +@group +;; @r{Here's the usual way to use @code{interactive-p}.} +(defun foo () + (interactive) + (when (interactive-p) + (message "foo"))) + @result{} foo +@end group + +@group +;; @r{This function is just to illustrate the behavior.} +(defun bar () + (interactive) + (setq foobar (list (foo) (interactive-p)))) + @result{} bar +@end group + +@group +;; @r{Type @kbd{M-x foo}.} + @print{} foo +@end group + +@group +;; @r{Type @kbd{M-x bar}.} +;; @r{This does not display a message.} +@end group + +@group +foobar + @result{} (nil t) +@end group +@end example + + If you want to test @emph{only} whether the function was called +using @code{call-interactively}, add an optional argument +@code{print-message} which should be non-@code{nil} in an interactive +call, and use the @code{interactive} spec to make sure it is +non-@code{nil}. Here's an example: + +@example +(defun foo (&optional print-message) + (interactive "p") + (when print-message + (message "foo"))) +@end example + +@noindent +Defined in this way, the function does display the message when called +from a keyboard macro. We use @code{"p"} because the numeric prefix +argument is never @code{nil}. + +@defun called-interactively-p +This function returns @code{t} when the calling function was called +using @code{call-interactively}. + +When possible, instead of using this function, you should use the +method in the example above; that method makes it possible for a +caller to ``pretend'' that the function was called interactively. +@end defun + +@node Command Loop Info +@comment node-name, next, previous, up +@section Information from the Command Loop + +The editor command loop sets several Lisp variables to keep status - records for itself and for commands that are run. ++records for itself and for commands that are run. With the exception of ++@code{this-command} and @code{last-command} it's generally a bad idea to ++change any of these variables in a Lisp program. + +@defvar last-command +This variable records the name of the previous command executed by the +command loop (the one before the current command). Normally the value +is a symbol with a function definition, but this is not guaranteed. + +The value is copied from @code{this-command} when a command returns to +the command loop, except when the command has specified a prefix +argument for the following command. + +This variable is always local to the current terminal and cannot be +buffer-local. @xref{Multiple Displays}. +@end defvar + +@defvar real-last-command +This variable is set up by Emacs just like @code{last-command}, +but never altered by Lisp programs. +@end defvar + ++@defvar last-repeatable-command ++This variable stores the most recently executed command that was not ++part of an input event. This is the command @code{repeat} will try to ++repeat, @xref{Repeating,,, emacs, The GNU Emacs Manual}. ++@end defvar ++ +@defvar this-command +@cindex current command +This variable records the name of the command now being executed by +the editor command loop. Like @code{last-command}, it is normally a symbol +with a function definition. + +The command loop sets this variable just before running a command, and +copies its value into @code{last-command} when the command finishes +(unless the command specified a prefix argument for the following +command). + +@cindex kill command repetition +Some commands set this variable during their execution, as a flag for +whatever command runs next. In particular, the functions for killing text +set @code{this-command} to @code{kill-region} so that any kill commands +immediately following will know to append the killed text to the +previous kill. +@end defvar + +If you do not want a particular command to be recognized as the previous +command in the case where it got an error, you must code that command to +prevent this. One way is to set @code{this-command} to @code{t} at the +beginning of the command, and set @code{this-command} back to its proper +value at the end, like this: + +@example +(defun foo (args@dots{}) + (interactive @dots{}) + (let ((old-this-command this-command)) + (setq this-command t) + @r{@dots{}do the work@dots{}} + (setq this-command old-this-command))) +@end example + +@noindent +We do not bind @code{this-command} with @code{let} because that would +restore the old value in case of error---a feature of @code{let} which +in this case does precisely what we want to avoid. + +@defvar this-original-command +This has the same value as @code{this-command} except when command +remapping occurs (@pxref{Remapping Commands}). In that case, +@code{this-command} gives the command actually run (the result of +remapping), and @code{this-original-command} gives the command that +was specified to run but remapped into another command. +@end defvar + +@defun this-command-keys +This function returns a string or vector containing the key sequence +that invoked the present command, plus any previous commands that +generated the prefix argument for this command. Any events read by the +command using @code{read-event} without a timeout get tacked on to the end. + +However, if the command has called @code{read-key-sequence}, it +returns the last read key sequence. @xref{Key Sequence Input}. The +value is a string if all events in the sequence were characters that +fit in a string. @xref{Input Events}. + +@example +@group +(this-command-keys) +;; @r{Now use @kbd{C-u C-x C-e} to evaluate that.} + @result{} "^U^X^E" +@end group +@end example +@end defun + +@defun this-command-keys-vector +@anchor{Definition of this-command-keys-vector} +Like @code{this-command-keys}, except that it always returns the events +in a vector, so you don't need to deal with the complexities of storing +input events in a string (@pxref{Strings of Events}). +@end defun + +@defun clear-this-command-keys &optional keep-record +This function empties out the table of events for +@code{this-command-keys} to return. Unless @var{keep-record} is +non-@code{nil}, it also empties the records that the function +@code{recent-keys} (@pxref{Recording Input}) will subsequently return. +This is useful after reading a password, to prevent the password from +echoing inadvertently as part of the next command in certain cases. +@end defun + +@defvar last-nonmenu-event +This variable holds the last input event read as part of a key sequence, +not counting events resulting from mouse menus. + +One use of this variable is for telling @code{x-popup-menu} where to pop +up a menu. It is also used internally by @code{y-or-n-p} +(@pxref{Yes-or-No Queries}). +@end defvar + +@defvar last-command-event +@defvarx last-command-char +This variable is set to the last input event that was read by the +command loop as part of a command. The principal use of this variable +is in @code{self-insert-command}, which uses it to decide which +character to insert. + +@example +@group +last-command-event +;; @r{Now use @kbd{C-u C-x C-e} to evaluate that.} + @result{} 5 +@end group +@end example + +@noindent +The value is 5 because that is the @acronym{ASCII} code for @kbd{C-e}. + +The alias @code{last-command-char} exists for compatibility with +Emacs version 18. +@end defvar + +@c Emacs 19 feature +@defvar last-event-frame +This variable records which frame the last input event was directed to. +Usually this is the frame that was selected when the event was +generated, but if that frame has redirected input focus to another +frame, the value is the frame to which the event was redirected. +@xref{Input Focus}. + +If the last event came from a keyboard macro, the value is @code{macro}. +@end defvar + +@node Adjusting Point +@section Adjusting Point After Commands +@cindex adjusting point +@cindex invisible/intangible text, and point +@cindex @code{display} property, and point display +@cindex @code{composition} property, and point display + + It is not easy to display a value of point in the middle of a +sequence of text that has the @code{display}, @code{composition} or +@code{intangible} property, or is invisible. Therefore, after a +command finishes and returns to the command loop, if point is within +such a sequence, the command loop normally moves point to the edge of +the sequence. + + A command can inhibit this feature by setting the variable +@code{disable-point-adjustment}: + +@defvar disable-point-adjustment +If this variable is non-@code{nil} when a command returns to the +command loop, then the command loop does not check for those text +properties, and does not move point out of sequences that have them. + +The command loop sets this variable to @code{nil} before each command, +so if a command sets it, the effect applies only to that command. +@end defvar + +@defvar global-disable-point-adjustment +If you set this variable to a non-@code{nil} value, the feature of +moving point out of these sequences is completely turned off. +@end defvar + +@node Input Events +@section Input Events +@cindex events +@cindex input events + +The Emacs command loop reads a sequence of @dfn{input events} that +represent keyboard or mouse activity. The events for keyboard activity +are characters or symbols; mouse events are always lists. This section +describes the representation and meaning of input events in detail. + +@defun eventp object +This function returns non-@code{nil} if @var{object} is an input event +or event type. + +Note that any symbol might be used as an event or an event type. +@code{eventp} cannot distinguish whether a symbol is intended by Lisp +code to be used as an event. Instead, it distinguishes whether the +symbol has actually been used in an event that has been read as input in +the current Emacs session. If a symbol has not yet been so used, +@code{eventp} returns @code{nil}. +@end defun + +@menu +* Keyboard Events:: Ordinary characters--keys with symbols on them. +* Function Keys:: Function keys--keys with names, not symbols. +* Mouse Events:: Overview of mouse events. +* Click Events:: Pushing and releasing a mouse button. +* Drag Events:: Moving the mouse before releasing the button. +* Button-Down Events:: A button was pushed and not yet released. +* Repeat Events:: Double and triple click (or drag, or down). +* Motion Events:: Just moving the mouse, not pushing a button. +* Focus Events:: Moving the mouse between frames. +* Misc Events:: Other events the system can generate. +* Event Examples:: Examples of the lists for mouse events. +* Classifying Events:: Finding the modifier keys in an event symbol. + Event types. +* Accessing Events:: Functions to extract info from events. +* Strings of Events:: Special considerations for putting + keyboard character events in a string. +@end menu + +@node Keyboard Events +@subsection Keyboard Events +@cindex keyboard events + +There are two kinds of input you can get from the keyboard: ordinary +keys, and function keys. Ordinary keys correspond to characters; the +events they generate are represented in Lisp as characters. The event +type of a character event is the character itself (an integer); see +@ref{Classifying Events}. + +@cindex modifier bits (of input character) +@cindex basic code (of input character) +An input character event consists of a @dfn{basic code} between 0 and +524287, plus any or all of these @dfn{modifier bits}: + +@table @asis +@item meta +The +@tex +@math{2^{27}} +@end tex +@ifnottex +2**27 +@end ifnottex +bit in the character code indicates a character +typed with the meta key held down. + +@item control +The +@tex +@math{2^{26}} +@end tex +@ifnottex +2**26 +@end ifnottex +bit in the character code indicates a non-@acronym{ASCII} +control character. + +@sc{ascii} control characters such as @kbd{C-a} have special basic +codes of their own, so Emacs needs no special bit to indicate them. +Thus, the code for @kbd{C-a} is just 1. + +But if you type a control combination not in @acronym{ASCII}, such as +@kbd{%} with the control key, the numeric value you get is the code +for @kbd{%} plus +@tex +@math{2^{26}} +@end tex +@ifnottex +2**26 +@end ifnottex +(assuming the terminal supports non-@acronym{ASCII} +control characters). + +@item shift +The +@tex +@math{2^{25}} +@end tex +@ifnottex +2**25 +@end ifnottex +bit in the character code indicates an @acronym{ASCII} control +character typed with the shift key held down. + +For letters, the basic code itself indicates upper versus lower case; +for digits and punctuation, the shift key selects an entirely different +character with a different basic code. In order to keep within the +@acronym{ASCII} character set whenever possible, Emacs avoids using the +@tex +@math{2^{25}} +@end tex +@ifnottex +2**25 +@end ifnottex +bit for those characters. + +However, @acronym{ASCII} provides no way to distinguish @kbd{C-A} from +@kbd{C-a}, so Emacs uses the +@tex +@math{2^{25}} +@end tex +@ifnottex +2**25 +@end ifnottex +bit in @kbd{C-A} and not in +@kbd{C-a}. + +@item hyper +The +@tex +@math{2^{24}} +@end tex +@ifnottex +2**24 +@end ifnottex +bit in the character code indicates a character +typed with the hyper key held down. + +@item super +The +@tex +@math{2^{23}} +@end tex +@ifnottex +2**23 +@end ifnottex +bit in the character code indicates a character +typed with the super key held down. + +@item alt +The +@tex +@math{2^{22}} +@end tex +@ifnottex +2**22 +@end ifnottex +bit in the character code indicates a character typed with +the alt key held down. (On some terminals, the key labeled @key{ALT} +is actually the meta key.) +@end table + + It is best to avoid mentioning specific bit numbers in your program. +To test the modifier bits of a character, use the function +@code{event-modifiers} (@pxref{Classifying Events}). When making key +bindings, you can use the read syntax for characters with modifier bits +(@samp{\C-}, @samp{\M-}, and so on). For making key bindings with +@code{define-key}, you can use lists such as @code{(control hyper ?x)} to +specify the characters (@pxref{Changing Key Bindings}). The function +@code{event-convert-list} converts such a list into an event type +(@pxref{Classifying Events}). + +@node Function Keys +@subsection Function Keys + +@cindex function keys +Most keyboards also have @dfn{function keys}---keys that have names or +symbols that are not characters. Function keys are represented in Emacs +Lisp as symbols; the symbol's name is the function key's label, in lower +case. For example, pressing a key labeled @key{F1} places the symbol +@code{f1} in the input stream. + +The event type of a function key event is the event symbol itself. +@xref{Classifying Events}. + +Here are a few special cases in the symbol-naming convention for +function keys: + +@table @asis +@item @code{backspace}, @code{tab}, @code{newline}, @code{return}, @code{delete} +These keys correspond to common @acronym{ASCII} control characters that have +special keys on most keyboards. + +In @acronym{ASCII}, @kbd{C-i} and @key{TAB} are the same character. If the +terminal can distinguish between them, Emacs conveys the distinction to +Lisp programs by representing the former as the integer 9, and the +latter as the symbol @code{tab}. + +Most of the time, it's not useful to distinguish the two. So normally +@code{function-key-map} (@pxref{Translation Keymaps}) is set up to map +@code{tab} into 9. Thus, a key binding for character code 9 (the +character @kbd{C-i}) also applies to @code{tab}. Likewise for the other +symbols in this group. The function @code{read-char} likewise converts +these events into characters. + +In @acronym{ASCII}, @key{BS} is really @kbd{C-h}. But @code{backspace} +converts into the character code 127 (@key{DEL}), not into code 8 +(@key{BS}). This is what most users prefer. + +@item @code{left}, @code{up}, @code{right}, @code{down} +Cursor arrow keys +@item @code{kp-add}, @code{kp-decimal}, @code{kp-divide}, @dots{} +Keypad keys (to the right of the regular keyboard). +@item @code{kp-0}, @code{kp-1}, @dots{} +Keypad keys with digits. +@item @code{kp-f1}, @code{kp-f2}, @code{kp-f3}, @code{kp-f4} +Keypad PF keys. +@item @code{kp-home}, @code{kp-left}, @code{kp-up}, @code{kp-right}, @code{kp-down} +Keypad arrow keys. Emacs normally translates these into the +corresponding non-keypad keys @code{home}, @code{left}, @dots{} +@item @code{kp-prior}, @code{kp-next}, @code{kp-end}, @code{kp-begin}, @code{kp-insert}, @code{kp-delete} +Additional keypad duplicates of keys ordinarily found elsewhere. Emacs +normally translates these into the like-named non-keypad keys. +@end table + +You can use the modifier keys @key{ALT}, @key{CTRL}, @key{HYPER}, +@key{META}, @key{SHIFT}, and @key{SUPER} with function keys. The way to +represent them is with prefixes in the symbol name: + +@table @samp +@item A- +The alt modifier. +@item C- +The control modifier. +@item H- +The hyper modifier. +@item M- +The meta modifier. +@item S- +The shift modifier. +@item s- +The super modifier. +@end table + +Thus, the symbol for the key @key{F3} with @key{META} held down is +@code{M-f3}. When you use more than one prefix, we recommend you +write them in alphabetical order; but the order does not matter in +arguments to the key-binding lookup and modification functions. + +@node Mouse Events +@subsection Mouse Events + +Emacs supports four kinds of mouse events: click events, drag events, +button-down events, and motion events. All mouse events are represented +as lists. The @sc{car} of the list is the event type; this says which +mouse button was involved, and which modifier keys were used with it. +The event type can also distinguish double or triple button presses +(@pxref{Repeat Events}). The rest of the list elements give position +and time information. + +For key lookup, only the event type matters: two events of the same type +necessarily run the same command. The command can access the full +values of these events using the @samp{e} interactive code. +@xref{Interactive Codes}. + +A key sequence that starts with a mouse event is read using the keymaps +of the buffer in the window that the mouse was in, not the current +buffer. This does not imply that clicking in a window selects that +window or its buffer---that is entirely under the control of the command +binding of the key sequence. + +@node Click Events +@subsection Click Events +@cindex click event +@cindex mouse click event + +When the user presses a mouse button and releases it at the same +location, that generates a @dfn{click} event. All mouse click event +share the same format: + +@example +(@var{event-type} @var{position} @var{click-count}) +@end example + +@table @asis +@item @var{event-type} +This is a symbol that indicates which mouse button was used. It is +one of the symbols @code{mouse-1}, @code{mouse-2}, @dots{}, where the +buttons are numbered left to right. + +You can also use prefixes @samp{A-}, @samp{C-}, @samp{H-}, @samp{M-}, +@samp{S-} and @samp{s-} for modifiers alt, control, hyper, meta, shift +and super, just as you would with function keys. + +This symbol also serves as the event type of the event. Key bindings +describe events by their types; thus, if there is a key binding for +@code{mouse-1}, that binding would apply to all events whose +@var{event-type} is @code{mouse-1}. + +@item @var{position} +This is the position where the mouse click occurred. The actual +format of @var{position} depends on what part of a window was clicked +on. + +For mouse click events in the text area, mode line, header line, or in +the marginal areas, @var{position} has this form: + +@example +(@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp} + @var{object} @var{text-pos} (@var{col} . @var{row}) + @var{image} (@var{dx} . @var{dy}) (@var{width} . @var{height})) +@end example + +@table @asis +@item @var{window} +This is the window in which the click occurred. + +@item @var{pos-or-area} +This is the buffer position of the character clicked on in the text +area, or if clicked outside the text area, it is the window area in +which the click occurred. It is one of the symbols @code{mode-line}, +@code{header-line}, @code{vertical-line}, @code{left-margin}, +@code{right-margin}, @code{left-fringe}, or @code{right-fringe}. + +In one special case, @var{pos-or-area} is a list containing a symbol (one +of the symbols listed above) instead of just the symbol. This happens +after the imaginary prefix keys for the event are inserted into the +input stream. @xref{Key Sequence Input}. + + +@item @var{x}, @var{y} +These are the pixel coordinates of the click, relative to +the top left corner of @var{window}, which is @code{(0 . 0)}. +For the mode or header line, @var{y} does not have meaningful data. +For the vertical line, @var{x} does not have meaningful data. + +@item @var{timestamp} +This is the time at which the event occurred, in milliseconds. + +@item @var{object} +This is the object on which the click occurred. It is either +@code{nil} if there is no string property, or it has the form +(@var{string} . @var{string-pos}) when there is a string-type text +property at the click position. + +@table @asis +@item @var{string} +This is the string on which the click occurred, including any +properties. + +@item @var{string-pos} +This is the position in the string on which the click occurred, +relevant if properties at the click need to be looked up. +@end table + +@item @var{text-pos} +For clicks on a marginal area or on a fringe, this is the buffer +position of the first visible character in the corresponding line in +the window. For other events, it is the current buffer position in +the window. + +@item @var{col}, @var{row} +These are the actual coordinates of the glyph under the @var{x}, +@var{y} position, possibly padded with default character width +glyphs if @var{x} is beyond the last glyph on the line. + +@item @var{image} +This is the image object on which the click occurred. It is either +@code{nil} if there is no image at the position clicked on, or it is +an image object as returned by @code{find-image} if click was in an image. + +@item @var{dx}, @var{dy} +These are the pixel coordinates of the click, relative to +the top left corner of @var{object}, which is @code{(0 . 0)}. If +@var{object} is @code{nil}, the coordinates are relative to the top +left corner of the character glyph clicked on. + +@item @var{width}, @var{height} +These are the pixel width and height of @var{object} or, if this is +@code{nil}, those of the character glyph clicked on. +@end table + +@sp 1 +For mouse clicks on a scroll-bar, @var{position} has this form: + +@example +(@var{window} @var{area} (@var{portion} . @var{whole}) @var{timestamp} @var{part}) +@end example + +@table @asis +@item @var{window} +This is the window whose scroll-bar was clicked on. + +@item @var{area} +This is the scroll bar where the click occurred. It is one of the +symbols @code{vertical-scroll-bar} or @code{horizontal-scroll-bar}. + +@item @var{portion} +This is the distance of the click from the top or left end of +the scroll bar. + +@item @var{whole} +This is the length of the entire scroll bar. + +@item @var{timestamp} +This is the time at which the event occurred, in milliseconds. + +@item @var{part} +This is the part of the scroll-bar which was clicked on. It is one +of the symbols @code{above-handle}, @code{handle}, @code{below-handle}, +@code{up}, @code{down}, @code{top}, @code{bottom}, and @code{end-scroll}. +@end table + +@item @var{click-count} +This is the number of rapid repeated presses so far of the same mouse +button. @xref{Repeat Events}. +@end table + +@node Drag Events +@subsection Drag Events +@cindex drag event +@cindex mouse drag event + +With Emacs, you can have a drag event without even changing your +clothes. A @dfn{drag event} happens every time the user presses a mouse +button and then moves the mouse to a different character position before +releasing the button. Like all mouse events, drag events are +represented in Lisp as lists. The lists record both the starting mouse +position and the final position, like this: + +@example +(@var{event-type} + (@var{window1} START-POSITION) + (@var{window2} END-POSITION)) +@end example + +For a drag event, the name of the symbol @var{event-type} contains the +prefix @samp{drag-}. For example, dragging the mouse with button 2 +held down generates a @code{drag-mouse-2} event. The second and third +elements of the event give the starting and ending position of the +drag. They have the same form as @var{position} in a click event +(@pxref{Click Events}) that is not on the scroll bar part of the +window. You can access the second element of any mouse event in the +same way, with no need to distinguish drag events from others. + +The @samp{drag-} prefix follows the modifier key prefixes such as +@samp{C-} and @samp{M-}. + +If @code{read-key-sequence} receives a drag event that has no key +binding, and the corresponding click event does have a binding, it +changes the drag event into a click event at the drag's starting +position. This means that you don't have to distinguish between click +and drag events unless you want to. + +@node Button-Down Events +@subsection Button-Down Events +@cindex button-down event + +Click and drag events happen when the user releases a mouse button. +They cannot happen earlier, because there is no way to distinguish a +click from a drag until the button is released. + +If you want to take action as soon as a button is pressed, you need to +handle @dfn{button-down} events.@footnote{Button-down is the +conservative antithesis of drag.} These occur as soon as a button is +pressed. They are represented by lists that look exactly like click +events (@pxref{Click Events}), except that the @var{event-type} symbol +name contains the prefix @samp{down-}. The @samp{down-} prefix follows +modifier key prefixes such as @samp{C-} and @samp{M-}. + +The function @code{read-key-sequence} ignores any button-down events +that don't have command bindings; therefore, the Emacs command loop +ignores them too. This means that you need not worry about defining +button-down events unless you want them to do something. The usual +reason to define a button-down event is so that you can track mouse +motion (by reading motion events) until the button is released. +@xref{Motion Events}. + +@node Repeat Events +@subsection Repeat Events +@cindex repeat events +@cindex double-click events +@cindex triple-click events +@cindex mouse events, repeated + +If you press the same mouse button more than once in quick succession +without moving the mouse, Emacs generates special @dfn{repeat} mouse +events for the second and subsequent presses. + +The most common repeat events are @dfn{double-click} events. Emacs +generates a double-click event when you click a button twice; the event +happens when you release the button (as is normal for all click +events). + +The event type of a double-click event contains the prefix +@samp{double-}. Thus, a double click on the second mouse button with +@key{meta} held down comes to the Lisp program as +@code{M-double-mouse-2}. If a double-click event has no binding, the +binding of the corresponding ordinary click event is used to execute +it. Thus, you need not pay attention to the double click feature +unless you really want to. + +When the user performs a double click, Emacs generates first an ordinary +click event, and then a double-click event. Therefore, you must design +the command binding of the double click event to assume that the +single-click command has already run. It must produce the desired +results of a double click, starting from the results of a single click. + +This is convenient, if the meaning of a double click somehow ``builds +on'' the meaning of a single click---which is recommended user interface +design practice for double clicks. + +If you click a button, then press it down again and start moving the +mouse with the button held down, then you get a @dfn{double-drag} event +when you ultimately release the button. Its event type contains +@samp{double-drag} instead of just @samp{drag}. If a double-drag event +has no binding, Emacs looks for an alternate binding as if the event +were an ordinary drag. + +Before the double-click or double-drag event, Emacs generates a +@dfn{double-down} event when the user presses the button down for the +second time. Its event type contains @samp{double-down} instead of just +@samp{down}. If a double-down event has no binding, Emacs looks for an +alternate binding as if the event were an ordinary button-down event. +If it finds no binding that way either, the double-down event is +ignored. + +To summarize, when you click a button and then press it again right +away, Emacs generates a down event and a click event for the first +click, a double-down event when you press the button again, and finally +either a double-click or a double-drag event. + +If you click a button twice and then press it again, all in quick +succession, Emacs generates a @dfn{triple-down} event, followed by +either a @dfn{triple-click} or a @dfn{triple-drag}. The event types of +these events contain @samp{triple} instead of @samp{double}. If any +triple event has no binding, Emacs uses the binding that it would use +for the corresponding double event. + +If you click a button three or more times and then press it again, the +events for the presses beyond the third are all triple events. Emacs +does not have separate event types for quadruple, quintuple, etc.@: +events. However, you can look at the event list to find out precisely +how many times the button was pressed. + +@defun event-click-count event +This function returns the number of consecutive button presses that led +up to @var{event}. If @var{event} is a double-down, double-click or +double-drag event, the value is 2. If @var{event} is a triple event, +the value is 3 or greater. If @var{event} is an ordinary mouse event +(not a repeat event), the value is 1. +@end defun + +@defopt double-click-fuzz +To generate repeat events, successive mouse button presses must be at +approximately the same screen position. The value of +@code{double-click-fuzz} specifies the maximum number of pixels the +mouse may be moved (horizontally or vertically) between two successive +clicks to make a double-click. + +This variable is also the threshold for motion of the mouse to count +as a drag. +@end defopt + +@defopt double-click-time +To generate repeat events, the number of milliseconds between +successive button presses must be less than the value of +@code{double-click-time}. Setting @code{double-click-time} to +@code{nil} disables multi-click detection entirely. Setting it to +@code{t} removes the time limit; Emacs then detects multi-clicks by +position only. +@end defopt + +@node Motion Events +@subsection Motion Events +@cindex motion event +@cindex mouse motion events + +Emacs sometimes generates @dfn{mouse motion} events to describe motion +of the mouse without any button activity. Mouse motion events are +represented by lists that look like this: + +@example +(mouse-movement (POSITION)) +@end example + +The second element of the list describes the current position of the +mouse, just as in a click event (@pxref{Click Events}). + +The special form @code{track-mouse} enables generation of motion events +within its body. Outside of @code{track-mouse} forms, Emacs does not +generate events for mere motion of the mouse, and these events do not +appear. @xref{Mouse Tracking}. + +@node Focus Events +@subsection Focus Events +@cindex focus event + +Window systems provide general ways for the user to control which window +gets keyboard input. This choice of window is called the @dfn{focus}. +When the user does something to switch between Emacs frames, that +generates a @dfn{focus event}. The normal definition of a focus event, +in the global keymap, is to select a new frame within Emacs, as the user +would expect. @xref{Input Focus}. + +Focus events are represented in Lisp as lists that look like this: + +@example +(switch-frame @var{new-frame}) +@end example + +@noindent +where @var{new-frame} is the frame switched to. + +Most X window managers are set up so that just moving the mouse into a +window is enough to set the focus there. Emacs appears to do this, +because it changes the cursor to solid in the new frame. However, there +is no need for the Lisp program to know about the focus change until +some other kind of input arrives. So Emacs generates a focus event only +when the user actually types a keyboard key or presses a mouse button in +the new frame; just moving the mouse between frames does not generate a +focus event. + +A focus event in the middle of a key sequence would garble the +sequence. So Emacs never generates a focus event in the middle of a key +sequence. If the user changes focus in the middle of a key +sequence---that is, after a prefix key---then Emacs reorders the events +so that the focus event comes either before or after the multi-event key +sequence, and not within it. + +@node Misc Events +@subsection Miscellaneous System Events + +A few other event types represent occurrences within the system. + +@table @code +@cindex @code{delete-frame} event +@item (delete-frame (@var{frame})) +This kind of event indicates that the user gave the window manager +a command to delete a particular window, which happens to be an Emacs frame. + +The standard definition of the @code{delete-frame} event is to delete @var{frame}. + +@cindex @code{iconify-frame} event +@item (iconify-frame (@var{frame})) +This kind of event indicates that the user iconified @var{frame} using +the window manager. Its standard definition is @code{ignore}; since the +frame has already been iconified, Emacs has no work to do. The purpose +of this event type is so that you can keep track of such events if you +want to. + +@cindex @code{make-frame-visible} event +@item (make-frame-visible (@var{frame})) +This kind of event indicates that the user deiconified @var{frame} using +the window manager. Its standard definition is @code{ignore}; since the +frame has already been made visible, Emacs has no work to do. + +@cindex @code{wheel-up} event +@cindex @code{wheel-down} event +@item (wheel-up @var{position}) +@item (wheel-down @var{position}) +These kinds of event are generated by moving a mouse wheel. Their +usual meaning is a kind of scroll or zoom. + +The element @var{position} is a list describing the position of the +event, in the same format as used in a mouse-click event. + +This kind of event is generated only on some kinds of systems. On some +systems, @code{mouse-4} and @code{mouse-5} are used instead. For +portable code, use the variables @code{mouse-wheel-up-event} and +@code{mouse-wheel-down-event} defined in @file{mwheel.el} to determine +what event types to expect for the mouse wheel. + +@cindex @code{drag-n-drop} event +@item (drag-n-drop @var{position} @var{files}) +This kind of event is generated when a group of files is +selected in an application outside of Emacs, and then dragged and +dropped onto an Emacs frame. + +The element @var{position} is a list describing the position of the +event, in the same format as used in a mouse-click event, and +@var{files} is the list of file names that were dragged and dropped. +The usual way to handle this event is by visiting these files. + +This kind of event is generated, at present, only on some kinds of +systems. + +@cindex @code{help-echo} event +@item help-echo +This kind of event is generated when a mouse pointer moves onto a +portion of buffer text which has a @code{help-echo} text property. +The generated event has this form: + +@example +(help-echo @var{frame} @var{help} @var{window} @var{object} @var{pos}) +@end example + +@noindent +The precise meaning of the event parameters and the way these +parameters are used to display the help-echo text are described in +@ref{Text help-echo}. + +@cindex @code{sigusr1} event +@cindex @code{sigusr2} event +@cindex user signals +@item sigusr1 +@itemx sigusr2 +These events are generated when the Emacs process receives +the signals @code{SIGUSR1} and @code{SIGUSR2}. They contain no +additional data because signals do not carry additional information. + +To catch a user signal, bind the corresponding event to an interactive +command in the @code{special-event-map} (@pxref{Active Keymaps}). +The command is called with no arguments, and the specific signal event is +available in @code{last-input-event}. For example: + +@smallexample +(defun sigusr-handler () + (interactive) + (message "Caught signal %S" last-input-event)) + +(define-key special-event-map [sigusr1] 'sigusr-handler) +@end smallexample + +To test the signal handler, you can make Emacs send a signal to itself: + +@smallexample +(signal-process (emacs-pid) 'sigusr1) +@end smallexample +@end table + + If one of these events arrives in the middle of a key sequence---that +is, after a prefix key---then Emacs reorders the events so that this +event comes either before or after the multi-event key sequence, not +within it. + +@node Event Examples +@subsection Event Examples + +If the user presses and releases the left mouse button over the same +location, that generates a sequence of events like this: + +@smallexample +(down-mouse-1 (# 2613 (0 . 38) -864320)) +(mouse-1 (# 2613 (0 . 38) -864180)) +@end smallexample + +While holding the control key down, the user might hold down the +second mouse button, and drag the mouse from one line to the next. +That produces two events, as shown here: + +@smallexample +(C-down-mouse-2 (# 3440 (0 . 27) -731219)) +(C-drag-mouse-2 (# 3440 (0 . 27) -731219) + (# 3510 (0 . 28) -729648)) +@end smallexample + +While holding down the meta and shift keys, the user might press the +second mouse button on the window's mode line, and then drag the mouse +into another window. That produces a pair of events like these: + +@smallexample +(M-S-down-mouse-2 (# mode-line (33 . 31) -457844)) +(M-S-drag-mouse-2 (# mode-line (33 . 31) -457844) + (# 161 (33 . 3) + -453816)) +@end smallexample + +To handle a SIGUSR1 signal, define an interactive function, and +bind it to the @code{signal usr1} event sequence: + +@smallexample +(defun usr1-handler () + (interactive) + (message "Got USR1 signal")) +(global-set-key [signal usr1] 'usr1-handler) +@end smallexample + +@node Classifying Events +@subsection Classifying Events +@cindex event type + + Every event has an @dfn{event type}, which classifies the event for +key binding purposes. For a keyboard event, the event type equals the +event value; thus, the event type for a character is the character, and +the event type for a function key symbol is the symbol itself. For +events that are lists, the event type is the symbol in the @sc{car} of +the list. Thus, the event type is always a symbol or a character. + + Two events of the same type are equivalent where key bindings are +concerned; thus, they always run the same command. That does not +necessarily mean they do the same things, however, as some commands look +at the whole event to decide what to do. For example, some commands use +the location of a mouse event to decide where in the buffer to act. + + Sometimes broader classifications of events are useful. For example, +you might want to ask whether an event involved the @key{META} key, +regardless of which other key or mouse button was used. + + The functions @code{event-modifiers} and @code{event-basic-type} are +provided to get such information conveniently. + +@defun event-modifiers event +This function returns a list of the modifiers that @var{event} has. The +modifiers are symbols; they include @code{shift}, @code{control}, +@code{meta}, @code{alt}, @code{hyper} and @code{super}. In addition, +the modifiers list of a mouse event symbol always contains one of +@code{click}, @code{drag}, and @code{down}. For double or triple +events, it also contains @code{double} or @code{triple}. + +The argument @var{event} may be an entire event object, or just an +event type. If @var{event} is a symbol that has never been used in an +event that has been read as input in the current Emacs session, then +@code{event-modifiers} can return @code{nil}, even when @var{event} +actually has modifiers. + +Here are some examples: + +@example +(event-modifiers ?a) + @result{} nil +(event-modifiers ?A) + @result{} (shift) +(event-modifiers ?\C-a) + @result{} (control) +(event-modifiers ?\C-%) + @result{} (control) +(event-modifiers ?\C-\S-a) + @result{} (control shift) +(event-modifiers 'f5) + @result{} nil +(event-modifiers 's-f5) + @result{} (super) +(event-modifiers 'M-S-f5) + @result{} (meta shift) +(event-modifiers 'mouse-1) + @result{} (click) +(event-modifiers 'down-mouse-1) + @result{} (down) +@end example + +The modifiers list for a click event explicitly contains @code{click}, +but the event symbol name itself does not contain @samp{click}. +@end defun + +@defun event-basic-type event +This function returns the key or mouse button that @var{event} +describes, with all modifiers removed. The @var{event} argument is as +in @code{event-modifiers}. For example: + +@example +(event-basic-type ?a) + @result{} 97 +(event-basic-type ?A) + @result{} 97 +(event-basic-type ?\C-a) + @result{} 97 +(event-basic-type ?\C-\S-a) + @result{} 97 +(event-basic-type 'f5) + @result{} f5 +(event-basic-type 's-f5) + @result{} f5 +(event-basic-type 'M-S-f5) + @result{} f5 +(event-basic-type 'down-mouse-1) + @result{} mouse-1 +@end example +@end defun + +@defun mouse-movement-p object +This function returns non-@code{nil} if @var{object} is a mouse movement +event. +@end defun + +@defun event-convert-list list +This function converts a list of modifier names and a basic event type +to an event type which specifies all of them. The basic event type +must be the last element of the list. For example, + +@example +(event-convert-list '(control ?a)) + @result{} 1 +(event-convert-list '(control meta ?a)) + @result{} -134217727 +(event-convert-list '(control super f1)) + @result{} C-s-f1 +@end example +@end defun + +@node Accessing Events +@subsection Accessing Events +@cindex mouse events, data in + + This section describes convenient functions for accessing the data in +a mouse button or motion event. + + These two functions return the starting or ending position of a +mouse-button event, as a list of this form: + +@example +(@var{window} @var{pos-or-area} (@var{x} . @var{y}) @var{timestamp} + @var{object} @var{text-pos} (@var{col} . @var{row}) + @var{image} (@var{dx} . @var{dy}) (@var{width} . @var{height})) +@end example + +@defun event-start event +This returns the starting position of @var{event}. + +If @var{event} is a click or button-down event, this returns the +location of the event. If @var{event} is a drag event, this returns the +drag's starting position. +@end defun + +@defun event-end event +This returns the ending position of @var{event}. + +If @var{event} is a drag event, this returns the position where the user +released the mouse button. If @var{event} is a click or button-down +event, the value is actually the starting position, which is the only +position such events have. +@end defun + +@cindex mouse position list, accessing + These functions take a position list as described above, and +return various parts of it. + +@defun posn-window position +Return the window that @var{position} is in. +@end defun + +@defun posn-area position +Return the window area recorded in @var{position}. It returns @code{nil} +when the event occurred in the text area of the window; otherwise, it +is a symbol identifying the area in which the event occurred. +@end defun + +@defun posn-point position +Return the buffer position in @var{position}. When the event occurred +in the text area of the window, in a marginal area, or on a fringe, +this is an integer specifying a buffer position. Otherwise, the value +is undefined. +@end defun + +@defun posn-x-y position +Return the pixel-based x and y coordinates in @var{position}, as a +cons cell @code{(@var{x} . @var{y})}. These coordinates are relative +to the window given by @code{posn-window}. + +This example shows how to convert these window-relative coordinates +into frame-relative coordinates: + +@example +(defun frame-relative-coordinates (position) + "Return frame-relative coordinates from POSITION." + (let* ((x-y (posn-x-y position)) + (window (posn-window position)) + (edges (window-inside-pixel-edges window))) + (cons (+ (car x-y) (car edges)) + (+ (cdr x-y) (cadr edges))))) +@end example +@end defun + +@defun posn-col-row position +Return the row and column (in units of the frame's default character +height and width) of @var{position}, as a cons cell @code{(@var{col} . +@var{row})}. These are computed from the @var{x} and @var{y} values +actually found in @var{position}. +@end defun + +@defun posn-actual-col-row position +Return the actual row and column in @var{position}, as a cons cell +@code{(@var{col} . @var{row})}. The values are the actual row number +in the window, and the actual character number in that row. It returns +@code{nil} if @var{position} does not include actual positions values. +You can use @code{posn-col-row} to get approximate values. +@end defun + +@defun posn-string position +Return the string object in @var{position}, either @code{nil}, or a +cons cell @code{(@var{string} . @var{string-pos})}. +@end defun + +@defun posn-image position +Return the image object in @var{position}, either @code{nil}, or an +image @code{(image ...)}. +@end defun + +@defun posn-object position +Return the image or string object in @var{position}, either +@code{nil}, an image @code{(image ...)}, or a cons cell +@code{(@var{string} . @var{string-pos})}. +@end defun + +@defun posn-object-x-y position +Return the pixel-based x and y coordinates relative to the upper left +corner of the object in @var{position} as a cons cell @code{(@var{dx} +. @var{dy})}. If the @var{position} is a buffer position, return the +relative position in the character at that position. +@end defun + +@defun posn-object-width-height position +Return the pixel width and height of the object in @var{position} as a +cons cell @code{(@var{width} . @var{height})}. If the @var{position} +is a buffer position, return the size of the character at that position. +@end defun + +@cindex timestamp of a mouse event +@defun posn-timestamp position +Return the timestamp in @var{position}. This is the time at which the +event occurred, in milliseconds. +@end defun + + These functions compute a position list given particular buffer +position or screen position. You can access the data in this position +list with the functions described above. + +@defun posn-at-point &optional pos window +This function returns a position list for position @var{pos} in +@var{window}. @var{pos} defaults to point in @var{window}; +@var{window} defaults to the selected window. + +@code{posn-at-point} returns @code{nil} if @var{pos} is not visible in +@var{window}. +@end defun + +@defun posn-at-x-y x y &optional frame-or-window whole +This function returns position information corresponding to pixel +coordinates @var{x} and @var{y} in a specified frame or window, +@var{frame-or-window}, which defaults to the selected window. +The coordinates @var{x} and @var{y} are relative to the +frame or window used. +If @var{whole} is @code{nil}, the coordinates are relative +to the window text area, otherwise they are relative to +the entire window area including scroll bars, margins and fringes. +@end defun + + These functions are useful for decoding scroll bar events. + +@defun scroll-bar-event-ratio event +This function returns the fractional vertical position of a scroll bar +event within the scroll bar. The value is a cons cell +@code{(@var{portion} . @var{whole})} containing two integers whose ratio +is the fractional position. +@end defun + +@defun scroll-bar-scale ratio total +This function multiplies (in effect) @var{ratio} by @var{total}, +rounding the result to an integer. The argument @var{ratio} is not a +number, but rather a pair @code{(@var{num} . @var{denom})}---typically a +value returned by @code{scroll-bar-event-ratio}. + +This function is handy for scaling a position on a scroll bar into a +buffer position. Here's how to do that: + +@example +(+ (point-min) + (scroll-bar-scale + (posn-x-y (event-start event)) + (- (point-max) (point-min)))) +@end example + +Recall that scroll bar events have two integers forming a ratio, in place +of a pair of x and y coordinates. +@end defun + +@node Strings of Events +@subsection Putting Keyboard Events in Strings +@cindex keyboard events in strings +@cindex strings with keyboard events + + In most of the places where strings are used, we conceptualize the +string as containing text characters---the same kind of characters found +in buffers or files. Occasionally Lisp programs use strings that +conceptually contain keyboard characters; for example, they may be key +sequences or keyboard macro definitions. However, storing keyboard +characters in a string is a complex matter, for reasons of historical +compatibility, and it is not always possible. + + We recommend that new programs avoid dealing with these complexities +by not storing keyboard events in strings. Here is how to do that: + +@itemize @bullet +@item +Use vectors instead of strings for key sequences, when you plan to use +them for anything other than as arguments to @code{lookup-key} and +@code{define-key}. For example, you can use +@code{read-key-sequence-vector} instead of @code{read-key-sequence}, and +@code{this-command-keys-vector} instead of @code{this-command-keys}. + +@item +Use vectors to write key sequence constants containing meta characters, +even when passing them directly to @code{define-key}. + +@item +When you have to look at the contents of a key sequence that might be a +string, use @code{listify-key-sequence} (@pxref{Event Input Misc}) +first, to convert it to a list. +@end itemize + + The complexities stem from the modifier bits that keyboard input +characters can include. Aside from the Meta modifier, none of these +modifier bits can be included in a string, and the Meta modifier is +allowed only in special cases. + + The earliest GNU Emacs versions represented meta characters as codes +in the range of 128 to 255. At that time, the basic character codes +ranged from 0 to 127, so all keyboard character codes did fit in a +string. Many Lisp programs used @samp{\M-} in string constants to stand +for meta characters, especially in arguments to @code{define-key} and +similar functions, and key sequences and sequences of events were always +represented as strings. + + When we added support for larger basic character codes beyond 127, and +additional modifier bits, we had to change the representation of meta +characters. Now the flag that represents the Meta modifier in a +character is +@tex +@math{2^{27}} +@end tex +@ifnottex +2**27 +@end ifnottex +and such numbers cannot be included in a string. + + To support programs with @samp{\M-} in string constants, there are +special rules for including certain meta characters in a string. +Here are the rules for interpreting a string as a sequence of input +characters: + +@itemize @bullet +@item +If the keyboard character value is in the range of 0 to 127, it can go +in the string unchanged. + +@item +The meta variants of those characters, with codes in the range of +@tex +@math{2^{27}} +@end tex +@ifnottex +2**27 +@end ifnottex +to +@tex +@math{2^{27} + 127}, +@end tex +@ifnottex +2**27+127, +@end ifnottex +can also go in the string, but you must change their +numeric values. You must set the +@tex +@math{2^{7}} +@end tex +@ifnottex +2**7 +@end ifnottex +bit instead of the +@tex +@math{2^{27}} +@end tex +@ifnottex +2**27 +@end ifnottex +bit, resulting in a value between 128 and 255. Only a unibyte string +can include these codes. + +@item +Non-@acronym{ASCII} characters above 256 can be included in a multibyte string. + +@item +Other keyboard character events cannot fit in a string. This includes +keyboard events in the range of 128 to 255. +@end itemize + + Functions such as @code{read-key-sequence} that construct strings of +keyboard input characters follow these rules: they construct vectors +instead of strings, when the events won't fit in a string. + + When you use the read syntax @samp{\M-} in a string, it produces a +code in the range of 128 to 255---the same code that you get if you +modify the corresponding keyboard event to put it in the string. Thus, +meta events in strings work consistently regardless of how they get into +the strings. + + However, most programs would do well to avoid these issues by +following the recommendations at the beginning of this section. + +@node Reading Input +@section Reading Input +@cindex read input +@cindex keyboard input + + The editor command loop reads key sequences using the function +@code{read-key-sequence}, which uses @code{read-event}. These and other +functions for event input are also available for use in Lisp programs. +See also @code{momentary-string-display} in @ref{Temporary Displays}, +and @code{sit-for} in @ref{Waiting}. @xref{Terminal Input}, for +functions and variables for controlling terminal input modes and +debugging terminal input. + + For higher-level input facilities, see @ref{Minibuffers}. + +@menu +* Key Sequence Input:: How to read one key sequence. +* Reading One Event:: How to read just one event. +* Event Mod:: How Emacs modifies events as they are read. +* Invoking the Input Method:: How reading an event uses the input method. +* Quoted Character Input:: Asking the user to specify a character. +* Event Input Misc:: How to reread or throw away input events. +@end menu + +@node Key Sequence Input +@subsection Key Sequence Input +@cindex key sequence input + + The command loop reads input a key sequence at a time, by calling +@code{read-key-sequence}. Lisp programs can also call this function; +for example, @code{describe-key} uses it to read the key to describe. + +@defun read-key-sequence prompt &optional continue-echo dont-downcase-last switch-frame-ok command-loop +This function reads a key sequence and returns it as a string or +vector. It keeps reading events until it has accumulated a complete key +sequence; that is, enough to specify a non-prefix command using the +currently active keymaps. (Remember that a key sequence that starts +with a mouse event is read using the keymaps of the buffer in the +window that the mouse was in, not the current buffer.) + +If the events are all characters and all can fit in a string, then +@code{read-key-sequence} returns a string (@pxref{Strings of Events}). +Otherwise, it returns a vector, since a vector can hold all kinds of +events---characters, symbols, and lists. The elements of the string or +vector are the events in the key sequence. + +Reading a key sequence includes translating the events in various +ways. @xref{Translation Keymaps}. + +The argument @var{prompt} is either a string to be displayed in the +echo area as a prompt, or @code{nil}, meaning not to display a prompt. +The argument @var{continue-echo}, if non-@code{nil}, means to echo +this key as a continuation of the previous key. + +Normally any upper case event is converted to lower case if the +original event is undefined and the lower case equivalent is defined. +The argument @var{dont-downcase-last}, if non-@code{nil}, means do not +convert the last event to lower case. This is appropriate for reading +a key sequence to be defined. + +The argument @var{switch-frame-ok}, if non-@code{nil}, means that this +function should process a @code{switch-frame} event if the user +switches frames before typing anything. If the user switches frames +in the middle of a key sequence, or at the start of the sequence but +@var{switch-frame-ok} is @code{nil}, then the event will be put off +until after the current key sequence. + +The argument @var{command-loop}, if non-@code{nil}, means that this +key sequence is being read by something that will read commands one +after another. It should be @code{nil} if the caller will read just +one key sequence. + +In the following example, Emacs displays the prompt @samp{?} in the +echo area, and then the user types @kbd{C-x C-f}. + +@example +(read-key-sequence "?") + +@group +---------- Echo Area ---------- +?@kbd{C-x C-f} +---------- Echo Area ---------- + + @result{} "^X^F" +@end group +@end example + +The function @code{read-key-sequence} suppresses quitting: @kbd{C-g} +typed while reading with this function works like any other character, +and does not set @code{quit-flag}. @xref{Quitting}. +@end defun + +@defun read-key-sequence-vector prompt &optional continue-echo dont-downcase-last switch-frame-ok command-loop +This is like @code{read-key-sequence} except that it always +returns the key sequence as a vector, never as a string. +@xref{Strings of Events}. +@end defun + +@cindex upper case key sequence +@cindex downcasing in @code{lookup-key} +If an input character is upper-case (or has the shift modifier) and +has no key binding, but its lower-case equivalent has one, then +@code{read-key-sequence} converts the character to lower case. Note +that @code{lookup-key} does not perform case conversion in this way. + +The function @code{read-key-sequence} also transforms some mouse events. +It converts unbound drag events into click events, and discards unbound +button-down events entirely. It also reshuffles focus events and +miscellaneous window events so that they never appear in a key sequence +with any other events. + +@cindex @code{header-line} prefix key +@cindex @code{mode-line} prefix key +@cindex @code{vertical-line} prefix key +@cindex @code{horizontal-scroll-bar} prefix key +@cindex @code{vertical-scroll-bar} prefix key +@cindex @code{menu-bar} prefix key +@cindex mouse events, in special parts of frame +When mouse events occur in special parts of a window, such as a mode +line or a scroll bar, the event type shows nothing special---it is the +same symbol that would normally represent that combination of mouse +button and modifier keys. The information about the window part is kept +elsewhere in the event---in the coordinates. But +@code{read-key-sequence} translates this information into imaginary +``prefix keys,'' all of which are symbols: @code{header-line}, +@code{horizontal-scroll-bar}, @code{menu-bar}, @code{mode-line}, +@code{vertical-line}, and @code{vertical-scroll-bar}. You can define +meanings for mouse clicks in special window parts by defining key +sequences using these imaginary prefix keys. + +For example, if you call @code{read-key-sequence} and then click the +mouse on the window's mode line, you get two events, like this: + +@example +(read-key-sequence "Click on the mode line: ") + @result{} [mode-line + (mouse-1 + (# mode-line + (40 . 63) 5959987))] +@end example + +@defvar num-input-keys +@c Emacs 19 feature +This variable's value is the number of key sequences processed so far in +this Emacs session. This includes key sequences read from the terminal +and key sequences read from keyboard macros being executed. +@end defvar + +@node Reading One Event +@subsection Reading One Event +@cindex reading a single event +@cindex event, reading only one + + The lowest level functions for command input are those that read a +single event. + +None of the three functions below suppresses quitting. + +@defun read-event &optional prompt inherit-input-method seconds +This function reads and returns the next event of command input, waiting +if necessary until an event is available. Events can come directly from +the user or from a keyboard macro. + +If the optional argument @var{prompt} is non-@code{nil}, it should be a +string to display in the echo area as a prompt. Otherwise, +@code{read-event} does not display any message to indicate it is waiting +for input; instead, it prompts by echoing: it displays descriptions of +the events that led to or were read by the current command. @xref{The +Echo Area}. + +If @var{inherit-input-method} is non-@code{nil}, then the current input +method (if any) is employed to make it possible to enter a +non-@acronym{ASCII} character. Otherwise, input method handling is disabled +for reading this event. + +If @code{cursor-in-echo-area} is non-@code{nil}, then @code{read-event} +moves the cursor temporarily to the echo area, to the end of any message +displayed there. Otherwise @code{read-event} does not move the cursor. + +If @var{seconds} is non-@code{nil}, it should be a number specifying +the maximum time to wait for input, in seconds. If no input arrives +within that time, @code{read-event} stops waiting and returns +@code{nil}. A floating-point value for @var{seconds} means to wait +for a fractional number of seconds. Some systems support only a whole +number of seconds; on these systems, @var{seconds} is rounded down. +If @var{seconds} is @code{nil}, @code{read-event} waits as long as +necessary for input to arrive. + +If @var{seconds} is @code{nil}, Emacs is considered idle while waiting +for user input to arrive. Idle timers---those created with +@code{run-with-idle-timer} (@pxref{Idle Timers})---can run during this +period. However, if @var{seconds} is non-@code{nil}, the state of +idleness remains unchanged. If Emacs is non-idle when +@code{read-event} is called, it remains non-idle throughout the +operation of @code{read-event}; if Emacs is idle (which can happen if +the call happens inside an idle timer), it remains idle. + +If @code{read-event} gets an event that is defined as a help character, +then in some cases @code{read-event} processes the event directly without +returning. @xref{Help Functions}. Certain other events, called +@dfn{special events}, are also processed directly within +@code{read-event} (@pxref{Special Events}). + +Here is what happens if you call @code{read-event} and then press the +right-arrow function key: + +@example +@group +(read-event) + @result{} right +@end group +@end example +@end defun + +@defun read-char &optional prompt inherit-input-method seconds +This function reads and returns a character of command input. If the +user generates an event which is not a character (i.e. a mouse click or +function key event), @code{read-char} signals an error. The arguments +work as in @code{read-event}. + +In the first example, the user types the character @kbd{1} (@acronym{ASCII} +code 49). The second example shows a keyboard macro definition that +calls @code{read-char} from the minibuffer using @code{eval-expression}. +@code{read-char} reads the keyboard macro's very next character, which +is @kbd{1}. Then @code{eval-expression} displays its return value in +the echo area. + +@example +@group +(read-char) + @result{} 49 +@end group + +@group +;; @r{We assume here you use @kbd{M-:} to evaluate this.} +(symbol-function 'foo) + @result{} "^[:(read-char)^M1" +@end group +@group +(execute-kbd-macro 'foo) + @print{} 49 + @result{} nil +@end group +@end example +@end defun + +@defun read-char-exclusive &optional prompt inherit-input-method seconds +This function reads and returns a character of command input. If the +user generates an event which is not a character, +@code{read-char-exclusive} ignores it and reads another event, until it +gets a character. The arguments work as in @code{read-event}. +@end defun + +@defvar num-nonmacro-input-events +This variable holds the total number of input events received so far +from the terminal---not counting those generated by keyboard macros. +@end defvar + +@node Event Mod +@subsection Modifying and Translating Input Events + + Emacs modifies every event it reads according to +@code{extra-keyboard-modifiers}, then translates it through +@code{keyboard-translate-table} (if applicable), before returning it +from @code{read-event}. + +@c Emacs 19 feature +@defvar extra-keyboard-modifiers +This variable lets Lisp programs ``press'' the modifier keys on the +keyboard. The value is a character. Only the modifiers of the +character matter. Each time the user types a keyboard key, it is +altered as if those modifier keys were held down. For instance, if +you bind @code{extra-keyboard-modifiers} to @code{?\C-\M-a}, then all +keyboard input characters typed during the scope of the binding will +have the control and meta modifiers applied to them. The character +@code{?\C-@@}, equivalent to the integer 0, does not count as a control +character for this purpose, but as a character with no modifiers. +Thus, setting @code{extra-keyboard-modifiers} to zero cancels any +modification. + +When using a window system, the program can ``press'' any of the +modifier keys in this way. Otherwise, only the @key{CTL} and @key{META} +keys can be virtually pressed. + +Note that this variable applies only to events that really come from +the keyboard, and has no effect on mouse events or any other events. +@end defvar + +@defvar keyboard-translate-table +This variable is the translate table for keyboard characters. It lets +you reshuffle the keys on the keyboard without changing any command +bindings. Its value is normally a char-table, or else @code{nil}. +(It can also be a string or vector, but this is considered obsolete.) + +If @code{keyboard-translate-table} is a char-table +(@pxref{Char-Tables}), then each character read from the keyboard is +looked up in this char-table. If the value found there is +non-@code{nil}, then it is used instead of the actual input character. + +Note that this translation is the first thing that happens to a +character after it is read from the terminal. Record-keeping features +such as @code{recent-keys} and dribble files record the characters after +translation. + +Note also that this translation is done before the characters are +supplied to input methods (@pxref{Input Methods}). Use +@code{translation-table-for-input} (@pxref{Translation of Characters}), +if you want to translate characters after input methods operate. +@end defvar + +@defun keyboard-translate from to +This function modifies @code{keyboard-translate-table} to translate +character code @var{from} into character code @var{to}. It creates +the keyboard translate table if necessary. +@end defun + + Here's an example of using the @code{keyboard-translate-table} to +make @kbd{C-x}, @kbd{C-c} and @kbd{C-v} perform the cut, copy and paste +operations: + +@example +(keyboard-translate ?\C-x 'control-x) +(keyboard-translate ?\C-c 'control-c) +(keyboard-translate ?\C-v 'control-v) +(global-set-key [control-x] 'kill-region) +(global-set-key [control-c] 'kill-ring-save) +(global-set-key [control-v] 'yank) +@end example + +@noindent +On a graphical terminal that supports extended @acronym{ASCII} input, +you can still get the standard Emacs meanings of one of those +characters by typing it with the shift key. That makes it a different +character as far as keyboard translation is concerned, but it has the +same usual meaning. + + @xref{Translation Keymaps}, for mechanisms that translate event sequences +at the level of @code{read-key-sequence}. + +@node Invoking the Input Method +@subsection Invoking the Input Method + + The event-reading functions invoke the current input method, if any +(@pxref{Input Methods}). If the value of @code{input-method-function} +is non-@code{nil}, it should be a function; when @code{read-event} reads +a printing character (including @key{SPC}) with no modifier bits, it +calls that function, passing the character as an argument. + +@defvar input-method-function +If this is non-@code{nil}, its value specifies the current input method +function. + +@strong{Warning:} don't bind this variable with @code{let}. It is often +buffer-local, and if you bind it around reading input (which is exactly +when you @emph{would} bind it), switching buffers asynchronously while +Emacs is waiting will cause the value to be restored in the wrong +buffer. +@end defvar + + The input method function should return a list of events which should +be used as input. (If the list is @code{nil}, that means there is no +input, so @code{read-event} waits for another event.) These events are +processed before the events in @code{unread-command-events} +(@pxref{Event Input Misc}). Events +returned by the input method function are not passed to the input method +function again, even if they are printing characters with no modifier +bits. + + If the input method function calls @code{read-event} or +@code{read-key-sequence}, it should bind @code{input-method-function} to +@code{nil} first, to prevent recursion. + + The input method function is not called when reading the second and +subsequent events of a key sequence. Thus, these characters are not +subject to input method processing. The input method function should +test the values of @code{overriding-local-map} and +@code{overriding-terminal-local-map}; if either of these variables is +non-@code{nil}, the input method should put its argument into a list and +return that list with no further processing. + +@node Quoted Character Input +@subsection Quoted Character Input +@cindex quoted character input + + You can use the function @code{read-quoted-char} to ask the user to +specify a character, and allow the user to specify a control or meta +character conveniently, either literally or as an octal character code. +The command @code{quoted-insert} uses this function. + +@defun read-quoted-char &optional prompt +@cindex octal character input +@cindex control characters, reading +@cindex nonprinting characters, reading +This function is like @code{read-char}, except that if the first +character read is an octal digit (0-7), it reads any number of octal +digits (but stopping if a non-octal digit is found), and returns the +character represented by that numeric character code. If the +character that terminates the sequence of octal digits is @key{RET}, +it is discarded. Any other terminating character is used as input +after this function returns. + +Quitting is suppressed when the first character is read, so that the +user can enter a @kbd{C-g}. @xref{Quitting}. + +If @var{prompt} is supplied, it specifies a string for prompting the +user. The prompt string is always displayed in the echo area, followed +by a single @samp{-}. + +In the following example, the user types in the octal number 177 (which +is 127 in decimal). + +@example +(read-quoted-char "What character") + +@group +---------- Echo Area ---------- +What character @kbd{1 7 7}- +---------- Echo Area ---------- + + @result{} 127 +@end group +@end example +@end defun + +@need 2000 +@node Event Input Misc +@subsection Miscellaneous Event Input Features + +This section describes how to ``peek ahead'' at events without using +them up, how to check for pending input, and how to discard pending +input. See also the function @code{read-passwd} (@pxref{Reading a +Password}). + +@defvar unread-command-events +@cindex next input +@cindex peeking at input +This variable holds a list of events waiting to be read as command +input. The events are used in the order they appear in the list, and +removed one by one as they are used. + +The variable is needed because in some cases a function reads an event +and then decides not to use it. Storing the event in this variable +causes it to be processed normally, by the command loop or by the +functions to read command input. + +@cindex prefix argument unreading +For example, the function that implements numeric prefix arguments reads +any number of digits. When it finds a non-digit event, it must unread +the event so that it can be read normally by the command loop. +Likewise, incremental search uses this feature to unread events with no +special meaning in a search, because these events should exit the search +and then execute normally. + +The reliable and easy way to extract events from a key sequence so as to +put them in @code{unread-command-events} is to use +@code{listify-key-sequence} (@pxref{Strings of Events}). + +Normally you add events to the front of this list, so that the events +most recently unread will be reread first. + +Events read from this list are not normally added to the current +command's key sequence (as returned by e.g. @code{this-command-keys}), +as the events will already have been added once as they were read for +the first time. An element of the form @code{(@code{t} . @var{event})} +forces @var{event} to be added to the current command's key sequence. +@end defvar + +@defun listify-key-sequence key +This function converts the string or vector @var{key} to a list of +individual events, which you can put in @code{unread-command-events}. +@end defun + +@defvar unread-command-char +This variable holds a character to be read as command input. +A value of -1 means ``empty.'' + +This variable is mostly obsolete now that you can use +@code{unread-command-events} instead; it exists only to support programs +written for Emacs versions 18 and earlier. +@end defvar + +@defun input-pending-p +@cindex waiting for command key input +This function determines whether any command input is currently +available to be read. It returns immediately, with value @code{t} if +there is available input, @code{nil} otherwise. On rare occasions it +may return @code{t} when no input is available. +@end defun + +@defvar last-input-event +@defvarx last-input-char +This variable records the last terminal input event read, whether +as part of a command or explicitly by a Lisp program. + +In the example below, the Lisp program reads the character @kbd{1}, +@acronym{ASCII} code 49. It becomes the value of @code{last-input-event}, +while @kbd{C-e} (we assume @kbd{C-x C-e} command is used to evaluate +this expression) remains the value of @code{last-command-event}. + +@example +@group +(progn (print (read-char)) + (print last-command-event) + last-input-event) + @print{} 49 + @print{} 5 + @result{} 49 +@end group +@end example + +The alias @code{last-input-char} exists for compatibility with +Emacs version 18. +@end defvar + +@defmac while-no-input body@dots{} +This construct runs the @var{body} forms and returns the value of the +last one---but only if no input arrives. If any input arrives during +the execution of the @var{body} forms, it aborts them (working much +like a quit). The @code{while-no-input} form returns @code{nil} if +aborted by a real quit, and returns @code{t} if aborted by arrival of +other input. + +If a part of @var{body} binds @code{inhibit-quit} to non-@code{nil}, +arrival of input during those parts won't cause an abort until +the end of that part. + +If you want to be able to distinguish all possible values computed +by @var{body} from both kinds of abort conditions, write the code +like this: + +@example +(while-no-input + (list + (progn . @var{body}))) +@end example +@end defmac + +@defun discard-input +@cindex flushing input +@cindex discarding input +@cindex keyboard macro, terminating +This function discards the contents of the terminal input buffer and +cancels any keyboard macro that might be in the process of definition. +It returns @code{nil}. + +In the following example, the user may type a number of characters right +after starting the evaluation of the form. After the @code{sleep-for} +finishes sleeping, @code{discard-input} discards any characters typed +during the sleep. + +@example +(progn (sleep-for 2) + (discard-input)) + @result{} nil +@end example +@end defun + +@node Special Events +@section Special Events + +@cindex special events +Special events are handled at a very low level---as soon as they are +read. The @code{read-event} function processes these events itself, and +never returns them. Instead, it keeps waiting for the first event +that is not special and returns that one. + +Events that are handled in this way do not echo, they are never grouped +into key sequences, and they never appear in the value of +@code{last-command-event} or @code{(this-command-keys)}. They do not +discard a numeric argument, they cannot be unread with +@code{unread-command-events}, they may not appear in a keyboard macro, +and they are not recorded in a keyboard macro while you are defining +one. + +These events do, however, appear in @code{last-input-event} immediately +after they are read, and this is the way for the event's definition to +find the actual event. + +The events types @code{iconify-frame}, @code{make-frame-visible}, +@code{delete-frame}, @code{drag-n-drop}, and user signals like +@code{sigusr1} are normally handled in this way. The keymap which +defines how to handle special events---and which events are special---is +in the variable @code{special-event-map} (@pxref{Active Keymaps}). + +@node Waiting +@section Waiting for Elapsed Time or Input +@cindex waiting + + The wait functions are designed to wait for a certain amount of time +to pass or until there is input. For example, you may wish to pause in +the middle of a computation to allow the user time to view the display. +@code{sit-for} pauses and updates the screen, and returns immediately if +input comes in, while @code{sleep-for} pauses without updating the +screen. + +@defun sit-for seconds &optional nodisp +This function performs redisplay (provided there is no pending input +from the user), then waits @var{seconds} seconds, or until input is +available. The usual purpose of @code{sit-for} is to give the user +time to read text that you display. The value is @code{t} if +@code{sit-for} waited the full time with no input arriving +(@pxref{Event Input Misc}). Otherwise, the value is @code{nil}. + +The argument @var{seconds} need not be an integer. If it is a floating +point number, @code{sit-for} waits for a fractional number of seconds. +Some systems support only a whole number of seconds; on these systems, +@var{seconds} is rounded down. + +The expression @code{(sit-for 0)} is equivalent to @code{(redisplay)}, +i.e. it requests a redisplay, without any delay, if there is no pending input. +@xref{Forcing Redisplay}. + +If @var{nodisp} is non-@code{nil}, then @code{sit-for} does not +redisplay, but it still returns as soon as input is available (or when +the timeout elapses). + +In batch mode (@pxref{Batch Mode}), @code{sit-for} cannot be +interrupted, even by input from the standard input descriptor. It is +thus equivalent to @code{sleep-for}, which is described below. + +It is also possible to call @code{sit-for} with three arguments, +as @code{(sit-for @var{seconds} @var{millisec} @var{nodisp})}, +but that is considered obsolete. +@end defun + +@defun sleep-for seconds &optional millisec +This function simply pauses for @var{seconds} seconds without updating +the display. It pays no attention to available input. It returns +@code{nil}. + +The argument @var{seconds} need not be an integer. If it is a floating +point number, @code{sleep-for} waits for a fractional number of seconds. +Some systems support only a whole number of seconds; on these systems, +@var{seconds} is rounded down. + +The optional argument @var{millisec} specifies an additional waiting +period measured in milliseconds. This adds to the period specified by +@var{seconds}. If the system doesn't support waiting fractions of a +second, you get an error if you specify nonzero @var{millisec}. + +Use @code{sleep-for} when you wish to guarantee a delay. +@end defun + + @xref{Time of Day}, for functions to get the current time. + +@node Quitting +@section Quitting +@cindex @kbd{C-g} +@cindex quitting +@cindex interrupt Lisp functions + + Typing @kbd{C-g} while a Lisp function is running causes Emacs to +@dfn{quit} whatever it is doing. This means that control returns to the +innermost active command loop. + + Typing @kbd{C-g} while the command loop is waiting for keyboard input +does not cause a quit; it acts as an ordinary input character. In the +simplest case, you cannot tell the difference, because @kbd{C-g} +normally runs the command @code{keyboard-quit}, whose effect is to quit. +However, when @kbd{C-g} follows a prefix key, they combine to form an +undefined key. The effect is to cancel the prefix key as well as any +prefix argument. + + In the minibuffer, @kbd{C-g} has a different definition: it aborts out +of the minibuffer. This means, in effect, that it exits the minibuffer +and then quits. (Simply quitting would return to the command loop +@emph{within} the minibuffer.) The reason why @kbd{C-g} does not quit +directly when the command reader is reading input is so that its meaning +can be redefined in the minibuffer in this way. @kbd{C-g} following a +prefix key is not redefined in the minibuffer, and it has its normal +effect of canceling the prefix key and prefix argument. This too +would not be possible if @kbd{C-g} always quit directly. + + When @kbd{C-g} does directly quit, it does so by setting the variable +@code{quit-flag} to @code{t}. Emacs checks this variable at appropriate +times and quits if it is not @code{nil}. Setting @code{quit-flag} +non-@code{nil} in any way thus causes a quit. + + At the level of C code, quitting cannot happen just anywhere; only at the +special places that check @code{quit-flag}. The reason for this is +that quitting at other places might leave an inconsistency in Emacs's +internal state. Because quitting is delayed until a safe place, quitting +cannot make Emacs crash. + + Certain functions such as @code{read-key-sequence} or +@code{read-quoted-char} prevent quitting entirely even though they wait +for input. Instead of quitting, @kbd{C-g} serves as the requested +input. In the case of @code{read-key-sequence}, this serves to bring +about the special behavior of @kbd{C-g} in the command loop. In the +case of @code{read-quoted-char}, this is so that @kbd{C-q} can be used +to quote a @kbd{C-g}. + +@cindex preventing quitting + You can prevent quitting for a portion of a Lisp function by binding +the variable @code{inhibit-quit} to a non-@code{nil} value. Then, +although @kbd{C-g} still sets @code{quit-flag} to @code{t} as usual, the +usual result of this---a quit---is prevented. Eventually, +@code{inhibit-quit} will become @code{nil} again, such as when its +binding is unwound at the end of a @code{let} form. At that time, if +@code{quit-flag} is still non-@code{nil}, the requested quit happens +immediately. This behavior is ideal when you wish to make sure that +quitting does not happen within a ``critical section'' of the program. + +@cindex @code{read-quoted-char} quitting + In some functions (such as @code{read-quoted-char}), @kbd{C-g} is +handled in a special way that does not involve quitting. This is done +by reading the input with @code{inhibit-quit} bound to @code{t}, and +setting @code{quit-flag} to @code{nil} before @code{inhibit-quit} +becomes @code{nil} again. This excerpt from the definition of +@code{read-quoted-char} shows how this is done; it also shows that +normal quitting is permitted after the first character of input. + +@example +(defun read-quoted-char (&optional prompt) + "@dots{}@var{documentation}@dots{}" + (let ((message-log-max nil) done (first t) (code 0) char) + (while (not done) + (let ((inhibit-quit first) + @dots{}) + (and prompt (message "%s-" prompt)) + (setq char (read-event)) + (if inhibit-quit (setq quit-flag nil))) + @r{@dots{}set the variable @code{code}@dots{}}) + code)) +@end example + +@defvar quit-flag +If this variable is non-@code{nil}, then Emacs quits immediately, unless +@code{inhibit-quit} is non-@code{nil}. Typing @kbd{C-g} ordinarily sets +@code{quit-flag} non-@code{nil}, regardless of @code{inhibit-quit}. +@end defvar + +@defvar inhibit-quit +This variable determines whether Emacs should quit when @code{quit-flag} +is set to a value other than @code{nil}. If @code{inhibit-quit} is +non-@code{nil}, then @code{quit-flag} has no special effect. +@end defvar + +@defmac with-local-quit body@dots{} +This macro executes @var{body} forms in sequence, but allows quitting, at +least locally, within @var{body} even if @code{inhibit-quit} was +non-@code{nil} outside this construct. It returns the value of the +last form in @var{body}, unless exited by quitting, in which case +it returns @code{nil}. + +If @code{inhibit-quit} is @code{nil} on entry to @code{with-local-quit}, +it only executes the @var{body}, and setting @code{quit-flag} causes +a normal quit. However, if @code{inhibit-quit} is non-@code{nil} so +that ordinary quitting is delayed, a non-@code{nil} @code{quit-flag} +triggers a special kind of local quit. This ends the execution of +@var{body} and exits the @code{with-local-quit} body with +@code{quit-flag} still non-@code{nil}, so that another (ordinary) quit +will happen as soon as that is allowed. If @code{quit-flag} is +already non-@code{nil} at the beginning of @var{body}, the local quit +happens immediately and the body doesn't execute at all. + +This macro is mainly useful in functions that can be called from +timers, process filters, process sentinels, @code{pre-command-hook}, +@code{post-command-hook}, and other places where @code{inhibit-quit} is +normally bound to @code{t}. +@end defmac + +@deffn Command keyboard-quit +This function signals the @code{quit} condition with @code{(signal 'quit +nil)}. This is the same thing that quitting does. (See @code{signal} +in @ref{Errors}.) +@end deffn + + You can specify a character other than @kbd{C-g} to use for quitting. +See the function @code{set-input-mode} in @ref{Terminal Input}. + +@node Prefix Command Arguments +@section Prefix Command Arguments +@cindex prefix argument +@cindex raw prefix argument +@cindex numeric prefix argument + + Most Emacs commands can use a @dfn{prefix argument}, a number +specified before the command itself. (Don't confuse prefix arguments +with prefix keys.) The prefix argument is at all times represented by a +value, which may be @code{nil}, meaning there is currently no prefix +argument. Each command may use the prefix argument or ignore it. + + There are two representations of the prefix argument: @dfn{raw} and +@dfn{numeric}. The editor command loop uses the raw representation +internally, and so do the Lisp variables that store the information, but +commands can request either representation. + + Here are the possible values of a raw prefix argument: + +@itemize @bullet +@item +@code{nil}, meaning there is no prefix argument. Its numeric value is +1, but numerous commands make a distinction between @code{nil} and the +integer 1. + +@item +An integer, which stands for itself. + +@item +A list of one element, which is an integer. This form of prefix +argument results from one or a succession of @kbd{C-u}'s with no +digits. The numeric value is the integer in the list, but some +commands make a distinction between such a list and an integer alone. + +@item +The symbol @code{-}. This indicates that @kbd{M--} or @kbd{C-u -} was +typed, without following digits. The equivalent numeric value is +@minus{}1, but some commands make a distinction between the integer +@minus{}1 and the symbol @code{-}. +@end itemize + +We illustrate these possibilities by calling the following function with +various prefixes: + +@example +@group +(defun display-prefix (arg) + "Display the value of the raw prefix arg." + (interactive "P") + (message "%s" arg)) +@end group +@end example + +@noindent +Here are the results of calling @code{display-prefix} with various +raw prefix arguments: + +@example + M-x display-prefix @print{} nil + +C-u M-x display-prefix @print{} (4) + +C-u C-u M-x display-prefix @print{} (16) + +C-u 3 M-x display-prefix @print{} 3 + +M-3 M-x display-prefix @print{} 3 ; @r{(Same as @code{C-u 3}.)} + +C-u - M-x display-prefix @print{} - + +M-- M-x display-prefix @print{} - ; @r{(Same as @code{C-u -}.)} + +C-u - 7 M-x display-prefix @print{} -7 + +M-- 7 M-x display-prefix @print{} -7 ; @r{(Same as @code{C-u -7}.)} +@end example + + Emacs uses two variables to store the prefix argument: +@code{prefix-arg} and @code{current-prefix-arg}. Commands such as +@code{universal-argument} that set up prefix arguments for other +commands store them in @code{prefix-arg}. In contrast, +@code{current-prefix-arg} conveys the prefix argument to the current +command, so setting it has no effect on the prefix arguments for future +commands. + + Normally, commands specify which representation to use for the prefix +argument, either numeric or raw, in the @code{interactive} specification. +(@xref{Using Interactive}.) Alternatively, functions may look at the +value of the prefix argument directly in the variable +@code{current-prefix-arg}, but this is less clean. + +@defun prefix-numeric-value arg +This function returns the numeric meaning of a valid raw prefix argument +value, @var{arg}. The argument may be a symbol, a number, or a list. +If it is @code{nil}, the value 1 is returned; if it is @code{-}, the +value @minus{}1 is returned; if it is a number, that number is returned; +if it is a list, the @sc{car} of that list (which should be a number) is +returned. +@end defun + +@defvar current-prefix-arg +This variable holds the raw prefix argument for the @emph{current} +command. Commands may examine it directly, but the usual method for +accessing it is with @code{(interactive "P")}. +@end defvar + +@defvar prefix-arg +The value of this variable is the raw prefix argument for the +@emph{next} editing command. Commands such as @code{universal-argument} +that specify prefix arguments for the following command work by setting +this variable. +@end defvar + +@defvar last-prefix-arg +The raw prefix argument value used by the previous command. +@end defvar + + The following commands exist to set up prefix arguments for the +following command. Do not call them for any other reason. + +@deffn Command universal-argument +This command reads input and specifies a prefix argument for the +following command. Don't call this command yourself unless you know +what you are doing. +@end deffn + +@deffn Command digit-argument arg +This command adds to the prefix argument for the following command. The +argument @var{arg} is the raw prefix argument as it was before this +command; it is used to compute the updated prefix argument. Don't call +this command yourself unless you know what you are doing. +@end deffn + +@deffn Command negative-argument arg +This command adds to the numeric argument for the next command. The +argument @var{arg} is the raw prefix argument as it was before this +command; its value is negated to form the new prefix argument. Don't +call this command yourself unless you know what you are doing. +@end deffn + +@node Recursive Editing +@section Recursive Editing +@cindex recursive command loop +@cindex recursive editing level +@cindex command loop, recursive + + The Emacs command loop is entered automatically when Emacs starts up. +This top-level invocation of the command loop never exits; it keeps +running as long as Emacs does. Lisp programs can also invoke the +command loop. Since this makes more than one activation of the command +loop, we call it @dfn{recursive editing}. A recursive editing level has +the effect of suspending whatever command invoked it and permitting the +user to do arbitrary editing before resuming that command. + + The commands available during recursive editing are the same ones +available in the top-level editing loop and defined in the keymaps. +Only a few special commands exit the recursive editing level; the others +return to the recursive editing level when they finish. (The special +commands for exiting are always available, but they do nothing when +recursive editing is not in progress.) + + All command loops, including recursive ones, set up all-purpose error +handlers so that an error in a command run from the command loop will +not exit the loop. + +@cindex minibuffer input + Minibuffer input is a special kind of recursive editing. It has a few +special wrinkles, such as enabling display of the minibuffer and the +minibuffer window, but fewer than you might suppose. Certain keys +behave differently in the minibuffer, but that is only because of the +minibuffer's local map; if you switch windows, you get the usual Emacs +commands. + +@cindex @code{throw} example +@kindex exit +@cindex exit recursive editing +@cindex aborting + To invoke a recursive editing level, call the function +@code{recursive-edit}. This function contains the command loop; it also +contains a call to @code{catch} with tag @code{exit}, which makes it +possible to exit the recursive editing level by throwing to @code{exit} +(@pxref{Catch and Throw}). If you throw a value other than @code{t}, +then @code{recursive-edit} returns normally to the function that called +it. The command @kbd{C-M-c} (@code{exit-recursive-edit}) does this. +Throwing a @code{t} value causes @code{recursive-edit} to quit, so that +control returns to the command loop one level up. This is called +@dfn{aborting}, and is done by @kbd{C-]} (@code{abort-recursive-edit}). + + Most applications should not use recursive editing, except as part of +using the minibuffer. Usually it is more convenient for the user if you +change the major mode of the current buffer temporarily to a special +major mode, which should have a command to go back to the previous mode. +(The @kbd{e} command in Rmail uses this technique.) Or, if you wish to +give the user different text to edit ``recursively,'' create and select +a new buffer in a special mode. In this mode, define a command to +complete the processing and go back to the previous buffer. (The +@kbd{m} command in Rmail does this.) + + Recursive edits are useful in debugging. You can insert a call to +@code{debug} into a function definition as a sort of breakpoint, so that +you can look around when the function gets there. @code{debug} invokes +a recursive edit but also provides the other features of the debugger. + + Recursive editing levels are also used when you type @kbd{C-r} in +@code{query-replace} or use @kbd{C-x q} (@code{kbd-macro-query}). + +@defun recursive-edit +@cindex suspend evaluation +This function invokes the editor command loop. It is called +automatically by the initialization of Emacs, to let the user begin +editing. When called from a Lisp program, it enters a recursive editing +level. + +If the current buffer is not the same as the selected window's buffer, +@code{recursive-edit} saves and restores the current buffer. Otherwise, +if you switch buffers, the buffer you switched to is current after +@code{recursive-edit} returns. + +In the following example, the function @code{simple-rec} first +advances point one word, then enters a recursive edit, printing out a +message in the echo area. The user can then do any editing desired, and +then type @kbd{C-M-c} to exit and continue executing @code{simple-rec}. + +@example +(defun simple-rec () + (forward-word 1) + (message "Recursive edit in progress") + (recursive-edit) + (forward-word 1)) + @result{} simple-rec +(simple-rec) + @result{} nil +@end example +@end defun + +@deffn Command exit-recursive-edit +This function exits from the innermost recursive edit (including +minibuffer input). Its definition is effectively @code{(throw 'exit +nil)}. +@end deffn + +@deffn Command abort-recursive-edit +This function aborts the command that requested the innermost recursive +edit (including minibuffer input), by signaling @code{quit} +after exiting the recursive edit. Its definition is effectively +@code{(throw 'exit t)}. @xref{Quitting}. +@end deffn + +@deffn Command top-level +This function exits all recursive editing levels; it does not return a +value, as it jumps completely out of any computation directly back to +the main command loop. +@end deffn + +@defun recursion-depth +This function returns the current depth of recursive edits. When no +recursive edit is active, it returns 0. +@end defun + +@node Disabling Commands +@section Disabling Commands +@cindex disabled command + + @dfn{Disabling a command} marks the command as requiring user +confirmation before it can be executed. Disabling is used for commands +which might be confusing to beginning users, to prevent them from using +the commands by accident. + +@kindex disabled + The low-level mechanism for disabling a command is to put a +non-@code{nil} @code{disabled} property on the Lisp symbol for the +command. These properties are normally set up by the user's +init file (@pxref{Init File}) with Lisp expressions such as this: + +@example +(put 'upcase-region 'disabled t) +@end example + +@noindent +For a few commands, these properties are present by default (you can +remove them in your init file if you wish). + + If the value of the @code{disabled} property is a string, the message +saying the command is disabled includes that string. For example: + +@example +(put 'delete-region 'disabled + "Text deleted this way cannot be yanked back!\n") +@end example + + @xref{Disabling,,, emacs, The GNU Emacs Manual}, for the details on +what happens when a disabled command is invoked interactively. +Disabling a command has no effect on calling it as a function from Lisp +programs. + +@deffn Command enable-command command +Allow @var{command} (a symbol) to be executed without special +confirmation from now on, and alter the user's init file (@pxref{Init +File}) so that this will apply to future sessions. +@end deffn + +@deffn Command disable-command command +Require special confirmation to execute @var{command} from now on, and +alter the user's init file so that this will apply to future sessions. +@end deffn + +@defvar disabled-command-function +The value of this variable should be a function. When the user +invokes a disabled command interactively, this function is called +instead of the disabled command. It can use @code{this-command-keys} +to determine what the user typed to run the command, and thus find the +command itself. + +The value may also be @code{nil}. Then all commands work normally, +even disabled ones. + +By default, the value is a function that asks the user whether to +proceed. +@end defvar + +@node Command History +@section Command History +@cindex command history +@cindex complex command +@cindex history of commands + + The command loop keeps a history of the complex commands that have +been executed, to make it convenient to repeat these commands. A +@dfn{complex command} is one for which the interactive argument reading +uses the minibuffer. This includes any @kbd{M-x} command, any +@kbd{M-:} command, and any command whose @code{interactive} +specification reads an argument from the minibuffer. Explicit use of +the minibuffer during the execution of the command itself does not cause +the command to be considered complex. + +@defvar command-history +This variable's value is a list of recent complex commands, each +represented as a form to evaluate. It continues to accumulate all +complex commands for the duration of the editing session, but when it +reaches the maximum size (@pxref{Minibuffer History}), the oldest +elements are deleted as new ones are added. + +@example +@group +command-history +@result{} ((switch-to-buffer "chistory.texi") + (describe-key "^X^[") + (visit-tags-table "~/emacs/src/") + (find-tag "repeat-complex-command")) +@end group +@end example +@end defvar + + This history list is actually a special case of minibuffer history +(@pxref{Minibuffer History}), with one special twist: the elements are +expressions rather than strings. + + There are a number of commands devoted to the editing and recall of +previous commands. The commands @code{repeat-complex-command}, and +@code{list-command-history} are described in the user manual +(@pxref{Repetition,,, emacs, The GNU Emacs Manual}). Within the +minibuffer, the usual minibuffer history commands are available. + +@node Keyboard Macros +@section Keyboard Macros +@cindex keyboard macros + + A @dfn{keyboard macro} is a canned sequence of input events that can +be considered a command and made the definition of a key. The Lisp +representation of a keyboard macro is a string or vector containing the +events. Don't confuse keyboard macros with Lisp macros +(@pxref{Macros}). + +@defun execute-kbd-macro kbdmacro &optional count loopfunc +This function executes @var{kbdmacro} as a sequence of events. If +@var{kbdmacro} is a string or vector, then the events in it are executed +exactly as if they had been input by the user. The sequence is +@emph{not} expected to be a single key sequence; normally a keyboard +macro definition consists of several key sequences concatenated. + +If @var{kbdmacro} is a symbol, then its function definition is used in +place of @var{kbdmacro}. If that is another symbol, this process repeats. +Eventually the result should be a string or vector. If the result is +not a symbol, string, or vector, an error is signaled. + +The argument @var{count} is a repeat count; @var{kbdmacro} is executed that +many times. If @var{count} is omitted or @code{nil}, @var{kbdmacro} is +executed once. If it is 0, @var{kbdmacro} is executed over and over until it +encounters an error or a failing search. + +If @var{loopfunc} is non-@code{nil}, it is a function that is called, +without arguments, prior to each iteration of the macro. If +@var{loopfunc} returns @code{nil}, then this stops execution of the macro. + +@xref{Reading One Event}, for an example of using @code{execute-kbd-macro}. +@end defun + +@defvar executing-kbd-macro +This variable contains the string or vector that defines the keyboard +macro that is currently executing. It is @code{nil} if no macro is +currently executing. A command can test this variable so as to behave +differently when run from an executing macro. Do not set this variable +yourself. +@end defvar + +@defvar defining-kbd-macro +This variable is non-@code{nil} if and only if a keyboard macro is +being defined. A command can test this variable so as to behave +differently while a macro is being defined. The value is +@code{append} while appending to the definition of an existing macro. +The commands @code{start-kbd-macro}, @code{kmacro-start-macro} and +@code{end-kbd-macro} set this variable---do not set it yourself. + +The variable is always local to the current terminal and cannot be +buffer-local. @xref{Multiple Displays}. +@end defvar + +@defvar last-kbd-macro +This variable is the definition of the most recently defined keyboard +macro. Its value is a string or vector, or @code{nil}. + +The variable is always local to the current terminal and cannot be +buffer-local. @xref{Multiple Displays}. +@end defvar + +@defvar kbd-macro-termination-hook +This normal hook (@pxref{Standard Hooks}) is run when a keyboard +macro terminates, regardless of what caused it to terminate (reaching +the macro end or an error which ended the macro prematurely). +@end defvar + +@ignore + arch-tag: e34944ad-7d5c-4980-be00-36a5fe54d4b1 +@end ignore diff --cc doc/lispref/display.texi index 6e85bb3f3ec,00000000000..90d94dbe6b3 mode 100644,000000..100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@@ -1,5450 -1,0 +1,5456 @@@ +@c -*-texinfo-*- +@c This is part of the GNU Emacs Lisp Reference Manual. +@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, +@c 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See the file elisp.texi for copying conditions. +@setfilename ../../info/display +@node Display, System Interface, Processes, Top +@chapter Emacs Display + + This chapter describes a number of features related to the display +that Emacs presents to the user. + +@menu +* Refresh Screen:: Clearing the screen and redrawing everything on it. +* Forcing Redisplay:: Forcing redisplay. +* Truncation:: Folding or wrapping long text lines. +* The Echo Area:: Displaying messages at the bottom of the screen. +* Warnings:: Displaying warning messages for the user. +* Invisible Text:: Hiding part of the buffer text. +* Selective Display:: Hiding part of the buffer text (the old way). +* Temporary Displays:: Displays that go away automatically. +* Overlays:: Use overlays to highlight parts of the buffer. +* Width:: How wide a character or string is on the screen. +* Line Height:: Controlling the height of lines. +* Faces:: A face defines a graphics style for text characters: + font, colors, etc. +* Fringes:: Controlling window fringes. +* Scroll Bars:: Controlling vertical scroll bars. +* Display Property:: Enabling special display features. +* Images:: Displaying images in Emacs buffers. +* Buttons:: Adding clickable buttons to Emacs buffers. +* Abstract Display:: Emacs' Widget for Object Collections. +* Blinking:: How Emacs shows the matching open parenthesis. +* Usual Display:: The usual conventions for displaying nonprinting chars. +* Display Tables:: How to specify other conventions. +* Beeping:: Audible signal to the user. +* Window Systems:: Which window system is being used. +@end menu + +@node Refresh Screen +@section Refreshing the Screen + + The function @code{redraw-frame} clears and redisplays the entire +contents of a given frame (@pxref{Frames}). This is useful if the +screen is corrupted. + +@c Emacs 19 feature +@defun redraw-frame frame +This function clears and redisplays frame @var{frame}. +@end defun + + Even more powerful is @code{redraw-display}: + +@deffn Command redraw-display +This function clears and redisplays all visible frames. +@end deffn + + This function calls for redisplay of certain windows, the next time +redisplay is done, but does not clear them first. + +@defun force-window-update &optional object +This function forces some or all windows to be updated on next redisplay. +If @var{object} is a window, it forces redisplay of that window. If +@var{object} is a buffer or buffer name, it forces redisplay of all +windows displaying that buffer. If @var{object} is @code{nil} (or +omitted), it forces redisplay of all windows. +@end defun + + Processing user input takes absolute priority over redisplay. If you +call these functions when input is available, they do nothing +immediately, but a full redisplay does happen eventually---after all the +input has been processed. + + Normally, suspending and resuming Emacs also refreshes the screen. +Some terminal emulators record separate contents for display-oriented +programs such as Emacs and for ordinary sequential display. If you are +using such a terminal, you might want to inhibit the redisplay on +resumption. + +@defvar no-redraw-on-reenter +@cindex suspend (cf. @code{no-redraw-on-reenter}) +@cindex resume (cf. @code{no-redraw-on-reenter}) +This variable controls whether Emacs redraws the entire screen after it +has been suspended and resumed. Non-@code{nil} means there is no need +to redraw, @code{nil} means redrawing is needed. The default is @code{nil}. +@end defvar + +@node Forcing Redisplay +@section Forcing Redisplay +@cindex forcing redisplay + + Emacs redisplay normally stops if input arrives, and does not happen +at all if input is available before it starts. Most of the time, this +is exactly what you want. However, you can prevent preemption by +binding @code{redisplay-dont-pause} to a non-@code{nil} value. + +@defvar redisplay-preemption-period +This variable specifies how many seconds Emacs waits between checks +for new input during redisplay. (The default is 0.1 seconds.) If +input has arrived when Emacs checks, it pre-empts redisplay and +processes the available input before trying again to redisplay. + +If this variable is @code{nil}, Emacs does not check for input during +redisplay, and redisplay cannot be preempted by input. + +This variable is only obeyed on graphical terminals. For +text terminals, see @ref{Terminal Output}. +@end defvar + +@defvar redisplay-dont-pause +If this variable is non-@code{nil}, pending input does not +prevent or halt redisplay; redisplay occurs, and finishes, +regardless of whether input is available. +@end defvar + +@defun redisplay &optional force +This function performs an immediate redisplay provided there are no +pending input events. This is equivalent to @code{(sit-for 0)}. + +If the optional argument @var{force} is non-@code{nil}, it forces an +immediate and complete redisplay even if input is available. + +Returns @code{t} if redisplay was performed, or @code{nil} otherwise. +@end defun + +@node Truncation +@section Truncation +@cindex line wrapping +@cindex line truncation +@cindex continuation lines +@cindex @samp{$} in display +@cindex @samp{\} in display + + When a line of text extends beyond the right edge of a window, Emacs +can @dfn{continue} the line (make it ``wrap'' to the next screen +line), or @dfn{truncate} the line (limit it to one screen line). The +additional screen lines used to display a long text line are called +@dfn{continuation} lines. Continuation is not the same as filling; +continuation happens on the screen only, not in the buffer contents, +and it breaks a line precisely at the right margin, not at a word +boundary. @xref{Filling}. + + On a graphical display, tiny arrow images in the window fringes +indicate truncated and continued lines (@pxref{Fringes}). On a text +terminal, a @samp{$} in the rightmost column of the window indicates +truncation; a @samp{\} on the rightmost column indicates a line that +``wraps.'' (The display table can specify alternate characters to use +for this; @pxref{Display Tables}). + +@defopt truncate-lines +This buffer-local variable controls how Emacs displays lines that extend +beyond the right edge of the window. The default is @code{nil}, which +specifies continuation. If the value is non-@code{nil}, then these +lines are truncated. + +If the variable @code{truncate-partial-width-windows} is non-@code{nil}, +then truncation is always used for side-by-side windows (within one +frame) regardless of the value of @code{truncate-lines}. +@end defopt + +@defopt default-truncate-lines +This variable is the default value for @code{truncate-lines}, for +buffers that do not have buffer-local values for it. +@end defopt + +@defopt truncate-partial-width-windows +This variable controls display of lines that extend beyond the right +edge of the window, in side-by-side windows (@pxref{Splitting Windows}). +If it is non-@code{nil}, these lines are truncated; otherwise, +@code{truncate-lines} says what to do with them. +@end defopt + + When horizontal scrolling (@pxref{Horizontal Scrolling}) is in use in +a window, that forces truncation. + + If your buffer contains @emph{very} long lines, and you use +continuation to display them, just thinking about them can make Emacs +redisplay slow. The column computation and indentation functions also +become slow. Then you might find it advisable to set +@code{cache-long-line-scans} to @code{t}. + +@defvar cache-long-line-scans +If this variable is non-@code{nil}, various indentation and motion +functions, and Emacs redisplay, cache the results of scanning the +buffer, and consult the cache to avoid rescanning regions of the buffer +unless they are modified. + +Turning on the cache slows down processing of short lines somewhat. + +This variable is automatically buffer-local in every buffer. +@end defvar + +@node The Echo Area +@section The Echo Area +@cindex error display +@cindex echo area + + The @dfn{echo area} is used for displaying error messages +(@pxref{Errors}), for messages made with the @code{message} primitive, +and for echoing keystrokes. It is not the same as the minibuffer, +despite the fact that the minibuffer appears (when active) in the same +place on the screen as the echo area. The @cite{GNU Emacs Manual} +specifies the rules for resolving conflicts between the echo area and +the minibuffer for use of that screen space (@pxref{Minibuffer,, The +Minibuffer, emacs, The GNU Emacs Manual}). + + You can write output in the echo area by using the Lisp printing +functions with @code{t} as the stream (@pxref{Output Functions}), or +explicitly. + +@menu +* Displaying Messages:: Explicitly displaying text in the echo area. +* Progress:: Informing user about progress of a long operation. +* Logging Messages:: Echo area messages are logged for the user. +* Echo Area Customization:: Controlling the echo area. +@end menu + +@node Displaying Messages +@subsection Displaying Messages in the Echo Area +@cindex display message in echo area + + This section describes the functions for explicitly producing echo +area messages. Many other Emacs features display messages there, too. + +@defun message format-string &rest arguments +This function displays a message in the echo area. The argument +@var{format-string} is similar to a C language @code{printf} format +string. See @code{format} in @ref{Formatting Strings}, for the details +on the conversion specifications. @code{message} returns the +constructed string. + +In batch mode, @code{message} prints the message text on the standard +error stream, followed by a newline. + +If @var{format-string}, or strings among the @var{arguments}, have +@code{face} text properties, these affect the way the message is displayed. + +@c Emacs 19 feature +If @var{format-string} is @code{nil} or the empty string, +@code{message} clears the echo area; if the echo area has been +expanded automatically, this brings it back to its normal size. +If the minibuffer is active, this brings the minibuffer contents back +onto the screen immediately. + +@example +@group +(message "Minibuffer depth is %d." + (minibuffer-depth)) + @print{} Minibuffer depth is 0. +@result{} "Minibuffer depth is 0." +@end group + +@group +---------- Echo Area ---------- +Minibuffer depth is 0. +---------- Echo Area ---------- +@end group +@end example + +To automatically display a message in the echo area or in a pop-buffer, +depending on its size, use @code{display-message-or-buffer} (see below). +@end defun + +@defmac with-temp-message message &rest body +This construct displays a message in the echo area temporarily, during +the execution of @var{body}. It displays @var{message}, executes +@var{body}, then returns the value of the last body form while restoring +the previous echo area contents. +@end defmac + +@defun message-or-box format-string &rest arguments +This function displays a message like @code{message}, but may display it +in a dialog box instead of the echo area. If this function is called in +a command that was invoked using the mouse---more precisely, if +@code{last-nonmenu-event} (@pxref{Command Loop Info}) is either +@code{nil} or a list---then it uses a dialog box or pop-up menu to +display the message. Otherwise, it uses the echo area. (This is the +same criterion that @code{y-or-n-p} uses to make a similar decision; see +@ref{Yes-or-No Queries}.) + +You can force use of the mouse or of the echo area by binding +@code{last-nonmenu-event} to a suitable value around the call. +@end defun + +@defun message-box format-string &rest arguments +@anchor{message-box} +This function displays a message like @code{message}, but uses a dialog +box (or a pop-up menu) whenever that is possible. If it is impossible +to use a dialog box or pop-up menu, because the terminal does not +support them, then @code{message-box} uses the echo area, like +@code{message}. +@end defun + +@defun display-message-or-buffer message &optional buffer-name not-this-window frame +This function displays the message @var{message}, which may be either a +string or a buffer. If it is shorter than the maximum height of the +echo area, as defined by @code{max-mini-window-height}, it is displayed +in the echo area, using @code{message}. Otherwise, +@code{display-buffer} is used to show it in a pop-up buffer. + +Returns either the string shown in the echo area, or when a pop-up +buffer is used, the window used to display it. + +If @var{message} is a string, then the optional argument +@var{buffer-name} is the name of the buffer used to display it when a +pop-up buffer is used, defaulting to @samp{*Message*}. In the case +where @var{message} is a string and displayed in the echo area, it is +not specified whether the contents are inserted into the buffer anyway. + +The optional arguments @var{not-this-window} and @var{frame} are as for +@code{display-buffer}, and only used if a buffer is displayed. +@end defun + +@defun current-message +This function returns the message currently being displayed in the +echo area, or @code{nil} if there is none. +@end defun + +@node Progress +@subsection Reporting Operation Progress +@cindex progress reporting + + When an operation can take a while to finish, you should inform the +user about the progress it makes. This way the user can estimate +remaining time and clearly see that Emacs is busy working, not hung. + + Functions listed in this section provide simple and efficient way of +reporting operation progress. Here is a working example that does +nothing useful: + +@smallexample +(let ((progress-reporter + (make-progress-reporter "Collecting mana for Emacs..." + 0 500))) + (dotimes (k 500) + (sit-for 0.01) + (progress-reporter-update progress-reporter k)) + (progress-reporter-done progress-reporter)) +@end smallexample + +@defun make-progress-reporter message min-value max-value &optional current-value min-change min-time +This function creates and returns a @dfn{progress reporter}---an +object you will use as an argument for all other functions listed +here. The idea is to precompute as much data as possible to make +progress reporting very fast. + +When this progress reporter is subsequently used, it will display +@var{message} in the echo area, followed by progress percentage. +@var{message} is treated as a simple string. If you need it to depend +on a filename, for instance, use @code{format} before calling this +function. + +@var{min-value} and @var{max-value} arguments stand for starting and +final states of your operation. For instance, if you scan a buffer, +they should be the results of @code{point-min} and @code{point-max} +correspondingly. It is required that @var{max-value} is greater than +@var{min-value}. If you create progress reporter when some part of +the operation has already been completed, then specify +@var{current-value} argument. But normally you should omit it or set +it to @code{nil}---it will default to @var{min-value} then. + +Remaining arguments control the rate of echo area updates. Progress +reporter will wait for at least @var{min-change} more percents of the +operation to be completed before printing next message. +@var{min-time} specifies the minimum time in seconds to pass between +successive prints. It can be fractional. Depending on Emacs and +system capabilities, progress reporter may or may not respect this +last argument or do it with varying precision. Default value for +@var{min-change} is 1 (one percent), for @var{min-time}---0.2 +(seconds.) + +This function calls @code{progress-reporter-update}, so the first +message is printed immediately. +@end defun + +@defun progress-reporter-update reporter value +This function does the main work of reporting progress of your +operation. It displays the message of @var{reporter}, followed by +progress percentage determined by @var{value}. If percentage is zero, +or close enough according to the @var{min-change} and @var{min-time} +arguments, then it is omitted from the output. + +@var{reporter} must be the result of a call to +@code{make-progress-reporter}. @var{value} specifies the current +state of your operation and must be between @var{min-value} and +@var{max-value} (inclusive) as passed to +@code{make-progress-reporter}. For instance, if you scan a buffer, +then @var{value} should be the result of a call to @code{point}. + +This function respects @var{min-change} and @var{min-time} as passed +to @code{make-progress-reporter} and so does not output new messages +on every invocation. It is thus very fast and normally you should not +try to reduce the number of calls to it: resulting overhead will most +likely negate your effort. +@end defun + +@defun progress-reporter-force-update reporter value &optional new-message +This function is similar to @code{progress-reporter-update} except +that it prints a message in the echo area unconditionally. + +The first two arguments have the same meaning as for +@code{progress-reporter-update}. Optional @var{new-message} allows +you to change the message of the @var{reporter}. Since this functions +always updates the echo area, such a change will be immediately +presented to the user. +@end defun + +@defun progress-reporter-done reporter +This function should be called when the operation is finished. It +prints the message of @var{reporter} followed by word ``done'' in the +echo area. + +You should always call this function and not hope for +@code{progress-reporter-update} to print ``100%.'' Firstly, it may +never print it, there are many good reasons for this not to happen. +Secondly, ``done'' is more explicit. +@end defun + +@defmac dotimes-with-progress-reporter (var count [result]) message body@dots{} +This is a convenience macro that works the same way as @code{dotimes} +does, but also reports loop progress using the functions described +above. It allows you to save some typing. + +You can rewrite the example in the beginning of this node using +this macro this way: + +@example +(dotimes-with-progress-reporter + (k 500) + "Collecting some mana for Emacs..." + (sit-for 0.01)) +@end example +@end defmac + +@node Logging Messages +@subsection Logging Messages in @samp{*Messages*} +@cindex logging echo-area messages + + Almost all the messages displayed in the echo area are also recorded +in the @samp{*Messages*} buffer so that the user can refer back to +them. This includes all the messages that are output with +@code{message}. + +@defopt message-log-max +This variable specifies how many lines to keep in the @samp{*Messages*} +buffer. The value @code{t} means there is no limit on how many lines to +keep. The value @code{nil} disables message logging entirely. Here's +how to display a message and prevent it from being logged: + +@example +(let (message-log-max) + (message @dots{})) +@end example +@end defopt + + To make @samp{*Messages*} more convenient for the user, the logging +facility combines successive identical messages. It also combines +successive related messages for the sake of two cases: question +followed by answer, and a series of progress messages. + + A ``question followed by an answer'' means two messages like the +ones produced by @code{y-or-n-p}: the first is @samp{@var{question}}, +and the second is @samp{@var{question}...@var{answer}}. The first +message conveys no additional information beyond what's in the second, +so logging the second message discards the first from the log. + + A ``series of progress messages'' means successive messages like +those produced by @code{make-progress-reporter}. They have the form +@samp{@var{base}...@var{how-far}}, where @var{base} is the same each +time, while @var{how-far} varies. Logging each message in the series +discards the previous one, provided they are consecutive. + + The functions @code{make-progress-reporter} and @code{y-or-n-p} +don't have to do anything special to activate the message log +combination feature. It operates whenever two consecutive messages +are logged that share a common prefix ending in @samp{...}. + +@node Echo Area Customization +@subsection Echo Area Customization + + These variables control details of how the echo area works. + +@defvar cursor-in-echo-area +This variable controls where the cursor appears when a message is +displayed in the echo area. If it is non-@code{nil}, then the cursor +appears at the end of the message. Otherwise, the cursor appears at +point---not in the echo area at all. + +The value is normally @code{nil}; Lisp programs bind it to @code{t} +for brief periods of time. +@end defvar + +@defvar echo-area-clear-hook +This normal hook is run whenever the echo area is cleared---either by +@code{(message nil)} or for any other reason. +@end defvar + +@defvar echo-keystrokes +This variable determines how much time should elapse before command +characters echo. Its value must be an integer or floating point number, +which specifies the +number of seconds to wait before echoing. If the user types a prefix +key (such as @kbd{C-x}) and then delays this many seconds before +continuing, the prefix key is echoed in the echo area. (Once echoing +begins in a key sequence, all subsequent characters in the same key +sequence are echoed immediately.) + +If the value is zero, then command input is not echoed. +@end defvar + +@defvar message-truncate-lines +Normally, displaying a long message resizes the echo area to display +the entire message. But if the variable @code{message-truncate-lines} +is non-@code{nil}, the echo area does not resize, and the message is +truncated to fit it, as in Emacs 20 and before. +@end defvar + + The variable @code{max-mini-window-height}, which specifies the +maximum height for resizing minibuffer windows, also applies to the +echo area (which is really a special use of the minibuffer window. +@xref{Minibuffer Misc}. + +@node Warnings +@section Reporting Warnings +@cindex warnings + + @dfn{Warnings} are a facility for a program to inform the user of a +possible problem, but continue running. + +@menu +* Warning Basics:: Warnings concepts and functions to report them. +* Warning Variables:: Variables programs bind to customize their warnings. +* Warning Options:: Variables users set to control display of warnings. +@end menu + +@node Warning Basics +@subsection Warning Basics +@cindex severity level + + Every warning has a textual message, which explains the problem for +the user, and a @dfn{severity level} which is a symbol. Here are the +possible severity levels, in order of decreasing severity, and their +meanings: + +@table @code +@item :emergency +A problem that will seriously impair Emacs operation soon +if you do not attend to it promptly. +@item :error +A report of data or circumstances that are inherently wrong. +@item :warning +A report of data or circumstances that are not inherently wrong, but +raise suspicion of a possible problem. +@item :debug +A report of information that may be useful if you are debugging. +@end table + + When your program encounters invalid input data, it can either +signal a Lisp error by calling @code{error} or @code{signal} or report +a warning with severity @code{:error}. Signaling a Lisp error is the +easiest thing to do, but it means the program cannot continue +processing. If you want to take the trouble to implement a way to +continue processing despite the bad data, then reporting a warning of +severity @code{:error} is the right way to inform the user of the +problem. For instance, the Emacs Lisp byte compiler can report an +error that way and continue compiling other functions. (If the +program signals a Lisp error and then handles it with +@code{condition-case}, the user won't see the error message; it could +show the message to the user by reporting it as a warning.) + +@cindex warning type + Each warning has a @dfn{warning type} to classify it. The type is a +list of symbols. The first symbol should be the custom group that you +use for the program's user options. For example, byte compiler +warnings use the warning type @code{(bytecomp)}. You can also +subcategorize the warnings, if you wish, by using more symbols in the +list. + +@defun display-warning type message &optional level buffer-name +This function reports a warning, using @var{message} as the message +and @var{type} as the warning type. @var{level} should be the +severity level, with @code{:warning} being the default. + +@var{buffer-name}, if non-@code{nil}, specifies the name of the buffer +for logging the warning. By default, it is @samp{*Warnings*}. +@end defun + +@defun lwarn type level message &rest args +This function reports a warning using the value of @code{(format +@var{message} @var{args}...)} as the message. In other respects it is +equivalent to @code{display-warning}. +@end defun + +@defun warn message &rest args +This function reports a warning using the value of @code{(format +@var{message} @var{args}...)} as the message, @code{(emacs)} as the +type, and @code{:warning} as the severity level. It exists for +compatibility only; we recommend not using it, because you should +specify a specific warning type. +@end defun + +@node Warning Variables +@subsection Warning Variables + + Programs can customize how their warnings appear by binding +the variables described in this section. + +@defvar warning-levels +This list defines the meaning and severity order of the warning +severity levels. Each element defines one severity level, +and they are arranged in order of decreasing severity. + +Each element has the form @code{(@var{level} @var{string} +@var{function})}, where @var{level} is the severity level it defines. +@var{string} specifies the textual description of this level. +@var{string} should use @samp{%s} to specify where to put the warning +type information, or it can omit the @samp{%s} so as not to include +that information. + +The optional @var{function}, if non-@code{nil}, is a function to call +with no arguments, to get the user's attention. + +Normally you should not change the value of this variable. +@end defvar + +@defvar warning-prefix-function +If non-@code{nil}, the value is a function to generate prefix text for +warnings. Programs can bind the variable to a suitable function. +@code{display-warning} calls this function with the warnings buffer +current, and the function can insert text in it. That text becomes +the beginning of the warning message. + +The function is called with two arguments, the severity level and its +entry in @code{warning-levels}. It should return a list to use as the +entry (this value need not be an actual member of +@code{warning-levels}). By constructing this value, the function can +change the severity of the warning, or specify different handling for +a given severity level. + +If the variable's value is @code{nil} then there is no function +to call. +@end defvar + +@defvar warning-series +Programs can bind this variable to @code{t} to say that the next +warning should begin a series. When several warnings form a series, +that means to leave point on the first warning of the series, rather +than keep moving it for each warning so that it appears on the last one. +The series ends when the local binding is unbound and +@code{warning-series} becomes @code{nil} again. + +The value can also be a symbol with a function definition. That is +equivalent to @code{t}, except that the next warning will also call +the function with no arguments with the warnings buffer current. The +function can insert text which will serve as a header for the series +of warnings. + +Once a series has begun, the value is a marker which points to the +buffer position in the warnings buffer of the start of the series. + +The variable's normal value is @code{nil}, which means to handle +each warning separately. +@end defvar + +@defvar warning-fill-prefix +When this variable is non-@code{nil}, it specifies a fill prefix to +use for filling each warning's text. +@end defvar + +@defvar warning-type-format +This variable specifies the format for displaying the warning type +in the warning message. The result of formatting the type this way +gets included in the message under the control of the string in the +entry in @code{warning-levels}. The default value is @code{" (%s)"}. +If you bind it to @code{""} then the warning type won't appear at +all. +@end defvar + +@node Warning Options +@subsection Warning Options + + These variables are used by users to control what happens +when a Lisp program reports a warning. + +@defopt warning-minimum-level +This user option specifies the minimum severity level that should be +shown immediately to the user. The default is @code{:warning}, which +means to immediately display all warnings except @code{:debug} +warnings. +@end defopt + +@defopt warning-minimum-log-level +This user option specifies the minimum severity level that should be +logged in the warnings buffer. The default is @code{:warning}, which +means to log all warnings except @code{:debug} warnings. +@end defopt + +@defopt warning-suppress-types +This list specifies which warning types should not be displayed +immediately for the user. Each element of the list should be a list +of symbols. If its elements match the first elements in a warning +type, then that warning is not displayed immediately. +@end defopt + +@defopt warning-suppress-log-types +This list specifies which warning types should not be logged in the +warnings buffer. Each element of the list should be a list of +symbols. If it matches the first few elements in a warning type, then +that warning is not logged. +@end defopt + +@node Invisible Text +@section Invisible Text + +@cindex invisible text +You can make characters @dfn{invisible}, so that they do not appear on +the screen, with the @code{invisible} property. This can be either a +text property (@pxref{Text Properties}) or a property of an overlay +(@pxref{Overlays}). Cursor motion also partly ignores these +characters; if the command loop finds point within them, it moves +point to the other side of them. + +In the simplest case, any non-@code{nil} @code{invisible} property makes +a character invisible. This is the default case---if you don't alter +the default value of @code{buffer-invisibility-spec}, this is how the +@code{invisible} property works. You should normally use @code{t} +as the value of the @code{invisible} property if you don't plan +to set @code{buffer-invisibility-spec} yourself. + +More generally, you can use the variable @code{buffer-invisibility-spec} +to control which values of the @code{invisible} property make text +invisible. This permits you to classify the text into different subsets +in advance, by giving them different @code{invisible} values, and +subsequently make various subsets visible or invisible by changing the +value of @code{buffer-invisibility-spec}. + +Controlling visibility with @code{buffer-invisibility-spec} is +especially useful in a program to display the list of entries in a +database. It permits the implementation of convenient filtering +commands to view just a part of the entries in the database. Setting +this variable is very fast, much faster than scanning all the text in +the buffer looking for properties to change. + +@defvar buffer-invisibility-spec +This variable specifies which kinds of @code{invisible} properties +actually make a character invisible. Setting this variable makes it +buffer-local. + +@table @asis +@item @code{t} +A character is invisible if its @code{invisible} property is +non-@code{nil}. This is the default. + +@item a list +Each element of the list specifies a criterion for invisibility; if a +character's @code{invisible} property fits any one of these criteria, +the character is invisible. The list can have two kinds of elements: + +@table @code +@item @var{atom} +A character is invisible if its @code{invisible} property value +is @var{atom} or if it is a list with @var{atom} as a member. + +@item (@var{atom} . t) +A character is invisible if its @code{invisible} property value is +@var{atom} or if it is a list with @var{atom} as a member. Moreover, +a sequence of such characters displays as an ellipsis. +@end table +@end table +@end defvar + + Two functions are specifically provided for adding elements to +@code{buffer-invisibility-spec} and removing elements from it. + +@defun add-to-invisibility-spec element +This function adds the element @var{element} to +@code{buffer-invisibility-spec}. If @code{buffer-invisibility-spec} +was @code{t}, it changes to a list, @code{(t)}, so that text whose +@code{invisible} property is @code{t} remains invisible. +@end defun + +@defun remove-from-invisibility-spec element +This removes the element @var{element} from +@code{buffer-invisibility-spec}. This does nothing if @var{element} +is not in the list. +@end defun + + A convention for use of @code{buffer-invisibility-spec} is that a +major mode should use the mode's own name as an element of +@code{buffer-invisibility-spec} and as the value of the +@code{invisible} property: + +@example +;; @r{If you want to display an ellipsis:} +(add-to-invisibility-spec '(my-symbol . t)) +;; @r{If you don't want ellipsis:} +(add-to-invisibility-spec 'my-symbol) + +(overlay-put (make-overlay beginning end) + 'invisible 'my-symbol) + +;; @r{When done with the overlays:} +(remove-from-invisibility-spec '(my-symbol . t)) +;; @r{Or respectively:} +(remove-from-invisibility-spec 'my-symbol) +@end example + +@vindex line-move-ignore-invisible + Ordinarily, functions that operate on text or move point do not care +whether the text is invisible. The user-level line motion commands +explicitly ignore invisible newlines if +@code{line-move-ignore-invisible} is non-@code{nil} (the default), but +only because they are explicitly programmed to do so. + + However, if a command ends with point inside or immediately before +invisible text, the main editing loop moves point further forward or +further backward (in the same direction that the command already moved +it) until that condition is no longer true. Thus, if the command +moved point back into an invisible range, Emacs moves point back to +the beginning of that range, and then back one more character. If the +command moved point forward into an invisible range, Emacs moves point +forward up to the first visible character that follows the invisible +text. + + Incremental search can make invisible overlays visible temporarily +and/or permanently when a match includes invisible text. To enable +this, the overlay should have a non-@code{nil} +@code{isearch-open-invisible} property. The property value should be a +function to be called with the overlay as an argument. This function +should make the overlay visible permanently; it is used when the match +overlaps the overlay on exit from the search. + + During the search, such overlays are made temporarily visible by +temporarily modifying their invisible and intangible properties. If you +want this to be done differently for a certain overlay, give it an +@code{isearch-open-invisible-temporary} property which is a function. +The function is called with two arguments: the first is the overlay, and +the second is @code{nil} to make the overlay visible, or @code{t} to +make it invisible again. + +@node Selective Display +@section Selective Display +@c @cindex selective display Duplicates selective-display + + @dfn{Selective display} refers to a pair of related features for +hiding certain lines on the screen. + + The first variant, explicit selective display, is designed for use +in a Lisp program: it controls which lines are hidden by altering the +text. This kind of hiding in some ways resembles the effect of the +@code{invisible} property (@pxref{Invisible Text}), but the two +features are different and do not work the same way. + + In the second variant, the choice of lines to hide is made +automatically based on indentation. This variant is designed to be a +user-level feature. + + The way you control explicit selective display is by replacing a +newline (control-j) with a carriage return (control-m). The text that +was formerly a line following that newline is now hidden. Strictly +speaking, it is temporarily no longer a line at all, since only +newlines can separate lines; it is now part of the previous line. + + Selective display does not directly affect editing commands. For +example, @kbd{C-f} (@code{forward-char}) moves point unhesitatingly +into hidden text. However, the replacement of newline characters with +carriage return characters affects some editing commands. For +example, @code{next-line} skips hidden lines, since it searches only +for newlines. Modes that use selective display can also define +commands that take account of the newlines, or that control which +parts of the text are hidden. + + When you write a selectively displayed buffer into a file, all the +control-m's are output as newlines. This means that when you next read +in the file, it looks OK, with nothing hidden. The selective display +effect is seen only within Emacs. + +@defvar selective-display +This buffer-local variable enables selective display. This means that +lines, or portions of lines, may be made hidden. + +@itemize @bullet +@item +If the value of @code{selective-display} is @code{t}, then the character +control-m marks the start of hidden text; the control-m, and the rest +of the line following it, are not displayed. This is explicit selective +display. + +@item +If the value of @code{selective-display} is a positive integer, then +lines that start with more than that many columns of indentation are not +displayed. +@end itemize + +When some portion of a buffer is hidden, the vertical movement +commands operate as if that portion did not exist, allowing a single +@code{next-line} command to skip any number of hidden lines. +However, character movement commands (such as @code{forward-char}) do +not skip the hidden portion, and it is possible (if tricky) to insert +or delete text in an hidden portion. + +In the examples below, we show the @emph{display appearance} of the +buffer @code{foo}, which changes with the value of +@code{selective-display}. The @emph{contents} of the buffer do not +change. + +@example +@group +(setq selective-display nil) + @result{} nil + +---------- Buffer: foo ---------- +1 on this column + 2on this column + 3n this column + 3n this column + 2on this column +1 on this column +---------- Buffer: foo ---------- +@end group + +@group +(setq selective-display 2) + @result{} 2 + +---------- Buffer: foo ---------- +1 on this column + 2on this column + 2on this column +1 on this column +---------- Buffer: foo ---------- +@end group +@end example +@end defvar + +@defvar selective-display-ellipses +If this buffer-local variable is non-@code{nil}, then Emacs displays +@samp{@dots{}} at the end of a line that is followed by hidden text. +This example is a continuation of the previous one. + +@example +@group +(setq selective-display-ellipses t) + @result{} t + +---------- Buffer: foo ---------- +1 on this column + 2on this column ... + 2on this column +1 on this column +---------- Buffer: foo ---------- +@end group +@end example + +You can use a display table to substitute other text for the ellipsis +(@samp{@dots{}}). @xref{Display Tables}. +@end defvar + +@node Temporary Displays +@section Temporary Displays + + Temporary displays are used by Lisp programs to put output into a +buffer and then present it to the user for perusal rather than for +editing. Many help commands use this feature. + +@defspec with-output-to-temp-buffer buffer-name forms@dots{} +This function executes @var{forms} while arranging to insert any output +they print into the buffer named @var{buffer-name}, which is first +created if necessary, and put into Help mode. Finally, the buffer is +displayed in some window, but not selected. + +If the @var{forms} do not change the major mode in the output buffer, +so that it is still Help mode at the end of their execution, then +@code{with-output-to-temp-buffer} makes this buffer read-only at the +end, and also scans it for function and variable names to make them +into clickable cross-references. @xref{Docstring hyperlinks, , Tips +for Documentation Strings}, in particular the item on hyperlinks in +documentation strings, for more details. + +The string @var{buffer-name} specifies the temporary buffer, which +need not already exist. The argument must be a string, not a buffer. +The buffer is erased initially (with no questions asked), and it is +marked as unmodified after @code{with-output-to-temp-buffer} exits. + +@code{with-output-to-temp-buffer} binds @code{standard-output} to the +temporary buffer, then it evaluates the forms in @var{forms}. Output +using the Lisp output functions within @var{forms} goes by default to +that buffer (but screen display and messages in the echo area, although +they are ``output'' in the general sense of the word, are not affected). +@xref{Output Functions}. + +Several hooks are available for customizing the behavior +of this construct; they are listed below. + +The value of the last form in @var{forms} is returned. + +@example +@group +---------- Buffer: foo ---------- + This is the contents of foo. +---------- Buffer: foo ---------- +@end group + +@group +(with-output-to-temp-buffer "foo" + (print 20) + (print standard-output)) +@result{} # + +---------- Buffer: foo ---------- +20 + +# + +---------- Buffer: foo ---------- +@end group +@end example +@end defspec + +@defvar temp-buffer-show-function +If this variable is non-@code{nil}, @code{with-output-to-temp-buffer} +calls it as a function to do the job of displaying a help buffer. The +function gets one argument, which is the buffer it should display. + +It is a good idea for this function to run @code{temp-buffer-show-hook} +just as @code{with-output-to-temp-buffer} normally would, inside of +@code{save-selected-window} and with the chosen window and buffer +selected. +@end defvar + +@defvar temp-buffer-setup-hook +This normal hook is run by @code{with-output-to-temp-buffer} before +evaluating @var{body}. When the hook runs, the temporary buffer is +current. This hook is normally set up with a function to put the +buffer in Help mode. +@end defvar + +@defvar temp-buffer-show-hook +This normal hook is run by @code{with-output-to-temp-buffer} after +displaying the temporary buffer. When the hook runs, the temporary buffer +is current, and the window it was displayed in is selected. This hook +is normally set up with a function to make the buffer read only, and +find function names and variable names in it, provided the major mode +is Help mode. +@end defvar + +@defun momentary-string-display string position &optional char message +This function momentarily displays @var{string} in the current buffer at +@var{position}. It has no effect on the undo list or on the buffer's +modification status. + +The momentary display remains until the next input event. If the next +input event is @var{char}, @code{momentary-string-display} ignores it +and returns. Otherwise, that event remains buffered for subsequent use +as input. Thus, typing @var{char} will simply remove the string from +the display, while typing (say) @kbd{C-f} will remove the string from +the display and later (presumably) move point forward. The argument +@var{char} is a space by default. + +The return value of @code{momentary-string-display} is not meaningful. + +If the string @var{string} does not contain control characters, you can +do the same job in a more general way by creating (and then subsequently +deleting) an overlay with a @code{before-string} property. +@xref{Overlay Properties}. + +If @var{message} is non-@code{nil}, it is displayed in the echo area +while @var{string} is displayed in the buffer. If it is @code{nil}, a +default message says to type @var{char} to continue. + +In this example, point is initially located at the beginning of the +second line: + +@example +@group +---------- Buffer: foo ---------- +This is the contents of foo. +@point{}Second line. +---------- Buffer: foo ---------- +@end group + +@group +(momentary-string-display + "**** Important Message! ****" + (point) ?\r + "Type RET when done reading") +@result{} t +@end group + +@group +---------- Buffer: foo ---------- +This is the contents of foo. +**** Important Message! ****Second line. +---------- Buffer: foo ---------- + +---------- Echo Area ---------- +Type RET when done reading +---------- Echo Area ---------- +@end group +@end example +@end defun + +@node Overlays +@section Overlays +@cindex overlays + +You can use @dfn{overlays} to alter the appearance of a buffer's text on +the screen, for the sake of presentation features. An overlay is an +object that belongs to a particular buffer, and has a specified +beginning and end. It also has properties that you can examine and set; +these affect the display of the text within the overlay. + +An overlay uses markers to record its beginning and end; thus, +editing the text of the buffer adjusts the beginning and end of each +overlay so that it stays with the text. When you create the overlay, +you can specify whether text inserted at the beginning should be +inside the overlay or outside, and likewise for the end of the overlay. + +@menu +* Managing Overlays:: Creating and moving overlays. +* Overlay Properties:: How to read and set properties. + What properties do to the screen display. +* Finding Overlays:: Searching for overlays. +@end menu + +@node Managing Overlays +@subsection Managing Overlays + + This section describes the functions to create, delete and move +overlays, and to examine their contents. Overlay changes are not +recorded in the buffer's undo list, since the overlays are not +part of the buffer's contents. + +@defun overlayp object +This function returns @code{t} if @var{object} is an overlay. +@end defun + +@defun make-overlay start end &optional buffer front-advance rear-advance +This function creates and returns an overlay that belongs to +@var{buffer} and ranges from @var{start} to @var{end}. Both @var{start} +and @var{end} must specify buffer positions; they may be integers or +markers. If @var{buffer} is omitted, the overlay is created in the +current buffer. + +The arguments @var{front-advance} and @var{rear-advance} specify the +marker insertion type for the start of the overlay and for the end of +the overlay, respectively. @xref{Marker Insertion Types}. If they +are both @code{nil}, the default, then the overlay extends to include +any text inserted at the beginning, but not text inserted at the end. +If @var{front-advance} is non-@code{nil}, text inserted at the +beginning of the overlay is excluded from the overlay. If +@var{rear-advance} is non-@code{nil}, text inserted at the end of the +overlay is included in the overlay. +@end defun + +@defun overlay-start overlay +This function returns the position at which @var{overlay} starts, +as an integer. +@end defun + +@defun overlay-end overlay +This function returns the position at which @var{overlay} ends, +as an integer. +@end defun + +@defun overlay-buffer overlay +This function returns the buffer that @var{overlay} belongs to. It +returns @code{nil} if @var{overlay} has been deleted. +@end defun + +@defun delete-overlay overlay +This function deletes @var{overlay}. The overlay continues to exist as +a Lisp object, and its property list is unchanged, but it ceases to be +attached to the buffer it belonged to, and ceases to have any effect on +display. + +A deleted overlay is not permanently disconnected. You can give it a +position in a buffer again by calling @code{move-overlay}. +@end defun + +@defun move-overlay overlay start end &optional buffer +This function moves @var{overlay} to @var{buffer}, and places its bounds +at @var{start} and @var{end}. Both arguments @var{start} and @var{end} +must specify buffer positions; they may be integers or markers. + +If @var{buffer} is omitted, @var{overlay} stays in the same buffer it +was already associated with; if @var{overlay} was deleted, it goes into +the current buffer. + +The return value is @var{overlay}. + +This is the only valid way to change the endpoints of an overlay. Do +not try modifying the markers in the overlay by hand, as that fails to +update other vital data structures and can cause some overlays to be +``lost.'' +@end defun + +@defun remove-overlays &optional start end name value +This function removes all the overlays between @var{start} and +@var{end} whose property @var{name} has the value @var{value}. It can +move the endpoints of the overlays in the region, or split them. + +If @var{name} is omitted or @code{nil}, it means to delete all overlays in +the specified region. If @var{start} and/or @var{end} are omitted or +@code{nil}, that means the beginning and end of the buffer respectively. +Therefore, @code{(remove-overlays)} removes all the overlays in the +current buffer. +@end defun + + Here are some examples: + +@example +;; @r{Create an overlay.} +(setq foo (make-overlay 1 10)) + @result{} # +(overlay-start foo) + @result{} 1 +(overlay-end foo) + @result{} 10 +(overlay-buffer foo) + @result{} # +;; @r{Give it a property we can check later.} +(overlay-put foo 'happy t) + @result{} t +;; @r{Verify the property is present.} +(overlay-get foo 'happy) + @result{} t +;; @r{Move the overlay.} +(move-overlay foo 5 20) + @result{} # +(overlay-start foo) + @result{} 5 +(overlay-end foo) + @result{} 20 +;; @r{Delete the overlay.} +(delete-overlay foo) + @result{} nil +;; @r{Verify it is deleted.} +foo + @result{} # +;; @r{A deleted overlay has no position.} +(overlay-start foo) + @result{} nil +(overlay-end foo) + @result{} nil +(overlay-buffer foo) + @result{} nil +;; @r{Undelete the overlay.} +(move-overlay foo 1 20) + @result{} # +;; @r{Verify the results.} +(overlay-start foo) + @result{} 1 +(overlay-end foo) + @result{} 20 +(overlay-buffer foo) + @result{} # +;; @r{Moving and deleting the overlay does not change its properties.} +(overlay-get foo 'happy) + @result{} t +@end example + + Emacs stores the overlays of each buffer in two lists, divided +around an arbitrary ``center position.'' One list extends backwards +through the buffer from that center position, and the other extends +forwards from that center position. The center position can be anywhere +in the buffer. + +@defun overlay-recenter pos +This function recenters the overlays of the current buffer around +position @var{pos}. That makes overlay lookup faster for positions +near @var{pos}, but slower for positions far away from @var{pos}. +@end defun + + A loop that scans the buffer forwards, creating overlays, can run +faster if you do @code{(overlay-recenter (point-max))} first. + +@node Overlay Properties +@subsection Overlay Properties + + Overlay properties are like text properties in that the properties that +alter how a character is displayed can come from either source. But in +most respects they are different. @xref{Text Properties}, for comparison. + + Text properties are considered a part of the text; overlays and +their properties are specifically considered not to be part of the +text. Thus, copying text between various buffers and strings +preserves text properties, but does not try to preserve overlays. +Changing a buffer's text properties marks the buffer as modified, +while moving an overlay or changing its properties does not. Unlike +text property changes, overlay property changes are not recorded in +the buffer's undo list. + + Since more than one overlay can specify a property value for the +same character, Emacs lets you specify a priority value of each +overlay. You should not make assumptions about which overlay will +prevail when there is a conflict and they have the same priority. + + These functions read and set the properties of an overlay: + +@defun overlay-get overlay prop +This function returns the value of property @var{prop} recorded in +@var{overlay}, if any. If @var{overlay} does not record any value for +that property, but it does have a @code{category} property which is a +symbol, that symbol's @var{prop} property is used. Otherwise, the value +is @code{nil}. +@end defun + +@defun overlay-put overlay prop value +This function sets the value of property @var{prop} recorded in +@var{overlay} to @var{value}. It returns @var{value}. +@end defun + +@defun overlay-properties overlay +This returns a copy of the property list of @var{overlay}. +@end defun + + See also the function @code{get-char-property} which checks both +overlay properties and text properties for a given character. +@xref{Examining Properties}. + + Many overlay properties have special meanings; here is a table +of them: + +@table @code +@item priority +@kindex priority @r{(overlay property)} +This property's value (which should be a nonnegative integer number) +determines the priority of the overlay. No priority, or @code{nil}, +means zero. + +The priority matters when two or more overlays cover the same +character and both specify the same property; the one whose +@code{priority} value is larger overrides the other. For the +@code{face} property, the higher priority overlay's value does not +completely override the other value; instead, its face attributes +override the face attributes of the lower priority @code{face} +property. + +Currently, all overlays take priority over text properties. Please +avoid using negative priority values, as we have not yet decided just +what they should mean. + +@item window +@kindex window @r{(overlay property)} +If the @code{window} property is non-@code{nil}, then the overlay +applies only on that window. + +@item category +@kindex category @r{(overlay property)} +If an overlay has a @code{category} property, we call it the +@dfn{category} of the overlay. It should be a symbol. The properties +of the symbol serve as defaults for the properties of the overlay. + +@item face +@kindex face @r{(overlay property)} +This property controls the way text is displayed---for example, which +font and which colors. @xref{Faces}, for more information. + +In the simplest case, the value is a face name. It can also be a list; +then each element can be any of these possibilities: + +@itemize @bullet +@item +A face name (a symbol or string). + +@item +A property list of face attributes. This has the form (@var{keyword} +@var{value} @dots{}), where each @var{keyword} is a face attribute +name and @var{value} is a meaningful value for that attribute. With +this feature, you do not need to create a face each time you want to +specify a particular attribute for certain text. @xref{Face +Attributes}. + +@item +A cons cell, either of the form @code{(foreground-color . @var{color-name})} or +@code{(background-color . @var{color-name})}. These elements specify +just the foreground color or just the background color. + +@code{(foreground-color . @var{color-name})} has the same effect as +@code{(:foreground @var{color-name})}; likewise for the background. +@end itemize + +@item mouse-face +@kindex mouse-face @r{(overlay property)} +This property is used instead of @code{face} when the mouse is within +the range of the overlay. + +@item display +@kindex display @r{(overlay property)} +This property activates various features that change the +way text is displayed. For example, it can make text appear taller +or shorter, higher or lower, wider or narrower, or replaced with an image. +@xref{Display Property}. + +@item help-echo +@kindex help-echo @r{(overlay property)} +If an overlay has a @code{help-echo} property, then when you move the +mouse onto the text in the overlay, Emacs displays a help string in the +echo area, or in the tooltip window. For details see @ref{Text +help-echo}. + +@item modification-hooks +@kindex modification-hooks @r{(overlay property)} +This property's value is a list of functions to be called if any +character within the overlay is changed or if text is inserted strictly +within the overlay. + +The hook functions are called both before and after each change. +If the functions save the information they receive, and compare notes +between calls, they can determine exactly what change has been made +in the buffer text. + +When called before a change, each function receives four arguments: the +overlay, @code{nil}, and the beginning and end of the text range to be +modified. + +When called after a change, each function receives five arguments: the +overlay, @code{t}, the beginning and end of the text range just +modified, and the length of the pre-change text replaced by that range. +(For an insertion, the pre-change length is zero; for a deletion, that +length is the number of characters deleted, and the post-change +beginning and end are equal.) + +If these functions modify the buffer, they should bind +@code{inhibit-modification-hooks} to @code{t} around doing so, to +avoid confusing the internal mechanism that calls these hooks. + +Text properties also support the @code{modification-hooks} property, +but the details are somewhat different (@pxref{Special Properties}). + +@item insert-in-front-hooks +@kindex insert-in-front-hooks @r{(overlay property)} +This property's value is a list of functions to be called before and +after inserting text right at the beginning of the overlay. The calling +conventions are the same as for the @code{modification-hooks} functions. + +@item insert-behind-hooks +@kindex insert-behind-hooks @r{(overlay property)} +This property's value is a list of functions to be called before and +after inserting text right at the end of the overlay. The calling +conventions are the same as for the @code{modification-hooks} functions. + +@item invisible +@kindex invisible @r{(overlay property)} +The @code{invisible} property can make the text in the overlay +invisible, which means that it does not appear on the screen. +@xref{Invisible Text}, for details. + +@item intangible +@kindex intangible @r{(overlay property)} +The @code{intangible} property on an overlay works just like the +@code{intangible} text property. @xref{Special Properties}, for details. + +@item isearch-open-invisible +This property tells incremental search how to make an invisible overlay +visible, permanently, if the final match overlaps it. @xref{Invisible +Text}. + +@item isearch-open-invisible-temporary +This property tells incremental search how to make an invisible overlay +visible, temporarily, during the search. @xref{Invisible Text}. + +@item before-string +@kindex before-string @r{(overlay property)} +This property's value is a string to add to the display at the beginning +of the overlay. The string does not appear in the buffer in any +sense---only on the screen. + +@item after-string +@kindex after-string @r{(overlay property)} +This property's value is a string to add to the display at the end of +the overlay. The string does not appear in the buffer in any +sense---only on the screen. + +@item evaporate +@kindex evaporate @r{(overlay property)} +If this property is non-@code{nil}, the overlay is deleted automatically +if it becomes empty (i.e., if its length becomes zero). If you give +an empty overlay a non-@code{nil} @code{evaporate} property, that deletes +it immediately. + +@item local-map +@cindex keymap of character (and overlays) +@kindex local-map @r{(overlay property)} +If this property is non-@code{nil}, it specifies a keymap for a portion +of the text. The property's value replaces the buffer's local map, when +the character after point is within the overlay. @xref{Active Keymaps}. + +@item keymap +@kindex keymap @r{(overlay property)} +The @code{keymap} property is similar to @code{local-map} but overrides the +buffer's local map (and the map specified by the @code{local-map} +property) rather than replacing it. +@end table + +@node Finding Overlays +@subsection Searching for Overlays + +@defun overlays-at pos +This function returns a list of all the overlays that cover the +character at position @var{pos} in the current buffer. The list is in +no particular order. An overlay contains position @var{pos} if it +begins at or before @var{pos}, and ends after @var{pos}. + +To illustrate usage, here is a Lisp function that returns a list of the +overlays that specify property @var{prop} for the character at point: + +@smallexample +(defun find-overlays-specifying (prop) + (let ((overlays (overlays-at (point))) + found) + (while overlays + (let ((overlay (car overlays))) + (if (overlay-get overlay prop) + (setq found (cons overlay found)))) + (setq overlays (cdr overlays))) + found)) +@end smallexample +@end defun + +@defun overlays-in beg end +This function returns a list of the overlays that overlap the region +@var{beg} through @var{end}. ``Overlap'' means that at least one +character is contained within the overlay and also contained within the +specified region; however, empty overlays are included in the result if +they are located at @var{beg}, or strictly between @var{beg} and @var{end}. +@end defun + +@defun next-overlay-change pos +This function returns the buffer position of the next beginning or end +of an overlay, after @var{pos}. If there is none, it returns +@code{(point-max)}. +@end defun + +@defun previous-overlay-change pos +This function returns the buffer position of the previous beginning or +end of an overlay, before @var{pos}. If there is none, it returns +@code{(point-min)}. +@end defun + + As an example, here's a simplified (and inefficient) version of the +primitive function @code{next-single-char-property-change} +(@pxref{Property Search}). It searches forward from position +@var{pos} for the next position where the value of a given property +@code{prop}, as obtained from either overlays or text properties, +changes. + +@smallexample +(defun next-single-char-property-change (position prop) + (save-excursion + (goto-char position) + (let ((propval (get-char-property (point) prop))) + (while (and (not (eobp)) + (eq (get-char-property (point) prop) propval)) + (goto-char (min (next-overlay-change (point)) + (next-single-property-change (point) prop))))) + (point))) +@end smallexample + +@node Width +@section Width + +Since not all characters have the same width, these functions let you +check the width of a character. @xref{Primitive Indent}, and +@ref{Screen Lines}, for related functions. + +@defun char-width char +This function returns the width in columns of the character @var{char}, +if it were displayed in the current buffer and the selected window. +@end defun + +@defun string-width string +This function returns the width in columns of the string @var{string}, +if it were displayed in the current buffer and the selected window. +@end defun + +@defun truncate-string-to-width string width &optional start-column padding ellipsis +This function returns the part of @var{string} that fits within +@var{width} columns, as a new string. + +If @var{string} does not reach @var{width}, then the result ends where +@var{string} ends. If one multi-column character in @var{string} +extends across the column @var{width}, that character is not included in +the result. Thus, the result can fall short of @var{width} but cannot +go beyond it. + +The optional argument @var{start-column} specifies the starting column. +If this is non-@code{nil}, then the first @var{start-column} columns of +the string are omitted from the value. If one multi-column character in +@var{string} extends across the column @var{start-column}, that +character is not included. + +The optional argument @var{padding}, if non-@code{nil}, is a padding +character added at the beginning and end of the result string, to extend +it to exactly @var{width} columns. The padding character is used at the +end of the result if it falls short of @var{width}. It is also used at +the beginning of the result if one multi-column character in +@var{string} extends across the column @var{start-column}. + +If @var{ellipsis} is non-@code{nil}, it should be a string which will +replace the end of @var{str} (including any padding) if it extends +beyond @var{end-column}, unless the display width of @var{str} is +equal to or less than the display width of @var{ellipsis}. If +@var{ellipsis} is non-@code{nil} and not a string, it stands for +@code{"..."}. + +@example +(truncate-string-to-width "\tab\t" 12 4) + @result{} "ab" +(truncate-string-to-width "\tab\t" 12 4 ?\s) + @result{} " ab " +@end example +@end defun + +@node Line Height +@section Line Height +@cindex line height + + The total height of each display line consists of the height of the +contents of the line, plus optional additional vertical line spacing +above or below the display line. + + The height of the line contents is the maximum height of any +character or image on that display line, including the final newline +if there is one. (A display line that is continued doesn't include a +final newline.) That is the default line height, if you do nothing to +specify a greater height. (In the most common case, this equals the +height of the default frame font.) + + There are several ways to explicitly specify a larger line height, +either by specifying an absolute height for the display line, or by +specifying vertical space. However, no matter what you specify, the +actual line height can never be less than the default. + +@kindex line-height @r{(text property)} + A newline can have a @code{line-height} text or overlay property +that controls the total height of the display line ending in that +newline. + + If the property value is @code{t}, the newline character has no +effect on the displayed height of the line---the visible contents +alone determine the height. This is useful for tiling small images +(or image slices) without adding blank areas between the images. + + If the property value is a list of the form @code{(@var{height} +@var{total})}, that adds extra space @emph{below} the display line. +First Emacs uses @var{height} as a height spec to control extra space +@emph{above} the line; then it adds enough space @emph{below} the line +to bring the total line height up to @var{total}. In this case, the +other ways to specify the line spacing are ignored. + + Any other kind of property value is a height spec, which translates +into a number---the specified line height. There are several ways to +write a height spec; here's how each of them translates into a number: + +@table @code +@item @var{integer} +If the height spec is a positive integer, the height value is that integer. +@item @var{float} +If the height spec is a float, @var{float}, the numeric height value +is @var{float} times the frame's default line height. +@item (@var{face} . @var{ratio}) +If the height spec is a cons of the format shown, the numeric height +is @var{ratio} times the height of face @var{face}. @var{ratio} can +be any type of number, or @code{nil} which means a ratio of 1. +If @var{face} is @code{t}, it refers to the current face. +@item (nil . @var{ratio}) +If the height spec is a cons of the format shown, the numeric height +is @var{ratio} times the height of the contents of the line. +@end table + + Thus, any valid height spec determines the height in pixels, one way +or another. If the line contents' height is less than that, Emacs +adds extra vertical space above the line to achieve the specified +total height. + + If you don't specify the @code{line-height} property, the line's +height consists of the contents' height plus the line spacing. +There are several ways to specify the line spacing for different +parts of Emacs text. + +@vindex default-line-spacing + You can specify the line spacing for all lines in a frame with the +@code{line-spacing} frame parameter (@pxref{Layout Parameters}). +However, if the variable @code{default-line-spacing} is +non-@code{nil}, it overrides the frame's @code{line-spacing} +parameter. An integer value specifies the number of pixels put below +lines on graphical displays. A floating point number specifies the +spacing relative to the frame's default line height. + +@vindex line-spacing + You can specify the line spacing for all lines in a buffer via the +buffer-local @code{line-spacing} variable. An integer value specifies +the number of pixels put below lines on graphical displays. A floating +point number specifies the spacing relative to the default frame line +height. This overrides line spacings specified for the frame. + +@kindex line-spacing @r{(text property)} + Finally, a newline can have a @code{line-spacing} text or overlay +property that overrides the default frame line spacing and the buffer +local @code{line-spacing} variable, for the display line ending in +that newline. + + One way or another, these mechanisms specify a Lisp value for the +spacing of each line. The value is a height spec, and it translates +into a Lisp value as described above. However, in this case the +numeric height value specifies the line spacing, rather than the line +height. + +@node Faces +@section Faces +@cindex faces + + A @dfn{face} is a named collection of graphical attributes: font +family, foreground color, background color, optional underlining, and +many others. Faces are used in Emacs to control the style of display of +particular parts of the text or the frame. @xref{Standard Faces,,, +emacs, The GNU Emacs Manual}, for the list of faces Emacs normally +comes with. + +@cindex face id +Each face has its own @dfn{face number}, which distinguishes faces at +low levels within Emacs. However, for most purposes, you refer to +faces in Lisp programs by the symbols that name them. + +@defun facep object +This function returns @code{t} if @var{object} is a face name string +or symbol (or if it is a vector of the kind used internally to record +face data). It returns @code{nil} otherwise. +@end defun + +Each face name is meaningful for all frames, and by default it has the +same meaning in all frames. But you can arrange to give a particular +face name a special meaning in one frame if you wish. + +@menu +* Defining Faces:: How to define a face with @code{defface}. +* Face Attributes:: What is in a face? +* Attribute Functions:: Functions to examine and set face attributes. +* Displaying Faces:: How Emacs combines the faces specified for a character. +* Font Selection:: Finding the best available font for a face. +* Face Functions:: How to define and examine faces. +* Auto Faces:: Hook for automatic face assignment. +* Font Lookup:: Looking up the names of available fonts + and information about them. +* Fontsets:: A fontset is a collection of fonts + that handle a range of character sets. +@end menu + +@node Defining Faces +@subsection Defining Faces + + The way to define a new face is with @code{defface}. This creates a +kind of customization item (@pxref{Customization}) which the user can +customize using the Customization buffer (@pxref{Easy Customization,,, +emacs, The GNU Emacs Manual}). + +@defmac defface face spec doc [keyword value]@dots{} +This declares @var{face} as a customizable face that defaults +according to @var{spec}. You should not quote the symbol @var{face}, +and it should not end in @samp{-face} (that would be redundant). The +argument @var{doc} specifies the face documentation. The keywords you +can use in @code{defface} are the same as in @code{defgroup} and +@code{defcustom} (@pxref{Common Keywords}). + +When @code{defface} executes, it defines the face according to +@var{spec}, then uses any customizations that were read from the +init file (@pxref{Init File}) to override that specification. + +When you evaluate a @code{defface} form with @kbd{C-M-x} in Emacs +Lisp mode (@code{eval-defun}), a special feature of @code{eval-defun} +overrides any customizations of the face. This way, the face reflects +exactly what the @code{defface} says. + +The purpose of @var{spec} is to specify how the face should appear on +different kinds of terminals. It should be an alist whose elements +have the form @code{(@var{display} @var{atts})}. Each element's +@sc{car}, @var{display}, specifies a class of terminals. (The first +element, if its @sc{car} is @code{default}, is special---it specifies +defaults for the remaining elements). The element's @sc{cadr}, +@var{atts}, is a list of face attributes and their values; it +specifies what the face should look like on that kind of terminal. +The possible attributes are defined in the value of +@code{custom-face-attributes}. + +The @var{display} part of an element of @var{spec} determines which +frames the element matches. If more than one element of @var{spec} +matches a given frame, the first element that matches is the one used +for that frame. There are three possibilities for @var{display}: + +@table @asis +@item @code{default} +This element of @var{spec} doesn't match any frames; instead, it +specifies defaults that apply to all frames. This kind of element, if +used, must be the first element of @var{spec}. Each of the following +elements can override any or all of these defaults. + +@item @code{t} +This element of @var{spec} matches all frames. Therefore, any +subsequent elements of @var{spec} are never used. Normally +@code{t} is used in the last (or only) element of @var{spec}. + +@item a list +If @var{display} is a list, each element should have the form +@code{(@var{characteristic} @var{value}@dots{})}. Here +@var{characteristic} specifies a way of classifying frames, and the +@var{value}s are possible classifications which @var{display} should +apply to. Here are the possible values of @var{characteristic}: + +@table @code +@item type +The kind of window system the frame uses---either @code{graphic} (any +graphics-capable display), @code{x}, @code{pc} (for the MS-DOS console), +@code{w32} (for MS Windows 9X/NT/2K/XP), @code{mac} (for the Macintosh +display), or @code{tty} (a non-graphics-capable display). +@xref{Window Systems, window-system}. + +@item class +What kinds of colors the frame supports---either @code{color}, +@code{grayscale}, or @code{mono}. + +@item background +The kind of background---either @code{light} or @code{dark}. + +@item min-colors +An integer that represents the minimum number of colors the frame +should support. This matches a frame if its +@code{display-color-cells} value is at least the specified integer. + +@item supports +Whether or not the frame can display the face attributes given in +@var{value}@dots{} (@pxref{Face Attributes}). See the documentation +for the function @code{display-supports-face-attributes-p} for more +information on exactly how this testing is done. @xref{Display Face +Attribute Testing}. +@end table + +If an element of @var{display} specifies more than one @var{value} for a +given @var{characteristic}, any of those values is acceptable. If +@var{display} has more than one element, each element should specify a +different @var{characteristic}; then @emph{each} characteristic of the +frame must match one of the @var{value}s specified for it in +@var{display}. +@end table +@end defmac + + Here's how the standard face @code{region} is defined: + +@example +@group +(defface region + '((((class color) (min-colors 88) (background dark)) + :background "blue3") +@end group + (((class color) (min-colors 88) (background light)) + :background "lightgoldenrod2") + (((class color) (min-colors 16) (background dark)) + :background "blue3") + (((class color) (min-colors 16) (background light)) + :background "lightgoldenrod2") + (((class color) (min-colors 8)) + :background "blue" :foreground "white") + (((type tty) (class mono)) + :inverse-video t) + (t :background "gray")) +@group + "Basic face for highlighting the region." + :group 'basic-faces) +@end group +@end example + + Internally, @code{defface} uses the symbol property +@code{face-defface-spec} to record the face attributes specified in +@code{defface}, @code{saved-face} for the attributes saved by the user +with the customization buffer, @code{customized-face} for the +attributes customized by the user for the current session, but not +saved, and @code{face-documentation} for the documentation string. + +@defopt frame-background-mode +This option, if non-@code{nil}, specifies the background type to use for +interpreting face definitions. If it is @code{dark}, then Emacs treats +all frames as if they had a dark background, regardless of their actual +background colors. If it is @code{light}, then Emacs treats all frames +as if they had a light background. +@end defopt + +@node Face Attributes +@subsection Face Attributes +@cindex face attributes + + The effect of using a face is determined by a fixed set of @dfn{face +attributes}. This table lists all the face attributes, and what they +mean. You can specify more than one face for a given piece of text; +Emacs merges the attributes of all the faces to determine how to +display the text. @xref{Displaying Faces}. + + Any attribute in a face can have the value @code{unspecified}. This +means the face doesn't specify that attribute. In face merging, when +the first face fails to specify a particular attribute, that means the +next face gets a chance. However, the @code{default} face must +specify all attributes. + + Some of these font attributes are meaningful only on certain kinds of +displays---if your display cannot handle a certain attribute, the +attribute is ignored. (The attributes @code{:family}, @code{:width}, +@code{:height}, @code{:weight}, and @code{:slant} correspond to parts of +an X Logical Font Descriptor.) + +@table @code +@item :family +Font family name, or fontset name (@pxref{Fontsets}). If you specify a +font family name, the wild-card characters @samp{*} and @samp{?} are +allowed. + +@item :width +Relative proportionate width, also known as the character set width or +set width. This should be one of the symbols @code{ultra-condensed}, +@code{extra-condensed}, @code{condensed}, @code{semi-condensed}, +@code{normal}, @code{semi-expanded}, @code{expanded}, +@code{extra-expanded}, or @code{ultra-expanded}. + +@item :height +Either the font height, an integer in units of 1/10 point, a floating +point number specifying the amount by which to scale the height of any +underlying face, or a function, which is called with the old height +(from the underlying face), and should return the new height. + +@item :weight +Font weight---a symbol from this series (from most dense to most faint): +@code{ultra-bold}, @code{extra-bold}, @code{bold}, @code{semi-bold}, +@code{normal}, @code{semi-light}, @code{light}, @code{extra-light}, +or @code{ultra-light}. + +On a text-only terminal, any weight greater than normal is displayed as +extra bright, and any weight less than normal is displayed as +half-bright (provided the terminal supports the feature). + +@item :slant +Font slant---one of the symbols @code{italic}, @code{oblique}, @code{normal}, +@code{reverse-italic}, or @code{reverse-oblique}. + +On a text-only terminal, slanted text is displayed as half-bright, if +the terminal supports the feature. + +@item :foreground +Foreground color, a string. The value can be a system-defined color +name, or a hexadecimal color specification of the form +@samp{#@var{rr}@var{gg}@var{bb}}. (@samp{#000000} is black, +@samp{#ff0000} is red, @samp{#00ff00} is green, @samp{#0000ff} is +blue, and @samp{#ffffff} is white.) + +@item :background +Background color, a string, like the foreground color. + +@item :inverse-video +Whether or not characters should be displayed in inverse video. The +value should be @code{t} (yes) or @code{nil} (no). + +@item :stipple +The background stipple, a bitmap. + +The value can be a string; that should be the name of a file containing +external-format X bitmap data. The file is found in the directories +listed in the variable @code{x-bitmap-file-path}. + +Alternatively, the value can specify the bitmap directly, with a list +of the form @code{(@var{width} @var{height} @var{data})}. Here, +@var{width} and @var{height} specify the size in pixels, and +@var{data} is a string containing the raw bits of the bitmap, row by +row. Each row occupies @math{(@var{width} + 7) / 8} consecutive bytes +in the string (which should be a unibyte string for best results). +This means that each row always occupies at least one whole byte. + +If the value is @code{nil}, that means use no stipple pattern. + +Normally you do not need to set the stipple attribute, because it is +used automatically to handle certain shades of gray. + +@item :underline +Whether or not characters should be underlined, and in what color. If +the value is @code{t}, underlining uses the foreground color of the +face. If the value is a string, underlining uses that color. The +value @code{nil} means do not underline. + +@item :overline +Whether or not characters should be overlined, and in what color. +The value is used like that of @code{:underline}. + +@item :strike-through +Whether or not characters should be strike-through, and in what +color. The value is used like that of @code{:underline}. + +@item :inherit +The name of a face from which to inherit attributes, or a list of face +names. Attributes from inherited faces are merged into the face like an +underlying face would be, with higher priority than underlying faces. +If a list of faces is used, attributes from faces earlier in the list +override those from later faces. + +@item :box +Whether or not a box should be drawn around characters, its color, the +width of the box lines, and 3D appearance. +@end table + + Here are the possible values of the @code{:box} attribute, and what +they mean: + +@table @asis +@item @code{nil} +Don't draw a box. + +@item @code{t} +Draw a box with lines of width 1, in the foreground color. + +@item @var{color} +Draw a box with lines of width 1, in color @var{color}. + +@item @code{(:line-width @var{width} :color @var{color} :style @var{style})} +This way you can explicitly specify all aspects of the box. The value +@var{width} specifies the width of the lines to draw; it defaults to 1. + +The value @var{color} specifies the color to draw with. The default is +the foreground color of the face for simple boxes, and the background +color of the face for 3D boxes. + +The value @var{style} specifies whether to draw a 3D box. If it is +@code{released-button}, the box looks like a 3D button that is not being +pressed. If it is @code{pressed-button}, the box looks like a 3D button +that is being pressed. If it is @code{nil} or omitted, a plain 2D box +is used. +@end table + + In older versions of Emacs, before @code{:family}, @code{:height}, +@code{:width}, @code{:weight}, and @code{:slant} existed, these +attributes were used to specify the type face. They are now +semi-obsolete, but they still work: + +@table @code +@item :font +This attribute specifies the font name. + +@item :bold +A non-@code{nil} value specifies a bold font. + +@item :italic +A non-@code{nil} value specifies an italic font. +@end table + + For compatibility, you can still set these ``attributes,'' even +though they are not real face attributes. Here is what that does: + +@table @code +@item :font +You can specify an X font name as the ``value'' of this ``attribute''; +that sets the @code{:family}, @code{:width}, @code{:height}, +@code{:weight}, and @code{:slant} attributes according to the font name. + +If the value is a pattern with wildcards, the first font that matches +the pattern is used to set these attributes. + +@item :bold +A non-@code{nil} makes the face bold; @code{nil} makes it normal. +This actually works by setting the @code{:weight} attribute. + +@item :italic +A non-@code{nil} makes the face italic; @code{nil} makes it normal. +This actually works by setting the @code{:slant} attribute. +@end table + +@defvar x-bitmap-file-path +This variable specifies a list of directories for searching +for bitmap files, for the @code{:stipple} attribute. +@end defvar + +@defun bitmap-spec-p object +This returns @code{t} if @var{object} is a valid bitmap specification, +suitable for use with @code{:stipple} (see above). It returns +@code{nil} otherwise. +@end defun + +@node Attribute Functions +@subsection Face Attribute Functions + + This section describes the functions for accessing and modifying the +attributes of an existing face. + +@defun set-face-attribute face frame &rest arguments +This function sets one or more attributes of face @var{face} for frame +@var{frame}. The attributes you specify this way override whatever +the @code{defface} says. + +The extra arguments @var{arguments} specify the attributes to set, and +the values for them. They should consist of alternating attribute names +(such as @code{:family} or @code{:underline}) and corresponding values. +Thus, + +@example +(set-face-attribute 'foo nil + :width 'extended + :weight 'bold + :underline "red") +@end example + +@noindent +sets the attributes @code{:width}, @code{:weight} and @code{:underline} +to the corresponding values. + +If @var{frame} is @code{t}, this function sets the default attributes +for new frames. Default attribute values specified this way override +the @code{defface} for newly created frames. + +If @var{frame} is @code{nil}, this function sets the attributes for +all existing frames, and the default for new frames. +@end defun + +@defun face-attribute face attribute &optional frame inherit +This returns the value of the @var{attribute} attribute of face +@var{face} on @var{frame}. If @var{frame} is @code{nil}, +that means the selected frame (@pxref{Input Focus}). + +If @var{frame} is @code{t}, this returns whatever new-frames default +value you previously specified with @code{set-face-attribute} for the +@var{attribute} attribute of @var{face}. If you have not specified +one, it returns @code{nil}. + +If @var{inherit} is @code{nil}, only attributes directly defined by +@var{face} are considered, so the return value may be +@code{unspecified}, or a relative value. If @var{inherit} is +non-@code{nil}, @var{face}'s definition of @var{attribute} is merged +with the faces specified by its @code{:inherit} attribute; however the +return value may still be @code{unspecified} or relative. If +@var{inherit} is a face or a list of faces, then the result is further +merged with that face (or faces), until it becomes specified and +absolute. + +To ensure that the return value is always specified and absolute, use +a value of @code{default} for @var{inherit}; this will resolve any +unspecified or relative values by merging with the @code{default} face +(which is always completely specified). + +For example, + +@example +(face-attribute 'bold :weight) + @result{} bold +@end example +@end defun + +@defun face-attribute-relative-p attribute value +This function returns non-@code{nil} if @var{value}, when used as the +value of the face attribute @var{attribute}, is relative. This means +it would modify, rather than completely override, any value that comes +from a subsequent face in the face list or that is inherited from +another face. + +@code{unspecified} is a relative value for all attributes. +For @code{:height}, floating point values are also relative. + +For example: + +@example +(face-attribute-relative-p :height 2.0) + @result{} t +@end example +@end defun + +@defun merge-face-attribute attribute value1 value2 +If @var{value1} is a relative value for the face attribute +@var{attribute}, returns it merged with the underlying value +@var{value2}; otherwise, if @var{value1} is an absolute value for the +face attribute @var{attribute}, returns @var{value1} unchanged. +@end defun + + The functions above did not exist before Emacs 21. For compatibility +with older Emacs versions, you can use the following functions to set +and examine the face attributes which existed in those versions. +They use values of @code{t} and @code{nil} for @var{frame} +just like @code{set-face-attribute} and @code{face-attribute}. + +@defun set-face-foreground face color &optional frame +@defunx set-face-background face color &optional frame +These functions set the foreground (or background, respectively) color +of face @var{face} to @var{color}. The argument @var{color} should be a +string, the name of a color. + +Certain shades of gray are implemented by stipple patterns on +black-and-white screens. +@end defun + +@defun set-face-stipple face pattern &optional frame +This function sets the background stipple pattern of face @var{face} +to @var{pattern}. The argument @var{pattern} should be the name of a +stipple pattern defined by the X server, or actual bitmap data +(@pxref{Face Attributes}), or @code{nil} meaning don't use stipple. + +Normally there is no need to pay attention to stipple patterns, because +they are used automatically to handle certain shades of gray. +@end defun + +@defun set-face-font face font &optional frame +This function sets the font of face @var{face}. This actually sets +the attributes @code{:family}, @code{:width}, @code{:height}, +@code{:weight}, and @code{:slant} according to the font name +@var{font}. +@end defun + +@defun set-face-bold-p face bold-p &optional frame +This function specifies whether @var{face} should be bold. If +@var{bold-p} is non-@code{nil}, that means yes; @code{nil} means no. +This actually sets the @code{:weight} attribute. +@end defun + +@defun set-face-italic-p face italic-p &optional frame +This function specifies whether @var{face} should be italic. If +@var{italic-p} is non-@code{nil}, that means yes; @code{nil} means no. +This actually sets the @code{:slant} attribute. +@end defun + +@defun set-face-underline-p face underline &optional frame +This function sets the underline attribute of face @var{face}. +Non-@code{nil} means do underline; @code{nil} means don't. +If @var{underline} is a string, underline with that color. +@end defun + +@defun set-face-inverse-video-p face inverse-video-p &optional frame +This function sets the @code{:inverse-video} attribute of face +@var{face}. +@end defun + +@defun invert-face face &optional frame +This function swaps the foreground and background colors of face +@var{face}. +@end defun + + These functions examine the attributes of a face. If you don't +specify @var{frame}, they refer to the selected frame; @code{t} refers +to the default data for new frames. They return the symbol +@code{unspecified} if the face doesn't define any value for that +attribute. + +@defun face-foreground face &optional frame inherit +@defunx face-background face &optional frame inherit +These functions return the foreground color (or background color, +respectively) of face @var{face}, as a string. + +If @var{inherit} is @code{nil}, only a color directly defined by the face is +returned. If @var{inherit} is non-@code{nil}, any faces specified by its +@code{:inherit} attribute are considered as well, and if @var{inherit} +is a face or a list of faces, then they are also considered, until a +specified color is found. To ensure that the return value is always +specified, use a value of @code{default} for @var{inherit}. +@end defun + +@defun face-stipple face &optional frame inherit +This function returns the name of the background stipple pattern of face +@var{face}, or @code{nil} if it doesn't have one. + +If @var{inherit} is @code{nil}, only a stipple directly defined by the +face is returned. If @var{inherit} is non-@code{nil}, any faces +specified by its @code{:inherit} attribute are considered as well, and +if @var{inherit} is a face or a list of faces, then they are also +considered, until a specified stipple is found. To ensure that the +return value is always specified, use a value of @code{default} for +@var{inherit}. +@end defun + +@defun face-font face &optional frame +This function returns the name of the font of face @var{face}. +@end defun + +@defun face-bold-p face &optional frame +This function returns @code{t} if @var{face} is bold---that is, if it is +bolder than normal. It returns @code{nil} otherwise. +@end defun + +@defun face-italic-p face &optional frame +This function returns @code{t} if @var{face} is italic or oblique, +@code{nil} otherwise. +@end defun + +@defun face-underline-p face &optional frame +This function returns the @code{:underline} attribute of face @var{face}. +@end defun + +@defun face-inverse-video-p face &optional frame +This function returns the @code{:inverse-video} attribute of face @var{face}. +@end defun + +@node Displaying Faces +@subsection Displaying Faces + + Here are the ways to specify which faces to use for display of text: + +@itemize @bullet +@item +With defaults. The @code{default} face is used as the ultimate +default for all text. (In Emacs 19 and 20, the @code{default} +face is used only when no other face is specified.) + +@item +For a mode line or header line, the face @code{mode-line} or +@code{mode-line-inactive}, or @code{header-line}, is merged in just +before @code{default}. + +@item +With text properties. A character can have a @code{face} property; if +so, the faces and face attributes specified there apply. @xref{Special +Properties}. + +If the character has a @code{mouse-face} property, that is used instead +of the @code{face} property when the mouse is ``near enough'' to the +character. + +@item +With overlays. An overlay can have @code{face} and @code{mouse-face} +properties too; they apply to all the text covered by the overlay. + +@item +With a region that is active. In Transient Mark mode, the region is +highlighted with the face @code{region} (@pxref{Standard Faces,,, +emacs, The GNU Emacs Manual}). + +@item +With special glyphs. Each glyph can specify a particular face +number. @xref{Glyphs}. +@end itemize + + If these various sources together specify more than one face for a +particular character, Emacs merges the attributes of the various faces +specified. For each attribute, Emacs tries first the face of any +special glyph; then the face for region highlighting, if appropriate; +then the faces specified by overlays, followed by those specified by +text properties, then the @code{mode-line} or +@code{mode-line-inactive} or @code{header-line} face (if in a mode +line or a header line), and last the @code{default} face. + + When multiple overlays cover one character, an overlay with higher +priority overrides those with lower priority. @xref{Overlays}. + +@node Font Selection +@subsection Font Selection + + @dfn{Selecting a font} means mapping the specified face attributes for +a character to a font that is available on a particular display. The +face attributes, as determined by face merging, specify most of the +font choice, but not all. Part of the choice depends on what character +it is. + + If the face specifies a fontset name, that fontset determines a +pattern for fonts of the given charset. If the face specifies a font +family, a font pattern is constructed. + + Emacs tries to find an available font for the given face attributes +and character's registry and encoding. If there is a font that matches +exactly, it is used, of course. The hard case is when no available font +exactly fits the specification. Then Emacs looks for one that is +``close''---one attribute at a time. You can specify the order to +consider the attributes. In the case where a specified font family is +not available, you can specify a set of mappings for alternatives to +try. + +@defvar face-font-selection-order +This variable specifies the order of importance of the face attributes +@code{:width}, @code{:height}, @code{:weight}, and @code{:slant}. The +value should be a list containing those four symbols, in order of +decreasing importance. + +Font selection first finds the best available matches for the first +attribute listed; then, among the fonts which are best in that way, it +searches for the best matches in the second attribute, and so on. + +The attributes @code{:weight} and @code{:width} have symbolic values in +a range centered around @code{normal}. Matches that are more extreme +(farther from @code{normal}) are somewhat preferred to matches that are +less extreme (closer to @code{normal}); this is designed to ensure that +non-normal faces contrast with normal ones, whenever possible. + +The default is @code{(:width :height :weight :slant)}, which means first +find the fonts closest to the specified @code{:width}, then---among the +fonts with that width---find a best match for the specified font height, +and so on. + +One example of a case where this variable makes a difference is when the +default font has no italic equivalent. With the default ordering, the +@code{italic} face will use a non-italic font that is similar to the +default one. But if you put @code{:slant} before @code{:height}, the +@code{italic} face will use an italic font, even if its height is not +quite right. +@end defvar + +@defvar face-font-family-alternatives +This variable lets you specify alternative font families to try, if a +given family is specified and doesn't exist. Each element should have +this form: + +@example +(@var{family} @var{alternate-families}@dots{}) +@end example + +If @var{family} is specified but not available, Emacs will try the other +families given in @var{alternate-families}, one by one, until it finds a +family that does exist. +@end defvar + +@defvar face-font-registry-alternatives +This variable lets you specify alternative font registries to try, if a +given registry is specified and doesn't exist. Each element should have +this form: + +@example +(@var{registry} @var{alternate-registries}@dots{}) +@end example + +If @var{registry} is specified but not available, Emacs will try the +other registries given in @var{alternate-registries}, one by one, +until it finds a registry that does exist. +@end defvar + + Emacs can make use of scalable fonts, but by default it does not use +them, since the use of too many or too big scalable fonts can crash +XFree86 servers. + +@defvar scalable-fonts-allowed +This variable controls which scalable fonts to use. A value of +@code{nil}, the default, means do not use scalable fonts. @code{t} +means to use any scalable font that seems appropriate for the text. + +Otherwise, the value must be a list of regular expressions. Then a +scalable font is enabled for use if its name matches any regular +expression in the list. For example, + +@example +(setq scalable-fonts-allowed '("muleindian-2$")) +@end example + +@noindent +allows the use of scalable fonts with registry @code{muleindian-2}. +@end defvar + +@defvar face-font-rescale-alist +This variable specifies scaling for certain faces. Its value should +be a list of elements of the form + +@example +(@var{fontname-regexp} . @var{scale-factor}) +@end example + +If @var{fontname-regexp} matches the font name that is about to be +used, this says to choose a larger similar font according to the +factor @var{scale-factor}. You would use this feature to normalize +the font size if certain fonts are bigger or smaller than their +nominal heights and widths would suggest. +@end defvar + +@node Face Functions +@subsection Functions for Working with Faces + + Here are additional functions for creating and working with faces. + +@defun make-face name +This function defines a new face named @var{name}, initially with all +attributes @code{nil}. It does nothing if there is already a face named +@var{name}. +@end defun + +@defun face-list +This function returns a list of all defined face names. +@end defun + +@defun copy-face old-face new-name &optional frame new-frame +This function defines a face named @var{new-name} as a copy of the existing +face named @var{old-face}. It creates the face @var{new-name} if that +doesn't already exist. + +If the optional argument @var{frame} is given, this function applies +only to that frame. Otherwise it applies to each frame individually, +copying attributes from @var{old-face} in each frame to @var{new-face} +in the same frame. + +If the optional argument @var{new-frame} is given, then @code{copy-face} +copies the attributes of @var{old-face} in @var{frame} to @var{new-name} +in @var{new-frame}. +@end defun + +@defun face-id face +This function returns the face number of face @var{face}. +@end defun + +@defun face-documentation face +This function returns the documentation string of face @var{face}, or +@code{nil} if none was specified for it. +@end defun + +@defun face-equal face1 face2 &optional frame +This returns @code{t} if the faces @var{face1} and @var{face2} have the +same attributes for display. +@end defun + +@defun face-differs-from-default-p face &optional frame +This returns non-@code{nil} if the face @var{face} displays +differently from the default face. +@end defun + +@cindex face alias +A @dfn{face alias} provides an equivalent name for a face. You can +define a face alias by giving the alias symbol the @code{face-alias} +property, with a value of the target face name. The following example +makes @code{modeline} an alias for the @code{mode-line} face. + +@example +(put 'modeline 'face-alias 'mode-line) +@end example + + +@node Auto Faces +@subsection Automatic Face Assignment +@cindex automatic face assignment +@cindex faces, automatic choice + + This hook is used for automatically assigning faces to text in the +buffer. It is part of the implementation of Jit-Lock mode, used by +Font-Lock. + +@defvar fontification-functions +This variable holds a list of functions that are called by Emacs +redisplay as needed to assign faces automatically to text in the buffer. + +The functions are called in the order listed, with one argument, a +buffer position @var{pos}. Each function should attempt to assign faces +to the text in the current buffer starting at @var{pos}. + +Each function should record the faces they assign by setting the +@code{face} property. It should also add a non-@code{nil} +@code{fontified} property for all the text it has assigned faces to. +That property tells redisplay that faces have been assigned to that text +already. + +It is probably a good idea for each function to do nothing if the +character after @var{pos} already has a non-@code{nil} @code{fontified} +property, but this is not required. If one function overrides the +assignments made by a previous one, the properties as they are +after the last function finishes are the ones that really matter. + +For efficiency, we recommend writing these functions so that they +usually assign faces to around 400 to 600 characters at each call. +@end defvar + +@node Font Lookup +@subsection Looking Up Fonts + +@defun x-list-fonts pattern &optional face frame maximum +This function returns a list of available font names that match +@var{pattern}. If the optional arguments @var{face} and @var{frame} are +specified, then the list is limited to fonts that are the same size as +@var{face} currently is on @var{frame}. + +The argument @var{pattern} should be a string, perhaps with wildcard +characters: the @samp{*} character matches any substring, and the +@samp{?} character matches any single character. Pattern matching +of font names ignores case. + +If you specify @var{face} and @var{frame}, @var{face} should be a face name +(a symbol) and @var{frame} should be a frame. + +The optional argument @var{maximum} sets a limit on how many fonts to +return. If this is non-@code{nil}, then the return value is truncated +after the first @var{maximum} matching fonts. Specifying a small value +for @var{maximum} can make this function much faster, in cases where +many fonts match the pattern. +@end defun + +@defun x-family-fonts &optional family frame +This function returns a list describing the available fonts for family +@var{family} on @var{frame}. If @var{family} is omitted or @code{nil}, +this list applies to all families, and therefore, it contains all +available fonts. Otherwise, @var{family} must be a string; it may +contain the wildcards @samp{?} and @samp{*}. + +The list describes the display that @var{frame} is on; if @var{frame} is +omitted or @code{nil}, it applies to the selected frame's display +(@pxref{Input Focus}). + +The list contains a vector of the following form for each font: + +@example +[@var{family} @var{width} @var{point-size} @var{weight} @var{slant} + @var{fixed-p} @var{full} @var{registry-and-encoding}] +@end example + +The first five elements correspond to face attributes; if you +specify these attributes for a face, it will use this font. + +The last three elements give additional information about the font. +@var{fixed-p} is non-@code{nil} if the font is fixed-pitch. +@var{full} is the full name of the font, and +@var{registry-and-encoding} is a string giving the registry and +encoding of the font. + +The result list is sorted according to the current face font sort order. +@end defun + +@defun x-font-family-list &optional frame +This function returns a list of the font families available for +@var{frame}'s display. If @var{frame} is omitted or @code{nil}, it +describes the selected frame's display (@pxref{Input Focus}). + +The value is a list of elements of this form: + +@example +(@var{family} . @var{fixed-p}) +@end example + +@noindent +Here @var{family} is a font family, and @var{fixed-p} is +non-@code{nil} if fonts of that family are fixed-pitch. +@end defun + +@defvar font-list-limit +This variable specifies maximum number of fonts to consider in font +matching. The function @code{x-family-fonts} will not return more than +that many fonts, and font selection will consider only that many fonts +when searching a matching font for face attributes. The default is +currently 100. +@end defvar + +@node Fontsets +@subsection Fontsets + + A @dfn{fontset} is a list of fonts, each assigned to a range of +character codes. An individual font cannot display the whole range of +characters that Emacs supports, but a fontset can. Fontsets have names, +just as fonts do, and you can use a fontset name in place of a font name +when you specify the ``font'' for a frame or a face. Here is +information about defining a fontset under Lisp program control. + +@defun create-fontset-from-fontset-spec fontset-spec &optional style-variant-p noerror +This function defines a new fontset according to the specification +string @var{fontset-spec}. The string should have this format: + +@smallexample +@var{fontpattern}, @r{[}@var{charsetname}:@var{fontname}@r{]@dots{}} +@end smallexample + +@noindent +Whitespace characters before and after the commas are ignored. + +The first part of the string, @var{fontpattern}, should have the form of +a standard X font name, except that the last two fields should be +@samp{fontset-@var{alias}}. + +The new fontset has two names, one long and one short. The long name is +@var{fontpattern} in its entirety. The short name is +@samp{fontset-@var{alias}}. You can refer to the fontset by either +name. If a fontset with the same name already exists, an error is +signaled, unless @var{noerror} is non-@code{nil}, in which case this +function does nothing. + +If optional argument @var{style-variant-p} is non-@code{nil}, that says +to create bold, italic and bold-italic variants of the fontset as well. +These variant fontsets do not have a short name, only a long one, which +is made by altering @var{fontpattern} to indicate the bold or italic +status. + +The specification string also says which fonts to use in the fontset. +See below for the details. +@end defun + + The construct @samp{@var{charset}:@var{font}} specifies which font to +use (in this fontset) for one particular character set. Here, +@var{charset} is the name of a character set, and @var{font} is the font +to use for that character set. You can use this construct any number of +times in the specification string. + + For the remaining character sets, those that you don't specify +explicitly, Emacs chooses a font based on @var{fontpattern}: it replaces +@samp{fontset-@var{alias}} with a value that names one character set. +For the @acronym{ASCII} character set, @samp{fontset-@var{alias}} is replaced +with @samp{ISO8859-1}. + + In addition, when several consecutive fields are wildcards, Emacs +collapses them into a single wildcard. This is to prevent use of +auto-scaled fonts. Fonts made by scaling larger fonts are not usable +for editing, and scaling a smaller font is not useful because it is +better to use the smaller font in its own size, which Emacs does. + + Thus if @var{fontpattern} is this, + +@example +-*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24 +@end example + +@noindent +the font specification for @acronym{ASCII} characters would be this: + +@example +-*-fixed-medium-r-normal-*-24-*-ISO8859-1 +@end example + +@noindent +and the font specification for Chinese GB2312 characters would be this: + +@example +-*-fixed-medium-r-normal-*-24-*-gb2312*-* +@end example + + You may not have any Chinese font matching the above font +specification. Most X distributions include only Chinese fonts that +have @samp{song ti} or @samp{fangsong ti} in the @var{family} field. In +such a case, @samp{Fontset-@var{n}} can be specified as below: + +@smallexample +Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\ + chinese-gb2312:-*-*-medium-r-normal-*-24-*-gb2312*-* +@end smallexample + +@noindent +Then, the font specifications for all but Chinese GB2312 characters have +@samp{fixed} in the @var{family} field, and the font specification for +Chinese GB2312 characters has a wild card @samp{*} in the @var{family} +field. + +@defun set-fontset-font name character fontname &optional frame +This function modifies the existing fontset @var{name} to +use the font name @var{fontname} for the character @var{character}. + +If @var{name} is @code{nil}, this function modifies the default +fontset, whose short name is @samp{fontset-default}. + +@var{character} may be a cons; @code{(@var{from} . @var{to})}, where +@var{from} and @var{to} are non-generic characters. In that case, use +@var{fontname} for all characters in the range @var{from} and @var{to} +(inclusive). + +@var{character} may be a charset. In that case, use +@var{fontname} for all character in the charsets. + +@var{fontname} may be a cons; @code{(@var{family} . @var{registry})}, +where @var{family} is a family name of a font (possibly including a +foundry name at the head), @var{registry} is a registry name of a font +(possibly including an encoding name at the tail). + +For instance, this changes the default fontset to use a font of which +registry name is @samp{JISX0208.1983} for all characters belonging to +the charset @code{japanese-jisx0208}. + +@smallexample +(set-fontset-font nil 'japanese-jisx0208 '(nil . "JISX0208.1983")) +@end smallexample +@end defun + +@defun char-displayable-p char +This function returns @code{t} if Emacs ought to be able to display +@var{char}. More precisely, if the selected frame's fontset has a +font to display the character set that @var{char} belongs to. + +Fontsets can specify a font on a per-character basis; when the fontset +does that, this function's value may not be accurate. +@end defun + +@node Fringes +@section Fringes +@cindex fringes + + The @dfn{fringes} of a window are thin vertical strips down the +sides that are used for displaying bitmaps that indicate truncation, +continuation, horizontal scrolling, and the overlay arrow. + +@menu +* Fringe Size/Pos:: Specifying where to put the window fringes. +* Fringe Indicators:: Displaying indicator icons in the window fringes. +* Fringe Cursors:: Displaying cursors in the right fringe. +* Fringe Bitmaps:: Specifying bitmaps for fringe indicators. +* Customizing Bitmaps:: Specifying your own bitmaps to use in the fringes. +* Overlay Arrow:: Display of an arrow to indicate position. +@end menu + +@node Fringe Size/Pos +@subsection Fringe Size and Position + + The following buffer-local variables control the position and width +of the window fringes. + +@defvar fringes-outside-margins +The fringes normally appear between the display margins and the window +text. If the value is non-@code{nil}, they appear outside the display +margins. @xref{Display Margins}. +@end defvar + +@defvar left-fringe-width +This variable, if non-@code{nil}, specifies the width of the left +fringe in pixels. A value of @code{nil} means to use the left fringe +width from the window's frame. +@end defvar + +@defvar right-fringe-width +This variable, if non-@code{nil}, specifies the width of the right +fringe in pixels. A value of @code{nil} means to use the right fringe +width from the window's frame. +@end defvar + + The values of these variables take effect when you display the +buffer in a window. If you change them while the buffer is visible, +you can call @code{set-window-buffer} to display it once again in the +same window, to make the changes take effect. + +@defun set-window-fringes window left &optional right outside-margins +This function sets the fringe widths of window @var{window}. +If @var{window} is @code{nil}, the selected window is used. + +The argument @var{left} specifies the width in pixels of the left +fringe, and likewise @var{right} for the right fringe. A value of +@code{nil} for either one stands for the default width. If +@var{outside-margins} is non-@code{nil}, that specifies that fringes +should appear outside of the display margins. +@end defun + +@defun window-fringes &optional window +This function returns information about the fringes of a window +@var{window}. If @var{window} is omitted or @code{nil}, the selected +window is used. The value has the form @code{(@var{left-width} +@var{right-width} @var{outside-margins})}. +@end defun + + +@node Fringe Indicators +@subsection Fringe Indicators +@cindex fringe indicators +@cindex indicators, fringe + + The @dfn{fringe indicators} are tiny icons Emacs displays in the +window fringe (on a graphic display) to indicate truncated or +continued lines, buffer boundaries, overlay arrow, etc. + +@defopt indicate-empty-lines +@cindex fringes, and empty line indication +When this is non-@code{nil}, Emacs displays a special glyph in the +fringe of each empty line at the end of the buffer, on graphical +displays. @xref{Fringes}. This variable is automatically +buffer-local in every buffer. +@end defopt + +@defvar indicate-buffer-boundaries +This buffer-local variable controls how the buffer boundaries and +window scrolling are indicated in the window fringes. + +Emacs can indicate the buffer boundaries---that is, the first and last +line in the buffer---with angle icons when they appear on the screen. +In addition, Emacs can display an up-arrow in the fringe to show +that there is text above the screen, and a down-arrow to show +there is text below the screen. + +There are three kinds of basic values: + +@table @asis +@item @code{nil} +Don't display any of these fringe icons. +@item @code{left} +Display the angle icons and arrows in the left fringe. +@item @code{right} +Display the angle icons and arrows in the right fringe. +@item any non-alist +Display the angle icons in the left fringe +and don't display the arrows. +@end table + +Otherwise the value should be an alist that specifies which fringe +indicators to display and where. Each element of the alist should +have the form @code{(@var{indicator} . @var{position})}. Here, +@var{indicator} is one of @code{top}, @code{bottom}, @code{up}, +@code{down}, and @code{t} (which covers all the icons not yet +specified), while @var{position} is one of @code{left}, @code{right} +and @code{nil}. + +For example, @code{((top . left) (t . right))} places the top angle +bitmap in left fringe, and the bottom angle bitmap as well as both +arrow bitmaps in right fringe. To show the angle bitmaps in the left +fringe, and no arrow bitmaps, use @code{((top . left) (bottom . left))}. +@end defvar + +@defvar default-indicate-buffer-boundaries +The value of this variable is the default value for +@code{indicate-buffer-boundaries} in buffers that do not override it. +@end defvar + +@defvar fringe-indicator-alist +This buffer-local variable specifies the mapping from logical fringe +indicators to the actual bitmaps displayed in the window fringes. + +These symbols identify the logical fringe indicators: + +@table @asis +@item Truncation and continuation line indicators: +@code{truncation}, @code{continuation}. + +@item Buffer position indicators: +@code{up}, @code{down}, +@code{top}, @code{bottom}, +@code{top-bottom}. + +@item Empty line indicator: +@code{empty-line}. + +@item Overlay arrow indicator: +@code{overlay-arrow}. + +@item Unknown bitmap indicator: +@code{unknown}. +@end table + + The value is an alist where each element @code{(@var{indicator} . @var{bitmaps})} +specifies the fringe bitmaps used to display a specific logical +fringe indicator. + +Here, @var{indicator} specifies the logical indicator type, and +@var{bitmaps} is list of symbols @code{(@var{left} @var{right} +[@var{left1} @var{right1}])} which specifies the actual bitmap shown +in the left or right fringe for the logical indicator. + +The @var{left} and @var{right} symbols specify the bitmaps shown in +the left and/or right fringe for the specific indicator. The +@var{left1} or @var{right1} bitmaps are used only for the `bottom' and +`top-bottom indicators when the last (only) line in has no final +newline. Alternatively, @var{bitmaps} may be a single symbol which is +used in both left and right fringes. + +When @code{fringe-indicator-alist} has a buffer-local value, and there +is no bitmap defined for a logical indicator, or the bitmap is +@code{t}, the corresponding value from the (non-local) +@code{default-fringe-indicator-alist} is used. + +To completely hide a specific indicator, set the bitmap to @code{nil}. +@end defvar + +@defvar default-fringe-indicator-alist +The value of this variable is the default value for +@code{fringe-indicator-alist} in buffers that do not override it. +@end defvar + +Standard fringe bitmaps for indicators: +@example +left-arrow right-arrow up-arrow down-arrow +left-curly-arrow right-curly-arrow +left-triangle right-triangle +top-left-angle top-right-angle +bottom-left-angle bottom-right-angle +left-bracket right-bracket +filled-rectangle hollow-rectangle +filled-square hollow-square +vertical-bar horizontal-bar +empty-line question-mark +@end example + +@node Fringe Cursors +@subsection Fringe Cursors +@cindex fringe cursors +@cindex cursor, fringe + + When a line is exactly as wide as the window, Emacs displays the +cursor in the right fringe instead of using two lines. Different +bitmaps are used to represent the cursor in the fringe depending on +the current buffer's cursor type. + +@table @asis +@item Logical cursor types: +@code{box} , @code{hollow}, @code{bar}, +@code{hbar}, @code{hollow-small}. +@end table + +The @code{hollow-small} type is used instead of @code{hollow} when the +normal @code{hollow-rectangle} bitmap is too tall to fit on a specific +display line. + +@defvar overflow-newline-into-fringe +If this is non-@code{nil}, lines exactly as wide as the window (not +counting the final newline character) are not continued. Instead, +when point is at the end of the line, the cursor appears in the right +fringe. +@end defvar + +@defvar fringe-cursor-alist +This variable specifies the mapping from logical cursor type to the +actual fringe bitmaps displayed in the right fringe. The value is an +alist where each element @code{(@var{cursor} . @var{bitmap})} specifies +the fringe bitmaps used to display a specific logical cursor type in +the fringe. Here, @var{cursor} specifies the logical cursor type and +@var{bitmap} is a symbol specifying the fringe bitmap to be displayed +for that logical cursor type. + +When @code{fringe-cursor-alist} has a buffer-local value, and there is +no bitmap defined for a cursor type, the corresponding value from the +(non-local) @code{default-fringes-indicator-alist} is used. +@end defvar + +@defvar default-fringes-cursor-alist +The value of this variable is the default value for +@code{fringe-cursor-alist} in buffers that do not override it. +@end defvar + +Standard bitmaps for displaying the cursor in right fringe: +@example +filled-rectangle hollow-rectangle filled-square hollow-square +vertical-bar horizontal-bar +@end example + + +@node Fringe Bitmaps +@subsection Fringe Bitmaps +@cindex fringe bitmaps +@cindex bitmaps, fringe + + The @dfn{fringe bitmaps} are the actual bitmaps which represent the +logical fringe indicators for truncated or continued lines, buffer +boundaries, overlay arrow, etc. Fringe bitmap symbols have their own +name space. The fringe bitmaps are shared by all frames and windows. +You can redefine the built-in fringe bitmaps, and you can define new +fringe bitmaps. + + The way to display a bitmap in the left or right fringes for a given +line in a window is by specifying the @code{display} property for one +of the characters that appears in it. Use a display specification of +the form @code{(left-fringe @var{bitmap} [@var{face}])} or +@code{(right-fringe @var{bitmap} [@var{face}])} (@pxref{Display +Property}). Here, @var{bitmap} is a symbol identifying the bitmap you +want, and @var{face} (which is optional) is the name of the face whose +colors should be used for displaying the bitmap, instead of the +default @code{fringe} face. @var{face} is automatically merged with +the @code{fringe} face, so normally @var{face} need only specify the +foreground color for the bitmap. + +@defun fringe-bitmaps-at-pos &optional pos window +This function returns the fringe bitmaps of the display line +containing position @var{pos} in window @var{window}. The return +value has the form @code{(@var{left} @var{right} @var{ov})}, where @var{left} +is the symbol for the fringe bitmap in the left fringe (or @code{nil} +if no bitmap), @var{right} is similar for the right fringe, and @var{ov} +is non-@code{nil} if there is an overlay arrow in the left fringe. + +The value is @code{nil} if @var{pos} is not visible in @var{window}. +If @var{window} is @code{nil}, that stands for the selected window. +If @var{pos} is @code{nil}, that stands for the value of point in +@var{window}. +@end defun + +@node Customizing Bitmaps +@subsection Customizing Fringe Bitmaps + +@defun define-fringe-bitmap bitmap bits &optional height width align +This function defines the symbol @var{bitmap} as a new fringe bitmap, +or replaces an existing bitmap with that name. + +The argument @var{bits} specifies the image to use. It should be +either a string or a vector of integers, where each element (an +integer) corresponds to one row of the bitmap. Each bit of an integer +corresponds to one pixel of the bitmap, where the low bit corresponds +to the rightmost pixel of the bitmap. + +The height is normally the length of @var{bits}. However, you +can specify a different height with non-@code{nil} @var{height}. The width +is normally 8, but you can specify a different width with non-@code{nil} +@var{width}. The width must be an integer between 1 and 16. + +The argument @var{align} specifies the positioning of the bitmap +relative to the range of rows where it is used; the default is to +center the bitmap. The allowed values are @code{top}, @code{center}, +or @code{bottom}. + +The @var{align} argument may also be a list @code{(@var{align} +@var{periodic})} where @var{align} is interpreted as described above. +If @var{periodic} is non-@code{nil}, it specifies that the rows in +@code{bits} should be repeated enough times to reach the specified +height. +@end defun + +@defun destroy-fringe-bitmap bitmap +This function destroy the fringe bitmap identified by @var{bitmap}. +If @var{bitmap} identifies a standard fringe bitmap, it actually +restores the standard definition of that bitmap, instead of +eliminating it entirely. +@end defun + +@defun set-fringe-bitmap-face bitmap &optional face +This sets the face for the fringe bitmap @var{bitmap} to @var{face}. +If @var{face} is @code{nil}, it selects the @code{fringe} face. The +bitmap's face controls the color to draw it in. + +@var{face} is merged with the @code{fringe} face, so normally +@var{face} should specify only the foreground color. +@end defun + +@node Overlay Arrow +@subsection The Overlay Arrow +@c @cindex overlay arrow Duplicates variable names + + The @dfn{overlay arrow} is useful for directing the user's attention +to a particular line in a buffer. For example, in the modes used for +interface to debuggers, the overlay arrow indicates the line of code +about to be executed. This feature has nothing to do with +@dfn{overlays} (@pxref{Overlays}). + +@defvar overlay-arrow-string +This variable holds the string to display to call attention to a +particular line, or @code{nil} if the arrow feature is not in use. +On a graphical display the contents of the string are ignored; instead a +glyph is displayed in the fringe area to the left of the display area. +@end defvar + +@defvar overlay-arrow-position +This variable holds a marker that indicates where to display the overlay +arrow. It should point at the beginning of a line. On a non-graphical +display the arrow text +appears at the beginning of that line, overlaying any text that would +otherwise appear. Since the arrow is usually short, and the line +usually begins with indentation, normally nothing significant is +overwritten. + +The overlay-arrow string is displayed in any given buffer if the value +of @code{overlay-arrow-position} in that buffer points into that +buffer. Thus, it is possible to display multiple overlay arrow strings +by creating buffer-local bindings of @code{overlay-arrow-position}. +However, it is usually cleaner to use +@code{overlay-arrow-variable-list} to achieve this result. +@c !!! overlay-arrow-position: but the overlay string may remain in the display +@c of some other buffer until an update is required. This should be fixed +@c now. Is it? +@end defvar + + You can do a similar job by creating an overlay with a +@code{before-string} property. @xref{Overlay Properties}. + + You can define multiple overlay arrows via the variable +@code{overlay-arrow-variable-list}. + +@defvar overlay-arrow-variable-list +This variable's value is a list of variables, each of which specifies +the position of an overlay arrow. The variable +@code{overlay-arrow-position} has its normal meaning because it is on +this list. +@end defvar + +Each variable on this list can have properties +@code{overlay-arrow-string} and @code{overlay-arrow-bitmap} that +specify an overlay arrow string (for text-only terminals) or fringe +bitmap (for graphical terminals) to display at the corresponding +overlay arrow position. If either property is not set, the default +@code{overlay-arrow-string} or @code{overlay-arrow} fringe indicator +is used. + +@node Scroll Bars +@section Scroll Bars +@cindex scroll bars + +Normally the frame parameter @code{vertical-scroll-bars} controls +whether the windows in the frame have vertical scroll bars, and +whether they are on the left or right. The frame parameter +@code{scroll-bar-width} specifies how wide they are (@code{nil} +meaning the default). @xref{Layout Parameters}. + +@defun frame-current-scroll-bars &optional frame +This function reports the scroll bar type settings for frame +@var{frame}. The value is a cons cell +@code{(@var{vertical-type} .@: @var{horizontal-type})}, where +@var{vertical-type} is either @code{left}, @code{right}, or @code{nil} +(which means no scroll bar.) @var{horizontal-type} is meant to +specify the horizontal scroll bar type, but since they are not +implemented, it is always @code{nil}. +@end defun + +@vindex vertical-scroll-bar + You can enable or disable scroll bars for a particular buffer, +by setting the variable @code{vertical-scroll-bar}. This variable +automatically becomes buffer-local when set. The possible values are +@code{left}, @code{right}, @code{t}, which means to use the +frame's default, and @code{nil} for no scroll bar. + + You can also control this for individual windows. Call the function +@code{set-window-scroll-bars} to specify what to do for a specific window: + +@defun set-window-scroll-bars window width &optional vertical-type horizontal-type +This function sets the width and type of scroll bars for window +@var{window}. + +@var{width} specifies the scroll bar width in pixels (@code{nil} means +use the width specified for the frame). @var{vertical-type} specifies +whether to have a vertical scroll bar and, if so, where. The possible +values are @code{left}, @code{right} and @code{nil}, just like the +values of the @code{vertical-scroll-bars} frame parameter. + +The argument @var{horizontal-type} is meant to specify whether and +where to have horizontal scroll bars, but since they are not +implemented, it has no effect. If @var{window} is @code{nil}, the +selected window is used. +@end defun + +@defun window-scroll-bars &optional window +Report the width and type of scroll bars specified for @var{window}. +If @var{window} is omitted or @code{nil}, the selected window is used. +The value is a list of the form @code{(@var{width} +@var{cols} @var{vertical-type} @var{horizontal-type})}. The value +@var{width} is the value that was specified for the width (which may +be @code{nil}); @var{cols} is the number of columns that the scroll +bar actually occupies. + +@var{horizontal-type} is not actually meaningful. +@end defun + +If you don't specify these values for a window with +@code{set-window-scroll-bars}, the buffer-local variables +@code{scroll-bar-mode} and @code{scroll-bar-width} in the buffer being +displayed control the window's vertical scroll bars. The function +@code{set-window-buffer} examines these variables. If you change them +in a buffer that is already visible in a window, you can make the +window take note of the new values by calling @code{set-window-buffer} +specifying the same buffer that is already displayed. + +@defvar scroll-bar-mode +This variable, always local in all buffers, controls whether and where +to put scroll bars in windows displaying the buffer. The possible values +are @code{nil} for no scroll bar, @code{left} to put a scroll bar on +the left, and @code{right} to put a scroll bar on the right. +@end defvar + +@defun window-current-scroll-bars &optional window +This function reports the scroll bar type for window @var{window}. +If @var{window} is omitted or @code{nil}, the selected window is used. +The value is a cons cell +@code{(@var{vertical-type} .@: @var{horizontal-type})}. Unlike +@code{window-scroll-bars}, this reports the scroll bar type actually +used, once frame defaults and @code{scroll-bar-mode} are taken into +account. +@end defun + +@defvar scroll-bar-width +This variable, always local in all buffers, specifies the width of the +buffer's scroll bars, measured in pixels. A value of @code{nil} means +to use the value specified by the frame. +@end defvar + +@node Display Property +@section The @code{display} Property +@cindex display specification +@kindex display @r{(text property)} + + The @code{display} text property (or overlay property) is used to +insert images into text, and also control other aspects of how text +displays. The value of the @code{display} property should be a +display specification, or a list or vector containing several display - specifications. - - Some kinds of @code{display} properties specify something to display - instead of the text that has the property. In this case, ``the text'' - means all the consecutive characters that have the same Lisp object as - their @code{display} property; these characters are replaced as a - single unit. By contrast, characters that have similar but distinct - Lisp objects as their @code{display} properties are handled - separately. Here's a function that illustrates this point: ++specifications. Display specifications generally apply in parallel to ++the text they cover. ++ ++ Some kinds of @code{display} specifications specify something to ++display instead of the text that has the property. If a list of ++display specifications includes more than one of this kind, the first ++is effective and the rest are ignored. You cannot interactively move ++point into the middle of the text that is thus replaced. ++ ++ For these specifications, ``the text that has the property'' means ++all the consecutive characters that have the same Lisp object as their ++@code{display} property; these characters are replaced as a single ++unit. By contrast, characters that have similar but distinct Lisp ++objects as their @code{display} properties are handled separately. ++Here's a function that illustrates this point: + +@smallexample +(defun foo () + (goto-char (point-min)) + (dotimes (i 5) + (let ((string (concat "A"))) + (put-text-property (point) (1+ (point)) 'display string) + (forward-char 1) + (put-text-property (point) (1+ (point)) 'display string) + (forward-char 1)))) +@end smallexample + +@noindent +It gives each of the first ten characters in the buffer string +@code{"A"} as the @code{display} property, but they don't all get the +same string. The first two characters get the same string, so they +together are replaced with one @samp{A}. The next two characters get +a second string, so they together are replaced with one @samp{A}. +Likewise for each following pair of characters. Thus, the ten +characters appear as five A's. This function would have the same +results: + +@smallexample +(defun foo () + (goto-char (point-min)) + (dotimes (i 5) + (let ((string (concat "A"))) - (put-text-property (point) (2+ (point)) 'display string) ++ (put-text-property (point) (+ 2 (point)) 'display string) + (put-text-property (point) (1+ (point)) 'display string) + (forward-char 2)))) +@end smallexample + +@noindent +This illustrates that what matters is the property value for +each character. If two consecutive characters have the same +object as the @code{display} property value, it's irrelevant +whether they got this property from a single call to +@code{put-text-property} or from two different calls. + + The rest of this section describes several kinds of +display specifications and what they mean. + +@menu +* Specified Space:: Displaying one space with a specified width. +* Pixel Specification:: Specifying space width or height in pixels. +* Other Display Specs:: Displaying an image; magnifying text; moving it + up or down on the page; adjusting the width + of spaces within text. +* Display Margins:: Displaying text or images to the side of the main text. +@end menu + +@node Specified Space +@subsection Specified Spaces +@cindex spaces, specified height or width +@cindex variable-width spaces + + To display a space of specified width and/or height, use a display +specification of the form @code{(space . @var{props})}, where +@var{props} is a property list (a list of alternating properties and +values). You can put this property on one or more consecutive +characters; a space of the specified height and width is displayed in +place of @emph{all} of those characters. These are the properties you +can use in @var{props} to specify the weight of the space: + +@table @code +@item :width @var{width} +If @var{width} is an integer or floating point number, it specifies +that the space width should be @var{width} times the normal character +width. @var{width} can also be a @dfn{pixel width} specification +(@pxref{Pixel Specification}). + +@item :relative-width @var{factor} +Specifies that the width of the stretch should be computed from the +first character in the group of consecutive characters that have the +same @code{display} property. The space width is the width of that +character, multiplied by @var{factor}. + +@item :align-to @var{hpos} +Specifies that the space should be wide enough to reach @var{hpos}. +If @var{hpos} is a number, it is measured in units of the normal +character width. @var{hpos} can also be a @dfn{pixel width} +specification (@pxref{Pixel Specification}). +@end table + + You should use one and only one of the above properties. You can +also specify the height of the space, with these properties: + +@table @code +@item :height @var{height} +Specifies the height of the space. +If @var{height} is an integer or floating point number, it specifies +that the space height should be @var{height} times the normal character +height. The @var{height} may also be a @dfn{pixel height} specification +(@pxref{Pixel Specification}). + +@item :relative-height @var{factor} +Specifies the height of the space, multiplying the ordinary height +of the text having this display specification by @var{factor}. + +@item :ascent @var{ascent} +If the value of @var{ascent} is a non-negative number no greater than +100, it specifies that @var{ascent} percent of the height of the space +should be considered as the ascent of the space---that is, the part +above the baseline. The ascent may also be specified in pixel units +with a @dfn{pixel ascent} specification (@pxref{Pixel Specification}). + +@end table + + Don't use both @code{:height} and @code{:relative-height} together. + + The @code{:width} and @code{:align-to} properties are supported on +non-graphic terminals, but the other space properties in this section +are not. + +@node Pixel Specification +@subsection Pixel Specification for Spaces +@cindex spaces, pixel specification + + The value of the @code{:width}, @code{:align-to}, @code{:height}, +and @code{:ascent} properties can be a special kind of expression that +is evaluated during redisplay. The result of the evaluation is used +as an absolute number of pixels. + + The following expressions are supported: + +@smallexample +@group + @var{expr} ::= @var{num} | (@var{num}) | @var{unit} | @var{elem} | @var{pos} | @var{image} | @var{form} + @var{num} ::= @var{integer} | @var{float} | @var{symbol} + @var{unit} ::= in | mm | cm | width | height +@end group +@group + @var{elem} ::= left-fringe | right-fringe | left-margin | right-margin + | scroll-bar | text + @var{pos} ::= left | center | right + @var{form} ::= (@var{num} . @var{expr}) | (@var{op} @var{expr} ...) + @var{op} ::= + | - +@end group +@end smallexample + + The form @var{num} specifies a fraction of the default frame font +height or width. The form @code{(@var{num})} specifies an absolute +number of pixels. If @var{num} is a symbol, @var{symbol}, its +buffer-local variable binding is used. + + The @code{in}, @code{mm}, and @code{cm} units specify the number of +pixels per inch, millimeter, and centimeter, respectively. The +@code{width} and @code{height} units correspond to the default width +and height of the current face. An image specification @code{image} +corresponds to the width or height of the image. + + The @code{left-fringe}, @code{right-fringe}, @code{left-margin}, +@code{right-margin}, @code{scroll-bar}, and @code{text} elements +specify to the width of the corresponding area of the window. + + The @code{left}, @code{center}, and @code{right} positions can be +used with @code{:align-to} to specify a position relative to the left +edge, center, or right edge of the text area. + + Any of the above window elements (except @code{text}) can also be +used with @code{:align-to} to specify that the position is relative to +the left edge of the given area. Once the base offset for a relative +position has been set (by the first occurrence of one of these +symbols), further occurrences of these symbols are interpreted as the +width of the specified area. For example, to align to the center of +the left-margin, use + +@example +:align-to (+ left-margin (0.5 . left-margin)) +@end example + + If no specific base offset is set for alignment, it is always relative +to the left edge of the text area. For example, @samp{:align-to 0} in a +header-line aligns with the first text column in the text area. + + A value of the form @code{(@var{num} . @var{expr})} stands for the +product of the values of @var{num} and @var{expr}. For example, +@code{(2 . in)} specifies a width of 2 inches, while @code{(0.5 . +@var{image})} specifies half the width (or height) of the specified +image. + + The form @code{(+ @var{expr} ...)} adds up the value of the +expressions. The form @code{(- @var{expr} ...)} negates or subtracts +the value of the expressions. + +@node Other Display Specs +@subsection Other Display Specifications + + Here are the other sorts of display specifications that you can use +in the @code{display} text property. + +@table @code +@item @var{string} +Display @var{string} instead of the text that has this property. + +Recursive display specifications are not supported---@var{string}'s +@code{display} properties, if any, are not used. + +@item (image . @var{image-props}) +This kind of display specification is an image descriptor (@pxref{Images}). +When used as a display specification, it means to display the image +instead of the text that has the display specification. + +@item (slice @var{x} @var{y} @var{width} @var{height}) +This specification together with @code{image} specifies a @dfn{slice} +(a partial area) of the image to display. The elements @var{y} and +@var{x} specify the top left corner of the slice, within the image; +@var{width} and @var{height} specify the width and height of the +slice. Integer values are numbers of pixels. A floating point number +in the range 0.0--1.0 stands for that fraction of the width or height +of the entire image. + +@item ((margin nil) @var{string}) +A display specification of this form means to display @var{string} +instead of the text that has the display specification, at the same +position as that text. It is equivalent to using just @var{string}, +but it is done as a special case of marginal display (@pxref{Display +Margins}). + +@item (space-width @var{factor}) +This display specification affects all the space characters within the +text that has the specification. It displays all of these spaces +@var{factor} times as wide as normal. The element @var{factor} should +be an integer or float. Characters other than spaces are not affected +at all; in particular, this has no effect on tab characters. + +@item (height @var{height}) +This display specification makes the text taller or shorter. +Here are the possibilities for @var{height}: + +@table @asis +@item @code{(+ @var{n})} +This means to use a font that is @var{n} steps larger. A ``step'' is +defined by the set of available fonts---specifically, those that match +what was otherwise specified for this text, in all attributes except +height. Each size for which a suitable font is available counts as +another step. @var{n} should be an integer. + +@item @code{(- @var{n})} +This means to use a font that is @var{n} steps smaller. + +@item a number, @var{factor} +A number, @var{factor}, means to use a font that is @var{factor} times +as tall as the default font. + +@item a symbol, @var{function} +A symbol is a function to compute the height. It is called with the +current height as argument, and should return the new height to use. + +@item anything else, @var{form} +If the @var{height} value doesn't fit the previous possibilities, it is +a form. Emacs evaluates it to get the new height, with the symbol +@code{height} bound to the current specified font height. +@end table + +@item (raise @var{factor}) +This kind of display specification raises or lowers the text +it applies to, relative to the baseline of the line. + +@var{factor} must be a number, which is interpreted as a multiple of the +height of the affected text. If it is positive, that means to display +the characters raised. If it is negative, that means to display them +lower down. + +If the text also has a @code{height} display specification, that does +not affect the amount of raising or lowering, which is based on the +faces used for the text. +@end table + +@c We put all the `@code{(when ...)}' on one line to encourage +@c makeinfo's end-of-sentence heuristics to DTRT. Previously, the dot +@c was at eol; the info file ended up w/ two spaces rendered after it. + You can make any display specification conditional. To do that, +package it in another list of the form +@code{(when @var{condition} . @var{spec})}. +Then the specification @var{spec} applies only when +@var{condition} evaluates to a non-@code{nil} value. During the +evaluation, @code{object} is bound to the string or buffer having the +conditional @code{display} property. @code{position} and +@code{buffer-position} are bound to the position within @code{object} +and the buffer position where the @code{display} property was found, +respectively. Both positions can be different when @code{object} is a +string. + +@node Display Margins +@subsection Displaying in the Margins +@cindex display margins +@cindex margins, display + + A buffer can have blank areas called @dfn{display margins} on the left +and on the right. Ordinary text never appears in these areas, but you +can put things into the display margins using the @code{display} +property. + + To put text in the left or right display margin of the window, use a +display specification of the form @code{(margin right-margin)} or +@code{(margin left-margin)} on it. To put an image in a display margin, +use that display specification along with the display specification for +the image. Unfortunately, there is currently no way to make +text or images in the margin mouse-sensitive. + + If you put such a display specification directly on text in the +buffer, the specified margin display appears @emph{instead of} that +buffer text itself. To put something in the margin @emph{in +association with} certain buffer text without preventing or altering +the display of that text, put a @code{before-string} property on the +text and put the display specification on the contents of the +before-string. + + Before the display margins can display anything, you must give +them a nonzero width. The usual way to do that is to set these +variables: + +@defvar left-margin-width +This variable specifies the width of the left margin. +It is buffer-local in all buffers. +@end defvar + +@defvar right-margin-width +This variable specifies the width of the right margin. +It is buffer-local in all buffers. +@end defvar + + Setting these variables does not immediately affect the window. These +variables are checked when a new buffer is displayed in the window. +Thus, you can make changes take effect by calling +@code{set-window-buffer}. + + You can also set the margin widths immediately. + +@defun set-window-margins window left &optional right +This function specifies the margin widths for window @var{window}. +The argument @var{left} controls the left margin and +@var{right} controls the right margin (default @code{0}). +@end defun + +@defun window-margins &optional window +This function returns the left and right margins of @var{window} +as a cons cell of the form @code{(@var{left} . @var{right})}. +If @var{window} is @code{nil}, the selected window is used. +@end defun + +@node Images +@section Images +@cindex images in buffers + + To display an image in an Emacs buffer, you must first create an image +descriptor, then use it as a display specifier in the @code{display} +property of text that is displayed (@pxref{Display Property}). + + Emacs is usually able to display images when it is run on a +graphical terminal. Images cannot be displayed in a text terminal, on +certain graphical terminals that lack the support for this, or if +Emacs is compiled without image support. You can use the function +@code{display-images-p} to determine if images can in principle be +displayed (@pxref{Display Feature Testing}). + +@menu +* Image Formats:: Supported image formats. +* Image Descriptors:: How to specify an image for use in @code{:display}. +* XBM Images:: Special features for XBM format. +* XPM Images:: Special features for XPM format. +* GIF Images:: Special features for GIF format. +* PostScript Images:: Special features for PostScript format. +* Other Image Types:: Various other formats are supported. +* Defining Images:: Convenient ways to define an image for later use. +* Showing Images:: Convenient ways to display an image once it is defined. +* Image Cache:: Internal mechanisms of image display. +@end menu + +@node Image Formats +@subsection Image Formats +@cindex image formats +@cindex image types + + Emacs can display a number of different image formats; some of them +are supported only if particular support libraries are installed on +your machine. In some environments, Emacs can load image +libraries on demand; if so, the variable @code{image-library-alist} +can be used to modify the set of known names for these dynamic +libraries (though it is not possible to add new image formats). + + The supported image formats include XBM, XPM (this requires the +libraries @code{libXpm} version 3.4k and @code{libz}), GIF (requiring +@code{libungif} 4.1.0), PostScript, PBM, JPEG (requiring the +@code{libjpeg} library version v6a), TIFF (requiring @code{libtiff} +v3.4), PNG (requiring @code{libpng} 1.0.2), and SVG (requiring +@code{librsvg} 2.0.0). + + You specify one of these formats with an image type symbol. The image +type symbols are @code{xbm}, @code{xpm}, @code{gif}, @code{postscript}, +@code{pbm}, @code{jpeg}, @code{tiff}, @code{png}, and @code{svg}. + +@defvar image-types +This variable contains a list of those image type symbols that are +potentially supported in the current configuration. +@emph{Potentially} here means that Emacs knows about the image types, +not necessarily that they can be loaded (they could depend on +unavailable dynamic libraries, for example). + +To know which image types are really available, use +@code{image-type-available-p}. +@end defvar + +@defvar image-library-alist +This in an alist of image types vs external libraries needed to +display them. + +Each element is a list @code{(@var{image-type} @var{library}...)}, +where the car is a supported image format from @code{image-types}, and +the rest are strings giving alternate filenames for the corresponding +external libraries to load. + +Emacs tries to load the libraries in the order they appear on the +list; if none is loaded, the running session of Emacs won't support +the image type. @code{pbm} and @code{xbm} don't need to be listed; +they're always supported. + +This variable is ignored if the image libraries are statically linked +into Emacs. +@end defvar + +@defun image-type-available-p type +This function returns non-@code{nil} if image type @var{type} is +available, i.e., if images of this type can be loaded and displayed in +Emacs. @var{type} should be one of the types contained in +@code{image-types}. + +For image types whose support libraries are statically linked, this +function always returns @code{t}; for other image types, it returns +@code{t} if the dynamic library could be loaded, @code{nil} otherwise. +@end defun + +@node Image Descriptors +@subsection Image Descriptors +@cindex image descriptor + + An image description is a list of the form @code{(image . @var{props})}, +where @var{props} is a property list containing alternating keyword +symbols (symbols whose names start with a colon) and their values. +You can use any Lisp object as a property, but the only properties +that have any special meaning are certain symbols, all of them keywords. + + Every image descriptor must contain the property @code{:type +@var{type}} to specify the format of the image. The value of @var{type} +should be an image type symbol; for example, @code{xpm} for an image in +XPM format. + + Here is a list of other properties that are meaningful for all image +types: + +@table @code +@item :file @var{file} +The @code{:file} property says to load the image from file +@var{file}. If @var{file} is not an absolute file name, it is expanded +in @code{data-directory}. + +@item :data @var{data} +The @code{:data} property says the actual contents of the image. +Each image must use either @code{:data} or @code{:file}, but not both. +For most image types, the value of the @code{:data} property should be a +string containing the image data; we recommend using a unibyte string. + +Before using @code{:data}, look for further information in the section +below describing the specific image format. For some image types, +@code{:data} may not be supported; for some, it allows other data types; +for some, @code{:data} alone is not enough, so you need to use other +image properties along with @code{:data}. + +@item :margin @var{margin} +The @code{:margin} property specifies how many pixels to add as an +extra margin around the image. The value, @var{margin}, must be a +non-negative number, or a pair @code{(@var{x} . @var{y})} of such +numbers. If it is a pair, @var{x} specifies how many pixels to add +horizontally, and @var{y} specifies how many pixels to add vertically. +If @code{:margin} is not specified, the default is zero. + +@item :ascent @var{ascent} +The @code{:ascent} property specifies the amount of the image's +height to use for its ascent---that is, the part above the baseline. +The value, @var{ascent}, must be a number in the range 0 to 100, or +the symbol @code{center}. + +If @var{ascent} is a number, that percentage of the image's height is +used for its ascent. + +If @var{ascent} is @code{center}, the image is vertically centered +around a centerline which would be the vertical centerline of text drawn +at the position of the image, in the manner specified by the text +properties and overlays that apply to the image. + +If this property is omitted, it defaults to 50. + +@item :relief @var{relief} +The @code{:relief} property, if non-@code{nil}, adds a shadow rectangle +around the image. The value, @var{relief}, specifies the width of the +shadow lines, in pixels. If @var{relief} is negative, shadows are drawn +so that the image appears as a pressed button; otherwise, it appears as +an unpressed button. + +@item :conversion @var{algorithm} +The @code{:conversion} property, if non-@code{nil}, specifies a +conversion algorithm that should be applied to the image before it is +displayed; the value, @var{algorithm}, specifies which algorithm. + +@table @code +@item laplace +@itemx emboss +Specifies the Laplace edge detection algorithm, which blurs out small +differences in color while highlighting larger differences. People +sometimes consider this useful for displaying the image for a +``disabled'' button. + +@item (edge-detection :matrix @var{matrix} :color-adjust @var{adjust}) +Specifies a general edge-detection algorithm. @var{matrix} must be +either a nine-element list or a nine-element vector of numbers. A pixel +at position @math{x/y} in the transformed image is computed from +original pixels around that position. @var{matrix} specifies, for each +pixel in the neighborhood of @math{x/y}, a factor with which that pixel +will influence the transformed pixel; element @math{0} specifies the +factor for the pixel at @math{x-1/y-1}, element @math{1} the factor for +the pixel at @math{x/y-1} etc., as shown below: +@iftex +@tex +$$\pmatrix{x-1/y-1 & x/y-1 & x+1/y-1 \cr + x-1/y & x/y & x+1/y \cr + x-1/y+1& x/y+1 & x+1/y+1 \cr}$$ +@end tex +@end iftex +@ifnottex +@display + (x-1/y-1 x/y-1 x+1/y-1 + x-1/y x/y x+1/y + x-1/y+1 x/y+1 x+1/y+1) +@end display +@end ifnottex + +The resulting pixel is computed from the color intensity of the color +resulting from summing up the RGB values of surrounding pixels, +multiplied by the specified factors, and dividing that sum by the sum +of the factors' absolute values. + +Laplace edge-detection currently uses a matrix of +@iftex +@tex +$$\pmatrix{1 & 0 & 0 \cr + 0& 0 & 0 \cr + 9 & 9 & -1 \cr}$$ +@end tex +@end iftex +@ifnottex +@display + (1 0 0 + 0 0 0 + 9 9 -1) +@end display +@end ifnottex + +Emboss edge-detection uses a matrix of +@iftex +@tex +$$\pmatrix{ 2 & -1 & 0 \cr + -1 & 0 & 1 \cr + 0 & 1 & -2 \cr}$$ +@end tex +@end iftex +@ifnottex +@display + ( 2 -1 0 + -1 0 1 + 0 1 -2) +@end display +@end ifnottex + +@item disabled +Specifies transforming the image so that it looks ``disabled.'' +@end table + +@item :mask @var{mask} +If @var{mask} is @code{heuristic} or @code{(heuristic @var{bg})}, build +a clipping mask for the image, so that the background of a frame is +visible behind the image. If @var{bg} is not specified, or if @var{bg} +is @code{t}, determine the background color of the image by looking at +the four corners of the image, assuming the most frequently occurring +color from the corners is the background color of the image. Otherwise, +@var{bg} must be a list @code{(@var{red} @var{green} @var{blue})} +specifying the color to assume for the background of the image. + +If @var{mask} is @code{nil}, remove a mask from the image, if it has +one. Images in some formats include a mask which can be removed by +specifying @code{:mask nil}. + +@item :pointer @var{shape} +This specifies the pointer shape when the mouse pointer is over this +image. @xref{Pointer Shape}, for available pointer shapes. + +@item :map @var{map} +This associates an image map of @dfn{hot spots} with this image. + +An image map is an alist where each element has the format +@code{(@var{area} @var{id} @var{plist})}. An @var{area} is specified +as either a rectangle, a circle, or a polygon. + +A rectangle is a cons +@code{(rect . ((@var{x0} . @var{y0}) . (@var{x1} . @var{y1})))} +which specifies the pixel coordinates of the upper left and bottom right +corners of the rectangle area. + +A circle is a cons +@code{(circle . ((@var{x0} . @var{y0}) . @var{r}))} +which specifies the center and the radius of the circle; @var{r} may +be a float or integer. + +A polygon is a cons +@code{(poly . [@var{x0} @var{y0} @var{x1} @var{y1} ...])} +where each pair in the vector describes one corner in the polygon. + +When the mouse pointer lies on a hot-spot area of an image, the +@var{plist} of that hot-spot is consulted; if it contains a @code{help-echo} +property, that defines a tool-tip for the hot-spot, and if it contains +a @code{pointer} property, that defines the shape of the mouse cursor when +it is on the hot-spot. +@xref{Pointer Shape}, for available pointer shapes. + +When you click the mouse when the mouse pointer is over a hot-spot, an +event is composed by combining the @var{id} of the hot-spot with the +mouse event; for instance, @code{[area4 mouse-1]} if the hot-spot's +@var{id} is @code{area4}. +@end table + +@defun image-mask-p spec &optional frame +This function returns @code{t} if image @var{spec} has a mask bitmap. +@var{frame} is the frame on which the image will be displayed. +@var{frame} @code{nil} or omitted means to use the selected frame +(@pxref{Input Focus}). +@end defun + +@node XBM Images +@subsection XBM Images +@cindex XBM + + To use XBM format, specify @code{xbm} as the image type. This image +format doesn't require an external library, so images of this type are +always supported. + + Additional image properties supported for the @code{xbm} image type are: + +@table @code +@item :foreground @var{foreground} +The value, @var{foreground}, should be a string specifying the image +foreground color, or @code{nil} for the default color. This color is +used for each pixel in the XBM that is 1. The default is the frame's +foreground color. + +@item :background @var{background} +The value, @var{background}, should be a string specifying the image +background color, or @code{nil} for the default color. This color is +used for each pixel in the XBM that is 0. The default is the frame's +background color. +@end table + + If you specify an XBM image using data within Emacs instead of an +external file, use the following three properties: + +@table @code +@item :data @var{data} +The value, @var{data}, specifies the contents of the image. +There are three formats you can use for @var{data}: + +@itemize @bullet +@item +A vector of strings or bool-vectors, each specifying one line of the +image. Do specify @code{:height} and @code{:width}. + +@item +A string containing the same byte sequence as an XBM file would contain. +You must not specify @code{:height} and @code{:width} in this case, +because omitting them is what indicates the data has the format of an +XBM file. The file contents specify the height and width of the image. + +@item +A string or a bool-vector containing the bits of the image (plus perhaps +some extra bits at the end that will not be used). It should contain at +least @var{width} * @code{height} bits. In this case, you must specify +@code{:height} and @code{:width}, both to indicate that the string +contains just the bits rather than a whole XBM file, and to specify the +size of the image. +@end itemize + +@item :width @var{width} +The value, @var{width}, specifies the width of the image, in pixels. + +@item :height @var{height} +The value, @var{height}, specifies the height of the image, in pixels. +@end table + +@node XPM Images +@subsection XPM Images +@cindex XPM + + To use XPM format, specify @code{xpm} as the image type. The +additional image property @code{:color-symbols} is also meaningful with +the @code{xpm} image type: + +@table @code +@item :color-symbols @var{symbols} +The value, @var{symbols}, should be an alist whose elements have the +form @code{(@var{name} . @var{color})}. In each element, @var{name} is +the name of a color as it appears in the image file, and @var{color} +specifies the actual color to use for displaying that name. +@end table + +@node GIF Images +@subsection GIF Images +@cindex GIF + + For GIF images, specify image type @code{gif}. + +@table @code +@item :index @var{index} +You can use @code{:index} to specify one image from a GIF file that +contains more than one image. This property specifies use of image +number @var{index} from the file. If the GIF file doesn't contain an +image with index @var{index}, the image displays as a hollow box. +@end table + +@ignore +This could be used to implement limited support for animated GIFs. +For example, the following function displays a multi-image GIF file +at point-min in the current buffer, switching between sub-images +every 0.1 seconds. + +(defun show-anim (file max) + "Display multi-image GIF file FILE which contains MAX subimages." + (display-anim (current-buffer) file 0 max t)) + +(defun display-anim (buffer file idx max first-time) + (when (= idx max) + (setq idx 0)) + (let ((img (create-image file nil :image idx))) + (save-excursion + (set-buffer buffer) + (goto-char (point-min)) + (unless first-time (delete-char 1)) + (insert-image img)) + (run-with-timer 0.1 nil 'display-anim buffer file (1+ idx) max nil))) +@end ignore + +@node PostScript Images +@subsection PostScript Images +@cindex postscript images + + To use PostScript for an image, specify image type @code{postscript}. +This works only if you have Ghostscript installed. You must always use +these three properties: + +@table @code +@item :pt-width @var{width} +The value, @var{width}, specifies the width of the image measured in +points (1/72 inch). @var{width} must be an integer. + +@item :pt-height @var{height} +The value, @var{height}, specifies the height of the image in points +(1/72 inch). @var{height} must be an integer. + +@item :bounding-box @var{box} +The value, @var{box}, must be a list or vector of four integers, which +specifying the bounding box of the PostScript image, analogous to the +@samp{BoundingBox} comment found in PostScript files. + +@example +%%BoundingBox: 22 171 567 738 +@end example +@end table + + Displaying PostScript images from Lisp data is not currently +implemented, but it may be implemented by the time you read this. +See the @file{etc/NEWS} file to make sure. + +@node Other Image Types +@subsection Other Image Types +@cindex PBM + + For PBM images, specify image type @code{pbm}. Color, gray-scale and +monochromatic images are supported. For mono PBM images, two additional +image properties are supported. + +@table @code +@item :foreground @var{foreground} +The value, @var{foreground}, should be a string specifying the image +foreground color, or @code{nil} for the default color. This color is +used for each pixel in the XBM that is 1. The default is the frame's +foreground color. + +@item :background @var{background} +The value, @var{background}, should be a string specifying the image +background color, or @code{nil} for the default color. This color is +used for each pixel in the XBM that is 0. The default is the frame's +background color. +@end table + + For JPEG images, specify image type @code{jpeg}. + + For TIFF images, specify image type @code{tiff}. + + For PNG images, specify image type @code{png}. + + For SVG images, specify image type @code{svg}. + +@node Defining Images +@subsection Defining Images + + The functions @code{create-image}, @code{defimage} and +@code{find-image} provide convenient ways to create image descriptors. + +@defun create-image file-or-data &optional type data-p &rest props +This function creates and returns an image descriptor which uses the +data in @var{file-or-data}. @var{file-or-data} can be a file name or +a string containing the image data; @var{data-p} should be @code{nil} +for the former case, non-@code{nil} for the latter case. + +The optional argument @var{type} is a symbol specifying the image type. +If @var{type} is omitted or @code{nil}, @code{create-image} tries to +determine the image type from the file's first few bytes, or else +from the file's name. + +The remaining arguments, @var{props}, specify additional image +properties---for example, + +@example +(create-image "foo.xpm" 'xpm nil :heuristic-mask t) +@end example + +The function returns @code{nil} if images of this type are not +supported. Otherwise it returns an image descriptor. +@end defun + +@defmac defimage symbol specs &optional doc +This macro defines @var{symbol} as an image name. The arguments +@var{specs} is a list which specifies how to display the image. +The third argument, @var{doc}, is an optional documentation string. + +Each argument in @var{specs} has the form of a property list, and each +one should specify at least the @code{:type} property and either the +@code{:file} or the @code{:data} property. The value of @code{:type} +should be a symbol specifying the image type, the value of +@code{:file} is the file to load the image from, and the value of +@code{:data} is a string containing the actual image data. Here is an +example: + +@example +(defimage test-image + ((:type xpm :file "~/test1.xpm") + (:type xbm :file "~/test1.xbm"))) +@end example + +@code{defimage} tests each argument, one by one, to see if it is +usable---that is, if the type is supported and the file exists. The +first usable argument is used to make an image descriptor which is +stored in @var{symbol}. + +If none of the alternatives will work, then @var{symbol} is defined +as @code{nil}. +@end defmac + +@defun find-image specs +This function provides a convenient way to find an image satisfying one +of a list of image specifications @var{specs}. + +Each specification in @var{specs} is a property list with contents +depending on image type. All specifications must at least contain the +properties @code{:type @var{type}} and either @w{@code{:file @var{file}}} +or @w{@code{:data @var{DATA}}}, where @var{type} is a symbol specifying +the image type, e.g.@: @code{xbm}, @var{file} is the file to load the +image from, and @var{data} is a string containing the actual image data. +The first specification in the list whose @var{type} is supported, and +@var{file} exists, is used to construct the image specification to be +returned. If no specification is satisfied, @code{nil} is returned. + +The image is looked for in @code{image-load-path}. +@end defun + +@defvar image-load-path +This variable's value is a list of locations in which to search for +image files. If an element is a string or a variable symbol whose +value is a string, the string is taken to be the name of a directory +to search. If an element is a variable symbol whose value is a list, +that is taken to be a list of directory names to search. + +The default is to search in the @file{images} subdirectory of the +directory specified by @code{data-directory}, then the directory +specified by @code{data-directory}, and finally in the directories in +@code{load-path}. Subdirectories are not automatically included in +the search, so if you put an image file in a subdirectory, you have to +supply the subdirectory name explicitly. For example, to find the +image @file{images/foo/bar.xpm} within @code{data-directory}, you +should specify the image as follows: + +@example +(defimage foo-image '((:type xpm :file "foo/bar.xpm"))) +@end example +@end defvar + +@defun image-load-path-for-library library image &optional path no-error +This function returns a suitable search path for images used by the +Lisp package @var{library}. + +The function searches for @var{image} first using @code{image-load-path}, +excluding @file{@code{data-directory}/images}, and then in +@code{load-path}, followed by a path suitable for @var{library}, which +includes @file{../../etc/images} and @file{../etc/images} relative to +the library file itself, and finally in +@file{@code{data-directory}/images}. + +Then this function returns a list of directories which contains first +the directory in which @var{image} was found, followed by the value of +@code{load-path}. If @var{path} is given, it is used instead of +@code{load-path}. + +If @var{no-error} is non-@code{nil} and a suitable path can't be +found, don't signal an error. Instead, return a list of directories as +before, except that @code{nil} appears in place of the image directory. + +Here is an example that uses a common idiom to provide compatibility +with versions of Emacs that lack the variable @code{image-load-path}: + +@example +(defvar image-load-path) ; shush compiler +(let* ((load-path (image-load-path-for-library + "mh-e" "mh-logo.xpm")) + (image-load-path (cons (car load-path) + (when (boundp 'image-load-path) + image-load-path)))) + (mh-tool-bar-folder-buttons-init)) +@end example +@end defun + +@node Showing Images +@subsection Showing Images + + You can use an image descriptor by setting up the @code{display} +property yourself, but it is easier to use the functions in this +section. + +@defun insert-image image &optional string area slice +This function inserts @var{image} in the current buffer at point. The +value @var{image} should be an image descriptor; it could be a value +returned by @code{create-image}, or the value of a symbol defined with +@code{defimage}. The argument @var{string} specifies the text to put +in the buffer to hold the image. If it is omitted or @code{nil}, +@code{insert-image} uses @code{" "} by default. + +The argument @var{area} specifies whether to put the image in a margin. +If it is @code{left-margin}, the image appears in the left margin; +@code{right-margin} specifies the right margin. If @var{area} is +@code{nil} or omitted, the image is displayed at point within the +buffer's text. + +The argument @var{slice} specifies a slice of the image to insert. If +@var{slice} is @code{nil} or omitted the whole image is inserted. +Otherwise, @var{slice} is a list @code{(@var{x} @var{y} @var{width} +@var{height})} which specifies the @var{x} and @var{y} positions and +@var{width} and @var{height} of the image area to insert. Integer +values are in units of pixels. A floating point number in the range +0.0--1.0 stands for that fraction of the width or height of the entire +image. + +Internally, this function inserts @var{string} in the buffer, and gives +it a @code{display} property which specifies @var{image}. @xref{Display +Property}. +@end defun + +@defun insert-sliced-image image &optional string area rows cols +This function inserts @var{image} in the current buffer at point, like +@code{insert-image}, but splits the image into @var{rows}x@var{cols} +equally sized slices. +@end defun + +@defun put-image image pos &optional string area +This function puts image @var{image} in front of @var{pos} in the +current buffer. The argument @var{pos} should be an integer or a +marker. It specifies the buffer position where the image should appear. +The argument @var{string} specifies the text that should hold the image +as an alternative to the default. + +The argument @var{image} must be an image descriptor, perhaps returned +by @code{create-image} or stored by @code{defimage}. + +The argument @var{area} specifies whether to put the image in a margin. +If it is @code{left-margin}, the image appears in the left margin; +@code{right-margin} specifies the right margin. If @var{area} is +@code{nil} or omitted, the image is displayed at point within the +buffer's text. + +Internally, this function creates an overlay, and gives it a +@code{before-string} property containing text that has a @code{display} +property whose value is the image. (Whew!) +@end defun + +@defun remove-images start end &optional buffer +This function removes images in @var{buffer} between positions +@var{start} and @var{end}. If @var{buffer} is omitted or @code{nil}, +images are removed from the current buffer. + +This removes only images that were put into @var{buffer} the way +@code{put-image} does it, not images that were inserted with +@code{insert-image} or in other ways. +@end defun + +@defun image-size spec &optional pixels frame +This function returns the size of an image as a pair +@w{@code{(@var{width} . @var{height})}}. @var{spec} is an image +specification. @var{pixels} non-@code{nil} means return sizes +measured in pixels, otherwise return sizes measured in canonical +character units (fractions of the width/height of the frame's default +font). @var{frame} is the frame on which the image will be displayed. +@var{frame} null or omitted means use the selected frame (@pxref{Input +Focus}). +@end defun + +@defvar max-image-size +This variable is used to define the maximum size of image that Emacs +will load. Emacs will refuse to load (and display) any image that is +larger than this limit. + +If the value is an integer, it directly specifies the maximum +image height and width, measured in pixels. If it is a floating +point number, it specifies the maximum image height and width +as a ratio to the frame height and width. If the value is +non-numeric, there is no explicit limit on the size of images. + +The purpose of this variable is to prevent unreasonably large images +from accidentally being loaded into Emacs. It only takes effect the +first time an image is loaded. Once an image is placed in the image +cache, it can always be displayed, even if the value of +@var{max-image-size} is subsequently changed (@pxref{Image Cache}). +@end defvar + +@node Image Cache +@subsection Image Cache +@cindex image cache + + Emacs stores images in an image cache so that it can display them +again more efficiently. When Emacs displays an image, it searches the +image cache for an existing image specification @code{equal} to the +desired specification. If a match is found, the image is displayed +from the cache; otherwise, Emacs loads the image normally. + + Occasionally, you may need to tell Emacs to refresh the images +associated with a given image specification. For example, suppose you +display an image using a specification that contains a @code{:file} +property. The image is loaded from the given file and stored in the +image cache. If you later display the image again, using the same +image specification, the image is displayed from the image cache. +Normally, this is not a problem. However, if the image file has +changed in the meantime, Emacs would be displaying the old version of +the image. In such a situation, it is necessary to ``refresh'' the +image using @code{image-refresh}. + +@defun image-refresh spec &optional frame +This function refreshes any images having image specifications +@code{equal} to @var{spec} on frame @var{frame}. If @var{frame} is +@code{nil}, the selected frame is used. If @var{frame} is @code{t}, +the refresh is applied to all existing frames. + +This works by removing all image with image specifications matching +@var{spec} from the image cache. Thus, the next time the image is +displayed, Emacs will load the image again. +@end defun + +@defun clear-image-cache &optional frame +This function clears the entire image cache. If @var{frame} is +non-@code{nil}, only the cache for that frame is cleared. Otherwise, +all frames' caches are cleared. +@end defun + +If an image in the image cache has not been displayed for a specified +period of time, Emacs removes it from the cache and frees the +associated memory. + +@defvar image-cache-eviction-delay +This variable specifies the number of seconds an image can remain in the +cache without being displayed. When an image is not displayed for this +length of time, Emacs removes it from the image cache. + +If the value is @code{nil}, Emacs does not remove images from the cache +except when you explicitly clear it. This mode can be useful for +debugging. +@end defvar + +@node Buttons +@section Buttons +@cindex buttons in buffers +@cindex clickable buttons in buffers + + The @emph{button} package defines functions for inserting and +manipulating clickable (with the mouse, or via keyboard commands) +buttons in Emacs buffers, such as might be used for help hyper-links, +etc. Emacs uses buttons for the hyper-links in help text and the like. + + A button is essentially a set of properties attached (via text +properties or overlays) to a region of text in an Emacs buffer. These +properties are called @dfn{button properties}. + + One of these properties (@code{action}) is a function, which will +be called when the user invokes it using the keyboard or the mouse. +The invoked function may then examine the button and use its other +properties as desired. + + In some ways the Emacs button package duplicates functionality offered +by the widget package (@pxref{Top, , Introduction, widget, The Emacs +Widget Library}), but the button package has the advantage that it is +much faster, much smaller, and much simpler to use (for elisp +programmers---for users, the result is about the same). The extra +speed and space savings are useful mainly if you need to create many +buttons in a buffer (for instance an @code{*Apropos*} buffer uses +buttons to make entries clickable, and may contain many thousands of +entries). + +@menu +* Button Properties:: Button properties with special meanings. +* Button Types:: Defining common properties for classes of buttons. +* Making Buttons:: Adding buttons to Emacs buffers. +* Manipulating Buttons:: Getting and setting properties of buttons. +* Button Buffer Commands:: Buffer-wide commands and bindings for buttons. +@end menu + +@node Button Properties +@subsection Button Properties +@cindex button properties + + Buttons have an associated list of properties defining their +appearance and behavior, and other arbitrary properties may be used +for application specific purposes. Some properties that have special +meaning to the button package include: + +@table @code +@item action +@kindex action @r{(button property)} +The function to call when the user invokes the button, which is passed +the single argument @var{button}. By default this is @code{ignore}, +which does nothing. + +@item mouse-action +@kindex mouse-action @r{(button property)} +This is similar to @code{action}, and when present, will be used +instead of @code{action} for button invocations resulting from +mouse-clicks (instead of the user hitting @key{RET}). If not +present, mouse-clicks use @code{action} instead. + +@item face +@kindex face @r{(button property)} +This is an Emacs face controlling how buttons of this type are +displayed; by default this is the @code{button} face. + +@item mouse-face +@kindex mouse-face @r{(button property)} +This is an additional face which controls appearance during +mouse-overs (merged with the usual button face); by default this is +the usual Emacs @code{highlight} face. + +@item keymap +@kindex keymap @r{(button property)} +The button's keymap, defining bindings active within the button +region. By default this is the usual button region keymap, stored +in the variable @code{button-map}, which defines @key{RET} and +@key{mouse-2} to invoke the button. + +@item type +@kindex type @r{(button property)} +The button-type of the button. When creating a button, this is +usually specified using the @code{:type} keyword argument. +@xref{Button Types}. + +@item help-echo +@kindex help-index @r{(button property)} +A string displayed by the Emacs tool-tip help system; by default, +@code{"mouse-2, RET: Push this button"}. + +@item follow-link +@kindex follow-link @r{(button property)} +The follow-link property, defining how a @key{Mouse-1} click behaves +on this button, @xref{Links and Mouse-1}. + +@item button +@kindex button @r{(button property)} +All buttons have a non-@code{nil} @code{button} property, which may be useful +in finding regions of text that comprise buttons (which is what the +standard button functions do). +@end table + + There are other properties defined for the regions of text in a +button, but these are not generally interesting for typical uses. + +@node Button Types +@subsection Button Types +@cindex button types + + Every button has a button @emph{type}, which defines default values +for the button's properties. Button types are arranged in a +hierarchy, with specialized types inheriting from more general types, +so that it's easy to define special-purpose types of buttons for +specific tasks. + +@defun define-button-type name &rest properties +Define a `button type' called @var{name}. The remaining arguments +form a sequence of @var{property value} pairs, specifying default +property values for buttons with this type (a button's type may be set +by giving it a @code{type} property when creating the button, using +the @code{:type} keyword argument). + +In addition, the keyword argument @code{:supertype} may be used to +specify a button-type from which @var{name} inherits its default +property values. Note that this inheritance happens only when +@var{name} is defined; subsequent changes to a supertype are not +reflected in its subtypes. +@end defun + + Using @code{define-button-type} to define default properties for +buttons is not necessary---buttons without any specified type use the +built-in button-type @code{button}---but it is encouraged, since +doing so usually makes the resulting code clearer and more efficient. + +@node Making Buttons +@subsection Making Buttons +@cindex making buttons + + Buttons are associated with a region of text, using an overlay or +text properties to hold button-specific information, all of which are +initialized from the button's type (which defaults to the built-in +button type @code{button}). Like all Emacs text, the appearance of +the button is governed by the @code{face} property; by default (via +the @code{face} property inherited from the @code{button} button-type) +this is a simple underline, like a typical web-page link. + + For convenience, there are two sorts of button-creation functions, +those that add button properties to an existing region of a buffer, +called @code{make-...button}, and those that also insert the button +text, called @code{insert-...button}. + + The button-creation functions all take the @code{&rest} argument +@var{properties}, which should be a sequence of @var{property value} +pairs, specifying properties to add to the button; see @ref{Button +Properties}. In addition, the keyword argument @code{:type} may be +used to specify a button-type from which to inherit other properties; +see @ref{Button Types}. Any properties not explicitly specified +during creation will be inherited from the button's type (if the type +defines such a property). + + The following functions add a button using an overlay +(@pxref{Overlays}) to hold the button properties: + +@defun make-button beg end &rest properties +This makes a button from @var{beg} to @var{end} in the +current buffer, and returns it. +@end defun + +@defun insert-button label &rest properties +This insert a button with the label @var{label} at point, +and returns it. +@end defun + + The following functions are similar, but use Emacs text properties +(@pxref{Text Properties}) to hold the button properties, making the +button actually part of the text instead of being a property of the +buffer. Buttons using text properties do not create markers into the +buffer, which is important for speed when you use extremely large +numbers of buttons. Both functions return the position of the start +of the new button: + +@defun make-text-button beg end &rest properties +This makes a button from @var{beg} to @var{end} in the current buffer, using +text properties. +@end defun + +@defun insert-text-button label &rest properties +This inserts a button with the label @var{label} at point, using text +properties. +@end defun + +@node Manipulating Buttons +@subsection Manipulating Buttons +@cindex manipulating buttons + +These are functions for getting and setting properties of buttons. +Often these are used by a button's invocation function to determine +what to do. + +Where a @var{button} parameter is specified, it means an object +referring to a specific button, either an overlay (for overlay +buttons), or a buffer-position or marker (for text property buttons). +Such an object is passed as the first argument to a button's +invocation function when it is invoked. + +@defun button-start button +Return the position at which @var{button} starts. +@end defun + +@defun button-end button +Return the position at which @var{button} ends. +@end defun + +@defun button-get button prop +Get the property of button @var{button} named @var{prop}. +@end defun + +@defun button-put button prop val +Set @var{button}'s @var{prop} property to @var{val}. +@end defun + +@defun button-activate button &optional use-mouse-action +Call @var{button}'s @code{action} property (i.e., invoke it). If +@var{use-mouse-action} is non-@code{nil}, try to invoke the button's +@code{mouse-action} property instead of @code{action}; if the button +has no @code{mouse-action} property, use @code{action} as normal. +@end defun + +@defun button-label button +Return @var{button}'s text label. +@end defun + +@defun button-type button +Return @var{button}'s button-type. +@end defun + +@defun button-has-type-p button type +Return @code{t} if @var{button} has button-type @var{type}, or one of +@var{type}'s subtypes. +@end defun + +@defun button-at pos +Return the button at position @var{pos} in the current buffer, or @code{nil}. +@end defun + +@defun button-type-put type prop val +Set the button-type @var{type}'s @var{prop} property to @var{val}. +@end defun + +@defun button-type-get type prop +Get the property of button-type @var{type} named @var{prop}. +@end defun + +@defun button-type-subtype-p type supertype +Return @code{t} if button-type @var{type} is a subtype of @var{supertype}. +@end defun + +@node Button Buffer Commands +@subsection Button Buffer Commands +@cindex button buffer commands + +These are commands and functions for locating and operating on +buttons in an Emacs buffer. + +@code{push-button} is the command that a user uses to actually `push' +a button, and is bound by default in the button itself to @key{RET} +and to @key{mouse-2} using a region-specific keymap. Commands +that are useful outside the buttons itself, such as +@code{forward-button} and @code{backward-button} are additionally +available in the keymap stored in @code{button-buffer-map}; a mode +which uses buttons may want to use @code{button-buffer-map} as a +parent keymap for its keymap. + +If the button has a non-@code{nil} @code{follow-link} property, and +@var{mouse-1-click-follows-link} is set, a quick @key{Mouse-1} click +will also activate the @code{push-button} command. +@xref{Links and Mouse-1}. + +@deffn Command push-button &optional pos use-mouse-action +Perform the action specified by a button at location @var{pos}. +@var{pos} may be either a buffer position or a mouse-event. If +@var{use-mouse-action} is non-@code{nil}, or @var{pos} is a +mouse-event (@pxref{Mouse Events}), try to invoke the button's +@code{mouse-action} property instead of @code{action}; if the button +has no @code{mouse-action} property, use @code{action} as normal. +@var{pos} defaults to point, except when @code{push-button} is invoked +interactively as the result of a mouse-event, in which case, the mouse +event's position is used. If there's no button at @var{pos}, do +nothing and return @code{nil}, otherwise return @code{t}. +@end deffn + +@deffn Command forward-button n &optional wrap display-message +Move to the @var{n}th next button, or @var{n}th previous button if +@var{n} is negative. If @var{n} is zero, move to the start of any +button at point. If @var{wrap} is non-@code{nil}, moving past either +end of the buffer continues from the other end. If +@var{display-message} is non-@code{nil}, the button's help-echo string +is displayed. Any button with a non-@code{nil} @code{skip} property +is skipped over. Returns the button found. +@end deffn + +@deffn Command backward-button n &optional wrap display-message +Move to the @var{n}th previous button, or @var{n}th next button if +@var{n} is negative. If @var{n} is zero, move to the start of any +button at point. If @var{wrap} is non-@code{nil}, moving past either +end of the buffer continues from the other end. If +@var{display-message} is non-@code{nil}, the button's help-echo string +is displayed. Any button with a non-@code{nil} @code{skip} property +is skipped over. Returns the button found. +@end deffn + +@defun next-button pos &optional count-current +@defunx previous-button pos &optional count-current +Return the next button after (for @code{next-button} or before (for +@code{previous-button}) position @var{pos} in the current buffer. If +@var{count-current} is non-@code{nil}, count any button at @var{pos} +in the search, instead of starting at the next button. +@end defun + +@node Abstract Display +@section Abstract Display +@cindex ewoc +@cindex display, abstract +@cindex display, arbitrary objects +@cindex model/view/controller +@cindex view part, model/view/controller + + The Ewoc package constructs buffer text that represents a structure +of Lisp objects, and updates the text to follow changes in that +structure. This is like the ``view'' component in the +``model/view/controller'' design paradigm. + + An @dfn{ewoc} is a structure that organizes information required to +construct buffer text that represents certain Lisp data. The buffer +text of the ewoc has three parts, in order: first, fixed @dfn{header} +text; next, textual descriptions of a series of data elements (Lisp +objects that you specify); and last, fixed @dfn{footer} text. +Specifically, an ewoc contains information on: + +@itemize @bullet +@item +The buffer which its text is generated in. + +@item +The text's start position in the buffer. + +@item +The header and footer strings. + +@item +A doubly-linked chain of @dfn{nodes}, each of which contains: + +@itemize +@item +A @dfn{data element}, a single Lisp object. + +@item +Links to the preceding and following nodes in the chain. +@end itemize + +@item +A @dfn{pretty-printer} function which is responsible for +inserting the textual representation of a data +element value into the current buffer. +@end itemize + + Typically, you define an ewoc with @code{ewoc-create}, and then pass +the resulting ewoc structure to other functions in the Ewoc package to +build nodes within it, and display it in the buffer. Once it is +displayed in the buffer, other functions determine the correspondance +between buffer positions and nodes, move point from one node's textual +representation to another, and so forth. @xref{Abstract Display +Functions}. + + A node @dfn{encapsulates} a data element much the way a variable +holds a value. Normally, encapsulation occurs as a part of adding a +node to the ewoc. You can retrieve the data element value and place a +new value in its place, like so: + +@lisp +(ewoc-data @var{node}) +@result{} value + +(ewoc-set-data @var{node} @var{new-value}) +@result{} @var{new-value} +@end lisp + +@noindent +You can also use, as the data element value, a Lisp object (list or +vector) that is a container for the ``real'' value, or an index into +some other structure. The example (@pxref{Abstract Display Example}) +uses the latter approach. + + When the data changes, you will want to update the text in the +buffer. You can update all nodes by calling @code{ewoc-refresh}, or +just specific nodes using @code{ewoc-invalidate}, or all nodes +satisfying a predicate using @code{ewoc-map}. Alternatively, you can +delete invalid nodes using @code{ewoc-delete} or @code{ewoc-filter}, +and add new nodes in their place. Deleting a node from an ewoc deletes +its associated textual description from buffer, as well. + +@menu +* Abstract Display Functions:: +* Abstract Display Example:: +@end menu + +@node Abstract Display Functions +@subsection Abstract Display Functions + + In this subsection, @var{ewoc} and @var{node} stand for the +structures described above (@pxref{Abstract Display}), while +@var{data} stands for an arbitrary Lisp object used as a data element. + +@defun ewoc-create pretty-printer &optional header footer nosep +This constructs and returns a new ewoc, with no nodes (and thus no data +elements). @var{pretty-printer} should be a function that takes one +argument, a data element of the sort you plan to use in this ewoc, and +inserts its textual description at point using @code{insert} (and never +@code{insert-before-markers}, because that would interfere with the +Ewoc package's internal mechanisms). + +Normally, a newline is automatically inserted after the header, +the footer and every node's textual description. If @var{nosep} +is non-@code{nil}, no newline is inserted. This may be useful for +displaying an entire ewoc on a single line, for example, or for +making nodes ``invisible'' by arranging for @var{pretty-printer} +to do nothing for those nodes. + +An ewoc maintains its text in the buffer that is current when +you create it, so switch to the intended buffer before calling +@code{ewoc-create}. +@end defun + +@defun ewoc-buffer ewoc +This returns the buffer where @var{ewoc} maintains its text. +@end defun + +@defun ewoc-get-hf ewoc +This returns a cons cell @code{(@var{header} . @var{footer})} +made from @var{ewoc}'s header and footer. +@end defun + +@defun ewoc-set-hf ewoc header footer +This sets the header and footer of @var{ewoc} to the strings +@var{header} and @var{footer}, respectively. +@end defun + +@defun ewoc-enter-first ewoc data +@defunx ewoc-enter-last ewoc data +These add a new node encapsulating @var{data}, putting it, respectively, +at the beginning or end of @var{ewoc}'s chain of nodes. +@end defun + +@defun ewoc-enter-before ewoc node data +@defunx ewoc-enter-after ewoc node data +These add a new node encapsulating @var{data}, adding it to +@var{ewoc} before or after @var{node}, respectively. +@end defun + +@defun ewoc-prev ewoc node +@defunx ewoc-next ewoc node +These return, respectively, the previous node and the next node of @var{node} +in @var{ewoc}. +@end defun + +@defun ewoc-nth ewoc n +This returns the node in @var{ewoc} found at zero-based index @var{n}. +A negative @var{n} means count from the end. @code{ewoc-nth} returns +@code{nil} if @var{n} is out of range. +@end defun + +@defun ewoc-data node +This extracts the data encapsulated by @var{node} and returns it. +@end defun + +@defun ewoc-set-data node data +This sets the data encapsulated by @var{node} to @var{data}. +@end defun + +@defun ewoc-locate ewoc &optional pos guess +This determines the node in @var{ewoc} which contains point (or +@var{pos} if specified), and returns that node. If @var{ewoc} has no +nodes, it returns @code{nil}. If @var{pos} is before the first node, +it returns the first node; if @var{pos} is after the last node, it returns +the last node. The optional third arg @var{guess} +should be a node that is likely to be near @var{pos}; this doesn't +alter the result, but makes the function run faster. +@end defun + +@defun ewoc-location node +This returns the start position of @var{node}. +@end defun + +@defun ewoc-goto-prev ewoc arg +@defunx ewoc-goto-next ewoc arg +These move point to the previous or next, respectively, @var{arg}th node +in @var{ewoc}. @code{ewoc-goto-prev} does not move if it is already at +the first node or if @var{ewoc} is empty, whereas @code{ewoc-goto-next} +moves past the last node, returning @code{nil}. Excepting this special +case, these functions return the node moved to. +@end defun + +@defun ewoc-goto-node ewoc node +This moves point to the start of @var{node} in @var{ewoc}. +@end defun + +@defun ewoc-refresh ewoc +This function regenerates the text of @var{ewoc}. It works by +deleting the text between the header and the footer, i.e., all the +data elements' representations, and then calling the pretty-printer +function for each node, one by one, in order. +@end defun + +@defun ewoc-invalidate ewoc &rest nodes +This is similar to @code{ewoc-refresh}, except that only @var{nodes} in +@var{ewoc} are updated instead of the entire set. +@end defun + +@defun ewoc-delete ewoc &rest nodes +This deletes each node in @var{nodes} from @var{ewoc}. +@end defun + +@defun ewoc-filter ewoc predicate &rest args +This calls @var{predicate} for each data element in @var{ewoc} and +deletes those nodes for which @var{predicate} returns @code{nil}. +Any @var{args} are passed to @var{predicate}. +@end defun + +@defun ewoc-collect ewoc predicate &rest args +This calls @var{predicate} for each data element in @var{ewoc} +and returns a list of those elements for which @var{predicate} +returns non-@code{nil}. The elements in the list are ordered +as in the buffer. Any @var{args} are passed to @var{predicate}. +@end defun + +@defun ewoc-map map-function ewoc &rest args +This calls @var{map-function} for each data element in @var{ewoc} and +updates those nodes for which @var{map-function} returns non-@code{nil}. +Any @var{args} are passed to @var{map-function}. +@end defun + +@node Abstract Display Example +@subsection Abstract Display Example + + Here is a simple example using functions of the ewoc package to +implement a ``color components display,'' an area in a buffer that +represents a vector of three integers (itself representing a 24-bit RGB +value) in various ways. + +@example +(setq colorcomp-ewoc nil + colorcomp-data nil + colorcomp-mode-map nil + colorcomp-labels ["Red" "Green" "Blue"]) + +(defun colorcomp-pp (data) + (if data + (let ((comp (aref colorcomp-data data))) + (insert (aref colorcomp-labels data) "\t: #x" + (format "%02X" comp) " " + (make-string (ash comp -2) ?#) "\n")) + (let ((cstr (format "#%02X%02X%02X" + (aref colorcomp-data 0) + (aref colorcomp-data 1) + (aref colorcomp-data 2))) + (samp " (sample text) ")) + (insert "Color\t: " + (propertize samp 'face `(foreground-color . ,cstr)) + (propertize samp 'face `(background-color . ,cstr)) + "\n")))) + +(defun colorcomp (color) + "Allow fiddling with COLOR in a new buffer. +The buffer is in Color Components mode." + (interactive "sColor (name or #RGB or #RRGGBB): ") + (when (string= "" color) + (setq color "green")) + (unless (color-values color) + (error "No such color: %S" color)) + (switch-to-buffer + (generate-new-buffer (format "originally: %s" color))) + (kill-all-local-variables) + (setq major-mode 'colorcomp-mode + mode-name "Color Components") + (use-local-map colorcomp-mode-map) + (erase-buffer) + (buffer-disable-undo) + (let ((data (apply 'vector (mapcar (lambda (n) (ash n -8)) + (color-values color)))) + (ewoc (ewoc-create 'colorcomp-pp + "\nColor Components\n\n" + (substitute-command-keys + "\n\\@{colorcomp-mode-map@}")))) + (set (make-local-variable 'colorcomp-data) data) + (set (make-local-variable 'colorcomp-ewoc) ewoc) + (ewoc-enter-last ewoc 0) + (ewoc-enter-last ewoc 1) + (ewoc-enter-last ewoc 2) + (ewoc-enter-last ewoc nil))) +@end example + +@cindex controller part, model/view/controller + This example can be extended to be a ``color selection widget'' (in +other words, the controller part of the ``model/view/controller'' +design paradigm) by defining commands to modify @code{colorcomp-data} +and to ``finish'' the selection process, and a keymap to tie it all +together conveniently. + +@smallexample +(defun colorcomp-mod (index limit delta) + (let ((cur (aref colorcomp-data index))) + (unless (= limit cur) + (aset colorcomp-data index (+ cur delta))) + (ewoc-invalidate + colorcomp-ewoc + (ewoc-nth colorcomp-ewoc index) + (ewoc-nth colorcomp-ewoc -1)))) + +(defun colorcomp-R-more () (interactive) (colorcomp-mod 0 255 1)) +(defun colorcomp-G-more () (interactive) (colorcomp-mod 1 255 1)) +(defun colorcomp-B-more () (interactive) (colorcomp-mod 2 255 1)) +(defun colorcomp-R-less () (interactive) (colorcomp-mod 0 0 -1)) +(defun colorcomp-G-less () (interactive) (colorcomp-mod 1 0 -1)) +(defun colorcomp-B-less () (interactive) (colorcomp-mod 2 0 -1)) + +(defun colorcomp-copy-as-kill-and-exit () + "Copy the color components into the kill ring and kill the buffer. +The string is formatted #RRGGBB (hash followed by six hex digits)." + (interactive) + (kill-new (format "#%02X%02X%02X" + (aref colorcomp-data 0) + (aref colorcomp-data 1) + (aref colorcomp-data 2))) + (kill-buffer nil)) + +(setq colorcomp-mode-map + (let ((m (make-sparse-keymap))) + (suppress-keymap m) + (define-key m "i" 'colorcomp-R-less) + (define-key m "o" 'colorcomp-R-more) + (define-key m "k" 'colorcomp-G-less) + (define-key m "l" 'colorcomp-G-more) + (define-key m "," 'colorcomp-B-less) + (define-key m "." 'colorcomp-B-more) + (define-key m " " 'colorcomp-copy-as-kill-and-exit) + m)) +@end smallexample + +Note that we never modify the data in each node, which is fixed when the +ewoc is created to be either @code{nil} or an index into the vector +@code{colorcomp-data}, the actual color components. + +@node Blinking +@section Blinking Parentheses +@cindex parenthesis matching +@cindex blinking parentheses +@cindex balancing parentheses + + This section describes the mechanism by which Emacs shows a matching +open parenthesis when the user inserts a close parenthesis. + +@defvar blink-paren-function +The value of this variable should be a function (of no arguments) to +be called whenever a character with close parenthesis syntax is inserted. +The value of @code{blink-paren-function} may be @code{nil}, in which +case nothing is done. +@end defvar + +@defopt blink-matching-paren +If this variable is @code{nil}, then @code{blink-matching-open} does +nothing. +@end defopt + +@defopt blink-matching-paren-distance +This variable specifies the maximum distance to scan for a matching +parenthesis before giving up. +@end defopt + +@defopt blink-matching-delay +This variable specifies the number of seconds for the cursor to remain +at the matching parenthesis. A fraction of a second often gives +good results, but the default is 1, which works on all systems. +@end defopt + +@deffn Command blink-matching-open +This function is the default value of @code{blink-paren-function}. It +assumes that point follows a character with close parenthesis syntax and +moves the cursor momentarily to the matching opening character. If that +character is not already on the screen, it displays the character's +context in the echo area. To avoid long delays, this function does not +search farther than @code{blink-matching-paren-distance} characters. + +Here is an example of calling this function explicitly. + +@smallexample +@group +(defun interactive-blink-matching-open () +@c Do not break this line! -- rms. +@c The first line of a doc string +@c must stand alone. + "Indicate momentarily the start of sexp before point." + (interactive) +@end group +@group + (let ((blink-matching-paren-distance + (buffer-size)) + (blink-matching-paren t)) + (blink-matching-open))) +@end group +@end smallexample +@end deffn + +@node Usual Display +@section Usual Display Conventions + + The usual display conventions define how to display each character +code. You can override these conventions by setting up a display table +(@pxref{Display Tables}). Here are the usual display conventions: + +@itemize @bullet +@item +Character codes 32 through 126 map to glyph codes 32 through 126. +Normally this means they display as themselves. + +@item +Character code 9 is a horizontal tab. It displays as whitespace +up to a position determined by @code{tab-width}. + +@item +Character code 10 is a newline. + +@item +All other codes in the range 0 through 31, and code 127, display in one +of two ways according to the value of @code{ctl-arrow}. If it is +non-@code{nil}, these codes map to sequences of two glyphs, where the +first glyph is the @acronym{ASCII} code for @samp{^}. (A display table can +specify a glyph to use instead of @samp{^}.) Otherwise, these codes map +just like the codes in the range 128 to 255. + +On MS-DOS terminals, Emacs arranges by default for the character code +127 to be mapped to the glyph code 127, which normally displays as an +empty polygon. This glyph is used to display non-@acronym{ASCII} characters +that the MS-DOS terminal doesn't support. @xref{MS-DOS and MULE,,, +emacs, The GNU Emacs Manual}. + +@item +Character codes 128 through 255 map to sequences of four glyphs, where +the first glyph is the @acronym{ASCII} code for @samp{\}, and the others are +digit characters representing the character code in octal. (A display +table can specify a glyph to use instead of @samp{\}.) + +@item +Multibyte character codes above 256 are displayed as themselves, or as a +question mark or empty box if the terminal cannot display that +character. +@end itemize + + The usual display conventions apply even when there is a display +table, for any character whose entry in the active display table is +@code{nil}. Thus, when you set up a display table, you need only +specify the characters for which you want special behavior. + + These display rules apply to carriage return (character code 13), when +it appears in the buffer. But that character may not appear in the +buffer where you expect it, if it was eliminated as part of end-of-line +conversion (@pxref{Coding System Basics}). + + These variables affect the way certain characters are displayed on the +screen. Since they change the number of columns the characters occupy, +they also affect the indentation functions. These variables also affect +how the mode line is displayed; if you want to force redisplay of the +mode line using the new values, call the function +@code{force-mode-line-update} (@pxref{Mode Line Format}). + +@defopt ctl-arrow +@cindex control characters in display +This buffer-local variable controls how control characters are +displayed. If it is non-@code{nil}, they are displayed as a caret +followed by the character: @samp{^A}. If it is @code{nil}, they are +displayed as a backslash followed by three octal digits: @samp{\001}. +@end defopt + +@c Following may have overfull hbox. +@defvar default-ctl-arrow +The value of this variable is the default value for @code{ctl-arrow} in +buffers that do not override it. @xref{Default Value}. +@end defvar + +@defopt tab-width +The value of this buffer-local variable is the spacing between tab +stops used for displaying tab characters in Emacs buffers. The value +is in units of columns, and the default is 8. Note that this feature +is completely independent of the user-settable tab stops used by the +command @code{tab-to-tab-stop}. @xref{Indent Tabs}. +@end defopt + +@node Display Tables +@section Display Tables + +@cindex display table +You can use the @dfn{display table} feature to control how all possible +character codes display on the screen. This is useful for displaying +European languages that have letters not in the @acronym{ASCII} character +set. + +The display table maps each character code into a sequence of +@dfn{glyphs}, each glyph being a graphic that takes up one character +position on the screen. You can also define how to display each glyph +on your terminal, using the @dfn{glyph table}. + +Display tables affect how the mode line is displayed; if you want to +force redisplay of the mode line using a new display table, call +@code{force-mode-line-update} (@pxref{Mode Line Format}). + +@menu +* Display Table Format:: What a display table consists of. +* Active Display Table:: How Emacs selects a display table to use. +* Glyphs:: How to define a glyph, and what glyphs mean. +@end menu + +@node Display Table Format +@subsection Display Table Format + + A display table is actually a char-table (@pxref{Char-Tables}) with +@code{display-table} as its subtype. + +@defun make-display-table +This creates and returns a display table. The table initially has +@code{nil} in all elements. +@end defun + + The ordinary elements of the display table are indexed by character +codes; the element at index @var{c} says how to display the character +code @var{c}. The value should be @code{nil} or a vector of the +glyphs to be output (@pxref{Glyphs}). @code{nil} says to display the +character @var{c} according to the usual display conventions +(@pxref{Usual Display}). + + @strong{Warning:} if you use the display table to change the display +of newline characters, the whole buffer will be displayed as one long +``line.'' + + The display table also has six ``extra slots'' which serve special +purposes. Here is a table of their meanings; @code{nil} in any slot +means to use the default for that slot, as stated below. + +@table @asis +@item 0 +The glyph for the end of a truncated screen line (the default for this +is @samp{$}). @xref{Glyphs}. On graphical terminals, Emacs uses +arrows in the fringes to indicate truncation, so the display table has +no effect. + +@item 1 +The glyph for the end of a continued line (the default is @samp{\}). +On graphical terminals, Emacs uses curved arrows in the fringes to +indicate continuation, so the display table has no effect. + +@item 2 +The glyph for indicating a character displayed as an octal character +code (the default is @samp{\}). + +@item 3 +The glyph for indicating a control character (the default is @samp{^}). + +@item 4 +A vector of glyphs for indicating the presence of invisible lines (the +default is @samp{...}). @xref{Selective Display}. + +@item 5 +The glyph used to draw the border between side-by-side windows (the +default is @samp{|}). @xref{Splitting Windows}. This takes effect only +when there are no scroll bars; if scroll bars are supported and in use, +a scroll bar separates the two windows. +@end table + + For example, here is how to construct a display table that mimics the +effect of setting @code{ctl-arrow} to a non-@code{nil} value: + +@example +(setq disptab (make-display-table)) +(let ((i 0)) + (while (< i 32) + (or (= i ?\t) (= i ?\n) + (aset disptab i (vector ?^ (+ i 64)))) + (setq i (1+ i))) + (aset disptab 127 (vector ?^ ??))) +@end example + +@defun display-table-slot display-table slot +This function returns the value of the extra slot @var{slot} of +@var{display-table}. The argument @var{slot} may be a number from 0 to +5 inclusive, or a slot name (symbol). Valid symbols are +@code{truncation}, @code{wrap}, @code{escape}, @code{control}, +@code{selective-display}, and @code{vertical-border}. +@end defun + +@defun set-display-table-slot display-table slot value +This function stores @var{value} in the extra slot @var{slot} of +@var{display-table}. The argument @var{slot} may be a number from 0 to +5 inclusive, or a slot name (symbol). Valid symbols are +@code{truncation}, @code{wrap}, @code{escape}, @code{control}, +@code{selective-display}, and @code{vertical-border}. +@end defun + +@defun describe-display-table display-table +This function displays a description of the display table +@var{display-table} in a help buffer. +@end defun + +@deffn Command describe-current-display-table +This command displays a description of the current display table in a +help buffer. +@end deffn + +@node Active Display Table +@subsection Active Display Table +@cindex active display table + + Each window can specify a display table, and so can each buffer. When +a buffer @var{b} is displayed in window @var{w}, display uses the +display table for window @var{w} if it has one; otherwise, the display +table for buffer @var{b} if it has one; otherwise, the standard display +table if any. The display table chosen is called the @dfn{active} +display table. + +@defun window-display-table &optional window +This function returns @var{window}'s display table, or @code{nil} +if @var{window} does not have an assigned display table. The default +for @var{window} is the selected window. +@end defun + +@defun set-window-display-table window table +This function sets the display table of @var{window} to @var{table}. +The argument @var{table} should be either a display table or +@code{nil}. +@end defun + +@defvar buffer-display-table +This variable is automatically buffer-local in all buffers; its value in +a particular buffer specifies the display table for that buffer. If it +is @code{nil}, that means the buffer does not have an assigned display +table. +@end defvar + +@defvar standard-display-table +This variable's value is the default display table, used whenever a +window has no display table and neither does the buffer displayed in +that window. This variable is @code{nil} by default. +@end defvar + + If there is no display table to use for a particular window---that is, +if the window specifies none, its buffer specifies none, and +@code{standard-display-table} is @code{nil}---then Emacs uses the usual +display conventions for all character codes in that window. @xref{Usual +Display}. + +A number of functions for changing the standard display table +are defined in the library @file{disp-table}. + +@node Glyphs +@subsection Glyphs + +@cindex glyph + A @dfn{glyph} is a generalization of a character; it stands for an +image that takes up a single character position on the screen. Normally +glyphs come from vectors in the display table (@pxref{Display Tables}). + + A glyph is represented in Lisp as a @dfn{glyph code}. A glyph code +can be @dfn{simple} or it can be defined by the @dfn{glyph table}. A +simple glyph code is just a way of specifying a character and a face +to output it in. @xref{Faces}. + + The following functions are used to manipulate simple glyph codes: + +@defun make-glyph-code char &optional face +This function returns a simple glyph code representing char @var{char} +with face @var{face}. +@end defun + +@defun glyph-char glyph +This function returns the character of simple glyph code @var{glyph}. +@end defun + +@defun glyph-face glyph +This function returns face of simple glyph code @var{glyph}, or +@code{nil} if @var{glyph} has the default face (face-id 0). +@end defun + + On character terminals, you can set up a @dfn{glyph table} to define +the meaning of glyph codes (represented as small integers). + +@defvar glyph-table +The value of this variable is the current glyph table. It should be +@code{nil} or a vector whose @var{g}th element defines glyph code +@var{g}. + +If a glyph code is greater than or equal to the length of the glyph +table, that code is automatically simple. If @code{glyph-table} is +@code{nil} then all glyph codes are simple. + +The glyph table is used only on character terminals. On graphical +displays, all glyph codes are simple. +@end defvar + + Here are the meaningful types of elements in the glyph table: + +@table @asis +@item @var{string} +Send the characters in @var{string} to the terminal to output +this glyph code. + +@item @var{code} +Define this glyph code as an alias for glyph code @var{code} created +by @code{make-glyph-code}. You can use such an alias to define a +small-numbered glyph code which specifies a character with a face. + +@item @code{nil} +This glyph code is simple. +@end table + +@defun create-glyph string +This function returns a newly-allocated glyph code which is set up to +display by sending @var{string} to the terminal. +@end defun + +@node Beeping +@section Beeping +@c @cindex beeping "beep" is adjacent +@cindex bell + + This section describes how to make Emacs ring the bell (or blink the +screen) to attract the user's attention. Be conservative about how +often you do this; frequent bells can become irritating. Also be +careful not to use just beeping when signaling an error is more +appropriate. (@xref{Errors}.) + +@defun ding &optional do-not-terminate +@cindex keyboard macro termination +This function beeps, or flashes the screen (see @code{visible-bell} below). +It also terminates any keyboard macro currently executing unless +@var{do-not-terminate} is non-@code{nil}. +@end defun + +@defun beep &optional do-not-terminate +This is a synonym for @code{ding}. +@end defun + +@defopt visible-bell +This variable determines whether Emacs should flash the screen to +represent a bell. Non-@code{nil} means yes, @code{nil} means no. This +is effective on graphical displays, and on text-only terminals +provided the terminal's Termcap entry defines the visible bell +capability (@samp{vb}). +@end defopt + +@defvar ring-bell-function +If this is non-@code{nil}, it specifies how Emacs should ``ring the +bell.'' Its value should be a function of no arguments. If this is +non-@code{nil}, it takes precedence over the @code{visible-bell} +variable. +@end defvar + +@node Window Systems +@section Window Systems + + Emacs works with several window systems, most notably the X Window +System. Both Emacs and X use the term ``window,'' but use it +differently. An Emacs frame is a single window as far as X is +concerned; the individual Emacs windows are not known to X at all. + +@defvar window-system +This variable tells Lisp programs what window system Emacs is running +under. The possible values are + +@table @code +@item x +@cindex X Window System +Emacs is displaying using X. +@item pc +Emacs is displaying using MS-DOS. +@item w32 +Emacs is displaying using Windows. +@item mac +Emacs is displaying using a Macintosh. +@item nil +Emacs is using a character-based terminal. +@end table +@end defvar + +@defvar window-setup-hook +This variable is a normal hook which Emacs runs after handling the +initialization files. Emacs runs this hook after it has completed +loading your init file, the default initialization file (if +any), and the terminal-specific Lisp code, and running the hook +@code{term-setup-hook}. + +This hook is used for internal purposes: setting up communication with +the window system, and creating the initial window. Users should not +interfere with it. +@end defvar + +@ignore + arch-tag: ffdf5714-7ecf-415b-9023-fbc6b409c2c6 +@end ignore diff --cc doc/lispref/frames.texi index 2ab0a65a633,00000000000..ee07302d76b mode 100644,000000..100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@@ -1,2208 -1,0 +1,2217 @@@ +@c -*-texinfo-*- +@c This is part of the GNU Emacs Lisp Reference Manual. +@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, +@c 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See the file elisp.texi for copying conditions. +@setfilename ../../info/frames +@node Frames, Positions, Windows, Top +@chapter Frames +@cindex frame + + In Emacs editing, A @dfn{frame} is a screen object that contains one +or more Emacs windows. It's the kind of object that is called a +``window'' in the terminology of graphical environments; but we can't +call it a ``window'' here, because Emacs uses that word in a different +way. + + A frame initially contains a single main window and/or a minibuffer +window; you can subdivide the main window vertically or horizontally +into smaller windows. In Emacs Lisp, a @dfn{frame object} is a Lisp +object that represents a frame on the screen. + +@cindex terminal frame + When Emacs runs on a text-only terminal, it starts with one +@dfn{terminal frame}. If you create additional ones, Emacs displays +one and only one at any given time---on the terminal screen, of course. + +@cindex window frame + When Emacs communicates directly with a supported window system, such +as X, it does not have a terminal frame; instead, it starts with +a single @dfn{window frame}, but you can create more, and Emacs can +display several such frames at once as is usual for window systems. + +@defun framep object +This predicate returns a non-@code{nil} value if @var{object} is a +frame, and @code{nil} otherwise. For a frame, the value indicates which +kind of display the frame uses: + +@table @code +@item x +The frame is displayed in an X window. +@item t +A terminal frame on a character display. +@item mac +The frame is displayed on a Macintosh. +@item w32 +The frame is displayed on MS-Windows 9X/NT. +@item pc +The frame is displayed on an MS-DOS terminal. +@end table +@end defun + +@menu +* Creating Frames:: Creating additional frames. +* Multiple Displays:: Creating frames on other displays. +* Frame Parameters:: Controlling frame size, position, font, etc. +* Frame Titles:: Automatic updating of frame titles. +* Deleting Frames:: Frames last until explicitly deleted. +* Finding All Frames:: How to examine all existing frames. +* Frames and Windows:: A frame contains windows; + display of text always works through windows. +* Minibuffers and Frames:: How a frame finds the minibuffer to use. +* Input Focus:: Specifying the selected frame. +* Visibility of Frames:: Frames may be visible or invisible, or icons. +* Raising and Lowering:: Raising a frame makes it hide other windows; + lowering it makes the others hide it. +* Frame Configurations:: Saving the state of all frames. +* Mouse Tracking:: Getting events that say when the mouse moves. +* Mouse Position:: Asking where the mouse is, or moving it. +* Pop-Up Menus:: Displaying a menu for the user to select from. +* Dialog Boxes:: Displaying a box to ask yes or no. +* Pointer Shape:: Specifying the shape of the mouse pointer. +* Window System Selections:: Transferring text to and from other X clients. +* Drag and Drop:: Internals of Drag-and-Drop implementation. +* Color Names:: Getting the definitions of color names. +* Text Terminal Colors:: Defining colors for text-only terminals. +* Resources:: Getting resource values from the server. +* Display Feature Testing:: Determining the features of a terminal. +@end menu + + @xref{Display}, for information about the related topic of +controlling Emacs redisplay. + +@node Creating Frames +@section Creating Frames + +To create a new frame, call the function @code{make-frame}. + +@defun make-frame &optional alist +This function creates and returns a new frame, displaying the current +buffer. If you are using a supported window system, it makes a window +frame; otherwise, it makes a terminal frame. + +The argument is an alist specifying frame parameters. Any parameters +not mentioned in @var{alist} default according to the value of the +variable @code{default-frame-alist}; parameters not specified even there +default from the standard X resources or whatever is used instead on +your system. + +The set of possible parameters depends in principle on what kind of +window system Emacs uses to display its frames. @xref{Window Frame +Parameters}, for documentation of individual parameters you can specify. + +This function itself does not make the new frame the selected frame. +@xref{Input Focus}. The previously selected frame remains selected. +However, the window system may select the new frame for its own reasons, +for instance if the frame appears under the mouse pointer and your +setup is for focus to follow the pointer. +@end defun + +@defvar before-make-frame-hook +A normal hook run by @code{make-frame} before it actually creates the +frame. +@end defvar + +@defvar after-make-frame-functions +An abnormal hook run by @code{make-frame} after it creates the frame. +Each function in @code{after-make-frame-functions} receives one argument, the +frame just created. +@end defvar + +@node Multiple Displays +@section Multiple Displays +@cindex multiple X displays +@cindex displays, multiple + + A single Emacs can talk to more than one X display. +Initially, Emacs uses just one display---the one chosen with the +@code{DISPLAY} environment variable or with the @samp{--display} option +(@pxref{Initial Options,,, emacs, The GNU Emacs Manual}). To connect to +another display, use the command @code{make-frame-on-display} or specify +the @code{display} frame parameter when you create the frame. + + Emacs treats each X server as a separate terminal, giving each one its +own selected frame and its own minibuffer windows. However, only one of +those frames is ``@emph{the} selected frame'' at any given moment, see +@ref{Input Focus}. + + A few Lisp variables are @dfn{terminal-local}; that is, they have a +separate binding for each terminal. The binding in effect at any time +is the one for the terminal that the currently selected frame belongs +to. These variables include @code{default-minibuffer-frame}, +@code{defining-kbd-macro}, @code{last-kbd-macro}, and +@code{system-key-alist}. They are always terminal-local, and can never +be buffer-local (@pxref{Buffer-Local Variables}) or frame-local. + + A single X server can handle more than one screen. A display name +@samp{@var{host}:@var{server}.@var{screen}} has three parts; the last +part specifies the screen number for a given server. When you use two +screens belonging to one server, Emacs knows by the similarity in their +names that they share a single keyboard, and it treats them as a single +terminal. + + Note that some graphical terminals can output to more than a one +monitor (or other output device) at the same time. On these +``multi-monitor'' setups, a single @var{display} value controls the +output to all the physical monitors. In this situation, there is +currently no platform-independent way for Emacs to distinguish between +the different physical monitors. + +@deffn Command make-frame-on-display display &optional parameters +This creates and returns a new frame on display @var{display}, taking +the other frame parameters from @var{parameters}. Aside from the +@var{display} argument, it is like @code{make-frame} (@pxref{Creating +Frames}). +@end deffn + +@defun x-display-list +This returns a list that indicates which X displays Emacs has a +connection to. The elements of the list are strings, and each one is +a display name. +@end defun + +@defun x-open-connection display &optional xrm-string must-succeed +This function opens a connection to the X display @var{display}. It +does not create a frame on that display, but it permits you to check +that communication can be established with that display. + +The optional argument @var{xrm-string}, if not @code{nil}, is a +string of resource names and values, in the same format used in the +@file{.Xresources} file. The values you specify override the resource +values recorded in the X server itself; they apply to all Emacs frames +created on this display. Here's an example of what this string might +look like: + +@example +"*BorderWidth: 3\n*InternalBorder: 2\n" +@end example + +@xref{X Resources,, X Resources, emacs, The GNU Emacs Manual}. + +If @var{must-succeed} is non-@code{nil}, failure to open the connection +terminates Emacs. Otherwise, it is an ordinary Lisp error. +@end defun + +@defun x-close-connection display +This function closes the connection to display @var{display}. Before +you can do this, you must first delete all the frames that were open on +that display (@pxref{Deleting Frames}). +@end defun + +@node Frame Parameters +@section Frame Parameters +@cindex frame parameters + + A frame has many parameters that control its appearance and behavior. +Just what parameters a frame has depends on what display mechanism it +uses. + + Frame parameters exist mostly for the sake of window systems. A +terminal frame has a few parameters, mostly for compatibility's sake; +only the @code{height}, @code{width}, @code{name}, @code{title}, +@code{menu-bar-lines}, @code{buffer-list} and @code{buffer-predicate} +parameters do something special. If the terminal supports colors, the +parameters @code{foreground-color}, @code{background-color}, +@code{background-mode} and @code{display-type} are also meaningful. + +@menu +* Parameter Access:: How to change a frame's parameters. +* Initial Parameters:: Specifying frame parameters when you make a frame. +* Window Frame Parameters:: List of frame parameters for window systems. +* Size and Position:: Changing the size and position of a frame. +* Geometry:: Parsing geometry specifications. +@end menu + +@node Parameter Access +@subsection Access to Frame Parameters + +These functions let you read and change the parameter values of a +frame. + +@defun frame-parameter frame parameter +This function returns the value of the parameter @var{parameter} (a +symbol) of @var{frame}. If @var{frame} is @code{nil}, it returns the +selected frame's parameter. If @var{frame} has no setting for +@var{parameter}, this function returns @code{nil}. +@end defun + +@defun frame-parameters &optional frame +The function @code{frame-parameters} returns an alist listing all the +parameters of @var{frame} and their values. If @var{frame} is +@code{nil} or omitted, this returns the selected frame's parameters +@end defun + +@defun modify-frame-parameters frame alist +This function alters the parameters of frame @var{frame} based on the +elements of @var{alist}. Each element of @var{alist} has the form +@code{(@var{parm} . @var{value})}, where @var{parm} is a symbol naming a +parameter. If you don't mention a parameter in @var{alist}, its value +doesn't change. If @var{frame} is @code{nil}, it defaults to the selected +frame. +@end defun + +@defun modify-all-frames-parameters alist +This function alters the frame parameters of all existing frames +according to @var{alist}, then modifies @code{default-frame-alist} +(and, if necessary, @code{initial-frame-alist}) to apply the same +parameter values to frames that will be created henceforth. +@end defun + +@node Initial Parameters +@subsection Initial Frame Parameters + +You can specify the parameters for the initial startup frame +by setting @code{initial-frame-alist} in your init file (@pxref{Init File}). + +@defvar initial-frame-alist +This variable's value is an alist of parameter values used when creating +the initial window frame. You can set this variable to specify the +appearance of the initial frame without altering subsequent frames. +Each element has the form: + +@example +(@var{parameter} . @var{value}) +@end example + +Emacs creates the initial frame before it reads your init +file. After reading that file, Emacs checks @code{initial-frame-alist}, +and applies the parameter settings in the altered value to the already +created initial frame. + +If these settings affect the frame geometry and appearance, you'll see +the frame appear with the wrong ones and then change to the specified +ones. If that bothers you, you can specify the same geometry and +appearance with X resources; those do take effect before the frame is +created. @xref{X Resources,, X Resources, emacs, The GNU Emacs Manual}. + +X resource settings typically apply to all frames. If you want to +specify some X resources solely for the sake of the initial frame, and +you don't want them to apply to subsequent frames, here's how to achieve +this. Specify parameters in @code{default-frame-alist} to override the +X resources for subsequent frames; then, to prevent these from affecting +the initial frame, specify the same parameters in +@code{initial-frame-alist} with values that match the X resources. +@end defvar + +If these parameters specify a separate minibuffer-only frame with +@code{(minibuffer . nil)}, and you have not created one, Emacs creates +one for you. + +@defvar minibuffer-frame-alist +This variable's value is an alist of parameter values used when creating +an initial minibuffer-only frame---if such a frame is needed, according +to the parameters for the main initial frame. +@end defvar + +@defvar default-frame-alist +This is an alist specifying default values of frame parameters for all +Emacs frames---the first frame, and subsequent frames. When using the X +Window System, you can get the same results by means of X resources +in many cases. + +Setting this variable does not affect existing frames. +@end defvar + +See also @code{special-display-frame-alist}. @xref{Definition of +special-display-frame-alist}. + +If you use options that specify window appearance when you invoke Emacs, +they take effect by adding elements to @code{default-frame-alist}. One +exception is @samp{-geometry}, which adds the specified position to +@code{initial-frame-alist} instead. @xref{Emacs Invocation,, Command +Line Arguments for Emacs Invocation, emacs, The GNU Emacs Manual}. + +@node Window Frame Parameters +@subsection Window Frame Parameters + + Just what parameters a frame has depends on what display mechanism +it uses. This section describes the parameters that have special +meanings on some or all kinds of terminals. Of these, @code{name}, +@code{title}, @code{height}, @code{width}, @code{buffer-list} and +@code{buffer-predicate} provide meaningful information in terminal +frames, and @code{tty-color-mode} is meaningful @emph{only} in +terminal frames. + +@menu +* Basic Parameters:: Parameters that are fundamental. +* Position Parameters:: The position of the frame on the screen. +* Size Parameters:: Frame's size. +* Layout Parameters:: Size of parts of the frame, and + enabling or disabling some parts. +* Buffer Parameters:: Which buffers have been or should be shown. +* Management Parameters:: Communicating with the window manager. +* Cursor Parameters:: Controlling the cursor appearance. +* Color Parameters:: Colors of various parts of the frame. +@end menu + +@node Basic Parameters +@subsubsection Basic Parameters + + These frame parameters give the most basic information about the +frame. @code{title} and @code{name} are meaningful on all terminals. + +@table @code +@item display +The display on which to open this frame. It should be a string of the +form @code{"@var{host}:@var{dpy}.@var{screen}"}, just like the +@code{DISPLAY} environment variable. + +@item display-type +This parameter describes the range of possible colors that can be used +in this frame. Its value is @code{color}, @code{grayscale} or +@code{mono}. + +@item title +If a frame has a non-@code{nil} title, it appears in the window system's +border for the frame, and also in the mode line of windows in that frame +if @code{mode-line-frame-identification} uses @samp{%F} +(@pxref{%-Constructs}). This is normally the case when Emacs is not +using a window system, and can only display one frame at a time. +@xref{Frame Titles}. + +@item name +The name of the frame. The frame name serves as a default for the frame +title, if the @code{title} parameter is unspecified or @code{nil}. If +you don't specify a name, Emacs sets the frame name automatically +(@pxref{Frame Titles}). + +If you specify the frame name explicitly when you create the frame, the +name is also used (instead of the name of the Emacs executable) when +looking up X resources for the frame. + +@item display-environment-variable +The value of the @code{DISPLAY} environment variable for the frame. It +is passed to child processes. + +@item term-environment-variable +The value of the @code{TERM} environment variable for the frame. It +is passed to child processes. +@end table + +@node Position Parameters +@subsubsection Position Parameters + + Position parameters' values are normally measured in pixels, but on +text-only terminals they count characters or lines instead. + +@table @code +@item left +The screen position of the left edge, in pixels, with respect to the +left edge of the screen. The value may be a positive number @var{pos}, +or a list of the form @code{(+ @var{pos})} which permits specifying a +negative @var{pos} value. + +A negative number @minus{}@var{pos}, or a list of the form @code{(- +@var{pos})}, actually specifies the position of the right edge of the +window with respect to the right edge of the screen. A positive value +of @var{pos} counts toward the left. @strong{Reminder:} if the +parameter is a negative integer @minus{}@var{pos}, then @var{pos} is +positive. + +Some window managers ignore program-specified positions. If you want to +be sure the position you specify is not ignored, specify a +non-@code{nil} value for the @code{user-position} parameter as well. + +@item top +The screen position of the top edge, in pixels, with respect to the +top edge of the screen. It works just like @code{left}, except vertically +instead of horizontally. + +@item icon-left +The screen position of the left edge @emph{of the frame's icon}, in +pixels, counting from the left edge of the screen. This takes effect if +and when the frame is iconified. + +If you specify a value for this parameter, then you must also specify +a value for @code{icon-top} and vice versa. The window manager may +ignore these two parameters. + +@item icon-top +The screen position of the top edge @emph{of the frame's icon}, in +pixels, counting from the top edge of the screen. This takes effect if +and when the frame is iconified. + +@item user-position +When you create a frame and specify its screen position with the +@code{left} and @code{top} parameters, use this parameter to say whether +the specified position was user-specified (explicitly requested in some +way by a human user) or merely program-specified (chosen by a program). +A non-@code{nil} value says the position was user-specified. + +Window managers generally heed user-specified positions, and some heed +program-specified positions too. But many ignore program-specified +positions, placing the window in a default fashion or letting the user +place it with the mouse. Some window managers, including @code{twm}, +let the user specify whether to obey program-specified positions or +ignore them. + +When you call @code{make-frame}, you should specify a non-@code{nil} +value for this parameter if the values of the @code{left} and @code{top} +parameters represent the user's stated preference; otherwise, use +@code{nil}. +@end table + +@node Size Parameters +@subsubsection Size Parameters + + Size parameters' values are normally measured in pixels, but on +text-only terminals they count characters or lines instead. + +@table @code +@item height +The height of the frame contents, in characters. (To get the height in +pixels, call @code{frame-pixel-height}; see @ref{Size and Position}.) + +@item width +The width of the frame contents, in characters. (To get the height in +pixels, call @code{frame-pixel-width}; see @ref{Size and Position}.) + +@item user-size +This does for the size parameters @code{height} and @code{width} what +the @code{user-position} parameter (see above) does for the position +parameters @code{top} and @code{left}. + +@item fullscreen +Specify that width, height or both shall be set to the size of the screen. +The value @code{fullwidth} specifies that width shall be the size of the +screen. The value @code{fullheight} specifies that height shall be the +size of the screen. The value @code{fullboth} specifies that both the +width and the height shall be set to the size of the screen. +@end table + +@node Layout Parameters +@subsubsection Layout Parameters + + These frame parameters enable or disable various parts of the +frame, or control their sizes. + +@table @code +@item border-width +The width in pixels of the frame's border. + +@item internal-border-width +The distance in pixels between text (or fringe) and the frame's border. + +@item vertical-scroll-bars +Whether the frame has scroll bars for vertical scrolling, and which side +of the frame they should be on. The possible values are @code{left}, +@code{right}, and @code{nil} for no scroll bars. + +@ignore +@item horizontal-scroll-bars +Whether the frame has scroll bars for horizontal scrolling +(non-@code{nil} means yes). Horizontal scroll bars are not currently +implemented. +@end ignore + +@item scroll-bar-width +The width of vertical scroll bars, in pixels, or @code{nil} meaning to +use the default width. + +@item left-fringe +@itemx right-fringe +The default width of the left and right fringes of windows in this +frame (@pxref{Fringes}). If either of these is zero, that effectively +removes the corresponding fringe. A value of @code{nil} stands for +the standard fringe width, which is the width needed to display the +fringe bitmaps. + +The combined fringe widths must add up to an integral number of +columns, so the actual default fringe widths for the frame may be +larger than the specified values. The extra width needed to reach an +acceptable total is distributed evenly between the left and right +fringe. However, you can force one fringe or the other to a precise +width by specifying that width as a negative integer. If both widths are +negative, only the left fringe gets the specified width. + +@item menu-bar-lines +The number of lines to allocate at the top of the frame for a menu +bar. The default is 1. A value of @code{nil} means don't display a +menu bar. @xref{Menu Bar}. (The X toolkit and GTK allow at most one +menu bar line; they treat larger values as 1.) + +@item tool-bar-lines +The number of lines to use for the tool bar. A value of @code{nil} +means don't display a tool bar. (GTK allows at most one tool bar line; +it treats larger values as 1.) + +@item line-spacing +Additional space to leave below each text line, in pixels (a positive +integer). @xref{Line Height}, for more information. +@end table + +@node Buffer Parameters +@subsubsection Buffer Parameters + + These frame parameters, meaningful on all kinds of terminals, deal +with which buffers have been, or should, be displayed in the frame. + +@table @code +@item minibuffer +Whether this frame has its own minibuffer. The value @code{t} means +yes, @code{nil} means no, @code{only} means this frame is just a +minibuffer. If the value is a minibuffer window (in some other frame), +the new frame uses that minibuffer. + +@item buffer-predicate +The buffer-predicate function for this frame. The function +@code{other-buffer} uses this predicate (from the selected frame) to +decide which buffers it should consider, if the predicate is not +@code{nil}. It calls the predicate with one argument, a buffer, once for +each buffer; if the predicate returns a non-@code{nil} value, it +considers that buffer. + +@item buffer-list +A list of buffers that have been selected in this frame, +ordered most-recently-selected first. + +@item unsplittable +If non-@code{nil}, this frame's window is never split automatically. +@end table + +@node Management Parameters +@subsubsection Window Management Parameters +@cindex window manager, and frame parameters + + These frame parameters, meaningful only on window system displays, +interact with the window manager. + +@table @code +@item visibility +The state of visibility of the frame. There are three possibilities: +@code{nil} for invisible, @code{t} for visible, and @code{icon} for +iconified. @xref{Visibility of Frames}. + +@item auto-raise +Whether selecting the frame raises it (non-@code{nil} means yes). + +@item auto-lower +Whether deselecting the frame lowers it (non-@code{nil} means yes). + +@item icon-type +The type of icon to use for this frame when it is iconified. If the +value is a string, that specifies a file containing a bitmap to use. +Any other non-@code{nil} value specifies the default bitmap icon (a +picture of a gnu); @code{nil} specifies a text icon. + +@item icon-name +The name to use in the icon for this frame, when and if the icon +appears. If this is @code{nil}, the frame's title is used. + +@item window-id +The number of the window-system window used by the frame +to contain the actual Emacs windows. + +@item outer-window-id +The number of the outermost window-system window used for the whole frame. + +@item wait-for-wm +If non-@code{nil}, tell Xt to wait for the window manager to confirm +geometry changes. Some window managers, including versions of Fvwm2 +and KDE, fail to confirm, so Xt hangs. Set this to @code{nil} to +prevent hanging with those window managers. + +@ignore +@item parent-id +@c ??? Not yet working. +The X window number of the window that should be the parent of this one. +Specifying this lets you create an Emacs window inside some other +application's window. (It is not certain this will be implemented; try +it and see if it works.) +@end ignore +@end table + +@node Cursor Parameters +@subsubsection Cursor Parameters + + This frame parameter controls the way the cursor looks. + +@table @code +@item cursor-type +How to display the cursor. Legitimate values are: + +@table @code +@item box +Display a filled box. (This is the default.) +@item hollow +Display a hollow box. +@item nil +Don't display a cursor. +@item bar +Display a vertical bar between characters. +@item (bar . @var{width}) +Display a vertical bar @var{width} pixels wide between characters. +@item hbar +Display a horizontal bar. +@item (hbar . @var{height}) +Display a horizontal bar @var{height} pixels high. +@end table +@end table + +@vindex cursor-type +The buffer-local variable @code{cursor-type} overrides the value of +the @code{cursor-type} frame parameter, but if it is @code{t}, that +means to use the cursor specified for the frame. + +@defvar blink-cursor-alist +This variable specifies how to blink the cursor. Each element has the +form @code{(@var{on-state} . @var{off-state})}. Whenever the cursor +type equals @var{on-state} (comparing using @code{equal}), the +corresponding @var{off-state} specifies what the cursor looks like +when it blinks ``off.'' Both @var{on-state} and @var{off-state} +should be suitable values for the @code{cursor-type} frame parameter. + +There are various defaults for how to blink each type of cursor, if +the type is not mentioned as an @var{on-state} here. Changes in this - variable do not take effect immediately, because the variable is - examined only when you specify the @code{cursor-type} parameter. ++variable do not take effect immediately, only when you specify the ++@code{cursor-type} frame parameter. ++@end defvar ++ ++@defvar cursor-in-non-selected-windows ++This variable controls how the cursor looks in a window that is not ++selected. It supports the same values as the @code{cursor-type} frame ++parameter; also, @code{nil} means don't display a cursor in ++nonselected windows, and @code{t} (the default) means use a standard ++modificatoin of the usual cursor type (solid box becomes hollow box, ++and bar becomes a narrower bar). +@end defvar + +@node Color Parameters +@subsubsection Color Parameters + + These frame parameters control the use of colors. + +@table @code +@item background-mode +This parameter is either @code{dark} or @code{light}, according +to whether the background color is a light one or a dark one. + +@item tty-color-mode +@cindex standard colors for character terminals +This parameter overrides the terminal's color support as given by the +system's terminal capabilities database in that this parameter's value +specifies the color mode to use in terminal frames. The value can be +either a symbol or a number. A number specifies the number of colors +to use (and, indirectly, what commands to issue to produce each +color). For example, @code{(tty-color-mode . 8)} specifies use of the +ANSI escape sequences for 8 standard text colors. A value of -1 turns +off color support. + +If the parameter's value is a symbol, it specifies a number through +the value of @code{tty-color-mode-alist}, and the associated number is +used instead. + +@item screen-gamma +@cindex gamma correction +If this is a number, Emacs performs ``gamma correction'' which adjusts +the brightness of all colors. The value should be the screen gamma of +your display, a floating point number. + +Usual PC monitors have a screen gamma of 2.2, so color values in +Emacs, and in X windows generally, are calibrated to display properly +on a monitor with that gamma value. If you specify 2.2 for +@code{screen-gamma}, that means no correction is needed. Other values +request correction, designed to make the corrected colors appear on +your screen the way they would have appeared without correction on an +ordinary monitor with a gamma value of 2.2. + +If your monitor displays colors too light, you should specify a +@code{screen-gamma} value smaller than 2.2. This requests correction +that makes colors darker. A screen gamma value of 1.5 may give good +results for LCD color displays. +@end table + +These frame parameters are semi-obsolete in that they are automatically +equivalent to particular face attributes of particular faces. +@xref{Standard Faces,,, emacs, The Emacs Manual}. + +@table @code +@item font +The name of the font for displaying text in the frame. This is a +string, either a valid font name for your system or the name of an Emacs +fontset (@pxref{Fontsets}). It is equivalent to the @code{font} +attribute of the @code{default} face. + +@item foreground-color +The color to use for the image of a character. It is equivalent to +the @code{:foreground} attribute of the @code{default} face. + +@item background-color +The color to use for the background of characters. It is equivalent to +the @code{:background} attribute of the @code{default} face. + +@item mouse-color +The color for the mouse pointer. It is equivalent to the @code{:background} +attribute of the @code{mouse} face. + +@item cursor-color +The color for the cursor that shows point. It is equivalent to the +@code{:background} attribute of the @code{cursor} face. + +@item border-color +The color for the border of the frame. It is equivalent to the +@code{:background} attribute of the @code{border} face. + +@item scroll-bar-foreground +If non-@code{nil}, the color for the foreground of scroll bars. It is +equivalent to the @code{:foreground} attribute of the +@code{scroll-bar} face. + +@item scroll-bar-background +If non-@code{nil}, the color for the background of scroll bars. It is +equivalent to the @code{:background} attribute of the +@code{scroll-bar} face. +@end table + +@node Size and Position +@subsection Frame Size And Position +@cindex size of frame +@cindex screen size +@cindex frame size +@cindex resize frame + + You can read or change the size and position of a frame using the +frame parameters @code{left}, @code{top}, @code{height}, and +@code{width}. Whatever geometry parameters you don't specify are chosen +by the window manager in its usual fashion. + + Here are some special features for working with sizes and positions. +(For the precise meaning of ``selected frame'' used by these functions, +see @ref{Input Focus}.) + +@defun set-frame-position frame left top +This function sets the position of the top left corner of @var{frame} to +@var{left} and @var{top}. These arguments are measured in pixels, and +normally count from the top left corner of the screen. + +Negative parameter values position the bottom edge of the window up from +the bottom edge of the screen, or the right window edge to the left of +the right edge of the screen. It would probably be better if the values +were always counted from the left and top, so that negative arguments +would position the frame partly off the top or left edge of the screen, +but it seems inadvisable to change that now. +@end defun + +@defun frame-height &optional frame +@defunx frame-width &optional frame +These functions return the height and width of @var{frame}, measured in +lines and columns. If you don't supply @var{frame}, they use the +selected frame. +@end defun + +@defun screen-height +@defunx screen-width +These functions are old aliases for @code{frame-height} and +@code{frame-width}. When you are using a non-window terminal, the size +of the frame is normally the same as the size of the terminal screen. +@end defun + +@defun frame-pixel-height &optional frame +@defunx frame-pixel-width &optional frame +These functions return the height and width of @var{frame}, measured in +pixels. If you don't supply @var{frame}, they use the selected frame. +@end defun + +@defun frame-char-height &optional frame +@defunx frame-char-width &optional frame +These functions return the height and width of a character in +@var{frame}, measured in pixels. The values depend on the choice of +font. If you don't supply @var{frame}, these functions use the selected +frame. +@end defun + +@defun set-frame-size frame cols rows +This function sets the size of @var{frame}, measured in characters; +@var{cols} and @var{rows} specify the new width and height. + +To set the size based on values measured in pixels, use +@code{frame-char-height} and @code{frame-char-width} to convert +them to units of characters. +@end defun + +@defun set-frame-height frame lines &optional pretend +This function resizes @var{frame} to a height of @var{lines} lines. The +sizes of existing windows in @var{frame} are altered proportionally to +fit. + +If @var{pretend} is non-@code{nil}, then Emacs displays @var{lines} +lines of output in @var{frame}, but does not change its value for the +actual height of the frame. This is only useful for a terminal frame. +Using a smaller height than the terminal actually implements may be +useful to reproduce behavior observed on a smaller screen, or if the +terminal malfunctions when using its whole screen. Setting the frame +height ``for real'' does not always work, because knowing the correct +actual size may be necessary for correct cursor positioning on a +terminal frame. +@end defun + +@defun set-frame-width frame width &optional pretend +This function sets the width of @var{frame}, measured in characters. +The argument @var{pretend} has the same meaning as in +@code{set-frame-height}. +@end defun + +@findex set-screen-height +@findex set-screen-width + The older functions @code{set-screen-height} and +@code{set-screen-width} were used to specify the height and width of the +screen, in Emacs versions that did not support multiple frames. They +are semi-obsolete, but still work; they apply to the selected frame. + +@node Geometry +@subsection Geometry + + Here's how to examine the data in an X-style window geometry +specification: + +@defun x-parse-geometry geom +@cindex geometry specification +The function @code{x-parse-geometry} converts a standard X window +geometry string to an alist that you can use as part of the argument to +@code{make-frame}. + +The alist describes which parameters were specified in @var{geom}, and +gives the values specified for them. Each element looks like +@code{(@var{parameter} . @var{value})}. The possible @var{parameter} +values are @code{left}, @code{top}, @code{width}, and @code{height}. + +For the size parameters, the value must be an integer. The position +parameter names @code{left} and @code{top} are not totally accurate, +because some values indicate the position of the right or bottom edges +instead. These are the @var{value} possibilities for the position +parameters: + +@table @asis +@item an integer +A positive integer relates the left edge or top edge of the window to +the left or top edge of the screen. A negative integer relates the +right or bottom edge of the window to the right or bottom edge of the +screen. + +@item @code{(+ @var{position})} +This specifies the position of the left or top edge of the window +relative to the left or top edge of the screen. The integer +@var{position} may be positive or negative; a negative value specifies a +position outside the screen. + +@item @code{(- @var{position})} +This specifies the position of the right or bottom edge of the window +relative to the right or bottom edge of the screen. The integer +@var{position} may be positive or negative; a negative value specifies a +position outside the screen. +@end table + +Here is an example: + +@example +(x-parse-geometry "35x70+0-0") + @result{} ((height . 70) (width . 35) + (top - 0) (left . 0)) +@end example +@end defun + +@node Frame Titles +@section Frame Titles +@cindex frame title + + Every frame has a @code{name} parameter; this serves as the default +for the frame title which window systems typically display at the top of +the frame. You can specify a name explicitly by setting the @code{name} +frame property. + + Normally you don't specify the name explicitly, and Emacs computes the +frame name automatically based on a template stored in the variable +@code{frame-title-format}. Emacs recomputes the name each time the +frame is redisplayed. + +@defvar frame-title-format +This variable specifies how to compute a name for a frame when you have +not explicitly specified one. The variable's value is actually a mode +line construct, just like @code{mode-line-format}, except that the +@samp{%c} and @samp{%l} constructs are ignored. @xref{Mode Line +Data}. +@end defvar + +@defvar icon-title-format +This variable specifies how to compute the name for an iconified frame, +when you have not explicitly specified the frame title. This title +appears in the icon itself. +@end defvar + +@defvar multiple-frames +This variable is set automatically by Emacs. Its value is @code{t} when +there are two or more frames (not counting minibuffer-only frames or +invisible frames). The default value of @code{frame-title-format} uses +@code{multiple-frames} so as to put the buffer name in the frame title +only when there is more than one frame. + +The value of this variable is not guaranteed to be accurate except +while processing @code{frame-title-format} or +@code{icon-title-format}. +@end defvar + +@node Deleting Frames +@section Deleting Frames +@cindex deleting frames + +Frames remain potentially visible until you explicitly @dfn{delete} +them. A deleted frame cannot appear on the screen, but continues to +exist as a Lisp object until there are no references to it. + +@deffn Command delete-frame &optional frame force +@vindex delete-frame-functions +This function deletes the frame @var{frame}. Unless @var{frame} is a +tooltip, it first runs the hook @code{delete-frame-functions} (each +function gets one argument, @var{frame}). By default, @var{frame} is +the selected frame. + +A frame cannot be deleted if its minibuffer is used by other frames. +Normally, you cannot delete a frame if all other frames are invisible, +but if the @var{force} is non-@code{nil}, then you are allowed to do so. +@end deffn + +@defun frame-live-p frame +The function @code{frame-live-p} returns non-@code{nil} if the frame +@var{frame} has not been deleted. The possible non-@code{nil} return +values are like those of @code{framep}. @xref{Frames}. +@end defun + + Some window managers provide a command to delete a window. These work +by sending a special message to the program that operates the window. +When Emacs gets one of these commands, it generates a +@code{delete-frame} event, whose normal definition is a command that +calls the function @code{delete-frame}. @xref{Misc Events}. + +@node Finding All Frames +@section Finding All Frames +@cindex frames, scanning all + +@defun frame-list +The function @code{frame-list} returns a list of all the frames that +have not been deleted. It is analogous to @code{buffer-list} for +buffers, and includes frames on all terminals. The list that you get is +newly created, so modifying the list doesn't have any effect on the +internals of Emacs. +@end defun + +@defun visible-frame-list +This function returns a list of just the currently visible frames. +@xref{Visibility of Frames}. (Terminal frames always count as +``visible,'' even though only the selected one is actually displayed.) +@end defun + +@defun next-frame &optional frame minibuf +The function @code{next-frame} lets you cycle conveniently through all +the frames on the current display from an arbitrary starting point. It +returns the ``next'' frame after @var{frame} in the cycle. If +@var{frame} is omitted or @code{nil}, it defaults to the selected frame +(@pxref{Input Focus}). + +The second argument, @var{minibuf}, says which frames to consider: + +@table @asis +@item @code{nil} +Exclude minibuffer-only frames. +@item @code{visible} +Consider all visible frames. +@item 0 +Consider all visible or iconified frames. +@item a window +Consider only the frames using that particular window as their +minibuffer. +@item anything else +Consider all frames. +@end table +@end defun + +@defun previous-frame &optional frame minibuf +Like @code{next-frame}, but cycles through all frames in the opposite +direction. +@end defun + + See also @code{next-window} and @code{previous-window}, in @ref{Cyclic +Window Ordering}. + +@node Frames and Windows +@section Frames and Windows + + Each window is part of one and only one frame; you can get the frame +with @code{window-frame}. + +@defun window-frame window +This function returns the frame that @var{window} is on. +@end defun + + All the non-minibuffer windows in a frame are arranged in a cyclic +order. The order runs from the frame's top window, which is at the +upper left corner, down and to the right, until it reaches the window at +the lower right corner (always the minibuffer window, if the frame has +one), and then it moves back to the top. @xref{Cyclic Window Ordering}. + +@defun frame-first-window &optional frame +This returns the topmost, leftmost window of frame @var{frame}. +If omitted or @code{nil}, @var{frame} defaults to the selected frame. +@end defun + +At any time, exactly one window on any frame is @dfn{selected within the +frame}. The significance of this designation is that selecting the +frame also selects this window. You can get the frame's current +selected window with @code{frame-selected-window}. + +@defun frame-selected-window &optional frame +This function returns the window on @var{frame} that is selected +within @var{frame}. If omitted or @code{nil}, @var{frame} defaults to +the selected frame. +@end defun + +@defun set-frame-selected-window frame window +This sets the selected window of frame @var{frame} to @var{window}. +If @var{frame} is @code{nil}, it operates on the selected frame. If +@var{frame} is the selected frame, this makes @var{window} the +selected window. This function returns @var{window}. +@end defun + + Conversely, selecting a window for Emacs with @code{select-window} also +makes that window selected within its frame. @xref{Selecting Windows}. + + Another function that (usually) returns one of the windows in a given +frame is @code{minibuffer-window}. @xref{Definition of minibuffer-window}. + +@node Minibuffers and Frames +@section Minibuffers and Frames + +Normally, each frame has its own minibuffer window at the bottom, which +is used whenever that frame is selected. If the frame has a minibuffer, +you can get it with @code{minibuffer-window} (@pxref{Definition of +minibuffer-window}). + +However, you can also create a frame with no minibuffer. Such a frame +must use the minibuffer window of some other frame. When you create the +frame, you can specify explicitly the minibuffer window to use (in some +other frame). If you don't, then the minibuffer is found in the frame +which is the value of the variable @code{default-minibuffer-frame}. Its +value should be a frame that does have a minibuffer. + +If you use a minibuffer-only frame, you might want that frame to raise +when you enter the minibuffer. If so, set the variable +@code{minibuffer-auto-raise} to @code{t}. @xref{Raising and Lowering}. + +@defvar default-minibuffer-frame +This variable specifies the frame to use for the minibuffer window, by +default. It does not affect existing frames. It is always local to +the current terminal and cannot be buffer-local. @xref{Multiple +Displays}. +@end defvar + +@node Input Focus +@section Input Focus +@cindex input focus +@c @cindex selected frame Duplicates selected-frame + +At any time, one frame in Emacs is the @dfn{selected frame}. The selected +window always resides on the selected frame. + +When Emacs displays its frames on several terminals (@pxref{Multiple +Displays}), each terminal has its own selected frame. But only one of +these is ``@emph{the} selected frame'': it's the frame that belongs to +the terminal from which the most recent input came. That is, when Emacs +runs a command that came from a certain terminal, the selected frame is +the one of that terminal. Since Emacs runs only a single command at any +given time, it needs to consider only one selected frame at a time; this +frame is what we call @dfn{the selected frame} in this manual. The +display on which the selected frame is displayed is the @dfn{selected +frame's display}. + +@defun selected-frame +This function returns the selected frame. +@end defun + +Some window systems and window managers direct keyboard input to the +window object that the mouse is in; others require explicit clicks or +commands to @dfn{shift the focus} to various window objects. Either +way, Emacs automatically keeps track of which frame has the focus. To +switch to a different frame from a Lisp function, call +@code{select-frame-set-input-focus}. + +Lisp programs can also switch frames ``temporarily'' by calling the +function @code{select-frame}. This does not alter the window system's +concept of focus; rather, it escapes from the window manager's control +until that control is somehow reasserted. + +When using a text-only terminal, only one frame can be displayed at a +time on the terminal, so after a call to @code{select-frame}, the next +redisplay actually displays the newly selected frame. This frame +remains selected until a subsequent call to @code{select-frame} or +@code{select-frame-set-input-focus}. Each terminal frame has a number +which appears in the mode line before the buffer name (@pxref{Mode +Line Variables}). + +@defun select-frame-set-input-focus frame +This function makes @var{frame} the selected frame, raises it (should +it happen to be obscured by other frames) and tries to give it the X +server's focus. On a text-only terminal, the next redisplay displays +the new frame on the entire terminal screen. The return value of this +function is not significant. +@end defun + +@c ??? This is not yet implemented properly. +@defun select-frame frame +This function selects frame @var{frame}, temporarily disregarding the +focus of the X server if any. The selection of @var{frame} lasts until +the next time the user does something to select a different frame, or +until the next time this function is called. (If you are using a +window system, the previously selected frame may be restored as the +selected frame after return to the command loop, because it still may +have the window system's input focus.) The specified @var{frame} +becomes the selected frame, as explained above, and the terminal that +@var{frame} is on becomes the selected terminal. This function +returns @var{frame}, or @code{nil} if @var{frame} has been deleted. + +In general, you should never use @code{select-frame} in a way that could +switch to a different terminal without switching back when you're done. +@end defun + +Emacs cooperates with the window system by arranging to select frames as +the server and window manager request. It does so by generating a +special kind of input event, called a @dfn{focus} event, when +appropriate. The command loop handles a focus event by calling +@code{handle-switch-frame}. @xref{Focus Events}. + +@deffn Command handle-switch-frame frame +This function handles a focus event by selecting frame @var{frame}. + +Focus events normally do their job by invoking this command. +Don't call it for any other reason. +@end deffn + +@defun redirect-frame-focus frame &optional focus-frame +This function redirects focus from @var{frame} to @var{focus-frame}. +This means that @var{focus-frame} will receive subsequent keystrokes and +events intended for @var{frame}. After such an event, the value of +@code{last-event-frame} will be @var{focus-frame}. Also, switch-frame +events specifying @var{frame} will instead select @var{focus-frame}. + +If @var{focus-frame} is omitted or @code{nil}, that cancels any existing +redirection for @var{frame}, which therefore once again receives its own +events. + +One use of focus redirection is for frames that don't have minibuffers. +These frames use minibuffers on other frames. Activating a minibuffer +on another frame redirects focus to that frame. This puts the focus on +the minibuffer's frame, where it belongs, even though the mouse remains +in the frame that activated the minibuffer. + +Selecting a frame can also change focus redirections. Selecting frame +@code{bar}, when @code{foo} had been selected, changes any redirections +pointing to @code{foo} so that they point to @code{bar} instead. This +allows focus redirection to work properly when the user switches from +one frame to another using @code{select-window}. + +This means that a frame whose focus is redirected to itself is treated +differently from a frame whose focus is not redirected. +@code{select-frame} affects the former but not the latter. + +The redirection lasts until @code{redirect-frame-focus} is called to +change it. +@end defun + +@defopt focus-follows-mouse +This option is how you inform Emacs whether the window manager transfers +focus when the user moves the mouse. Non-@code{nil} says that it does. +When this is so, the command @code{other-frame} moves the mouse to a +position consistent with the new selected frame. (This option has no +effect on MS-Windows, where the mouse pointer is always automatically +moved by the OS to the selected frame.) +@end defopt + +@node Visibility of Frames +@section Visibility of Frames +@cindex visible frame +@cindex invisible frame +@cindex iconified frame +@cindex frame visibility + +A window frame may be @dfn{visible}, @dfn{invisible}, or +@dfn{iconified}. If it is visible, you can see its contents, unless +other windows cover it. If it is iconified, the frame's contents do +not appear on the screen, but an icon does. If the frame is +invisible, it doesn't show on the screen, not even as an icon. + +Visibility is meaningless for terminal frames, since only the selected +one is actually displayed in any case. + +@deffn Command make-frame-visible &optional frame +This function makes frame @var{frame} visible. If you omit +@var{frame}, it makes the selected frame visible. This does not raise +the frame, but you can do that with @code{raise-frame} if you wish +(@pxref{Raising and Lowering}). +@end deffn + +@deffn Command make-frame-invisible &optional frame force +This function makes frame @var{frame} invisible. If you omit +@var{frame}, it makes the selected frame invisible. + +Unless @var{force} is non-@code{nil}, this function refuses to make +@var{frame} invisible if all other frames are invisible.. +@end deffn + +@deffn Command iconify-frame &optional frame +This function iconifies frame @var{frame}. If you omit @var{frame}, it +iconifies the selected frame. +@end deffn + +@defun frame-visible-p frame +This returns the visibility status of frame @var{frame}. The value is +@code{t} if @var{frame} is visible, @code{nil} if it is invisible, and +@code{icon} if it is iconified. + +On a text-only terminal, all frames are considered visible, whether +they are currently being displayed or not, and this function returns +@code{t} for all frames. +@end defun + + The visibility status of a frame is also available as a frame +parameter. You can read or change it as such. @xref{Management +Parameters}. + + The user can iconify and deiconify frames with the window manager. +This happens below the level at which Emacs can exert any control, but +Emacs does provide events that you can use to keep track of such +changes. @xref{Misc Events}. + +@node Raising and Lowering +@section Raising and Lowering Frames + + Most window systems use a desktop metaphor. Part of this metaphor is +the idea that windows are stacked in a notional third dimension +perpendicular to the screen surface, and thus ordered from ``highest'' +to ``lowest.'' Where two windows overlap, the one higher up covers +the one underneath. Even a window at the bottom of the stack can be +seen if no other window overlaps it. + +@c @cindex raising a frame redundant with raise-frame +@cindex lowering a frame + A window's place in this ordering is not fixed; in fact, users tend +to change the order frequently. @dfn{Raising} a window means moving +it ``up,'' to the top of the stack. @dfn{Lowering} a window means +moving it to the bottom of the stack. This motion is in the notional +third dimension only, and does not change the position of the window +on the screen. + + You can raise and lower Emacs frame Windows with these functions: + +@deffn Command raise-frame &optional frame +This function raises frame @var{frame} (default, the selected frame). +If @var{frame} is invisible or iconified, this makes it visible. +@end deffn + +@deffn Command lower-frame &optional frame +This function lowers frame @var{frame} (default, the selected frame). +@end deffn + +@defopt minibuffer-auto-raise +If this is non-@code{nil}, activation of the minibuffer raises the frame +that the minibuffer window is in. +@end defopt + +You can also enable auto-raise (raising automatically when a frame is +selected) or auto-lower (lowering automatically when it is deselected) +for any frame using frame parameters. @xref{Management Parameters}. + +@node Frame Configurations +@section Frame Configurations +@cindex frame configuration + + A @dfn{frame configuration} records the current arrangement of frames, +all their properties, and the window configuration of each one. +(@xref{Window Configurations}.) + +@defun current-frame-configuration +This function returns a frame configuration list that describes +the current arrangement of frames and their contents. +@end defun + +@defun set-frame-configuration configuration &optional nodelete +This function restores the state of frames described in +@var{configuration}. However, this function does not restore deleted +frames. + +Ordinarily, this function deletes all existing frames not listed in +@var{configuration}. But if @var{nodelete} is non-@code{nil}, the +unwanted frames are iconified instead. +@end defun + +@node Mouse Tracking +@section Mouse Tracking +@cindex mouse tracking +@c @cindex tracking the mouse Duplicates track-mouse + + Sometimes it is useful to @dfn{track} the mouse, which means to display +something to indicate where the mouse is and move the indicator as the +mouse moves. For efficient mouse tracking, you need a way to wait until +the mouse actually moves. + + The convenient way to track the mouse is to ask for events to represent +mouse motion. Then you can wait for motion by waiting for an event. In +addition, you can easily handle any other sorts of events that may +occur. That is useful, because normally you don't want to track the +mouse forever---only until some other event, such as the release of a +button. + +@defspec track-mouse body@dots{} +This special form executes @var{body}, with generation of mouse motion +events enabled. Typically @var{body} would use @code{read-event} to +read the motion events and modify the display accordingly. @xref{Motion +Events}, for the format of mouse motion events. + +The value of @code{track-mouse} is that of the last form in @var{body}. +You should design @var{body} to return when it sees the up-event that +indicates the release of the button, or whatever kind of event means +it is time to stop tracking. +@end defspec + +The usual purpose of tracking mouse motion is to indicate on the screen +the consequences of pushing or releasing a button at the current +position. + +In many cases, you can avoid the need to track the mouse by using +the @code{mouse-face} text property (@pxref{Special Properties}). +That works at a much lower level and runs more smoothly than +Lisp-level mouse tracking. + +@ignore +@c These are not implemented yet. + +These functions change the screen appearance instantaneously. The +effect is transient, only until the next ordinary Emacs redisplay. That +is OK for mouse tracking, since it doesn't make sense for mouse tracking +to change the text, and the body of @code{track-mouse} normally reads +the events itself and does not do redisplay. + +@defun x-contour-region window beg end +This function draws lines to make a box around the text from @var{beg} +to @var{end}, in window @var{window}. +@end defun + +@defun x-uncontour-region window beg end +This function erases the lines that would make a box around the text +from @var{beg} to @var{end}, in window @var{window}. Use it to remove +a contour that you previously made by calling @code{x-contour-region}. +@end defun + +@defun x-draw-rectangle frame left top right bottom +This function draws a hollow rectangle on frame @var{frame} with the +specified edge coordinates, all measured in pixels from the inside top +left corner. It uses the cursor color, the one used for indicating the +location of point. +@end defun + +@defun x-erase-rectangle frame left top right bottom +This function erases a hollow rectangle on frame @var{frame} with the +specified edge coordinates, all measured in pixels from the inside top +left corner. Erasure means redrawing the text and background that +normally belong in the specified rectangle. +@end defun +@end ignore + +@node Mouse Position +@section Mouse Position +@cindex mouse position +@cindex position of mouse + + The functions @code{mouse-position} and @code{set-mouse-position} +give access to the current position of the mouse. + +@defun mouse-position +This function returns a description of the position of the mouse. The +value looks like @code{(@var{frame} @var{x} . @var{y})}, where @var{x} +and @var{y} are integers giving the position in characters relative to +the top left corner of the inside of @var{frame}. +@end defun + +@defvar mouse-position-function +If non-@code{nil}, the value of this variable is a function for +@code{mouse-position} to call. @code{mouse-position} calls this +function just before returning, with its normal return value as the +sole argument, and it returns whatever this function returns to it. + +This abnormal hook exists for the benefit of packages like +@file{xt-mouse.el} that need to do mouse handling at the Lisp level. +@end defvar + +@defun set-mouse-position frame x y +This function @dfn{warps the mouse} to position @var{x}, @var{y} in +frame @var{frame}. The arguments @var{x} and @var{y} are integers, +giving the position in characters relative to the top left corner of the +inside of @var{frame}. If @var{frame} is not visible, this function +does nothing. The return value is not significant. +@end defun + +@defun mouse-pixel-position +This function is like @code{mouse-position} except that it returns +coordinates in units of pixels rather than units of characters. +@end defun + +@defun set-mouse-pixel-position frame x y +This function warps the mouse like @code{set-mouse-position} except that +@var{x} and @var{y} are in units of pixels rather than units of +characters. These coordinates are not required to be within the frame. + +If @var{frame} is not visible, this function does nothing. The return +value is not significant. +@end defun + +@need 3000 + +@node Pop-Up Menus +@section Pop-Up Menus + + When using a window system, a Lisp program can pop up a menu so that +the user can choose an alternative with the mouse. + +@defun x-popup-menu position menu +This function displays a pop-up menu and returns an indication of +what selection the user makes. + +The argument @var{position} specifies where on the screen to put the +top left corner of the menu. It can be either a mouse button event +(which says to put the menu where the user actuated the button) or a +list of this form: + +@example +((@var{xoffset} @var{yoffset}) @var{window}) +@end example + +@noindent +where @var{xoffset} and @var{yoffset} are coordinates, measured in +pixels, counting from the top left corner of @var{window}. @var{window} +may be a window or a frame. + +If @var{position} is @code{t}, it means to use the current mouse +position. If @var{position} is @code{nil}, it means to precompute the +key binding equivalents for the keymaps specified in @var{menu}, +without actually displaying or popping up the menu. + +The argument @var{menu} says what to display in the menu. It can be a +keymap or a list of keymaps (@pxref{Menu Keymaps}). In this case, the +return value is the list of events corresponding to the user's choice. +(This list has more than one element if the choice occurred in a +submenu.) Note that @code{x-popup-menu} does not actually execute the +command bound to that sequence of events. + +Alternatively, @var{menu} can have the following form: + +@example +(@var{title} @var{pane1} @var{pane2}...) +@end example + +@noindent +where each pane is a list of form + +@example +(@var{title} @var{item1} @var{item2}...) +@end example + +Each item should normally be a cons cell @code{(@var{line} . @var{value})}, +where @var{line} is a string, and @var{value} is the value to return if +that @var{line} is chosen. An item can also be a string; this makes a +non-selectable line in the menu. + +If the user gets rid of the menu without making a valid choice, for +instance by clicking the mouse away from a valid choice or by typing +keyboard input, then this normally results in a quit and +@code{x-popup-menu} does not return. But if @var{position} is a mouse +button event (indicating that the user invoked the menu with the +mouse) then no quit occurs and @code{x-popup-menu} returns @code{nil}. +@end defun + + @strong{Usage note:} Don't use @code{x-popup-menu} to display a menu +if you could do the job with a prefix key defined with a menu keymap. +If you use a menu keymap to implement a menu, @kbd{C-h c} and @kbd{C-h +a} can see the individual items in that menu and provide help for them. +If instead you implement the menu by defining a command that calls +@code{x-popup-menu}, the help facilities cannot know what happens inside +that command, so they cannot give any help for the menu's items. + + The menu bar mechanism, which lets you switch between submenus by +moving the mouse, cannot look within the definition of a command to see +that it calls @code{x-popup-menu}. Therefore, if you try to implement a +submenu using @code{x-popup-menu}, it cannot work with the menu bar in +an integrated fashion. This is why all menu bar submenus are +implemented with menu keymaps within the parent menu, and never with +@code{x-popup-menu}. @xref{Menu Bar}. + + If you want a menu bar submenu to have contents that vary, you should +still use a menu keymap to implement it. To make the contents vary, add +a hook function to @code{menu-bar-update-hook} to update the contents of +the menu keymap as necessary. + +@node Dialog Boxes +@section Dialog Boxes +@cindex dialog boxes + + A dialog box is a variant of a pop-up menu---it looks a little +different, it always appears in the center of a frame, and it has just +one level and one or more buttons. The main use of dialog boxes is +for asking questions that the user can answer with ``yes,'' ``no,'' +and a few other alternatives. With a single button, they can also +force the user to acknowledge important information. The functions +@code{y-or-n-p} and @code{yes-or-no-p} use dialog boxes instead of the +keyboard, when called from commands invoked by mouse clicks. + +@defun x-popup-dialog position contents &optional header +This function displays a pop-up dialog box and returns an indication of +what selection the user makes. The argument @var{contents} specifies +the alternatives to offer; it has this format: + +@example +(@var{title} (@var{string} . @var{value})@dots{}) +@end example + +@noindent +which looks like the list that specifies a single pane for +@code{x-popup-menu}. + +The return value is @var{value} from the chosen alternative. + +As for @code{x-popup-menu}, an element of the list may be just a +string instead of a cons cell @code{(@var{string} . @var{value})}. +That makes a box that cannot be selected. + +If @code{nil} appears in the list, it separates the left-hand items from +the right-hand items; items that precede the @code{nil} appear on the +left, and items that follow the @code{nil} appear on the right. If you +don't include a @code{nil} in the list, then approximately half the +items appear on each side. + +Dialog boxes always appear in the center of a frame; the argument +@var{position} specifies which frame. The possible values are as in +@code{x-popup-menu}, but the precise coordinates or the individual +window don't matter; only the frame matters. + +If @var{header} is non-@code{nil}, the frame title for the box is +@samp{Information}, otherwise it is @samp{Question}. The former is used +for @code{message-box} (@pxref{message-box}). + +In some configurations, Emacs cannot display a real dialog box; so +instead it displays the same items in a pop-up menu in the center of the +frame. + +If the user gets rid of the dialog box without making a valid choice, +for instance using the window manager, then this produces a quit and +@code{x-popup-dialog} does not return. +@end defun + +@node Pointer Shape +@section Pointer Shape +@cindex pointer shape +@cindex mouse pointer shape + + You can specify the mouse pointer style for particular text or +images using the @code{pointer} text property, and for images with the +@code{:pointer} and @code{:map} image properties. The values you can +use in these properties are @code{text} (or @code{nil}), @code{arrow}, +@code{hand}, @code{vdrag}, @code{hdrag}, @code{modeline}, and +@code{hourglass}. @code{text} stands for the usual mouse pointer +style used over text. + + Over void parts of the window (parts that do not correspond to any +of the buffer contents), the mouse pointer usually uses the +@code{arrow} style, but you can specify a different style (one of +those above) by setting @code{void-text-area-pointer}. + +@defvar void-text-area-pointer +This variable specifies the mouse pointer style for void text areas. +These include the areas after the end of a line or below the last line +in the buffer. The default is to use the @code{arrow} (non-text) +pointer style. +@end defvar + + You can specify what the @code{text} pointer style really looks like +by setting the variable @code{x-pointer-shape}. + +@defvar x-pointer-shape +This variable specifies the pointer shape to use ordinarily in the +Emacs frame, for the @code{text} pointer style. +@end defvar + +@defvar x-sensitive-text-pointer-shape +This variable specifies the pointer shape to use when the mouse +is over mouse-sensitive text. +@end defvar + + These variables affect newly created frames. They do not normally +affect existing frames; however, if you set the mouse color of a +frame, that also installs the current value of those two variables. +@xref{Color Parameters}. + + The values you can use, to specify either of these pointer shapes, are +defined in the file @file{lisp/term/x-win.el}. Use @kbd{M-x apropos +@key{RET} x-pointer @key{RET}} to see a list of them. + +@node Window System Selections +@section Window System Selections +@cindex selection (for window systems) + +The X server records a set of @dfn{selections} which permit transfer of +data between application programs. The various selections are +distinguished by @dfn{selection types}, represented in Emacs by +symbols. X clients including Emacs can read or set the selection for +any given type. + +@deffn Command x-set-selection type data +This function sets a ``selection'' in the X server. It takes two +arguments: a selection type @var{type}, and the value to assign to it, +@var{data}. If @var{data} is @code{nil}, it means to clear out the +selection. Otherwise, @var{data} may be a string, a symbol, an integer +(or a cons of two integers or list of two integers), an overlay, or a +cons of two markers pointing to the same buffer. An overlay or a pair +of markers stands for text in the overlay or between the markers. + +The argument @var{data} may also be a vector of valid non-vector +selection values. + +Each possible @var{type} has its own selection value, which changes +independently. The usual values of @var{type} are @code{PRIMARY}, +@code{SECONDARY} and @code{CLIPBOARD}; these are symbols with upper-case +names, in accord with X Window System conventions. If @var{type} is +@code{nil}, that stands for @code{PRIMARY}. + +This function returns @var{data}. +@end deffn + +@defun x-get-selection &optional type data-type +This function accesses selections set up by Emacs or by other X +clients. It takes two optional arguments, @var{type} and +@var{data-type}. The default for @var{type}, the selection type, is +@code{PRIMARY}. + +The @var{data-type} argument specifies the form of data conversion to +use, to convert the raw data obtained from another X client into Lisp +data. Meaningful values include @code{TEXT}, @code{STRING}, +@code{UTF8_STRING}, @code{TARGETS}, @code{LENGTH}, @code{DELETE}, +@code{FILE_NAME}, @code{CHARACTER_POSITION}, @code{NAME}, +@code{LINE_NUMBER}, @code{COLUMN_NUMBER}, @code{OWNER_OS}, +@code{HOST_NAME}, @code{USER}, @code{CLASS}, @code{ATOM}, and +@code{INTEGER}. (These are symbols with upper-case names in accord +with X conventions.) The default for @var{data-type} is +@code{STRING}. +@end defun + +@cindex cut buffer +The X server also has a set of eight numbered @dfn{cut buffers} which can +store text or other data being moved between applications. Cut buffers +are considered obsolete, but Emacs supports them for the sake of X +clients that still use them. Cut buffers are numbered from 0 to 7. + +@defun x-get-cut-buffer &optional n +This function returns the contents of cut buffer number @var{n}. +If omitted @var{n} defaults to 0. +@end defun + +@defun x-set-cut-buffer string &optional push +@anchor{Definition of x-set-cut-buffer} +This function stores @var{string} into the first cut buffer (cut buffer +0). If @var{push} is @code{nil}, only the first cut buffer is changed. +If @var{push} is non-@code{nil}, that says to move the values down +through the series of cut buffers, much like the way successive kills in +Emacs move down the kill ring. In other words, the previous value of +the first cut buffer moves into the second cut buffer, and the second to +the third, and so on through all eight cut buffers. +@end defun + +@defvar selection-coding-system +This variable specifies the coding system to use when reading and +writing selections or the clipboard. @xref{Coding +Systems}. The default is @code{compound-text-with-extensions}, which +converts to the text representation that X11 normally uses. +@end defvar + +@cindex clipboard support (for MS-Windows) +When Emacs runs on MS-Windows, it does not implement X selections in +general, but it does support the clipboard. @code{x-get-selection} +and @code{x-set-selection} on MS-Windows support the text data type +only; if the clipboard holds other types of data, Emacs treats the +clipboard as empty. + +@cindex scrap support (for Mac OS) +On Mac OS, selection-like data transfer between applications is +performed through a mechanism called @dfn{scraps}. The clipboard is a +particular scrap named @code{com.apple.scrap.clipboard}. Types of scrap +data are called @dfn{scrap flavor types}, which are identified by +four-char codes such as @code{TEXT}. Emacs associates a selection with +a scrap, and a selection type with a scrap flavor type via +@code{mac-scrap-name} and @code{mac-ostype} properties, respectively. + +@example +(get 'CLIPBOARD 'mac-scrap-name) + @result{} "com.apple.scrap.clipboard" +(get 'com.apple.traditional-mac-plain-text 'mac-ostype) + @result{} "TEXT" +@end example + +Conventionally, selection types for scrap flavor types on Mac OS have +the form of @acronym{UTI, Uniform Type Identifier} such as +@code{com.apple.traditional-mac-plain-text}, +@code{public.utf16-plain-text}, and @code{public.file-url}. + +@defopt x-select-enable-clipboard +If this is non-@code{nil}, the Emacs yank functions consult the +clipboard before the primary selection, and the kill functions store in +the clipboard as well as the primary selection. Otherwise they do not +access the clipboard at all. The default is @code{nil} on most systems, +but @code{t} on MS-Windows and Mac. +@end defopt + +@node Drag and Drop +@section Drag and Drop + +@vindex x-dnd-test-function +@vindex x-dnd-known-types + When a user drags something from another application over Emacs, that other +application expects Emacs to tell it if Emacs can handle the data that is +dragged. The variable @code{x-dnd-test-function} is used by Emacs to determine +what to reply. The default value is @code{x-dnd-default-test-function} +which accepts drops if the type of the data to be dropped is present in +@code{x-dnd-known-types}. You can customize @code{x-dnd-test-function} and/or +@code{x-dnd-known-types} if you want Emacs to accept or reject drops based +on some other criteria. + +@vindex x-dnd-types-alist + If you want to change the way Emacs handles drop of different types +or add a new type, customize @code{x-dnd-types-alist}. This requires +detailed knowledge of what types other applications use for drag and +drop. + +@vindex dnd-protocol-alist + When an URL is dropped on Emacs it may be a file, but it may also be +another URL type (ftp, http, etc.). Emacs first checks +@code{dnd-protocol-alist} to determine what to do with the URL. If +there is no match there and if @code{browse-url-browser-function} is +an alist, Emacs looks for a match there. If no match is found the +text for the URL is inserted. If you want to alter Emacs behavior, +you can customize these variables. + +@node Color Names +@section Color Names + +@cindex color names +@cindex specify color +@cindex numerical RGB color specification + A color name is text (usually in a string) that specifies a color. +Symbolic names such as @samp{black}, @samp{white}, @samp{red}, etc., +are allowed; use @kbd{M-x list-colors-display} to see a list of +defined names. You can also specify colors numerically in forms such +as @samp{#@var{rgb}} and @samp{RGB:@var{r}/@var{g}/@var{b}}, where +@var{r} specifies the red level, @var{g} specifies the green level, +and @var{b} specifies the blue level. You can use either one, two, +three, or four hex digits for @var{r}; then you must use the same +number of hex digits for all @var{g} and @var{b} as well, making +either 3, 6, 9 or 12 hex digits in all. (See the documentation of the +X Window System for more details about numerical RGB specification of +colors.) + + These functions provide a way to determine which color names are +valid, and what they look like. In some cases, the value depends on the +@dfn{selected frame}, as described below; see @ref{Input Focus}, for the +meaning of the term ``selected frame.'' + +@defun color-defined-p color &optional frame +This function reports whether a color name is meaningful. It returns +@code{t} if so; otherwise, @code{nil}. The argument @var{frame} says +which frame's display to ask about; if @var{frame} is omitted or +@code{nil}, the selected frame is used. + +Note that this does not tell you whether the display you are using +really supports that color. When using X, you can ask for any defined +color on any kind of display, and you will get some result---typically, +the closest it can do. To determine whether a frame can really display +a certain color, use @code{color-supported-p} (see below). + +@findex x-color-defined-p +This function used to be called @code{x-color-defined-p}, +and that name is still supported as an alias. +@end defun + +@defun defined-colors &optional frame +This function returns a list of the color names that are defined +and supported on frame @var{frame} (default, the selected frame). +If @var{frame} does not support colors, the value is @code{nil}. + +@findex x-defined-colors +This function used to be called @code{x-defined-colors}, +and that name is still supported as an alias. +@end defun + +@defun color-supported-p color &optional frame background-p +This returns @code{t} if @var{frame} can really display the color +@var{color} (or at least something close to it). If @var{frame} is +omitted or @code{nil}, the question applies to the selected frame. + +Some terminals support a different set of colors for foreground and +background. If @var{background-p} is non-@code{nil}, that means you are +asking whether @var{color} can be used as a background; otherwise you +are asking whether it can be used as a foreground. + +The argument @var{color} must be a valid color name. +@end defun + +@defun color-gray-p color &optional frame +This returns @code{t} if @var{color} is a shade of gray, as defined on +@var{frame}'s display. If @var{frame} is omitted or @code{nil}, the +question applies to the selected frame. If @var{color} is not a valid +color name, this function returns @code{nil}. +@end defun + +@defun color-values color &optional frame +@cindex rgb value +This function returns a value that describes what @var{color} should +ideally look like on @var{frame}. If @var{color} is defined, the +value is a list of three integers, which give the amount of red, the +amount of green, and the amount of blue. Each integer ranges in +principle from 0 to 65535, but some displays may not use the full +range. This three-element list is called the @dfn{rgb values} of the +color. + +If @var{color} is not defined, the value is @code{nil}. + +@example +(color-values "black") + @result{} (0 0 0) +(color-values "white") + @result{} (65280 65280 65280) +(color-values "red") + @result{} (65280 0 0) +(color-values "pink") + @result{} (65280 49152 51968) +(color-values "hungry") + @result{} nil +@end example + +The color values are returned for @var{frame}'s display. If +@var{frame} is omitted or @code{nil}, the information is returned for +the selected frame's display. If the frame cannot display colors, the +value is @code{nil}. + +@findex x-color-values +This function used to be called @code{x-color-values}, +and that name is still supported as an alias. +@end defun + +@node Text Terminal Colors +@section Text Terminal Colors +@cindex colors on text-only terminals + + Text-only terminals usually support only a small number of colors, +and the computer uses small integers to select colors on the terminal. +This means that the computer cannot reliably tell what the selected +color looks like; instead, you have to inform your application which +small integers correspond to which colors. However, Emacs does know +the standard set of colors and will try to use them automatically. + + The functions described in this section control how terminal colors +are used by Emacs. + + Several of these functions use or return @dfn{rgb values}, described +in @ref{Color Names}. + + These functions accept a display (either a frame or the name of a +terminal) as an optional argument. We hope in the future to make Emacs +support more than one text-only terminal at one time; then this argument +will specify which terminal to operate on (the default being the +selected frame's terminal; @pxref{Input Focus}). At present, though, +the @var{frame} argument has no effect. + +@defun tty-color-define name number &optional rgb frame +This function associates the color name @var{name} with +color number @var{number} on the terminal. + +The optional argument @var{rgb}, if specified, is an rgb value, a list +of three numbers that specify what the color actually looks like. +If you do not specify @var{rgb}, then this color cannot be used by +@code{tty-color-approximate} to approximate other colors, because +Emacs will not know what it looks like. +@end defun + +@defun tty-color-clear &optional frame +This function clears the table of defined colors for a text-only terminal. +@end defun + +@defun tty-color-alist &optional frame +This function returns an alist recording the known colors supported by a +text-only terminal. + +Each element has the form @code{(@var{name} @var{number} . @var{rgb})} +or @code{(@var{name} @var{number})}. Here, @var{name} is the color +name, @var{number} is the number used to specify it to the terminal. +If present, @var{rgb} is a list of three color values (for red, green, +and blue) that says what the color actually looks like. +@end defun + +@defun tty-color-approximate rgb &optional frame +This function finds the closest color, among the known colors +supported for @var{display}, to that described by the rgb value +@var{rgb} (a list of color values). The return value is an element of +@code{tty-color-alist}. +@end defun + +@defun tty-color-translate color &optional frame +This function finds the closest color to @var{color} among the known +colors supported for @var{display} and returns its index (an integer). +If the name @var{color} is not defined, the value is @code{nil}. +@end defun + +@node Resources +@section X Resources + +@defun x-get-resource attribute class &optional component subclass +The function @code{x-get-resource} retrieves a resource value from the X +Window defaults database. + +Resources are indexed by a combination of a @dfn{key} and a @dfn{class}. +This function searches using a key of the form +@samp{@var{instance}.@var{attribute}} (where @var{instance} is the name +under which Emacs was invoked), and using @samp{Emacs.@var{class}} as +the class. + +The optional arguments @var{component} and @var{subclass} add to the key +and the class, respectively. You must specify both of them or neither. +If you specify them, the key is +@samp{@var{instance}.@var{component}.@var{attribute}}, and the class is +@samp{Emacs.@var{class}.@var{subclass}}. +@end defun + +@defvar x-resource-class +This variable specifies the application name that @code{x-get-resource} +should look up. The default value is @code{"Emacs"}. You can examine X +resources for application names other than ``Emacs'' by binding this +variable to some other string, around a call to @code{x-get-resource}. +@end defvar + +@defvar x-resource-name +This variable specifies the instance name that @code{x-get-resource} +should look up. The default value is the name Emacs was invoked with, +or the value specified with the @samp{-name} or @samp{-rn} switches. +@end defvar + +To illustrate some of the above, suppose that you have the line: + +@example +xterm.vt100.background: yellow +@end example + +@noindent +in your X resources file (whose name is usually @file{~/.Xdefaults} +or @file{~/.Xresources}). Then: + +@example +@group +(let ((x-resource-class "XTerm") (x-resource-name "xterm")) + (x-get-resource "vt100.background" "VT100.Background")) + @result{} "yellow" +@end group +@group +(let ((x-resource-class "XTerm") (x-resource-name "xterm")) + (x-get-resource "background" "VT100" "vt100" "Background")) + @result{} "yellow" +@end group +@end example + + @xref{X Resources,, X Resources, emacs, The GNU Emacs Manual}. + +@node Display Feature Testing +@section Display Feature Testing +@cindex display feature testing + + The functions in this section describe the basic capabilities of a +particular display. Lisp programs can use them to adapt their behavior +to what the display can do. For example, a program that ordinarily uses +a popup menu could use the minibuffer if popup menus are not supported. + + The optional argument @var{display} in these functions specifies which +display to ask the question about. It can be a display name, a frame +(which designates the display that frame is on), or @code{nil} (which +refers to the selected frame's display, @pxref{Input Focus}). + + @xref{Color Names}, @ref{Text Terminal Colors}, for other functions to +obtain information about displays. + +@defun display-popup-menus-p &optional display +This function returns @code{t} if popup menus are supported on +@var{display}, @code{nil} if not. Support for popup menus requires that +the mouse be available, since the user cannot choose menu items without +a mouse. +@end defun + +@defun display-graphic-p &optional display +This function returns @code{t} if @var{display} is a graphic display +capable of displaying several frames and several different fonts at +once. This is true for displays that use a window system such as X, and +false for text-only terminals. +@end defun + +@defun display-mouse-p &optional display +@cindex mouse, availability +This function returns @code{t} if @var{display} has a mouse available, +@code{nil} if not. +@end defun + +@defun display-color-p &optional display +@findex x-display-color-p +This function returns @code{t} if the screen is a color screen. +It used to be called @code{x-display-color-p}, and that name +is still supported as an alias. +@end defun + +@defun display-grayscale-p &optional display +This function returns @code{t} if the screen can display shades of gray. +(All color displays can do this.) +@end defun + +@defun display-supports-face-attributes-p attributes &optional display +@anchor{Display Face Attribute Testing} +This function returns non-@code{nil} if all the face attributes in +@var{attributes} are supported (@pxref{Face Attributes}). + +The definition of `supported' is somewhat heuristic, but basically +means that a face containing all the attributes in @var{attributes}, +when merged with the default face for display, can be represented in a +way that's + +@enumerate +@item +different in appearance than the default face, and + +@item +`close in spirit' to what the attributes specify, if not exact. +@end enumerate + +Point (2) implies that a @code{:weight black} attribute will be +satisfied by any display that can display bold, as will +@code{:foreground "yellow"} as long as some yellowish color can be +displayed, but @code{:slant italic} will @emph{not} be satisfied by +the tty display code's automatic substitution of a `dim' face for +italic. +@end defun + +@defun display-selections-p &optional display +This function returns @code{t} if @var{display} supports selections. +Windowed displays normally support selections, but they may also be +supported in some other cases. +@end defun + +@defun display-images-p &optional display +This function returns @code{t} if @var{display} can display images. +Windowed displays ought in principle to handle images, but some +systems lack the support for that. On a display that does not support +images, Emacs cannot display a tool bar. +@end defun + +@defun display-screens &optional display +This function returns the number of screens associated with the display. +@end defun + +@defun display-pixel-height &optional display +This function returns the height of the screen in pixels. +On a character terminal, it gives the height in characters. + +For graphical terminals, note that on ``multi-monitor'' setups this +refers to the pixel width for all physical monitors associated with +@var{display}. @xref{Multiple Displays}. +@end defun + +@defun display-pixel-width &optional display +This function returns the width of the screen in pixels. +On a character terminal, it gives the width in characters. + +For graphical terminals, note that on ``multi-monitor'' setups this +refers to the pixel width for all physical monitors associated with +@var{display}. @xref{Multiple Displays}. +@end defun + +@defun display-mm-height &optional display +This function returns the height of the screen in millimeters, +or @code{nil} if Emacs cannot get that information. +@end defun + +@defun display-mm-width &optional display +This function returns the width of the screen in millimeters, +or @code{nil} if Emacs cannot get that information. +@end defun + +@defvar display-mm-dimensions-alist +This variable allows the user to specify the dimensions of graphical +displays returned by @code{display-mm-height} and +@code{display-mm-width} in case the system provides incorrect values. +@end defvar + +@defun display-backing-store &optional display +This function returns the backing store capability of the display. +Backing store means recording the pixels of windows (and parts of +windows) that are not exposed, so that when exposed they can be +displayed very quickly. + +Values can be the symbols @code{always}, @code{when-mapped}, or +@code{not-useful}. The function can also return @code{nil} +when the question is inapplicable to a certain kind of display. +@end defun + +@defun display-save-under &optional display +This function returns non-@code{nil} if the display supports the +SaveUnder feature. That feature is used by pop-up windows +to save the pixels they obscure, so that they can pop down +quickly. +@end defun + +@defun display-planes &optional display +This function returns the number of planes the display supports. +This is typically the number of bits per pixel. +For a tty display, it is log to base two of the number of colors supported. +@end defun + +@defun display-visual-class &optional display +This function returns the visual class for the screen. The value is one +of the symbols @code{static-gray}, @code{gray-scale}, +@code{static-color}, @code{pseudo-color}, @code{true-color}, and +@code{direct-color}. +@end defun + +@defun display-color-cells &optional display +This function returns the number of color cells the screen supports. +@end defun + + These functions obtain additional information specifically +about X displays. + +@defun x-server-version &optional display +This function returns the list of version numbers of the X server +running the display. The value is a list of three integers: the major +and minor version numbers of the X protocol, and the +distributor-specific release number of the X server software itself. +@end defun + +@defun x-server-vendor &optional display +This function returns the ``vendor'' that provided the X server +software (as a string). Really this means whoever distributes the X +server. + +When the developers of X labelled software distributors as +``vendors,'' they showed their false assumption that no system could +ever be developed and distributed noncommercially. +@end defun + +@ignore +@defvar x-no-window-manager +This variable's value is @code{t} if no X window manager is in use. +@end defvar +@end ignore + +@ignore +@item +The functions @code{x-pixel-width} and @code{x-pixel-height} return the +width and height of an X Window frame, measured in pixels. +@end ignore + +@ignore + arch-tag: 94977df6-3dca-4730-b57b-c6329e9282ba +@end ignore diff --cc doc/lispref/processes.texi index 88c51161733,00000000000..28e41a09973 mode 100644,000000..100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@@ -1,2561 -1,0 +1,2562 @@@ +@c -*-texinfo-*- +@c This is part of the GNU Emacs Lisp Reference Manual. +@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, +@c 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See the file elisp.texi for copying conditions. +@setfilename ../../info/processes +@node Processes, Display, Abbrevs, Top +@chapter Processes +@cindex child process +@cindex parent process +@cindex subprocess +@cindex process + + In the terminology of operating systems, a @dfn{process} is a space in +which a program can execute. Emacs runs in a process. Emacs Lisp +programs can invoke other programs in processes of their own. These are +called @dfn{subprocesses} or @dfn{child processes} of the Emacs process, +which is their @dfn{parent process}. + + A subprocess of Emacs may be @dfn{synchronous} or @dfn{asynchronous}, +depending on how it is created. When you create a synchronous +subprocess, the Lisp program waits for the subprocess to terminate +before continuing execution. When you create an asynchronous +subprocess, it can run in parallel with the Lisp program. This kind of +subprocess is represented within Emacs by a Lisp object which is also +called a ``process.'' Lisp programs can use this object to communicate +with the subprocess or to control it. For example, you can send +signals, obtain status information, receive output from the process, or +send input to it. + +@defun processp object +This function returns @code{t} if @var{object} is a process, +@code{nil} otherwise. +@end defun + +@menu +* Subprocess Creation:: Functions that start subprocesses. +* Shell Arguments:: Quoting an argument to pass it to a shell. +* Synchronous Processes:: Details of using synchronous subprocesses. +* Asynchronous Processes:: Starting up an asynchronous subprocess. +* Deleting Processes:: Eliminating an asynchronous subprocess. +* Process Information:: Accessing run-status and other attributes. +* Input to Processes:: Sending input to an asynchronous subprocess. +* Signals to Processes:: Stopping, continuing or interrupting + an asynchronous subprocess. +* Output from Processes:: Collecting output from an asynchronous subprocess. +* Sentinels:: Sentinels run when process run-status changes. +* Query Before Exit:: Whether to query if exiting will kill a process. +* Transaction Queues:: Transaction-based communication with subprocesses. +* Network:: Opening network connections. +* Network Servers:: Network servers let Emacs accept net connections. +* Datagrams:: UDP network connections. +* Low-Level Network:: Lower-level but more general function + to create connections and servers. +* Misc Network:: Additional relevant functions for network connections. +* Byte Packing:: Using bindat to pack and unpack binary data. +@end menu + +@node Subprocess Creation +@section Functions that Create Subprocesses + + There are three functions that create a new subprocess in which to run +a program. One of them, @code{start-process}, creates an asynchronous +process and returns a process object (@pxref{Asynchronous Processes}). +The other two, @code{call-process} and @code{call-process-region}, +create a synchronous process and do not return a process object +(@pxref{Synchronous Processes}). + + Synchronous and asynchronous processes are explained in the following +sections. Since the three functions are all called in a similar +fashion, their common arguments are described here. + +@cindex execute program +@cindex @code{PATH} environment variable +@cindex @code{HOME} environment variable + In all cases, the function's @var{program} argument specifies the +program to be run. An error is signaled if the file is not found or +cannot be executed. If the file name is relative, the variable +@code{exec-path} contains a list of directories to search. Emacs +initializes @code{exec-path} when it starts up, based on the value of +the environment variable @code{PATH}. The standard file name +constructs, @samp{~}, @samp{.}, and @samp{..}, are interpreted as +usual in @code{exec-path}, but environment variable substitutions +(@samp{$HOME}, etc.) are not recognized; use +@code{substitute-in-file-name} to perform them (@pxref{File Name +Expansion}). @code{nil} in this list refers to +@code{default-directory}. + + Executing a program can also try adding suffixes to the specified +name: + +@defvar exec-suffixes +This variable is a list of suffixes (strings) to try adding to the +specified program file name. The list should include @code{""} if you +want the name to be tried exactly as specified. The default value is +system-dependent. +@end defvar + + @strong{Please note:} The argument @var{program} contains only the +name of the program; it may not contain any command-line arguments. You +must use @var{args} to provide those. + + Each of the subprocess-creating functions has a @var{buffer-or-name} +argument which specifies where the standard output from the program will +go. It should be a buffer or a buffer name; if it is a buffer name, +that will create the buffer if it does not already exist. It can also +be @code{nil}, which says to discard the output unless a filter function +handles it. (@xref{Filter Functions}, and @ref{Read and Print}.) +Normally, you should avoid having multiple processes send output to the +same buffer because their output would be intermixed randomly. + +@cindex program arguments + All three of the subprocess-creating functions have a @code{&rest} +argument, @var{args}. The @var{args} must all be strings, and they are +supplied to @var{program} as separate command line arguments. Wildcard +characters and other shell constructs have no special meanings in these +strings, since the strings are passed directly to the specified program. + + The subprocess gets its current directory from the value of +@code{default-directory} (@pxref{File Name Expansion}). + +@cindex environment variables, subprocesses + The subprocess inherits its environment from Emacs, but you can +specify overrides for it with @code{process-environment}. @xref{System +Environment}. + +@defvar exec-directory +@pindex movemail +The value of this variable is a string, the name of a directory that +contains programs that come with GNU Emacs, programs intended for Emacs +to invoke. The program @code{movemail} is an example of such a program; +Rmail uses it to fetch new mail from an inbox. +@end defvar + +@defopt exec-path +The value of this variable is a list of directories to search for +programs to run in subprocesses. Each element is either the name of a +directory (i.e., a string), or @code{nil}, which stands for the default +directory (which is the value of @code{default-directory}). +@cindex program directories + +The value of @code{exec-path} is used by @code{call-process} and +@code{start-process} when the @var{program} argument is not an absolute +file name. +@end defopt + +@node Shell Arguments +@section Shell Arguments +@cindex arguments for shell commands +@cindex shell command arguments + + Lisp programs sometimes need to run a shell and give it a command +that contains file names that were specified by the user. These +programs ought to be able to support any valid file name. But the shell +gives special treatment to certain characters, and if these characters +occur in the file name, they will confuse the shell. To handle these +characters, use the function @code{shell-quote-argument}: + +@defun shell-quote-argument argument +This function returns a string which represents, in shell syntax, +an argument whose actual contents are @var{argument}. It should +work reliably to concatenate the return value into a shell command +and then pass it to a shell for execution. + +Precisely what this function does depends on your operating system. The +function is designed to work with the syntax of your system's standard +shell; if you use an unusual shell, you will need to redefine this +function. + +@example +;; @r{This example shows the behavior on GNU and Unix systems.} +(shell-quote-argument "foo > bar") + @result{} "foo\\ \\>\\ bar" + +;; @r{This example shows the behavior on MS-DOS and MS-Windows.} +(shell-quote-argument "foo > bar") + @result{} "\"foo > bar\"" +@end example + +Here's an example of using @code{shell-quote-argument} to construct +a shell command: + +@example +(concat "diff -c " + (shell-quote-argument oldfile) + " " + (shell-quote-argument newfile)) +@end example +@end defun + +@node Synchronous Processes +@section Creating a Synchronous Process +@cindex synchronous subprocess + + After a @dfn{synchronous process} is created, Emacs waits for the +process to terminate before continuing. Starting Dired on GNU or +Unix@footnote{On other systems, Emacs uses a Lisp emulation of +@code{ls}; see @ref{Contents of Directories}.} is an example of this: it +runs @code{ls} in a synchronous process, then modifies the output +slightly. Because the process is synchronous, the entire directory +listing arrives in the buffer before Emacs tries to do anything with it. + + While Emacs waits for the synchronous subprocess to terminate, the +user can quit by typing @kbd{C-g}. The first @kbd{C-g} tries to kill +the subprocess with a @code{SIGINT} signal; but it waits until the +subprocess actually terminates before quitting. If during that time the +user types another @kbd{C-g}, that kills the subprocess instantly with +@code{SIGKILL} and quits immediately (except on MS-DOS, where killing +other processes doesn't work). @xref{Quitting}. + + The synchronous subprocess functions return an indication of how the +process terminated. + + The output from a synchronous subprocess is generally decoded using a +coding system, much like text read from a file. The input sent to a +subprocess by @code{call-process-region} is encoded using a coding +system, much like text written into a file. @xref{Coding Systems}. + +@defun call-process program &optional infile destination display &rest args +This function calls @var{program} in a separate process and waits for +it to finish. + +The standard input for the process comes from file @var{infile} if +@var{infile} is not @code{nil}, and from the null device otherwise. +The argument @var{destination} says where to put the process output. +Here are the possibilities: + +@table @asis +@item a buffer +Insert the output in that buffer, before point. This includes both the +standard output stream and the standard error stream of the process. + +@item a string +Insert the output in a buffer with that name, before point. + +@item @code{t} +Insert the output in the current buffer, before point. + +@item @code{nil} +Discard the output. + +@item 0 +Discard the output, and return @code{nil} immediately without waiting +for the subprocess to finish. + +In this case, the process is not truly synchronous, since it can run in +parallel with Emacs; but you can think of it as synchronous in that +Emacs is essentially finished with the subprocess as soon as this +function returns. + +MS-DOS doesn't support asynchronous subprocesses, so this option doesn't +work there. + +@item @code{(@var{real-destination} @var{error-destination})} +Keep the standard output stream separate from the standard error stream; +deal with the ordinary output as specified by @var{real-destination}, +and dispose of the error output according to @var{error-destination}. +If @var{error-destination} is @code{nil}, that means to discard the +error output, @code{t} means mix it with the ordinary output, and a +string specifies a file name to redirect error output into. + +You can't directly specify a buffer to put the error output in; that is +too difficult to implement. But you can achieve this result by sending +the error output to a temporary file and then inserting the file into a +buffer. +@end table + +If @var{display} is non-@code{nil}, then @code{call-process} redisplays +the buffer as output is inserted. (However, if the coding system chosen +for decoding output is @code{undecided}, meaning deduce the encoding +from the actual data, then redisplay sometimes cannot continue once +non-@acronym{ASCII} characters are encountered. There are fundamental +reasons why it is hard to fix this; see @ref{Output from Processes}.) + +Otherwise the function @code{call-process} does no redisplay, and the +results become visible on the screen only when Emacs redisplays that +buffer in the normal course of events. + +The remaining arguments, @var{args}, are strings that specify command +line arguments for the program. + +The value returned by @code{call-process} (unless you told it not to +wait) indicates the reason for process termination. A number gives the +exit status of the subprocess; 0 means success, and any other value +means failure. If the process terminated with a signal, +@code{call-process} returns a string describing the signal. + +In the examples below, the buffer @samp{foo} is current. + +@smallexample +@group +(call-process "pwd" nil t) + @result{} 0 + +---------- Buffer: foo ---------- +/usr/user/lewis/manual +---------- Buffer: foo ---------- +@end group + +@group +(call-process "grep" nil "bar" nil "lewis" "/etc/passwd") + @result{} 0 + +---------- Buffer: bar ---------- +lewis:5LTsHm66CSWKg:398:21:Bil Lewis:/user/lewis:/bin/csh + +---------- Buffer: bar ---------- +@end group +@end smallexample + +Here is a good example of the use of @code{call-process}, which used to +be found in the definition of @code{insert-directory}: + +@smallexample +@group +(call-process insert-directory-program nil t nil @var{switches} + (if full-directory-p + (concat (file-name-as-directory file) ".") + file)) +@end group +@end smallexample +@end defun + +@defun process-file program &optional infile buffer display &rest args +This function processes files synchronously in a separate process. It +is similar to @code{call-process} but may invoke a file handler based +on the value of the variable @code{default-directory}. The current +working directory of the subprocess is @code{default-directory}. + +The arguments are handled in almost the same way as for +@code{call-process}, with the following differences: + +Some file handlers may not support all combinations and forms of the +arguments @var{infile}, @var{buffer}, and @var{display}. For example, +some file handlers might behave as if @var{display} were @code{nil}, +regardless of the value actually passed. As another example, some +file handlers might not support separating standard output and error +output by way of the @var{buffer} argument. + +If a file handler is invoked, it determines the program to run based +on the first argument @var{program}. For instance, consider that a +handler for remote files is invoked. Then the path that is used for +searching the program might be different than @code{exec-path}. + +The second argument @var{infile} may invoke a file handler. The file +handler could be different from the handler chosen for the +@code{process-file} function itself. (For example, +@code{default-directory} could be on a remote host, whereas +@var{infile} is on another remote host. Or @code{default-directory} +could be non-special, whereas @var{infile} is on a remote host.) + +If @var{buffer} is a list of the form @code{(@var{real-destination} +@var{error-destination})}, and @var{error-destination} names a file, +then the same remarks as for @var{infile} apply. + +The remaining arguments (@var{args}) will be passed to the process +verbatim. Emacs is not involved in processing file names that are +present in @var{args}. To avoid confusion, it may be best to avoid +absolute file names in @var{args}, but rather to specify all file +names as relative to @code{default-directory}. The function +@code{file-relative-name} is useful for constructing such relative +file names. +@end defun + +@defun call-process-region start end program &optional delete destination display &rest args +This function sends the text from @var{start} to @var{end} as +standard input to a process running @var{program}. It deletes the text +sent if @var{delete} is non-@code{nil}; this is useful when +@var{destination} is @code{t}, to insert the output in the current +buffer in place of the input. + +The arguments @var{destination} and @var{display} control what to do +with the output from the subprocess, and whether to update the display +as it comes in. For details, see the description of +@code{call-process}, above. If @var{destination} is the integer 0, +@code{call-process-region} discards the output and returns @code{nil} +immediately, without waiting for the subprocess to finish (this only +works if asynchronous subprocesses are supported). + +The remaining arguments, @var{args}, are strings that specify command +line arguments for the program. + +The return value of @code{call-process-region} is just like that of +@code{call-process}: @code{nil} if you told it to return without +waiting; otherwise, a number or string which indicates how the +subprocess terminated. + +In the following example, we use @code{call-process-region} to run the +@code{cat} utility, with standard input being the first five characters +in buffer @samp{foo} (the word @samp{input}). @code{cat} copies its +standard input into its standard output. Since the argument +@var{destination} is @code{t}, this output is inserted in the current +buffer. + +@smallexample +@group +---------- Buffer: foo ---------- +input@point{} +---------- Buffer: foo ---------- +@end group + +@group +(call-process-region 1 6 "cat" nil t) + @result{} 0 + +---------- Buffer: foo ---------- +inputinput@point{} +---------- Buffer: foo ---------- +@end group +@end smallexample + + The @code{shell-command-on-region} command uses +@code{call-process-region} like this: + +@smallexample +@group +(call-process-region + start end + shell-file-name ; @r{Name of program.} + nil ; @r{Do not delete region.} + buffer ; @r{Send output to @code{buffer}.} + nil ; @r{No redisplay during output.} + "-c" command) ; @r{Arguments for the shell.} +@end group +@end smallexample +@end defun + +@defun call-process-shell-command command &optional infile destination display &rest args +This function executes the shell command @var{command} synchronously +in a separate process. The final arguments @var{args} are additional +arguments to add at the end of @var{command}. The other arguments +are handled as in @code{call-process}. +@end defun + +@defun process-file-shell-command command &optional infile destination display &rest args +This function is like @code{call-process-shell-command}, but uses +@code{process-file} internally. Depending on @code{default-directory}, +@var{command} can be executed also on remote hosts. +@end defun + +@defun shell-command-to-string command +This function executes @var{command} (a string) as a shell command, +then returns the command's output as a string. +@end defun + +@node Asynchronous Processes +@section Creating an Asynchronous Process +@cindex asynchronous subprocess + + After an @dfn{asynchronous process} is created, Emacs and the subprocess +both continue running immediately. The process thereafter runs +in parallel with Emacs, and the two can communicate with each other +using the functions described in the following sections. However, +communication is only partially asynchronous: Emacs sends data to the +process only when certain functions are called, and Emacs accepts data +from the process only when Emacs is waiting for input or for a time +delay. + + Here we describe how to create an asynchronous process. + +@defun start-process name buffer-or-name program &rest args +This function creates a new asynchronous subprocess and starts the +program @var{program} running in it. It returns a process object that +stands for the new subprocess in Lisp. The argument @var{name} +specifies the name for the process object; if a process with this name +already exists, then @var{name} is modified (by appending @samp{<1>}, +etc.) to be unique. The buffer @var{buffer-or-name} is the buffer to +associate with the process. + +The remaining arguments, @var{args}, are strings that specify command +line arguments for the program. + +In the example below, the first process is started and runs (rather, +sleeps) for 100 seconds. Meanwhile, the second process is started, and +given the name @samp{my-process<1>} for the sake of uniqueness. It +inserts the directory listing at the end of the buffer @samp{foo}, +before the first process finishes. Then it finishes, and a message to +that effect is inserted in the buffer. Much later, the first process +finishes, and another message is inserted in the buffer for it. + +@smallexample +@group +(start-process "my-process" "foo" "sleep" "100") + @result{} # +@end group + +@group +(start-process "my-process" "foo" "ls" "-l" "/user/lewis/bin") + @result{} #> + +---------- Buffer: foo ---------- +total 2 +lrwxrwxrwx 1 lewis 14 Jul 22 10:12 gnuemacs --> /emacs +-rwxrwxrwx 1 lewis 19 Jul 30 21:02 lemon + +Process my-process<1> finished + +Process my-process finished +---------- Buffer: foo ---------- +@end group +@end smallexample +@end defun + +@defun start-file-process name buffer-or-name program &rest args +Like @code{start-process}, this function starts a new asynchronous +subprocess running @var{program} in it, and returns its process +object---when @code{default-directory} is not a magic file name. + +If @code{default-directory} is magic, the function invokes its file +handler instead. This handler ought to run @var{program}, perhaps on +the local host, perhaps on a remote host that corresponds to +@code{default-directory}. In the latter case, the local part of +@code{default-directory} becomes the working directory of the process. + +This function does not try to invoke file name handlers for +@var{program} or for the @var{program-args}. + +Depending on the implementation of the file handler, it might not be +possible to apply @code{process-filter} or @code{process-sentinel} to +the resulting process object (@pxref{Filter Functions}, @pxref{Sentinels}). + +Some file handlers may not support @code{start-file-process} (for +example @code{ange-ftp-hook-function}). In such cases, the function +does nothing and returns @code{nil}. +@end defun + +@defun start-process-shell-command name buffer-or-name command &rest command-args +This function is like @code{start-process} except that it uses a shell +to execute the specified command. The argument @var{command} is a shell +command name, and @var{command-args} are the arguments for the shell +command. The variable @code{shell-file-name} specifies which shell to +use. + +The point of running a program through the shell, rather than directly +with @code{start-process}, is so that you can employ shell features such +as wildcards in the arguments. It follows that if you include an +arbitrary user-specified arguments in the command, you should quote it +with @code{shell-quote-argument} first, so that any special shell +characters do @emph{not} have their special shell meanings. @xref{Shell +Arguments}. +@end defun + +@defun start-file-process-shell-command name buffer-or-name command &rest command-args +This function is like @code{start-process-shell-command}, but uses +@code{start-file-process} internally. By this, @var{command} can be +executed also on remote hosts, depending on @code{default-directory}. +@end defun + +@defvar process-connection-type +@cindex pipes +@cindex @acronym{PTY}s +This variable controls the type of device used to communicate with +asynchronous subprocesses. If it is non-@code{nil}, then @acronym{PTY}s are +used, when available. Otherwise, pipes are used. + +@acronym{PTY}s are usually preferable for processes visible to the user, as +in Shell mode, because they allow job control (@kbd{C-c}, @kbd{C-z}, +etc.) to work between the process and its children, whereas pipes do +not. For subprocesses used for internal purposes by programs, it is +often better to use a pipe, because they are more efficient. In +addition, the total number of @acronym{PTY}s is limited on many systems and +it is good not to waste them. + +The value of @code{process-connection-type} takes effect when +@code{start-process} is called. So you can specify how to communicate +with one subprocess by binding the variable around the call to +@code{start-process}. + +@smallexample +@group +(let ((process-connection-type nil)) ; @r{Use a pipe.} + (start-process @dots{})) +@end group +@end smallexample + +To determine whether a given subprocess actually got a pipe or a +@acronym{PTY}, use the function @code{process-tty-name} (@pxref{Process +Information}). +@end defvar + +@node Deleting Processes +@section Deleting Processes +@cindex deleting processes + + @dfn{Deleting a process} disconnects Emacs immediately from the +subprocess. Processes are deleted automatically after they terminate, +but not necessarily right away. You can delete a process explicitly +at any time. If you delete a terminated process explicitly before it +is deleted automatically, no harm results. Deleting a running +process sends a signal to terminate it (and its child processes if +any), and calls the process sentinel if it has one. @xref{Sentinels}. + + When a process is deleted, the process object itself continues to +exist as long as other Lisp objects point to it. All the Lisp +primitives that work on process objects accept deleted processes, but +those that do I/O or send signals will report an error. The process +mark continues to point to the same place as before, usually into a +buffer where output from the process was being inserted. + +@defopt delete-exited-processes +This variable controls automatic deletion of processes that have +terminated (due to calling @code{exit} or to a signal). If it is +@code{nil}, then they continue to exist until the user runs +@code{list-processes}. Otherwise, they are deleted immediately after +they exit. +@end defopt + +@defun delete-process process +This function deletes a process, killing it with a @code{SIGKILL} +signal. The argument may be a process, the name of a process, a +buffer, or the name of a buffer. (A buffer or buffer-name stands for +the process that @code{get-buffer-process} returns.) Calling +@code{delete-process} on a running process terminates it, updates the +process status, and runs the sentinel (if any) immediately. If the +process has already terminated, calling @code{delete-process} has no +effect on its status, or on the running of its sentinel (which will +happen sooner or later). + +@smallexample +@group +(delete-process "*shell*") + @result{} nil +@end group +@end smallexample +@end defun + +@node Process Information +@section Process Information + + Several functions return information about processes. +@code{list-processes} is provided for interactive use. + +@deffn Command list-processes &optional query-only +This command displays a listing of all living processes. In addition, +it finally deletes any process whose status was @samp{Exited} or +@samp{Signaled}. It returns @code{nil}. + +If @var{query-only} is non-@code{nil} then it lists only processes +whose query flag is non-@code{nil}. @xref{Query Before Exit}. +@end deffn + +@defun process-list +This function returns a list of all processes that have not been deleted. + +@smallexample +@group +(process-list) + @result{} (# #) +@end group +@end smallexample +@end defun + +@defun get-process name +This function returns the process named @var{name}, or @code{nil} if +there is none. An error is signaled if @var{name} is not a string. + +@smallexample +@group +(get-process "shell") + @result{} # +@end group +@end smallexample +@end defun + +@defun process-command process +This function returns the command that was executed to start +@var{process}. This is a list of strings, the first string being the +program executed and the rest of the strings being the arguments that +were given to the program. + +@smallexample +@group +(process-command (get-process "shell")) + @result{} ("/bin/csh" "-i") +@end group +@end smallexample +@end defun + +@defun process-id process +This function returns the @acronym{PID} of @var{process}. This is an +integer that distinguishes the process @var{process} from all other +processes running on the same computer at the current time. The +@acronym{PID} of a process is chosen by the operating system kernel when the +process is started and remains constant as long as the process exists. +@end defun + +@defun process-name process +This function returns the name of @var{process}. +@end defun + +@defun process-status process-name +This function returns the status of @var{process-name} as a symbol. +The argument @var{process-name} must be a process, a buffer, a +process name (string) or a buffer name (string). + +The possible values for an actual subprocess are: + +@table @code +@item run +for a process that is running. +@item stop +for a process that is stopped but continuable. +@item exit +for a process that has exited. +@item signal +for a process that has received a fatal signal. +@item open +for a network connection that is open. +@item closed +for a network connection that is closed. Once a connection +is closed, you cannot reopen it, though you might be able to open +a new connection to the same place. +@item connect +for a non-blocking connection that is waiting to complete. +@item failed +for a non-blocking connection that has failed to complete. +@item listen +for a network server that is listening. +@item nil +if @var{process-name} is not the name of an existing process. +@end table + +@smallexample +@group +(process-status "shell") + @result{} run +@end group +@group +(process-status (get-buffer "*shell*")) + @result{} run +@end group +@group +x + @result{} #> +(process-status x) + @result{} exit +@end group +@end smallexample + +For a network connection, @code{process-status} returns one of the symbols +@code{open} or @code{closed}. The latter means that the other side +closed the connection, or Emacs did @code{delete-process}. +@end defun + +@defun process-exit-status process +This function returns the exit status of @var{process} or the signal +number that killed it. (Use the result of @code{process-status} to +determine which of those it is.) If @var{process} has not yet +terminated, the value is 0. +@end defun + +@defun process-tty-name process +This function returns the terminal name that @var{process} is using for +its communication with Emacs---or @code{nil} if it is using pipes +instead of a terminal (see @code{process-connection-type} in +@ref{Asynchronous Processes}). +@end defun + +@defun process-coding-system process +@anchor{Coding systems for a subprocess} +This function returns a cons cell describing the coding systems in use +for decoding output from @var{process} and for encoding input to +@var{process} (@pxref{Coding Systems}). The value has this form: + +@example +(@var{coding-system-for-decoding} . @var{coding-system-for-encoding}) +@end example +@end defun + +@defun set-process-coding-system process &optional decoding-system encoding-system +This function specifies the coding systems to use for subsequent output +from and input to @var{process}. It will use @var{decoding-system} to +decode subprocess output, and @var{encoding-system} to encode subprocess +input. +@end defun + + Every process also has a property list that you can use to store +miscellaneous values associated with the process. + +@defun process-get process propname +This function returns the value of the @var{propname} property +of @var{process}. +@end defun + +@defun process-put process propname value +This function sets the value of the @var{propname} property +of @var{process} to @var{value}. +@end defun + +@defun process-plist process +This function returns the process plist of @var{process}. +@end defun + +@defun set-process-plist process plist +This function sets the process plist of @var{process} to @var{plist}. +@end defun + +@node Input to Processes +@section Sending Input to Processes +@cindex process input + + Asynchronous subprocesses receive input when it is sent to them by +Emacs, which is done with the functions in this section. You must +specify the process to send input to, and the input data to send. The +data appears on the ``standard input'' of the subprocess. + + Some operating systems have limited space for buffered input in a +@acronym{PTY}. On these systems, Emacs sends an @acronym{EOF} +periodically amidst the other characters, to force them through. For +most programs, these @acronym{EOF}s do no harm. + + Subprocess input is normally encoded using a coding system before the +subprocess receives it, much like text written into a file. You can use +@code{set-process-coding-system} to specify which coding system to use +(@pxref{Process Information}). Otherwise, the coding system comes from +@code{coding-system-for-write}, if that is non-@code{nil}; or else from +the defaulting mechanism (@pxref{Default Coding Systems}). + + Sometimes the system is unable to accept input for that process, +because the input buffer is full. When this happens, the send functions +wait a short while, accepting output from subprocesses, and then try +again. This gives the subprocess a chance to read more of its pending +input and make space in the buffer. It also allows filters, sentinels +and timers to run---so take account of that in writing your code. + + In these functions, the @var{process} argument can be a process or +the name of a process, or a buffer or buffer name (which stands +for a process via @code{get-buffer-process}). @code{nil} means +the current buffer's process. + +@defun process-send-string process string +This function sends @var{process} the contents of @var{string} as +standard input. If it is @code{nil}, the current buffer's process is used. + + The function returns @code{nil}. + +@smallexample +@group +(process-send-string "shell<1>" "ls\n") + @result{} nil +@end group + + +@group +---------- Buffer: *shell* ---------- +... +introduction.texi syntax-tables.texi~ +introduction.texi~ text.texi +introduction.txt text.texi~ +... +---------- Buffer: *shell* ---------- +@end group +@end smallexample +@end defun + +@defun process-send-region process start end +This function sends the text in the region defined by @var{start} and +@var{end} as standard input to @var{process}. + +An error is signaled unless both @var{start} and @var{end} are +integers or markers that indicate positions in the current buffer. (It +is unimportant which number is larger.) +@end defun + +@defun process-send-eof &optional process +This function makes @var{process} see an end-of-file in its +input. The @acronym{EOF} comes after any text already sent to it. + +The function returns @var{process}. + +@smallexample +@group +(process-send-eof "shell") + @result{} "shell" +@end group +@end smallexample +@end defun + +@defun process-running-child-p process +This function will tell you whether a subprocess has given control of +its terminal to its own child process. The value is @code{t} if this is +true, or if Emacs cannot tell; it is @code{nil} if Emacs can be certain +that this is not so. +@end defun + +@node Signals to Processes +@section Sending Signals to Processes +@cindex process signals +@cindex sending signals +@cindex signals + + @dfn{Sending a signal} to a subprocess is a way of interrupting its +activities. There are several different signals, each with its own +meaning. The set of signals and their names is defined by the operating +system. For example, the signal @code{SIGINT} means that the user has +typed @kbd{C-c}, or that some analogous thing has happened. + + Each signal has a standard effect on the subprocess. Most signals +kill the subprocess, but some stop or resume execution instead. Most +signals can optionally be handled by programs; if the program handles +the signal, then we can say nothing in general about its effects. + + You can send signals explicitly by calling the functions in this +section. Emacs also sends signals automatically at certain times: +killing a buffer sends a @code{SIGHUP} signal to all its associated +processes; killing Emacs sends a @code{SIGHUP} signal to all remaining +processes. (@code{SIGHUP} is a signal that usually indicates that the +user hung up the phone.) + + Each of the signal-sending functions takes two optional arguments: +@var{process} and @var{current-group}. + + The argument @var{process} must be either a process, a process +name, a buffer, a buffer name, or @code{nil}. A buffer or buffer name +stands for a process through @code{get-buffer-process}. @code{nil} +stands for the process associated with the current buffer. An error +is signaled if @var{process} does not identify a process. + + The argument @var{current-group} is a flag that makes a difference +when you are running a job-control shell as an Emacs subprocess. If it +is non-@code{nil}, then the signal is sent to the current process-group +of the terminal that Emacs uses to communicate with the subprocess. If +the process is a job-control shell, this means the shell's current +subjob. If it is @code{nil}, the signal is sent to the process group of +the immediate subprocess of Emacs. If the subprocess is a job-control +shell, this is the shell itself. + + The flag @var{current-group} has no effect when a pipe is used to +communicate with the subprocess, because the operating system does not +support the distinction in the case of pipes. For the same reason, +job-control shells won't work when a pipe is used. See +@code{process-connection-type} in @ref{Asynchronous Processes}. + +@defun interrupt-process &optional process current-group +This function interrupts the process @var{process} by sending the +signal @code{SIGINT}. Outside of Emacs, typing the ``interrupt +character'' (normally @kbd{C-c} on some systems, and @code{DEL} on +others) sends this signal. When the argument @var{current-group} is +non-@code{nil}, you can think of this function as ``typing @kbd{C-c}'' +on the terminal by which Emacs talks to the subprocess. +@end defun + +@defun kill-process &optional process current-group +This function kills the process @var{process} by sending the +signal @code{SIGKILL}. This signal kills the subprocess immediately, +and cannot be handled by the subprocess. +@end defun + +@defun quit-process &optional process current-group +This function sends the signal @code{SIGQUIT} to the process +@var{process}. This signal is the one sent by the ``quit +character'' (usually @kbd{C-b} or @kbd{C-\}) when you are not inside +Emacs. +@end defun + +@defun stop-process &optional process current-group +This function stops the process @var{process} by sending the +signal @code{SIGTSTP}. Use @code{continue-process} to resume its +execution. + +Outside of Emacs, on systems with job control, the ``stop character'' +(usually @kbd{C-z}) normally sends this signal. When +@var{current-group} is non-@code{nil}, you can think of this function as +``typing @kbd{C-z}'' on the terminal Emacs uses to communicate with the +subprocess. +@end defun + +@defun continue-process &optional process current-group +This function resumes execution of the process @var{process} by sending +it the signal @code{SIGCONT}. This presumes that @var{process} was +stopped previously. +@end defun + +@c Emacs 19 feature +@defun signal-process process signal +This function sends a signal to process @var{process}. The argument +@var{signal} specifies which signal to send; it should be an integer. + +The @var{process} argument can be a system process @acronym{ID}; that +allows you to send signals to processes that are not children of +Emacs. +@end defun + +@node Output from Processes +@section Receiving Output from Processes +@cindex process output +@cindex output from processes + + There are two ways to receive the output that a subprocess writes to +its standard output stream. The output can be inserted in a buffer, +which is called the associated buffer of the process, or a function +called the @dfn{filter function} can be called to act on the output. If +the process has no buffer and no filter function, its output is +discarded. + + When a subprocess terminates, Emacs reads any pending output, +then stops reading output from that subprocess. Therefore, if the +subprocess has children that are still live and still producing +output, Emacs won't receive that output. + + Output from a subprocess can arrive only while Emacs is waiting: when +reading terminal input, in @code{sit-for} and @code{sleep-for} +(@pxref{Waiting}), and in @code{accept-process-output} (@pxref{Accepting +Output}). This minimizes the problem of timing errors that usually +plague parallel programming. For example, you can safely create a +process and only then specify its buffer or filter function; no output +can arrive before you finish, if the code in between does not call any +primitive that waits. + +@defvar process-adaptive-read-buffering +On some systems, when Emacs reads the output from a subprocess, the +output data is read in very small blocks, potentially resulting in +very poor performance. This behavior can be remedied to some extent +by setting the variable @var{process-adaptive-read-buffering} to a +non-@code{nil} value (the default), as it will automatically delay reading +from such processes, thus allowing them to produce more output before +Emacs tries to read it. +@end defvar + + It is impossible to separate the standard output and standard error +streams of the subprocess, because Emacs normally spawns the subprocess +inside a pseudo-TTY, and a pseudo-TTY has only one output channel. If +you want to keep the output to those streams separate, you should +redirect one of them to a file---for example, by using an appropriate +shell command. + +@menu +* Process Buffers:: If no filter, output is put in a buffer. +* Filter Functions:: Filter functions accept output from the process. +* Decoding Output:: Filters can get unibyte or multibyte strings. +* Accepting Output:: How to wait until process output arrives. +@end menu + +@node Process Buffers +@subsection Process Buffers + + A process can (and usually does) have an @dfn{associated buffer}, +which is an ordinary Emacs buffer that is used for two purposes: storing +the output from the process, and deciding when to kill the process. You +can also use the buffer to identify a process to operate on, since in +normal practice only one process is associated with any given buffer. +Many applications of processes also use the buffer for editing input to +be sent to the process, but this is not built into Emacs Lisp. + + Unless the process has a filter function (@pxref{Filter Functions}), +its output is inserted in the associated buffer. The position to insert +the output is determined by the @code{process-mark}, which is then +updated to point to the end of the text just inserted. Usually, but not +always, the @code{process-mark} is at the end of the buffer. + +@defun process-buffer process +This function returns the associated buffer of the process +@var{process}. + +@smallexample +@group +(process-buffer (get-process "shell")) + @result{} # +@end group +@end smallexample +@end defun + +@defun process-mark process +This function returns the process marker for @var{process}, which is the +marker that says where to insert output from the process. + +If @var{process} does not have a buffer, @code{process-mark} returns a +marker that points nowhere. + +Insertion of process output in a buffer uses this marker to decide where +to insert, and updates it to point after the inserted text. That is why +successive batches of output are inserted consecutively. + +Filter functions normally should use this marker in the same fashion +as is done by direct insertion of output in the buffer. A good +example of a filter function that uses @code{process-mark} is found at +the end of the following section. + +When the user is expected to enter input in the process buffer for +transmission to the process, the process marker separates the new input +from previous output. +@end defun + +@defun set-process-buffer process buffer +This function sets the buffer associated with @var{process} to +@var{buffer}. If @var{buffer} is @code{nil}, the process becomes +associated with no buffer. +@end defun + +@defun get-buffer-process buffer-or-name +This function returns a nondeleted process associated with the buffer +specified by @var{buffer-or-name}. If there are several processes +associated with it, this function chooses one (currently, the one most +recently created, but don't count on that). Deletion of a process +(see @code{delete-process}) makes it ineligible for this function to +return. + +It is usually a bad idea to have more than one process associated with +the same buffer. + +@smallexample +@group +(get-buffer-process "*shell*") + @result{} # +@end group +@end smallexample + +Killing the process's buffer deletes the process, which kills the +subprocess with a @code{SIGHUP} signal (@pxref{Signals to Processes}). +@end defun + +@node Filter Functions +@subsection Process Filter Functions +@cindex filter function +@cindex process filter + + A process @dfn{filter function} is a function that receives the +standard output from the associated process. If a process has a filter, +then @emph{all} output from that process is passed to the filter. The +process buffer is used directly for output from the process only when +there is no filter. + + The filter function can only be called when Emacs is waiting for +something, because process output arrives only at such times. Emacs +waits when reading terminal input, in @code{sit-for} and +@code{sleep-for} (@pxref{Waiting}), and in @code{accept-process-output} +(@pxref{Accepting Output}). + + A filter function must accept two arguments: the associated process +and a string, which is output just received from it. The function is +then free to do whatever it chooses with the output. + + Quitting is normally inhibited within a filter function---otherwise, +the effect of typing @kbd{C-g} at command level or to quit a user +command would be unpredictable. If you want to permit quitting inside +a filter function, bind @code{inhibit-quit} to @code{nil}. In most +cases, the right way to do this is with the macro +@code{with-local-quit}. @xref{Quitting}. + + If an error happens during execution of a filter function, it is +caught automatically, so that it doesn't stop the execution of whatever +program was running when the filter function was started. However, if +@code{debug-on-error} is non-@code{nil}, the error-catching is turned +off. This makes it possible to use the Lisp debugger to debug the +filter function. @xref{Debugger}. + + Many filter functions sometimes or always insert the text in the +process's buffer, mimicking the actions of Emacs when there is no +filter. Such filter functions need to use @code{set-buffer} in order to +be sure to insert in that buffer. To avoid setting the current buffer +semipermanently, these filter functions must save and restore the +current buffer. They should also update the process marker, and in some +cases update the value of point. Here is how to do these things: + +@smallexample +@group +(defun ordinary-insertion-filter (proc string) + (with-current-buffer (process-buffer proc) + (let ((moving (= (point) (process-mark proc)))) +@end group +@group + (save-excursion + ;; @r{Insert the text, advancing the process marker.} + (goto-char (process-mark proc)) + (insert string) + (set-marker (process-mark proc) (point))) + (if moving (goto-char (process-mark proc)))))) +@end group +@end smallexample + +@noindent +The reason to use @code{with-current-buffer}, rather than using +@code{save-excursion} to save and restore the current buffer, is so as +to preserve the change in point made by the second call to +@code{goto-char}. + + To make the filter force the process buffer to be visible whenever new +text arrives, insert the following line just before the +@code{with-current-buffer} construct: + +@smallexample +(display-buffer (process-buffer proc)) +@end smallexample + + To force point to the end of the new output, no matter where it was +previously, eliminate the variable @code{moving} and call +@code{goto-char} unconditionally. + + In earlier Emacs versions, every filter function that did regular +expression searching or matching had to explicitly save and restore the +match data. Now Emacs does this automatically for filter functions; +they never need to do it explicitly. @xref{Match Data}. + + A filter function that writes the output into the buffer of the +process should check whether the buffer is still alive. If it tries to +insert into a dead buffer, it will get an error. The expression +@code{(buffer-name (process-buffer @var{process}))} returns @code{nil} +if the buffer is dead. + + The output to the function may come in chunks of any size. A program +that produces the same output twice in a row may send it as one batch of +200 characters one time, and five batches of 40 characters the next. If +the filter looks for certain text strings in the subprocess output, make +sure to handle the case where one of these strings is split across two +or more batches of output. + +@defun set-process-filter process filter +This function gives @var{process} the filter function @var{filter}. If +@var{filter} is @code{nil}, it gives the process no filter. +@end defun + +@defun process-filter process +This function returns the filter function of @var{process}, or @code{nil} +if it has none. +@end defun + + Here is an example of use of a filter function: + +@smallexample +@group +(defun keep-output (process output) + (setq kept (cons output kept))) + @result{} keep-output +@end group +@group +(setq kept nil) + @result{} nil +@end group +@group +(set-process-filter (get-process "shell") 'keep-output) + @result{} keep-output +@end group +@group +(process-send-string "shell" "ls ~/other\n") + @result{} nil +kept + @result{} ("lewis@@slug[8] % " +@end group +@group +"FINAL-W87-SHORT.MSS backup.otl kolstad.mss~ +address.txt backup.psf kolstad.psf +backup.bib~ david.mss resume-Dec-86.mss~ +backup.err david.psf resume-Dec.psf +backup.mss dland syllabus.mss +" +"#backups.mss# backup.mss~ kolstad.mss +") +@end group +@end smallexample + +@ignore @c The code in this example doesn't show the right way to do things. +Here is another, more realistic example, which demonstrates how to use +the process mark to do insertion in the same fashion as is done when +there is no filter function: + +@smallexample +@group +;; @r{Insert input in the buffer specified by @code{my-shell-buffer}} +;; @r{and make sure that buffer is shown in some window.} +(defun my-process-filter (proc str) + (let ((cur (selected-window)) + (pop-up-windows t)) + (pop-to-buffer my-shell-buffer) +@end group +@group + (goto-char (point-max)) + (insert str) + (set-marker (process-mark proc) (point-max)) + (select-window cur))) +@end group +@end smallexample +@end ignore + +@node Decoding Output +@subsection Decoding Process Output +@cindex decode process output + + When Emacs writes process output directly into a multibyte buffer, +it decodes the output according to the process output coding system. +If the coding system is @code{raw-text} or @code{no-conversion}, Emacs +converts the unibyte output to multibyte using +@code{string-to-multibyte}, and inserts the resulting multibyte text. + + You can use @code{set-process-coding-system} to specify which coding +system to use (@pxref{Process Information}). Otherwise, the coding +system comes from @code{coding-system-for-read}, if that is +non-@code{nil}; or else from the defaulting mechanism (@pxref{Default +Coding Systems}). + + @strong{Warning:} Coding systems such as @code{undecided} which +determine the coding system from the data do not work entirely +reliably with asynchronous subprocess output. This is because Emacs +has to process asynchronous subprocess output in batches, as it +arrives. Emacs must try to detect the proper coding system from one +batch at a time, and this does not always work. Therefore, if at all +possible, specify a coding system that determines both the character +code conversion and the end of line conversion---that is, one like +@code{latin-1-unix}, rather than @code{undecided} or @code{latin-1}. + +@cindex filter multibyte flag, of process +@cindex process filter multibyte flag + When Emacs calls a process filter function, it provides the process +output as a multibyte string or as a unibyte string according to the +process's filter multibyte flag. If the flag is non-@code{nil}, Emacs +decodes the output according to the process output coding system to +produce a multibyte string, and passes that to the process. If the +flag is @code{nil}, Emacs puts the output into a unibyte string, with +no decoding, and passes that. + + When you create a process, the filter multibyte flag takes its +initial value from @code{default-enable-multibyte-characters}. If you +want to change the flag later on, use +@code{set-process-filter-multibyte}. + +@defun set-process-filter-multibyte process multibyte +This function sets the filter multibyte flag of @var{process} +to @var{multibyte}. +@end defun + +@defun process-filter-multibyte-p process +This function returns the filter multibyte flag of @var{process}. +@end defun + +@node Accepting Output +@subsection Accepting Output from Processes +@cindex accept input from processes + + Output from asynchronous subprocesses normally arrives only while +Emacs is waiting for some sort of external event, such as elapsed time +or terminal input. Occasionally it is useful in a Lisp program to +explicitly permit output to arrive at a specific point, or even to wait +until output arrives from a process. + +@defun accept-process-output &optional process seconds millisec just-this-one +This function allows Emacs to read pending output from processes. The +output is inserted in the associated buffers or given to their filter +functions. If @var{process} is non-@code{nil} then this function does +not return until some output has been received from @var{process}. + +@c Emacs 19 feature +The arguments @var{seconds} and @var{millisec} let you specify timeout +periods. The former specifies a period measured in seconds and the +latter specifies one measured in milliseconds. The two time periods +thus specified are added together, and @code{accept-process-output} +returns after that much time, whether or not there has been any +subprocess output. + +The argument @var{millisec} is semi-obsolete nowadays because +@var{seconds} can be a floating point number to specify waiting a +fractional number of seconds. If @var{seconds} is 0, the function +accepts whatever output is pending but does not wait. + +@c Emacs 22.1 feature +If @var{process} is a process, and the argument @var{just-this-one} is +non-@code{nil}, only output from that process is handled, suspending output +from other processes until some output has been received from that +process or the timeout expires. If @var{just-this-one} is an integer, +also inhibit running timers. This feature is generally not +recommended, but may be necessary for specific applications, such as +speech synthesis. + +The function @code{accept-process-output} returns non-@code{nil} if it +did get some output, or @code{nil} if the timeout expired before output +arrived. +@end defun + +@node Sentinels +@section Sentinels: Detecting Process Status Changes +@cindex process sentinel +@cindex sentinel (of process) + + A @dfn{process sentinel} is a function that is called whenever the +associated process changes status for any reason, including signals +(whether sent by Emacs or caused by the process's own actions) that +terminate, stop, or continue the process. The process sentinel is +also called if the process exits. The sentinel receives two +arguments: the process for which the event occurred, and a string +describing the type of event. + + The string describing the event looks like one of the following: + +@itemize @bullet +@item +@code{"finished\n"}. + +@item +@code{"exited abnormally with code @var{exitcode}\n"}. + +@item +@code{"@var{name-of-signal}\n"}. + +@item +@code{"@var{name-of-signal} (core dumped)\n"}. +@end itemize + + A sentinel runs only while Emacs is waiting (e.g., for terminal +input, or for time to elapse, or for process output). This avoids the +timing errors that could result from running them at random places in +the middle of other Lisp programs. A program can wait, so that +sentinels will run, by calling @code{sit-for} or @code{sleep-for} +(@pxref{Waiting}), or @code{accept-process-output} (@pxref{Accepting +Output}). Emacs also allows sentinels to run when the command loop is +reading input. @code{delete-process} calls the sentinel when it +terminates a running process. + + Emacs does not keep a queue of multiple reasons to call the sentinel +of one process; it records just the current status and the fact that +there has been a change. Therefore two changes in status, coming in +quick succession, can call the sentinel just once. However, process +termination will always run the sentinel exactly once. This is +because the process status can't change again after termination. + + Emacs explicitly checks for output from the process before running +the process sentinel. Once the sentinel runs due to process +termination, no further output can arrive from the process. + + A sentinel that writes the output into the buffer of the process +should check whether the buffer is still alive. If it tries to insert +into a dead buffer, it will get an error. If the buffer is dead, +@code{(buffer-name (process-buffer @var{process}))} returns @code{nil}. + + Quitting is normally inhibited within a sentinel---otherwise, the +effect of typing @kbd{C-g} at command level or to quit a user command +would be unpredictable. If you want to permit quitting inside a +sentinel, bind @code{inhibit-quit} to @code{nil}. In most cases, the +right way to do this is with the macro @code{with-local-quit}. +@xref{Quitting}. + + If an error happens during execution of a sentinel, it is caught +automatically, so that it doesn't stop the execution of whatever +programs was running when the sentinel was started. However, if +@code{debug-on-error} is non-@code{nil}, the error-catching is turned +off. This makes it possible to use the Lisp debugger to debug the +sentinel. @xref{Debugger}. + + While a sentinel is running, the process sentinel is temporarily +set to @code{nil} so that the sentinel won't run recursively. +For this reason it is not possible for a sentinel to specify +a new sentinel. + + In earlier Emacs versions, every sentinel that did regular expression +searching or matching had to explicitly save and restore the match data. +Now Emacs does this automatically for sentinels; they never need to do +it explicitly. @xref{Match Data}. + +@defun set-process-sentinel process sentinel +This function associates @var{sentinel} with @var{process}. If +@var{sentinel} is @code{nil}, then the process will have no sentinel. +The default behavior when there is no sentinel is to insert a message in +the process's buffer when the process status changes. + +Changes in process sentinel take effect immediately---if the sentinel +is slated to be run but has not been called yet, and you specify a new +sentinel, the eventual call to the sentinel will use the new one. + +@smallexample +@group +(defun msg-me (process event) + (princ + (format "Process: %s had the event `%s'" process event))) +(set-process-sentinel (get-process "shell") 'msg-me) + @result{} msg-me +@end group +@group +(kill-process (get-process "shell")) + @print{} Process: # had the event `killed' + @result{} # +@end group +@end smallexample +@end defun + +@defun process-sentinel process +This function returns the sentinel of @var{process}, or @code{nil} if it +has none. +@end defun + +@defun waiting-for-user-input-p +While a sentinel or filter function is running, this function returns +non-@code{nil} if Emacs was waiting for keyboard input from the user at +the time the sentinel or filter function was called, @code{nil} if it +was not. +@end defun + +@node Query Before Exit +@section Querying Before Exit + + When Emacs exits, it terminates all its subprocesses by sending them +the @code{SIGHUP} signal. Because subprocesses may be doing +valuable work, Emacs normally asks the user to confirm that it is ok +to terminate them. Each process has a query flag which, if +non-@code{nil}, says that Emacs should ask for confirmation before +exiting and thus killing that process. The default for the query flag +is @code{t}, meaning @emph{do} query. + +@defun process-query-on-exit-flag process +This returns the query flag of @var{process}. +@end defun + +@defun set-process-query-on-exit-flag process flag +This function sets the query flag of @var{process} to @var{flag}. It +returns @var{flag}. + +@smallexample +@group +;; @r{Don't query about the shell process} +(set-process-query-on-exit-flag (get-process "shell") nil) + @result{} t +@end group +@end smallexample +@end defun + +@defun process-kill-without-query process &optional do-query +This function clears the query flag of @var{process}, so that +Emacs will not query the user on account of that process. + +Actually, the function does more than that: it returns the old value of +the process's query flag, and sets the query flag to @var{do-query}. +Please don't use this function to do those things any more---please +use the newer, cleaner functions @code{process-query-on-exit-flag} and +@code{set-process-query-on-exit-flag} in all but the simplest cases. +The only way you should use @code{process-kill-without-query} nowadays +is like this: + +@smallexample +@group +;; @r{Don't query about the shell process} +(process-kill-without-query (get-process "shell")) +@end group +@end smallexample +@end defun + +@node Transaction Queues +@section Transaction Queues +@cindex transaction queue + +You can use a @dfn{transaction queue} to communicate with a subprocess +using transactions. First use @code{tq-create} to create a transaction +queue communicating with a specified process. Then you can call +@code{tq-enqueue} to send a transaction. + +@defun tq-create process +This function creates and returns a transaction queue communicating with +@var{process}. The argument @var{process} should be a subprocess +capable of sending and receiving streams of bytes. It may be a child +process, or it may be a TCP connection to a server, possibly on another +machine. +@end defun + +@defun tq-enqueue queue question regexp closure fn &optional delay-question +This function sends a transaction to queue @var{queue}. Specifying the +queue has the effect of specifying the subprocess to talk to. + +The argument @var{question} is the outgoing message that starts the +transaction. The argument @var{fn} is the function to call when the +corresponding answer comes back; it is called with two arguments: +@var{closure}, and the answer received. + +The argument @var{regexp} is a regular expression that should match +text at the end of the entire answer, but nothing before; that's how +@code{tq-enqueue} determines where the answer ends. + +If the argument @var{delay-question} is non-nil, delay sending this +question until the process has finished replying to any previous +questions. This produces more reliable results with some processes. + +The return value of @code{tq-enqueue} itself is not meaningful. +@end defun + +@defun tq-close queue +Shut down transaction queue @var{queue}, waiting for all pending transactions +to complete, and then terminate the connection or child process. +@end defun + +Transaction queues are implemented by means of a filter function. +@xref{Filter Functions}. + +@node Network +@section Network Connections +@cindex network connection +@cindex TCP +@cindex UDP + + Emacs Lisp programs can open stream (TCP) and datagram (UDP) network +connections to other processes on the same machine or other machines. +A network connection is handled by Lisp much like a subprocess, and is +represented by a process object. However, the process you are +communicating with is not a child of the Emacs process, so it has no +process @acronym{ID}, and you can't kill it or send it signals. All you +can do is send and receive data. @code{delete-process} closes the +connection, but does not kill the program at the other end; that +program must decide what to do about closure of the connection. + + Lisp programs can listen for connections by creating network +servers. A network server is also represented by a kind of process +object, but unlike a network connection, the network server never +transfers data itself. When it receives a connection request, it +creates a new network connection to represent the connection just +made. (The network connection inherits certain information, including +the process plist, from the server.) The network server then goes +back to listening for more connection requests. + + Network connections and servers are created by calling +@code{make-network-process} with an argument list consisting of +keyword/argument pairs, for example @code{:server t} to create a +server process, or @code{:type 'datagram} to create a datagram +connection. @xref{Low-Level Network}, for details. You can also use +the @code{open-network-stream} function described below. + + You can distinguish process objects representing network connections +and servers from those representing subprocesses with the +@code{process-status} function. The possible status values for +network connections are @code{open}, @code{closed}, @code{connect}, +and @code{failed}. For a network server, the status is always +@code{listen}. None of those values is possible for a real +subprocess. @xref{Process Information}. + + You can stop and resume operation of a network process by calling +@code{stop-process} and @code{continue-process}. For a server +process, being stopped means not accepting new connections. (Up to 5 +connection requests will be queued for when you resume the server; you +can increase this limit, unless it is imposed by the operating +system.) For a network stream connection, being stopped means not +processing input (any arriving input waits until you resume the +connection). For a datagram connection, some number of packets may be +queued but input may be lost. You can use the function +@code{process-command} to determine whether a network connection or +server is stopped; a non-@code{nil} value means yes. + +@defun open-network-stream name buffer-or-name host service +This function opens a TCP connection, and returns a process object +that represents the connection. + +The @var{name} argument specifies the name for the process object. It +is modified as necessary to make it unique. + +The @var{buffer-or-name} argument is the buffer to associate with the +connection. Output from the connection is inserted in the buffer, +unless you specify a filter function to handle the output. If +@var{buffer-or-name} is @code{nil}, it means that the connection is not +associated with any buffer. + +The arguments @var{host} and @var{service} specify where to connect to; +@var{host} is the host name (a string), and @var{service} is the name of +a defined network service (a string) or a port number (an integer). +@end defun + +@defun process-contact process &optional key +This function returns information about how a network process was set +up. For a connection, when @var{key} is @code{nil}, it returns +@code{(@var{hostname} @var{service})} which specifies what you +connected to. + +If @var{key} is @code{t}, the value is the complete status information +for the connection or server; that is, the list of keywords and values +specified in @code{make-network-process}, except that some of the +values represent the current status instead of what you specified: + +@table @code +@item :buffer +The associated value is the process buffer. +@item :filter +The associated value is the process filter function. +@item :sentinel +The associated value is the process sentinel function. +@item :remote +In a connection, the address in internal format of the remote peer. +@item :local +The local address, in internal format. +@item :service +In a server, if you specified @code{t} for @var{service}, +this value is the actual port number. +@end table + +@code{:local} and @code{:remote} are included even if they were not +specified explicitly in @code{make-network-process}. + +If @var{key} is a keyword, the function returns the value corresponding +to that keyword. + +For an ordinary child process, this function always returns @code{t}. +@end defun + +@node Network Servers +@section Network Servers +@cindex network servers + + You create a server by calling @code{make-network-process} with +@code{:server t}. The server will listen for connection requests from +clients. When it accepts a client connection request, that creates a +new network connection, itself a process object, with the following +parameters: + +@itemize @bullet +@item +The connection's process name is constructed by concatenating the +server process' @var{name} with a client identification string. The +client identification string for an IPv4 connection looks like +@samp{<@var{a}.@var{b}.@var{c}.@var{d}:@var{p}>}. Otherwise, it is a +unique number in brackets, as in @samp{<@var{nnn}>}. The number +is unique for each connection in the Emacs session. + +@item +If the server's filter is non-@code{nil}, the connection process does +not get a separate process buffer; otherwise, Emacs creates a new +buffer for the purpose. The buffer name is the server's buffer name +or process name, concatenated with the client identification string. + +The server's process buffer value is never used directly by Emacs, but +it is passed to the log function, which can log connections by +inserting text there. + +@item +The communication type and the process filter and sentinel are +inherited from those of the server. The server never directly +uses its filter and sentinel; their sole purpose is to initialize +connections made to the server. + +@item +The connection's process contact info is set according to the client's +addressing information (typically an IP address and a port number). +This information is associated with the @code{process-contact} +keywords @code{:host}, @code{:service}, @code{:remote}. + +@item +The connection's local address is set up according to the port +number used for the connection. + +@item +The client process' plist is initialized from the server's plist. +@end itemize + +@node Datagrams +@section Datagrams +@cindex datagrams + + A datagram connection communicates with individual packets rather +than streams of data. Each call to @code{process-send} sends one +datagram packet (@pxref{Input to Processes}), and each datagram +received results in one call to the filter function. + + The datagram connection doesn't have to talk with the same remote +peer all the time. It has a @dfn{remote peer address} which specifies +where to send datagrams to. Each time an incoming datagram is passed +to the filter function, the peer address is set to the address that +datagram came from; that way, if the filter function sends a datagram, +it will go back to that place. You can specify the remote peer +address when you create the datagram connection using the +@code{:remote} keyword. You can change it later on by calling +@code{set-process-datagram-address}. + +@defun process-datagram-address process +If @var{process} is a datagram connection or server, this function +returns its remote peer address. +@end defun + +@defun set-process-datagram-address process address +If @var{process} is a datagram connection or server, this function +sets its remote peer address to @var{address}. +@end defun + +@node Low-Level Network +@section Low-Level Network Access + + You can also create network connections by operating at a lower +level than that of @code{open-network-stream}, using +@code{make-network-process}. + +@menu +* Proc: Network Processes. Using @code{make-network-process}. +* Options: Network Options. Further control over network connections. +* Features: Network Feature Testing. + Determining which network features work on + the machine you are using. +@end menu + +@node Network Processes +@subsection @code{make-network-process} + + The basic function for creating network connections and network +servers is @code{make-network-process}. It can do either of those +jobs, depending on the arguments you give it. + +@defun make-network-process &rest args +This function creates a network connection or server and returns the +process object that represents it. The arguments @var{args} are a +list of keyword/argument pairs. Omitting a keyword is always +equivalent to specifying it with value @code{nil}, except for +@code{:coding}, @code{:filter-multibyte}, and @code{:reuseaddr}. Here +are the meaningful keywords: + +@table @asis +@item :name @var{name} +Use the string @var{name} as the process name. It is modified if +necessary to make it unique. + +@item :type @var{type} +Specify the communication type. A value of @code{nil} specifies a +stream connection (the default); @code{datagram} specifies a datagram +connection. Both connections and servers can be of either type. + +@item :server @var{server-flag} +If @var{server-flag} is non-@code{nil}, create a server. Otherwise, +create a connection. For a stream type server, @var{server-flag} may +be an integer which then specifies the length of the queue of pending +connections to the server. The default queue length is 5. + +@item :host @var{host} +Specify the host to connect to. @var{host} should be a host name or +Internet address, as a string, or the symbol @code{local} to specify +the local host. If you specify @var{host} for a server, it must +specify a valid address for the local host, and only clients +connecting to that address will be accepted. + +@item :service @var{service} +@var{service} specifies a port number to connect to, or, for a server, +the port number to listen on. It should be a service name that +translates to a port number, or an integer specifying the port number +directly. For a server, it can also be @code{t}, which means to let +the system select an unused port number. + +@item :family @var{family} +@var{family} specifies the address (and protocol) family for +communication. @code{nil} means determine the proper address family +automatically for the given @var{host} and @var{service}. +@code{local} specifies a Unix socket, in which case @var{host} is +ignored. @code{ipv4} and @code{ipv6} specify to use IPv4 and IPv6 +respectively. + +@item :local @var{local-address} +For a server process, @var{local-address} is the address to listen on. +It overrides @var{family}, @var{host} and @var{service}, and you +may as well not specify them. + +@item :remote @var{remote-address} +For a connection, @var{remote-address} is the address to connect to. +It overrides @var{family}, @var{host} and @var{service}, and you +may as well not specify them. + +For a datagram server, @var{remote-address} specifies the initial +setting of the remote datagram address. + +The format of @var{local-address} or @var{remote-address} depends on +the address family: + +@itemize - +@item +An IPv4 address is represented as a five-element vector of four 8-bit +integers and one 16-bit integer +@code{[@var{a} @var{b} @var{c} @var{d} @var{p}]} corresponding to +numeric IPv4 address @var{a}.@var{b}.@var{c}.@var{d} and port number +@var{p}. + +@item +An IPv6 address is represented as a nine-element vector of 16-bit +integers @code{[@var{a} @var{b} @var{c} @var{d} @var{e} @var{f} +@var{g} @var{h} @var{p}]} corresponding to numeric IPv6 address +@var{a}:@var{b}:@var{c}:@var{d}:@var{e}:@var{f}:@var{g}:@var{h} and +port number @var{p}. + +@item +A local address is represented as a string which specifies the address +in the local address space. + +@item +An ``unsupported family'' address is represented by a cons +@code{(@var{f} . @var{av})}, where @var{f} is the family number and +@var{av} is a vector specifying the socket address using one element +per address data byte. Do not rely on this format in portable code, +as it may depend on implementation defined constants, data sizes, and +data structure alignment. +@end itemize + +@item :nowait @var{bool} +If @var{bool} is non-@code{nil} for a stream connection, return +without waiting for the connection to complete. When the connection +succeeds or fails, Emacs will call the sentinel function, with a +second argument matching @code{"open"} (if successful) or +@code{"failed"}. The default is to block, so that +@code{make-network-process} does not return until the connection +has succeeded or failed. + +@item :stop @var{stopped} +Start the network connection or server in the `stopped' state if +@var{stopped} is non-@code{nil}. + +@item :buffer @var{buffer} +Use @var{buffer} as the process buffer. + +@item :coding @var{coding} +Use @var{coding} as the coding system for this process. To specify +different coding systems for decoding data from the connection and for +encoding data sent to it, specify @code{(@var{decoding} . +@var{encoding})} for @var{coding}. + +If you don't specify this keyword at all, the default +is to determine the coding systems from the data. + +@item :noquery @var{query-flag} +Initialize the process query flag to @var{query-flag}. +@xref{Query Before Exit}. + +@item :filter @var{filter} +Initialize the process filter to @var{filter}. + +@item :filter-multibyte @var{bool} +If @var{bool} is non-@code{nil}, strings given to the process filter +are multibyte, otherwise they are unibyte. If you don't specify this +keyword at all, the default is that the strings are multibyte if +@code{default-enable-multibyte-characters} is non-@code{nil}. + +@item :sentinel @var{sentinel} +Initialize the process sentinel to @var{sentinel}. + +@item :log @var{log} +Initialize the log function of a server process to @var{log}. The log +function is called each time the server accepts a network connection +from a client. The arguments passed to the log function are +@var{server}, @var{connection}, and @var{message}, where @var{server} +is the server process, @var{connection} is the new process for the +connection, and @var{message} is a string describing what has +happened. + +@item :plist @var{plist} +Initialize the process plist to @var{plist}. +@end table + +The original argument list, modified with the actual connection +information, is available via the @code{process-contact} function. +@end defun + +@node Network Options +@subsection Network Options + + The following network options can be specified when you create a +network process. Except for @code{:reuseaddr}, you can also set or +modify these options later, using @code{set-network-process-option}. + + For a server process, the options specified with +@code{make-network-process} are not inherited by the client +connections, so you will need to set the necessary options for each +child connection as it is created. + +@table @asis +@item :bindtodevice @var{device-name} +If @var{device-name} is a non-empty string identifying a network +interface name (see @code{network-interface-list}), only handle +packets received on that interface. If @var{device-name} is @code{nil} +(the default), handle packets received on any interface. + +Using this option may require special privileges on some systems. + +@item :broadcast @var{broadcast-flag} +If @var{broadcast-flag} is non-@code{nil} for a datagram process, the +process will receive datagram packet sent to a broadcast address, and +be able to send packets to a broadcast address. Ignored for a stream +connection. + +@item :dontroute @var{dontroute-flag} +If @var{dontroute-flag} is non-@code{nil}, the process can only send +to hosts on the same network as the local host. + +@item :keepalive @var{keepalive-flag} +If @var{keepalive-flag} is non-@code{nil} for a stream connection, +enable exchange of low-level keep-alive messages. + +@item :linger @var{linger-arg} +If @var{linger-arg} is non-@code{nil}, wait for successful +transmission of all queued packets on the connection before it is +deleted (see @code{delete-process}). If @var{linger-arg} is an +integer, it specifies the maximum time in seconds to wait for queued +packets to be sent before closing the connection. Default is +@code{nil} which means to discard unsent queued packets when the +process is deleted. + +@item :oobinline @var{oobinline-flag} +If @var{oobinline-flag} is non-@code{nil} for a stream connection, +receive out-of-band data in the normal data stream. Otherwise, ignore +out-of-band data. + +@item :priority @var{priority} +Set the priority for packets sent on this connection to the integer +@var{priority}. The interpretation of this number is protocol +specific, such as setting the TOS (type of service) field on IP +packets sent on this connection. It may also have system dependent +effects, such as selecting a specific output queue on the network +interface. + +@item :reuseaddr @var{reuseaddr-flag} +If @var{reuseaddr-flag} is non-@code{nil} (the default) for a stream +server process, allow this server to reuse a specific port number (see +@code{:service}) unless another process on this host is already +listening on that port. If @var{reuseaddr-flag} is @code{nil}, there +may be a period of time after the last use of that port (by any +process on the host), where it is not possible to make a new server on +that port. +@end table + +@defun set-network-process-option process option value +This function sets or modifies a network option for network process +@var{process}. See @code{make-network-process} for details of options +@var{option} and their corresponding values @var{value}. + +The current setting of an option is available via the +@code{process-contact} function. +@end defun + +@node Network Feature Testing +@subsection Testing Availability of Network Features + + To test for the availability of a given network feature, use +@code{featurep} like this: + +@example +(featurep 'make-network-process '(@var{keyword} @var{value})) +@end example + +@noindent +The result of the first form is @code{t} if it works to specify +@var{keyword} with value @var{value} in @code{make-network-process}. +The result of the second form is @code{t} if @var{keyword} is +supported by @code{make-network-process}. Here are some of the +@var{keyword}---@var{value} pairs you can test in +this way. + +@table @code +@item (:nowait t) +Non-@code{nil} if non-blocking connect is supported. +@item (:type datagram) +Non-@code{nil} if datagrams are supported. +@item (:family local) +Non-@code{nil} if local (a.k.a.@: ``UNIX domain'') sockets are supported. +@item (:family ipv6) +Non-@code{nil} if IPv6 is supported. +@item (:service t) +Non-@code{nil} if the system can select the port for a server. +@end table + + To test for the availability of a given network option, use +@code{featurep} like this: + +@example +(featurep 'make-network-process '@var{keyword}) +@end example + +@noindent +Here are some of the options you can test in this way. + +@table @code +@item :bindtodevice +@itemx :broadcast +@itemx :dontroute +@itemx :keepalive +@itemx :linger +@itemx :oobinline +@itemx :priority +@itemx :reuseaddr +That particular network option is supported by +@code{make-network-process} and @code{set-network-process-option}. +@end table + +@node Misc Network +@section Misc Network Facilities + + These additional functions are useful for creating and operating - on network connections. ++on network connections. Note that they are supported only on some ++systems. + +@defun network-interface-list +This function returns a list describing the network interfaces +of the machine you are using. The value is an alist whose +elements have the form @code{(@var{name} . @var{address})}. +@var{address} has the same form as the @var{local-address} +and @var{remote-address} arguments to @code{make-network-process}. +@end defun + +@defun network-interface-info ifname +This function returns information about the network interface named +@var{ifname}. The value is a list of the form +@code{(@var{addr} @var{bcast} @var{netmask} @var{hwaddr} @var{flags})}. + +@table @var +@item addr +The Internet protocol address. +@item bcast +The broadcast address. +@item netmask +The network mask. +@item hwaddr +The layer 2 address (Ethernet MAC address, for instance). +@item flags +The current flags of the interface. +@end table +@end defun + +@defun format-network-address address &optional omit-port +This function converts the Lisp representation of a network address to +a string. + +A five-element vector @code{[@var{a} @var{b} @var{c} @var{d} @var{p}]} +represents an IPv4 address @var{a}.@var{b}.@var{c}.@var{d} and port +number @var{p}. @code{format-network-address} converts that to the +string @code{"@var{a}.@var{b}.@var{c}.@var{d}:@var{p}"}. + +A nine-element vector @code{[@var{a} @var{b} @var{c} @var{d} @var{e} +@var{f} @var{g} @var{h} @var{p}]} represents an IPv6 address along +with a port number. @code{format-network-address} converts that to +the string +@code{"[@var{a}:@var{b}:@var{c}:@var{d}:@var{e}:@var{f}:@var{g}:@var{h}]:@var{p}"}. + +If the vector does not include the port number, @var{p}, or if +@var{omit-port} is non-@code{nil}, the result does not include the +@code{:@var{p}} suffix. +@end defun + +@node Byte Packing +@section Packing and Unpacking Byte Arrays +@cindex byte packing and unpacking + + This section describes how to pack and unpack arrays of bytes, +usually for binary network protocols. These functions convert byte arrays +to alists, and vice versa. The byte array can be represented as a +unibyte string or as a vector of integers, while the alist associates +symbols either with fixed-size objects or with recursive sub-alists. + +@cindex serializing +@cindex deserializing +@cindex packing +@cindex unpacking + Conversion from byte arrays to nested alists is also known as +@dfn{deserializing} or @dfn{unpacking}, while going in the opposite +direction is also known as @dfn{serializing} or @dfn{packing}. + +@menu +* Bindat Spec:: Describing data layout. +* Bindat Functions:: Doing the unpacking and packing. +* Bindat Examples:: Samples of what bindat.el can do for you! +@end menu + +@node Bindat Spec +@subsection Describing Data Layout + + To control unpacking and packing, you write a @dfn{data layout +specification}, a special nested list describing named and typed +@dfn{fields}. This specification controls length of each field to be +processed, and how to pack or unpack it. We normally keep bindat specs +in variables whose names end in @samp{-bindat-spec}; that kind of name +is automatically recognized as ``risky.'' + +@cindex endianness +@cindex big endian +@cindex little endian +@cindex network byte ordering + A field's @dfn{type} describes the size (in bytes) of the object +that the field represents and, in the case of multibyte fields, how +the bytes are ordered within the field. The two possible orderings +are ``big endian'' (also known as ``network byte ordering'') and +``little endian.'' For instance, the number @code{#x23cd} (decimal +9165) in big endian would be the two bytes @code{#x23} @code{#xcd}; +and in little endian, @code{#xcd} @code{#x23}. Here are the possible +type values: + +@table @code +@item u8 +@itemx byte +Unsigned byte, with length 1. + +@item u16 +@itemx word +@itemx short +Unsigned integer in network byte order, with length 2. + +@item u24 +Unsigned integer in network byte order, with length 3. + +@item u32 +@itemx dword +@itemx long +Unsigned integer in network byte order, with length 4. +Note: These values may be limited by Emacs' integer implementation limits. + +@item u16r +@itemx u24r +@itemx u32r +Unsigned integer in little endian order, with length 2, 3 and 4, respectively. + +@item str @var{len} +String of length @var{len}. + +@item strz @var{len} +Zero-terminated string, in a fixed-size field with length @var{len}. + +@item vec @var{len} [@var{type}] +Vector of @var{len} elements of type @var{type}, or bytes if not +@var{type} is specified. +The @var{type} is any of the simple types above, or another vector +specified as a list @code{(vec @var{len} [@var{type}])}. + +@item ip +Four-byte vector representing an Internet address. For example: +@code{[127 0 0 1]} for localhost. + +@item bits @var{len} +List of set bits in @var{len} bytes. The bytes are taken in big +endian order and the bits are numbered starting with @code{8 * +@var{len} @minus{} 1} and ending with zero. For example: @code{bits +2} unpacks @code{#x28} @code{#x1c} to @code{(2 3 4 11 13)} and +@code{#x1c} @code{#x28} to @code{(3 5 10 11 12)}. + +@item (eval @var{form}) +@var{form} is a Lisp expression evaluated at the moment the field is +unpacked or packed. The result of the evaluation should be one of the +above-listed type specifications. +@end table + +For a fixed-size field, the length @var{len} is given as an integer +specifying the number of bytes in the field. + +When the length of a field is not fixed, it typically depends on the +value of a preceding field. In this case, the length @var{len} can be +given either as a list @code{(@var{name} ...)} identifying a +@dfn{field name} in the format specified for @code{bindat-get-field} +below, or by an expression @code{(eval @var{form})} where @var{form} +should evaluate to an integer, specifying the field length. + +A field specification generally has the form @code{([@var{name}] +@var{handler})}. The square braces indicate that @var{name} is +optional. (Don't use names that are symbols meaningful as type +specifications (above) or handler specifications (below), since that +would be ambiguous.) @var{name} can be a symbol or the expression +@code{(eval @var{form})}, in which case @var{form} should evaluate to +a symbol. + +@var{handler} describes how to unpack or pack the field and can be one +of the following: + +@table @code +@item @var{type} +Unpack/pack this field according to the type specification @var{type}. + +@item eval @var{form} +Evaluate @var{form}, a Lisp expression, for side-effect only. If the +field name is specified, the value is bound to that field name. + +@item fill @var{len} +Skip @var{len} bytes. In packing, this leaves them unchanged, +which normally means they remain zero. In unpacking, this means +they are ignored. + +@item align @var{len} +Skip to the next multiple of @var{len} bytes. + +@item struct @var{spec-name} +Process @var{spec-name} as a sub-specification. This describes a +structure nested within another structure. + +@item union @var{form} (@var{tag} @var{spec})@dots{} +@c ??? I don't see how one would actually use this. +@c ??? what kind of expression would be useful for @var{form}? +Evaluate @var{form}, a Lisp expression, find the first @var{tag} +that matches it, and process its associated data layout specification +@var{spec}. Matching can occur in one of three ways: + +@itemize +@item +If a @var{tag} has the form @code{(eval @var{expr})}, evaluate +@var{expr} with the variable @code{tag} dynamically bound to the value +of @var{form}. A non-@code{nil} result indicates a match. + +@item +@var{tag} matches if it is @code{equal} to the value of @var{form}. + +@item +@var{tag} matches unconditionally if it is @code{t}. +@end itemize + +@item repeat @var{count} @var{field-specs}@dots{} +Process the @var{field-specs} recursively, in order, then repeat +starting from the first one, processing all the specs @var{count} +times overall. The @var{count} is given using the same formats as a +field length---if an @code{eval} form is used, it is evaluated just once. +For correct operation, each spec in @var{field-specs} must include a name. +@end table + +For the @code{(eval @var{form})} forms used in a bindat specification, +the @var{form} can access and update these dynamically bound variables +during evaluation: + +@table @code +@item last +Value of the last field processed. + +@item bindat-raw +The data as a byte array. + +@item bindat-idx +Current index (within @code{bindat-raw}) for unpacking or packing. + +@item struct +The alist containing the structured data that have been unpacked so +far, or the entire structure being packed. You can use +@code{bindat-get-field} to access specific fields of this structure. + +@item count +@itemx index +Inside a @code{repeat} block, these contain the maximum number of +repetitions (as specified by the @var{count} parameter), and the +current repetition number (counting from 0). Setting @code{count} to +zero will terminate the inner-most repeat block after the current +repetition has completed. +@end table + +@node Bindat Functions +@subsection Functions to Unpack and Pack Bytes + + In the following documentation, @var{spec} refers to a data layout +specification, @code{bindat-raw} to a byte array, and @var{struct} to an +alist representing unpacked field data. + +@defun bindat-unpack spec bindat-raw &optional bindat-idx +This function unpacks data from the unibyte string or byte +array @code{bindat-raw} +according to @var{spec}. Normally this starts unpacking at the +beginning of the byte array, but if @var{bindat-idx} is non-@code{nil}, it +specifies a zero-based starting position to use instead. + +The value is an alist or nested alist in which each element describes +one unpacked field. +@end defun + +@defun bindat-get-field struct &rest name +This function selects a field's data from the nested alist +@var{struct}. Usually @var{struct} was returned by +@code{bindat-unpack}. If @var{name} corresponds to just one argument, +that means to extract a top-level field value. Multiple @var{name} +arguments specify repeated lookup of sub-structures. An integer name +acts as an array index. + +For example, if @var{name} is @code{(a b 2 c)}, that means to find +field @code{c} in the third element of subfield @code{b} of field +@code{a}. (This corresponds to @code{struct.a.b[2].c} in C.) +@end defun + + Although packing and unpacking operations change the organization of +data (in memory), they preserve the data's @dfn{total length}, which is +the sum of all the fields' lengths, in bytes. This value is not +generally inherent in either the specification or alist alone; instead, +both pieces of information contribute to its calculation. Likewise, the +length of a string or array being unpacked may be longer than the data's +total length as described by the specification. + +@defun bindat-length spec struct +This function returns the total length of the data in @var{struct}, +according to @var{spec}. +@end defun + +@defun bindat-pack spec struct &optional bindat-raw bindat-idx +This function returns a byte array packed according to @var{spec} from +the data in the alist @var{struct}. Normally it creates and fills a +new byte array starting at the beginning. However, if @var{bindat-raw} +is non-@code{nil}, it specifies a pre-allocated unibyte string or vector to +pack into. If @var{bindat-idx} is non-@code{nil}, it specifies the starting +offset for packing into @code{bindat-raw}. + +When pre-allocating, you should make sure @code{(length @var{bindat-raw})} +meets or exceeds the total length to avoid an out-of-range error. +@end defun + +@defun bindat-ip-to-string ip +Convert the Internet address vector @var{ip} to a string in the usual +dotted notation. + +@example +(bindat-ip-to-string [127 0 0 1]) + @result{} "127.0.0.1" +@end example +@end defun + +@node Bindat Examples +@subsection Examples of Byte Unpacking and Packing + + Here is a complete example of byte unpacking and packing: + +@lisp +(defvar fcookie-index-spec + '((:version u32) + (:count u32) + (:longest u32) + (:shortest u32) + (:flags u32) + (:delim u8) + (:ignored fill 3) + (:offset repeat (:count) + (:foo u32))) + "Description of a fortune cookie index file's contents.") + +(defun fcookie (cookies &optional index) + "Display a random fortune cookie from file COOKIES. +Optional second arg INDEX specifies the associated index +filename, which is by default constructed by appending +\".dat\" to COOKIES. Display cookie text in possibly +new buffer \"*Fortune Cookie: BASENAME*\" where BASENAME +is COOKIES without the directory part." + (interactive "fCookies file: ") + (let* ((info (with-temp-buffer + (insert-file-contents-literally + (or index (concat cookies ".dat"))) + (bindat-unpack fcookie-index-spec + (buffer-string)))) + (sel (random (bindat-get-field info :count))) + (beg (cdar (bindat-get-field info :offset sel))) + (end (or (cdar (bindat-get-field info + :offset (1+ sel))) + (nth 7 (file-attributes cookies))))) + (switch-to-buffer + (get-buffer-create + (format "*Fortune Cookie: %s*" + (file-name-nondirectory cookies)))) + (erase-buffer) + (insert-file-contents-literally + cookies nil beg (- end 3)))) + +(defun fcookie-create-index (cookies &optional index delim) + "Scan file COOKIES, and write out its index file. +Optional second arg INDEX specifies the index filename, +which is by default constructed by appending \".dat\" to +COOKIES. Optional third arg DELIM specifies the unibyte +character which, when found on a line of its own in +COOKIES, indicates the border between entries." + (interactive "fCookies file: ") + (setq delim (or delim ?%)) + (let ((delim-line (format "\n%c\n" delim)) + (count 0) + (max 0) + min p q len offsets) + (unless (= 3 (string-bytes delim-line)) + (error "Delimiter cannot be represented in one byte")) + (with-temp-buffer + (insert-file-contents-literally cookies) + (while (and (setq p (point)) + (search-forward delim-line (point-max) t) + (setq len (- (point) 3 p))) + (setq count (1+ count) + max (max max len) + min (min (or min max) len) + offsets (cons (1- p) offsets)))) + (with-temp-buffer + (set-buffer-multibyte nil) + (insert + (bindat-pack + fcookie-index-spec + `((:version . 2) + (:count . ,count) + (:longest . ,max) + (:shortest . ,min) + (:flags . 0) + (:delim . ,delim) + (:offset . ,(mapcar (lambda (o) + (list (cons :foo o))) + (nreverse offsets)))))) + (let ((coding-system-for-write 'raw-text-unix)) + (write-file (or index (concat cookies ".dat"))))))) +@end lisp + +Following is an example of defining and unpacking a complex structure. +Consider the following C structures: + +@example +struct header @{ + unsigned long dest_ip; + unsigned long src_ip; + unsigned short dest_port; + unsigned short src_port; +@}; + +struct data @{ + unsigned char type; + unsigned char opcode; + unsigned short length; /* In network byte order */ + unsigned char id[8]; /* null-terminated string */ + unsigned char data[/* (length + 3) & ~3 */]; +@}; + +struct packet @{ + struct header header; + unsigned long counters[2]; /* In little endian order */ + unsigned char items; + unsigned char filler[3]; + struct data item[/* items */]; + +@}; +@end example + +The corresponding data layout specification: + +@lisp +(setq header-spec + '((dest-ip ip) + (src-ip ip) + (dest-port u16) + (src-port u16))) + +(setq data-spec + '((type u8) + (opcode u8) + (length u16) ;; network byte order + (id strz 8) + (data vec (length)) + (align 4))) + +(setq packet-spec + '((header struct header-spec) + (counters vec 2 u32r) ;; little endian order + (items u8) + (fill 3) + (item repeat (items) + (struct data-spec)))) +@end lisp + +A binary data representation: + +@lisp +(setq binary-data + [ 192 168 1 100 192 168 1 101 01 28 21 32 + 160 134 1 0 5 1 0 0 2 0 0 0 + 2 3 0 5 ?A ?B ?C ?D ?E ?F 0 0 1 2 3 4 5 0 0 0 + 1 4 0 7 ?B ?C ?D ?E ?F ?G 0 0 6 7 8 9 10 11 12 0 ]) +@end lisp + +The corresponding decoded structure: + +@lisp +(setq decoded (bindat-unpack packet-spec binary-data)) + @result{} +((header + (dest-ip . [192 168 1 100]) + (src-ip . [192 168 1 101]) + (dest-port . 284) + (src-port . 5408)) + (counters . [100000 261]) + (items . 2) + (item ((data . [1 2 3 4 5]) + (id . "ABCDEF") + (length . 5) + (opcode . 3) + (type . 2)) + ((data . [6 7 8 9 10 11 12]) + (id . "BCDEFG") + (length . 7) + (opcode . 4) + (type . 1)))) +@end lisp + +Fetching data from this structure: + +@lisp +(bindat-get-field decoded 'item 1 'id) + @result{} "BCDEFG" +@end lisp + +@ignore + arch-tag: ba9da253-e65f-4e7f-b727-08fba0a1df7a +@end ignore diff --cc doc/lispref/windows.texi index 81c4c8a4aed,00000000000..9a49401485e mode 100644,000000..100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@@ -1,2446 -1,0 +1,2442 @@@ +@c -*-texinfo-*- +@c This is part of the GNU Emacs Lisp Reference Manual. +@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, +@c 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See the file elisp.texi for copying conditions. +@setfilename ../../info/windows +@node Windows, Frames, Buffers, Top +@chapter Windows + + This chapter describes most of the functions and variables related to +Emacs windows. See @ref{Display}, for information on how text is +displayed in windows. + +@menu +* Basic Windows:: Basic information on using windows. +* Splitting Windows:: Splitting one window into two windows. +* Deleting Windows:: Deleting a window gives its space to other windows. +* Selecting Windows:: The selected window is the one that you edit in. +* Cyclic Window Ordering:: Moving around the existing windows. +* Buffers and Windows:: Each window displays the contents of a buffer. +* Displaying Buffers:: Higher-level functions for displaying a buffer + and choosing a window for it. +* Choosing Window:: How to choose a window for displaying a buffer. +* Window Point:: Each window has its own location of point. +* Window Start:: The display-start position controls which text + is on-screen in the window. +* Textual Scrolling:: Moving text up and down through the window. +* Vertical Scrolling:: Moving the contents up and down on the window. +* Horizontal Scrolling:: Moving the contents sideways on the window. +* Size of Window:: Accessing the size of a window. +* Resizing Windows:: Changing the size of a window. +* Coordinates and Windows:: Converting coordinates to windows. +* Window Tree:: The layout and sizes of all windows in a frame. +* Window Configurations:: Saving and restoring the state of the screen. +* Window Hooks:: Hooks for scrolling, window size changes, + redisplay going past a certain point, + or window configuration changes. +@end menu + +@node Basic Windows +@section Basic Concepts of Emacs Windows +@cindex window +@cindex selected window + + A @dfn{window} in Emacs is the physical area of the screen in which a +buffer is displayed. The term is also used to refer to a Lisp object that +represents that screen area in Emacs Lisp. It should be +clear from the context which is meant. + + Emacs groups windows into frames. A frame represents an area of +screen available for Emacs to use. Each frame always contains at least +one window, but you can subdivide it vertically or horizontally into +multiple nonoverlapping Emacs windows. + + In each frame, at any time, one and only one window is designated as +@dfn{selected within the frame}. The frame's cursor appears in that +window, but the other windows have ``non-selected'' cursors, normally - less visible. At any time, one frame is the selected frame; and the - window selected within that frame is @dfn{the selected window}. The - selected window's buffer is usually the current buffer (except when - @code{set-buffer} has been used). @xref{Current Buffer}. - - @defvar cursor-in-non-selected-windows - If this variable is @code{nil}, Emacs displays only one cursor, - in the selected window. Other windows have no cursor at all. - @end defvar ++less visible. (@pxref{Cursor Parameters}, for customization of this.) ++At any time, one frame is the selected frame; and the window selected ++within that frame is @dfn{the selected window}. The selected window's ++buffer is usually the current buffer (except when @code{set-buffer} ++has been used). @xref{Current Buffer}. + + For practical purposes, a window exists only while it is displayed in +a frame. Once removed from the frame, the window is effectively deleted +and should not be used, @emph{even though there may still be references +to it} from other Lisp objects. Restoring a saved window configuration +is the only way for a window no longer on the screen to come back to +life. (@xref{Deleting Windows}.) + + Each window has the following attributes: + +@itemize @bullet +@item +containing frame + +@item +window height + +@item +window width + +@item +window edges with respect to the screen or frame + +@item +the buffer it displays + +@item +position within the buffer at the upper left of the window + +@item +amount of horizontal scrolling, in columns + +@item +point + +@item +the mark + +@item +how recently the window was selected + +@item +fringe settings + +@item +display margins + +@item +scroll-bar settings +@end itemize + +@cindex multiple windows + Users create multiple windows so they can look at several buffers at +once. Lisp libraries use multiple windows for a variety of reasons, but +most often to display related information. In Rmail, for example, you +can move through a summary buffer in one window while the other window +shows messages one at a time as they are reached. + + The meaning of ``window'' in Emacs is similar to what it means in the +context of general-purpose window systems such as X, but not identical. +The X Window System places X windows on the screen; Emacs uses one or +more X windows as frames, and subdivides them into +Emacs windows. When you use Emacs on a character-only terminal, Emacs +treats the whole terminal screen as one frame. + +@cindex terminal screen +@cindex screen of terminal +@cindex tiled windows + Most window systems support arbitrarily located overlapping windows. +In contrast, Emacs windows are @dfn{tiled}; they never overlap, and +together they fill the whole screen or frame. Because of the way in +which Emacs creates new windows and resizes them, not all conceivable +tilings of windows on an Emacs frame are actually possible. +@xref{Splitting Windows}, and @ref{Size of Window}. + + @xref{Display}, for information on how the contents of the +window's buffer are displayed in the window. + +@defun windowp object +This function returns @code{t} if @var{object} is a window. +@end defun + +@node Splitting Windows +@section Splitting Windows +@cindex splitting windows +@cindex window splitting + + The functions described here are the primitives used to split a window +into two windows. Two higher level functions sometimes split a window, +but not always: @code{pop-to-buffer} and @code{display-buffer} +(@pxref{Displaying Buffers}). + + The functions described here do not accept a buffer as an argument. +The two ``halves'' of the split window initially display the same buffer +previously visible in the window that was split. + +@deffn Command split-window &optional window size horizontal +This function splits a new window out of @var{window}'s screen area. +It returns the new window. + +If @var{horizontal} is non-@code{nil}, then @var{window} splits into +two side by side windows. The original window @var{window} keeps the +leftmost @var{size} columns, and gives the rest of the columns to the +new window. Otherwise, it splits into windows one above the other, and +@var{window} keeps the upper @var{size} lines and gives the rest of the +lines to the new window. The original window is therefore the +left-hand or upper of the two, and the new window is the right-hand or +lower. + +If @var{window} is omitted or @code{nil}, that stands for the selected +window. When you split the selected window, it remains selected. + +If @var{size} is omitted or @code{nil}, then @var{window} is divided +evenly into two parts. (If there is an odd line, it is allocated to +the new window.) When @code{split-window} is called interactively, +all its arguments are @code{nil}. + +If splitting would result in making a window that is smaller than +@code{window-min-height} or @code{window-min-width}, the function +signals an error and does not split the window at all. + +The following example starts with one window on a screen that is 50 +lines high by 80 columns wide; then it splits the window. + +@smallexample +@group +(setq w (selected-window)) + @result{} # +(window-edges) ; @r{Edges in order:} + @result{} (0 0 80 50) ; @r{left--top--right--bottom} +@end group + +@group +;; @r{Returns window created} +(setq w2 (split-window w 15)) + @result{} # +@end group +@group +(window-edges w2) + @result{} (0 15 80 50) ; @r{Bottom window;} + ; @r{top is line 15} +@end group +@group +(window-edges w) + @result{} (0 0 80 15) ; @r{Top window} +@end group +@end smallexample + +The screen looks like this: + +@smallexample +@group + __________ + | | line 0 + | w | + |__________| + | | line 15 + | w2 | + |__________| + line 50 + column 0 column 80 +@end group +@end smallexample + +Next, split the top window horizontally: + +@smallexample +@group +(setq w3 (split-window w 35 t)) + @result{} # +@end group +@group +(window-edges w3) + @result{} (35 0 80 15) ; @r{Left edge at column 35} +@end group +@group +(window-edges w) + @result{} (0 0 35 15) ; @r{Right edge at column 35} +@end group +@group +(window-edges w2) + @result{} (0 15 80 50) ; @r{Bottom window unchanged} +@end group +@end smallexample + +@need 3000 +Now the screen looks like this: + +@smallexample +@group + column 35 + __________ + | | | line 0 + | w | w3 | + |___|______| + | | line 15 + | w2 | + |__________| + line 50 + column 0 column 80 +@end group +@end smallexample + +Normally, Emacs indicates the border between two side-by-side windows +with a scroll bar (@pxref{Layout Parameters,Scroll Bars}) or @samp{|} +characters. The display table can specify alternative border +characters; see @ref{Display Tables}. +@end deffn + +@deffn Command split-window-vertically &optional size +This function splits the selected window into two windows, one above the +other, leaving the upper of the two windows selected, with @var{size} +lines. (If @var{size} is negative, then the lower of the two windows +gets @minus{} @var{size} lines and the upper window gets the rest, but +the upper window is still the one selected.) However, if +@code{split-window-keep-point} (see below) is @code{nil}, then either +window can be selected. + +In other respects, this function is similar to @code{split-window}. +In particular, the upper window is the original one and the return +value is the new, lower window. +@end deffn + +@defopt split-window-keep-point +If this variable is non-@code{nil} (the default), then +@code{split-window-vertically} behaves as described above. + +If it is @code{nil}, then @code{split-window-vertically} adjusts point +in each of the two windows to avoid scrolling. (This is useful on +slow terminals.) It selects whichever window contains the screen line +that point was previously on. + +This variable only affects the behavior of @code{split-window-vertically}. +It has no effect on the other functions described here. +@end defopt + +@deffn Command split-window-horizontally &optional size +This function splits the selected window into two windows +side-by-side, leaving the selected window on the left with @var{size} +columns. If @var{size} is negative, the rightmost window gets +@minus{} @var{size} columns, but the leftmost window still remains +selected. + +This function is basically an interface to @code{split-window}. +You could define a simplified version of the function like this: + +@smallexample +@group +(defun split-window-horizontally (&optional arg) + "Split selected window into two windows, side by side..." + (interactive "P") +@end group +@group + (let ((size (and arg (prefix-numeric-value arg)))) + (and size (< size 0) + (setq size (+ (window-width) size))) + (split-window nil size t))) +@end group +@end smallexample +@end deffn + +@defun one-window-p &optional no-mini all-frames +This function returns non-@code{nil} if there is only one window. The +argument @var{no-mini}, if non-@code{nil}, means don't count the +minibuffer even if it is active; otherwise, the minibuffer window is +counted when it is active. + +The argument @var{all-frames} specifies which frames to consider. Here +are the possible values and their meanings: + +@table @asis +@item @code{nil} +Count the windows in the selected frame, plus the minibuffer used +by that frame even if it lies in some other frame. + +@item @code{t} +Count all windows in all existing frames. + +@item @code{visible} +Count all windows in all visible frames. + +@item 0 +Count all windows in all visible or iconified frames. + +@item anything else +Count precisely the windows in the selected frame, and no others. +@end table +@end defun + +@node Deleting Windows +@section Deleting Windows +@cindex deleting windows + +A window remains visible on its frame unless you @dfn{delete} it by +calling certain functions that delete windows. A deleted window cannot +appear on the screen, but continues to exist as a Lisp object until +there are no references to it. There is no way to cancel the deletion +of a window aside from restoring a saved window configuration +(@pxref{Window Configurations}). Restoring a window configuration also +deletes any windows that aren't part of that configuration. + + When you delete a window, the space it took up is given to one +adjacent sibling. + +@c Emacs 19 feature +@defun window-live-p window +This function returns @code{nil} if @var{window} is deleted, and +@code{t} otherwise. + +@strong{Warning:} Erroneous information or fatal errors may result from +using a deleted window as if it were live. +@end defun + +@deffn Command delete-window &optional window +This function removes @var{window} from display, and returns @code{nil}. +If @var{window} is omitted, then the selected window is deleted. An +error is signaled if there is only one window when @code{delete-window} +is called. +@end deffn + +@deffn Command delete-other-windows &optional window +This function makes @var{window} the only window on its frame, by +deleting the other windows in that frame. If @var{window} is omitted or +@code{nil}, then the selected window is used by default. + +The return value is @code{nil}. +@end deffn + +@deffn Command delete-windows-on buffer-or-name &optional frame +This function deletes all windows showing @var{buffer-or-name}. If +there are no windows showing @var{buffer-or-name}, it does nothing. +@var{buffer-or-name} must be a buffer or the name of an existing +buffer. + +@code{delete-windows-on} operates frame by frame. If a frame has +several windows showing different buffers, then those showing +@var{buffer-or-name} are removed, and the others expand to fill the +space. If all windows in some frame are showing @var{buffer-or-name} +(including the case where there is only one window), then the frame +winds up with a single window showing another buffer chosen with +@code{other-buffer}. @xref{The Buffer List}. + +The argument @var{frame} controls which frames to operate on. This +function does not use it in quite the same way as the other functions +which scan all windows; specifically, the values @code{t} and @code{nil} +have the opposite of their meanings in other functions. Here are the +full details: + +@itemize @bullet +@item +If it is @code{nil}, operate on all frames. +@item +If it is @code{t}, operate on the selected frame. +@item +If it is @code{visible}, operate on all visible frames. +@item +If it is 0, operate on all visible or iconified frames. +@item +If it is a frame, operate on that frame. +@end itemize + +This function always returns @code{nil}. +@end deffn + +@node Selecting Windows +@section Selecting Windows +@cindex selecting a window + + When a window is selected, the buffer in the window becomes the current +buffer, and the cursor will appear in it. + +@defun selected-window +This function returns the selected window. This is the window in +which the cursor appears and to which many commands apply. +@end defun + +@defun select-window window &optional norecord +This function makes @var{window} the selected window. The cursor then +appears in @var{window} (on redisplay). Unless @var{window} was +already selected, @code{select-window} makes @var{window}'s buffer the +current buffer. + +Normally @var{window}'s selected buffer is moved to the front of the +buffer list, but if @var{norecord} is non-@code{nil}, the buffer list +order is unchanged. + +The return value is @var{window}. + +@example +@group +(setq w (next-window)) +(select-window w) + @result{} # +@end group +@end example +@end defun + +@defmac save-selected-window forms@dots{} +This macro records the selected frame, as well as the selected window +of each frame, executes @var{forms} in sequence, then restores the +earlier selected frame and windows. It also saves and restores the +current buffer. It returns the value of the last form in @var{forms}. + +This macro does not save or restore anything about the sizes, +arrangement or contents of windows; therefore, if the @var{forms} +change them, the change persists. If the previously selected window +of some frame is no longer live at the time of exit from @var{forms}, +that frame's selected window is left alone. If the previously +selected window is no longer live, then whatever window is selected at +the end of @var{forms} remains selected. +@end defmac + +@defmac with-selected-window window forms@dots{} +This macro selects @var{window} (without changing the buffer list), +executes @var{forms} in sequence, then restores the previously +selected window and current buffer. It is just like +@code{save-selected-window}, except that it explicitly selects +@var{window}, also without altering the buffer list sequence. +@end defmac + +@cindex finding windows + The following functions choose one of the windows on the screen, +offering various criteria for the choice. + +@defun get-lru-window &optional frame dedicated +This function returns the window least recently ``used'' (that is, +selected). If any full-width windows are present, it only considers +these. The selected window is always the most recently used window. + +The selected window can be the least recently used window if it is the +only window. A newly created window becomes the least recently used +window until it is selected. A minibuffer window is never a +candidate. Dedicated windows are never candidates unless the +@var{dedicated} argument is non-@code{nil}, so if all +existing windows are dedicated, the value is @code{nil}. + +The argument @var{frame} controls which windows are considered. + +@itemize @bullet +@item +If it is @code{nil}, consider windows on the selected frame. +@item +If it is @code{t}, consider windows on all frames. +@item +If it is @code{visible}, consider windows on all visible frames. +@item +If it is 0, consider windows on all visible or iconified frames. +@item +If it is a frame, consider windows on that frame. +@end itemize +@end defun + +@defun get-largest-window &optional frame dedicated +This function returns the window with the largest area (height times +width). If there are no side-by-side windows, then this is the window +with the most lines. A minibuffer window is never a candidate. +Dedicated windows are never candidates unless the +@var{dedicated} argument is non-@code{nil}, so if all existing windows +are dedicated, the value is @code{nil}. + +If there are two candidate windows of the same size, this function +prefers the one that comes first in the cyclic ordering of windows +(see following section), starting from the selected window. + +The argument @var{frame} controls which set of windows to +consider. See @code{get-lru-window}, above. +@end defun + +@cindex window that satisfies a predicate +@cindex conditional selection of windows +@defun get-window-with-predicate predicate &optional minibuf all-frames default +This function returns a window satisfying @var{predicate}. It cycles +through all visible windows using @code{walk-windows} (@pxref{Cyclic +Window Ordering}), calling @var{predicate} on each one of them +with that window as its argument. The function returns the first +window for which @var{predicate} returns a non-@code{nil} value; if +that never happens, it returns @var{default}. + +The optional arguments @var{minibuf} and @var{all-frames} specify the +set of windows to include in the scan. See the description of +@code{next-window} in @ref{Cyclic Window Ordering}, for details. +@end defun + +@node Cyclic Window Ordering +@comment node-name, next, previous, up +@section Cyclic Ordering of Windows +@cindex cyclic ordering of windows +@cindex ordering of windows, cyclic +@cindex window ordering, cyclic + + When you use the command @kbd{C-x o} (@code{other-window}) to select +the next window, it moves through all the windows on the screen in a +specific cyclic order. For any given configuration of windows, this +order never varies. It is called the @dfn{cyclic ordering of windows}. + + This ordering generally goes from top to bottom, and from left to +right. But it may go down first or go right first, depending on the +order in which the windows were split. + + If the first split was vertical (into windows one above each other), +and then the subwindows were split horizontally, then the ordering is +left to right in the top of the frame, and then left to right in the +next lower part of the frame, and so on. If the first split was +horizontal, the ordering is top to bottom in the left part, and so on. +In general, within each set of siblings at any level in the window tree, +the order is left to right, or top to bottom. + +@defun next-window &optional window minibuf all-frames +@cindex minibuffer window, and @code{next-window} +This function returns the window following @var{window} in the cyclic +ordering of windows. This is the window that @kbd{C-x o} would select +if typed when @var{window} is selected. If @var{window} is the only +window visible, then this function returns @var{window}. If omitted, +@var{window} defaults to the selected window. + +The value of the argument @var{minibuf} determines whether the +minibuffer is included in the window order. Normally, when +@var{minibuf} is @code{nil}, the minibuffer is included if it is +currently active; this is the behavior of @kbd{C-x o}. (The minibuffer +window is active while the minibuffer is in use. @xref{Minibuffers}.) + +If @var{minibuf} is @code{t}, then the cyclic ordering includes the +minibuffer window even if it is not active. + +If @var{minibuf} is neither @code{t} nor @code{nil}, then the minibuffer +window is not included even if it is active. + +The argument @var{all-frames} specifies which frames to consider. Here +are the possible values and their meanings: + +@table @asis +@item @code{nil} +Consider all the windows in @var{window}'s frame, plus the minibuffer +used by that frame even if it lies in some other frame. If the +minibuffer counts (as determined by @var{minibuf}), then all windows on +all frames that share that minibuffer count too. + +@item @code{t} +Consider all windows in all existing frames. + +@item @code{visible} +Consider all windows in all visible frames. (To get useful results, you +must ensure @var{window} is in a visible frame.) + +@item 0 +Consider all windows in all visible or iconified frames. + +@item a frame +Consider all windows on that frame. + +@item anything else +Consider precisely the windows in @var{window}'s frame, and no others. +@end table + +This example assumes there are two windows, both displaying the +buffer @samp{windows.texi}: + +@example +@group +(selected-window) + @result{} # +@end group +@group +(next-window (selected-window)) + @result{} # +@end group +@group +(next-window (next-window (selected-window))) + @result{} # +@end group +@end example +@end defun + +@defun previous-window &optional window minibuf all-frames +This function returns the window preceding @var{window} in the cyclic +ordering of windows. The other arguments specify which windows to +include in the cycle, as in @code{next-window}. +@end defun + +@deffn Command other-window count &optional all-frames +This function selects the @var{count}th following window in the cyclic +order. If count is negative, then it moves back @minus{}@var{count} +windows in the cycle, rather than forward. It returns @code{nil}. + +The argument @var{all-frames} has the same meaning as in +@code{next-window}, but the @var{minibuf} argument of @code{next-window} +is always effectively @code{nil}. + +In an interactive call, @var{count} is the numeric prefix argument. +@end deffn + +@c Emacs 19 feature +@defun walk-windows proc &optional minibuf all-frames +This function cycles through all windows. It calls the function +@code{proc} once for each window, with the window as its sole +argument. + +The optional arguments @var{minibuf} and @var{all-frames} specify the +set of windows to include in the scan. See @code{next-window}, above, +for details. +@end defun + +@defun window-list &optional frame minibuf window +This function returns a list of the windows on @var{frame}, starting +with @var{window}. If @var{frame} is @code{nil} or omitted, +@code{window-list} uses the selected frame instead; if @var{window} is +@code{nil} or omitted, it uses the selected window. + +The value of @var{minibuf} determines if the minibuffer window is +included in the result list. If @var{minibuf} is @code{t}, the result +always includes the minibuffer window. If @var{minibuf} is @code{nil} +or omitted, that includes the minibuffer window if it is active. If +@var{minibuf} is neither @code{nil} nor @code{t}, the result never +includes the minibuffer window. +@end defun + +@node Buffers and Windows +@section Buffers and Windows +@cindex examining windows +@cindex windows, controlling precisely +@cindex buffers, controlled in windows + + This section describes low-level functions to examine windows or to +display buffers in windows in a precisely controlled fashion. +@iftex +See the following section for +@end iftex +@ifnottex +@xref{Displaying Buffers}, for +@end ifnottex +related functions that find a window to use and specify a buffer for it. +The functions described there are easier to use than these, but they +employ heuristics in choosing or creating a window; use these functions +when you need complete control. + +@defun set-window-buffer window buffer-or-name &optional keep-margins +This function makes @var{window} display @var{buffer-or-name} as its +contents. It returns @code{nil}. @var{buffer-or-name} must be a +buffer, or the name of an existing buffer. This is the fundamental +primitive for changing which buffer is displayed in a window, and all +ways of doing that call this function. + +@example +@group +(set-window-buffer (selected-window) "foo") + @result{} nil +@end group +@end example + +Normally, displaying @var{buffer} in @var{window} resets the window's +display margins, fringe widths, scroll bar settings, and position +based on the local variables of @var{buffer}. However, if +@var{keep-margins} is non-@code{nil}, the display margins and fringe +widths of @var{window} remain unchanged. @xref{Fringes}. +@end defun + +@defvar buffer-display-count +This buffer-local variable records the number of times a buffer is +displayed in a window. It is incremented each time +@code{set-window-buffer} is called for the buffer. +@end defvar + +@defun window-buffer &optional window +This function returns the buffer that @var{window} is displaying. If +@var{window} is omitted, this function returns the buffer for the +selected window. + +@example +@group +(window-buffer) + @result{} # +@end group +@end example +@end defun + +@defun get-buffer-window buffer-or-name &optional all-frames +This function returns a window currently displaying +@var{buffer-or-name}, or @code{nil} if there is none. If there are +several such windows, then the function returns the first one in the +cyclic ordering of windows, starting from the selected window. +@xref{Cyclic Window Ordering}. + +The argument @var{all-frames} controls which windows to consider. + +@itemize @bullet +@item +If it is @code{nil}, consider windows on the selected frame. +@item +If it is @code{t}, consider windows on all frames. +@item +If it is @code{visible}, consider windows on all visible frames. +@item +If it is 0, consider windows on all visible or iconified frames. +@item +If it is a frame, consider windows on that frame. +@end itemize +@end defun + +@defun get-buffer-window-list buffer-or-name &optional minibuf all-frames +This function returns a list of all the windows currently displaying +@var{buffer-or-name}. + +The two optional arguments work like the optional arguments of +@code{next-window} (@pxref{Cyclic Window Ordering}); they are @emph{not} +like the single optional argument of @code{get-buffer-window}. Perhaps +we should change @code{get-buffer-window} in the future to make it +compatible with the other functions. +@end defun + +@defvar buffer-display-time +This variable records the time at which a buffer was last made visible +in a window. It is always local in each buffer; each time +@code{set-window-buffer} is called, it sets this variable to +@code{(current-time)} in the specified buffer (@pxref{Time of Day}). +When a buffer is first created, @code{buffer-display-time} starts out +with the value @code{nil}. +@end defvar + +@node Displaying Buffers +@section Displaying Buffers in Windows +@cindex switching to a buffer +@cindex displaying a buffer + + In this section we describe convenient functions that choose a window +automatically and use it to display a specified buffer. These functions +can also split an existing window in certain circumstances. We also +describe variables that parameterize the heuristics used for choosing a +window. +@iftex +See the preceding section for +@end iftex +@ifnottex +@xref{Buffers and Windows}, for +@end ifnottex +low-level functions that give you more precise control. All of these +functions work by calling @code{set-window-buffer}. + + Do not use the functions in this section in order to make a buffer +current so that a Lisp program can access or modify it; they are too +drastic for that purpose, since they change the display of buffers in +windows, which would be gratuitous and surprise the user. Instead, use +@code{set-buffer} and @code{save-current-buffer} (@pxref{Current +Buffer}), which designate buffers as current for programmed access +without affecting the display of buffers in windows. + +@deffn Command switch-to-buffer buffer-or-name &optional norecord +This function makes @var{buffer-or-name} the current buffer, and also +displays the buffer in the selected window. This means that a human can +see the buffer and subsequent keyboard commands will apply to it. +Contrast this with @code{set-buffer}, which makes @var{buffer-or-name} +the current buffer but does not display it in the selected window. +@xref{Current Buffer}. + +If @var{buffer-or-name} does not identify an existing buffer, then a new +buffer by that name is created. The major mode for the new buffer is +set according to the variable @code{default-major-mode}. @xref{Auto +Major Mode}. If @var{buffer-or-name} is @code{nil}, +@code{switch-to-buffer} chooses a buffer using @code{other-buffer}. + +Normally the specified buffer is put at the front of the buffer list +(both the selected frame's buffer list and the frame-independent buffer +list). This affects the operation of @code{other-buffer}. However, if +@var{norecord} is non-@code{nil}, this is not done. @xref{The Buffer +List}. + +The @code{switch-to-buffer} function is often used interactively, as +the binding of @kbd{C-x b}. It is also used frequently in programs. It +returns the buffer that it switched to. +@end deffn + +The next two functions are similar to @code{switch-to-buffer}, except +for the described features. + +@deffn Command switch-to-buffer-other-window buffer-or-name &optional norecord +This function makes @var{buffer-or-name} the current buffer and +displays it in a window not currently selected. It then selects that +window. The handling of the buffer is the same as in +@code{switch-to-buffer}. + +The currently selected window is absolutely never used to do the job. +If it is the only window, then it is split to make a distinct window for +this purpose. If the selected window is already displaying the buffer, +then it continues to do so, but another window is nonetheless found to +display it in as well. + +This function updates the buffer list just like @code{switch-to-buffer} +unless @var{norecord} is non-@code{nil}. +@end deffn + +@defun pop-to-buffer buffer-or-name &optional other-window norecord +This function makes @var{buffer-or-name} the current buffer and +switches to it in some window, preferably not the window previously +selected. The ``popped-to'' window becomes the selected window within +its frame. The return value is the buffer that was switched to. +If @var{buffer-or-name} is @code{nil}, that means to choose some +other buffer, but you don't specify which. + +If the variable @code{pop-up-frames} is non-@code{nil}, +@code{pop-to-buffer} looks for a window in any visible frame already +displaying the buffer; if there is one, it returns that window and makes +it be selected within its frame. If there is none, it creates a new +frame and displays the buffer in it. + +If @code{pop-up-frames} is @code{nil}, then @code{pop-to-buffer} +operates entirely within the selected frame. (If the selected frame has +just a minibuffer, @code{pop-to-buffer} operates within the most +recently selected frame that was not just a minibuffer.) + +If the variable @code{pop-up-windows} is non-@code{nil}, windows may +be split to create a new window that is different from the original +window. For details, see @ref{Choosing Window}. + +If @var{other-window} is non-@code{nil}, @code{pop-to-buffer} finds or +creates another window even if @var{buffer-or-name} is already visible +in the selected window. Thus @var{buffer-or-name} could end up +displayed in two windows. On the other hand, if @var{buffer-or-name} is +already displayed in the selected window and @var{other-window} is +@code{nil}, then the selected window is considered sufficient display +for @var{buffer-or-name}, so that nothing needs to be done. + +All the variables that affect @code{display-buffer} affect +@code{pop-to-buffer} as well. @xref{Choosing Window}. + +If @var{buffer-or-name} is a string that does not name an existing +buffer, a buffer by that name is created. The major mode for the new +buffer is set according to the variable @code{default-major-mode}. +@xref{Auto Major Mode}. + +This function updates the buffer list just like @code{switch-to-buffer} +unless @var{norecord} is non-@code{nil}. +@end defun + +@deffn Command replace-buffer-in-windows buffer-or-name +This function replaces @var{buffer-or-name} with some other buffer in all +windows displaying it. It chooses the other buffer with +@code{other-buffer}. In the usual applications of this function, you +don't care which other buffer is used; you just want to make sure that +@var{buffer-or-name} is no longer displayed. + +This function returns @code{nil}. +@end deffn + +@node Choosing Window +@section Choosing a Window for Display + + This section describes the basic facility that chooses a window to +display a buffer in---@code{display-buffer}. All the higher-level +functions and commands use this subroutine. Here we describe how to use +@code{display-buffer} and how to customize it. + +@deffn Command display-buffer buffer-or-name &optional not-this-window frame +This command makes @var{buffer-or-name} appear in some window, like +@code{pop-to-buffer}, but it does not select that window and does not +make the buffer current. The identity of the selected window is +unaltered by this function. @var{buffer-or-name} must be a buffer, or +the name of an existing buffer. + +If @var{not-this-window} is non-@code{nil}, it means to display the +specified buffer in a window other than the selected one, even if it is +already on display in the selected window. This can cause the buffer to +appear in two windows at once. Otherwise, if @var{buffer-or-name} is +already being displayed in any window, that is good enough, so this +function does nothing. + +@code{display-buffer} returns the window chosen to display +@var{buffer-or-name}. + +If the argument @var{frame} is non-@code{nil}, it specifies which frames +to check when deciding whether the buffer is already displayed. If the +buffer is already displayed in some window on one of these frames, +@code{display-buffer} simply returns that window. Here are the possible +values of @var{frame}: + +@itemize @bullet +@item +If it is @code{nil}, consider windows on the selected frame. +(Actually, the last non-minibuffer frame.) +@item +If it is @code{t}, consider windows on all frames. +@item +If it is @code{visible}, consider windows on all visible frames. +@item +If it is 0, consider windows on all visible or iconified frames. +@item +If it is a frame, consider windows on that frame. +@end itemize + +Precisely how @code{display-buffer} finds or creates a window depends on +the variables described below. +@end deffn + +@defopt display-buffer-reuse-frames +If this variable is non-@code{nil}, @code{display-buffer} searches +existing frames for a window displaying the buffer. If the buffer is +already displayed in a window in some frame, @code{display-buffer} makes +the frame visible and raises it, to use that window. If the buffer is +not already displayed, or if @code{display-buffer-reuse-frames} is +@code{nil}, @code{display-buffer}'s behavior is determined by other +variables, described below. +@end defopt + +@defopt pop-up-windows +This variable controls whether @code{display-buffer} makes new windows. +If it is non-@code{nil} and there is only one window, then that window +is split. If it is @code{nil}, then @code{display-buffer} does not +split the single window, but uses it whole. +@end defopt + +@defopt split-height-threshold +This variable determines when @code{display-buffer} may split a window, +if there are multiple windows. @code{display-buffer} always splits the +largest window if it has at least this many lines. If the largest +window is not this tall, it is split only if it is the sole window and +@code{pop-up-windows} is non-@code{nil}. +@end defopt + +@defopt even-window-heights +This variable determines if @code{display-buffer} should even out window +heights if the buffer gets displayed in an existing window, above or +beneath another existing window. If @code{even-window-heights} is +@code{t}, the default, window heights will be evened out. If +@code{even-window-heights} is @code{nil}, the original window heights +will be left alone. +@end defopt + +@c Emacs 19 feature +@defopt pop-up-frames +This variable controls whether @code{display-buffer} makes new frames. +If it is non-@code{nil}, @code{display-buffer} looks for an existing +window already displaying the desired buffer, on any visible frame. If +it finds one, it returns that window. Otherwise it makes a new frame. +The variables @code{pop-up-windows} and @code{split-height-threshold} do +not matter if @code{pop-up-frames} is non-@code{nil}. + +If @code{pop-up-frames} is @code{nil}, then @code{display-buffer} either +splits a window or reuses one. + +@xref{Frames}, for more information. +@end defopt + +@c Emacs 19 feature +@defopt pop-up-frame-function +This variable specifies how to make a new frame if @code{pop-up-frames} +is non-@code{nil}. + +Its value should be a function of no arguments. When +@code{display-buffer} makes a new frame, it does so by calling that +function, which should return a frame. The default value of the +variable is a function that creates a frame using parameters from +@code{pop-up-frame-alist}. +@end defopt + +@defopt pop-up-frame-alist +This variable holds an alist specifying frame parameters used when +@code{display-buffer} makes a new frame. @xref{Frame Parameters}, for +more information about frame parameters. +@end defopt + +@defopt special-display-buffer-names +A list of buffer names for buffers that should be displayed specially. +If the buffer's name is in this list, @code{display-buffer} handles the +buffer specially. + +By default, special display means to give the buffer a dedicated frame. + +If an element is a list, instead of a string, then the @sc{car} of the +list is the buffer name, and the rest of the list says how to create +the frame. There are two possibilities for the rest of the list (its +@sc{cdr}). It can be an alist, specifying frame parameters, or it can +contain a function and arguments to give to it. (The function's first +argument is always the buffer to be displayed; the arguments from the +list come after that.) + +For example: + +@example +(("myfile" (minibuffer) (menu-bar-lines . 0))) +@end example + +@noindent +specifies to display a buffer named @samp{myfile} in a dedicated frame +with specified @code{minibuffer} and @code{menu-bar-lines} parameters. + +The list of frame parameters can also use the phony frame parameters +@code{same-frame} and @code{same-window}. If the specified frame +parameters include @code{(same-window . @var{value})} and @var{value} +is non-@code{nil}, that means to display the buffer in the current +selected window. Otherwise, if they include @code{(same-frame . +@var{value})} and @var{value} is non-@code{nil}, that means to display +the buffer in a new window in the currently selected frame. +@end defopt + +@defopt special-display-regexps +A list of regular expressions that specify buffers that should be +displayed specially. If the buffer's name matches any of the regular +expressions in this list, @code{display-buffer} handles the buffer +specially. + +By default, special display means to give the buffer a dedicated frame. + +If an element is a list, instead of a string, then the @sc{car} of the +list is the regular expression, and the rest of the list says how to +create the frame. See above, under @code{special-display-buffer-names}. +@end defopt + +@defun special-display-p buffer-name +This function returns non-@code{nil} if displaying a buffer +named @var{buffer-name} with @code{display-buffer} would +create a special frame. The value is @code{t} if it would +use the default frame parameters, or else the specified list +of frame parameters. +@end defun + +@defvar special-display-function +This variable holds the function to call to display a buffer specially. +It receives the buffer as an argument, and should return the window in +which it is displayed. + +The default value of this variable is +@code{special-display-popup-frame}. +@end defvar + +@defun special-display-popup-frame buffer &optional args +This function makes @var{buffer} visible in a frame of its own. If +@var{buffer} is already displayed in a window in some frame, it makes +the frame visible and raises it, to use that window. Otherwise, it +creates a frame that will be dedicated to @var{buffer}. This +function returns the window it used. + +If @var{args} is an alist, it specifies frame parameters for the new +frame. + +If @var{args} is a list whose @sc{car} is a symbol, then @code{(car +@var{args})} is called as a function to actually create and set up the +frame; it is called with @var{buffer} as first argument, and @code{(cdr +@var{args})} as additional arguments. + +This function always uses an existing window displaying @var{buffer}, +whether or not it is in a frame of its own; but if you set up the above +variables in your init file, before @var{buffer} was created, then +presumably the window was previously made by this function. +@end defun + +@defopt special-display-frame-alist +@anchor{Definition of special-display-frame-alist} +This variable holds frame parameters for +@code{special-display-popup-frame} to use when it creates a frame. +@end defopt + +@defopt same-window-buffer-names +A list of buffer names for buffers that should be displayed in the +selected window. If the buffer's name is in this list, +@code{display-buffer} handles the buffer by switching to it in the +selected window. +@end defopt + +@defopt same-window-regexps +A list of regular expressions that specify buffers that should be +displayed in the selected window. If the buffer's name matches any of +the regular expressions in this list, @code{display-buffer} handles the +buffer by switching to it in the selected window. +@end defopt + +@defun same-window-p buffer-name +This function returns @code{t} if displaying a buffer +named @var{buffer-name} with @code{display-buffer} would +put it in the selected window. +@end defun + +@c Emacs 19 feature +@defvar display-buffer-function +This variable is the most flexible way to customize the behavior of +@code{display-buffer}. If it is non-@code{nil}, it should be a function +that @code{display-buffer} calls to do the work. The function should +accept two arguments, the first two arguments that @code{display-buffer} +received. It should choose or create a window, display the specified +buffer in it, and then return the window. + +This hook takes precedence over all the other options and hooks +described above. +@end defvar + +@c Emacs 19 feature +@cindex dedicated window +A window can be marked as ``dedicated'' to its buffer. Then +@code{display-buffer} will not try to use that window to display any +other buffer. + +@defun window-dedicated-p window +This function returns non-@code{nil} if @var{window} is marked as +dedicated; otherwise @code{nil}. +@end defun + +@defun set-window-dedicated-p window flag +This function marks @var{window} as dedicated if @var{flag} is +non-@code{nil}, and nondedicated otherwise. +@end defun + +@node Window Point +@section Windows and Point +@cindex window position +@cindex window point +@cindex position in window +@cindex point in window + + Each window has its own value of point, independent of the value of +point in other windows displaying the same buffer. This makes it useful +to have multiple windows showing one buffer. + +@itemize @bullet +@item +The window point is established when a window is first created; it is +initialized from the buffer's point, or from the window point of another +window opened on the buffer if such a window exists. + +@item +Selecting a window sets the value of point in its buffer from the +window's value of point. Conversely, deselecting a window sets the +window's value of point from that of the buffer. Thus, when you switch +between windows that display a given buffer, the point value for the +selected window is in effect in the buffer, while the point values for +the other windows are stored in those windows. + +@item +As long as the selected window displays the current buffer, the window's +point and the buffer's point always move together; they remain equal. +@end itemize + +@noindent +@xref{Positions}, for more details on buffer positions. + +@cindex cursor + As far as the user is concerned, point is where the cursor is, and +when the user switches to another buffer, the cursor jumps to the +position of point in that buffer. + +@defun window-point &optional window +This function returns the current position of point in @var{window}. +For a nonselected window, this is the value point would have (in that +window's buffer) if that window were selected. If @var{window} is +@code{nil}, the selected window is used. + +When @var{window} is the selected window and its buffer is also the +current buffer, the value returned is the same as point in that buffer. + +Strictly speaking, it would be more correct to return the +``top-level'' value of point, outside of any @code{save-excursion} +forms. But that value is hard to find. +@end defun + +@defun set-window-point window position +This function positions point in @var{window} at position +@var{position} in @var{window}'s buffer. It returns @var{position}. + +If @var{window} is selected, and its buffer is current, +this simply does @code{goto-char}. +@end defun + +@node Window Start +@section The Window Start Position +@cindex window start position + + Each window contains a marker used to keep track of a buffer position +that specifies where in the buffer display should start. This position +is called the @dfn{display-start} position of the window (or just the +@dfn{start}). The character after this position is the one that appears +at the upper left corner of the window. It is usually, but not +inevitably, at the beginning of a text line. + +@defun window-start &optional window +@cindex window top line +This function returns the display-start position of window +@var{window}. If @var{window} is @code{nil}, the selected window is +used. For example, + +@example +@group +(window-start) + @result{} 7058 +@end group +@end example + +When you create a window, or display a different buffer in it, the +display-start position is set to a display-start position recently used +for the same buffer, or 1 if the buffer doesn't have any. + +Redisplay updates the window-start position (if you have not specified +it explicitly since the previous redisplay)---for example, to make sure +point appears on the screen. Nothing except redisplay automatically +changes the window-start position; if you move point, do not expect the +window-start position to change in response until after the next +redisplay. + +For a realistic example of using @code{window-start}, see the +description of @code{count-lines}. @xref{Definition of count-lines}. +@end defun + +@defun window-end &optional window update +This function returns the position of the end of the display in window +@var{window}. If @var{window} is @code{nil}, the selected window is +used. + +Simply changing the buffer text or moving point does not update the +value that @code{window-end} returns. The value is updated only when +Emacs redisplays and redisplay completes without being preempted. + +If the last redisplay of @var{window} was preempted, and did not finish, +Emacs does not know the position of the end of display in that window. +In that case, this function returns @code{nil}. + +If @var{update} is non-@code{nil}, @code{window-end} always returns an +up-to-date value for where the window ends, based on the current +@code{window-start} value. If the saved value is valid, +@code{window-end} returns that; otherwise it computes the correct +value by scanning the buffer text. + +Even if @var{update} is non-@code{nil}, @code{window-end} does not +attempt to scroll the display if point has moved off the screen, the +way real redisplay would do. It does not alter the +@code{window-start} value. In effect, it reports where the displayed +text will end if scrolling is not required. +@end defun + +@defun set-window-start window position &optional noforce +This function sets the display-start position of @var{window} to +@var{position} in @var{window}'s buffer. It returns @var{position}. + +The display routines insist that the position of point be visible when a +buffer is displayed. Normally, they change the display-start position +(that is, scroll the window) whenever necessary to make point visible. +However, if you specify the start position with this function using +@code{nil} for @var{noforce}, it means you want display to start at +@var{position} even if that would put the location of point off the +screen. If this does place point off screen, the display routines move +point to the left margin on the middle line in the window. + +For example, if point @w{is 1} and you set the start of the window @w{to +2}, then point would be ``above'' the top of the window. The display +routines will automatically move point if it is still 1 when redisplay +occurs. Here is an example: + +@example +@group +;; @r{Here is what @samp{foo} looks like before executing} +;; @r{the @code{set-window-start} expression.} +@end group + +@group +---------- Buffer: foo ---------- +@point{}This is the contents of buffer foo. +2 +3 +4 +5 +6 +---------- Buffer: foo ---------- +@end group + +@group +(set-window-start + (selected-window) + (1+ (window-start))) +@result{} 2 +@end group + +@group +;; @r{Here is what @samp{foo} looks like after executing} +;; @r{the @code{set-window-start} expression.} +---------- Buffer: foo ---------- +his is the contents of buffer foo. +2 +3 +@point{}4 +5 +6 +---------- Buffer: foo ---------- +@end group +@end example + +If @var{noforce} is non-@code{nil}, and @var{position} would place point +off screen at the next redisplay, then redisplay computes a new window-start +position that works well with point, and thus @var{position} is not used. +@end defun + +@defun pos-visible-in-window-p &optional position window partially +This function returns non-@code{nil} if @var{position} is within the +range of text currently visible on the screen in @var{window}. It +returns @code{nil} if @var{position} is scrolled vertically out of +view. Locations that are partially obscured are not considered +visible unless @var{partially} is non-@code{nil}. The argument +@var{position} defaults to the current position of point in +@var{window}; @var{window}, to the selected window. + +If @var{position} is @code{t}, that means to check the last visible +position in @var{window}. + +The @code{pos-visible-in-window-p} function considers only vertical +scrolling. If @var{position} is out of view only because @var{window} +has been scrolled horizontally, @code{pos-visible-in-window-p} returns +non-@code{nil} anyway. @xref{Horizontal Scrolling}. + +If @var{position} is visible, @code{pos-visible-in-window-p} returns +@code{t} if @var{partially} is @code{nil}; if @var{partially} is +non-@code{nil}, and the character after @var{position} is fully +visible, it returns a list of the form @code{(@var{x} @var{y})}, where +@var{x} and @var{y} are the pixel coordinates relative to the top left +corner of the window; otherwise it returns an extended list of the +form @code{(@var{x} @var{y} @var{rtop} @var{rbot} @var{rowh} +@var{vpos})}, where the @var{rtop} and @var{rbot} specify the number +of off-window pixels at the top and bottom of the row at +@var{position}, @var{rowh} specifies the visible height of that row, +and @var{vpos} specifies the vertical position (zero-based row number) +of that row. + +Here is an example: + +@example +@group +;; @r{If point is off the screen now, recenter it now.} +(or (pos-visible-in-window-p + (point) (selected-window)) + (recenter 0)) +@end group +@end example +@end defun + +@defun window-line-height &optional line window +This function returns information about text line @var{line} in @var{window}. +If @var{line} is one of @code{header-line} or @code{mode-line}, +@code{window-line-height} returns information about the corresponding +line of the window. Otherwise, @var{line} is a text line number +starting from 0. A negative number counts from the end of the window. +The argument @var{line} defaults to the current line in @var{window}; +@var{window}, to the selected window. + +If the display is not up to date, @code{window-line-height} returns +@code{nil}. In that case, @code{pos-visible-in-window-p} may be used +to obtain related information. + +If there is no line corresponding to the specified @var{line}, +@code{window-line-height} returns @code{nil}. Otherwise, it returns +a list @code{(@var{height} @var{vpos} @var{ypos} @var{offbot})}, +where @var{height} is the height in pixels of the visible part of the +line, @var{vpos} and @var{ypos} are the vertical position in lines and +pixels of the line relative to the top of the first text line, and +@var{offbot} is the number of off-window pixels at the bottom of the +text line. If there are off-window pixels at the top of the (first) +text line, @var{ypos} is negative. +@end defun + +@node Textual Scrolling +@section Textual Scrolling +@cindex textual scrolling +@cindex scrolling textually + + @dfn{Textual scrolling} means moving the text up or down through a +window. It works by changing the value of the window's display-start +location. It may also change the value of @code{window-point} to keep +point on the screen. + + Textual scrolling was formerly called ``vertical scrolling,'' but we +changed its name to distinguish it from the new vertical fractional +scrolling feature (@pxref{Vertical Scrolling}). + + In the commands @code{scroll-up} and @code{scroll-down}, the directions +``up'' and ``down'' refer to the motion of the text in the buffer at which +you are looking through the window. Imagine that the text is +written on a long roll of paper and that the scrolling commands move the +paper up and down. Thus, if you are looking at text in the middle of a +buffer and repeatedly call @code{scroll-down}, you will eventually see +the beginning of the buffer. + + Some people have urged that the opposite convention be used: they +imagine that the window moves over text that remains in place. Then +``down'' commands would take you to the end of the buffer. This view is +more consistent with the actual relationship between windows and the +text in the buffer, but it is less like what the user sees. The +position of a window on the terminal does not move, and short scrolling +commands clearly move the text up or down on the screen. We have chosen +names that fit the user's point of view. + + The textual scrolling functions (aside from +@code{scroll-other-window}) have unpredictable results if the current +buffer is different from the buffer that is displayed in the selected +window. @xref{Current Buffer}. + + If the window contains a row which is taller than the height of the +window (for example in the presence of a large image), the scroll +functions will adjust the window vscroll to scroll the partially +visible row. To disable this feature, Lisp code may bind the variable +`auto-window-vscroll' to @code{nil} (@pxref{Vertical Scrolling}). + +@deffn Command scroll-up &optional count +This function scrolls the text in the selected window upward +@var{count} lines. If @var{count} is negative, scrolling is actually +downward. + +If @var{count} is @code{nil} (or omitted), then the length of scroll +is @code{next-screen-context-lines} lines less than the usable height of +the window (not counting its mode line). + +@code{scroll-up} returns @code{nil}, unless it gets an error +because it can't scroll any further. +@end deffn + +@deffn Command scroll-down &optional count +This function scrolls the text in the selected window downward +@var{count} lines. If @var{count} is negative, scrolling is actually +upward. + +If @var{count} is omitted or @code{nil}, then the length of the scroll +is @code{next-screen-context-lines} lines less than the usable height of +the window (not counting its mode line). + +@code{scroll-down} returns @code{nil}, unless it gets an error because +it can't scroll any further. +@end deffn + +@deffn Command scroll-other-window &optional count +This function scrolls the text in another window upward @var{count} +lines. Negative values of @var{count}, or @code{nil}, are handled +as in @code{scroll-up}. + +You can specify which buffer to scroll by setting the variable +@code{other-window-scroll-buffer} to a buffer. If that buffer isn't +already displayed, @code{scroll-other-window} displays it in some +window. + +When the selected window is the minibuffer, the next window is normally +the one at the top left corner. You can specify a different window to +scroll, when the minibuffer is selected, by setting the variable +@code{minibuffer-scroll-window}. This variable has no effect when any +other window is selected. When it is non-@code{nil} and the +minibuffer is selected, it takes precedence over +@code{other-window-scroll-buffer}. @xref{Definition of +minibuffer-scroll-window}. + +When the minibuffer is active, it is the next window if the selected +window is the one at the bottom right corner. In this case, +@code{scroll-other-window} attempts to scroll the minibuffer. If the +minibuffer contains just one line, it has nowhere to scroll to, so the +line reappears after the echo area momentarily displays the message +@samp{Beginning of buffer}. +@end deffn + +@c Emacs 19 feature +@defvar other-window-scroll-buffer +If this variable is non-@code{nil}, it tells @code{scroll-other-window} +which buffer to scroll. +@end defvar + +@defopt scroll-margin +This option specifies the size of the scroll margin---a minimum number +of lines between point and the top or bottom of a window. Whenever +point gets within this many lines of the top or bottom of the window, +redisplay scrolls the text automatically (if possible) to move point +out of the margin, closer to the center of the window. +@end defopt + +@defopt scroll-conservatively +This variable controls how scrolling is done automatically when point +moves off the screen (or into the scroll margin). If the value is a +positive integer @var{n}, then redisplay scrolls the text up to +@var{n} lines in either direction, if that will bring point back into +proper view. This action is called @dfn{conservative scrolling}. +Otherwise, scrolling happens in the usual way, under the control of +other variables such as @code{scroll-up-aggressively} and +@code{scroll-down-aggressively}. + +The default value is zero, which means that conservative scrolling +never happens. +@end defopt + +@defopt scroll-down-aggressively +The value of this variable should be either @code{nil} or a fraction +@var{f} between 0 and 1. If it is a fraction, that specifies where on +the screen to put point when scrolling down. More precisely, when a +window scrolls down because point is above the window start, the new +start position is chosen to put point @var{f} part of the window +height from the top. The larger @var{f}, the more aggressive the +scrolling. + +A value of @code{nil} is equivalent to .5, since its effect is to center +point. This variable automatically becomes buffer-local when set in any +fashion. +@end defopt + +@defopt scroll-up-aggressively +Likewise, for scrolling up. The value, @var{f}, specifies how far +point should be placed from the bottom of the window; thus, as with +@code{scroll-up-aggressively}, a larger value scrolls more aggressively. +@end defopt + +@defopt scroll-step +This variable is an older variant of @code{scroll-conservatively}. The +difference is that it if its value is @var{n}, that permits scrolling +only by precisely @var{n} lines, not a smaller number. This feature +does not work with @code{scroll-margin}. The default value is zero. +@end defopt + +@defopt scroll-preserve-screen-position +If this option is @code{t}, scrolling which would move the current +point position out of the window chooses the new position of point +so that the vertical position of the cursor is unchanged, if possible. + +If it is non-@code{nil} and not @code{t}, then the scrolling functions +always preserve the vertical position of point, if possible. +@end defopt + +@defopt next-screen-context-lines +The value of this variable is the number of lines of continuity to +retain when scrolling by full screens. For example, @code{scroll-up} +with an argument of @code{nil} scrolls so that this many lines at the +bottom of the window appear instead at the top. The default value is +@code{2}. +@end defopt + +@deffn Command recenter &optional count +@cindex centering point +This function scrolls the text in the selected window so that point is +displayed at a specified vertical position within the window. It does +not ``move point'' with respect to the text. + +If @var{count} is a nonnegative number, that puts the line containing +point @var{count} lines down from the top of the window. If +@var{count} is a negative number, then it counts upward from the +bottom of the window, so that @minus{}1 stands for the last usable +line in the window. If @var{count} is a non-@code{nil} list, then it +stands for the line in the middle of the window. + +If @var{count} is @code{nil}, @code{recenter} puts the line containing +point in the middle of the window, then clears and redisplays the entire +selected frame. + +When @code{recenter} is called interactively, @var{count} is the raw +prefix argument. Thus, typing @kbd{C-u} as the prefix sets the +@var{count} to a non-@code{nil} list, while typing @kbd{C-u 4} sets +@var{count} to 4, which positions the current line four lines from the +top. + +With an argument of zero, @code{recenter} positions the current line at +the top of the window. This action is so handy that some people make a +separate key binding to do this. For example, + +@example +@group +(defun line-to-top-of-window () + "Scroll current line to top of window. +Replaces three keystroke sequence C-u 0 C-l." + (interactive) + (recenter 0)) + +(global-set-key [kp-multiply] 'line-to-top-of-window) +@end group +@end example +@end deffn + +@node Vertical Scrolling +@section Vertical Fractional Scrolling +@cindex vertical fractional scrolling + + @dfn{Vertical fractional scrolling} means shifting the image in the +window up or down by a specified multiple or fraction of a line. +Each window has a @dfn{vertical scroll position}, +which is a number, never less than zero. It specifies how far to raise +the contents of the window. Raising the window contents generally makes +all or part of some lines disappear off the top, and all or part of some +other lines appear at the bottom. The usual value is zero. + + The vertical scroll position is measured in units of the normal line +height, which is the height of the default font. Thus, if the value is +.5, that means the window contents are scrolled up half the normal line +height. If it is 3.3, that means the window contents are scrolled up +somewhat over three times the normal line height. + + What fraction of a line the vertical scrolling covers, or how many +lines, depends on what the lines contain. A value of .5 could scroll a +line whose height is very short off the screen, while a value of 3.3 +could scroll just part of the way through a tall line or an image. + +@defun window-vscroll &optional window pixels-p +This function returns the current vertical scroll position of +@var{window}. If @var{window} is @code{nil}, the selected window is +used. If @var{pixels-p} is non-@code{nil}, the return value is +measured in pixels, rather than in units of the normal line height. + +@example +@group +(window-vscroll) + @result{} 0 +@end group +@end example +@end defun + +@defun set-window-vscroll window lines &optional pixels-p +This function sets @var{window}'s vertical scroll position to +@var{lines}. The argument @var{lines} should be zero or positive; if +not, it is taken as zero. + +If @var{window} is @code{nil}, the selected window is used. + +The actual vertical scroll position must always correspond +to an integral number of pixels, so the value you specify +is rounded accordingly. + +The return value is the result of this rounding. + +@example +@group +(set-window-vscroll (selected-window) 1.2) + @result{} 1.13 +@end group +@end example + +If @var{pixels-p} is non-@code{nil}, @var{lines} specifies a number of +pixels. In this case, the return value is @var{lines}. +@end defun + +@defvar auto-window-vscroll +If this variable is non-@code{nil}, the line-move, scroll-up, and +scroll-down functions will automatically modify the window vscroll to +scroll through display rows that are taller that the height of the +window, for example in the presence of large images. +@end defvar + +@node Horizontal Scrolling +@section Horizontal Scrolling +@cindex horizontal scrolling + + @dfn{Horizontal scrolling} means shifting the image in the window left +or right by a specified multiple of the normal character width. Each +window has a @dfn{horizontal scroll position}, which is a number, never +less than zero. It specifies how far to shift the contents left. +Shifting the window contents left generally makes all or part of some +characters disappear off the left, and all or part of some other +characters appear at the right. The usual value is zero. + + The horizontal scroll position is measured in units of the normal +character width, which is the width of space in the default font. Thus, +if the value is 5, that means the window contents are scrolled left by 5 +times the normal character width. How many characters actually +disappear off to the left depends on their width, and could vary from +line to line. + + Because we read from side to side in the ``inner loop,'' and from top +to bottom in the ``outer loop,'' the effect of horizontal scrolling is +not like that of textual or vertical scrolling. Textual scrolling +involves selection of a portion of text to display, and vertical +scrolling moves the window contents contiguously; but horizontal +scrolling causes part of @emph{each line} to go off screen. + + Usually, no horizontal scrolling is in effect; then the leftmost +column is at the left edge of the window. In this state, scrolling to +the right is meaningless, since there is no data to the left of the edge +to be revealed by it; so this is not allowed. Scrolling to the left is +allowed; it scrolls the first columns of text off the edge of the window +and can reveal additional columns on the right that were truncated +before. Once a window has a nonzero amount of leftward horizontal +scrolling, you can scroll it back to the right, but only so far as to +reduce the net horizontal scroll to zero. There is no limit to how far +left you can scroll, but eventually all the text will disappear off the +left edge. + +@vindex auto-hscroll-mode + If @code{auto-hscroll-mode} is set, redisplay automatically alters +the horizontal scrolling of a window as necessary to ensure that point +is always visible. However, you can still set the horizontal +scrolling value explicitly. The value you specify serves as a lower +bound for automatic scrolling, i.e. automatic scrolling will not +scroll a window to a column less than the specified one. + +@deffn Command scroll-left &optional count set-minimum +This function scrolls the selected window @var{count} columns to the +left (or to the right if @var{count} is negative). The default +for @var{count} is the window width, minus 2. + +The return value is the total amount of leftward horizontal scrolling in +effect after the change---just like the value returned by +@code{window-hscroll} (below). + +Once you scroll a window as far right as it can go, back to its normal +position where the total leftward scrolling is zero, attempts to scroll +any farther right have no effect. + +If @var{set-minimum} is non-@code{nil}, the new scroll amount becomes +the lower bound for automatic scrolling; that is, automatic scrolling +will not scroll a window to a column less than the value returned by +this function. Interactive calls pass non-@code{nil} for +@var{set-minimum}. +@end deffn + +@deffn Command scroll-right &optional count set-minimum +This function scrolls the selected window @var{count} columns to the +right (or to the left if @var{count} is negative). The default +for @var{count} is the window width, minus 2. Aside from the direction +of scrolling, this works just like @code{scroll-left}. +@end deffn + +@defun window-hscroll &optional window +This function returns the total leftward horizontal scrolling of +@var{window}---the number of columns by which the text in @var{window} +is scrolled left past the left margin. + +The value is never negative. It is zero when no horizontal scrolling +has been done in @var{window} (which is usually the case). + +If @var{window} is @code{nil}, the selected window is used. + +@example +@group +(window-hscroll) + @result{} 0 +@end group +@group +(scroll-left 5) + @result{} 5 +@end group +@group +(window-hscroll) + @result{} 5 +@end group +@end example +@end defun + +@defun set-window-hscroll window columns +This function sets horizontal scrolling of @var{window}. The value of +@var{columns} specifies the amount of scrolling, in terms of columns +from the left margin. The argument @var{columns} should be zero or +positive; if not, it is taken as zero. Fractional values of +@var{columns} are not supported at present. + +Note that @code{set-window-hscroll} may appear not to work if you test +it by evaluating a call with @kbd{M-:} in a simple way. What happens +is that the function sets the horizontal scroll value and returns, but +then redisplay adjusts the horizontal scrolling to make point visible, +and this overrides what the function did. You can observe the +function's effect if you call it while point is sufficiently far from +the left margin that it will remain visible. + +The value returned is @var{columns}. + +@example +@group +(set-window-hscroll (selected-window) 10) + @result{} 10 +@end group +@end example +@end defun + + Here is how you can determine whether a given position @var{position} +is off the screen due to horizontal scrolling: + +@example +@group +(defun hscroll-on-screen (window position) + (save-excursion + (goto-char position) + (and + (>= (- (current-column) (window-hscroll window)) 0) + (< (- (current-column) (window-hscroll window)) + (window-width window))))) +@end group +@end example + +@node Size of Window +@section The Size of a Window +@cindex window size +@cindex size of window + + An Emacs window is rectangular, and its size information consists of +the height (the number of lines) and the width (the number of character +positions in each line). The mode line is included in the height. But +the width does not count the scroll bar or the column of @samp{|} +characters that separates side-by-side windows. + + The following three functions return size information about a window: + +@defun window-height &optional window +This function returns the number of lines in @var{window}, including +its mode line and header line, if any. If @var{window} fills its +entire frame except for the echo area, this is typically one less than +the value of @code{frame-height} on that frame. + +If @var{window} is @code{nil}, the function uses the selected window. + +@example +@group +(window-height) + @result{} 23 +@end group +@group +(split-window-vertically) + @result{} # +@end group +@group +(window-height) + @result{} 11 +@end group +@end example +@end defun + +@defun window-body-height &optional window +Like @code{window-height} but the value does not include the +mode line (if any) or the header line (if any). +@end defun + +@defun window-width &optional window +This function returns the number of columns in @var{window}. If +@var{window} fills its entire frame, this is the same as the value of +@code{frame-width} on that frame. The width does not include the +window's scroll bar or the column of @samp{|} characters that separates +side-by-side windows. + +If @var{window} is @code{nil}, the function uses the selected window. + +@example +@group +(window-width) + @result{} 80 +@end group +@end example +@end defun + +@defun window-full-width-p &optional window +This function returns non-@code{nil} if @var{window} is as wide as +the frame that contains it; otherwise @code{nil}. +If @var{window} is @code{nil}, the function uses the selected window. +@end defun + +@defun window-edges &optional window +This function returns a list of the edge coordinates of @var{window}. +If @var{window} is @code{nil}, the selected window is used. + +The order of the list is @code{(@var{left} @var{top} @var{right} +@var{bottom})}, all elements relative to 0, 0 at the top left corner of +the frame. The element @var{right} of the value is one more than the +rightmost column used by @var{window}, and @var{bottom} is one more than +the bottommost row used by @var{window} and its mode-line. + +The edges include the space used by the window's scroll bar, display +margins, fringes, header line, and mode line, if it has them. Also, +if the window has a neighbor on the right, its right edge value +includes the width of the separator line between the window and that +neighbor. Since the width of the window does not include this +separator, the width does not usually equal the difference between the +right and left edges. +@end defun + +@defun window-inside-edges &optional window +This is similar to @code{window-edges}, but the edge values +it returns include only the text area of the window. They +do not include the header line, mode line, scroll bar or +vertical separator, fringes, or display margins. +@end defun + +Here are the results obtained on a typical 24-line terminal with just +one window, with menu bar enabled: + +@example +@group +(window-edges (selected-window)) + @result{} (0 1 80 23) +@end group +@group +(window-inside-edges (selected-window)) + @result{} (0 1 80 22) +@end group +@end example + +@noindent +The bottom edge is at line 23 because the last line is the echo area. +The bottom inside edge is at line 22, which is the window's mode line. + +If @var{window} is at the upper left corner of its frame, and there is +no menu bar, then @var{bottom} returned by @code{window-edges} is the +same as the value of @code{(window-height)}, @var{right} is almost the +same as the value of @code{(window-width)}, and @var{top} and +@var{left} are zero. For example, the edges of the following window +are @w{@samp{0 0 8 5}}. Assuming that the frame has more than 8 +columns, the last column of the window (column 7) holds a border +rather than text. The last row (row 4) holds the mode line, shown +here with @samp{xxxxxxxxx}. + +@example +@group + 0 + _______ + 0 | | + | | + | | + | | + xxxxxxxxx 4 + + 7 +@end group +@end example + +In the following example, let's suppose that the frame is 7 +columns wide. Then the edges of the left window are @w{@samp{0 0 4 3}} +and the edges of the right window are @w{@samp{4 0 7 3}}. +The inside edges of the left window are @w{@samp{0 0 3 2}}, +and the inside edges of the right window are @w{@samp{4 0 7 2}}, + +@example +@group + ___ ___ + | | | + | | | + xxxxxxxxx + + 0 34 7 +@end group +@end example + +@defun window-pixel-edges &optional window +This function is like @code{window-edges} except that, on a graphical +display, the edge values are measured in pixels instead of in +character lines and columns. +@end defun + +@defun window-inside-pixel-edges &optional window +This function is like @code{window-inside-edges} except that, on a +graphical display, the edge values are measured in pixels instead of +in character lines and columns. +@end defun + +@node Resizing Windows +@section Changing the Size of a Window +@cindex window resizing +@cindex resize window +@cindex changing window size +@cindex window size, changing + + The window size functions fall into two classes: high-level commands +that change the size of windows and low-level functions that access +window size. Emacs does not permit overlapping windows or gaps between +windows, so resizing one window affects other windows. + +@deffn Command enlarge-window size &optional horizontal +This function makes the selected window @var{size} lines taller, +stealing lines from neighboring windows. It takes the lines from one +window at a time until that window is used up, then takes from another. +If a window from which lines are stolen shrinks below +@code{window-min-height} lines, that window disappears. + +If @var{horizontal} is non-@code{nil}, this function makes +@var{window} wider by @var{size} columns, stealing columns instead of +lines. If a window from which columns are stolen shrinks below +@code{window-min-width} columns, that window disappears. + +If the requested size would exceed that of the window's frame, then the +function makes the window occupy the entire height (or width) of the +frame. + +If there are various other windows from which lines or columns can be +stolen, and some of them specify fixed size (using +@code{window-size-fixed}, see below), they are left untouched while +other windows are ``robbed.'' If it would be necessary to alter the +size of a fixed-size window, @code{enlarge-window} gets an error +instead. + +If @var{size} is negative, this function shrinks the window by +@minus{}@var{size} lines or columns. If that makes the window smaller +than the minimum size (@code{window-min-height} and +@code{window-min-width}), @code{enlarge-window} deletes the window. + +@code{enlarge-window} returns @code{nil}. +@end deffn + +@deffn Command enlarge-window-horizontally columns +This function makes the selected window @var{columns} wider. +It could be defined as follows: + +@example +@group +(defun enlarge-window-horizontally (columns) + (interactive "p") + (enlarge-window columns t)) +@end group +@end example +@end deffn + +@deffn Command shrink-window size &optional horizontal +This function is like @code{enlarge-window} but negates the argument +@var{size}, making the selected window smaller by giving lines (or +columns) to the other windows. If the window shrinks below +@code{window-min-height} or @code{window-min-width}, then it disappears. + +If @var{size} is negative, the window is enlarged by @minus{}@var{size} +lines or columns. +@end deffn + +@deffn Command shrink-window-horizontally columns +This function makes the selected window @var{columns} narrower. +It could be defined as follows: + +@example +@group +(defun shrink-window-horizontally (columns) + (interactive "p") + (shrink-window columns t)) +@end group +@end example +@end deffn + +@defun adjust-window-trailing-edge window delta horizontal +This function makes the selected window @var{delta} lines taller or +@var{delta} columns wider, by moving the bottom or right edge. This +function does not delete other windows; if it cannot make the +requested size adjustment, it signals an error. On success, this +function returns @code{nil}. +@end defun + +@defun fit-window-to-buffer &optional window max-height min-height +This function makes @var{window} the right height to display its +contents exactly. If @var{window} is omitted or @code{nil}, it uses +the selected window. + +The argument @var{max-height} specifies the maximum height the window +is allowed to be; @code{nil} means use the frame height. The argument +@var{min-height} specifies the minimum height for the window; +@code{nil} means use @code{window-min-height}. All these height +values include the mode-line and/or header-line. +@end defun + +@deffn Command shrink-window-if-larger-than-buffer &optional window +This command shrinks @var{window} vertically to be as small as +possible while still showing the full contents of its buffer---but not +less than @code{window-min-height} lines. If @var{window} is not +given, it defaults to the selected window. + +However, the command does nothing if the window is already too small to +display the whole text of the buffer, or if part of the contents are +currently scrolled off screen, or if the window is not the full width of +its frame, or if the window is the only window in its frame. + +This command returns non-@code{nil} if it actually shrank the window +and @code{nil} otherwise. +@end deffn + +@defvar window-size-fixed +If this variable is non-@code{nil}, in any given buffer, +then the size of any window displaying the buffer remains fixed +unless you explicitly change it or Emacs has no other choice. + +If the value is @code{height}, then only the window's height is fixed; +if the value is @code{width}, then only the window's width is fixed. +Any other non-@code{nil} value fixes both the width and the height. + +This variable automatically becomes buffer-local when set. + +Explicit size-change functions such as @code{enlarge-window} +get an error if they would have to change a window size which is fixed. +Therefore, when you want to change the size of such a window, +you should bind @code{window-size-fixed} to @code{nil}, like this: + +@example +(let ((window-size-fixed nil)) + (enlarge-window 10)) +@end example + +Note that changing the frame size will change the size of a +fixed-size window, if there is no other alternative. +@end defvar + +@cindex minimum window size + The following two variables constrain the window-structure-changing +functions to a minimum height and width. + +@defopt window-min-height +The value of this variable determines how short a window may become +before it is automatically deleted. Making a window smaller than +@code{window-min-height} automatically deletes it, and no window may +be created shorter than this. The default value is 4. + +The absolute minimum window height is one; actions that change window +sizes reset this variable to one if it is less than one. +@end defopt + +@defopt window-min-width +The value of this variable determines how narrow a window may become +before it is automatically deleted. Making a window smaller than +@code{window-min-width} automatically deletes it, and no window may be +created narrower than this. The default value is 10. + +The absolute minimum window width is two; actions that change window +sizes reset this variable to two if it is less than two. +@end defopt + +@node Coordinates and Windows +@section Coordinates and Windows + +This section describes how to relate screen coordinates to windows. + +@defun window-at x y &optional frame +This function returns the window containing the specified cursor +position in the frame @var{frame}. The coordinates @var{x} and @var{y} +are measured in characters and count from the top left corner of the +frame. If they are out of range, @code{window-at} returns @code{nil}. + +If you omit @var{frame}, the selected frame is used. +@end defun + +@defun coordinates-in-window-p coordinates window +This function checks whether a particular frame position falls within +the window @var{window}. + +The argument @var{coordinates} is a cons cell of the form @code{(@var{x} +. @var{y})}. The coordinates @var{x} and @var{y} are measured in +characters, and count from the top left corner of the screen or frame. + +The value returned by @code{coordinates-in-window-p} is non-@code{nil} +if the coordinates are inside @var{window}. The value also indicates +what part of the window the position is in, as follows: + +@table @code +@item (@var{relx} . @var{rely}) +The coordinates are inside @var{window}. The numbers @var{relx} and +@var{rely} are the equivalent window-relative coordinates for the +specified position, counting from 0 at the top left corner of the +window. + +@item mode-line +The coordinates are in the mode line of @var{window}. + +@item header-line +The coordinates are in the header line of @var{window}. + +@item vertical-line +The coordinates are in the vertical line between @var{window} and its +neighbor to the right. This value occurs only if the window doesn't +have a scroll bar; positions in a scroll bar are considered outside the +window for these purposes. + +@item left-fringe +@itemx right-fringe +The coordinates are in the left or right fringe of the window. + +@item left-margin +@itemx right-margin +The coordinates are in the left or right margin of the window. + +@item nil +The coordinates are not in any part of @var{window}. +@end table + +The function @code{coordinates-in-window-p} does not require a frame as +argument because it always uses the frame that @var{window} is on. +@end defun + +@node Window Tree +@section The Window Tree +@cindex window tree + + A @dfn{window tree} specifies the layout, size, and relationship +between all windows in one frame. + +@defun window-tree &optional frame +This function returns the window tree for frame @var{frame}. +If @var{frame} is omitted, the selected frame is used. + +The return value is a list of the form @code{(@var{root} @var{mini})}, +where @var{root} represents the window tree of the frame's +root window, and @var{mini} is the frame's minibuffer window. + +If the root window is not split, @var{root} is the root window itself. +Otherwise, @var{root} is a list @code{(@var{dir} @var{edges} @var{w1} +@var{w2} ...)} where @var{dir} is @code{nil} for a horizontal split, +and @code{t} for a vertical split, @var{edges} gives the combined size and +position of the subwindows in the split, and the rest of the elements +are the subwindows in the split. Each of the subwindows may again be +a window or a list representing a window split, and so on. The +@var{edges} element is a list @code{(@var{left}@var{ top}@var{ right}@var{ bottom})} +similar to the value returned by @code{window-edges}. +@end defun + +@node Window Configurations +@section Window Configurations +@cindex window configurations +@cindex saving window information + + A @dfn{window configuration} records the entire layout of one - frame---all windows, their sizes, which buffers they contain, what - part of each buffer is displayed, and the values of point and the - mark; also their fringes, margins, and scroll bar settings. It also ++frame---all windows, their sizes, which buffers they contain, how ++those buffers are scrolled, and their values of point and the mark; ++also their fringes, margins, and scroll bar settings. It also +includes the values of @code{window-min-height}, - @code{window-min-width} and @code{minibuffer-scroll-window}. An - exception is made for point in the selected window for the current - buffer; its value is not saved in the window configuration. ++@code{window-min-width} and @code{minibuffer-scroll-window}. As a ++special exception, the window configuration does not record the value ++of point in the selected window for the current buffer. + + You can bring back an entire previous layout by restoring a window +configuration previously saved. If you want to record all frames +instead of just one, use a frame configuration instead of a window +configuration. @xref{Frame Configurations}. + +@defun current-window-configuration &optional frame +This function returns a new object representing @var{frame}'s current +window configuration. If @var{frame} is omitted, the selected frame +is used. +@end defun + +@defun set-window-configuration configuration +This function restores the configuration of windows and buffers as +specified by @var{configuration}, for the frame that @var{configuration} +was created for. + +The argument @var{configuration} must be a value that was previously +returned by @code{current-window-configuration}. This configuration is +restored in the frame from which @var{configuration} was made, whether +that frame is selected or not. This always counts as a window size +change and triggers execution of the @code{window-size-change-functions} +(@pxref{Window Hooks}), because @code{set-window-configuration} doesn't +know how to tell whether the new configuration actually differs from the +old one. + +If the frame which @var{configuration} was saved from is dead, all this +function does is restore the three variables @code{window-min-height}, +@code{window-min-width} and @code{minibuffer-scroll-window}. In this +case, the function returns @code{nil}. Otherwise, it returns @code{t}. + +Here is a way of using this function to get the same effect +as @code{save-window-excursion}: + +@example +@group +(let ((config (current-window-configuration))) + (unwind-protect + (progn (split-window-vertically nil) + @dots{}) + (set-window-configuration config))) +@end group +@end example +@end defun + +@defspec save-window-excursion forms@dots{} +This special form records the window configuration, executes @var{forms} +in sequence, then restores the earlier window configuration. The window +configuration includes, for each window, the value of point and the +portion of the buffer that is visible. It also includes the choice of +selected window. However, it does not include the value of point in +the current buffer; use @code{save-excursion} also, if you wish to +preserve that. + +Don't use this construct when @code{save-selected-window} is sufficient. + +Exit from @code{save-window-excursion} always triggers execution of the +@code{window-size-change-functions}. (It doesn't know how to tell +whether the restored configuration actually differs from the one in +effect at the end of the @var{forms}.) + +The return value is the value of the final form in @var{forms}. +For example: + +@example +@group +(split-window) + @result{} # +@end group +@group +(setq w (selected-window)) + @result{} # +@end group +@group +(save-window-excursion + (delete-other-windows w) + (switch-to-buffer "foo") + 'do-something) + @result{} do-something + ;; @r{The screen is now split again.} +@end group +@end example +@end defspec + +@defun window-configuration-p object +This function returns @code{t} if @var{object} is a window configuration. +@end defun + +@defun compare-window-configurations config1 config2 +This function compares two window configurations as regards the +structure of windows, but ignores the values of point and mark and the +saved scrolling positions---it can return @code{t} even if those +aspects differ. + +The function @code{equal} can also compare two window configurations; it +regards configurations as unequal if they differ in any respect, even a +saved point or mark. +@end defun + +@defun window-configuration-frame config +This function returns the frame for which the window configuration +@var{config} was made. +@end defun + + Other primitives to look inside of window configurations would make +sense, but are not implemented because we did not need them. See the +file @file{winner.el} for some more operations on windows +configurations. + +@node Window Hooks +@section Hooks for Window Scrolling and Changes +@cindex hooks for window operations + +This section describes how a Lisp program can take action whenever a +window displays a different part of its buffer or a different buffer. +There are three actions that can change this: scrolling the window, +switching buffers in the window, and changing the size of the window. +The first two actions run @code{window-scroll-functions}; the last runs +@code{window-size-change-functions}. + +@defvar window-scroll-functions +This variable holds a list of functions that Emacs should call before +redisplaying a window with scrolling. It is not a normal hook, because +each function is called with two arguments: the window, and its new +display-start position. + +Displaying a different buffer in the window also runs these functions. + +These functions must be careful in using @code{window-end} +(@pxref{Window Start}); if you need an up-to-date value, you must use +the @var{update} argument to ensure you get it. + +@strong{Warning:} don't use this feature to alter the way the window +is scrolled. It's not designed for that, and such use probably won't +work. +@end defvar + +@defvar window-size-change-functions +This variable holds a list of functions to be called if the size of any +window changes for any reason. The functions are called just once per +redisplay, and just once for each frame on which size changes have +occurred. + +Each function receives the frame as its sole argument. There is no +direct way to find out which windows on that frame have changed size, or +precisely how. However, if a size-change function records, at each +call, the existing windows and their sizes, it can also compare the +present sizes and the previous sizes. + +Creating or deleting windows counts as a size change, and therefore +causes these functions to be called. Changing the frame size also +counts, because it changes the sizes of the existing windows. + +It is not a good idea to use @code{save-window-excursion} (@pxref{Window +Configurations}) in these functions, because that always counts as a +size change, and it would cause these functions to be called over and +over. In most cases, @code{save-selected-window} (@pxref{Selecting +Windows}) is what you need here. +@end defvar + +@defvar redisplay-end-trigger-functions +This abnormal hook is run whenever redisplay in a window uses text that +extends past a specified end trigger position. You set the end trigger +position with the function @code{set-window-redisplay-end-trigger}. The +functions are called with two arguments: the window, and the end trigger +position. Storing @code{nil} for the end trigger position turns off the +feature, and the trigger value is automatically reset to @code{nil} just +after the hook is run. +@end defvar + +@defun set-window-redisplay-end-trigger window position +This function sets @var{window}'s end trigger position at +@var{position}. +@end defun + +@defun window-redisplay-end-trigger &optional window +This function returns @var{window}'s current end trigger position. +If @var{window} is @code{nil} or omitted, it uses the selected window. +@end defun + +@defvar window-configuration-change-hook +A normal hook that is run every time you change the window configuration +of an existing frame. This includes splitting or deleting windows, +changing the sizes of windows, or displaying a different buffer in a +window. The frame whose window configuration has changed is the +selected frame when this hook runs. +@end defvar + +@ignore + arch-tag: 3f6c36e8-df49-4986-b757-417feed88be3 +@end ignore diff --cc doc/misc/ChangeLog index c05f6c40bca,00000000000..056ad379127 mode 100644,000000..100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@@ -1,3907 -1,0 +1,3918 @@@ +2007-10-06 Michael Albinus + + * tramp.texi (External packages): New section. + ++2007-09-29 Juri Linkov ++ ++ * info.texi (Help-Int): Document `L' (`Info-history'). ++ +2007-09-26 Carsten Dominik + + * org.texi: Change links to webpage and maintained email. + (Remember): Promote to Chapter, significant changes. + (Fast access to TODO states): New section. + (Faces for TODO keywords): New section. + (Export options): Example for #+DATE. + (Progress logging): Section moved. + +2007-09-26 Bill Wohler + + * mh-e.texi (HTML): Mention binding of S-mouse-2 to + browse-url-at-mouse. + ++2007-09-20 Eduard Wiebe (tiny change) ++ ++ * flymake.texi (Customizable variables): Face names don't end in -face. ++ Fix flymake-err-line-patterns template. ++ (Example -- Configuring a tool called directly): Fix init-function. ++ (Highlighting erroneous lines): Face names don't end in -face. ++ +2007-09-18 Exal de Jesus Garcia Carrillo (tiny change) + + * erc.texi (Special-Features): Fix small typo. + +2007-09-14 Michael Albinus + + * tramp.texi (Filename Syntax): Provide links to "Inline methods" + and "External transfer methods". + +2007-09-13 Jay Belanger + + * calc.texi (Predefined Units): Add some history. + +2007-09-08 Michael Olson + + * erc.texi (Copying): New section included from gpl.texi. This matches + the look of the upstream ERC manual. + +2007-09-07 Jay Belanger + + * calc.texi (History and Acknowledgements): Adjust the + "thanks". + (Random Numbers): Clarify the distribution of `random'. + +2007-09-06 Glenn Morris + + * Move manual sources from man/ to subdirectories of doc/. + Split into the Emacs manual in emacs/, and other manuals in misc/. + Change all setfilename commands to use ../../info. + * Makefile.in: Move the parts of the old man/Makefile.in that do not + refer to the Emacs manual here. + (infodir): New variable. + (INFO_TARGETS, info): Use infodir. Also used by all info targets. + (cc-mode.texi, faq.texi): Update references to source file locations. + * makefile.w32-in: Move the parts of the old man/makefile.w32-in that + do not refer to the Emacs manual here. + (infodir, MULTI_INSTALL_INFO, ENVADD): Go up one more level. + + * Makefile.in: Add `basename' versions of all info targets, for + convenience when rebuilding just one manual. + (../etc/GNU): Delete obsolete target. + (.SUFFIXES): Use $(TEXI2DVI) rather than texi2dvi. + (mostlyclean): Add *.op, *.ops. Move *.aux *.cps *.fns *.kys *.pgs + *.vrs *.toc here... + (maintainer-clean): ...from here. + + * makefile.w32-in (../etc/GNU): Delete obsolete target. + +2007-09-01 Jay Belanger + + * calc.texi (Date Conversions): Clarify definition of + Julian day numbering. + (Date Forms): Clarify definition of Julian day numbering; + add some history. + +2007-08-30 Carsten Dominik + + * org.texi: Version 5.07 + +2007-08-24 IRIE Tetsuya (tiny change) + + * message.texi (MIME): Replace mml-attach with mml-attach-file. + +2007-08-22 Carsten Dominik + + * org.texi (Adding hyperlink types): New section. + (Embedded LaTeX): Chapter updated because of LaTeX export. + (LaTeX export): New section. + (Using links out): New section. + +2007-08-22 Glenn Morris + + * faq.texi (Learning how to do something): Refcards now in + etc/refcards/ directory. + +2007-08-22 Michael Albinus + + * tramp.texi (Remote Programs): Persistency file must be cleared when + changing `tramp-remote-path'. + (Filename Syntax): Don't use @var{} constructs inside the @trampfn + macro. + +2007-08-17 Jay Belanger + + * calc.texi: Move contents to beginning of file. + (Algebraic Entry): Fix the formatting of an example. + +2007-08-15 Jay Belanger + + * calc.texi (Basic Operations on Units): Mention exact versus + inexact conversions. + +2007-08-14 Jay Belanger + + * calc.texi (Basic Operations on Units): Mention default + values for new units. + (Quick Calculator Mode): Mention that binary format will + be displayed. + +2007-08-14 Katsumi Yamaoka + + * gnus.texi (Selecting a Group): Mention gnus-maximum-newsgroup. + +2007-08-10 Katsumi Yamaoka + + * gnus.texi (NNTP): Mention nntp-xref-number-is-evil. + +2007-08-08 Glenn Morris + + * gnus.texi, sieve.texi: Replace `iff'. + +2007-08-03 Jay Belanger + + * calc.texi (Basic Graphics): Mention the graphing of error + forms. + (Graphics Options): Mention how `g s' handles error forms. + (Curve Fitting): Mention plotting the curves. + (Standard Nonlinear Models): Add additional models. + (Curve Fitting Details): Mention the Levenberg-Marquardt method. + (Linear Fits): Correct result. + +2007-08-01 Alan Mackenzie + + * cc-mode.texi (Mailing Lists and Bug Reports): Correct "-no-site-file" + to "--no-site-file". + +2007-07-29 Michael Albinus + + * tramp.texi (Frequently Asked Questions): Point to mode line + extension in Emacs 23.1. + + * trampver.texi: Update release number. + +2007-07-27 Glenn Morris + + * calc.texi (Copying): Include license text from gpl.texi, rather than + in-line. + +2007-07-25 Glenn Morris + + * calc.texi (Copying): Replace license with GPLv3. + + * Relicense all FSF files to GPLv3 or later. + +2007-07-22 Michael Albinus + + Sync with Tramp 2.1.10. + + * tramp.texi (trampfn): Expand macro implementation in order to handle + empty arguments. + (trampfnmhl, trampfnuhl, trampfnhl): Remove macros. Replace all + occurencies by trampfn. + (Frequently Asked Questions): Extend example code for host + identification in the modeline. Add bbdb to approaches shortening Tramp + file names to be typed. + + * trampver.texi: Update release number. + +2007-07-17 Michael Albinus + + * tramp.texi: Move @setfilename ../info/tramp up, outside the header + section. Reported by . + (Remote processes): Arguments of the program to be debugged are taken + literally. + (Frequently Asked Questions): Simplify recentf example. + +2007-07-14 Karl Berry + + * info.texi (@copying): New Back-Cover Text. + + * info.texi (Quitting Info): Move to proper place in source. + (Reported by Benno Schulenberg.) + +2007-07-13 Eli Zaretskii + + * Makefile.in (../info/emacs-mime): Use --enable-encoding. + + * makefile.w32-in ($(infodir)/emacs-mime): Ditto. + + * emacs-mime.texi: Add @documentencoding directive. + +2007-07-12 Nick Roberts + + * tramp.texi (Remote processes): Add an anchor to the subsection + "Running a debugger on a remote host". + +2007-07-12 Michael Albinus + + * tramp.texi (Remote processes): Don't call it "experimental" any + longer. Add subsection about running a debugger on a remote host. + +2007-07-10 Carsten Dominik + + * org.texi (Properties and columns): Chapter rewritten. + +2007-07-08 Michael Albinus + + * tramp.texi: + * trampver.texi: Migrate to Tramp 2.1. + +2007-07-02 Carsten Dominik + + * org.texi (Properties): New chapter. + +2007-07-02 Reiner Steib + + * gnus-faq.texi ([3.2]): Fix locating of environment variables in the + Control Panel. + + * gnus.texi (Misc Article): Add index entry for + gnus-single-article-buffer. + +2007-06-27 Andreas Seltenreich + + * gnus.texi (Starting Up): Fix typo. + +2007-06-25 Katsumi Yamaoka + + * gnus.texi (Asynchronous Fetching): Fix typo. + +2007-06-20 Jay Belanger + + * calc.texi:Change ifinfo to ifnottex (as appropriate) throughout. + (About This Manual): Remove redundant information. + (Getting Started): Mention author. + (Basic Arithmetic, Customizing Calc): Make description of the + variable `calc-multiplication-has-precedence' match its new effect. + +2007-06-19 Jay Belanger + + * calc.texi (Basic Arithmetic, Customizing Calc): Mention + the variable `calc-multiplication-has-precedence'. + +2007-06-19 Carsten Dominik + + * org.texi (Tag): Section swapped with node Timestamps. + (Formula syntax for Lisp): Document new `L' flag. + +2007-06-06 Andreas Seltenreich + + * gnus.texi (Misc Group Stuff, Summary Buffer) + (Server Commands, Article Keymap): Fix typo. s/function/command/. + +2007-06-06 Juanma Barranquero + + * cc-mode.texi (Comment Commands, Getting Started, Style Variables): + * gnus.texi (Article Buttons, Mail Source Customization) + (Sending or Not Sending, Customizing NNDiary): + * message.texi (Message Headers): + * mh-e.texi (HTML): Fix typos. + +2007-06-07 Michael Albinus + + Sync with Tramp 2.0.56. + + * tramp.texi (Frequently Asked Questions): Improve ~/.zshrc + settings. Reported by Ted Zlatanov . + +2007-06-02 Chong Yidong + + * Version 22.1 released. + +2007-05-26 Michael Olson + + * erc.texi (Modules): Fix references to completion modules. + +2007-05-09 Reiner Steib + + * gnus.texi (Running NNDiary): Use ~/.gnus.el instead of gnusrc. + +2007-05-09 Didier Verna + + * gnus.texi (Email Based Diary): New. Proper documentation for the + nndiary back end and the gnus-diary library. + +2007-05-03 Karl Berry + + * .cvsignore (*.pdf): New entry. + + * texinfo.tex: Update from current version for better pdf generation. + +2007-04-30 Reiner Steib + + * gnus.texi (Article Highlighting): Clarify gnus-cite-parse-max-size. + +2007-04-28 Glenn Morris + + * faq.texi (New in Emacs 22): Restore mention of python.el pending + consideration of legal status. + +2007-04-27 J.D. Smith + + * idlwave.texi: Minor updates for IDLWAVE 6.1. + +2007-04-24 Chong Yidong + + * faq.texi (New in Emacs 22): python.el removed. + +2007-04-23 Jay Belanger + + * calc.texi (Reporting bugs): Update maintainer's address. + +2007-04-22 Chong Yidong + + * faq.texi (New in Emacs 22): Rename "tumme" to "image-dired". + +2007-04-15 Jay Belanger + + * calc.texi (Title page): Remove the date. + (Basic Arithmetic): Emphasize that / binds less strongly than *. + (The Standard Calc Interface): Change trail title. + (Floats): Mention that when non-decimal floats are entered, only + approximations are stored. + (Copying): Move to the appendices. + (GNU Free Documentation License): Add as an appendix. + +2007-04-15 Chong Yidong + + * ada-mode.texi, autotype.texi, cc-mode.texi, cl.texi: + * dired-x.texi, ebrowse.texi, ediff.texi: + * emacs-mime.texi, erc.texi, eshell.texi: + * eudc.texi, flymake.texi, forms.texi, gnus.texi: + * idlwave.texi, message.texi, newsticker.texi, org.texi: + * pcl-cvs.texi, pgg.texi, rcirc.texi, reftex.texi, sc.texi: + * ses.texi, sieve.texi, smtpmail.texi, speedbar.texi: + * tramp.texi, url.texi, vip.texi, viper.texi, widget.texi: + * woman.texi: Include GFDL. + + * doclicense.texi: Remove node heading, so that it can be included by + other files. + + * dired-x.texi: Relicence under GFDL. Remove date from title page. + + * calc.texi (Algebraic Tutorial): Emphasize that / binds less strongly + than *. + +2007-04-14 Carsten Dominik + + * org.texi (Formula syntax for Calc): Emphasize the operator precedence + in Calc. + +2007-04-09 Romain Francoise + + * faq.texi (New in Emacs 22): Mention improvements to the Windows and + Mac OS ports. Make it clear that mouse-1 complements and doesn't + replace mouse-2. + +2007-04-08 Chong Yidong + + * woman.texi (Word at point, Interface Options): woman-topic-at-point + renamed to woman-use-topic-at-point. Document new behavior. + +2007-04-08 Richard Stallman + + * url.texi: Fix some indexing. + (Disk Caching): Drop discussion of old/other Emacs versions. + +2007-04-07 Chong Yidong + + * url.texi (Disk Caching): Say Emacs 21 "and later". + + * cc-mode.texi (Font Locking Preliminaries): Link to Emacs manual node + on Font locking which now mentions JIT lock. + +2007-04-01 Michael Olson + + * erc.texi: Update for the ERC 5.2 release. + +2007-03-31 David Kastrup + + * woman.texi (Topic, Interface Options): Explain changes semantics of + woman-manpath in order to consider MANPATH_MAP entries. + +2007-03-31 Eli Zaretskii + + * emacs-mime.texi (Non-MIME): Postscript -> PostScript. + +2007-03-26 Richard Stallman + + * pgg.texi (Caching passphrase): Clean up previous change. + +2007-03-25 Thien-Thi Nguyen + + * gnus.texi (Setting Process Marks): Fix typo. + +2007-03-25 Romain Francoise + + * faq.texi (New in Emacs 22): Reorganize using an itemized list for + readability, and include various fixes by Daniel Brockman, Nick Roberts + and Dieter Wilhelm. + +2007-03-24 Thien-Thi Nguyen + + * gnus.texi (Splitting Mail): Reword "splitting"-as-adj to be -as-noun. + + * gnus.texi (Mail Source Specifiers): Fix typo. + +2007-03-22 Ralf Angeli + + * reftex.texi (Imprint): Update maintainer information. + +2007-03-15 Katsumi Yamaoka + + * message.texi (Message Buffers): Update documentation for + message-generate-new-buffers. + +2007-03-15 Daiki Ueno + + * pgg.texi (Caching passphrase): Describe pgg-passphrase-coding-system. + +2007-03-21 Glenn Morris + + * eshell.texi (Known problems): Emacs 22 comes with eshell 2.4.2. + +2007-03-19 Chong Yidong + + * eshell.texi (Known problems): Emacs 21 -> 22. + + * cc-mode.texi (Performance Issues): Update note about 21.3 to 22.1. + +2007-03-18 Jay Belanger + + * calc.texi (Time Zones): Mention that the DST rules changed in 2007. + +2007-03-12 Glenn Morris + + * calc.texi (Time Zones): Switch to new North America DST rule. + + * calc.texi: Replace "daylight savings" with "daylight + saving" in text throughout. + +2007-03-11 Andreas Seltenreich + + * gnus.texi (Mail and Post): Update documentation for gnus-user-agent. + The variable now uses a list of symbols instead of just a symbol. + Reported by Christoph Conrad . + +2007-03-06 Romain Francoise + + * faq.texi (New in Emacs 22): Don't say "now" too much. Add MH-E to + new packages, and mention Gnus update. + +2007-02-27 Katsumi Yamaoka + + * gnus.texi (NNTP): Mention nntp-never-echoes-commands and + nntp-open-connection-functions-never-echo-commands. + +2007-02-27 Chong Yidong + + * pgg.texi (Caching passphrase): Document gpg-agent usage, gpg-agent + problems on the console, and security risk in not using gpg-agent. + +2007-02-25 Carsten Dominik + + * org.texi (The spreadsheet): Renamed from "Table calculations". + Completely reorganized and rewritten. + (CamelCase links): Section removed. + (Repeating items): New section. + (Tracking TODO state changes): New section. + (Agenda views): Chapter reorganized and rewritten. + (HTML export): Section rewritten. + (Tables in arbitrary syntax): New section. + (Summary): Better feature summary. + (Activation): Document problem with cut-and-paste of Lisp code + from PDF files. + (Visibility cycling): Document indirect buffer use. + (Structure editing): Document sorting. + (Remember): Section rewritten. + (Time stamps): Better description of time stamp types. + (Tag searches): Document regular expression search for tags. + (Stuck projects): New section. + (In-buffer settings): New keywords. + (History and Acknowledgments): Updated description. + +2007-02-24 Alan Mackenzie + + * cc-mode.texi (Movement Commands): Insert two missing command names. + (Getting Started): Slight wording correction (use conditional). + +2007-02-22 Kim F. Storm + + * widget.texi (User Interface, Basic Types): Document need to put some + text before the %v escape in :format string in editable-field widget. + +2007-02-18 Romain Francoise + + * pcl-cvs.texi (Miscellaneous commands): q runs `cvs-bury-buffer', not + `cvs-mode-quit'. + +2007-02-10 Markus Triska + + * widget.texi (Programming Example): Put constant strings in :format. + +2007-02-07 Juanma Barranquero + + * faq.texi (Fullscreen mode on MS-Windows): New node. + +2007-02-04 David Kastrup + + * faq.texi (AUCTeX): Update version number. Should probably be done + for other packages as well. + +2007-01-28 Andreas Seltenreich + + * gnus.texi (Batching Agents): Fix example. Reported by Tassilo Horn + . + +2007-01-27 Eli Zaretskii + + * msdog.texi (ls in Lisp): Document ls-lisp-format-time-list and + ls-lisp-use-localized-time-format. + +2007-01-20 Markus Triska + + * flymake.texi (Flymake mode): find-file-hook instead of ...-hooks. + +2007-01-13 Michael Olson + + * erc.texi (Modules): Mention capab-identify module. + +2007-01-05 Michael Olson + + * erc.texi (Getting Started): Update for /RECONNECT command. + +2007-01-04 Richard Stallman + + * ebrowse.texi: Change C-c b to C-c C-m. + +2007-01-03 Reiner Steib + + * gnus.texi (Customizing Articles): Use index entries for gnus-treat-* + variables only in info to avoid redundant entries in the printed + manual. + +2007-01-02 Daiki Ueno + + * message.texi (Using PGP/MIME): Document gpg-agent usage. + +2007-01-02 Reiner Steib + + * message.texi (Security): Split into sub-nodes. + +2007-01-01 Alan Mackenzie + + * cc-mode.texi ("Limitations and Known Bugs"): Document problems with + eval-after-load in Emacs <=21 and a workaround. Document that + trigraphs are not supported. + +2007-01-01 Alan Mackenzie + + * cc-mode.texi ("Filling and Breaking"): Amend the doc for + c-context-line-break. When invoked within a string, preserve + whitespace. Add a backslash only when also in a macro. + +2007-01-01 Alan Mackenzie + + * cc-mode.texi ("Choosing a Style"): Mention c-file-style. + +2007-01-01 Alan Mackenzie + + * cc-mode.texi ("Movement Commands", "Sample .emacs File"): C-M-[ae] + are now bound by default to c-\(beginning\|end\)-of-defun by default. + +2007-01-01 Alan Mackenzie + + * cc-mode.texi ("Other Commands"): Move c-set-style (C-c .) here from + "Choosing a Style". + + * cc-mode.texi ("Styles"): Add @dfn{style}. + +2006-12-30 Michael Albinus + + Sync with Tramp 2.0.55. + + * trampver.texi: Update release number. + +2006-12-29 Reiner Steib + + * gnus.texi (Customizing Articles): Add index entries for all + gnus-treat-* variables. + +2006-12-29 Jouni K. Sepp,Ad(Bnen + + * gnus.texi (IMAP): Fix incorrect explanation of + nnimap-search-uids-not-since-is-evil in documentation for + nnimap-expunge-search-string. + +2006-12-27 Reiner Steib + + * gnus.texi (ifile spam filtering): Rename spam-ifile-database-path to + spam-ifile-database. + +2006-12-26 Reiner Steib + + * gnus.texi (Spam Package Configuration Examples): Don't encourage to + rebind C-s. + +2006-12-26 Jouni K. Sepp,Ad(Bnen + + * gnus.texi (Group Parameters, Group Maintenance, Topic Commands) + (Mail Group Commands, Expiring Mail, IMAP): Add index entries for + "expiring mail". + (IMAP): Document nnimap-search-uids-not-since-is-evil and + nnimap-nov-is-evil. + +2006-12-25 Kevin Ryde + + * cl.texi (Sorting Sequences): In sort*, add a little cautionary note + about the key procedure being used heavily. + +2006-12-24 Chong Yidong + + * pgg.texi (Caching passphrase): Default for pgg-gpg-use-agent changed + to t. + (Prerequisites): Add explanation about gpg-agent. + +2006-12-22 Kevin Ryde + + * cl.texi (Sorting Sequences): Typo in sort*, example showed plain + "sort" instead of "sort*". + +2006-12-19 Richard Stallman + + * calc.texi (History and Acknowledgements): Recognize that Emacs + now does have floating point. + +2006-12-19 Michael Albinus + + * tramp.texi (External transfer methods): Describe new method `scpc'. + +2006-12-17 Sascha Wilde + + * pgg.texi: Added short note on gpg-agent to the introduction. + +2006-12-13 Reiner Steib + + * gnus.texi (Hiding Headers): Document that `long-to' and `many-to' + also applies to Cc. + +2006-12-12 Reiner Steib + + * gnus.texi (X-Face): Clarify. Say which programs are required + on Windows. + +2006-12-08 Michael Olson + + * erc.texi (Modules): Remove documentation for list module. + +2006-12-05 Micha,Ak(Bl Cadilhac + + * faq.texi (^M in the shell buffer): Ditto. + +2006-11-20 Michael Olson + + * erc.texi: Call this the 5.2 stable pre-release of ERC. + +2006-11-17 Carsten Dominik + + * org.texi: Fix typos. + (Agenda commands): Document `C-k'. + +2006-11-16 Eli Zaretskii + + * url.texi (http/https): Fix a typo in the HTTP URL. + +2006-11-14 Stephen Leake + + * ada-mode.texi: Total rewrite. + +2006-11-13 Carsten Dominik + + * org.texi: Minor typo fixes. + +2006-11-13 Bill Wohler + + Release MH-E manual version 8.0.3. + + * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for + release 8.0.3. + + * mh-e.texi (Incorporating Mail): Use output of "mhparam Path" + to set MAILDIR. + (Reading Mail): Document the customization of read-mail-command + for MH-E. + (Viewing Attachments): Document mm-discouraged-alternatives. + (Tool Bar): Fix Texinfo for mh-xemacs-use-tool-bar-flag. + (Junk): Add more information about the settings of mh-junk-background + in a program. Add /usr/bin/mh to PATH in examples. + +2006-11-12 Richard Stallman + + * woman.texi: Update author address but say he no longer maintains it. + +2006-11-10 Carsten Dominik + + * org.texi (ARCHIVE tag): Document C-TAB for forcing cycling of + archived trees. + (Checkboxes): Section moved to chapter 5, and extended. + (The date/time prompt): New section. + (Link abbreviations): New section. + (Presentation and sorting): New section. + (Custom agenda views): Section completely rewritten. + (Summary): Compare with Planner. + (Feedback): More info about creating backtraces. + (Plain lists): Modified example. + (Breaking down tasks): New section. + (Custom time format): New section. + (Time stamps): Document inactive timestamps. + (Setting tags): More details about fast tag selection. + (Block agenda): New section. + (Custom agenda views): Section rewritten. + (Block agenda): New section. + +2006-11-07 Michael Albinus + + * tramp.texi (Configuration): scp is the default method. + (Default Method): Use ssh as example for another method. + +2006-10-27 Richard Stallman + + * woman.texi: Downcase nroff/troff/roff. + (Installation): Chapter deleted. Some xrefs deleted. + (Background): woman doesn't advise man ;-). + +2006-10-26 Roberto Rodr,Am(Bguez (tiny change) + + * ada-mode.texi (Project files, Identifier completion) + (Automatic Casing, Debugging, Using non-standard file names) + (Working Remotely): Fix typos. + +2006-10-20 Masatake YAMATO + + * cc-mode.texi (Sample .emacs File): Added missing `)' in + sample code `my-c-initialization-hook'. + +2006-10-19 Stuart D. Herring + + * widget.texi: Fix typos. + +2006-10-19 Michael Albinus + + * tramp.texi (Frequently Asked Questions): Remove questions marked with + "???". There have been no complaints for years, so the information + must be appropriate. + +2006-10-16 Richard Stallman + + * widget.texi: Use @var instead of capitalization. + Clarify many widget type descriptions. + +2006-10-13 Andreas Seltenreich + + * gnus.texi (Other modes): Fix typo. Add alternative index entry for + gnus-dired-attach. + (Selecting a Group): Fix typo. + +2006-10-12 Roberto Rodr,Am(Bguez (tiny change) + + * widget.texi: Fix typos. + +2006-10-06 Reiner Steib + + * gnus.texi (Image Enhancements): Update for Emacs 22. + + * gnus-faq.texi ([1.3]): Update. + +2006-10-06 Richard Stallman + + * faq.texi (Displaying the current line or column): + Delete "As of Emacs 20". + +2006-10-06 Romain Francoise + + * faq.texi (VM): VM works with Emacs 22 too. + +2006-10-06 Richard Stallman + + * ebrowse.texi: Remove Emacs version "21" from title. + +2006-10-02 Reiner Steib + + * gnus.texi (Foreign Groups): Say where change of editing commands are + stored. Add reference to `gnus-parameters'. + +2006-09-15 Jay Belanger + + * calc.texi, mh-e.texi (GNU GENERAL PUBLIC LICENSE): + Change "Library Public License" to "Lesser Public License" + throughout. Use "yyyy" to represent year. + +2006-09-15 Carsten Dominik + + * org.texi (Setting tags): Typo fix. + +2006-09-14 Reiner Steib + + * gnus.texi (Oort Gnus): Add @xref for `mm-fill-flowed'. + +2006-09-12 Reiner Steib + + * reftex.texi (Citations Outside LaTeX): Simplify lisp example. + +2006-09-12 Paul Eggert + + * faq.texi (Escape sequences in shell output): EMACS is now set + to Emacs's absolute file name, not to "t". + (^M in the shell buffer): Likewise. + * misc.texi (Interactive Shell): Likewise. + +2006-09-11 Reiner Steib + + * gnus.texi (Mail Source Specifiers): Mention problem of duplicate + mails with pop3-leave-mail-on-server. Fix wording. + (Limiting): Improve gnus-summary-limit-to-articles. + (X-Face): Fix typo. + +2006-09-11 Simon Josefsson + + * smtpmail.texi (Authentication): Explain TLS and SSL better, based on + suggested by Phillip Lord . + +2006-09-06 Simon Josefsson + + * smtpmail.texi (Authentication): Mention SSL. + +2006-09-01 Eli Zaretskii + + * rcirc.texi (Internet Relay Chat, Useful IRC commands): + Don't use @indicateurl. + + * cc-mode.texi (Subword Movement): Don't use @headitem. + (Custom Braces, Clean-ups): Don't use @tie. + +2006-08-29 Michael Albinus + + Sync with Tramp 2.0.54. + + * tramp.texi (Bug Reports): The Tramp mailing list is moderated now. + Suggested by Adrian Phillips . + +2006-08-15 Carsten Dominik + + * org.texi (Installation, Activation): Split from Installation and + Activation. + (Clocking work time): Documented new features. + +2006-08-13 Alex Schroeder + + * rcirc.texi (Configuration): Use correct variable in rcirc-authinfo + example. + +2006-08-12 Eli Zaretskii + + * faq.texi (How to add fonts): New node. + +2006-08-05 Romain Francoise + + * faq.texi (New in Emacs 22): Expand. + +2006-08-03 Michael Olson + + * erc.texi: Update for ERC 5.1.4. + +2006-07-28 Katsumi Yamaoka + + * gnus.texi (Oort Gnus): Mention that the Lisp files are now installed + in .../site-lisp/gnus/ by default. + [ From gnus-news.texi in the trunk. ] + +2006-07-27 Reiner Steib + + * gnus.texi (MIME Commands): Additions for yEnc. + +2006-07-24 Richard Stallman + + * pgg.texi, org.texi, info.texi, forms.texi, flymake.texi: + * faq.texi: Move periods and commas inside quotes. + +2006-07-20 Jay Belanger + + * calc.texi (Error forms): Mention M-+ keybinding for `calc-plus-minus'. + +2006-07-18 Chong Yidong + + * faq.texi (Security risks with Emacs): Document Emacs 22 + file-local-variable mechanism. + +2006-07-12 Michael Olson + + * erc.texi: Update for ERC 5.1.3. + +2006-07-12 Alex Schroeder + + * rcirc.texi: Fix typos. + (Getting started with rcirc): New calling convention for M-x irc. + Mention #rcirc. Removed channel tracking. + (Configuration): Changed the names of all variables that got changed + recently, eg. rcirc-server to rcirc-default-server. Added + documentation for rcirc-authinfo, some background for Bitlbee, and + rcirc-track-minor-mode. + (Scrolling conservatively): Fixed the xref from Auto Scrolling to just + Scrolling. + (Reconnecting after you have lost the connection): Fixed example code + to match code changes. + +2006-07-10 Nick Roberts + + * gnus.texi, message.texi: Fix typos. + +2006-07-07 Carsten Dominik + + * org.texi (Exporting): Document `C-c C-e' as the prefix for exporting + commands. + (Global TODO list): Document the use of the variables + `org-agenda-todo-ignore-scheduled' and + `org-agenda-todo-list-sublevels'. + +2006-07-05 Richard Stallman + + * faq.texi (Scrolling only one line): Fix xref. + +2006-07-05 Thien-Thi Nguyen + + * faq.texi (Evaluating Emacs Lisp code): + Throughout, replace eval-current-buffer with eval-buffer. + +2006-07-03 Richard Stallman + + * rcirc.texi (Scrolling conservatively): Fix xref. + + * pcl-cvs.texi (Viewing differences): Usage fix. + +2006-07-03 Carsten Dominik + + * org.texi (Agenda commands): Document `s' key to save all org-mode + buffers. + +2006-06-30 Ralf Angeli + + * pcl-cvs.texi (Customizing Faces): Remove -face suffix from face + names. Mention `cvs-msg' face. + +2006-06-29 Carsten Dominik + + * org.texi (Checkboxes): New section. + +2006-06-28 Carsten Dominik + + * org.texi (Embedded LaTeX): Fix typos and implement small improvements + throughout this chapter. + +2006-06-27 Chong Yidong + + * info.texi (Help-Small-Screen): Clarify placement of "All" and "Top" + text for standalone vs Emacs info. + (Help): Clarify header line description. Use mouse-1 for clicks. + (Help-P): Use mouse-1 for clicks. + (Help-^L): "Top" and "All" not displayed with dashes in Emacs. + (Help-^L, Help-M, Help-Int, Search Index, Go to node) + (Choose menu subtopic): Remove gratuitous Emacs command names. + (Help-FOO): Put usual behavior first. + (Help-Xref): Clicking on xrefs works in Emacs. + (Search Text): Clarify what the default behavior is. + (Create Info buffer): Fix Emacs window/X window confusion. + (Emacs Info Variables): Fix for new Emacs init file behavior. + +2006-06-24 Andreas Seltenreich + + * gnus.texi (Summary Buffer Lines): Fix typo. + +2006-06-23 Carsten Dominik + + * org.texi (Embedded LaTeX): New chapter. + (Archiving): Section rewritten. + (Enhancing text): Some parts moved to the new chapter about LaTeX. + +2006-06-20 Bill Wohler + + Release MH-E manual version 8.0.1. + + * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for + release 8.0.1. + (Preface): Depend on GNU mailutils 1.0 and higher. + +2006-06-19 Katsumi Yamaoka + + * message.texi (News Headers): Update message-syntax-checks section. + +2006-06-19 Karl Berry + + * info.texi (Advanced): Mention C-q, especially with ?. + +2006-06-19 Carsten Dominik + + * org.texi (Publishing links): Document the `:link-validation-function' + property. + (Extensions and Hacking): New chapter, includes some sections of the + "Miscellaneous" chapter. + +2006-06-10 Carsten Dominik + + * org.texi (Progress logging): New section. + +2006-05-29 Stefan Monnier + + * viper.texi (Viper Specials): + * gnus.texi (Example Setup): + * faq.texi (Backspace invokes help): + * dired-x.texi (Optional Installation Dired Jump): + * calc.texi (Defining Simple Commands): Use ;; instead of ;;; to better + follow coding conventions. + +2006-05-18 Reiner Steib + + * gnus.texi (Saving Articles): Clarify gnus-summary-save-article-mail. + +2006-06-06 Carsten Dominik + + * org.texi (ASCII export): Document indentation adaptation. + (Setting tags): Document mutually-exclusive tags. + +2006-06-05 Romain Francoise + + * url.texi (irc): Mention new funs `url-irc-rcirc' and `url-irc-erc'. + Fix typo. + + * gnus-faq.texi (Question 8.6): Update reference to the Gnus + channel (#gnus@irc.freenode.net). + Fix typos. Update copyright notice. + + * cc-mode.texi (Getting Started, Indentation Commands, Config Basics) + (Custom Filling and Breaking, Custom Braces, Syntactic Symbols) + (Line-Up Functions, Custom Macros): + * ediff.texi (Window and Frame Configuration) + (Highlighting Difference Regions, Highlighting Difference Regions): + * emacs-mime.texi (Display Customization): + * erc.texi (History): + * eshell.texi (Known problems): + * eudc.texi (Overview, BBDB): + * gnus.texi (NNTP, IMAP, Advanced Scoring Examples) + (The problem of spam, SpamOracle, Extending the Spam package) + (Conformity, Terminology): + * idlwave.texi (Routine Info, Routine Info) + (Class and Keyword Inheritance, Padding Operators) + (Breakpoints and Stepping, Electric Debug Mode) + (Examining Variables, Troubleshooting): + * org.texi (Creating timestamps): + * reftex.texi (Commands, Options, Changes): + * tramp.texi (Inline methods, Password caching) + (Auto-save and Backup, Issues): + * vip.texi (Files, Commands in Insert Mode): + * viper.texi (Emacs Preliminaries, States in Viper) + (Packages that Change Keymaps, Viper Specials, Groundwork): + Fix various typos. + +2006-05-31 Michael Ernst + + * ediff.texi: Fix typos. + +2006-05-30 Carsten Dominik + + * org.texi: Small typo fixes. + +2006-05-29 Michael Albinus + + * tramp.texi (Frequently Asked Questions): Disable zsh zle. + +2006-05-27 Thien-Thi Nguyen + + * pcl-cvs.texi: Fix typos. + (Customization): Say "us". + +2006-05-26 Eli Zaretskii + + * org.texi: Remove bogus @setfilename. + +2006-05-26 Carsten Dominik + + * org.texi (ASCII export): Omit command name. + (HTML export): Add prefix to all lines in Local Variable example. + (Acknowledgments): Typeset names in italics. + +2006-05-24 Carsten Dominik + + * org.texi (Plain lists): Add new item navigation commands. + (External links): Document elisp and info links. + (Custom searches): New section. + (Publishing): New chapter. + (HTML export): Include a list of supported CSS classes. + (Setting tags): Describe the fast-tag-setting interface. + +2006-05-20 Luc Teirlinck + + * dired-x.texi: ifinfo -> ifnottex. + +2006-05-18 Reiner Steib + + * gnus.texi (Saving Articles): Clarify gnus-summary-save-article-mail. + +2006-05-12 Reiner Steib + + * message.texi (Interface): Add tool bar customization. + (MIME): Index and text additions for mml-attach. + (MIME): Describe mml-dnd-protocol-alist and + mml-dnd-attach-options. + + * gnus.texi (Oort Gnus): Reorder entries in sections. + Fix some entries. + (Starting Up): Add references to "Emacs for Heathens" and to + "Finding the News". Add user-full-name and user-mail-address. + (Group Buffer Format): Add tool bar customization and update. + (Summary Buffer): Add tool bar customization. + (Posting Styles): Add message-alternative-emails. + +2006-05-09 Michael Albinus + + * tramp.texi (Filename completion): Improve wording. + +2006-05-07 Romain Francoise + + * faq.texi (Using regular expressions): Fix typo. + (Packages that do not come with Emacs): Fix capitalization. + (Replacing text across multiple files): Expand node to explain how + to use `dired-do-query-replace-regexp' in more detail, based on + suggestion by Eric Hanchrow . + +2006-05-06 Michael Albinus + + * tramp.texi (Filename completion): Completion of remote files' + method, user name and host name is active only in partial + completion mode. + +2006-05-06 Bill Wohler + + Release MH-E manual version 8.0. + + * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for + release 8.0. + +2006-05-06 Bill Wohler + + * mh-e.texi (MH-BOOK-HOME): Change from + http://www.ics.uci.edu/~mh/book/mh to + http://rand-mh.sourceforge.net/book/mh. + Replace .htm suffix with .html for MH book files. + (Using This Manual): Update key binding for getting relevant + chapter in Info from command key. + (Ranges): Fix itemx. + +2006-05-05 Karl Berry + + * texinfo.tex (\definetextfonsizexi, \definetextfonsizex): New cmds. + (\fonttextsize): New user-level command to change text font size. + +2006-04-26 Reiner Steib + + * pgg.texi (Caching passphrase): Fix markup and typos. Simplify. + +2006-04-26 Sascha Wilde (tiny change) + + * pgg.texi (Caching passphrase): Add pgg-gpg-use-agent. + +2006-04-24 Bill Wohler + + * mh-e.texi (Getting Started): Make it more explicit that you need + to install MH. Add pointers to current MH implementations. + +2006-04-21 Bill Wohler + + Release MH-E manual version 7.94. + + * mh-e.texi (VERSION, EDITION, UPDATED, UPDATE-MONTH): Update for + release 7.94. + +2006-04-21 Carsten Dominik + + * org.texi: Many small fixes. + (Handling links): Rename from "Managing links". + +2006-04-20 Reiner Steib + + * gnus.texi (Spam Statistics Package): Fix typo in @pxref. + (Splitting mail using spam-stat): Fix @xref. + +2006-04-20 Chong Yidong + + * gnus.texi (Spam Package): Major revision of the text. + Previouly this node was "Filtering Spam Using The Spam ELisp Package". + +2006-04-20 Carsten Dominik + + * org.texi (Time stamps): Better explanation of the purpose of + different time stamps. + (Structure editing, Plain lists): More details on how new items + and headings are inserted. + +2006-04-18 Carsten Dominik + + * org.texi (Formula syntax): Fix link to Calc Manual. + +2006-04-17 Reiner Steib + + * gnus.texi (Emacsen): Don't support Emacs 20.7 and XEmacs 21.1. + +2006-04-17 Bill Wohler + + * mh-e.texi (Folders): Update mh-before-quit-hook and + mh-quit-hook example with code that removes the buffers rather + than just bury them. + +2006-04-17 Michael Albinus + + Sync with Tramp 2.0.53. + +2006-04-13 Carsten Dominik + + * org.texi (Updating settings): New section. + (Visibility cycling): Better names for the startup folding + options. + (Exporting): Completely restructured. + (The very busy C-c C-c key): New section. + (Summary of in-buffer settings): New section. + +2006-04-11 Reiner Steib + + * gnus.texi, gnus-faq.texi, message.texi: Gnus v5.10.8 is released. + +2006-04-10 Reiner Steib + + * gnus.texi (Misc Group Stuff, Summary Buffer, Article Keymap) + (Server Commands): Key `v' is reserved for users. + +2006-04-11 Carsten Dominik + + * org.texi (Link format): New section, emphasis on bracket links. + (External links): Document bracket links. + (FAQ): Expand to cover shell links and the new link format. + +2006-04-09 Kevin Ryde + + * org.texi (Formula syntax): Typo in node name of calc-eval xref. + +2006-04-07 Reiner Steib + + * gnus.texi (Summary Buffer Lines): Add `*'. + +2006-04-07 Jochen K,A|(Bpper + + * gnus.texi (Group Parameters): + Mention gnus-permanently-visible-groups. + +2006-04-06 Katsumi Yamaoka + + * gnus.texi (Face): Fix typo. + +2006-04-05 Reiner Steib + + * gnus.texi (X-Face): Clarify. + (Face): Need Emacs with PNG support. + +2006-04-06 Richard Stallman + + * idlwave.texi: Delete the blocks "not suitable for inclusion with + Emacs". + +2006-04-06 J.D. Smith + + * idlwave.texi: Updated for IDLWAVE version 6.0, factoring out + blocks not suitable for inclusion with Emacs using variable + PARTOFEMACS. + +2006-04-04 Simon Josefsson + + * gnus.texi (Security): Improve. + +2006-04-02 Bill Wohler + + * mh-e.texi (Getting Started, Junk, Bug Reports) + (MH FAQ and Support): Fix URLs. + +2006-03-31 Romain Francoise + + * gnus.texi (Virtual Groups): `nnvirtual-always-rescan' defaults + to t, not nil (and has for the past eight years). + +2006-03-31 Reiner Steib + + * message.texi, gnus.texi: Bump version to 5.11. + +2006-03-29 Reiner Steib + + * gnus.texi (Top): Add comment about version line. + + * message.texi (Top): Ditto. Change to take named versions into + account. + +2006-03-28 Reiner Steib + + * gnus.texi (Posting Styles): Add x-face-file to example. + (X-Face): Refer to posting styles. + + * gnus-faq.texi ([5.8]): Add x-face-file. + ([8.4]): Add links to gmane.emacs.gnus.user and + gmane.emacs.gnus.general. + +2006-03-27 Reiner Steib + + * gnus-faq.texi: Use .invalid. + ([5.4]): Fix gnus-posting-styles example. + +2006-03-27 Romain Francoise + + * faq.texi (Emacs/W3): Rename from `w3-mode'. Mention that + Emacs/W3 needs a new maintainer. + (Ispell): Update author and version info. + (Mailcrypt): Mention PGG. + (New in Emacs 22): Add PGG to the list of new packages. + Include minor changes from "Ramprasad B" + updating dead URLs. + +2006-03-25 Karl Berry + + * ada-mode.texi, autotype.texi, calc.texi, cc-mode.texi, cl.texi, + * dired-x.texi, ebrowse.texi, ediff.texi, emacs-mime.texi, erc.texi, + * eshell.texi, eudc.texi, faq.texi, forms.texi, gnus.texi, idlwave.texi, + * info.texi, message.texi, mh-e.texi, pcl-cvs.texi, pgg.texi, + * rcirc.texi, reftex.texi, sc.texi, ses.texi, sieve.texi, + * speedbar.texi, url.texi, vip.texi, viper.texi, widget.texi, + * woman.texi: (1) use @copyright{} instead of (C) in typeset text; + (2) do not indent copyright year list (or anything else). + +2006-03-21 Bill Wohler + + * mh-e.texi (Folders): Various edits. + +2006-03-20 Romain Francoise + + * gnus.texi (Mail Folders): Grammar fix. + +2006-03-19 Bill Wohler + + * mh-e.texi (Replying): Document Mail-Followup-To. + Change manually-formatted table to multitable. Add debugging info. + Move description of mh-reply-default-reply-to into paragraph + that describes its values. + +2006-03-17 Bill Wohler + + * mh-e.texi: Use smallexample and smalllisp consistenly. + (Sending Mail Tour): Update method of entering + addresses and subject. + (Sending Mail Tour, Reading Mail Tour, Processing Mail Tour) + (Adding Attachments, Searching): Update screenshots for Emacs 22. + +2006-03-15 Carsten Dominik + + * org.texi: Version number change only. + +2006-03-14 Bill Wohler + + * mh-e.texi: Add index entries around each paragraph rather than + depend on entries from beginning of node. Doing so ensures that + index entries are less likely to be forgotten if text is cut and + pasted, and are necessary anyway if the references are on a + separate page. It seems that makeinfo is now (v. 4.8) only + producing one index entry per node, so there is no longer any + excuse not to. Use subheading instead of heading. The incorrect + use of heading produced very large fonts in Info--as large as the + main heading. + (From Bill Wohler): MH-E never did appear in Emacs 21--MH-E + versions 6 and 7 appeared *around* the time of these Emacs releases. + +2006-03-13 Carsten Dominik + + * org.texi (Clean view): Document new startup options. + +2006-03-11 Bill Wohler + + * mh-e.texi (Preface, More About MH-E, Options, HTML, Folders) + (Composing, Scan Line Formats): Fix @refs. + (Getting Started): Define MH profile and MH profile components. + (Incorporating Mail, Reading Mail, Viewing, Printing) + (Sending Mail, Forwarding, Editing Drafts, Inserting Letter) + (Signature, Aliases, Scan Line Formats): Use @code instead of @samp + for string constants. + (Tool Bar): Remove spurious quote. + (Junk): Use ``...'' instead of "...". + (Scan Line Formats): Replace @samp with @kbd. + +2006-03-10 Katsumi Yamaoka + + * gnus.texi (NoCeM): Mention gnus-use-nocem can also be a number. + +2006-03-10 Reiner Steib + + * gnus.texi (Fancy Mail Splitting): Improve sentences so as to be + easy to understand. + +2006-03-09 Katsumi Yamaoka + + * gnus.texi: Markup fix. + (Fancy Mail Splitting): Specify new feature. + +2006-03-08 Katsumi Yamaoka + + * gnus.texi (Fancy Mail Splitting): Improve descriptions about + partial-words matching. + +2006-03-07 Reiner Steib + + * emacs-mime.texi (Display Customization): Reword image/.* stuff. + + * gnus.texi (Oort Gnus): Add note about `gnus-load'. + (MIME Commands): Fix mm-discouraged-alternatives. + +2006-03-07 Carsten Dominik + + * org.texi: Version number change only. + +2006-03-06 Bill Wohler + + * mh-e.texi: Move from SourceForge repository to Savannah. + This is version 7.93, which is a total rewrite from the previous + edition 1.3 for MH-E version 5.0.2, and corresponds to MH-E + version 7.93. + +2006-03-03 Reiner Steib + + * gnus.texi (Oort Gnus): Add `mm-fill-flowed'. + +2006-03-01 Carsten Dominik + + * org.texi (Interaction): Add item about `org-mouse.el' by + Piotr Zielinski. + (Managing links): Document that also mouse-1 can be used to + activate a link. + (Headlines, FAQ): Add entry about hiding leading stars. + (Miscellaneous): Resort the sections in this chapter to a more + logical sequence. + +2006-02-27 Simon Josefsson + + * emacs-mime.texi (Flowed text): Add mm-fill-flowed. (Sync + 2004-01-27 from the trunk). + +2006-02-24 Alan Mackenzie + + * cc-mode.texi: Rename c-hungry-backspace to + c-hungry-delete-backwards, at the request of RMS. Leave the old + name as an alias. + +2006-02-24 Alan Mackenzie + + * cc-mode.texi: Correct the definition of c-beginning-of-defun, to + include the function header within the defun. + +2006-02-24 Alan Mackenzie + + * cc-mode.texi: Correct two typos. + +2006-02-24 Alan Mackenzie + + * cc-mode.texi (Comment Commands): State that C-u M-; kills any + existing comment. + (Electric Keys): Add a justification for electric indentation. + (Hungry WS Deletion): Clear up the names and complications of the + BACKSPACE and DELETE keys. + +2006-02-23 Juri Linkov + + * faq.texi (Common requests): Move `Turning on auto-fill by + default' after `Wrapping words automatically'. Move `Working with + unprintable characters' before `Searching for/replacing newlines'. + Move `Replacing highlighted text' after `Highlighting a region'. + Merge `Repeating commands' and `Repeating a command as many times + as possible' into the former. + (Packages that do not come with Emacs): Add refs to Gmane and + etc/MORE.STUFF. + +2006-02-23 Juri Linkov + + * faq.texi (Newsgroup archives): Update URLs of GNU mail archives. + (Reporting bugs): Suggest using `M-x report-emacs-bug'. + Add xref to `(emacs)Reporting Bugs'. + (Getting a printed manual): Add URL to other formats of the manual. + (Common requests): Fix menu. + (Highlighting a region): Remove ref to `Turning on syntax highlighting'. + (Horizontal scrolling): Mention `truncate-partial-width-windows'. + (Inserting text at the beginning of each line): Add pxref to + `Changing the included text prefix'. + (Forcing the cursor to remain in the same column): Mention `track-eol' + and `set-goal-column'. Add pxref to `(emacs)Moving Point'. + (Replacing text across multiple files): Add keybinding `Q' for + `dired-do-query-replace'. + +2006-02-22 Carsten Dominik + + * reftex.texi: Version number and date change only. + + * org.texi (Internal Links): Rewrite to cover the modified + linking system. + +2006-02-17 Eli Zaretskii + + * faq.texi: Remove the coding cookie, it's not needed anymore. + +2006-02-13 YAMAMOTO Mitsuharu + + * faq.texi (Colors on a TTY): Mention Mac OS port. + +2006-02-12 Karl Berry + + * faq.texi (Emacs for Atari ST): Use Sch@"auble instead of the + 8-bit accented a. + +2006-02-09 Reiner Steib + + * gnus.texi (Gnus Versions): Add history beyond start of Oort. + +2006-02-08 Romain Francoise + + * faq.texi (Top): Remove paragraph about the FAQ being a + transitional document, etc. + (Searching for/replacing newlines): New node. + (Yanking text in isearch): New node. + (Inserting text at the beginning of each line): Rename and make + more general, mention `M-;' in Message mode. + +2006-02-07 Luc Teirlinck + + * faq.texi (Meta key does not work in xterm) + (Emacs does not display 8-bit characters) + (Inputting eight-bit characters): Update xrefs. + +2006-02-06 Romain Francoise + + * faq.texi (VM): VM now at version 7.19. + Set myself as maintainer of this file. + +2006-02-04 Michael Olson + + * erc.texi (History): Note that ERC is now included with Emacs. + +2006-01-31 Romain Francoise + + * message.texi (Message Headers): Explain what + `message-alternative-emails' does in more detail. + Update copyright year. + +2006-01-30 Juanma Barranquero + + * makefile.w32-in (clean): Add newsticker, sieve, pgg, erc and rcirc. + +2006-01-29 Richard M. Stallman + + * cc-mode.texi (Indentation Commands): Inserts newline, not "linefeed". + +2006-01-29 Michael Olson + + * makefile.w32-in ($(infodir)/erc, erc.dvi): New targets. + + * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add ERC. + + * faq.texi (New in Emacs 22): Mention ERC. + +2006-01-28 Luc Teirlinck + + * rcirc.texi: Capitalize dir entry for consistency with the entry + in info/dir and other entries in the Emacs category. + Fix typos. Delete trailing whitespace. + +2006-01-28 Bj,Av(Brn Lindstr,Av(Bm + + * rcirc.texi: Some @cindex changes, some changes from @kbd to @key. + +2006-01-27 Eli Zaretskii + + * makefile.w32-in ($(infodir)/rcirc, rcirc.dvi): New targets. + (INFO_TARGETS, DVI_TARGETS): Add rcirc. + + * Makefile.in (../info/rcirc, rcirc.dvi): New targets. + (INFO_TARGETS, DVI_TARGETS): Add rcirc. + +2006-01-27 Alex Schroeder + + * rcirc.texi: New file. + +2006-01-23 Juri Linkov + + * widget.texi (User Interface): Add S-TAB for widget-backward. + +2006-01-22 Michael Albinus + + Sync with Tramp 2.0.52. + + * tramp.texi (Frequently Asked Questions): Remove Ange-FTP item. + Add Tramp disabling item. New item for common connection problems. + (various): Apply "ftp" as method for the download URL. + (Bug Reports): Refer to FAQ for common problems. + +2006-01-21 Eli Zaretskii + + * widget.texi (User Interface): Use @key for TAB. + + * ses.texi (Formulas, Printer functions): Use @key for TAB. + + * ebrowse.texi (Switching to Tree, Symbol Completion): Use @key + for TAB. + + * cc-mode.texi (Indentation Calculation): Use @key for TAB. + +2006-01-16 Katsumi Yamaoka + + * gnus.texi: Update copyright. + +2006-01-13 Katsumi Yamaoka + + * gnus.texi (Article Washing): Additions. + +2006-01-08 Alex Schroeder + + * pgg.texi (Caching passphrase): Rewording. + +2006-01-13 Carsten Dominik + + * org.texi (Agenda commands): Document tags command. + +2006-01-10 Katsumi Yamaoka + + * gnus.texi (RSS): Document nnrss-wash-html-in-text-plain-parts. + +2006-01-06 Katsumi Yamaoka + + * gnus.texi (RSS): Addition. + +2005-12-22 Katsumi Yamaoka + + * gnus.texi (Summary Post Commands): Fix function bound to `S O p'. + +2005-12-19 Katsumi Yamaoka + + * emacs-mime.texi (Display Customization): Add setting example to + mm-discouraged-alternatives. + +2006-01-09 Stefan Monnier + + * flymake.texi (Obtaining Flymake): Remove chapter since Emacs's + version is the canonical version. + +2006-01-08 Alex Schroeder + + * pgg.texi (Caching passphrase): Rewording. + +2006-01-06 Eli Zaretskii + + * flymake.texi (Obtaining Flymake): Update Flymake's CVS + repository URL. + +2006-01-06 Carsten Dominik + + * org.texi: Removed the accidentally re-added empty line in the + direntry. + +2006-01-05 Carsten Dominik + + * org.texi (Agenda Views): Chapter reorganized. + +2005-12-29 Romain Francoise + + * faq.texi (Using Customize): New node. + +2005-12-28 Luc Teirlinck + + * org.texi: Remove blank line in @direntry. It is non-standard + and recursively produces blank lines all over the dir file (when + using Texinfo 4.8). + +2005-12-21 Luc Teirlinck + + * widget.texi (atoms): Delete obsolete remark about `file' widget. + +2005-12-20 Carsten Dominik + + * org.texi (Tags): Boolean logic documented. + (Agenda Views): Document custom commands. + +2005-12-20 David Kastrup + + * faq.texi (AUCTeX): Update version and mailing list info. + +2005-12-17 Katsumi Yamaoka + + * gnus.texi (MIME Commands): Mention addition of + multipart/alternative to gnus-buttonized-mime-types and add xref + to mm-discouraged-alternatives. + + * emacs-mime.texi (Display Customization): Mention addition of + "image/.*" and add xref to gnus-buttonized-mime-types in the + mm-discouraged-alternatives section. + +2005-12-16 Carsten Dominik + + * org.texi (Tags): New section. + (Agenda Views): Chapter reorganized. + +2005-12-16 Eli Zaretskii + + * org.texi (Internal Links): Add a missing comma after an @xref. + +2005-12-14 Chong Yidong + + * faq.texi (Filling paragraphs with a single space): No need to + change sentence-end now. + +2005-12-13 Romain Francoise + + * faq.texi (Scrolling only one line): Use `scroll-conservatively'. + +2005-12-12 Jay Belanger + + * faq.texi (Calc): Update version number. + +2005-12-12 Carsten Dominik + + * org.texi (Progress Logging): New section. + +2005-12-10 Romain Francoise + + Update the Emacs FAQ for the 22.1 release. + + * faq.texi: Set VER to `22.1'. + (Basic editing): Explain how to use localized versions of the + Tutorial. Mention that `C-h r' displays the manual. Delete + obsolete WWW link to an Emacs 18 tutorial. + (Getting a printed manual): Point to the new locations of the + manuals on the GNU Web site. + (Emacs Lisp documentation): Explain that the Emacs Lisp manual is + available via Info (it was previously distributed separately). + (Installing Texinfo documentation): The latest version of Texinfo + is 4.8, not 4.0. + (Informational files for Emacs): COPYING is the GNU General Public + License, not the Emacs General Public License. + (Informational files for Emacs): Delete obsolete link to the + GNUinfo pages as they have been removed from the GNU Web site. + (New in Emacs 22): New node. + (Setting up a customization file): Say that most packages support + Customize nowadays. + (Colors on a TTY): Delete reference to instructions on how to + enable syntax highlighting, it is now enabled by default. + (Turning on abbrevs by default): Emacs now reads the abbrevs file + at startup automatically. + (Controlling case sensitivity): Mention `M-c' in isearch. + (Using an already running Emacs process): Emacs now creates the + socket in `/tmp/emacsUID'. Fix typos. Change default location of + gnuserv. As emacsclient can now run Lisp code as well, delete a + sentence praising gnuserv for that. Simplify description of how + the client/server operation works. + (Compiler error messages): Delete obsolete text (compile.el has + been rewritten). + (Indenting switch statements): Fix typo. + (Matching parentheses): Simplify setup instructions, mention the + menu bar item in the Options menu. + (Repeating a command as many times as possible): Mention `C-x e'. + (Going to a line by number): Mention new keymap and bindings + `M-g M-g', `M-g M-p' and `M-g M-n'. + (Turning on syntax highlighting): Now on by default. Simplify. + (Replacing highlighted text): Use `1', not `t'. + (Problems with very large files): The maximum size is now 256MB on + 32-bit machines. + (^M in the shell buffer): Mention `comint-process-echoes'. + (Emacs for Apple computers): Emacs 22 has native support for Mac + OS X. + (Translating names to IP addresses): Delete node. + (Binding keys to commands): Fix typo. + (SPC no longer completes file names): New node. + (MIME with Emacs mail packages): Delete section about the Emacs + MIME FAQ (it's not reachable anymore). + +2005-12-08 Alan Mackenzie + + * cc-mode.texi: The manual has been extensively revised: the + information about using CC Mode has been separated from the larger + and more difficult chapters about configuration. It has been + updated for CC Mode 5.31. + +2005-12-05 Katsumi Yamaoka + + * pgg.texi (User Commands): Fix description of pgg-verify-region. + (Selecting an implementation): Fix descriptions. + +2005-11-30 Katsumi Yamaoka + + * message.texi (Various Message Variables): Addition. + +2005-11-29 Katsumi Yamaoka + + * message.texi: Fix default values. + +2005-11-25 Katsumi Yamaoka + + * message.texi (Header Commands): Clarify descriptions of + message-cross-post-followup-to, message-reduce-to-to-cc, and + message-insert-wide-reply. + (Various Commands): Fix kindex for message-kill-to-signature; + clarify description of message-tab. + +2005-11-22 Katsumi Yamaoka + + * message.texi (Mailing Lists): Fix description about MFT. + + * gnus.texi (Emacs Lisp): Use ~/.gnus.el instead of ~/.emacs. + +2005-11-17 Katsumi Yamaoka + + * gnus.texi (Slow Terminal Connection): Replace old description + with new one. + +2005-11-16 Katsumi Yamaoka + + * gnus.texi (Oort Gnus): Use ~/.gnus.el instead of ~/.emacs; + replace X-Draft-Headers with X-Draft-From. + +2005-11-14 Katsumi Yamaoka + + * gnus.texi (Various Various): Fix the default value of + nnheader-max-head-length. + (Gnus Versions): Fix typo. + +2005-12-08 Carsten Dominik + + * org.texi (Structure editing): Document new functionality of + M-RET. + +2005-12-06 Luc Teirlinck + + * org.texi (Internal Links): Fix Texinfo usage. + +2005-12-06 Carsten Dominik + + * org.texi (TODO basics): Document the global todo list. + (TODO items): Documents sparse tree for specific TODO + keywords. + +2005-11-30 Carsten Dominik + + * org.texi (Plain Lists): Typos fixed. + +2005-11-28 Jay Belanger + + * calc.texi: Change references of `M-#' to `C-x *' prefix. + +2005-11-24 Carsten Dominik + + * org.texi (Structure editing): New item moving commands added. + (Plain Lists): New section. + +2005-11-18 Carsten Dominik + + * org.texi (FAQ): Document `org-table-tab-jumps-over-hlines'. + (Agenda): Document commands `org-cycle-agenda-files' and + `org-agenda-file-to-front' + (Built-in table editor): Document `org-table-sort-lines'. + (HTML formatting): Export of hand-formatted lists. + +2005-11-10 Katsumi Yamaoka + + * gnus.texi (XVarious): Fix description of gnus-use-toolbar; add + new variable gnus-toolbar-thickness. + +2005-11-08 Katsumi Yamaoka + + * gnus.texi (XVarious): Revert description of gnus-use-toolbar. + +2005-11-07 Katsumi Yamaoka + + * gnus.texi (X-Face): Fix description. + (XVarious): Remove gnus-xmas-logo-color-alist and + gnus-xmas-logo-color-style; fix description of gnus-use-toolbar. + +2005-11-01 Katsumi Yamaoka + + * gnus.texi (Group Parameters): Mention new variable + gnus-parameters-case-fold-search. + (Home Score File): Addition. + +2005-11-04 Ulf Jasper + + * newsticker.texi: VERSION changed to 1.9. Updated UPDATED. + (Overview): List supported feed types. + (Installation): No installation necessary when using autoload. + (Configuration): Rename "RSS" to "news". + +2005-11-04 Ken Manheimer + + * pgg.texi (User Commands): Document additional passphrase + argument for pgg-encrypt-*, pgg-decrypt-*, and pgg-sign-* functions. + (Backend methods): Likewise for corresponding pgg-scheme-* functions. + +2005-11-04 Carsten Dominik + + * org.texi: Version number changed to 3.19. + +2005-10-29 Sascha Wilde + + * pgg.texi (How to use): Update the example to add autoload of + pgg-encrypt-symmetric-region. + (User Commands): Document pgg-encrypt-symmetric-region. + (Backend methods): Document pgg-scheme-encrypt-symmetric-region. + +2005-10-27 Jay Belanger + + * calc.texi (Predefined Units): Fix the symbol for a TeX points, + mention other TeX-related units. + +2005-10-23 Lars Hansen + + * dired-x.texi (Miscellaneous Commands): Replace + dired-do-relative-symlink by dired-do-relsymlink and + dired-do-relative-symlink-regexp by dired-do-relsymlink-regexp. + +2005-10-23 Jay Belanger + + * calc.texi (Predefined Units): Use `alpha' for the fine structure + constant. + +2005-10-23 Michael Albinus + + * faq.texi (Bugs and problems): Replace + `dired-move-to-filename-regexp' by + `directory-listing-before-filename-regexp'. + +2005-10-22 Eli Zaretskii + + * newsticker.texi (UPDATED): Set value. + +2005-10-17 Katsumi Yamaoka + + * gnus.texi (Document Groups): Remove duplicate item. + +2005-10-21 Carsten Dominik + + * org.texi (Summary): Mention iCalendar support. + (Exporting): Document iCalendar support. + +2005-10-18 Romain Francoise + + * viper.texi (Viper Specials): Capitalize GNU. + +2005-10-17 Juri Linkov + + * info.texi (Getting Started, Search Index, Expert Info): + Fix wording. + (Search Text): Replace `echo area' with `mode line'. + (Search Index): Both `i' and `,' find all index entries. + Replace example `C-f' with `C-l' (which exists in index of Info + manual) and delete spaces in its keyboard input sequence. + Delete unnecessary explanations about literal characters. + +2005-10-14 Katsumi Yamaoka + + * gnus.texi (Document Server Internals): Addition. + +2005-10-13 Katsumi Yamaoka + + * gnus.texi (A note on namespaces): Fix RFC reference. + +2005-10-12 Katsumi Yamaoka + + * gnus.texi (RSS): Fix key description. + +2005-10-11 Katsumi Yamaoka + + * gnus.texi: Emacs/w3 -> Emacs/W3. + (Browsing the Web): Fix description. + (Web Searches): Ditto. + (Customizing W3): Ditto. + +2005-10-07 Katsumi Yamaoka + + * gnus.texi (Maildir): Clarify expire-age and expire-group. + +2005-10-11 Jay Belanger + + * calc.texi (Integration): Mention using `a i' to compute definite + integrals. + +2005-10-11 Juri Linkov + + * info.texi: Rearrange nodes. + (Top): Update menu. Change ref `Info for Experts' to + `Advanced Info Commands'. + (Getting Started): Fix description of manual's parts. + (Help-Int): Change xref `Info Search' to `Search Index', and + `Expert Info' to `Advanced'. + (Advanced): Move node one level up. + (Search Text, Search Index): New nodes split out from `Info Search'. + (Go to node, Choose menu subtopic, Create Info buffer): New nodes + split out from `Advanced'. + (Advanced, Emacs Info Variables): De-document editing an Info file + in Info. + (Emacs Info Variables): Move node from `Expert Info' to `Advanced'. + (Creating an Info File): Delete node and move its text to + `Expert Info'. + +2005-10-10 Carsten Dominik + + * org.texi (Workflow states): Documented that change in keywords + becomes active only after restart of Emacs. + +2005-10-08 Michael Albinus + + Sync with Tramp 2.0.51. + +2005-10-08 Nick Roberts + + * speedbar.texi (Introduction): Describe new location of speedbar + on menubar. + (Basic Key Bindings): Remove descriptions of bindings that have + been removed. + +2005-10-05 Nick Roberts + + * speedbar.texi (GDB): Describe use of watch expressions. + +2005-09-28 Simon Josefsson + + * message.texi (IDNA): Fix. + +2005-09-28 Katsumi Yamaoka + + * gnus.texi (NNTP): Remove nntp-buggy-select, nntp-read-timeout, + nntp-server-hook, and nntp-warn-about-losing-connection; fix + description of nntp-open-connection-function. + (Common Variables): Fix descriptions. + +2005-09-26 Katsumi Yamaoka + + * gnus.texi (Server Buffer Format): Document the %a format spec. + +2005-09-22 Katsumi Yamaoka + + * gnus.texi (Mail): Fix gnus-confirm-mail-reply-to-news entry. + +2005-09-23 Carsten Dominik + + * org.texi Version 3.16. + +2005-09-19 Miles Bader + + * newsticker.texi: Get rid of CVS keywords. + +2005-09-15 Katsumi Yamaoka + + * gnus.texi (Finding the Parent): Fix description of how Gnus + finds article. + +2005-09-14 Jari Aalto + + * gnus.texi (Advanced Scoring Examples): New examples to teach how + to drop off non-answered articles. + +2005-09-19 Juanma Barranquero + + * makefile.w32-in (newsticker.dvi): Use parentheses instead of curly + braces (which are unsupported by NMAKE) for macro `srcdir'. + +2005-09-17 Eli Zaretskii + + * makefile.w32-in (INFO_TARGETS, DVI_TARGETS): Add newsticker targets. + (../info/newsticker, newsticker.dvi): New targets. + +2005-09-17 Ulf Jasper + + * newsticker.texi: Replace @command with @code. Replace @example + with @lisp. + (Top): Added explanations to menu items. + (GNU Free Documentation License): Removed. + +2005-09-16 Romain Francoise + + Update all files to specify GFDL version 1.2. + + * doclicense.texi (GNU Free Documentation License): Update to + version 1.2. + +2005-09-15 Richard M. Stallman + + * newsticker.texi: Fix @setfilename. + + * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add newsticker targets. + (../info/newsticker, newsticker.dvi): New targets. + +2005-08-30 Carsten Dominik + + * org.texi: Version 3.15. + +2005-08-29 Luc Teirlinck + + * ses.texi: Combine all three indices into one. + Correct a few typos. + +2005-08-19 Katsumi Yamaoka + + * emacs-mime.texi (time-date): Fix description of safe-date-to-time. + +2005-08-18 Katsumi Yamaoka + + * emacs-mime.texi (Handles): Remove duplicate item. + (Encoding Customization): Fix the default value for + mm-coding-system-priorities. + (Charset Translation): Emacs doesn't use mm-mime-mule-charset-alist. + (Basic Functions): Fix reference. + +2005-08-09 Katsumi Yamaoka + + * gnus.texi (Charsets): Fj hierarchy uses iso-2022-jp. + +2005-08-18 Richard M. Stallman + + * faq.texi (Obtaining the FAQ): Delete refs to Lerner's email + and web site. + + * faq.texi (Swapping keys): Xref for normal-erase-is-backspace-mode, + not keyboard-translate. + +2005-08-11 Richard M. Stallman + + * faq.texi (Using regular expressions): Fix xref. + +2005-08-09 Juri Linkov + + * info.texi (Help-P): Replace `Prev' with `Previous'. + (Help-M, Help-Xref): Add S-TAB. + (Help-FOO): Update `u' command. + (Help-Xref): Move info about Mouse-2 from `Help-Int'. + Update info about visibility of xref parts. + (Help-Int): Fix `m' command. Rename `Info-last' to + `Info-history-back'. Add `Info-history-forward'. + (Advanced): Fix `g*' and `M-n' commands. + (Info Search): Add `index-apropos' in stand-alone browser. + Add isearch commands. + (Emacs Info Variables): Remove `Info-fontify'. + Add `Info-mode-hook'. Update face names. + Add `Info-fontify-maximum-menu-size', + `Info-fontify-visited-nodes', `Info-isearch-search'. + +2005-08-07 Michael Albinus + + Sync with Tramp 2.0.50. + + * tramp.texi: Use @option{} consequently for method names. + (Inline methods, External transfer methods): Remove references to + Cygwin. + (Issues with Cygwin ssh): Explain trouble with Cygwin's ssh + implementation. + +2005-07-27 Reiner Steib + + * gnus.texi (Startup Files): Fix name of gnus-site-init-file. + Mention that gnus-init-file is not read when Emacs is invoked with + --no-init-file or -q. + +2005-07-19 Carsten Dominik + + * org.texi: Version 3.14. + +2005-07-04 Carsten Dominik + + * org.texi: Version 3.13. + +2005-07-18 Juri Linkov + + * calc.texi (Time Zones, Logical Operations): + * cl.texi (Overview): + * org.texi (TODO types): + * sc.texi (Emacs 18 MUAs): + * speedbar.texi (Top): + * url.texi (History): + Delete duplicate duplicate words. + +2005-07-16 Johan Bockgard (tiny change) + + * cl.texi (Type Predicates): Document `atom' type. + +2005-07-04 Lute Kamstra + + Update FSF's address in GPL notices. + + * calc.texi (Copying): + * doclicense.texi (GNU Free Documentation License): + * faq.texi (Contacting the FSF): + * mh-e.texi (Copying): Update FSF's address. + +2005-07-03 Richard M. Stallman + + * flymake.texi (Example -- Configuring a tool called directly): + Update name of flymake-build-relative-filename. + +2005-06-29 Katsumi Yamaoka + + * gnus.texi (NoCeM): gnus-nocem-verifyer defaults to pgg-verify. + +2005-06-29 Carsten Dominik + + * org.texi: Version 3.12. + +2005-06-24 Eli Zaretskii + + * makefile.w32-in (MAKEINFO): Use --force. + (INFO_TARGETS, DVI_TARGETS): Make identical to the lists in + Makefile.in. + (gnus.dvi): Use "..." to quote Sed args, so that it works with + more shells. + +2005-06-23 Richard M. Stallman + + * speedbar.texi (Creating a display): Texinfo usage fixes. + + * tramp.texi (Customizing Completion, Auto-save and Backup): + Texinfo usage fixes. + +2005-06-23 Juanma Barranquero + + * dired-x.texi (Miscellaneous Commands): + * ediff.texi (Miscellaneous): + * gnus.texi (MIME Commands, Fancy Mail Splitting, Agent Visuals) + (Agent Variables): + * info.texi (Help-Xref): + * message.texi (Message Headers): + * org.texi (Remember): + * reftex.texi (Options (Defining Label Environments)): + (Options (Index Support)): + (Options (Viewing Cross-References)): + (Options (Misc)): + (Changes): + * speedbar.texi (Creating a display): + * tramp.texi (Customizing Completion, Auto-save and Backup): + Texinfo usage fix. + +2005-06-13 Carsten Dominik + + * org.texi: Version 3.11. + +2005-06-12 Jay Belanger + + * calc.texi (Getting Started): Remove extra menu item. + +2005-05-31 Jay Belanger + + * calc.texi (Notations Used in This Manual): Use @kbd for key + sequence. + (Demonstration of Calc): Mention another way of starting Calc. + (Starting Calc): Mention long name of M-#. + (Embedded Mode Overview): Remove unnecessary instruction. + (Other M-# commands): Rephrase `M-# 0' explanation. + (Basic Embedded Mode): Rewrite discussion of prefix arguments to + reflect current behavior. + +2005-05-30 Jay Belanger + + * calc.texi (Hooks): Change description of calc-window-hook and + calc-trail-window-hook to match usage. + (Computational Functions): Add more constant-generating functions. + (Customizable Variables): Use defvar. + +2005-05-28 Jay Belanger + + * calc.texi (Assignments in Embedded Mode): Fix variable name. + (Basic Embedded Mode): Explain behavior of arguments to + calc-embedded-mode. + +2005-05-27 Jay Belanger + + * calc.texi (Queries in Keyboard Macros): Rewrite to reflect + current behavior. + +2005-05-25 Jay Belanger + + * calc.texi: Change Calc version number throughout. + (Keypad Mode): Change location in info output. + (Keypad mode overview): Move picture of keypad. + +2005-05-21 Jay Belanger + + * calc.texi (Storing variables): Mention that only most variables + are void to begin with. + +2005-05-21 Kevin Ryde + + * widget.texi (Basic Types): Update cross ref from "Enabling + Mouse-1 to Follow Links" to "Links and Mouse-1" per recent + lispref/text.texi change. + +2005-05-20 Carsten Dominik + + * org.texi: Version 3.09. + +2005-05-18 Carsten Dominik + + * reftex.texi: Version 4.28. + +2005-05-16 Jay Belanger + + * calc.texi (Storing Variables): Mention `calc-copy-special-constant'. + +2005-05-14 Jay Belanger + + * calc.texi (Default Simplifications): Insert missing ! (logical + not operator). + +2005-05-14 Michael Albinus + + Sync with Tramp 2.0.49. + +2005-05-10 Jay Belanger + + * calc.texi (Default Simplifications): Mention that 0^0 simplifies + to 1. + +2005-04-29 Carsten Dominik + + * org.texi: Version 3.08, structure reorganized. + +2005-04-24 Richard M. Stallman + + * faq.texi: Delete info about lazy-lock.el and fast-lock.el. + +2005-04-15 Carsten Dominik + + * org.texi: Update to version 3.06. + +2005-04-13 Lute Kamstra + + * cc-mode.texi: Prevent creating an unnecessary empty cc-mode.ss file. + +2005-04-10 Thien-Thi Nguyen + + * cl.texi (Porting Common Lisp): Fix typo. + +2005-04-06 Katsumi Yamaoka + + * gnus.texi (RSS): Addition. + +2005-04-04 Jay Belanger + + * calc.texi: Change Calc version number. + (Customizable variables): Fix description of calc-language-alist. + (Copying): Put in version 2 of GPL. + +2005-04-01 Jay Belanger + + * calc.texi (Troubleshooting Commands): Remove comment about + installation. + (Installation): Remove section. + (Customizable Variables): New section. + (Basic Embedded Mode, Customizing Embedded Mode, Graphics) + (Graphical Devices): Add references to Customizable Variables. + +2005-03-25 Katsumi Yamaoka + + * emacs-mime.texi (Display Customization): Markup fixes. + (rfc2047): Update. + +2005-03-23 Reiner Steib + + * gnus-faq.texi: Replaced with auto-generated version. + +2005-03-26 Stephan Stahl (tiny change) + + * dired-x.texi (Multiple Dired Directories): default-directory was + renamed to dired-default-directory. + +2005-03-26 Jay Belanger + + * calc.texi (Simplifying Formulas, Rewrite Rules): + Change description of top and bottom of fraction. + (Modulo Forms): Move description of how to create modulo forms to + earlier in the section. + (Fraction Mode): Suggest using : to get a fraction by dividing. + (Basic Arithmetic): Adjust placement of command name. + (Truncating the Stack): Emphasize that "hidden" entries are still + visible. + (Installation): Move discussion of printing manual to "About This + Manual". + (About This Manual): Mention how to print the manual. + (Reporting Bugs): Remove first person. + (Building Vectors): Add algebraic version of append. + (Manipulating Vectors): Fix algebraic version of calc-reverse-vector. + (Grouping Digits): Fix typo. + +2005-03-25 Werner Lemberg + + * calc.texi, cl.texi, gnus.texi, idlwave.texi, reftex.texi: + Replace `legal' with `valid'. + +2005-03-25 Werner Lemberg + + * calc.texi, reftex.texi: Replace `illegal' with `invalid'. + +2005-03-24 Jay Belanger + + * calc.texi (General Mode Commands) + (Mode Settings in Embedded Mode): Add some explanation of + recording mode settings. + +2005-03-24 Richard M. Stallman + + * calc.texi: Remove praise of non-free software. + + * idlwave.texi: Don't say where to get IDL or its non-free manual. + (Installation): Node deleted. + +2005-03-23 Richard M. Stallman + + * url.texi (HTTP language/coding): Improve last change. + +2005-03-22 Jay Belanger + + * calc.texi (Embedded Mode): Add new information on changing + modes. + +2005-03-20 Michael Albinus + + Sync with Tramp 2.0.48. + + * trampver.texi.in: Replace "Emacs" by "GNU Emacs". + + * tramp.texi: Replace "Emacs" by "GNU Emacs". Replace "Linux" by + "GNU/Linux". Change all addresses to .gnu.org. + (Default Method): Offer shortened syntax for "su" and "sudo" + methods. + +2005-03-07 Richard M. Stallman + + * url.texi: Fix usage of "e.g.". + (HTTP language/coding): Explain the rules for these strings. + +2005-03-06 Richard M. Stallman + + * woman.texi (Introduction): Minor cleanups. + + * url.texi (HTTP language/coding): Get rid of "Emacs 21". + + * pcl-cvs.texi (About PCL-CVS): Get rid of "Emacs 21". + (Installation): Node deleted. + + * mh-e.texi (Preface): Get rid of "Emacs 21". + + * eshell.texi (Installation): Delete node (for Emacs 20). + +2005-03-05 Thien-Thi Nguyen + + * flymake.texi: Refill and tweak style in @lisp blocks. + +2005-03-03 Reiner Steib + + * gnus.texi (Slow/Expensive Connection): Don't abbreviate "very". + +2005-03-01 Jay Belanger + + * calc.texi (Trigonometric and Hyperbolic Functions): + Mention additional functions. + (Algebraic Simplifications): Mention additional simplifications. + +2005-02-18 Jonathan Yavner + + * ses.texi: Add concept/function/variable indices (this work was + donated by Brad Collins , copyright-assignment + papers on file at FSF). + +2005-02-10 Jay Belanger + + * calc.texi: Change @LaTeX to La@TeX throughout. + Redefine @expr as @math for TeX output. + Redefine @texline as a no-op for TeX output. + Define @tfn, replace @t by @tfn throughout. + +2005-02-09 Jay Belanger + + * calc.texi: Add macro for LaTeX for info output. + +2005-02-08 Kim F. Storm + + * texinfo.tex (LaTex): Add def. + +2005-02-06 Jay Belanger + + * calc.texi (TeX Language Mode): Add mention of LaTeX mode, and + change name to "TeX and LaTeX Language Modes." Mention LaTeX mode + throughout manual. + +2005-01-28 Lars Magne Ingebrigtsen + + * gnus.texi: Some edits based on comments from David Abrahams. + +2005-01-24 Katsumi Yamaoka + + * gnus.texi (RSS): Fix the keystroke. + +2005-01-24 David Kastrup + + * faq.texi: Update AUCTeX version info. + +2005-01-16 Xavier Maillard (tiny change) + + * gnus-faq.texi ([4.1]): Typo. + +2005-01-19 Jay Belanger + + * calc.texi (Keep Arguments): Mention that keeping arguments + doesn't work with keyboard macros. + +2005-01-16 Richard M. Stallman + + * autotype.texi (Autoinserting): Fix small error. + +2005-01-16 Michael Albinus + + Sync with Tramp 2.0.47. + + * tramp.texi (Compilation): New section, describing compilation of + remote files. + +2005-01-11 Kim F. Storm + + * widget.texi (Basic Types): Add :follow-link keyword. + +2005-01-09 Jay Belanger + + * calc.texi (Basic Commands): Describe new behavior of calc-reset. + +2005-01-08 Jay Belanger + + * calc.texi: Change throughout to reflect new default value of + calc-settings-file. + +2005-01-06 Katsumi Yamaoka + + * message.texi (Reply): `message-reply-to-function' should return + a list. Suggested by ARISAWA Akihiro . + +2005-01-06 Hiroshi Fujishima (tiny change) + + * faq.texi (Changing load-path): Fix typo. + +2005-01-05 Jay Belanger + + * calc.texi (Programming Tutorial): Replace kbd command by + appropriate characters for a keyboard macro. + +2005-01-04 Jay Belanger + + * calc.texi (Basic Tutorial, Programming Tutorial): Remove caveats + for Lucid Emacs. + (Programming Tutorial): Mention that the user needs to be in the + right mode to compute some functions. + +2005-01-04 Jay Belanger + + * calc.texi (Rewrite rules): Remove an exercise (on 0^0) which is + no longer applicable. + +2005-01-01 Jay Belanger + + * calc.texi (Programming Tutorial): Changed description of how to + edit keyboard macros to match current behavior. + +2004-12-31 Jay Belanger + + * calc.texi: Mention C-cC-c as the way to finish editing throughout. + +2004-12-20 Jay Belanger + + * calc.texi (Types Tutorial): Emphasize that you can't divide by + zero. + +2004-12-17 Luc Teirlinck + + * cc-mode.texi (Text Filling and Line Breaking): Put period after + @xref. + (Font Locking): Avoid @strong{Note:}. + +2004-12-17 Michael Albinus + + Sync with Tramp 2.0.46. + + * tramp.texi (bottom): Add arch-tag. It was lost, somehow. + +2004-12-16 Luc Teirlinck + + * url.texi: Correct typos. + (Retrieving URLs): @var{nil}->@code{nil}. + (HTTP language/coding, mailto): Replace "GNU Emacs Manual" with + the standard "The GNU Emacs Manual" in fifth argument of @xref's. + (Dealing with HTTP documents): @inforef->@xref. + +2004-12-15 Jay Belanger + + * calc.texi: Consistently capitalized all mode names. + (Answers to Exercises): Mention that an answer can be a fraction + when in Fraction mode. + +2004-12-13 Jay Belanger + + * calc.texi: Fix some TeX definitions. + +2004-12-09 Luc Teirlinck + + * reftex.texi (Imprint): Remove erroneous @value's. + +2004-12-08 Luc Teirlinck + + * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, $(infodir)/org) + (org.dvi, $(infodir)/url, url.dvi, clean): Add org and url manuals. + +2004-12-08 Jay Belanger + + * calc.texi (Starting Calc): Remove comment about installation. + (Keypad Mode Overview): Remove comment about Emacs 19 support. + +2004-12-08 Luc Teirlinck + + * url.texi: Update @setfilename. + (Getting Started): No need to worry about Gnus versions. + (Dealing with HTTP documents): Use @inforef. + + * org.texi: Fix @direntry file name. + +2004-12-07 Stefan Monnier + + * url.texi: New file. + + * Makefile.in (INFO_TARGETS, DVI_TARGETS, ../info/url, url.dvi): Add it. + +2004-12-06 Jay Belanger + + * calc.texi (Using Calc): Remove paragraph about installation. + +2004-12-06 Jay Belanger + + * calc.texi: Use more Texinfo macros and less TeX defs. + Remove @refill's. + +2004-12-06 Richard M. Stallman + + * org.texi: New file. + +2004-12-05 Richard M. Stallman + + * Makefile.in (org.dvi, ../info/org): New targets. + (INFO_TARGETS): Add ../info/org. + (DVI_TARGETS): Add org.dvi. + (maintainer-clean): Remove the info files in the info dir. + +2004-11-26 Eli Zaretskii + + * idlwave.texi: Fix the setfilename directive to put the produced + file in ../info. + (Continued Statement Indentation): Resurrect Jan D.'s change from + 2004-11-03 that was lost when a newer version of idlwave.texi was + imported. + +2004-12-08 Reiner Steib + + * gnus-faq.texi ([5.1]): Added missing bracket. + + * gnus.texi (Filtering Spam Using The Spam ELisp Package): Index + `spam-initialize'. + +2004-11-22 Reiner Steib + + * message.texi (Various Message Variables): Mention that all mail + file variables are derived from `message-directory'. + + * gnus.texi (Splitting Mail): Clarify bogus group. + +2004-11-02 Katsumi Yamaoka + + * emacs-mime.texi (Encoding Customization): Fix + mm-coding-system-priorities entry. + +2004-11-03 Jan Dj,Ad(Brv + + * idlwave.texi (Continued Statement Indentation): + * reftex.texi (Options (Index Support)): + (Displaying and Editing the Index, Table of Contents): + * speedbar.texi (Creating a display, Major Display Modes): Replace + non-nil with non-@code{nil}. + +2004-10-21 Jay Belanger + + * calc.texi (Algebraic-Style Calculations): Removed a comment. + +2004-10-18 Luc Teirlinck + + * calc.texi (Reporting Bugs): Double up `@'. + +2004-10-18 Jay Belanger + + * calc.texi (Reporting Bugs): Changed the address that bugs + should be sent to. + +2004-10-15 Reiner Steib + + * gnus.texi (New Features): Add 5.11. + + * message.texi (Resending): Remove wrong default value. + + * gnus.texi (Mail Source Specifiers): Describe possible problems + of `pop3-leave-mail-on-server'. Add `pop3-movemail' and + `pop3-leave-mail-on-server' to the index. + +2004-10-15 Katsumi Yamaoka + + * message.texi (Canceling News): Add how to set a password. + +2004-10-12 Jay Belanger + + * calc.texi (Help Commands): Changed the descriptions of + calc-describe-function and calc-describe-variable to match their + current behavior. + +2004-10-12 Reiner Steib + + * gnus-faq.texi ([5.9]): Improve code for reply-in-news. + +2004-10-12 Michael Albinus + + Sync with Tramp 2.0.45. + + * tramp.texi (Frequently Asked Questions): Comment paragraph about + plink link. The URL is outdated. Originator contacted for + clarification. + +2004-10-10 Juri Linkov + + * gnus.texi (Top, Marking Articles): Join two menus in one node + because a node can have only one menu. + +2004-10-09 Juri Linkov + + * gnus.texi (Fancy Mail Splitting): Remove backslash in the + example of nnmail-split-fancy. + +2004-10-06 Karl Berry + + * info.texi (@kbd{1}--@kbd{9}): No space around --, for + consistency with other uses of dashes. + +2004-10-05 Karl Berry + + * info.texi: Consistently use --- throughout, periods at end of + menu descriptions, and a couple typos. + +2004-09-26 Jesper Harder + + * sieve.texi (Manage Sieve API): nil -> @code{nil}. + * pgg.texi (User Commands, Backend methods): Do. + * gnus.texi: Markup fixes. + (Setting Process Marks): Fix `M P a' entry. + * emacs-mime.texi: Fixes. + +2004-09-23 Reiner Steib + + * gnus-faq.texi ([5.12]): Fix code example for FQDN in Message-Ids + again. + Use 5.10 instead of 5.10.0. + +2004-09-20 Lars Magne Ingebrigtsen + + * gnus.texi (Summary Mail Commands): S D e. + +2004-09-20 Raymond Scholz (tiny change) + + * gnus.texi (Misc Article): Refer to `Summary Buffer Mode Line' in + the gnus-article-mode-line-format section. + +2004-09-20 Helmut Waitzmann (tiny change) + + * gnus.texi (Various Summary Stuff): Fix the documentation for + gnus-newsgroup-variables. + +2004-09-20 Reiner Steib + + * gnus.texi (MIME Commands): Added + gnus-mime-display-multipart-as-mixed, + gnus-mime-display-multipart-alternative-as-mixed, + gnus-mime-display-multipart-related-as-mixed. + (Mail Source Customization): Clarify `mail-source-directory'. + (Splitting Mail): Mention gnus-group-find-new-groups. + (SpamOracle): Fixed typo. + + * gnus-faq.texi: Untabify. + ([6.3]): nnir.el is in contrib directory. + + * message.texi (News Headers): Clarify how a unique ID is created. + + * gnus.texi (Batching Agents): Fixed typo in example. Reported + by Hiroshi Fujishima . + +2004-09-20 Andre Srinivasan + + * gnus.texi (Group Parameters): Added more on hooks. (Small + change.) + +2004-09-20 Florian Weimer + + * gnus.texi (Charsets): Point to relevant section in emacs-mime. + +2004-09-22 Jay Belanger + + * calc.texi (Vectors as Lists): Added a warning that the tutorial + might be hidden during part of the session. + +2004-09-20 Jay Belanger + + * calc.texi (Notations Used in This Manual): Put in an earlier + mention that DEL could be called Backspace. + +2004-09-10 Simon Josefsson + + * gnus.texi (IMAP): Add example. Suggested and partially written + by Steinar Bang . + +2004-09-10 Teodor Zlatanov + + * gnus.texi (IMAP): Add comments about imaps synonym to imap in + netrc syntax. + +2004-09-10 Teodor Zlatanov + + * gnus.texi (Spam ELisp Package Sequence of Events): Some clarifications. + (Spam ELisp Package Global Variables): More clarifications. + +2004-09-10 Teodor Zlatanov + + * gnus.texi (Spam ELisp Package Filtering of Incoming Mail): + Mention spam-split does not modify incoming mail. + +2004-09-10 Teodor Zlatanov + + * gnus.texi (Spam ELisp Package Sequence of Events): Fix typo. + +2004-09-10 Eli Zaretskii + + * Makefile.in (../info/gnus, gnus.dvi): Depend on gnus-faq.texi. + +2004-09-09 Reiner Steib + + * makefile.w32-in (sieve, pgg): Use $(infodir). + +2004-09-08 Dhruva Krishnamurthy (tiny change) + + * makefile.w32-in: Fix PGG and Sieve entries. + +2004-08-28 Eli Zaretskii + + * faq.texi (Emacs for MS-DOS): Update URLs for the MS-DOS port of + Emacs and related programs. + +2004-08-27 Richard M. Stallman + + * faq.texi: Fix texinfo usage, esp. doublequotes. + (Difference between Emacs and XEmacs): Some clarification. + + * faq.texi (Difference between Emacs and XEmacs): + Explain not to contrast XEmacs with GNU Emacs. + +2004-08-26 Richard M. Stallman + + * faq.texi (Difference between Emacs and XEmacs): Rewrite. + +2004-08-22 David Kastrup + + * reftex.texi (AUCTeX): Update links, section name. + + * faq.texi (Calc): Update availability (included in 22.1). + (AUCTeX): Update availability, information, versions, description. + +2004-08-14 Eli Zaretskii + + * Makefile.in (../info/tramp, tramp.dvi): Depend on trampver.texi. + +2004-08-11 Martin Stjernholm + + * cc-mode.texi: Various updates for CC Mode 5.30.9. + +2004-08-10 Michael Albinus + + Sync with Tramp 2.0.44. + +2004-08-05 Lars Hansen + + * widget.texi (User Interface): Update how to separate the + editable field of an editable-field widget from other widgets. + (Programming Example): Add text after field. + +2004-08-31 Katsumi Yamaoka + + * emacs-mime.texi (Encoding Customization): Add a note to the + mm-content-transfer-encoding-defaults entry. + (rfc2047): Update. + + * gnus.texi (Article Highlighting): Add + gnus-cite-ignore-quoted-from. + (POP before SMTP): New node. + (Posting Styles): Addition. + (Splitting Mail): Add nnmail-split-lowercase-expanded. + (Fancy Mail Splitting): Ditto. + (X-Face): Add gnus-x-face. + +2004-08-30 Reiner Steib + + * emacs-mime.texi, gnus-faq.texi, gnus.texi, message.texi, + * pgg.texi, sieve.texi: Use @copying and @insertcopying. + +2004-08-22 Reiner Steib + + * gnus.texi (Mail Source Specifiers): Describe + `pop3-leave-mail-on-server'. + +2004-08-02 Reiner Steib + + * Makefile.in, makefile.w32-in: Added PGG and Sieve files. + + * pgg.texi, sieve.texi: Import from the v5_10 branch of the Gnus + repository. Change setfilename. + + * emacs-mime.texi, gnus-faq.texi, gnus.texi, message.texi: Ditto. + +2004-07-02 Juri Linkov + + * pcl-cvs.texi (Viewing differences): Add `d r'. + +2004-06-29 Jesper Harder + + * ses.texi, viper.texi, flymake.texi, faq.texi: + * eshell.texi, ediff.texi: Markup fixes. + +2004-06-21 Karl Berry + + * info.texi (Top): Mention that only Emacs has mouse support. + (Getting Started): Mention this in a few other places. + +2004-06-13 Luc Teirlinck + + * autotype.texi (Copyrights, Timestamps): Recommend + `before-save-hook' instead of `write-file-functions'. + +2004-06-13 Lars Hansen + + * dired-x.texi (dired-mark-omitted): Update keybinding. + +2004-06-10 Kim F. Storm + + * pcl-cvs.texi (Viewing differences): Add 'd y'. + +2004-06-05 Lars Hansen + + * dired-x.texi (variable dired-omit-mode): Rename from + dired-omit-files-p. + (function dired-omit-mode): Rename from dired-omit-toggle. + Call dired-omit-mode rather than set dired-omit-files-p. + (dired-mark-omitted): Describe command. + +2004-05-29 Michael Albinus + + Version 2.0.41 of Tramp released. + +2004-05-29 Juanma Barranquero + + * makefile.w32-in (../info/flymake, flymake.dvi): New targets. + (INFO_TARGETS, DVI_TARGETS): Add Flymake. + +2004-05-29 Richard M. Stallman + + * cl.texi (Top): Call this chapter `Introduction'. + (Overview): In TeX, no section heading here. + + * cc-mode.texi: Put commas after i.e. and e.g. Minor cleanups. + +2004-05-29 Eli Zaretskii + + * Makefile.in (../info/flymake, flymake.dvi): New targets. + (INFO_TARGETS, DVI_TARGETS): Add Flymake. + +2004-05-29 Pavel Kobiakov + + * flymake.texi: New file. + +2004-05-28 Simon Josefsson + + * smtpmail.texi (Authentication): Improve STARTTLS discussion. + +2004-05-07 Kai Grossjohann + + Version 2.0.40 of Tramp released. + +2004-04-25 Michael Albinus + + Complete rework, based on review by Karl Berry . + + * tramp.texi (Auto-save and Backup): Explain exploitation of new + variables `tramp-backup-directory-alist' and + `tramp-bkup-backup-directory-info'. + (Overview, Connection types) + (External transfer methods, Default Method) + (Windows setup hints): Remove restriction of password entering + with external methods. + (Auto-save and Backup): Make file name example + (X)Emacs neutral. In case of XEmacs, `bkup-backup-directory-info' + and `auto-save-directory' must be used. + (Frequently Asked Questions): Use "MS Windows NT/2000/XP" (not + only "NT"). Remove doubled entry "What kinds of systems does + @tramp{} work on". + (tramp): Macro removed. + (Obtaining Tramp): Flag removed from title. + (all): "tramp-" and "-" removed from flag names. Flags `tramp' + and `trampver' used properly. Flag `tramp-inst' replaced by + `installchapter'. Installation related text adapted. + +2004-04-28 Masatake YAMATO + + * widget.texi (Programming Example): Remove overlays. + +2004-04-27 Jesper Harder + + * faq.texi, viper.texi, dired-x.texi, autotype.texi: lisp -> Lisp. + +2004-04-23 Juanma Barranquero + + * makefile.w32-in: Add "-*- makefile -*-" mode tag. + +2004-04-05 Jesper Harder + + * info.texi (Info Search): Add info-apropos. + +2004-03-22 Juri Linkov + + * faq.texi: Fix help key bindings. + +2004-03-17 Luc Teirlinck + + * info.texi (Advanced): Replace @unnumberedsubsec by @subheading + (as suggested by Karl Berry). Update information about colored + stars in menus. Add new subheading describing M-n. + +2004-03-12 Richard M. Stallman + + * cl.texi (Top): Rename top node's title. + +2004-03-08 Karl Berry + + * info.texi: \input texinfo.tex instead of just texinfo, to avoid + problems making the texinfo distribution. + +2004-02-29 Simon Josefsson + + * smtpmail.texi (Authentication): Changed the list of supported + authentication mechanisms from CRAM-MD5, PLAIN and LOGIN-MD5 to + CRAM-MD5 and LOGIN, tiny patch from Andreas Voegele + . + +2004-02-29 Juanma Barranquero + + * makefile.w32-in (mostlyclean, clean, maintainer-clean): + Use $(DEL) instead of rm, and ignore exit code. + +2004-02-29 Kai Grossjohann + + Tramp version 2.0.39 released. + +2004-02-29 Michael Albinus + + * tramp.texi (Customizing Completion): Explain new functions + `tramp-parse-shostkeys' and `tramp-parse-sknownhosts'. + (all): Savannah URLs unified to "http://savannah.nongnu.org". + (Top): Refer to Savannah mailing list as the major one. Mention + older mailing lists in HTML mode only. + (Auto-save and Backup): Add auto-save. Based on wording of Kai. + (Frequently Asked Questions): Remote hosts must not be Unix-like + for "smb" method. + (Password caching): New node. + (External transfer methods): Refer to password caching for "smb" + method. + +2004-02-17 Karl Berry + + * info.texi (Help-Int): Mention the new line number feature. + +2004-02-14 Jonathan Yavner + + * ses.texi (Advanced Features): New functionality for + ses-set-header-row (defaults to current row unless C-u used). + (Acknowledgements): Add Stefan Monnier. + +2003-12-29 Kevin Ryde + + * viper.texi (Vi Macros): Fix reference to the Emacs manual. + +2003-11-30 Kai Grossjohann + + Tramp version 2.0.38 released. + + * tramp.texi (Remote shell setup): Warn of environment variables + FRUMPLE if user frumple exists. Suggested by Sven Gabriel + . + (Configuration): Tramp now chooses base64/uuencode + automatically. Update wording accordingly. + (Top): More description for the `Default Method' menu entry. + (Default Method): Use @code, not @var, for Lisp variables. + (Default Method): New subsection `Which method is the right one + for me?' Suggested by Christian Kirsch. + (Configuration): Pointer to new subsection added. + (Default Method): Too many "use" in one sentence. + Rephrase. Reported by Christian Kirsch. + (Filename Syntax): Old `su' example is probably a left-over from + the sm/su method naming. Replace with `ssh', instead. + (External transfer methods, Auto-save and Backup): + Typo fixes. + +2003-11-02 Michael Albinus + + * tramp.texi (all): Harmonize all occurences of @tramp{}. + (Top): Mention japanese manual only if flag `jamanual' is set. + Insert section `Japanese manual' in menu. + +2003-11-26 Thien-Thi Nguyen + + * eshell.texi (Known Problems): Add doc item. + +2003-11-22 Martin Stjernholm + + * cc-mode.texi: Update for CC Mode 5.30. + + Note: Please refrain from doing purely cosmetic changes like + removing trailing whitespace in this manual; it clobbers cvs + merging for no good reason. + +2003-11-02 Jesper Harder (tiny change) + + * man/ediff.texi, man/tramp.texi, man/vip.texi, man/viper.texi: + * man/widget.texi, man/woman.texi: Replace @sc{ascii} and ASCII with + @acronym{ASCII}. + +2003-10-26 Karl Berry + + * info.texi (Info Search): Echo area, not echo are. From Debian + diff. + +2003-10-26 Per Abrahamsen + + * widget.texi (Defining New Widgets): Document new beavior of + :buttons and :children keywords. + +2003-10-22 Miles Bader + + * Makefile.in (info): Move before $(top_srcdir)/info. + +2003-10-17 Thien-Thi Nguyen + + * tramp.texi (Inline methods): Small grammar fix. + (External transfer methods): Likewise. + +2003-10-08 Nick Roberts + + * speedbar.texi: Remove paragraph for GUD that is no longer true. + +2003-10-06 Luc Teirlinck + + * texinfo.tex: Replace `%' in arch tagline by @ignore. + +2003-09-30 Richard M. Stallman + + * dired-x.texi (Miscellaneous Commands): Delete M-g, w, T. + + * widget.texi (User Interface): Fix typos. + + * pcl-cvs.texi, cl.texi, woman.texi, ediff.texi: Fix @strong{Note:}. + +2003-09-29 Thien-Thi Nguyen + + * pcl-cvs.texi (Selected Files): Fix typo. + +2003-09-21 Karl Berry + + * info.texi (] and [ commands): No period at end of section title. + +2003-09-04 Miles Bader + + * Makefile.in (top_srcdir): New variable. + ($(top_srcdir)/info): New rule. + (info): Depend on it. + +2003-09-03 Peter Runestig + + * makefile.w32-in: New file. + +2003-08-26 Per Abrahamsen + + * widget.texi (User Interface): Explain the need of static text + around an editable field. + +2003-08-19 Luc Teirlinck + + * widget.texi (Basic Types): The argument to `:help-echo' can now + be a form that evaluates to a string. + +2003-08-18 Kim F. Storm + + * calc.texi (Queries in Macros): Update xref to keyboard macro query. + +2003-08-16 Richard M. Stallman + + * dired-x.texi (Shell Command Guessing): Explain *. + +2003-08-16 Chunyu Wang (tiny change) + + * pcl-cvs.texi (Log Edit Mode): Fix key binding for + log-edit-insert-changelog. + +2003-08-03 Karl Berry + + * info.texi: Need @contents. + +2003-07-20 Kai Gro,A_(Bjohann + + Tramp version 2.0.36 released. + + * tramp.texi (Remote shell setup): Explain about problems with + non-Bourne commands in ~/.profile and ~/.shrc. + +2003-07-07 Luc Teirlinck + + * info.texi (Help-Inv, Help-M, Help-Xref): Update following + renaming of `vis-mode' to `visible-mode'. + +2003-07-04 Luc Teirlinck + + * info.texi (Top, Help-Small-Screen): Remove accidentally added + next, prev and up pointers. + +2003-07-02 Luc Teirlinck + + * info.texi (Help): Mention existence of Emacs and stand-alone + Info at the very beginning of the tutorial. + (Help-Inv): New node. + (Help-]): New node. + (Help-M): Systematically point out the differences between default + Emacs and stand-alone versions. Delete second menu. + (Help-Xref): Systematically point out the differences between + default Emacs and stand-alone versions. + (Help-Int): Change `l' example. + (Expert Info): Fix typos. + (Emacs Info Variables): Mention `Info-hide-note-references' and + new default for `Info-scroll-prefer-subnodes'. + +2003-06-17 Kai Gro,A_(Bjohann + + Version 2.0.35 of Tramp released. + + * tramp.texi: From Michael Albinus : + (Inline methods): Add methods `remsh' and `plink1'. + (External transfer methods): Add method `remcp'. + (Multi-hop Methods): Add method `remsh'. + Small patch from Adrian Aichner : + Fix minor typos. + (Concept Index): Added to make manual searchable via + `Info-index'. + (Version Control): Add cindex entry. + +2003-05-24 Kai Gro,A_(Bjohann + + * trampver.texi: Version 2.0.34 released. + +2003-05-03 Glenn Morris + + * faq.texi: Improve previous changes. + +2003-05-02 Glenn Morris + + * faq.texi: Update copyright and maintenance details. + Update some package URLs, versions, and maintainers. + Remove many references to the Emacs Lisp Archive. + +2003-04-23 Simon Josefsson + + * smtpmail.texi: Fix license (the invariant sections mentioned has + never been part of the smtp manual). Align info dir entry with + other emacs packages. + +2003-04-08 Michael Albinus + + * tramp.texi: Version 2.0.33 released. + Remove installation chapter. Remove XEmacs specifics. + +2003-03-29 Richard M. Stallman + + * tramp.texi (Top): Undo the previous renaming. + (emacs-other-name, emacs-other-dir, emacs-other-file-name): Delete. + +2003-03-29 Kai Gro,A_(Bjohann + + * Makefile.in (../info/tramp): Compile Emacs, instead of XEmacs, + version of manual. + + * tramp.texi (Auto-save and Backup): New node. + +2003-03-29 Michael Albinus + + * tramp.texi (Top): Include trampver.texi. Rename "Emacs" to "GNU + Emacs" in order to have better differentiation to "XEmacs". + `emacs-other-name', `emacs-other-dir' and `emacs-other-file-name' + are new macros in order to point to the other Emacs flavor where + appropriate. In info case, point to node `Installation' in order + to explain how to generate the other way. In html case, make a + link to the other html file. + (Obtaining TRAMP): Added a paragraph saying to perform `autoconf' + after CVS checkout/update. + (Installation): Completely rewritten. + (Installation parameters, Load paths): New sections under + `Installation'. + +2003-02-28 Kai Gro,A_(Bjohann + + * tramp.texi: Version 2.0.30 released. + Replace word "path" with "localname" where used as a component of + a Tramp file name. + +2003-02-28 Michael Albinus + + * tramp.texi (Frequently Asked Questions): `tramp-chunksize' + introduced. + (Installation): Explain what to do if files from the tramp/contrib + directory are needed. + +2003-02-23 Alex Schroeder + + * smtpmail.texi (How Mail Works): New. + +2003-02-22 Alex Schroeder + + * smtpmail.texi: New file. + + * Makefile.in: Build SMTP manual. + +2003-02-05 Kai Gro,A_(Bjohann + + * tramp.texi: Version 2.0.29 released. + (Installation): In Emacs, use M-x texinfo-format-buffer RET, not + M-x makeinfo-buffer RET. Reported by gebser@ameritech.net. + +2003-02-01 Michael Albinus + + * tramp.texi (Frequently Asked Questions): Explain a workaround if + another package loads accidently Ange-FTP. + +2003-01-24 Michael Albinus + + * tramp.texi (Customizing Completion): Add function + `tramp-parse-sconfig'. Change example of + `tramp-set-completion-function', because parsing of ssh config + files looks more natural. + +2003-01-15 ShengHuo ZHU + + * gnus.texi: Do not use `path' in several locations. + +2002-12-26 Kai Gro,A_(Bjohann + + * tramp.texi (External transfer methods): New method `smb'. From + Michael Albinus. + +2002-11-05 Karl Berry + + * info.texi (Info-fontify): Reorder face list to avoid bad line + breaks. + +2002-10-06 Kai Gro,A_(Bjohann + + * tramp.texi: Move @copying to standard place. Use + @insertcopying. + +2002-10-02 Karl Berry + + * (ada-mode.texi autotype.texi calc.texi cc-mode.texi cl.texi + dired-x.texi ebrowse.texi ediff.texi emacs-mime.texi + eshell.texi eudc.texi faq.texi forms.texi idlwave.texi info.texi + message.texi mh-e.texi pcl-cvs.texi reftex.texi sc.texi ses.texi + speedbar.texi vip.texi viper.texi widget.texi woman.texi): + Per rms, update all manuals to use @copying instead of @ifinfo. + Also use @ifnottex instead of @ifinfo around the top node, where + needed for the sake of the HTML output. + (The Gnus manual is not fixed since it's not clear to me how it + works; and the Tramp manual already uses @copying, although in an + unusual way. All others were changed.) + +2002-09-10 Jonathan Yavner + + * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add SES. + (../info/ses, ses.dvi): New targets. + * ses.texi: New file. + +2002-09-06 Pavel Jan,Am(Bk + + * texinfo.tex: Update to texinfo 4.2. + +2002-08-27 Carsten Dominik + + * reftex.texi: Update to RefTeX 4.19. + +2002-06-17 Kai Gro,A_(Bjohann + + * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add Tramp. + (../info/tramp, tramp.dvi): New targets. + +2002-01-04 Eli Zaretskii + + * Makefile.in (DVI_TARGETS): Add calc.dvi. + (calc.dvi): Uncomment. + +2001-11-07 Eli Zaretskii + + * Makefile.in (INFO_TARGETS): Add ../info/calc. + (../info/calc): New target. + +2001-10-20 Gerd Moellmann + + * (Version 21.1 released.) + +2001-10-05 Gerd Moellmann + + * Branch for 21.1. + +2001-04-14 Eli Zaretskii + + * Makefile.in (../info/info): Use an explicit -o switch to + makeinfo. + +2001-03-05 Gerd Moellmann + + * Makefile.in (mostlyclean, maintainer-clean): Delete more files. + +2000-12-20 Eli Zaretskii + + * Makefile.in (../info/idlwave): Use --no-split. + +2000-12-14 Dave Love + + * Makefile.in (mostlyclean): Remove gnustmp.* + (gnus.dvi): Change rule to remove @latex stuff. + +2000-10-19 Eric M. Ludlam + + * Makefile.in (Speedbar): Add build targets for speedbar.texi. + +2000-10-13 John Wiegley + + * Makefile.in: Add build targets for eshell.texi. + +2000-09-25 Gerd Moellmann + + * Makefile.in: Remove/comment speedbar stuff. + +2000-09-22 Dave Love + + * Makefile.in: Add emacs-mime. + +2000-08-08 Eli Zaretskii + + * Makefile.in (INFO_TARGETS): Add ../info/woman. + (DVI_TARGETS): Add woman.dvi. + (../info/woman, woman.dvi): New targets. + +2000-05-31 Stefan Monnier + + * .cvsignore (*.tmp): New entry. Seems to be used for @macro. + + * pcl-cvs.texi: New file. + * Makefile.in (INFO_TARGETS, DVI_TARGETS: Add pcl-cvs. + (../info/pcl-cvs, pcl-cvs.dvi): New targets. + +2000-05-11 Gerd Moellmann + + * Makefile.in (INFO_TARGETS): Add info/ebrowse. + (../info/ebrowse, ebrowse.dvi): New targets. + +2000-01-13 Gerd Moellmann + + * Makefile.in (INFO_TARGETS): Add eudc. + (DVI_TARGETS): Add eudc.dvi. + (../info/eudc, eudc.dvi): New targets. + +2000-01-05 Eli Zaretskii + + * Makefile.in (INFO_TARGETS): Rename emacs-faq to efaq (for + compatibility with 8+3 filesystems). + (../info/efaq): Rename from emacs-faq. + +2000-01-03 Eli Zaretskii + + * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add idlwave. + (../info/idlwave, idlwave.dvi): New targets. + +1999-10-23 Dave Love + + * Makefile.in: Use autotype.texi. + +1999-10-12 Stefan Monnier + + * Makefile.in (faq): Use ../info/emacs-faq.info (as specified in the + faq.texi file) rather than ../info/faq. + +1999-10-07 Gerd Moellmann + + * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add ada-mode. + (../info/ada-mode, ada-mode.dvi): New targets. + +1999-09-01 Dave Love + + * Makefile.in: Add faq. + +1999-07-12 Richard Stallman + + * Version 20.4 released. + +1998-08-19 Richard Stallman + + * Version 20.3 released. + +1998-04-06 Andreas Schwab + + * Makefile.in (ENVADD): Enviroment vars to pass to texi2dvi. Use + it in dvi targets. + (../etc/GNU): Change to $(srcdir) first. + +1998-03-11 Carsten Dominik + + * reftex.texi: Update for RefTeX version 3.22. + +1998-02-08 Richard Stallman + + * Makefile.in (reftex.dvi, ../info/reftex): New targets. + (INFO_TARGETS, DVI_TARGETS): Add the new targets. + +1997-09-23 Paul Eggert + + * Makefile.in: Merge changes mistakenly made to `Makefile'. + (../info/viper, viper.dvi): Remove dependency on viper-cmd.texi. + +1997-09-19 Richard Stallman + + * Version 20.2 released. + +1997-09-15 Richard Stallman + + * Version 20.1 released. + +1997-07-10 Richard Stallman + + * Makefile (../info/viper, viper.dvi): Delete viper-cmd.texi dep. + +1996-08-11 Richard Stallman + + * Version 19.33 released. + +1996-07-31 Richard Stallman + + * Version 19.32 released. + +1996-06-27 Lars Magne Ingebrigtsen + + * Makefile.in: Add rules for the Message manual. + +1996-06-26 Lars Magne Ingebrigtsen + + * gnus.texi: New version. + + * message.texi: New manual. + +1996-06-20 Richard Stallman + + * Makefile.in (All info targets): cd $(srcdir) to do the work. + +1996-06-19 Richard Stallman + + * Makefile.in (All info targets): Specify $(srcdir) in input files. + Specify -I option. + (All dvi targets): Set the TEXINPUTS variable. + +1996-05-25 Karl Heuer + + * Version 19.31 released. + +1996-01-07 Richard Stallman + + * Makefile.in (../info/ccmode): Rename from ../info/cc-mode. + (INFO_TARGETS): Use new name. This avoids name conflict on MSDOS. + +1995-11-29 Richard Stallman + + * Makefile.in (../info/cc-mode, cc-mode.dvi): New targets. + (INFO_TARGETS): Add ../info/cc-mode. + (DVI_TARGETS): Add cc-mode.dvi. + +1996-05-25 Karl Heuer + + * Version 19.31 released. + +1995-11-24 Richard Stallman + + * Version 19.30 released. + +1995-11-04 Lars Magne Ingebrigtsen + + * gnus.texi: New file. + +1995-11-04 Erik Naggum + + * gnus.texi: File deleted. + +1995-11-02 Stephen Gildea + + * mh-e.texi: "Function Index" -> "Command Index" to work with + Emacs 19.30 C-h C-k support of separately-documented commands. + +1995-06-26 Richard Stallman + + * Makefile.in (../info/ediff, ediff.dvi): New targets. + (INFO_TARGETS, DVI_TARGETS): Add those new targets. + +1995-04-24 Richard Stallman + + * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add viper targets. + (../info/viper, viper.dvi): New targets. + +1995-04-20 Kevin Rodgers + + * dired-x.texi (Installation): Change the example to set + buffer-local variables like dired-omit-files-p in + dired-mode-hook. + +1995-04-17 Richard Stallman + + * Makefile.in (INFO_TARGETS, DVI_TARGETS): Add mh-e targets. + (../info/mh-e, mh-e.dvi): New targets. + +1995-02-07 Richard Stallman + + * Makefile.in (maintainer-clean): Rename from realclean. + +1994-11-23 Richard Stallman + + * Makefile.in: New file. + * Makefile: File deleted. + +1994-11-19 Richard Stallman + + * Makefile (TEXINDEX_OBJS): Variable deleted. + (texindex, texindex.o, getopt.o): Rules deleted. + All deps on texindex deleted. + (distclean): Don't delete texindex. + (mostlyclean): Don't delete *.o. + * texindex.c, getopt.c: Files deleted. + +1994-09-07 Richard Stallman + + * Version 19.26 released. + +1994-05-30 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.25 released. + +1994-05-23 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.24 released. + +1994-05-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.23 released. + +1994-04-17 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile: Delete spurious tab. + +1994-02-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (.SUFFIXES): New rule. + +1994-01-15 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (dired-x.dvi, ../info/dired-x): New targets. + (INFO_TARGETS, DVI_TARGETS): Add the new targets. + +1994-01-08 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (../info/sc): Rename from sc.info. + (../info/cl): Likewise. + (INFO_TARGETS): Use new names. + +1993-12-04 Richard Stallman (rms@srarc2) + + * getopt.c: New file. + * Makefile (TEXINDEX_OBJS): Use getopt.o in this dir, not ../lib-src. + (getopt.o): New rule. + (dvi): Don't depend on texindex. + (cl.dvi, forms.dvi, vip.dvi, gnus.dvi, sc.dvi): + Depend on texindex. + +1993-12-03 Richard Stallman (rms@srarc2) + + * Makefile (../info/sc.info): Rename from ../info/sc. + (TEXI2DVI): New variable. + (cl.dvi forms.dvi, sc.dvi, vip.dvi, gnus.dvi, info.dvi): + Add explicit commands. + (TEXINDEX_OBJS): Delete duplicate getopt.o. + +1993-11-27 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.22 released. + +1993-11-18 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (TEXINDEX_OBJS): Delete spurious period. + +1993-11-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.21 released. + +1993-11-15 Paul Eggert (eggert@twinsun.com) + + * man/Makefile (../info/cl.info): Rename from ../info/cl. + +1993-11-15 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (../etc/GNU): New target. + (EMACSSOURCES): Add gnu1.texi. + +1993-11-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile (realclean): Don't delete the Info files. + +1993-10-25 Brian Fox (bfox@albert.gnu.ai.mit.edu) + + * forms.texi: Fix forms.texi so that it will format correctly. + Add missing `@end iftex', fix bad reference. + + * info.texi, info-stn.texi: New files implement texinfo version of + `info' file. + +1993-10-20 Brian Fox (bfox@ai.mit.edu) + + * Makefile: Fix targets for texindex, new info.texi files. + * info-stnd.texi: New file implements info for standalone info + reader. + * info.texi: Update to include recent changes to "../info/info". + New source file for ../info/info; includes info-stnd.texi. + + * texindex.c: Include "../src/config.h" if building in emacs. + + * Makefile: Change all files to FILENAME.texi, force all targets + to be FILENAME, not FILENAME.info. This changes sc.texinfo, + vip.texinfo, forms.texinfo, cl.texinfo. + Add target to build texindex.c, defining `emacs'. + + * forms.texi: Install new file to match version 2.3 of forms.el. + +1993-08-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.19 released. + +1993-08-10 Simon Leinen (simon@lia.di.epfl.ch) + + * sc.texinfo: Fix info file name. + + * Makefile (info): Add gnus and sc. + (dvi): Add gnus.dvi and sc.dvi. + (../info/sc, sc.dvi): New targets. + +1993-08-08 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.18 released. + +1993-07-20 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Makefile: Fix source file names of the separate manuals. + (gnus.dvi, ../info/gnus): New targets. + +1993-07-18 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * Version 19.17 released. + +1993-07-10 Richard Stallman (rms@mole.gnu.ai.mit.edu) + + * split-man: Fix typos in last change. + +1993-07-06 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.16 released. + +1993-06-19 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * version 19.15 released. + +1993-06-18 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Makefile (distclean): It's rm, not rf. + +1993-06-17 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Version 19.14 released. + +1993-06-16 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Makefile: New file. + +1993-06-08 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Version 19.13 released. + +1993-05-27 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.9 released. + +1993-05-25 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) + + * Version 19.8 released. + +1993-05-22 Jim Blandy (jimb@geech.gnu.ai.mit.edu) + + * Version 19.7 released. + +1990-08-30 David Lawrence (tale@pogo.ai.mit.edu) + + * gnus.texinfo: New file. Removed installation instructions. + +1990-05-25 Richard Stallman (rms@sugar-bombs.ai.mit.edu) + + * texindex.tex: If USG, include sys/types.h and sys/fcntl.h. + +1989-01-17 Robert J. Chassell (bob@rice-chex.ai.mit.edu) + + * texinfo.tex: Change spelling of `\sc' font to `\smallcaps' and + then define `\sc' as the command for smallcaps in Texinfo. This + means that the @sc command will produce small caps. bfox has + made the corresponding change to makeinfo and texinfm.el. + +1988-08-16 Robert J. Chassell (bob@frosted-flakes.ai.mit.edu) + + * vip.texinfo: Remove menu entry Adding Lisp Code in node + Customization since the menu entry did not point to anything. + Also add an @finalout command to remove overfull hboxes from the + printed output. + + * cl.texinfo: Add @bye, \input line and @settitle to file. + This file is clearly intended to be a chapter of some other work, + but the other work does not yet exist. + +1988-07-25 Robert J. Chassell (bob@frosted-flakes.ai.mit.edu) + + * texinfo.texinfo: Three typos corrected. + +;; Local Variables: +;; coding: iso-2022-7bit +;; fill-column: 79 +;; add-log-time-zone-rule: t +;; End: + + Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, + 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + + This file is part of GNU Emacs. + + GNU Emacs is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU Emacs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Emacs; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + +;; arch-tag: 08b2903e-900c-4c72-a4a9-e76416a80803 diff --cc doc/misc/flymake.texi index d94aefbfa02,00000000000..491ee631fe7 mode 100644,000000..100644 --- a/doc/misc/flymake.texi +++ b/doc/misc/flymake.texi @@@ -1,762 -1,0 +1,762 @@@ +\input texinfo @c -*-texinfo-*- +@comment %**start of header +@setfilename ../../info/flymake +@set VERSION 0.3 +@set UPDATED April 2004 +@settitle GNU Flymake @value{VERSION} +@syncodeindex pg cp +@comment %**end of header + +@copying +This manual is for GNU Flymake (version @value{VERSION}, @value{UPDATED}), +which is a universal on-the-fly syntax checker for GNU Emacs. + +Copyright @copyright{} 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU Manual,'' +and with the Back-Cover Texts as in (a) below. A copy of the license +is included in the section entitled ``GNU Free Documentation License'' +in the Emacs manual. + +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' + +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. +@end quotation +@end copying + +@dircategory Emacs +@direntry +* Flymake: (flymake). A universal on-the-fly syntax checker. +@end direntry + +@titlepage +@title GNU Flymake +@subtitle for version @value{VERSION}, @value{UPDATED} +@author Pavel Kobiakov(@email{pk_at_work@@yahoo.com}) +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage + +@contents + +@ifnottex +@node Top +@top GNU Flymake +@end ifnottex + +@menu +* Overview of Flymake:: +* Installing Flymake:: +* Using Flymake:: +* Configuring Flymake:: +* Flymake Implementation:: +* GNU Free Documentation License:: +* Index:: +@end menu + +@node Overview of Flymake +@chapter Overview +@cindex Overview of Flymake + +Flymake is a universal on-the-fly syntax checker implemented as an +Emacs minor mode. Flymake runs the pre-configured syntax check tool +(compiler for C++ files, @code{perl} for perl files, etc.) in the +background, passing it a temporary copy of the current buffer, and +parses the output for known error/warning message patterns. Flymake +then highlights erroneous lines (i.e. lines for which at least one +error or warning has been reported by the syntax check tool), and +displays an overall buffer status in the mode line. Status information +displayed by Flymake contains total number of errors and warnings +reported for the buffer during the last syntax check. + +@code{flymake-goto-next-error} and @code{flymake-goto-prev-error} +functions allow for easy navigation to the next/previous erroneous +line, respectively. + +Calling @code{flymake-display-err-menu-for-current-line} will popup a +menu containing error messages reported by the syntax check tool for +the current line. Errors/warnings belonging to another file, such as a +@code{.h} header file included by a @code{.c} file, are shown in the +current buffer as belonging to the first line. Menu items for such +messages also contain a filename and a line number. Selecting such a +menu item will automatically open the file and jump to the line with +error. + +Syntax check is done 'on-the-fly'. It is started whenever + +@itemize @bullet +@item buffer is loaded +@item a newline character is added to the buffer +@item some changes were made to the buffer more than @code{0.5} seconds ago (the +delay is configurable). +@end itemize + +Flymake is a universal syntax checker in the sense that it's easily +extended to support new syntax check tools and error message +patterns. @xref{Configuring Flymake}. + +@node Installing Flymake +@chapter Installing +@cindex Installing Flymake + + +Flymake is packaged in a single file, @code{flymake.el}. + +To install/update Flymake, place @code{flymake.el} to a directory +somewhere on Emacs load path. You might also want to byte-compile +@code{flymake.el} to improve performance. + +Also, place the following line in the @code{.emacs} file. + +@lisp +(require 'flymake) +@end lisp + +You might also map the most frequently used Flymake functions, such as +@code{flymake-goto-next-error}, to some keyboard shortcuts: + +@lisp +(global-set-key [f3] 'flymake-display-err-menu-for-current-line) +(global-set-key [f4] 'flymake-goto-next-error) +@end lisp + +@node Using Flymake +@chapter Using Flymake +@cindex Using Flymake + +@menu +* Flymake mode:: +* Running the syntax check:: +* Navigating to error lines:: +* Viewing error messages:: +* Syntax check statuses:: +* Troubleshooting:: +@end menu + +@node Flymake mode +@section Flymake mode +@cindex flymake-mode + +Flymake is an Emacs minor mode. To use Flymake, you +must first activate @code{flymake-mode} by using the +@code{flymake-mode} function. + +Instead of manually activating @code{flymake-mode}, you can configure +Flymake to automatically enable @code{flymake-mode} upon opening any +file for which syntax check is possible. To do so, place the following +line in @code{.emacs}: + +@lisp +(add-hook 'find-file-hook 'flymake-find-file-hook) +@end lisp + +@node Running the syntax check +@section Running the syntax check +@cindex Manually starting the syntax check + +When @code{flymake-mode} is active, syntax check is started +automatically on any of the three conditions mentioned above. Syntax +check can also be started manually by using the +@code{flymake-start-syntax-check-for-current-buffer} function. This +can be used, for example, when changes were made to some other buffer +affecting the current buffer. + +@node Navigating to error lines +@section Navigating to error lines +@cindex Navigating to error lines + +After syntax check is completed, lines for which at least one error or +warning has been reported are highlighted, and total number of errors +and warning is shown in the mode line. Use the following functions to +navigate the highlighted lines. + +@multitable @columnfractions 0.25 0.75 + +@item @code{flymake-goto-next-error} +@tab Moves point to the next erroneous line, if any. + +@item @code{flymake-goto-prev-error} +@tab Moves point to the previous erroneous line. + +@end multitable + +These functions treat erroneous lines as a linked list. Therefore, +@code{flymake-goto-next-error} will go to the first erroneous line +when invoked in the end of the buffer. + +@node Viewing error messages +@section Viewing error messages +@cindex Viewing error messages + +To view error messages belonging to the current line, use the +@code{flymake-display-err-menu-for-current-line} function. If there's +at least one error or warning reported for the current line, this +function will display a popup menu with error/warning texts. +Selecting the menu item whose error belongs to another file brings +forward that file with the help of the +@code{flymake-goto-file-and-line} function. + +@node Syntax check statuses +@section Syntax check statuses +@cindex Syntax check statuses + +After syntax check is finished, its status is displayed in the mode line. +The following statuses are defined. + +@multitable @columnfractions 0.25 0.75 +@item Flymake* or Flymake:E/W* +@tab Flymake is currently running. For the second case, E/W contains the + error and warning count for the previous run. + +@item Flymake +@tab Syntax check is not running. Usually this means syntax check was + successfully passed (no errors, no warnings). Other possibilities are: + syntax check was killed as a result of executing + @code{flymake-compile}, or syntax check cannot start as compilation + is currently in progress. + +@item Flymake:E/W +@tab Number of errors/warnings found by the syntax check process. + +@item Flymake:! +@tab Flymake was unable to find master file for the current buffer. +@end multitable + +The following errors cause a warning message and switch flymake mode +OFF for the buffer. + +@multitable @columnfractions 0.25 0.75 +@item CFGERR +@tab Syntax check process returned nonzero exit code, but no + errors/warnings were reported. This indicates a possible configuration + error (for example, no suitable error message patterns for the + syntax check tool). + +@item NOMASTER +@tab Flymake was unable to find master file for the current buffer. + +@item NOMK +@tab Flymake was unable to find a suitable buildfile for the current buffer. + +@item PROCERR +@tab Flymake was unable to launch a syntax check process. +@end multitable + + +@node Troubleshooting +@section Troubleshooting +@cindex Logging +@cindex Troubleshooting + +Flymake uses a simple logging facility for indicating important points +in the control flow. The logging facility sends logging messages to +the @code{*Messages*} buffer. The information logged can be used for +resolving various problems related to Flymake. + +Logging output is controlled by the @code{flymake-log-level} +variable. @code{3} is the most verbose level, and @code{-1} switches +logging off. + +@node Configuring Flymake +@chapter Configuring and Extending Flymake +@cindex Configuring and Extending Flymake + +@menu +* Customizable variables:: +* Adding support for a new syntax check tool:: +@end menu + +Flymake was designed to be easily extended for supporting new syntax +check tools and error message patterns. + +@node Customizable variables +@section Customizable variables +@cindex Customizable variables + +This section summarizes variables used for Flymake +configuration. + +@table @code +@item flymake-log-level +Controls logging output, see @ref{Troubleshooting}. + +@item flymake-allowed-file-name-masks +A list of @code{(filename-regexp, init-function, cleanup-function +getfname-function)} for configuring syntax check tools. @xref{Adding +support for a new syntax check tool}. + +@item flymake-buildfile-dirs +A list of directories (relative paths) for searching a +buildfile. @xref{Locating the buildfile}. + +@item flymake-master-file-dirs +A list of directories for searching a master file. @xref{Locating a +master file}. + +@item flymake-get-project-include-dirs-function +A function used for obtaining a list of project include dirs (C/C++ +specific). @xref{Getting the include directories}. + +@item flymake-master-file-count-limit +@itemx flymake-check-file-limit +Used when looking for a master file. @xref{Locating a master file}. + +@item flymake-err-line-patterns +Patterns for error/warning messages in the form @code{(regexp file-idx - line-idx err-text-idx)}. @xref{Parsing the output}. ++line-idx col-idx err-text-idx)}. @xref{Parsing the output}. + +@item flymake-compilation-prevents-syntax-check +A flag indicating whether compilation and syntax check of the same +file cannot be run simultaneously. + +@item flymake-no-changes-timeout +If any changes are made to the buffer, syntax check is automatically +started after @code{flymake-no-changes-timeout} seconds. + +@item flymake-gui-warnings-enabled +A boolean flag indicating whether Flymake will show message boxes for +non-recoverable errors. If @code{flymake-gui-warnings-enabled} is +@code{nil}, these errors will only be logged to the @code{*Messages*} +buffer. + +@item flymake-start-syntax-check-on-newline +A boolean flag indicating whether to start syntax check after a +newline character is added to the buffer. + - @item flymake-errline-face ++@item flymake-errline +A custom face for highlighting lines for which at least one error has +been reported. + - @item flymake-warnline-face ++@item flymake-warnline +A custom face for highlighting lines for which at least one warning +and no errors have been reported. + +@end table + +@node Adding support for a new syntax check tool +@section Adding support for a new syntax check tool +@cindex Adding support for a new syntax check tool + +@menu +* Example -- Configuring a tool called directly:: +* Example -- Configuring a tool called via make:: +@end menu + +Syntax check tools are configured using the +@code{flymake-allowed-file-name-masks} list. Each item of this list +has the following format: + +@lisp +(filename-regexp, init-function, cleanup-function, getfname-function) +@end lisp + +@table @code +@item filename-regexp +This field is used as a key for locating init/cleanup/getfname +functions for the buffer. Items in +@code{flymake-allowed-file-name-masks} are searched sequentially. The +first item with @code{filename-regexp} matching buffer filename is +selected. If no match is found, @code{flymake-mode} is switched off. + +@item init-function +@code{init-function} is required to initialize the syntax check, +usually by creating a temporary copy of the buffer contents. The +function must return @code{(list cmd-name arg-list)}. If +@code{init-function} returns null, syntax check is aborted, by +@code{flymake-mode} is not switched off. + +@item cleanup-function +@code{cleanup-function} is called after the syntax check process is +complete and should take care of proper deinitialization, which is +usually deleting a temporary copy created by the @code{init-function}. + +@item getfname-function +This function is used for translating filenames reported by the syntax +check tool into ``real'' filenames. Filenames reported by the tool +will be different from the real ones, as actually the tool works with +the temporary copy. In most cases, the default implementation +provided by Flymake, @code{flymake-get-real-file-name}, can be used as +@code{getfname-function}. + +@end table + +To add support for a new syntax check tool, write corresponding +@code{init-function}, and, optionally @code{cleanup-function} and +@code{getfname-function}. If the format of error messages reported by +the new tool is not yet supported by Flymake, add a new entry to +the @code{flymake-err-line-patterns} list. + +The following sections contain some examples of configuring Flymake +support for various syntax check tools. + +@node Example -- Configuring a tool called directly +@subsection Example -- Configuring a tool called directly +@cindex Adding support for perl + +In this example, we will add support for @code{perl} as a syntax check +tool. @code{perl} supports the @code{-c} option which does syntax +checking. + +First, we write the @code{init-function}: + +@lisp - (defun flymake-perl-init (buffer) ++(defun flymake-perl-init () + (let* ((temp-file (flymake-init-create-temp-buffer-copy - buffer 'flymake-create-temp-inplace)) ++ 'flymake-create-temp-inplace)) + (local-file (concat (flymake-build-relative-filename + (file-name-directory + (buffer-file-name + (current-buffer))) + (file-name-directory temp-file)) + (file-name-nondirectory temp-file)))) + (list "perl" (list "-wc " local-file)))) +@end lisp + +@code{flymake-perl-init} creates a temporary copy of the buffer +contents with the help of +@code{flymake-init-create-temp-buffer-copy}, and builds an appropriate +command line. + +Next, we add a new entry to the +@code{flymake-allowed-file-name-masks}: + +@lisp +(setq flymake-allowed-file-name-masks + (cons '(".+\\.pl$" + flymake-perl-init + flymake-simple-cleanup + flymake-get-real-file-name) + flymake-allowed-file-name-masks)) +@end lisp + +Note that we use standard @code{cleanup-function} and +@code{getfname-function}. + +Finally, we add an entry to @code{flymake-err-line-patterns}: + +@lisp +(setq flymake-err-line-patterns + (cons '("\\(.*\\) at \\([^ \n]+\\) line \\([0-9]+\\)[,.\n]" + 2 3 nil 1) + flymake-err-line-patterns)) +@end lisp + +@node Example -- Configuring a tool called via make +@subsection Example -- Configuring a tool called via make +@cindex Adding support for C (gcc+make) + +In this example we will add support for C files syntax checked by +@code{gcc} called via @code{make}. + +We're not required to write any new functions, as Flymake already has +functions for @code{make}. We just add a new entry to the +@code{flymake-allowed-file-name-masks}: + +@lisp +(setq flymake-allowed-file-name-masks + (cons '(".+\\.c$" + flymake-simple-make-init + flymake-simple-cleanup + flymake-get-real-file-name) + flymake-allowed-file-name-masks)) +@end lisp + +@code{flymake-simple-make-init} builds the following @code{make} +command line: + +@lisp +(list "make" + (list "-s" "-C" + base-dir + (concat "CHK_SOURCES=" source) + "SYNTAX_CHECK_MODE=1" + "check-syntax")) +@end lisp + +@code{base-dir} is a directory containing @code{Makefile}, see @ref{Locating the buildfile}. + +Thus, @code{Makefile} must contain the @code{check-syntax} target. In +our case this target might look like this: + +@verbatim +check-syntax: + gcc -o nul -S ${CHK_SOURCES} +@end verbatim + +The format of error messages reported by @code{gcc} is already +supported by Flymake, so we don't have to add a new entry to +@code{flymake-err-line-patterns}. + +@node Flymake Implementation +@chapter Flymake Implementation +@cindex Implementation details + +@menu +* Determining whether syntax check is possible:: +* Making a temporary copy:: +* Locating a master file:: +* Getting the include directories:: +* Locating the buildfile:: +* Starting the syntax check process:: +* Parsing the output:: +* Highlighting erroneous lines:: +* Interaction with other modes:: +@end menu + +Syntax check is started by calling @code{flymake-start-syntax-check-for-current-buffer}. +Flymake first determines whether it is able to do syntax +check. It then saves a copy of the buffer in a temporary file in the +buffer's directory (or in the system temp directory -- for java +files), creates a syntax check command and launches a process with +this command. The output is parsed using a list of error message patterns, +and error information (file name, line number, type and text) is +saved. After the process has finished, Flymake highlights erroneous +lines in the buffer using the accumulated error information. + +@node Determining whether syntax check is possible +@section Determining whether syntax check is possible +@cindex Syntax check models +@cindex Master file + +Syntax check is considered possible if there's an entry in +@code{flymake-allowed-file-name-masks} matching buffer's filename and +its @code{init-function} returns non-@code{nil} value. + +Two syntax check modes are distinguished: + +@enumerate + +@item +Buffer can be syntax checked in a standalone fashion, that is, the +file (its temporary copy, in fact) can be passed over to the compiler to +do the syntax check. Examples are C/C++ (.c, .cpp) and Java (.java) +sources. + +@item +Buffer can be syntax checked, but additional file, called master file, +is required to perform this operation. A master file is a file that +includes the current file, so that running a syntax check tool on it +will also check syntax in the current file. Examples are C/C++ (.h, +.hpp) headers. + +@end enumerate + +These modes are handled inside init/cleanup/getfname functions, see +@ref{Adding support for a new syntax check tool}. + +Flymake contains implementations of all functionality required to +support different syntax check modes described above (making +temporary copies, finding master files, etc.), as well as some +tool-specific (routines for @code{make}, @code{Ant}, etc.) code. + + +@node Making a temporary copy +@section Making a temporary copy +@cindex Temporary copy of the buffer +@cindex Master file + +After the possibility of the syntax check has been determined, a +temporary copy of the current buffer is made so that the most recent +unsaved changes could be seen by the syntax check tool. Making a copy +is quite straightforward in a standalone case (mode @code{1}), as it's +just saving buffer contents to a temporary file. + +Things get trickier, however, when master file is involved, as it +requires to + +@itemize @bullet +@item locate a master file +@item patch it to include the current file using its new (temporary) +name. +@end itemize + +Locating a master file is discussed in the following section. + +Patching just changes all appropriate lines of the master file so that they +use the new (temporary) name of the current file. For example, suppose current +file name is @code{file.h}, the master file is @code{file.cpp}, and +it includes current file via @code{#include "file.h"}. Current file's copy +is saved to file @code{file_flymake.h}, so the include line must be +changed to @code{#include "file_flymake.h"}. Finally, patched master file +is saved to @code{file_flymake_master.cpp}, and the last one is passed to +the syntax check tool. + +@node Locating a master file +@section Locating a master file +@cindex Master file + +Master file is located in two steps. + +First, a list of possible master files is built. A simple name +matching is used to find the files. For a C++ header @code{file.h}, +Flymake searches for all @code{.cpp} files in the directories whose relative paths are +stored in a customizable variable @code{flymake-master-file-dirs}, which +usually contains something like @code{("." "./src")}. No more than +@code{flymake-master-file-count-limit} entries is added to the master file +list. The list is then sorted to move files with names @code{file.cpp} to +the top. + +Next, each master file in a list is checked to contain the appropriate +include directives. No more than @code{flymake-check-file-limit} of each +file are parsed. + +For @code{file.h}, the include directives to look for are +@code{#include "file.h"}, @code{#include "../file.h"}, etc. Each +include is checked against a list of include directories +(see @ref{Getting the include directories}) to be sure it points to the +correct @code{file.h}. + +First matching master file found stops the search. The master file is then +patched and saved to disk. In case no master file is found, syntax check is +aborted, and corresponding status (!) is reported in the mode line. + +@node Getting the include directories +@section Getting the include directories +@cindex Include directories (C/C++ specific) + +Two sets of include directories are distinguished: system include directories +and project include directories. The former is just the contents of the +@code{INCLUDE} environment variable. The latter is not so easy to obtain, +and the way it can be obtained can vary greatly for different projects. +Therefore, a customizable variable +@code{flymake-get-project-include-dirs-function} is used to provide the +way to implement the desired behavior. + +The default implementation, @code{flymake-get-project-include-dirs-imp}, +uses a @code{make} call. This requires a correct base directory, that is, a +directory containing a correct @code{Makefile}, to be determined. + +As obtaining the project include directories might be a costly operation, its +return value is cached in the hash table. The cache is cleared in the beginning +of every syntax check attempt. + +@node Locating the buildfile +@section Locating the buildfile +@cindex Locating the buildfile +@cindex buildfile, locating +@cindex Makefile, locating + +Flymake can be configured to use different tools for performing syntax +checks. For example, it can use direct compiler call to syntax check a perl +script or a call to @code{make} for a more complicated case of a +@code{C/C++} source. The general idea is that simple files, like perl +scripts and html pages, can be checked by directly invoking a +corresponding tool. Files that are usually more complex and generally +used as part of larger projects, might require non-trivial options to +be passed to the syntax check tool, like include directories for +C++. The latter files are syntax checked using some build tool, like +@code{make} or @code{Ant}. + +All @code{make} configuration data is usually stored in a file called +@code{Makefile}. To allow for future extensions, flymake uses a notion of +buildfile to reference the 'project configuration' file. + +Special function, @code{flymake-find-buildfile} is provided for locating buildfiles. +Searching for a buildfile is done in a manner similar to that of searching +for possible master files. A customizable variable +@code{flymake-buildfile-dirs} holds a list of relative paths to the +buildfile. They are checked sequentially until a buildfile is found. In case +there's no build file, syntax check is aborted. + +Buildfile values are also cached. + +@node Starting the syntax check process +@section Starting the syntax check process +@cindex Syntax check process + +The command line (command name and the list of arguments) for launching a process is returned by the +initialization function. Flymake then just calls @code{start-process} +to start an asynchronous process and configures process filter and +sentinel which is used for processing the output of the syntax check +tool. + +@node Parsing the output +@section Parsing the output +@cindex Parsing the output + +The output generated by the syntax check tool is parsed in the process +filter/sentinel using the error message patterns stored in the +@code{flymake-err-line-patterns} variable. This variable contains a +list of items of the form @code{(regexp file-idx line-idx +err-text-idx)}, used to determine whether a particular line is an +error message and extract file name, line number and error text, +respectively. Error type (error/warning) is also guessed by matching +error text with the '@code{^[wW]arning}' pattern. Anything that was not +classified as a warning is considered an error. Type is then used to +sort error menu items, which shows error messages first. + +Flymake is also able to interpret error message patterns missing err-text-idx +information. This is done by merely taking the rest of the matched line +(@code{(substring line (match-end 0))}) as error text. This trick allows +to make use of a huge collection of error message line patterns from +@code{compile.el}. All these error patterns are appended to +the end of @code{flymake-err-line-patterns}. + +The error information obtained is saved in a buffer local +variable. The buffer for which the process output belongs is +determined from the process-id@w{}->@w{}buffer mapping updated +after every process launch/exit. + +@node Highlighting erroneous lines +@section Highlighting erroneous lines +@cindex Erroneous lines, faces + +Highlighting is implemented with overlays and happens in the process +sentinel, after calling the cleanup function. Two customizable faces - are used: @code{flymake-errline-face} and - @code{flymake-warnline-face}. Errors belonging outside the current ++are used: @code{flymake-errline} and ++@code{flymake-warnline}. Errors belonging outside the current +buffer are considered to belong to line 1 of the current buffer. + +@node Interaction with other modes +@section Interaction with other modes +@cindex Interaction with other modes +@cindex Interaction with compile mode + +The only mode flymake currently knows about is @code{compile}. + +Flymake can be configured to not start syntax check if it thinks the +compilation is in progress. The check is made by the +@code{flymake-compilation-is-running}, which tests the +@code{compilation-in-progress} variable. The reason why this might be +useful is saving CPU time in case both syntax check and compilation +are very CPU intensive. The original reason for adding this feature, +though, was working around a locking problem with MS Visual C++ compiler. + +Flymake also provides an alternative command for starting compilation, +@code{flymake-compile}: + +@lisp +(defun flymake-compile () + "Kill all flymake syntax checks then start compilation." + (interactive) + (flymake-stop-all-syntax-checks) + (call-interactively 'compile)) +@end lisp + +It just kills all the active syntax check processes before calling +@code{compile}. + +@node GNU Free Documentation License +@appendix GNU Free Documentation License +@include doclicense.texi + +@node Index +@unnumbered Index + +@printindex cp + +@bye + +@ignore + arch-tag: 9f0db077-5598-49ab-90b9-8df9248a63ec +@end ignore diff --cc doc/misc/gnus.texi index 8de4066e047,00000000000..4093b061f74 mode 100644,000000..100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@@ -1,29508 -1,0 +1,29544 @@@ +\input texinfo + +@setfilename ../../info/gnus +@settitle Gnus Manual +@syncodeindex fn cp +@syncodeindex vr cp +@syncodeindex pg cp + +@copying +Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU +Manual'', and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. + +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify +this GNU Manual, like GNU software. Copies published by the Free +Software Foundation raise funds for GNU development.'' + +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. +@end quotation +@end copying + +@iftex +@iflatex +\documentclass[twoside,a4paper,openright,11pt]{book} +\usepackage[latin1]{inputenc} +\usepackage{pagestyle} +\usepackage{epsfig} +\usepackage{pixidx} +\input{gnusconfig.tex} + +\ifx\pdfoutput\undefined +\else +\usepackage[pdftex,bookmarks,colorlinks=true]{hyperref} +\usepackage{thumbpdf} +\pdfcompresslevel=9 +\fi + +\makeindex +\begin{document} + +% Adjust ../Makefile.in if you change the following line: +\newcommand{\gnusversionname}{Gnus v5.11} +\newcommand{\gnuschaptername}{} +\newcommand{\gnussectionname}{} + +\newcommand{\gnusbackslash}{/} + +\newcommand{\gnusref}[1]{``#1'' on page \pageref{#1}} +\ifx\pdfoutput\undefined +\newcommand{\gnusuref}[1]{\gnustt{#1}} +\else +\newcommand{\gnusuref}[1]{\href{#1}{\gnustt{#1}}} +\fi +\newcommand{\gnusxref}[1]{See ``#1'' on page \pageref{#1}} +\newcommand{\gnuspxref}[1]{see ``#1'' on page \pageref{#1}} + +\newcommand{\gnuskindex}[1]{\index{#1}} +\newcommand{\gnusindex}[1]{\index{#1}} + +\newcommand{\gnustt}[1]{{\gnusselectttfont{}#1}} +\newcommand{\gnuscode}[1]{\gnustt{#1}} +\newcommand{\gnusasis}[1]{\gnustt{#1}} +\newcommand{\gnusurl}[1]{\gnustt{#1}} +\newcommand{\gnuscommand}[1]{\gnustt{#1}} +\newcommand{\gnusenv}[1]{\gnustt{#1}} +\newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\gnusselectttfont{}#1}''} +\newcommand{\gnuslisp}[1]{\gnustt{#1}} +\newcommand{\gnuskbd}[1]{`\gnustt{#1}'} +\newcommand{\gnuskey}[1]{`\gnustt{#1}'} +\newcommand{\gnusfile}[1]{`\gnustt{#1}'} +\newcommand{\gnusdfn}[1]{\textit{#1}} +\newcommand{\gnusi}[1]{\textit{#1}} +\newcommand{\gnusr}[1]{\textrm{#1}} +\newcommand{\gnusstrong}[1]{\textbf{#1}} +\newcommand{\gnusemph}[1]{\textit{#1}} +\newcommand{\gnusvar}[1]{{\fontsize{10pt}{10}\selectfont\textsl{\textsf{#1}}}} +\newcommand{\gnussc}[1]{\textsc{#1}} +\newcommand{\gnustitle}[1]{{\huge\textbf{#1}}} +\newcommand{\gnusversion}[1]{{\small\textit{#1}}} +\newcommand{\gnusauthor}[1]{{\large\textbf{#1}}} +\newcommand{\gnusresult}[1]{\gnustt{=> #1}} +\newcommand{\gnusacronym}[1]{\textsc{#1}} +\newcommand{\gnusemail}[1]{\textit{#1}} + +\newcommand{\gnusbullet}{{${\bullet}$}} +\newcommand{\gnusdollar}{\$} +\newcommand{\gnusampersand}{\&} +\newcommand{\gnuspercent}{\%} +\newcommand{\gnushash}{\#} +\newcommand{\gnushat}{\symbol{"5E}} +\newcommand{\gnusunderline}{\symbol{"5F}} +\newcommand{\gnusnot}{$\neg$} +\newcommand{\gnustilde}{\symbol{"7E}} +\newcommand{\gnusless}{{$<$}} +\newcommand{\gnusgreater}{{$>$}} +\newcommand{\gnusbraceleft}{{$>$}} +\newcommand{\gnusbraceright}{{$>$}} + +\newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=ps/gnus-head,height=1cm}}} +\newcommand{\gnusinteresting}{ +\marginpar[\mbox{}\hfill\gnushead]{\gnushead} +} + +\newcommand{\gnuscleardoublepage}{\ifodd\count0\mbox{}\clearpage\thispagestyle{empty}\mbox{}\clearpage\else\clearpage\fi} + +\newcommand{\gnuspagechapter}[1]{ +{\mbox{}} +} + +\newdimen{\gnusdimen} +\gnusdimen 0pt + +\newcommand{\gnuschapter}[2]{ +\gnuscleardoublepage +\ifdim \gnusdimen = 0pt\setcounter{page}{1}\pagestyle{gnus}\pagenumbering{arabic} \gnusdimen 1pt\fi +\chapter{#2} +\renewcommand{\gnussectionname}{} +\renewcommand{\gnuschaptername}{#2} +\thispagestyle{empty} +\hspace*{-2cm} +\begin{picture}(500,500)(0,0) +\put(480,350){\makebox(0,0)[tr]{#1}} +\put(40,300){\makebox(500,50)[bl]{{\Huge\bf{#2}}}} +\end{picture} +\clearpage +} + +\newcommand{\gnusfigure}[3]{ +\begin{figure} +\mbox{}\ifodd\count0\hspace*{-0.8cm}\else\hspace*{-3cm}\fi\begin{picture}(440,#2) +#3 +\end{picture} +\caption{#1} +\end{figure} +} + +\newcommand{\gnusicon}[1]{ +\marginpar[\mbox{}\hfill\raisebox{-1.5cm}{\epsfig{figure=ps/#1-up,height=1.5cm}}]{\raisebox{-1cm}{\epsfig{figure=ps/#1-up,height=1cm}}} +} + +\newcommand{\gnuspicon}[1]{ +\margindex{\epsfig{figure=#1,width=2cm}} +} + +\newcommand{\gnusxface}[2]{ +\margindex{\epsfig{figure=#1,width=1cm}\epsfig{figure=#2,width=1cm}} +} + +\newcommand{\gnussmiley}[2]{ +\margindex{\makebox[2cm]{\hfill\epsfig{figure=#1,width=0.5cm}\hfill\epsfig{figure=#2,width=0.5cm}\hfill}} +} + +\newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1} + +\newcommand{\gnussection}[1]{ +\renewcommand{\gnussectionname}{#1} +\section{#1} +} + +\newenvironment{codelist}% +{\begin{list}{}{ +} +}{\end{list}} + +\newenvironment{asislist}% +{\begin{list}{}{ +} +}{\end{list}} + +\newenvironment{kbdlist}% +{\begin{list}{}{ +\labelwidth=0cm +} +}{\end{list}} + +\newenvironment{dfnlist}% +{\begin{list}{}{ +} +}{\end{list}} + +\newenvironment{stronglist}% +{\begin{list}{}{ +} +}{\end{list}} + +\newenvironment{samplist}% +{\begin{list}{}{ +} +}{\end{list}} + +\newenvironment{varlist}% +{\begin{list}{}{ +} +}{\end{list}} + +\newenvironment{emphlist}% +{\begin{list}{}{ +} +}{\end{list}} + +\newlength\gnusheadtextwidth +\setlength{\gnusheadtextwidth}{\headtextwidth} +\addtolength{\gnusheadtextwidth}{1cm} + +\newpagestyle{gnuspreamble}% +{ +{ +\ifodd\count0 +{ +\hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\mbox{}}\textbf{\hfill\roman{page}}} +} +\else +{ +\hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\roman{page}\hfill\mbox{}}} +} +} +\fi +} +} +{ +\ifodd\count0 +\mbox{} \hfill +\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}} +\else +\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}} +\hfill \mbox{} +\fi +} + +\newpagestyle{gnusindex}% +{ +{ +\ifodd\count0 +{ +\hspace*{-0.23cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\gnuschaptername\hfill\arabic{page}}}} +} +\else +{ +\hspace*{-3.25cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}} +} +\fi +} +} +{ +\ifodd\count0 +\mbox{} \hfill +\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}} +\else +\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}} +\hfill \mbox{} +\fi +} + +\newpagestyle{gnus}% +{ +{ +\ifodd\count0 +{ +\makebox[12cm]{\hspace*{3.1cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{chapter}.\arabic{section}} \textbf{\gnussectionname\hfill\arabic{page}}}}} +} +\else +{ +\makebox[12cm]{\hspace*{-2.95cm}\underline{\makebox[\gnusheadtextwidth]{\textbf{\arabic{page}\hfill\gnuschaptername}}}} +} +\fi +} +} +{ +\ifodd\count0 +\mbox{} \hfill +\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}} +\else +\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo,height=1cm}} +\hfill \mbox{} +\fi +} + +\pagenumbering{roman} +\pagestyle{gnuspreamble} + +@end iflatex +@end iftex + +@iftex +@iflatex + +\begin{titlepage} +{ + +%\addtolength{\oddsidemargin}{-5cm} +%\addtolength{\evensidemargin}{-5cm} +\parindent=0cm +\addtolength{\textheight}{2cm} + +\gnustitle{\gnustitlename}\hfill\gnusversion{\gnusversionname}\\ +\rule{15cm}{1mm}\\ +\vfill +\hspace*{0cm}\epsfig{figure=ps/gnus-big-logo,height=15cm} +\vfill +\rule{15cm}{1mm}\\ +\gnusauthor{by Lars Magne Ingebrigtsen} +\newpage +} + +\mbox{} +\vfill + +\thispagestyle{empty} + +@c @insertcopying +\newpage +\end{titlepage} +@end iflatex +@end iftex + +@ifnottex +@insertcopying +@end ifnottex + +@dircategory Emacs +@direntry +* Gnus: (gnus). The newsreader Gnus. +@end direntry +@iftex +@finalout +@end iftex +@setchapternewpage odd + + + +@titlepage +@title Gnus Manual + +@author by Lars Magne Ingebrigtsen +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage + + +@node Top +@top The Gnus Newsreader + +@ifinfo + +You can read news (and mail) from within Emacs by using Gnus. The news +can be gotten by any nefarious means you can think of---@acronym{NNTP}, local +spool or your mbox file. All at the same time, if you want to push your +luck. + +@c Adjust ../Makefile.in if you change the following line: +This manual corresponds to Gnus v5.11. + +@end ifinfo + +@iftex + +@iflatex +\tableofcontents +\gnuscleardoublepage +@end iflatex + +Gnus is the advanced, self-documenting, customizable, extensible +unreal-time newsreader for GNU Emacs. + +Oops. That sounds oddly familiar, so let's start over again to avoid +being accused of plagiarism: + +Gnus is a message-reading laboratory. It will let you look at just +about anything as if it were a newsgroup. You can read mail with it, +you can browse directories with it, you can @code{ftp} with it---you +can even read news with it! + +Gnus tries to empower people who read news the same way Emacs empowers +people who edit text. Gnus sets no limits to what the user should be +allowed to do. Users are encouraged to extend Gnus to make it behave +like they want it to behave. A program should not control people; +people should be empowered to do what they want by using (or abusing) +the program. + +@end iftex + +@menu +* Starting Up:: Finding news can be a pain. +* Group Buffer:: Selecting, subscribing and killing groups. +* Summary Buffer:: Reading, saving and posting articles. +* Article Buffer:: Displaying and handling articles. +* Composing Messages:: Information on sending mail and news. +* Select Methods:: Gnus reads all messages from various select methods. +* Scoring:: Assigning values to articles. +* Various:: General purpose settings. +* The End:: Farewell and goodbye. +* Appendices:: Terminology, Emacs intro, @acronym{FAQ}, History, Internals. +* GNU Free Documentation License:: The license for this documentation. +* Index:: Variable, function and concept index. +* Key Index:: Key Index. + +Other related manuals + +* Message:(message). Composing messages. +* Emacs-MIME:(emacs-mime). Composing messages; @acronym{MIME}-specific parts. +* Sieve:(sieve). Managing Sieve scripts in Emacs. +* PGG:(pgg). @acronym{PGP/MIME} with Gnus. + +@detailmenu + --- The Detailed Node Listing --- + +Starting Gnus + +* Finding the News:: Choosing a method for getting news. +* The First Time:: What does Gnus do the first time you start it? +* The Server is Down:: How can I read my mail then? +* Slave Gnusae:: You can have more than one Gnus active at a time. +* Fetching a Group:: Starting Gnus just to read a group. +* New Groups:: What is Gnus supposed to do with new groups? +* Changing Servers:: You may want to move from one server to another. +* Startup Files:: Those pesky startup files---@file{.newsrc}. +* Auto Save:: Recovering from a crash. +* The Active File:: Reading the active file over a slow line Takes Time. +* Startup Variables:: Other variables you might change. + +New Groups + +* Checking New Groups:: Determining what groups are new. +* Subscription Methods:: What Gnus should do with new groups. +* Filtering New Groups:: Making Gnus ignore certain new groups. + +Group Buffer + +* Group Buffer Format:: Information listed and how you can change it. +* Group Maneuvering:: Commands for moving in the group buffer. +* Selecting a Group:: Actually reading news. +* Subscription Commands:: Unsubscribing, killing, subscribing. +* Group Data:: Changing the info for a group. +* Group Levels:: Levels? What are those, then? +* Group Score:: A mechanism for finding out what groups you like. +* Marking Groups:: You can mark groups for later processing. +* Foreign Groups:: Creating and editing groups. +* Group Parameters:: Each group may have different parameters set. +* Listing Groups:: Gnus can list various subsets of the groups. +* Sorting Groups:: Re-arrange the group order. +* Group Maintenance:: Maintaining a tidy @file{.newsrc} file. +* Browse Foreign Server:: You can browse a server. See what it has to offer. +* Exiting Gnus:: Stop reading news and get some work done. +* Group Topics:: A folding group mode divided into topics. +* Misc Group Stuff:: Other stuff that you can to do. + +Group Buffer Format + +* Group Line Specification:: Deciding how the group buffer is to look. +* Group Mode Line Specification:: The group buffer mode line. +* Group Highlighting:: Having nice colors in the group buffer. + +Group Topics + +* Topic Commands:: Interactive E-Z commands. +* Topic Variables:: How to customize the topics the Lisp Way. +* Topic Sorting:: Sorting each topic individually. +* Topic Topology:: A map of the world. +* Topic Parameters:: Parameters that apply to all groups in a topic. + +Misc Group Stuff + +* Scanning New Messages:: Asking Gnus to see whether new messages have arrived. +* Group Information:: Information and help on groups and Gnus. +* Group Timestamp:: Making Gnus keep track of when you last read a group. +* File Commands:: Reading and writing the Gnus files. +* Sieve Commands:: Managing Sieve scripts. + +Summary Buffer + +* Summary Buffer Format:: Deciding how the summary buffer is to look. +* Summary Maneuvering:: Moving around the summary buffer. +* Choosing Articles:: Reading articles. +* Paging the Article:: Scrolling the current article. +* Reply Followup and Post:: Posting articles. +* Delayed Articles:: Send articles at a later time. +* Marking Articles:: Marking articles as read, expirable, etc. +* Limiting:: You can limit the summary buffer. +* Threading:: How threads are made. +* Sorting the Summary Buffer:: How articles and threads are sorted. +* Asynchronous Fetching:: Gnus might be able to pre-fetch articles. +* Article Caching:: You may store articles in a cache. +* Persistent Articles:: Making articles expiry-resistant. +* Article Backlog:: Having already read articles hang around. +* Saving Articles:: Ways of customizing article saving. +* Decoding Articles:: Gnus can treat series of (uu)encoded articles. +* Article Treatment:: The article buffer can be mangled at will. +* MIME Commands:: Doing MIMEy things with the articles. +* Charsets:: Character set issues. +* Article Commands:: Doing various things with the article buffer. +* Summary Sorting:: Sorting the summary buffer in various ways. +* Finding the Parent:: No child support? Get the parent. +* Alternative Approaches:: Reading using non-default summaries. +* Tree Display:: A more visual display of threads. +* Mail Group Commands:: Some commands can only be used in mail groups. +* Various Summary Stuff:: What didn't fit anywhere else. +* Exiting the Summary Buffer:: Returning to the Group buffer, + or reselecting the current group. +* Crosspost Handling:: How crossposted articles are dealt with. +* Duplicate Suppression:: An alternative when crosspost handling fails. +* Security:: Decrypt and Verify. +* Mailing List:: Mailing list minor mode. + +Summary Buffer Format + +* Summary Buffer Lines:: You can specify how summary lines should look. +* To From Newsgroups:: How to not display your own name. +* Summary Buffer Mode Line:: You can say how the mode line should look. +* Summary Highlighting:: Making the summary buffer all pretty and nice. + +Choosing Articles + +* Choosing Commands:: Commands for choosing articles. +* Choosing Variables:: Variables that influence these commands. + +Reply, Followup and Post + +* Summary Mail Commands:: Sending mail. +* Summary Post Commands:: Sending news. +* Summary Message Commands:: Other Message-related commands. +* Canceling and Superseding:: + +Marking Articles + +* Unread Articles:: Marks for unread articles. +* Read Articles:: Marks for read articles. +* Other Marks:: Marks that do not affect readedness. +* Setting Marks:: How to set and remove marks. +* Generic Marking Commands:: How to customize the marking. +* Setting Process Marks:: How to mark articles for later processing. + +Threading + +* Customizing Threading:: Variables you can change to affect the threading. +* Thread Commands:: Thread based commands in the summary buffer. + +Customizing Threading + +* Loose Threads:: How Gnus gathers loose threads into bigger threads. +* Filling In Threads:: Making the threads displayed look fuller. +* More Threading:: Even more variables for fiddling with threads. +* Low-Level Threading:: You thought it was over@dots{} but you were wrong! + +Decoding Articles + +* Uuencoded Articles:: Uudecode articles. +* Shell Archives:: Unshar articles. +* PostScript Files:: Split PostScript. +* Other Files:: Plain save and binhex. +* Decoding Variables:: Variables for a happy decoding. +* Viewing Files:: You want to look at the result of the decoding? + +Decoding Variables + +* Rule Variables:: Variables that say how a file is to be viewed. +* Other Decode Variables:: Other decode variables. +* Uuencoding and Posting:: Variables for customizing uuencoding. + +Article Treatment + +* Article Highlighting:: You want to make the article look like fruit salad. +* Article Fontisizing:: Making emphasized text look nice. +* Article Hiding:: You also want to make certain info go away. +* Article Washing:: Lots of way-neat functions to make life better. +* Article Header:: Doing various header transformations. +* Article Buttons:: Click on URLs, Message-IDs, addresses and the like. +* Article Button Levels:: Controlling appearance of buttons. +* Article Date:: Grumble, UT! +* Article Display:: Display various stuff---X-Face, Picons, Smileys +* Article Signature:: What is a signature? +* Article Miscellanea:: Various other stuff. + +Alternative Approaches + +* Pick and Read:: First mark articles and then read them. +* Binary Groups:: Auto-decode all articles. + +Various Summary Stuff + +* Summary Group Information:: Information oriented commands. +* Searching for Articles:: Multiple article commands. +* Summary Generation Commands:: +* Really Various Summary Commands:: Those pesky non-conformant commands. + +Article Buffer + +* Hiding Headers:: Deciding what headers should be displayed. +* Using MIME:: Pushing articles through @acronym{MIME} before reading them. +* Customizing Articles:: Tailoring the look of the articles. +* Article Keymap:: Keystrokes available in the article buffer. +* Misc Article:: Other stuff. + +Composing Messages + +* Mail:: Mailing and replying. +* Posting Server:: What server should you post and mail via? +* POP before SMTP:: You cannot send a mail unless you read a mail. +* Mail and Post:: Mailing and posting at the same time. +* Archived Messages:: Where Gnus stores the messages you've sent. +* Posting Styles:: An easier way to specify who you are. +* Drafts:: Postponing messages and rejected messages. +* Rejected Articles:: What happens if the server doesn't like your article? +* Signing and encrypting:: How to compose secure messages. + +Select Methods + +* Server Buffer:: Making and editing virtual servers. +* Getting News:: Reading USENET news with Gnus. +* Getting Mail:: Reading your personal mail with Gnus. +* Browsing the Web:: Getting messages from a plethora of Web sources. +* IMAP:: Using Gnus as a @acronym{IMAP} client. +* Other Sources:: Reading directories, files, SOUP packets. +* Combined Groups:: Combining groups into one group. +* Email Based Diary:: Using mails to manage diary events in Gnus. +* Gnus Unplugged:: Reading news and mail offline. + +Server Buffer + +* Server Buffer Format:: You can customize the look of this buffer. +* Server Commands:: Commands to manipulate servers. +* Example Methods:: Examples server specifications. +* Creating a Virtual Server:: An example session. +* Server Variables:: Which variables to set. +* Servers and Methods:: You can use server names as select methods. +* Unavailable Servers:: Some servers you try to contact may be down. + +Getting News + +* NNTP:: Reading news from an @acronym{NNTP} server. +* News Spool:: Reading news from the local spool. + +@acronym{NNTP} + +* Direct Functions:: Connecting directly to the server. +* Indirect Functions:: Connecting indirectly to the server. +* Common Variables:: Understood by several connection functions. + +Getting Mail + +* Mail in a Newsreader:: Important introductory notes. +* Getting Started Reading Mail:: A simple cookbook example. +* Splitting Mail:: How to create mail groups. +* Mail Sources:: How to tell Gnus where to get mail from. +* Mail Back End Variables:: Variables for customizing mail handling. +* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. +* Group Mail Splitting:: Use group customize to drive mail splitting. +* Incorporating Old Mail:: What about the old mail you have? +* Expiring Mail:: Getting rid of unwanted mail. +* Washing Mail:: Removing cruft from the mail you get. +* Duplicates:: Dealing with duplicated mail. +* Not Reading Mail:: Using mail back ends for reading other files. +* Choosing a Mail Back End:: Gnus can read a variety of mail formats. + +Mail Sources + +* Mail Source Specifiers:: How to specify what a mail source is. +* Mail Source Customization:: Some variables that influence things. +* Fetching Mail:: Using the mail source specifiers. + +Choosing a Mail Back End + +* Unix Mail Box:: Using the (quite) standard Un*x mbox. +* Rmail Babyl:: Emacs programs use the Rmail Babyl format. +* Mail Spool:: Store your mail in a private spool? +* MH Spool:: An mhspool-like back end. +* Maildir:: Another one-file-per-message format. +* Mail Folders:: Having one file for each group. +* Comparing Mail Back Ends:: An in-depth looks at pros and cons. + +Browsing the Web + +* Archiving Mail:: +* Web Searches:: Creating groups from articles that match a string. +* Slashdot:: Reading the Slashdot comments. +* Ultimate:: The Ultimate Bulletin Board systems. +* Web Archive:: Reading mailing list archived on web. +* RSS:: Reading RDF site summary. +* Customizing W3:: Doing stuff to Emacs/W3 from Gnus. + +@acronym{IMAP} + +* Splitting in IMAP:: Splitting mail with nnimap. +* Expiring in IMAP:: Expiring mail with nnimap. +* Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox. +* Expunging mailboxes:: Equivalent of a ``compress mailbox'' button. +* A note on namespaces:: How to (not) use @acronym{IMAP} namespace in Gnus. +* Debugging IMAP:: What to do when things don't work. + +Other Sources + +* Directory Groups:: You can read a directory as if it was a newsgroup. +* Anything Groups:: Dired? Who needs dired? +* Document Groups:: Single files can be the basis of a group. +* SOUP:: Reading @sc{soup} packets ``offline''. +* Mail-To-News Gateways:: Posting articles via mail-to-news gateways. + +Document Groups + +* Document Server Internals:: How to add your own document types. + +SOUP + +* SOUP Commands:: Commands for creating and sending @sc{soup} packets +* SOUP Groups:: A back end for reading @sc{soup} packets. +* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news. + +Combined Groups + +* Virtual Groups:: Combining articles from many groups. +* Kibozed Groups:: Looking through parts of the newsfeed for articles. + +Email Based Diary + +* The NNDiary Back End:: Basic setup and usage. +* The Gnus Diary Library:: Utility toolkit on top of nndiary. +* Sending or Not Sending:: A final note on sending diary messages. + +The NNDiary Back End + +* Diary Messages:: What makes a message valid for nndiary. +* Running NNDiary:: NNDiary has two modes of operation. +* Customizing NNDiary:: Bells and whistles. + +The Gnus Diary Library + +* Diary Summary Line Format:: A nicer summary buffer line format. +* Diary Articles Sorting:: A nicer way to sort messages. +* Diary Headers Generation:: Not doing it manually. +* Diary Group Parameters:: Not handling them manually. + +Gnus Unplugged + +* Agent Basics:: How it all is supposed to work. +* Agent Categories:: How to tell the Gnus Agent what to download. +* Agent Commands:: New commands for all the buffers. +* Agent Visuals:: Ways that the agent may effect your summary buffer. +* Agent as Cache:: The Agent is a big cache too. +* Agent Expiry:: How to make old articles go away. +* Agent Regeneration:: How to recover from lost connections and other accidents. +* Agent and IMAP:: How to use the Agent with @acronym{IMAP}. +* Outgoing Messages:: What happens when you post/mail something? +* Agent Variables:: Customizing is fun. +* Example Setup:: An example @file{~/.gnus.el} file for offline people. +* Batching Agents:: How to fetch news from a @code{cron} job. +* Agent Caveats:: What you think it'll do and what it does. + +Agent Categories + +* Category Syntax:: What a category looks like. +* Category Buffer:: A buffer for maintaining categories. +* Category Variables:: Customize'r'Us. + +Agent Commands + +* Group Agent Commands:: Configure groups and fetch their contents. +* Summary Agent Commands:: Manually select then fetch specific articles. +* Server Agent Commands:: Select the servers that are supported by the agent. + +Scoring + +* Summary Score Commands:: Adding score entries for the current group. +* Group Score Commands:: General score commands. +* Score Variables:: Customize your scoring. (My, what terminology). +* Score File Format:: What a score file may contain. +* Score File Editing:: You can edit score files by hand as well. +* Adaptive Scoring:: Big Sister Gnus knows what you read. +* Home Score File:: How to say where new score entries are to go. +* Followups To Yourself:: Having Gnus notice when people answer you. +* Scoring On Other Headers:: Scoring on non-standard headers. +* Scoring Tips:: How to score effectively. +* Reverse Scoring:: That problem child of old is not problem. +* Global Score Files:: Earth-spanning, ear-splitting score files. +* Kill Files:: They are still here, but they can be ignored. +* Converting Kill Files:: Translating kill files to score files. +* GroupLens:: Getting predictions on what you like to read. +* Advanced Scoring:: Using logical expressions to build score rules. +* Score Decays:: It can be useful to let scores wither away. + +GroupLens + +* Using GroupLens:: How to make Gnus use GroupLens. +* Rating Articles:: Letting GroupLens know how you rate articles. +* Displaying Predictions:: Displaying predictions given by GroupLens. +* GroupLens Variables:: Customizing GroupLens. + +Advanced Scoring + +* Advanced Scoring Syntax:: A definition. +* Advanced Scoring Examples:: What they look like. +* Advanced Scoring Tips:: Getting the most out of it. + +Various + +* Process/Prefix:: A convention used by many treatment commands. +* Interactive:: Making Gnus ask you many questions. +* Symbolic Prefixes:: How to supply some Gnus functions with options. +* Formatting Variables:: You can specify what buffers should look like. +* Window Layout:: Configuring the Gnus buffer windows. +* Faces and Fonts:: How to change how faces look. +* Compilation:: How to speed Gnus up. +* Mode Lines:: Displaying information in the mode lines. +* Highlighting and Menus:: Making buffers look all nice and cozy. +* Buttons:: Get tendinitis in ten easy steps! +* Daemons:: Gnus can do things behind your back. +* NoCeM:: How to avoid spam and other fatty foods. +* Undo:: Some actions can be undone. +* Predicate Specifiers:: Specifying predicates. +* Moderation:: What to do if you're a moderator. +* Image Enhancements:: Modern versions of Emacs/XEmacs can display images. +* Fuzzy Matching:: What's the big fuzz? +* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email. +* Spam Package:: A package for filtering and processing spam. +* Other modes:: Interaction with other modes. +* Various Various:: Things that are really various. + +Formatting Variables + +* Formatting Basics:: A formatting variable is basically a format string. +* Mode Line Formatting:: Some rules about mode line formatting variables. +* Advanced Formatting:: Modifying output in various ways. +* User-Defined Specs:: Having Gnus call your own functions. +* Formatting Fonts:: Making the formatting look colorful and nice. +* Positioning Point:: Moving point to a position after an operation. +* Tabulation:: Tabulating your output. +* Wide Characters:: Dealing with wide characters. + +Image Enhancements + +* X-Face:: Display a funky, teensy black-and-white image. +* Face:: Display a funkier, teensier colored image. +* Smileys:: Show all those happy faces the way they were + meant to be shown. +* Picons:: How to display pictures of what you're reading. +* XVarious:: Other XEmacsy Gnusey variables. + +Thwarting Email Spam + +* The problem of spam:: Some background, and some solutions +* Anti-Spam Basics:: Simple steps to reduce the amount of spam. +* SpamAssassin:: How to use external anti-spam tools. +* Hashcash:: Reduce spam by burning CPU time. + +Spam Package + +* Spam Package Introduction:: +* Filtering Incoming Mail:: +* Detecting Spam in Groups:: +* Spam and Ham Processors:: +* Spam Package Configuration Examples:: +* Spam Back Ends:: +* Extending the Spam package:: +* Spam Statistics Package:: + +Spam Statistics Package + +* Creating a spam-stat dictionary:: +* Splitting mail using spam-stat:: +* Low-level interface to the spam-stat dictionary:: + +Appendices + +* XEmacs:: Requirements for installing under XEmacs. +* History:: How Gnus got where it is today. +* On Writing Manuals:: Why this is not a beginner's guide. +* Terminology:: We use really difficult, like, words here. +* Customization:: Tailoring Gnus to your needs. +* Troubleshooting:: What you might try if things do not work. +* Gnus Reference Guide:: Rilly, rilly technical stuff. +* Emacs for Heathens:: A short introduction to Emacsian terms. +* Frequently Asked Questions:: The Gnus FAQ + +History + +* Gnus Versions:: What Gnus versions have been released. +* Other Gnus Versions:: Other Gnus versions that also have been released. +* Why?:: What's the point of Gnus? +* Compatibility:: Just how compatible is Gnus with @sc{gnus}? +* Conformity:: Gnus tries to conform to all standards. +* Emacsen:: Gnus can be run on a few modern Emacsen. +* Gnus Development:: How Gnus is developed. +* Contributors:: Oodles of people. +* New Features:: Pointers to some of the new stuff in Gnus. + +New Features + +* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus. +* September Gnus:: The Thing Formally Known As Gnus 5.2/5.3. +* Red Gnus:: Third time best---Gnus 5.4/5.5. +* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7. +* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9. +* Oort Gnus:: It's big. It's far out. Gnus 5.10/5.11. + +Customization + +* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere. +* Slow Terminal Connection:: You run a remote Emacs. +* Little Disk Space:: You feel that having large setup files is icky. +* Slow Machine:: You feel like buying a faster machine. + +Gnus Reference Guide + +* Gnus Utility Functions:: Common functions and variable to use. +* Back End Interface:: How Gnus communicates with the servers. +* Score File Syntax:: A BNF definition of the score file standard. +* Headers:: How Gnus stores headers internally. +* Ranges:: A handy format for storing mucho numbers. +* Group Info:: The group info format. +* Extended Interactive:: Symbolic prefixes and stuff. +* Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen. +* Various File Formats:: Formats of files that Gnus use. + +Back End Interface + +* Required Back End Functions:: Functions that must be implemented. +* Optional Back End Functions:: Functions that need not be implemented. +* Error Messaging:: How to get messages and report errors. +* Writing New Back Ends:: Extending old back ends. +* Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end. +* Mail-like Back Ends:: Some tips on mail back ends. + +Various File Formats + +* Active File Format:: Information on articles and groups available. +* Newsgroups File Format:: Group descriptions. + +Emacs for Heathens + +* Keystrokes:: Entering text and executing commands. +* Emacs Lisp:: The built-in Emacs programming language. + +@end detailmenu +@end menu + +@node Starting Up +@chapter Starting Gnus +@cindex starting up + +If you haven't used Emacs much before using Gnus, read @ref{Emacs for +Heathens} first. + +@kindex M-x gnus +@findex gnus +If your system administrator has set things up properly, starting Gnus +and reading news is extremely easy---you just type @kbd{M-x gnus} in +your Emacs. If not, you should customize the variable +@code{gnus-select-method} as described in @ref{Finding the News}. For a +minimal setup for posting should also customize the variables +@code{user-full-name} and @code{user-mail-address}. + +@findex gnus-other-frame +@kindex M-x gnus-other-frame +If you want to start Gnus in a different frame, you can use the command +@kbd{M-x gnus-other-frame} instead. + +If things do not go smoothly at startup, you have to twiddle some +variables in your @file{~/.gnus.el} file. This file is similar to +@file{~/.emacs}, but is read when Gnus starts. + +If you puzzle at any terms used in this manual, please refer to the +terminology section (@pxref{Terminology}). + +@menu +* Finding the News:: Choosing a method for getting news. +* The First Time:: What does Gnus do the first time you start it? +* The Server is Down:: How can I read my mail then? +* Slave Gnusae:: You can have more than one Gnus active at a time. +* New Groups:: What is Gnus supposed to do with new groups? +* Changing Servers:: You may want to move from one server to another. +* Startup Files:: Those pesky startup files---@file{.newsrc}. +* Auto Save:: Recovering from a crash. +* The Active File:: Reading the active file over a slow line Takes Time. +* Startup Variables:: Other variables you might change. +@end menu + + +@node Finding the News +@section Finding the News +@cindex finding news + +@vindex gnus-select-method +@c @head +The @code{gnus-select-method} variable says where Gnus should look for +news. This variable should be a list where the first element says +@dfn{how} and the second element says @dfn{where}. This method is your +native method. All groups not fetched with this method are +foreign groups. + +For instance, if the @samp{news.somewhere.edu} @acronym{NNTP} server is where +you want to get your daily dosage of news from, you'd say: + +@lisp +(setq gnus-select-method '(nntp "news.somewhere.edu")) +@end lisp + +If you want to read directly from the local spool, say: + +@lisp +(setq gnus-select-method '(nnspool "")) +@end lisp + +If you can use a local spool, you probably should, as it will almost +certainly be much faster. But do not use the local spool if your +server is running Leafnode (which is a simple, standalone private news +server); in this case, use @code{(nntp "localhost")}. + +@vindex gnus-nntpserver-file +@cindex NNTPSERVER +@cindex @acronym{NNTP} server +If this variable is not set, Gnus will take a look at the +@env{NNTPSERVER} environment variable. If that variable isn't set, +Gnus will see whether @code{gnus-nntpserver-file} +(@file{/etc/nntpserver} by default) has any opinions on the matter. +If that fails as well, Gnus will try to use the machine running Emacs +as an @acronym{NNTP} server. That's a long shot, though. + +@vindex gnus-nntp-server +If @code{gnus-nntp-server} is set, this variable will override +@code{gnus-select-method}. You should therefore set +@code{gnus-nntp-server} to @code{nil}, which is what it is by default. + +@vindex gnus-secondary-servers +@vindex gnus-nntp-server +You can also make Gnus prompt you interactively for the name of an +@acronym{NNTP} server. If you give a non-numerical prefix to @code{gnus} +(i.e., @kbd{C-u M-x gnus}), Gnus will let you choose between the servers +in the @code{gnus-secondary-servers} list (if any). You can also just +type in the name of any server you feel like visiting. (Note that this +will set @code{gnus-nntp-server}, which means that if you then @kbd{M-x +gnus} later in the same Emacs session, Gnus will contact the same +server.) + +@findex gnus-group-browse-foreign-server +@kindex B (Group) +However, if you use one @acronym{NNTP} server regularly and are just +interested in a couple of groups from a different server, you would be +better served by using the @kbd{B} command in the group buffer. It will +let you have a look at what groups are available, and you can subscribe +to any of the groups you want to. This also makes @file{.newsrc} +maintenance much tidier. @xref{Foreign Groups}. + +@vindex gnus-secondary-select-methods +@c @head +A slightly different approach to foreign groups is to set the +@code{gnus-secondary-select-methods} variable. The select methods +listed in this variable are in many ways just as native as the +@code{gnus-select-method} server. They will also be queried for active +files during startup (if that's required), and new newsgroups that +appear on these servers will be subscribed (or not) just as native +groups are. + +For instance, if you use the @code{nnmbox} back end to read your mail, +you would typically set this variable to + +@lisp +(setq gnus-secondary-select-methods '((nnmbox ""))) +@end lisp + + +@node The First Time +@section The First Time +@cindex first time usage + +If no startup files exist (@pxref{Startup Files}), Gnus will try to +determine what groups should be subscribed by default. + +@vindex gnus-default-subscribed-newsgroups +If the variable @code{gnus-default-subscribed-newsgroups} is set, Gnus +will subscribe you to just those groups in that list, leaving the rest +killed. Your system administrator should have set this variable to +something useful. + +Since she hasn't, Gnus will just subscribe you to a few arbitrarily +picked groups (i.e., @samp{*.newusers}). (@dfn{Arbitrary} is defined +here as @dfn{whatever Lars thinks you should read}.) + +You'll also be subscribed to the Gnus documentation group, which should +help you with most common problems. + +If @code{gnus-default-subscribed-newsgroups} is @code{t}, Gnus will just +use the normal functions for handling new groups, and not do anything +special. + + +@node The Server is Down +@section The Server is Down +@cindex server errors + +If the default server is down, Gnus will understandably have some +problems starting. However, if you have some mail groups in addition to +the news groups, you may want to start Gnus anyway. + +Gnus, being the trusting sort of program, will ask whether to proceed +without a native select method if that server can't be contacted. This +will happen whether the server doesn't actually exist (i.e., you have +given the wrong address) or the server has just momentarily taken ill +for some reason or other. If you decide to continue and have no foreign +groups, you'll find it difficult to actually do anything in the group +buffer. But, hey, that's your problem. Blllrph! + +@findex gnus-no-server +@kindex M-x gnus-no-server +@c @head +If you know that the server is definitely down, or you just want to read +your mail without bothering with the server at all, you can use the +@code{gnus-no-server} command to start Gnus. That might come in handy +if you're in a hurry as well. This command will not attempt to contact +your primary server---instead, it will just activate all groups on level +1 and 2. (You should preferably keep no native groups on those two +levels.) Also @pxref{Group Levels}. + + +@node Slave Gnusae +@section Slave Gnusae +@cindex slave + +You might want to run more than one Emacs with more than one Gnus at the +same time. If you are using different @file{.newsrc} files (e.g., if you +are using the two different Gnusae to read from two different servers), +that is no problem whatsoever. You just do it. + +The problem appears when you want to run two Gnusae that use the same +@file{.newsrc} file. + +To work around that problem some, we here at the Think-Tank at the Gnus +Towers have come up with a new concept: @dfn{Masters} and +@dfn{slaves}. (We have applied for a patent on this concept, and have +taken out a copyright on those words. If you wish to use those words in +conjunction with each other, you have to send $1 per usage instance to +me. Usage of the patent (@dfn{Master/Slave Relationships In Computer +Applications}) will be much more expensive, of course.) + +@findex gnus-slave +Anyway, you start one Gnus up the normal way with @kbd{M-x gnus} (or +however you do it). Each subsequent slave Gnusae should be started with +@kbd{M-x gnus-slave}. These slaves won't save normal @file{.newsrc} +files, but instead save @dfn{slave files} that contain information only +on what groups have been read in the slave session. When a master Gnus +starts, it will read (and delete) these slave files, incorporating all +information from them. (The slave files will be read in the sequence +they were created, so the latest changes will have precedence.) + +Information from the slave files has, of course, precedence over the +information in the normal (i.e., master) @file{.newsrc} file. + +If the @file{.newsrc*} files have not been saved in the master when the +slave starts, you may be prompted as to whether to read an auto-save +file. If you answer ``yes'', the unsaved changes to the master will be +incorporated into the slave. If you answer ``no'', the slave may see some +messages as unread that have been read in the master. + + + +@node New Groups +@section New Groups +@cindex new groups +@cindex subscription + +@vindex gnus-check-new-newsgroups +If you are satisfied that you really never want to see any new groups, +you can set @code{gnus-check-new-newsgroups} to @code{nil}. This will +also save you some time at startup. Even if this variable is +@code{nil}, you can always subscribe to the new groups just by pressing +@kbd{U} in the group buffer (@pxref{Group Maintenance}). This variable +is @code{ask-server} by default. If you set this variable to +@code{always}, then Gnus will query the back ends for new groups even +when you do the @kbd{g} command (@pxref{Scanning New Messages}). + +@menu +* Checking New Groups:: Determining what groups are new. +* Subscription Methods:: What Gnus should do with new groups. +* Filtering New Groups:: Making Gnus ignore certain new groups. +@end menu + + +@node Checking New Groups +@subsection Checking New Groups + +Gnus normally determines whether a group is new or not by comparing the +list of groups from the active file(s) with the lists of subscribed and +dead groups. This isn't a particularly fast method. If +@code{gnus-check-new-newsgroups} is @code{ask-server}, Gnus will ask the +server for new groups since the last time. This is both faster and +cheaper. This also means that you can get rid of the list of killed +groups altogether, so you may set @code{gnus-save-killed-list} to +@code{nil}, which will save time both at startup, at exit, and all over. +Saves disk space, too. Why isn't this the default, then? +Unfortunately, not all servers support this command. + +I bet I know what you're thinking now: How do I find out whether my +server supports @code{ask-server}? No? Good, because I don't have a +fail-safe answer. I would suggest just setting this variable to +@code{ask-server} and see whether any new groups appear within the next +few days. If any do, then it works. If none do, then it doesn't +work. I could write a function to make Gnus guess whether the server +supports @code{ask-server}, but it would just be a guess. So I won't. +You could @code{telnet} to the server and say @code{HELP} and see +whether it lists @samp{NEWGROUPS} among the commands it understands. If +it does, then it might work. (But there are servers that lists +@samp{NEWGROUPS} without supporting the function properly.) + +This variable can also be a list of select methods. If so, Gnus will +issue an @code{ask-server} command to each of the select methods, and +subscribe them (or not) using the normal methods. This might be handy +if you are monitoring a few servers for new groups. A side effect is +that startup will take much longer, so you can meditate while waiting. +Use the mantra ``dingnusdingnusdingnus'' to achieve permanent bliss. + + +@node Subscription Methods +@subsection Subscription Methods + +@vindex gnus-subscribe-newsgroup-method +What Gnus does when it encounters a new group is determined by the +@code{gnus-subscribe-newsgroup-method} variable. + +This variable should contain a function. This function will be called +with the name of the new group as the only parameter. + +Some handy pre-fab functions are: + +@table @code + +@item gnus-subscribe-zombies +@vindex gnus-subscribe-zombies +Make all new groups zombies. This is the default. You can browse the +zombies later (with @kbd{A z}) and either kill them all off properly +(with @kbd{S z}), or subscribe to them (with @kbd{u}). + +@item gnus-subscribe-randomly +@vindex gnus-subscribe-randomly +Subscribe all new groups in arbitrary order. This really means that all +new groups will be added at ``the top'' of the group buffer. + +@item gnus-subscribe-alphabetically +@vindex gnus-subscribe-alphabetically +Subscribe all new groups in alphabetical order. + +@item gnus-subscribe-hierarchically +@vindex gnus-subscribe-hierarchically +Subscribe all new groups hierarchically. The difference between this +function and @code{gnus-subscribe-alphabetically} is slight. +@code{gnus-subscribe-alphabetically} will subscribe new groups in a strictly +alphabetical fashion, while this function will enter groups into its +hierarchy. So if you want to have the @samp{rec} hierarchy before the +@samp{comp} hierarchy, this function will not mess that configuration +up. Or something like that. + +@item gnus-subscribe-interactively +@vindex gnus-subscribe-interactively +Subscribe new groups interactively. This means that Gnus will ask +you about @strong{all} new groups. The groups you choose to subscribe +to will be subscribed hierarchically. + +@item gnus-subscribe-killed +@vindex gnus-subscribe-killed +Kill all new groups. + +@item gnus-subscribe-topics +@vindex gnus-subscribe-topics +Put the groups into the topic that has a matching @code{subscribe} topic +parameter (@pxref{Topic Parameters}). For instance, a @code{subscribe} +topic parameter that looks like + +@example +"nnslashdot" +@end example + +will mean that all groups that match that regex will be subscribed under +that topic. + +If no topics match the groups, the groups will be subscribed in the +top-level topic. + +@end table + +@vindex gnus-subscribe-hierarchical-interactive +A closely related variable is +@code{gnus-subscribe-hierarchical-interactive}. (That's quite a +mouthful.) If this variable is non-@code{nil}, Gnus will ask you in a +hierarchical fashion whether to subscribe to new groups or not. Gnus +will ask you for each sub-hierarchy whether you want to descend the +hierarchy or not. + +One common mistake is to set the variable a few paragraphs above +(@code{gnus-subscribe-newsgroup-method}) to +@code{gnus-subscribe-hierarchical-interactive}. This is an error. This +will not work. This is ga-ga. So don't do it. + + +@node Filtering New Groups +@subsection Filtering New Groups + +A nice and portable way to control which new newsgroups should be +subscribed (or ignored) is to put an @dfn{options} line at the start of +the @file{.newsrc} file. Here's an example: + +@example +options -n !alt.all !rec.all sci.all +@end example + +@vindex gnus-subscribe-options-newsgroup-method +This line obviously belongs to a serious-minded intellectual scientific +person (or she may just be plain old boring), because it says that all +groups that have names beginning with @samp{alt} and @samp{rec} should +be ignored, and all groups with names beginning with @samp{sci} should +be subscribed. Gnus will not use the normal subscription method for +subscribing these groups. +@code{gnus-subscribe-options-newsgroup-method} is used instead. This +variable defaults to @code{gnus-subscribe-alphabetically}. + +@vindex gnus-options-not-subscribe +@vindex gnus-options-subscribe +If you don't want to mess with your @file{.newsrc} file, you can just +set the two variables @code{gnus-options-subscribe} and +@code{gnus-options-not-subscribe}. These two variables do exactly the +same as the @file{.newsrc} @samp{options -n} trick. Both are regexps, +and if the new group matches the former, it will be unconditionally +subscribed, and if it matches the latter, it will be ignored. + +@vindex gnus-auto-subscribed-groups +Yet another variable that meddles here is +@code{gnus-auto-subscribed-groups}. It works exactly like +@code{gnus-options-subscribe}, and is therefore really superfluous, +but I thought it would be nice to have two of these. This variable is +more meant for setting some ground rules, while the other variable is +used more for user fiddling. By default this variable makes all new +groups that come from mail back ends (@code{nnml}, @code{nnbabyl}, +@code{nnfolder}, @code{nnmbox}, @code{nnmh}, and @code{nnmaildir}) +subscribed. If you don't like that, just set this variable to +@code{nil}. + +New groups that match this regexp are subscribed using +@code{gnus-subscribe-options-newsgroup-method}. + + +@node Changing Servers +@section Changing Servers +@cindex changing servers + +Sometimes it is necessary to move from one @acronym{NNTP} server to another. +This happens very rarely, but perhaps you change jobs, or one server is +very flaky and you want to use another. + +Changing the server is pretty easy, right? You just change +@code{gnus-select-method} to point to the new server? + +@emph{Wrong!} + +Article numbers are not (in any way) kept synchronized between different +@acronym{NNTP} servers, and the only way Gnus keeps track of what articles +you have read is by keeping track of article numbers. So when you +change @code{gnus-select-method}, your @file{.newsrc} file becomes +worthless. + +Gnus provides a few functions to attempt to translate a @file{.newsrc} +file from one server to another. They all have one thing in +common---they take a looong time to run. You don't want to use these +functions more than absolutely necessary. + +@kindex M-x gnus-change-server +@findex gnus-change-server +If you have access to both servers, Gnus can request the headers for all +the articles you have read and compare @code{Message-ID}s and map the +article numbers of the read articles and article marks. The @kbd{M-x +gnus-change-server} command will do this for all your native groups. It +will prompt for the method you want to move to. + +@kindex M-x gnus-group-move-group-to-server +@findex gnus-group-move-group-to-server +You can also move individual groups with the @kbd{M-x +gnus-group-move-group-to-server} command. This is useful if you want to +move a (foreign) group from one server to another. + +@kindex M-x gnus-group-clear-data-on-native-groups +@findex gnus-group-clear-data-on-native-groups +If you don't have access to both the old and new server, all your marks +and read ranges have become worthless. You can use the @kbd{M-x +gnus-group-clear-data-on-native-groups} command to clear out all data +that you have on your native groups. Use with caution. + +@kindex M-x gnus-group-clear-data +@findex gnus-group-clear-data +Clear the data from the current group only---nix out marks and the +list of read articles (@code{gnus-group-clear-data}). + +After changing servers, you @strong{must} move the cache hierarchy away, +since the cached articles will have wrong article numbers, which will +affect which articles Gnus thinks are read. +@code{gnus-group-clear-data-on-native-groups} will ask you if you want +to have it done automatically; for @code{gnus-group-clear-data}, you +can use @kbd{M-x gnus-cache-move-cache} (but beware, it will move the +cache for all groups). + + +@node Startup Files +@section Startup Files +@cindex startup files +@cindex .newsrc +@cindex .newsrc.el +@cindex .newsrc.eld + +Most common Unix news readers use a shared startup file called +@file{.newsrc}. This file contains all the information about what +groups are subscribed, and which articles in these groups have been +read. + +Things got a bit more complicated with @sc{gnus}. In addition to +keeping the @file{.newsrc} file updated, it also used a file called +@file{.newsrc.el} for storing all the information that didn't fit into +the @file{.newsrc} file. (Actually, it also duplicated everything in +the @file{.newsrc} file.) @sc{gnus} would read whichever one of these +files was the most recently saved, which enabled people to swap between +@sc{gnus} and other newsreaders. + +That was kinda silly, so Gnus went one better: In addition to the +@file{.newsrc} and @file{.newsrc.el} files, Gnus also has a file called +@file{.newsrc.eld}. It will read whichever of these files that are most +recent, but it will never write a @file{.newsrc.el} file. You should +never delete the @file{.newsrc.eld} file---it contains much information +not stored in the @file{.newsrc} file. + +@vindex gnus-save-newsrc-file +@vindex gnus-read-newsrc-file +You can turn off writing the @file{.newsrc} file by setting +@code{gnus-save-newsrc-file} to @code{nil}, which means you can delete +the file and save some space, as well as exiting from Gnus faster. +However, this will make it impossible to use other newsreaders than +Gnus. But hey, who would want to, right? Similarly, setting +@code{gnus-read-newsrc-file} to @code{nil} makes Gnus ignore the +@file{.newsrc} file and any @file{.newsrc-SERVER} files, which can be +convenient if you use a different news reader occasionally, and you +want to read a different subset of the available groups with that +news reader. + +@vindex gnus-save-killed-list +If @code{gnus-save-killed-list} (default @code{t}) is @code{nil}, Gnus +will not save the list of killed groups to the startup file. This will +save both time (when starting and quitting) and space (on disk). It +will also mean that Gnus has no record of what groups are new or old, +so the automatic new groups subscription methods become meaningless. +You should always set @code{gnus-check-new-newsgroups} to @code{nil} or +@code{ask-server} if you set this variable to @code{nil} (@pxref{New +Groups}). This variable can also be a regular expression. If that's +the case, remove all groups that do not match this regexp before +saving. This can be useful in certain obscure situations that involve +several servers where not all servers support @code{ask-server}. + +@vindex gnus-startup-file +@vindex gnus-backup-startup-file +@vindex version-control +The @code{gnus-startup-file} variable says where the startup files are. +The default value is @file{~/.newsrc}, with the Gnus (El Dingo) startup +file being whatever that one is, with a @samp{.eld} appended. +If you want version control for this file, set +@code{gnus-backup-startup-file}. It respects the same values as the +@code{version-control} variable. + +@vindex gnus-save-newsrc-hook +@vindex gnus-save-quick-newsrc-hook +@vindex gnus-save-standard-newsrc-hook +@code{gnus-save-newsrc-hook} is called before saving any of the newsrc +files, while @code{gnus-save-quick-newsrc-hook} is called just before +saving the @file{.newsrc.eld} file, and +@code{gnus-save-standard-newsrc-hook} is called just before saving the +@file{.newsrc} file. The latter two are commonly used to turn version +control on or off. Version control is on by default when saving the +startup files. If you want to turn backup creation off, say something like: + +@lisp +(defun turn-off-backup () + (set (make-local-variable 'backup-inhibited) t)) + +(add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup) +(add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup) +@end lisp + +@vindex gnus-init-file +@vindex gnus-site-init-file +When Gnus starts, it will read the @code{gnus-site-init-file} +(@file{.../site-lisp/gnus-init} by default) and @code{gnus-init-file} +(@file{~/.gnus} by default) files. These are normal Emacs Lisp files +and can be used to avoid cluttering your @file{~/.emacs} and +@file{site-init} files with Gnus stuff. Gnus will also check for files +with the same names as these, but with @file{.elc} and @file{.el} +suffixes. In other words, if you have set @code{gnus-init-file} to +@file{~/.gnus}, it will look for @file{~/.gnus.elc}, @file{~/.gnus.el}, +and finally @file{~/.gnus} (in this order). If Emacs was invoked with +the @option{-q} or @option{--no-init-file} options (@pxref{Initial +Options, ,Initial Options, emacs, The Emacs Manual}), Gnus doesn't read +@code{gnus-init-file}. + + +@node Auto Save +@section Auto Save +@cindex dribble file +@cindex auto-save + +Whenever you do something that changes the Gnus data (reading articles, +catching up, killing/subscribing groups), the change is added to a +special @dfn{dribble buffer}. This buffer is auto-saved the normal +Emacs way. If your Emacs should crash before you have saved the +@file{.newsrc} files, all changes you have made can be recovered from +this file. + +If Gnus detects this file at startup, it will ask the user whether to +read it. The auto save file is deleted whenever the real startup file is +saved. + +@vindex gnus-use-dribble-file +If @code{gnus-use-dribble-file} is @code{nil}, Gnus won't create and +maintain a dribble buffer. The default is @code{t}. + +@vindex gnus-dribble-directory +Gnus will put the dribble file(s) in @code{gnus-dribble-directory}. If +this variable is @code{nil}, which it is by default, Gnus will dribble +into the directory where the @file{.newsrc} file is located. (This is +normally the user's home directory.) The dribble file will get the same +file permissions as the @file{.newsrc} file. + +@vindex gnus-always-read-dribble-file +If @code{gnus-always-read-dribble-file} is non-@code{nil}, Gnus will +read the dribble file on startup without querying the user. + + +@node The Active File +@section The Active File +@cindex active file +@cindex ignored groups + +When Gnus starts, or indeed whenever it tries to determine whether new +articles have arrived, it reads the active file. This is a very large +file that lists all the active groups and articles on the server. + +@vindex gnus-ignored-newsgroups +Before examining the active file, Gnus deletes all lines that match the +regexp @code{gnus-ignored-newsgroups}. This is done primarily to reject +any groups with bogus names, but you can use this variable to make Gnus +ignore hierarchies you aren't ever interested in. However, this is not +recommended. In fact, it's highly discouraged. Instead, @pxref{New +Groups} for an overview of other variables that can be used instead. + +@c This variable is +@c @code{nil} by default, and will slow down active file handling somewhat +@c if you set it to anything else. + +@vindex gnus-read-active-file +@c @head +The active file can be rather Huge, so if you have a slow network, you +can set @code{gnus-read-active-file} to @code{nil} to prevent Gnus from +reading the active file. This variable is @code{some} by default. + +Gnus will try to make do by getting information just on the groups that +you actually subscribe to. + +Note that if you subscribe to lots and lots of groups, setting this +variable to @code{nil} will probably make Gnus slower, not faster. At +present, having this variable @code{nil} will slow Gnus down +considerably, unless you read news over a 2400 baud modem. + +This variable can also have the value @code{some}. Gnus will then +attempt to read active info only on the subscribed groups. On some +servers this is quite fast (on sparkling, brand new INN servers that +support the @code{LIST ACTIVE group} command), on others this isn't fast +at all. In any case, @code{some} should be faster than @code{nil}, and +is certainly faster than @code{t} over slow lines. + +Some news servers (old versions of Leafnode and old versions of INN, for +instance) do not support the @code{LIST ACTIVE group}. For these +servers, @code{nil} is probably the most efficient value for this +variable. + +If this variable is @code{nil}, Gnus will ask for group info in total +lock-step, which isn't very fast. If it is @code{some} and you use an +@acronym{NNTP} server, Gnus will pump out commands as fast as it can, and +read all the replies in one swoop. This will normally result in better +performance, but if the server does not support the aforementioned +@code{LIST ACTIVE group} command, this isn't very nice to the server. + +If you think that starting up Gnus takes too long, try all the three +different values for this variable and see what works best for you. + +In any case, if you use @code{some} or @code{nil}, you should definitely +kill all groups that you aren't interested in to speed things up. + +Note that this variable also affects active file retrieval from +secondary select methods. + + +@node Startup Variables +@section Startup Variables + +@table @code + +@item gnus-load-hook +@vindex gnus-load-hook +A hook run while Gnus is being loaded. Note that this hook will +normally be run just once in each Emacs session, no matter how many +times you start Gnus. + +@item gnus-before-startup-hook +@vindex gnus-before-startup-hook +A hook run after starting up Gnus successfully. + +@item gnus-startup-hook +@vindex gnus-startup-hook +A hook run as the very last thing after starting up Gnus + +@item gnus-started-hook +@vindex gnus-started-hook +A hook that is run as the very last thing after starting up Gnus +successfully. + +@item gnus-setup-news-hook +@vindex gnus-setup-news-hook +A hook that is run after reading the @file{.newsrc} file(s), but before +generating the group buffer. + +@item gnus-check-bogus-newsgroups +@vindex gnus-check-bogus-newsgroups +If non-@code{nil}, Gnus will check for and delete all bogus groups at +startup. A @dfn{bogus group} is a group that you have in your +@file{.newsrc} file, but doesn't exist on the news server. Checking for +bogus groups can take quite a while, so to save time and resources it's +best to leave this option off, and do the checking for bogus groups once +in a while from the group buffer instead (@pxref{Group Maintenance}). + +@item gnus-inhibit-startup-message +@vindex gnus-inhibit-startup-message +If non-@code{nil}, the startup message won't be displayed. That way, +your boss might not notice as easily that you are reading news instead +of doing your job. Note that this variable is used before +@file{~/.gnus.el} is loaded, so it should be set in @file{.emacs} instead. + +@item gnus-no-groups-message +@vindex gnus-no-groups-message +Message displayed by Gnus when no groups are available. + +@item gnus-play-startup-jingle +@vindex gnus-play-startup-jingle +If non-@code{nil}, play the Gnus jingle at startup. + +@item gnus-startup-jingle +@vindex gnus-startup-jingle +Jingle to be played if the above variable is non-@code{nil}. The +default is @samp{Tuxedomoon.Jingle4.au}. + +@end table + + +@node Group Buffer +@chapter Group Buffer +@cindex group buffer + +@c Alex Schroeder suggests to rearrange this as follows: +@c +@c ok, just save it for reference. I'll go to bed in a minute. +@c 1. Selecting a Group, 2. (new) Finding a Group, 3. Group Levels, +@c 4. Subscription Commands, 5. Group Maneuvering, 6. Group Data, +@c 7. Group Score, 8. Group Buffer Format +@c Group Levels should have more information on levels 5 to 9. I +@c suggest to split the 4th paragraph ("Gnus considers groups...") as follows: +@c First, "Gnus considers groups... (default 9)." +@c New, a table summarizing what levels 1 to 9 mean. +@c Third, "Gnus treats subscribed ... reasons of efficiency" +@c Then expand the next paragraph or add some more to it. +@c This short one sentence explains levels 1 and 2, therefore I understand +@c that I should keep important news at 3 and boring news at 4. +@c Say so! Then go on to explain why I should bother with levels 6 to 9. +@c Maybe keep those that you don't want to read temporarily at 6, +@c those that you never want to read at 8, those that offend your +@c human rights at 9... + + +The @dfn{group buffer} lists all (or parts) of the available groups. It +is the first buffer shown when Gnus starts, and will never be killed as +long as Gnus is active. + +@iftex +@iflatex +\gnusfigure{The Group Buffer}{320}{ +\put(75,50){\epsfig{figure=ps/group,height=9cm}} +\put(120,37){\makebox(0,0)[t]{Buffer name}} +\put(120,38){\vector(1,2){10}} +\put(40,60){\makebox(0,0)[r]{Mode line}} +\put(40,58){\vector(1,0){30}} +\put(200,28){\makebox(0,0)[t]{Native select method}} +\put(200,26){\vector(-1,2){15}} +} +@end iflatex +@end iftex + +@menu +* Group Buffer Format:: Information listed and how you can change it. +* Group Maneuvering:: Commands for moving in the group buffer. +* Selecting a Group:: Actually reading news. +* Subscription Commands:: Unsubscribing, killing, subscribing. +* Group Data:: Changing the info for a group. +* Group Levels:: Levels? What are those, then? +* Group Score:: A mechanism for finding out what groups you like. +* Marking Groups:: You can mark groups for later processing. +* Foreign Groups:: Creating and editing groups. +* Group Parameters:: Each group may have different parameters set. +* Listing Groups:: Gnus can list various subsets of the groups. +* Sorting Groups:: Re-arrange the group order. +* Group Maintenance:: Maintaining a tidy @file{.newsrc} file. +* Browse Foreign Server:: You can browse a server. See what it has to offer. +* Exiting Gnus:: Stop reading news and get some work done. +* Group Topics:: A folding group mode divided into topics. +* Misc Group Stuff:: Other stuff that you can to do. +@end menu + + +@node Group Buffer Format +@section Group Buffer Format + +@menu +* Group Line Specification:: Deciding how the group buffer is to look. +* Group Mode Line Specification:: The group buffer mode line. +* Group Highlighting:: Having nice colors in the group buffer. +@end menu + +You can customize the Group Mode tool bar, see @kbd{M-x +customize-apropos RET gnus-group-tool-bar}. This feature is only +available in Emacs. + +The tool bar icons are now (de)activated correctly depending on the +cursor position. Therefore, moving around in the Group Buffer is +slower. You can disable this via the variable +@code{gnus-group-update-tool-bar}. Its default value depends on your +Emacs version. + +@node Group Line Specification +@subsection Group Line Specification +@cindex group buffer format + +The default format of the group buffer is nice and dull, but you can +make it as exciting and ugly as you feel like. + +Here's a couple of example group lines: + +@example + 25: news.announce.newusers + * 0: alt.fan.andrea-dworkin +@end example + +Quite simple, huh? + +You can see that there are 25 unread articles in +@samp{news.announce.newusers}. There are no unread articles, but some +ticked articles, in @samp{alt.fan.andrea-dworkin} (see that little +asterisk at the beginning of the line?). + +@vindex gnus-group-line-format +You can change that format to whatever you want by fiddling with the +@code{gnus-group-line-format} variable. This variable works along the +lines of a @code{format} specification, which is pretty much the same as +a @code{printf} specifications, for those of you who use (feh!) C. +@xref{Formatting Variables}. + +@samp{%M%S%5y:%B%(%g%)\n} is the value that produced those lines above. + +There should always be a colon on the line; the cursor always moves to +the colon after performing an operation. @xref{Positioning +Point}. Nothing else is required---not even the group name. All +displayed text is just window dressing, and is never examined by Gnus. +Gnus stores all real information it needs using text properties. + +(Note that if you make a really strange, wonderful, spreadsheet-like +layout, everybody will believe you are hard at work with the accounting +instead of wasting time reading news.) + +Here's a list of all available format characters: + +@table @samp + +@item M +An asterisk if the group only has marked articles. + +@item S +Whether the group is subscribed. + +@item L +Level of subscribedness. + +@item N +Number of unread articles. + +@item I +Number of dormant articles. + +@item T +Number of ticked articles. + +@item R +Number of read articles. + +@item U +Number of unseen articles. + +@item t +Estimated total number of articles. (This is really @var{max-number} +minus @var{min-number} plus 1.) + +Gnus uses this estimation because the @acronym{NNTP} protocol provides +efficient access to @var{max-number} and @var{min-number} but getting +the true unread message count is not possible efficiently. For +hysterical raisins, even the mail back ends, where the true number of +unread messages might be available efficiently, use the same limited +interface. To remove this restriction from Gnus means that the back +end interface has to be changed, which is not an easy job. If you +want to work on this, please contact the Gnus mailing list. + +@item y +Number of unread, unticked, non-dormant articles. + +@item i +Number of ticked and dormant articles. + +@item g +Full group name. + +@item G +Group name. + +@item C +Group comment (@pxref{Group Parameters}) or group name if there is no +comment element in the group parameters. + +@item D +Newsgroup description. You need to read the group descriptions +before these will appear, and to do that, you either have to set +@code{gnus-read-active-file} or use the group buffer @kbd{M-d} +command. + +@item o +@samp{m} if moderated. + +@item O +@samp{(m)} if moderated. + +@item s +Select method. + +@item B +If the summary buffer for the group is open or not. + +@item n +Select from where. + +@item z +A string that looks like @samp{<%s:%n>} if a foreign select method is +used. + +@item P +Indentation based on the level of the topic (@pxref{Group Topics}). + +@item c +@vindex gnus-group-uncollapsed-levels +Short (collapsed) group name. The @code{gnus-group-uncollapsed-levels} +variable says how many levels to leave at the end of the group name. +The default is 1---this will mean that group names like +@samp{gnu.emacs.gnus} will be shortened to @samp{g.e.gnus}. + +@item m +@vindex gnus-new-mail-mark +@cindex % +@samp{%} (@code{gnus-new-mail-mark}) if there has arrived new mail to +the group lately. + +@item p +@samp{#} (@code{gnus-process-mark}) if the group is process marked. + +@item d +A string that says when you last read the group (@pxref{Group +Timestamp}). + +@item u +User defined specifier. The next character in the format string should +be a letter. Gnus will call the function +@code{gnus-user-format-function-}@samp{X}, where @samp{X} is the letter +following @samp{%u}. The function will be passed a single dummy +parameter as argument. The function should return a string, which will +be inserted into the buffer just like information from any other +specifier. +@end table + +@cindex * +All the ``number-of'' specs will be filled with an asterisk (@samp{*}) +if no info is available---for instance, if it is a non-activated foreign +group, or a bogus native group. + + +@node Group Mode Line Specification +@subsection Group Mode Line Specification +@cindex group mode line + +@vindex gnus-group-mode-line-format +The mode line can be changed by setting +@code{gnus-group-mode-line-format} (@pxref{Mode Line Formatting}). It +doesn't understand that many format specifiers: + +@table @samp +@item S +The native news server. +@item M +The native select method. +@end table + + +@node Group Highlighting +@subsection Group Highlighting +@cindex highlighting +@cindex group highlighting + +@vindex gnus-group-highlight +Highlighting in the group buffer is controlled by the +@code{gnus-group-highlight} variable. This is an alist with elements +that look like @code{(@var{form} . @var{face})}. If @var{form} evaluates to +something non-@code{nil}, the @var{face} will be used on the line. + +Here's an example value for this variable that might look nice if the +background is dark: + +@lisp +(cond (window-system + (setq custom-background-mode 'light) + (defface my-group-face-1 + '((t (:foreground "Red" :bold t))) "First group face") + (defface my-group-face-2 + '((t (:foreground "DarkSeaGreen4" :bold t))) + "Second group face") + (defface my-group-face-3 + '((t (:foreground "Green4" :bold t))) "Third group face") + (defface my-group-face-4 + '((t (:foreground "SteelBlue" :bold t))) "Fourth group face") + (defface my-group-face-5 + '((t (:foreground "Blue" :bold t))) "Fifth group face"))) + +(setq gnus-group-highlight + '(((> unread 200) . my-group-face-1) + ((and (< level 3) (zerop unread)) . my-group-face-2) + ((< level 3) . my-group-face-3) + ((zerop unread) . my-group-face-4) + (t . my-group-face-5))) +@end lisp + +Also @pxref{Faces and Fonts}. + +Variables that are dynamically bound when the forms are evaluated +include: + +@table @code +@item group +The group name. +@item unread +The number of unread articles in the group. +@item method +The select method. +@item mailp +Whether the group is a mail group. +@item level +The level of the group. +@item score +The score of the group. +@item ticked +The number of ticked articles in the group. +@item total +The total number of articles in the group. Or rather, +@var{max-number} minus @var{min-number} plus one. +@item topic +When using the topic minor mode, this variable is bound to the current +topic being inserted. +@end table + +When the forms are @code{eval}ed, point is at the beginning of the line +of the group in question, so you can use many of the normal Gnus +functions for snarfing info on the group. + +@vindex gnus-group-update-hook +@findex gnus-group-highlight-line +@code{gnus-group-update-hook} is called when a group line is changed. +It will not be called when @code{gnus-visual} is @code{nil}. This hook +calls @code{gnus-group-highlight-line} by default. + + +@node Group Maneuvering +@section Group Maneuvering +@cindex group movement + +All movement commands understand the numeric prefix and will behave as +expected, hopefully. + +@table @kbd + +@item n +@kindex n (Group) +@findex gnus-group-next-unread-group +Go to the next group that has unread articles +(@code{gnus-group-next-unread-group}). + +@item p +@itemx DEL +@kindex DEL (Group) +@kindex p (Group) +@findex gnus-group-prev-unread-group +Go to the previous group that has unread articles +(@code{gnus-group-prev-unread-group}). + +@item N +@kindex N (Group) +@findex gnus-group-next-group +Go to the next group (@code{gnus-group-next-group}). + +@item P +@kindex P (Group) +@findex gnus-group-prev-group +Go to the previous group (@code{gnus-group-prev-group}). + +@item M-n +@kindex M-n (Group) +@findex gnus-group-next-unread-group-same-level +Go to the next unread group on the same (or lower) level +(@code{gnus-group-next-unread-group-same-level}). + +@item M-p +@kindex M-p (Group) +@findex gnus-group-prev-unread-group-same-level +Go to the previous unread group on the same (or lower) level +(@code{gnus-group-prev-unread-group-same-level}). +@end table + +Three commands for jumping to groups: + +@table @kbd + +@item j +@kindex j (Group) +@findex gnus-group-jump-to-group +Jump to a group (and make it visible if it isn't already) +(@code{gnus-group-jump-to-group}). Killed groups can be jumped to, just +like living groups. + +@item , +@kindex , (Group) +@findex gnus-group-best-unread-group +Jump to the unread group with the lowest level +(@code{gnus-group-best-unread-group}). + +@item . +@kindex . (Group) +@findex gnus-group-first-unread-group +Jump to the first group with unread articles +(@code{gnus-group-first-unread-group}). +@end table + +@vindex gnus-group-goto-unread +If @code{gnus-group-goto-unread} is @code{nil}, all the movement +commands will move to the next group, not the next unread group. Even +the commands that say they move to the next unread group. The default +is @code{t}. + + +@node Selecting a Group +@section Selecting a Group +@cindex group selection + +@table @kbd + +@item SPACE +@kindex SPACE (Group) +@findex gnus-group-read-group +Select the current group, switch to the summary buffer and display the +first unread article (@code{gnus-group-read-group}). If there are no +unread articles in the group, or if you give a non-numerical prefix to +this command, Gnus will offer to fetch all the old articles in this +group from the server. If you give a numerical prefix @var{n}, @var{n} +determines the number of articles Gnus will fetch. If @var{n} is +positive, Gnus fetches the @var{n} newest articles, if @var{n} is +negative, Gnus fetches the @code{abs(@var{n})} oldest articles. + +Thus, @kbd{SPC} enters the group normally, @kbd{C-u SPC} offers old +articles, @kbd{C-u 4 2 SPC} fetches the 42 newest articles, and @kbd{C-u +- 4 2 SPC} fetches the 42 oldest ones. + +When you are in the group (in the Summary buffer), you can type +@kbd{M-g} to fetch new articles, or @kbd{C-u M-g} to also show the old +ones. + +@item RET +@kindex RET (Group) +@findex gnus-group-select-group +Select the current group and switch to the summary buffer +(@code{gnus-group-select-group}). Takes the same arguments as +@code{gnus-group-read-group}---the only difference is that this command +does not display the first unread article automatically upon group +entry. + +@item M-RET +@kindex M-RET (Group) +@findex gnus-group-quick-select-group +This does the same as the command above, but tries to do it with the +minimum amount of fuzz (@code{gnus-group-quick-select-group}). No +scoring/killing will be performed, there will be no highlights and no +expunging. This might be useful if you're in a real hurry and have to +enter some humongous group. If you give a 0 prefix to this command +(i.e., @kbd{0 M-RET}), Gnus won't even generate the summary buffer, +which is useful if you want to toggle threading before generating the +summary buffer (@pxref{Summary Generation Commands}). + +@item M-SPACE +@kindex M-SPACE (Group) +@findex gnus-group-visible-select-group +This is yet one more command that does the same as the @kbd{RET} +command, but this one does it without expunging and hiding dormants +(@code{gnus-group-visible-select-group}). + +@item C-M-RET +@kindex C-M-RET (Group) +@findex gnus-group-select-group-ephemerally +Finally, this command selects the current group ephemerally without +doing any processing of its contents +(@code{gnus-group-select-group-ephemerally}). Even threading has been +turned off. Everything you do in the group after selecting it in this +manner will have no permanent effects. + +@end table + +@vindex gnus-large-newsgroup +The @code{gnus-large-newsgroup} variable says what Gnus should +consider to be a big group. If it is @code{nil}, no groups are +considered big. The default value is 200. If the group has more +(unread and/or ticked) articles than this, Gnus will query the user +before entering the group. The user can then specify how many +articles should be fetched from the server. If the user specifies a +negative number (@var{-n}), the @var{n} oldest articles will be +fetched. If it is positive, the @var{n} articles that have arrived +most recently will be fetched. + +@vindex gnus-large-ephemeral-newsgroup +@code{gnus-large-ephemeral-newsgroup} is the same as +@code{gnus-large-newsgroup}, but is only used for ephemeral +newsgroups. + - @vindex gnus-maximum-newsgroup ++@vindex gnus-newsgroup-maximum-articles +In groups in some news servers, there might be a big gap between a few +very old articles that will never be expired and the recent ones. In +such a case, the server will return the data like @code{(1 . 30000000)} +for the @code{LIST ACTIVE group} command, for example. Even if there +are actually only the articles 1-10 and 29999900-30000000, Gnus doesn't +know it at first and prepares for getting 30000000 articles. However, +it will consume hundreds megabytes of memories and might make Emacs get +stuck as the case may be. If you use such news servers, set the - variable @code{gnus-maximum-newsgroup} to a positive number. The value - means that Gnus ignores articles other than this number of the latest - ones in every group. For instance, the value 10000 makes Gnus get only - the articles 29990001-30000000 (if the latest article number is 30000000 - in a group). Note that setting this variable to a number might prevent - you from reading very old articles. The default value of the variable - @code{gnus-maximum-newsgroup} is @code{nil}, which means Gnus never - ignores old articles. ++variable @code{gnus-newsgroup-maximum-articles} to a positive number. ++The value means that Gnus ignores articles other than this number of the ++latest ones in every group. For instance, the value 10000 makes Gnus ++get only the articles 29990001-30000000 (if the latest article number is ++30000000 in a group). Note that setting this variable to a number might ++prevent you from reading very old articles. The default value of the ++variable @code{gnus-newsgroup-maximum-articles} is @code{nil}, which ++means Gnus never ignores old articles. + +@vindex gnus-select-group-hook +@vindex gnus-auto-select-first +@vindex gnus-auto-select-subject +If @code{gnus-auto-select-first} is non-@code{nil}, select an article +automatically when entering a group with the @kbd{SPACE} command. +Which article this is is controlled by the +@code{gnus-auto-select-subject} variable. Valid values for this +variable are: + +@table @code + +@item unread +Place point on the subject line of the first unread article. + +@item first +Place point on the subject line of the first article. + +@item unseen +Place point on the subject line of the first unseen article. + +@item unseen-or-unread +Place point on the subject line of the first unseen article, and if +there is no such article, place point on the subject line of the first +unread article. + +@item best +Place point on the subject line of the highest-scored unread article. + +@end table + +This variable can also be a function. In that case, that function +will be called to place point on a subject line. + +If you want to prevent automatic selection in some group (say, in a +binary group with Huge articles) you can set the +@code{gnus-auto-select-first} variable to @code{nil} in +@code{gnus-select-group-hook}, which is called when a group is +selected. + + +@node Subscription Commands +@section Subscription Commands +@cindex subscription + +@table @kbd + +@item S t +@itemx u +@kindex S t (Group) +@kindex u (Group) +@findex gnus-group-unsubscribe-current-group +@c @icon{gnus-group-unsubscribe} +Toggle subscription to the current group +(@code{gnus-group-unsubscribe-current-group}). + +@item S s +@itemx U +@kindex S s (Group) +@kindex U (Group) +@findex gnus-group-unsubscribe-group +Prompt for a group to subscribe, and then subscribe it. If it was +subscribed already, unsubscribe it instead +(@code{gnus-group-unsubscribe-group}). + +@item S k +@itemx C-k +@kindex S k (Group) +@kindex C-k (Group) +@findex gnus-group-kill-group +@c @icon{gnus-group-kill-group} +Kill the current group (@code{gnus-group-kill-group}). + +@item S y +@itemx C-y +@kindex S y (Group) +@kindex C-y (Group) +@findex gnus-group-yank-group +Yank the last killed group (@code{gnus-group-yank-group}). + +@item C-x C-t +@kindex C-x C-t (Group) +@findex gnus-group-transpose-groups +Transpose two groups (@code{gnus-group-transpose-groups}). This isn't +really a subscription command, but you can use it instead of a +kill-and-yank sequence sometimes. + +@item S w +@itemx C-w +@kindex S w (Group) +@kindex C-w (Group) +@findex gnus-group-kill-region +Kill all groups in the region (@code{gnus-group-kill-region}). + +@item S z +@kindex S z (Group) +@findex gnus-group-kill-all-zombies +Kill all zombie groups (@code{gnus-group-kill-all-zombies}). + +@item S C-k +@kindex S C-k (Group) +@findex gnus-group-kill-level +Kill all groups on a certain level (@code{gnus-group-kill-level}). +These groups can't be yanked back after killing, so this command should +be used with some caution. The only time where this command comes in +really handy is when you have a @file{.newsrc} with lots of unsubscribed +groups that you want to get rid off. @kbd{S C-k} on level 7 will +kill off all unsubscribed groups that do not have message numbers in the +@file{.newsrc} file. + +@end table + +Also @pxref{Group Levels}. + + +@node Group Data +@section Group Data + +@table @kbd + +@item c +@kindex c (Group) +@findex gnus-group-catchup-current +@vindex gnus-group-catchup-group-hook +@c @icon{gnus-group-catchup-current} +Mark all unticked articles in this group as read +(@code{gnus-group-catchup-current}). +@code{gnus-group-catchup-group-hook} is called when catching up a group from +the group buffer. + +@item C +@kindex C (Group) +@findex gnus-group-catchup-current-all +Mark all articles in this group, even the ticked ones, as read +(@code{gnus-group-catchup-current-all}). + +@item M-c +@kindex M-c (Group) +@findex gnus-group-clear-data +Clear the data from the current group---nix out marks and the list of +read articles (@code{gnus-group-clear-data}). + +@item M-x gnus-group-clear-data-on-native-groups +@kindex M-x gnus-group-clear-data-on-native-groups +@findex gnus-group-clear-data-on-native-groups +If you have switched from one @acronym{NNTP} server to another, all your marks +and read ranges have become worthless. You can use this command to +clear out all data that you have on your native groups. Use with +caution. + +@end table + + +@node Group Levels +@section Group Levels +@cindex group level +@cindex level + +All groups have a level of @dfn{subscribedness}. For instance, if a +group is on level 2, it is more subscribed than a group on level 5. You +can ask Gnus to just list groups on a given level or lower +(@pxref{Listing Groups}), or to just check for new articles in groups on +a given level or lower (@pxref{Scanning New Messages}). + +Remember: The higher the level of the group, the less important it is. + +@table @kbd + +@item S l +@kindex S l (Group) +@findex gnus-group-set-current-level +Set the level of the current group. If a numeric prefix is given, the +next @var{n} groups will have their levels set. The user will be +prompted for a level. +@end table + +@vindex gnus-level-killed +@vindex gnus-level-zombie +@vindex gnus-level-unsubscribed +@vindex gnus-level-subscribed +Gnus considers groups from levels 1 to +@code{gnus-level-subscribed} (inclusive) (default 5) to be subscribed, +@code{gnus-level-subscribed} (exclusive) and +@code{gnus-level-unsubscribed} (inclusive) (default 7) to be +unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead) +(default 8) and @code{gnus-level-killed} to be killed (completely dead) +(default 9). Gnus treats subscribed and unsubscribed groups exactly the +same, but zombie and killed groups have no information on what articles +you have read, etc, stored. This distinction between dead and living +groups isn't done because it is nice or clever, it is done purely for +reasons of efficiency. + +It is recommended that you keep all your mail groups (if any) on quite +low levels (e.g. 1 or 2). + +Maybe the following description of the default behavior of Gnus helps to +understand what these levels are all about. By default, Gnus shows you +subscribed nonempty groups, but by hitting @kbd{L} you can have it show +empty subscribed groups and unsubscribed groups, too. Type @kbd{l} to +go back to showing nonempty subscribed groups again. Thus, unsubscribed +groups are hidden, in a way. + +Zombie and killed groups are similar to unsubscribed groups in that they +are hidden by default. But they are different from subscribed and +unsubscribed groups in that Gnus doesn't ask the news server for +information (number of messages, number of unread messages) on zombie +and killed groups. Normally, you use @kbd{C-k} to kill the groups you +aren't interested in. If most groups are killed, Gnus is faster. + +Why does Gnus distinguish between zombie and killed groups? Well, when +a new group arrives on the server, Gnus by default makes it a zombie +group. This means that you are normally not bothered with new groups, +but you can type @kbd{A z} to get a list of all new groups. Subscribe +the ones you like and kill the ones you don't want. (@kbd{A k} shows a +list of killed groups.) + +If you want to play with the level variables, you should show some care. +Set them once, and don't touch them ever again. Better yet, don't touch +them at all unless you know exactly what you're doing. + +@vindex gnus-level-default-unsubscribed +@vindex gnus-level-default-subscribed +Two closely related variables are @code{gnus-level-default-subscribed} +(default 3) and @code{gnus-level-default-unsubscribed} (default 6), +which are the levels that new groups will be put on if they are +(un)subscribed. These two variables should, of course, be inside the +relevant valid ranges. + +@vindex gnus-keep-same-level +If @code{gnus-keep-same-level} is non-@code{nil}, some movement commands +will only move to groups of the same level (or lower). In +particular, going from the last article in one group to the next group +will go to the next group of the same level (or lower). This might be +handy if you want to read the most important groups before you read the +rest. + +If this variable is @code{best}, Gnus will make the next newsgroup the +one with the best level. + +@vindex gnus-group-default-list-level +All groups with a level less than or equal to +@code{gnus-group-default-list-level} will be listed in the group buffer +by default. + +@vindex gnus-group-list-inactive-groups +If @code{gnus-group-list-inactive-groups} is non-@code{nil}, non-active +groups will be listed along with the unread groups. This variable is +@code{t} by default. If it is @code{nil}, inactive groups won't be +listed. + +@vindex gnus-group-use-permanent-levels +If @code{gnus-group-use-permanent-levels} is non-@code{nil}, once you +give a level prefix to @kbd{g} or @kbd{l}, all subsequent commands will +use this level as the ``work'' level. + +@vindex gnus-activate-level +Gnus will normally just activate (i. e., query the server about) groups +on level @code{gnus-activate-level} or less. If you don't want to +activate unsubscribed groups, for instance, you might set this variable +to 5. The default is 6. + + +@node Group Score +@section Group Score +@cindex group score +@cindex group rank +@cindex rank + +You would normally keep important groups on high levels, but that scheme +is somewhat restrictive. Don't you wish you could have Gnus sort the +group buffer according to how often you read groups, perhaps? Within +reason? + +This is what @dfn{group score} is for. You can have Gnus assign a score +to each group through the mechanism described below. You can then sort +the group buffer based on this score. Alternatively, you can sort on +score and then level. (Taken together, the level and the score is +called the @dfn{rank} of the group. A group that is on level 4 and has +a score of 1 has a higher rank than a group on level 5 that has a score +of 300. (The level is the most significant part and the score is the +least significant part.)) + +@findex gnus-summary-bubble-group +If you want groups you read often to get higher scores than groups you +read seldom you can add the @code{gnus-summary-bubble-group} function to +the @code{gnus-summary-exit-hook} hook. This will result (after +sorting) in a bubbling sort of action. If you want to see that in +action after each summary exit, you can add +@code{gnus-group-sort-groups-by-rank} or +@code{gnus-group-sort-groups-by-score} to the same hook, but that will +slow things down somewhat. + + +@node Marking Groups +@section Marking Groups +@cindex marking groups + +If you want to perform some command on several groups, and they appear +subsequently in the group buffer, you would normally just give a +numerical prefix to the command. Most group commands will then do your +bidding on those groups. + +However, if the groups are not in sequential order, you can still +perform a command on several groups. You simply mark the groups first +with the process mark and then execute the command. + +@table @kbd + +@item # +@kindex # (Group) +@itemx M m +@kindex M m (Group) +@findex gnus-group-mark-group +Set the mark on the current group (@code{gnus-group-mark-group}). + +@item M-# +@kindex M-# (Group) +@itemx M u +@kindex M u (Group) +@findex gnus-group-unmark-group +Remove the mark from the current group +(@code{gnus-group-unmark-group}). + +@item M U +@kindex M U (Group) +@findex gnus-group-unmark-all-groups +Remove the mark from all groups (@code{gnus-group-unmark-all-groups}). + +@item M w +@kindex M w (Group) +@findex gnus-group-mark-region +Mark all groups between point and mark (@code{gnus-group-mark-region}). + +@item M b +@kindex M b (Group) +@findex gnus-group-mark-buffer +Mark all groups in the buffer (@code{gnus-group-mark-buffer}). + +@item M r +@kindex M r (Group) +@findex gnus-group-mark-regexp +Mark all groups that match some regular expression +(@code{gnus-group-mark-regexp}). +@end table + +Also @pxref{Process/Prefix}. + +@findex gnus-group-universal-argument +If you want to execute some command on all groups that have been marked +with the process mark, you can use the @kbd{M-&} +(@code{gnus-group-universal-argument}) command. It will prompt you for +the command to be executed. + + +@node Foreign Groups +@section Foreign Groups +@cindex foreign groups + +Below are some group mode commands for making and editing general foreign +groups, as well as commands to ease the creation of a few +special-purpose groups. All these commands insert the newly created +groups under point---@code{gnus-subscribe-newsgroup-method} is not +consulted. + +Changes from the group editing commands are stored in +@file{~/.newsrc.eld} (@code{gnus-startup-file}). An alternative is the +variable @code{gnus-parameters}, @xref{Group Parameters}. + +@table @kbd + +@item G m +@kindex G m (Group) +@findex gnus-group-make-group +@cindex making groups +Make a new group (@code{gnus-group-make-group}). Gnus will prompt you +for a name, a method and possibly an @dfn{address}. For an easier way +to subscribe to @acronym{NNTP} groups (@pxref{Browse Foreign Server}). + +@item G M +@kindex G M (Group) +@findex gnus-group-read-ephemeral-group +Make an ephemeral group (@code{gnus-group-read-ephemeral-group}). Gnus +will prompt you for a name, a method and an @dfn{address}. + +@item G r +@kindex G r (Group) +@findex gnus-group-rename-group +@cindex renaming groups +Rename the current group to something else +(@code{gnus-group-rename-group}). This is valid only on some +groups---mail groups mostly. This command might very well be quite slow +on some back ends. + +@item G c +@kindex G c (Group) +@cindex customizing +@findex gnus-group-customize +Customize the group parameters (@code{gnus-group-customize}). + +@item G e +@kindex G e (Group) +@findex gnus-group-edit-group-method +@cindex renaming groups +Enter a buffer where you can edit the select method of the current +group (@code{gnus-group-edit-group-method}). + +@item G p +@kindex G p (Group) +@findex gnus-group-edit-group-parameters +Enter a buffer where you can edit the group parameters +(@code{gnus-group-edit-group-parameters}). + +@item G E +@kindex G E (Group) +@findex gnus-group-edit-group +Enter a buffer where you can edit the group info +(@code{gnus-group-edit-group}). + +@item G d +@kindex G d (Group) +@findex gnus-group-make-directory-group +@cindex nndir +Make a directory group (@pxref{Directory Groups}). You will be prompted +for a directory name (@code{gnus-group-make-directory-group}). + +@item G h +@kindex G h (Group) +@cindex help group +@findex gnus-group-make-help-group +Make the Gnus help group (@code{gnus-group-make-help-group}). + +@item G a +@kindex G a (Group) +@cindex (ding) archive +@cindex archive group +@findex gnus-group-make-archive-group +@vindex gnus-group-archive-directory +@vindex gnus-group-recent-archive-directory +Make a Gnus archive group (@code{gnus-group-make-archive-group}). By +default a group pointing to the most recent articles will be created +(@code{gnus-group-recent-archive-directory}), but given a prefix, a full +group will be created from @code{gnus-group-archive-directory}. + +@item G k +@kindex G k (Group) +@findex gnus-group-make-kiboze-group +@cindex nnkiboze +Make a kiboze group. You will be prompted for a name, for a regexp to +match groups to be ``included'' in the kiboze group, and a series of +strings to match on headers (@code{gnus-group-make-kiboze-group}). +@xref{Kibozed Groups}. + +@item G D +@kindex G D (Group) +@findex gnus-group-enter-directory +@cindex nneething +Read an arbitrary directory as if it were a newsgroup with the +@code{nneething} back end (@code{gnus-group-enter-directory}). +@xref{Anything Groups}. + +@item G f +@kindex G f (Group) +@findex gnus-group-make-doc-group +@cindex ClariNet Briefs +@cindex nndoc +Make a group based on some file or other +(@code{gnus-group-make-doc-group}). If you give a prefix to this +command, you will be prompted for a file name and a file type. +Currently supported types are @code{mbox}, @code{babyl}, +@code{digest}, @code{news}, @code{rnews}, @code{mmdf}, @code{forward}, +@code{rfc934}, @code{rfc822-forward}, @code{mime-parts}, +@code{standard-digest}, @code{slack-digest}, @code{clari-briefs}, +@code{nsmail}, @code{outlook}, @code{oe-dbx}, and @code{mailman}. If +you run this command without a prefix, Gnus will guess at the file +type. @xref{Document Groups}. + +@item G u +@kindex G u (Group) +@vindex gnus-useful-groups +@findex gnus-group-make-useful-group +Create one of the groups mentioned in @code{gnus-useful-groups} +(@code{gnus-group-make-useful-group}). + +@item G w +@kindex G w (Group) +@findex gnus-group-make-web-group +@cindex Google +@cindex nnweb +@cindex gmane +Make an ephemeral group based on a web search +(@code{gnus-group-make-web-group}). If you give a prefix to this +command, make a solid group instead. You will be prompted for the +search engine type and the search string. Valid search engine types +include @code{google}, @code{dejanews}, and @code{gmane}. +@xref{Web Searches}. + +If you use the @code{google} search engine, you can limit the search +to a particular group by using a match string like +@samp{shaving group:alt.sysadmin.recovery}. + +@item G R +@kindex G R (Group) +@findex gnus-group-make-rss-group +Make a group based on an @acronym{RSS} feed +(@code{gnus-group-make-rss-group}). You will be prompted for an URL. +@xref{RSS}. + +@item G DEL +@kindex G DEL (Group) +@findex gnus-group-delete-group +This function will delete the current group +(@code{gnus-group-delete-group}). If given a prefix, this function will +actually delete all the articles in the group, and forcibly remove the +group itself from the face of the Earth. Use a prefix only if you are +absolutely sure of what you are doing. This command can't be used on +read-only groups (like @code{nntp} groups), though. + +@item G V +@kindex G V (Group) +@findex gnus-group-make-empty-virtual +Make a new, fresh, empty @code{nnvirtual} group +(@code{gnus-group-make-empty-virtual}). @xref{Virtual Groups}. + +@item G v +@kindex G v (Group) +@findex gnus-group-add-to-virtual +Add the current group to an @code{nnvirtual} group +(@code{gnus-group-add-to-virtual}). Uses the process/prefix convention. +@end table + +@xref{Select Methods}, for more information on the various select +methods. + +@vindex gnus-activate-foreign-newsgroups +If @code{gnus-activate-foreign-newsgroups} is a positive number, +Gnus will check all foreign groups with this level or lower at startup. +This might take quite a while, especially if you subscribe to lots of +groups from different @acronym{NNTP} servers. Also @pxref{Group Levels}; +@code{gnus-activate-level} also affects activation of foreign +newsgroups. + + +@node Group Parameters +@section Group Parameters +@cindex group parameters + +The group parameters store information local to a particular group. +Here's an example group parameter list: + +@example +((to-address . "ding@@gnus.org") + (auto-expire . t)) +@end example + +We see that each element consists of a ``dotted pair''---the thing before +the dot is the key, while the thing after the dot is the value. All the +parameters have this form @emph{except} local variable specs, which are +not dotted pairs, but proper lists. + +Some parameters have correspondent customizable variables, each of which +is an alist of regexps and values. + +The following group parameters can be used: + +@table @code +@item to-address +@cindex to-address +Address used by when doing followups and new posts. + +@example +(to-address . "some@@where.com") +@end example + +This is primarily useful in mail groups that represent closed mailing +lists---mailing lists where it's expected that everybody that writes to +the mailing list is subscribed to it. Since using this parameter +ensures that the mail only goes to the mailing list itself, it means +that members won't receive two copies of your followups. + +Using @code{to-address} will actually work whether the group is foreign +or not. Let's say there's a group on the server that is called +@samp{fa.4ad-l}. This is a real newsgroup, but the server has gotten +the articles from a mail-to-news gateway. Posting directly to this +group is therefore impossible---you have to send mail to the mailing +list address instead. + +See also @code{gnus-parameter-to-address-alist}. + +@item to-list +@cindex to-list +Address used when doing @kbd{a} in that group. + +@example +(to-list . "some@@where.com") +@end example + +It is totally ignored +when doing a followup---except that if it is present in a news group, +you'll get mail group semantics when doing @kbd{f}. + +If you do an @kbd{a} command in a mail group and you have neither a +@code{to-list} group parameter nor a @code{to-address} group parameter, +then a @code{to-list} group parameter will be added automatically upon +sending the message if @code{gnus-add-to-list} is set to @code{t}. +@vindex gnus-add-to-list + +@findex gnus-mailing-list-mode +@cindex mail list groups +If this variable is set, @code{gnus-mailing-list-mode} is turned on when +entering summary buffer. + +See also @code{gnus-parameter-to-list-alist}. + +@anchor{subscribed} +@item subscribed +@cindex subscribed +@cindex Mail-Followup-To +@findex gnus-find-subscribed-addresses +If this parameter is set to @code{t}, Gnus will consider the +to-address and to-list parameters for this group as addresses of +mailing lists you are subscribed to. Giving Gnus this information is +(only) a first step in getting it to generate correct Mail-Followup-To +headers for your posts to these lists. The second step is to put the +following in your @file{.gnus.el} + +@lisp +(setq message-subscribed-address-functions + '(gnus-find-subscribed-addresses)) +@end lisp + +@xref{Mailing Lists, ,Mailing Lists, message, The Message Manual}, for +a complete treatment of available MFT support. + +@item visible +@cindex visible +If the group parameter list has the element @code{(visible . t)}, +that group will always be visible in the Group buffer, regardless +of whether it has any unread articles. + +This parameter cannot be set via @code{gnus-parameters}. See +@code{gnus-permanently-visible-groups} as an alternative. + +@item broken-reply-to +@cindex broken-reply-to +Elements like @code{(broken-reply-to . t)} signals that @code{Reply-To} +headers in this group are to be ignored, and for the header to be hidden +if @code{reply-to} is part of @code{gnus-boring-article-headers}. This +can be useful if you're reading a mailing list group where the listserv +has inserted @code{Reply-To} headers that point back to the listserv +itself. That is broken behavior. So there! + +@item to-group +@cindex to-group +Elements like @code{(to-group . "some.group.name")} means that all +posts in that group will be sent to @code{some.group.name}. + +@item newsgroup +@cindex newsgroup +If you have @code{(newsgroup . t)} in the group parameter list, Gnus +will treat all responses as if they were responses to news articles. +This can be useful if you have a mail group that's really a mirror of a +news group. + +@item gcc-self +@cindex gcc-self +If @code{(gcc-self . t)} is present in the group parameter list, newly +composed messages will be @code{Gcc}'d to the current group. If +@code{(gcc-self . none)} is present, no @code{Gcc:} header will be +generated, if @code{(gcc-self . "string")} is present, this string will +be inserted literally as a @code{gcc} header. This parameter takes +precedence over any default @code{Gcc} rules as described later +(@pxref{Archived Messages}). + +@strong{Caveat}: Adding @code{(gcc-self . t)} to the parameter list of +@code{nntp} groups (or the like) isn't valid. An @code{nntp} server +doesn't accept articles. + +@item auto-expire +@cindex auto-expire +@cindex expiring mail +If the group parameter has an element that looks like @code{(auto-expire +. t)}, all articles read will be marked as expirable. For an +alternative approach, @pxref{Expiring Mail}. + +See also @code{gnus-auto-expirable-newsgroups}. + +@item total-expire +@cindex total-expire +@cindex expiring mail +If the group parameter has an element that looks like +@code{(total-expire . t)}, all read articles will be put through the +expiry process, even if they are not marked as expirable. Use with +caution. Unread, ticked and dormant articles are not eligible for +expiry. + +See also @code{gnus-total-expirable-newsgroups}. + +@item expiry-wait +@cindex expiry-wait +@vindex nnmail-expiry-wait-function +If the group parameter has an element that looks like +@code{(expiry-wait . 10)}, this value will override any +@code{nnmail-expiry-wait} and @code{nnmail-expiry-wait-function} +(@pxref{Expiring Mail}) when expiring expirable messages. The value +can either be a number of days (not necessarily an integer) or the +symbols @code{never} or @code{immediate}. + +@item expiry-target +@cindex expiry-target +Where expired messages end up. This parameter overrides +@code{nnmail-expiry-target}. + +@item score-file +@cindex score file group parameter +Elements that look like @code{(score-file . "file")} will make +@file{file} into the current score file for the group in question. All +interactive score entries will be put into this file. + +@item adapt-file +@cindex adapt file group parameter +Elements that look like @code{(adapt-file . "file")} will make +@file{file} into the current adaptive file for the group in question. +All adaptive score entries will be put into this file. + +@item admin-address +@cindex admin-address +When unsubscribing from a mailing list you should never send the +unsubscription notice to the mailing list itself. Instead, you'd send +messages to the administrative address. This parameter allows you to +put the admin address somewhere convenient. + +@item display +@cindex display +Elements that look like @code{(display . MODE)} say which articles to +display on entering the group. Valid values are: + +@table @code +@item all +Display all articles, both read and unread. + +@item an integer +Display the last @var{integer} articles in the group. This is the same as +entering the group with @kbd{C-u @var{integer}}. + +@item default +Display the default visible articles, which normally includes unread and +ticked articles. + +@item an array +Display articles that satisfy a predicate. + +Here are some examples: + +@table @code +@item [unread] +Display only unread articles. + +@item [not expire] +Display everything except expirable articles. + +@item [and (not reply) (not expire)] +Display everything except expirable and articles you've already +responded to. +@end table + +The available operators are @code{not}, @code{and} and @code{or}. +Predicates include @code{tick}, @code{unsend}, @code{undownload}, +@code{unread}, @code{dormant}, @code{expire}, @code{reply}, +@code{killed}, @code{bookmark}, @code{score}, @code{save}, +@code{cache}, @code{forward}, @code{unseen} and @code{recent}. + +@end table + +The @code{display} parameter works by limiting the summary buffer to +the subset specified. You can pop the limit by using the @kbd{/ w} +command (@pxref{Limiting}). + +@item comment +@cindex comment +Elements that look like @code{(comment . "This is a comment")} are +arbitrary comments on the group. You can display comments in the +group line (@pxref{Group Line Specification}). + +@item charset +@cindex charset +Elements that look like @code{(charset . iso-8859-1)} will make +@code{iso-8859-1} the default charset; that is, the charset that will be +used for all articles that do not specify a charset. + +See also @code{gnus-group-charset-alist}. + +@item ignored-charsets +@cindex ignored-charset +Elements that look like @code{(ignored-charsets x-unknown iso-8859-1)} +will make @code{iso-8859-1} and @code{x-unknown} ignored; that is, the +default charset will be used for decoding articles. + +See also @code{gnus-group-ignored-charsets-alist}. + +@item posting-style +@cindex posting-style +You can store additional posting style information for this group +here (@pxref{Posting Styles}). The format is that of an entry in the +@code{gnus-posting-styles} alist, except that there's no regexp matching +the group name (of course). Style elements in this group parameter will +take precedence over the ones found in @code{gnus-posting-styles}. + +For instance, if you want a funky name and signature in this group only, +instead of hacking @code{gnus-posting-styles}, you could put something +like this in the group parameters: + +@example +(posting-style + (name "Funky Name") + ("X-My-Header" "Funky Value") + (signature "Funky Signature")) +@end example + +@item post-method +@cindex post-method +If it is set, the value is used as the method for posting message +instead of @code{gnus-post-method}. + +@item banner +@cindex banner +An item like @code{(banner . @var{regexp})} causes any part of an article +that matches the regular expression @var{regexp} to be stripped. Instead of +@var{regexp}, you can also use the symbol @code{signature} which strips the +last signature or any of the elements of the alist +@code{gnus-article-banner-alist}. + +@item sieve +@cindex sieve +This parameter contains a Sieve test that should match incoming mail +that should be placed in this group. From this group parameter, a +Sieve @samp{IF} control structure is generated, having the test as the +condition and @samp{fileinto "group.name";} as the body. + +For example, if the @samp{INBOX.list.sieve} group has the @code{(sieve +address "sender" "sieve-admin@@extundo.com")} group parameter, when +translating the group parameter into a Sieve script (@pxref{Sieve +Commands}) the following Sieve code is generated: + +@example +if address \"sender\" \"sieve-admin@@extundo.com\" @{ + fileinto \"INBOX.list.sieve\"; +@} +@end example + +The Sieve language is described in RFC 3028. @xref{Top, Emacs Sieve, +Top, sieve, Emacs Sieve}. + +@item (agent parameters) +If the agent has been enabled, you can set any of the its parameters +to control the behavior of the agent in individual groups. See Agent +Parameters in @ref{Category Syntax}. Most users will choose to set +agent parameters in either an agent category or group topic to +minimize the configuration effort. + +@item (@var{variable} @var{form}) +You can use the group parameters to set variables local to the group you +are entering. If you want to turn threading off in @samp{news.answers}, +you could put @code{(gnus-show-threads nil)} in the group parameters of +that group. @code{gnus-show-threads} will be made into a local variable +in the summary buffer you enter, and the form @code{nil} will be +@code{eval}ed there. + +Note that this feature sets the variable locally to the summary buffer. +But some variables are evaluated in the article buffer, or in the +message buffer (of a reply or followup or otherwise newly created +message). As a workaround, it might help to add the variable in +question to @code{gnus-newsgroup-variables}. @xref{Various Summary +Stuff}. So if you want to set @code{message-from-style} via the group +parameters, then you may need the following statement elsewhere in your +@file{~/.gnus} file: + +@lisp +(add-to-list 'gnus-newsgroup-variables 'message-from-style) +@end lisp + +@vindex gnus-list-identifiers +A use for this feature is to remove a mailing list identifier tag in +the subject fields of articles. E.g. if the news group + +@example +nntp+news.gnus.org:gmane.text.docbook.apps +@end example + +has the tag @samp{DOC-BOOK-APPS:} in the subject of all articles, this +tag can be removed from the article subjects in the summary buffer for +the group by putting @code{(gnus-list-identifiers "DOCBOOK-APPS:")} +into the group parameters for the group. + +This can also be used as a group-specific hook function. If you want to +hear a beep when you enter a group, you could put something like +@code{(dummy-variable (ding))} in the parameters of that group. +@code{dummy-variable} will be set to the (meaningless) result of the +@code{(ding)} form. + +Alternatively, since the VARIABLE becomes local to the group, this +pattern can be used to temporarily change a hook. For example, if the +following is added to a group parameter + +@lisp +(gnus-summary-prepared-hook + '(lambda nil (local-set-key "d" (local-key-binding "n")))) +@end lisp + +when the group is entered, the 'd' key will not mark the article as +expired. + +@end table + +Use the @kbd{G p} or the @kbd{G c} command to edit group parameters of a +group. (@kbd{G p} presents you with a Lisp-based interface, @kbd{G c} +presents you with a Customize-like interface. The latter helps avoid +silly Lisp errors.) You might also be interested in reading about topic +parameters (@pxref{Topic Parameters}). + +@vindex gnus-parameters +Group parameters can be set via the @code{gnus-parameters} variable too. +But some variables, such as @code{visible}, have no effect (For this +case see @code{gnus-permanently-visible-groups} as an alternative.). +For example: + +@lisp +(setq gnus-parameters + '(("mail\\..*" + (gnus-show-threads nil) + (gnus-use-scoring nil) + (gnus-summary-line-format + "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n") + (gcc-self . t) + (display . all)) + + ("^nnimap:\\(foo.bar\\)$" + (to-group . "\\1")) + + ("mail\\.me" + (gnus-use-scoring t)) + + ("list\\..*" + (total-expire . t) + (broken-reply-to . t)))) +@end lisp + +String value of parameters will be subjected to regexp substitution, as +the @code{to-group} example shows. + +@vindex gnus-parameters-case-fold-search +By default, whether comparing the group name and one of those regexps +specified in @code{gnus-parameters} is done in a case-sensitive manner +or a case-insensitive manner depends on the value of +@code{case-fold-search} at the time when the comparison is done. The +value of @code{case-fold-search} is typically @code{t}; it means, for +example, the element @code{("INBOX\\.FOO" (total-expire . t))} might be +applied to both the @samp{INBOX.FOO} group and the @samp{INBOX.foo} +group. If you want to make those regexps always case-sensitive, set the +value of the @code{gnus-parameters-case-fold-search} variable to +@code{nil}. Otherwise, set it to @code{t} if you want to compare them +always in a case-insensitive manner. + + +@node Listing Groups +@section Listing Groups +@cindex group listing + +These commands all list various slices of the groups available. + +@table @kbd + +@item l +@itemx A s +@kindex A s (Group) +@kindex l (Group) +@findex gnus-group-list-groups +List all groups that have unread articles +(@code{gnus-group-list-groups}). If the numeric prefix is used, this +command will list only groups of level ARG and lower. By default, it +only lists groups of level five (i.e., +@code{gnus-group-default-list-level}) or lower (i.e., just subscribed +groups). + +@item L +@itemx A u +@kindex A u (Group) +@kindex L (Group) +@findex gnus-group-list-all-groups +List all groups, whether they have unread articles or not +(@code{gnus-group-list-all-groups}). If the numeric prefix is used, +this command will list only groups of level ARG and lower. By default, +it lists groups of level seven or lower (i.e., just subscribed and +unsubscribed groups). + +@item A l +@kindex A l (Group) +@findex gnus-group-list-level +List all unread groups on a specific level +(@code{gnus-group-list-level}). If given a prefix, also list the groups +with no unread articles. + +@item A k +@kindex A k (Group) +@findex gnus-group-list-killed +List all killed groups (@code{gnus-group-list-killed}). If given a +prefix argument, really list all groups that are available, but aren't +currently (un)subscribed. This could entail reading the active file +from the server. + +@item A z +@kindex A z (Group) +@findex gnus-group-list-zombies +List all zombie groups (@code{gnus-group-list-zombies}). + +@item A m +@kindex A m (Group) +@findex gnus-group-list-matching +List all unread, subscribed groups with names that match a regexp +(@code{gnus-group-list-matching}). + +@item A M +@kindex A M (Group) +@findex gnus-group-list-all-matching +List groups that match a regexp (@code{gnus-group-list-all-matching}). + +@item A A +@kindex A A (Group) +@findex gnus-group-list-active +List absolutely all groups in the active file(s) of the +server(s) you are connected to (@code{gnus-group-list-active}). This +might very well take quite a while. It might actually be a better idea +to do a @kbd{A M} to list all matching, and just give @samp{.} as the +thing to match on. Also note that this command may list groups that +don't exist (yet)---these will be listed as if they were killed groups. +Take the output with some grains of salt. + +@item A a +@kindex A a (Group) +@findex gnus-group-apropos +List all groups that have names that match a regexp +(@code{gnus-group-apropos}). + +@item A d +@kindex A d (Group) +@findex gnus-group-description-apropos +List all groups that have names or descriptions that match a regexp +(@code{gnus-group-description-apropos}). + +@item A c +@kindex A c (Group) +@findex gnus-group-list-cached +List all groups with cached articles (@code{gnus-group-list-cached}). + +@item A ? +@kindex A ? (Group) +@findex gnus-group-list-dormant +List all groups with dormant articles (@code{gnus-group-list-dormant}). + +@item A / +@kindex A / (Group) +@findex gnus-group-list-limit +List groups limited within the current selection +(@code{gnus-group-list-limit}). + +@item A f +@kindex A f (Group) +@findex gnus-group-list-flush +Flush groups from the current selection (@code{gnus-group-list-flush}). + +@item A p +@kindex A p (Group) +@findex gnus-group-list-plus +List groups plus the current selection (@code{gnus-group-list-plus}). + +@end table + +@vindex gnus-permanently-visible-groups +@cindex visible group parameter +Groups that match the @code{gnus-permanently-visible-groups} regexp will +always be shown, whether they have unread articles or not. You can also +add the @code{visible} element to the group parameters in question to +get the same effect. + +@vindex gnus-list-groups-with-ticked-articles +Groups that have just ticked articles in it are normally listed in the +group buffer. If @code{gnus-list-groups-with-ticked-articles} is +@code{nil}, these groups will be treated just like totally empty +groups. It is @code{t} by default. + + +@node Sorting Groups +@section Sorting Groups +@cindex sorting groups + +@kindex C-c C-s (Group) +@findex gnus-group-sort-groups +@vindex gnus-group-sort-function +The @kbd{C-c C-s} (@code{gnus-group-sort-groups}) command sorts the +group buffer according to the function(s) given by the +@code{gnus-group-sort-function} variable. Available sorting functions +include: + +@table @code + +@item gnus-group-sort-by-alphabet +@findex gnus-group-sort-by-alphabet +Sort the group names alphabetically. This is the default. + +@item gnus-group-sort-by-real-name +@findex gnus-group-sort-by-real-name +Sort the group alphabetically on the real (unprefixed) group names. + +@item gnus-group-sort-by-level +@findex gnus-group-sort-by-level +Sort by group level. + +@item gnus-group-sort-by-score +@findex gnus-group-sort-by-score +Sort by group score. @xref{Group Score}. + +@item gnus-group-sort-by-rank +@findex gnus-group-sort-by-rank +Sort by group score and then the group level. The level and the score +are, when taken together, the group's @dfn{rank}. @xref{Group Score}. + +@item gnus-group-sort-by-unread +@findex gnus-group-sort-by-unread +Sort by number of unread articles. + +@item gnus-group-sort-by-method +@findex gnus-group-sort-by-method +Sort alphabetically on the select method. + +@item gnus-group-sort-by-server +@findex gnus-group-sort-by-server +Sort alphabetically on the Gnus server name. + + +@end table + +@code{gnus-group-sort-function} can also be a list of sorting +functions. In that case, the most significant sort key function must be +the last one. + + +There are also a number of commands for sorting directly according to +some sorting criteria: + +@table @kbd +@item G S a +@kindex G S a (Group) +@findex gnus-group-sort-groups-by-alphabet +Sort the group buffer alphabetically by group name +(@code{gnus-group-sort-groups-by-alphabet}). + +@item G S u +@kindex G S u (Group) +@findex gnus-group-sort-groups-by-unread +Sort the group buffer by the number of unread articles +(@code{gnus-group-sort-groups-by-unread}). + +@item G S l +@kindex G S l (Group) +@findex gnus-group-sort-groups-by-level +Sort the group buffer by group level +(@code{gnus-group-sort-groups-by-level}). + +@item G S v +@kindex G S v (Group) +@findex gnus-group-sort-groups-by-score +Sort the group buffer by group score +(@code{gnus-group-sort-groups-by-score}). @xref{Group Score}. + +@item G S r +@kindex G S r (Group) +@findex gnus-group-sort-groups-by-rank +Sort the group buffer by group rank +(@code{gnus-group-sort-groups-by-rank}). @xref{Group Score}. + +@item G S m +@kindex G S m (Group) +@findex gnus-group-sort-groups-by-method +Sort the group buffer alphabetically by back end name@* +(@code{gnus-group-sort-groups-by-method}). + +@item G S n +@kindex G S n (Group) +@findex gnus-group-sort-groups-by-real-name +Sort the group buffer alphabetically by real (unprefixed) group name +(@code{gnus-group-sort-groups-by-real-name}). + +@end table + +All the commands below obey the process/prefix convention +(@pxref{Process/Prefix}). + +When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these +commands will sort in reverse order. + +You can also sort a subset of the groups: + +@table @kbd +@item G P a +@kindex G P a (Group) +@findex gnus-group-sort-selected-groups-by-alphabet +Sort the groups alphabetically by group name +(@code{gnus-group-sort-selected-groups-by-alphabet}). + +@item G P u +@kindex G P u (Group) +@findex gnus-group-sort-selected-groups-by-unread +Sort the groups by the number of unread articles +(@code{gnus-group-sort-selected-groups-by-unread}). + +@item G P l +@kindex G P l (Group) +@findex gnus-group-sort-selected-groups-by-level +Sort the groups by group level +(@code{gnus-group-sort-selected-groups-by-level}). + +@item G P v +@kindex G P v (Group) +@findex gnus-group-sort-selected-groups-by-score +Sort the groups by group score +(@code{gnus-group-sort-selected-groups-by-score}). @xref{Group Score}. + +@item G P r +@kindex G P r (Group) +@findex gnus-group-sort-selected-groups-by-rank +Sort the groups by group rank +(@code{gnus-group-sort-selected-groups-by-rank}). @xref{Group Score}. + +@item G P m +@kindex G P m (Group) +@findex gnus-group-sort-selected-groups-by-method +Sort the groups alphabetically by back end name@* +(@code{gnus-group-sort-selected-groups-by-method}). + +@item G P n +@kindex G P n (Group) +@findex gnus-group-sort-selected-groups-by-real-name +Sort the groups alphabetically by real (unprefixed) group name +(@code{gnus-group-sort-selected-groups-by-real-name}). + +@item G P s +@kindex G P s (Group) +@findex gnus-group-sort-selected-groups +Sort the groups according to @code{gnus-group-sort-function}. + +@end table + +And finally, note that you can use @kbd{C-k} and @kbd{C-y} to manually +move groups around. + + +@node Group Maintenance +@section Group Maintenance +@cindex bogus groups + +@table @kbd +@item b +@kindex b (Group) +@findex gnus-group-check-bogus-groups +Find bogus groups and delete them +(@code{gnus-group-check-bogus-groups}). + +@item F +@kindex F (Group) +@findex gnus-group-find-new-groups +Find new groups and process them (@code{gnus-group-find-new-groups}). +With 1 @kbd{C-u}, use the @code{ask-server} method to query the server +for new groups. With 2 @kbd{C-u}'s, use most complete method possible +to query the server for new groups, and subscribe the new groups as +zombies. + +@item C-c C-x +@kindex C-c C-x (Group) +@findex gnus-group-expire-articles +@cindex expiring mail +Run all expirable articles in the current group through the expiry +process (if any) (@code{gnus-group-expire-articles}). That is, delete +all expirable articles in the group that have been around for a while. +(@pxref{Expiring Mail}). + +@item C-c C-M-x +@kindex C-c C-M-x (Group) +@findex gnus-group-expire-all-groups +@cindex expiring mail +Run all expirable articles in all groups through the expiry process +(@code{gnus-group-expire-all-groups}). + +@end table + + +@node Browse Foreign Server +@section Browse Foreign Server +@cindex foreign servers +@cindex browsing servers + +@table @kbd +@item B +@kindex B (Group) +@findex gnus-group-browse-foreign-server +You will be queried for a select method and a server name. Gnus will +then attempt to contact this server and let you browse the groups there +(@code{gnus-group-browse-foreign-server}). +@end table + +@findex gnus-browse-mode +A new buffer with a list of available groups will appear. This buffer +will use the @code{gnus-browse-mode}. This buffer looks a bit (well, +a lot) like a normal group buffer. + +Here's a list of keystrokes available in the browse mode: + +@table @kbd +@item n +@kindex n (Browse) +@findex gnus-group-next-group +Go to the next group (@code{gnus-group-next-group}). + +@item p +@kindex p (Browse) +@findex gnus-group-prev-group +Go to the previous group (@code{gnus-group-prev-group}). + +@item SPACE +@kindex SPACE (Browse) +@findex gnus-browse-read-group +Enter the current group and display the first article +(@code{gnus-browse-read-group}). + +@item RET +@kindex RET (Browse) +@findex gnus-browse-select-group +Enter the current group (@code{gnus-browse-select-group}). + +@item u +@kindex u (Browse) +@findex gnus-browse-unsubscribe-current-group +Unsubscribe to the current group, or, as will be the case here, +subscribe to it (@code{gnus-browse-unsubscribe-current-group}). + +@item l +@itemx q +@kindex q (Browse) +@kindex l (Browse) +@findex gnus-browse-exit +Exit browse mode (@code{gnus-browse-exit}). + +@item d +@kindex d (Browse) +@findex gnus-browse-describe-group +Describe the current group (@code{gnus-browse-describe-group}). + +@item ? +@kindex ? (Browse) +@findex gnus-browse-describe-briefly +Describe browse mode briefly (well, there's not much to describe, is +there) (@code{gnus-browse-describe-briefly}). +@end table + + +@node Exiting Gnus +@section Exiting Gnus +@cindex exiting Gnus + +Yes, Gnus is ex(c)iting. + +@table @kbd +@item z +@kindex z (Group) +@findex gnus-group-suspend +Suspend Gnus (@code{gnus-group-suspend}). This doesn't really exit Gnus, +but it kills all buffers except the Group buffer. I'm not sure why this +is a gain, but then who am I to judge? + +@item q +@kindex q (Group) +@findex gnus-group-exit +@c @icon{gnus-group-exit} +Quit Gnus (@code{gnus-group-exit}). + +@item Q +@kindex Q (Group) +@findex gnus-group-quit +Quit Gnus without saving the @file{.newsrc} files (@code{gnus-group-quit}). +The dribble file will be saved, though (@pxref{Auto Save}). +@end table + +@vindex gnus-exit-gnus-hook +@vindex gnus-suspend-gnus-hook +@vindex gnus-after-exiting-gnus-hook +@code{gnus-suspend-gnus-hook} is called when you suspend Gnus and +@code{gnus-exit-gnus-hook} is called when you quit Gnus, while +@code{gnus-after-exiting-gnus-hook} is called as the final item when +exiting Gnus. + +Note: + +@quotation +Miss Lisa Cannifax, while sitting in English class, felt her feet go +numbly heavy and herself fall into a hazy trance as the boy sitting +behind her drew repeated lines with his pencil across the back of her +plastic chair. +@end quotation + + +@node Group Topics +@section Group Topics +@cindex topics + +If you read lots and lots of groups, it might be convenient to group +them hierarchically according to topics. You put your Emacs groups over +here, your sex groups over there, and the rest (what, two groups or so?) +you put in some misc section that you never bother with anyway. You can +even group the Emacs sex groups as a sub-topic to either the Emacs +groups or the sex groups---or both! Go wild! + +@iftex +@iflatex +\gnusfigure{Group Topics}{400}{ +\put(75,50){\epsfig{figure=ps/group-topic,height=9cm}} +} +@end iflatex +@end iftex + +Here's an example: + +@example +Gnus + Emacs -- I wuw it! + 3: comp.emacs + 2: alt.religion.emacs + Naughty Emacs + 452: alt.sex.emacs + 0: comp.talk.emacs.recovery + Misc + 8: comp.binaries.fractals + 13: comp.sources.unix +@end example + +@findex gnus-topic-mode +@kindex t (Group) +To get this @emph{fab} functionality you simply turn on (ooh!) the +@code{gnus-topic} minor mode---type @kbd{t} in the group buffer. (This +is a toggling command.) + +Go ahead, just try it. I'll still be here when you get back. La de +dum@dots{} Nice tune, that@dots{} la la la@dots{} What, you're back? +Yes, and now press @kbd{l}. There. All your groups are now listed +under @samp{misc}. Doesn't that make you feel all warm and fuzzy? +Hot and bothered? + +If you want this permanently enabled, you should add that minor mode to +the hook for the group mode. Put the following line in your +@file{~/.gnus.el} file: + +@lisp +(add-hook 'gnus-group-mode-hook 'gnus-topic-mode) +@end lisp + +@menu +* Topic Commands:: Interactive E-Z commands. +* Topic Variables:: How to customize the topics the Lisp Way. +* Topic Sorting:: Sorting each topic individually. +* Topic Topology:: A map of the world. +* Topic Parameters:: Parameters that apply to all groups in a topic. +@end menu + + +@node Topic Commands +@subsection Topic Commands +@cindex topic commands + +When the topic minor mode is turned on, a new @kbd{T} submap will be +available. In addition, a few of the standard keys change their +definitions slightly. + +In general, the following kinds of operations are possible on topics. +First of all, you want to create topics. Secondly, you want to put +groups in topics and to move them around until you have an order you +like. The third kind of operation is to show/hide parts of the whole +shebang. You might want to hide a topic including its subtopics and +groups, to get a better overview of the other groups. + +Here is a list of the basic keys that you might need to set up topics +the way you like. + +@table @kbd + +@item T n +@kindex T n (Topic) +@findex gnus-topic-create-topic +Prompt for a new topic name and create it +(@code{gnus-topic-create-topic}). + +@item T TAB +@itemx TAB +@kindex T TAB (Topic) +@kindex TAB (Topic) +@findex gnus-topic-indent +``Indent'' the current topic so that it becomes a sub-topic of the +previous topic (@code{gnus-topic-indent}). If given a prefix, +``un-indent'' the topic instead. + +@item M-TAB +@kindex M-TAB (Topic) +@findex gnus-topic-unindent +``Un-indent'' the current topic so that it becomes a sub-topic of the +parent of its current parent (@code{gnus-topic-unindent}). + +@end table + +The following two keys can be used to move groups and topics around. +They work like the well-known cut and paste. @kbd{C-k} is like cut and +@kbd{C-y} is like paste. Of course, this being Emacs, we use the terms +kill and yank rather than cut and paste. + +@table @kbd + +@item C-k +@kindex C-k (Topic) +@findex gnus-topic-kill-group +Kill a group or topic (@code{gnus-topic-kill-group}). All groups in the +topic will be removed along with the topic. + +@item C-y +@kindex C-y (Topic) +@findex gnus-topic-yank-group +Yank the previously killed group or topic +(@code{gnus-topic-yank-group}). Note that all topics will be yanked +before all groups. + +So, to move a topic to the beginning of the list of topics, just hit +@kbd{C-k} on it. This is like the ``cut'' part of cut and paste. Then, +move the cursor to the beginning of the buffer (just below the ``Gnus'' +topic) and hit @kbd{C-y}. This is like the ``paste'' part of cut and +paste. Like I said -- E-Z. + +You can use @kbd{C-k} and @kbd{C-y} on groups as well as on topics. So +you can move topics around as well as groups. + +@end table + +After setting up the topics the way you like them, you might wish to +hide a topic, or to show it again. That's why we have the following +key. + +@table @kbd + +@item RET +@kindex RET (Topic) +@findex gnus-topic-select-group +@itemx SPACE +Either select a group or fold a topic (@code{gnus-topic-select-group}). +When you perform this command on a group, you'll enter the group, as +usual. When done on a topic line, the topic will be folded (if it was +visible) or unfolded (if it was folded already). So it's basically a +toggling command on topics. In addition, if you give a numerical +prefix, group on that level (and lower) will be displayed. + +@end table + +Now for a list of other commands, in no particular order. + +@table @kbd + +@item T m +@kindex T m (Topic) +@findex gnus-topic-move-group +Move the current group to some other topic +(@code{gnus-topic-move-group}). This command uses the process/prefix +convention (@pxref{Process/Prefix}). + +@item T j +@kindex T j (Topic) +@findex gnus-topic-jump-to-topic +Go to a topic (@code{gnus-topic-jump-to-topic}). + +@item T c +@kindex T c (Topic) +@findex gnus-topic-copy-group +Copy the current group to some other topic +(@code{gnus-topic-copy-group}). This command uses the process/prefix +convention (@pxref{Process/Prefix}). + +@item T h +@kindex T h (Topic) +@findex gnus-topic-hide-topic +Hide the current topic (@code{gnus-topic-hide-topic}). If given +a prefix, hide the topic permanently. + +@item T s +@kindex T s (Topic) +@findex gnus-topic-show-topic +Show the current topic (@code{gnus-topic-show-topic}). If given +a prefix, show the topic permanently. + +@item T D +@kindex T D (Topic) +@findex gnus-topic-remove-group +Remove a group from the current topic (@code{gnus-topic-remove-group}). +This command is mainly useful if you have the same group in several +topics and wish to remove it from one of the topics. You may also +remove a group from all topics, but in that case, Gnus will add it to +the root topic the next time you start Gnus. In fact, all new groups +(which, naturally, don't belong to any topic) will show up in the root +topic. + +This command uses the process/prefix convention +(@pxref{Process/Prefix}). + +@item T M +@kindex T M (Topic) +@findex gnus-topic-move-matching +Move all groups that match some regular expression to a topic +(@code{gnus-topic-move-matching}). + +@item T C +@kindex T C (Topic) +@findex gnus-topic-copy-matching +Copy all groups that match some regular expression to a topic +(@code{gnus-topic-copy-matching}). + +@item T H +@kindex T H (Topic) +@findex gnus-topic-toggle-display-empty-topics +Toggle hiding empty topics +(@code{gnus-topic-toggle-display-empty-topics}). + +@item T # +@kindex T # (Topic) +@findex gnus-topic-mark-topic +Mark all groups in the current topic with the process mark +(@code{gnus-topic-mark-topic}). This command works recursively on +sub-topics unless given a prefix. + +@item T M-# +@kindex T M-# (Topic) +@findex gnus-topic-unmark-topic +Remove the process mark from all groups in the current topic +(@code{gnus-topic-unmark-topic}). This command works recursively on +sub-topics unless given a prefix. + +@item C-c C-x +@kindex C-c C-x (Topic) +@findex gnus-topic-expire-articles +@cindex expiring mail +Run all expirable articles in the current group or topic through the +expiry process (if any) +(@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}). + +@item T r +@kindex T r (Topic) +@findex gnus-topic-rename +Rename a topic (@code{gnus-topic-rename}). + +@item T DEL +@kindex T DEL (Topic) +@findex gnus-topic-delete +Delete an empty topic (@code{gnus-topic-delete}). + +@item A T +@kindex A T (Topic) +@findex gnus-topic-list-active +List all groups that Gnus knows about in a topics-ified way +(@code{gnus-topic-list-active}). + +@item T M-n +@kindex T M-n (Topic) +@findex gnus-topic-goto-next-topic +Go to the next topic (@code{gnus-topic-goto-next-topic}). + +@item T M-p +@kindex T M-p (Topic) +@findex gnus-topic-goto-previous-topic +Go to the next topic (@code{gnus-topic-goto-previous-topic}). + +@item G p +@kindex G p (Topic) +@findex gnus-topic-edit-parameters +@cindex group parameters +@cindex topic parameters +@cindex parameters +Edit the topic parameters (@code{gnus-topic-edit-parameters}). +@xref{Topic Parameters}. + +@end table + + +@node Topic Variables +@subsection Topic Variables +@cindex topic variables + +The previous section told you how to tell Gnus which topics to display. +This section explains how to tell Gnus what to display about each topic. + +@vindex gnus-topic-line-format +The topic lines themselves are created according to the +@code{gnus-topic-line-format} variable (@pxref{Formatting Variables}). +Valid elements are: + +@table @samp +@item i +Indentation. +@item n +Topic name. +@item v +Visibility. +@item l +Level. +@item g +Number of groups in the topic. +@item a +Number of unread articles in the topic. +@item A +Number of unread articles in the topic and all its subtopics. +@end table + +@vindex gnus-topic-indent-level +Each sub-topic (and the groups in the sub-topics) will be indented with +@code{gnus-topic-indent-level} times the topic level number of spaces. +The default is 2. + +@vindex gnus-topic-mode-hook +@code{gnus-topic-mode-hook} is called in topic minor mode buffers. + +@vindex gnus-topic-display-empty-topics +The @code{gnus-topic-display-empty-topics} says whether to display even +topics that have no unread articles in them. The default is @code{t}. + + +@node Topic Sorting +@subsection Topic Sorting +@cindex topic sorting + +You can sort the groups in each topic individually with the following +commands: + + +@table @kbd +@item T S a +@kindex T S a (Topic) +@findex gnus-topic-sort-groups-by-alphabet +Sort the current topic alphabetically by group name +(@code{gnus-topic-sort-groups-by-alphabet}). + +@item T S u +@kindex T S u (Topic) +@findex gnus-topic-sort-groups-by-unread +Sort the current topic by the number of unread articles +(@code{gnus-topic-sort-groups-by-unread}). + +@item T S l +@kindex T S l (Topic) +@findex gnus-topic-sort-groups-by-level +Sort the current topic by group level +(@code{gnus-topic-sort-groups-by-level}). + +@item T S v +@kindex T S v (Topic) +@findex gnus-topic-sort-groups-by-score +Sort the current topic by group score +(@code{gnus-topic-sort-groups-by-score}). @xref{Group Score}. + +@item T S r +@kindex T S r (Topic) +@findex gnus-topic-sort-groups-by-rank +Sort the current topic by group rank +(@code{gnus-topic-sort-groups-by-rank}). @xref{Group Score}. + +@item T S m +@kindex T S m (Topic) +@findex gnus-topic-sort-groups-by-method +Sort the current topic alphabetically by back end name +(@code{gnus-topic-sort-groups-by-method}). + +@item T S e +@kindex T S e (Topic) +@findex gnus-topic-sort-groups-by-server +Sort the current topic alphabetically by server name +(@code{gnus-topic-sort-groups-by-server}). + +@item T S s +@kindex T S s (Topic) +@findex gnus-topic-sort-groups +Sort the current topic according to the function(s) given by the +@code{gnus-group-sort-function} variable +(@code{gnus-topic-sort-groups}). + +@end table + +When given a prefix argument, all these commands will sort in reverse +order. @xref{Sorting Groups}, for more information about group +sorting. + + +@node Topic Topology +@subsection Topic Topology +@cindex topic topology +@cindex topology + +So, let's have a look at an example group buffer: + +@example +@group +Gnus + Emacs -- I wuw it! + 3: comp.emacs + 2: alt.religion.emacs + Naughty Emacs + 452: alt.sex.emacs + 0: comp.talk.emacs.recovery + Misc + 8: comp.binaries.fractals + 13: comp.sources.unix +@end group +@end example + +So, here we have one top-level topic (@samp{Gnus}), two topics under +that, and one sub-topic under one of the sub-topics. (There is always +just one (1) top-level topic). This topology can be expressed as +follows: + +@lisp +(("Gnus" visible) + (("Emacs -- I wuw it!" visible) + (("Naughty Emacs" visible))) + (("Misc" visible))) +@end lisp + +@vindex gnus-topic-topology +This is in fact how the variable @code{gnus-topic-topology} would look +for the display above. That variable is saved in the @file{.newsrc.eld} +file, and shouldn't be messed with manually---unless you really want +to. Since this variable is read from the @file{.newsrc.eld} file, +setting it in any other startup files will have no effect. + +This topology shows what topics are sub-topics of what topics (right), +and which topics are visible. Two settings are currently +allowed---@code{visible} and @code{invisible}. + + +@node Topic Parameters +@subsection Topic Parameters +@cindex topic parameters + +All groups in a topic will inherit group parameters from the parent +(and ancestor) topic parameters. All valid group parameters are valid +topic parameters (@pxref{Group Parameters}). When the agent is +enabled, all agent parameters (See Agent Parameters in @ref{Category +Syntax}) are also valid topic parameters. + +In addition, the following parameters are only valid as topic +parameters: + +@table @code +@item subscribe +When subscribing new groups by topic (@pxref{Subscription Methods}), the +@code{subscribe} topic parameter says what groups go in what topic. Its +value should be a regexp to match the groups that should go in that +topic. + +@item subscribe-level +When subscribing new groups by topic (see the @code{subscribe} parameter), +the group will be subscribed with the level specified in the +@code{subscribe-level} instead of @code{gnus-level-default-subscribed}. + +@end table + +Group parameters (of course) override topic parameters, and topic +parameters in sub-topics override topic parameters in super-topics. You +know. Normal inheritance rules. (@dfn{Rules} is here a noun, not a +verb, although you may feel free to disagree with me here.) + +@example +@group +Gnus + Emacs + 3: comp.emacs + 2: alt.religion.emacs + 452: alt.sex.emacs + Relief + 452: alt.sex.emacs + 0: comp.talk.emacs.recovery + Misc + 8: comp.binaries.fractals + 13: comp.sources.unix + 452: alt.sex.emacs +@end group +@end example + +The @samp{Emacs} topic has the topic parameter @code{(score-file +. "emacs.SCORE")}; the @samp{Relief} topic has the topic parameter +@code{(score-file . "relief.SCORE")}; and the @samp{Misc} topic has the +topic parameter @code{(score-file . "emacs.SCORE")}. In addition, +@* @samp{alt.religion.emacs} has the group parameter @code{(score-file +. "religion.SCORE")}. + +Now, when you enter @samp{alt.sex.emacs} in the @samp{Relief} topic, you +will get the @file{relief.SCORE} home score file. If you enter the same +group in the @samp{Emacs} topic, you'll get the @file{emacs.SCORE} home +score file. If you enter the group @samp{alt.religion.emacs}, you'll +get the @file{religion.SCORE} home score file. + +This seems rather simple and self-evident, doesn't it? Well, yes. But +there are some problems, especially with the @code{total-expiry} +parameter. Say you have a mail group in two topics; one with +@code{total-expiry} and one without. What happens when you do @kbd{M-x +gnus-expire-all-expirable-groups}? Gnus has no way of telling which one +of these topics you mean to expire articles from, so anything may +happen. In fact, I hereby declare that it is @dfn{undefined} what +happens. You just have to be careful if you do stuff like that. + + +@node Misc Group Stuff +@section Misc Group Stuff + +@menu +* Scanning New Messages:: Asking Gnus to see whether new messages have arrived. +* Group Information:: Information and help on groups and Gnus. +* Group Timestamp:: Making Gnus keep track of when you last read a group. +* File Commands:: Reading and writing the Gnus files. +* Sieve Commands:: Managing Sieve scripts. +@end menu + +@table @kbd + +@item v +@kindex v (Group) +@cindex keys, reserved for users (Group) +The key @kbd{v} is reserved for users. You can bind it to some +command or better use it as a prefix key. For example: + +@lisp +(define-key gnus-group-mode-map (kbd "v j d") + (lambda () + (interactive) + (gnus-group-jump-to-group "nndraft:drafts"))) +@end lisp + +On keys reserved for users in Emacs and on keybindings in general +@xref{Keymaps, Keymaps, , emacs, The Emacs Editor}. + +@item ^ +@kindex ^ (Group) +@findex gnus-group-enter-server-mode +Enter the server buffer (@code{gnus-group-enter-server-mode}). +@xref{Server Buffer}. + +@item a +@kindex a (Group) +@findex gnus-group-post-news +Start composing a message (a news by default) +(@code{gnus-group-post-news}). If given a prefix, post to the group +under the point. If the prefix is 1, prompt for a group to post to. +Contrary to what the name of this function suggests, the prepared +article might be a mail instead of a news, if a mail group is specified +with the prefix argument. @xref{Composing Messages}. + +@item m +@kindex m (Group) +@findex gnus-group-mail +Mail a message somewhere (@code{gnus-group-mail}). If given a prefix, +use the posting style of the group under the point. If the prefix is 1, +prompt for a group name to find the posting style. +@xref{Composing Messages}. + +@item i +@kindex i (Group) +@findex gnus-group-news +Start composing a news (@code{gnus-group-news}). If given a prefix, +post to the group under the point. If the prefix is 1, prompt +for group to post to. @xref{Composing Messages}. + +This function actually prepares a news even when using mail groups. +This is useful for ``posting'' messages to mail groups without actually +sending them over the network: they're just saved directly to the group +in question. The corresponding back end must have a request-post method +for this to work though. + +@end table + +Variables for the group buffer: + +@table @code + +@item gnus-group-mode-hook +@vindex gnus-group-mode-hook +is called after the group buffer has been +created. + +@item gnus-group-prepare-hook +@vindex gnus-group-prepare-hook +is called after the group buffer is +generated. It may be used to modify the buffer in some strange, +unnatural way. + +@item gnus-group-prepared-hook +@vindex gnus-group-prepare-hook +is called as the very last thing after the group buffer has been +generated. It may be used to move point around, for instance. + +@item gnus-permanently-visible-groups +@vindex gnus-permanently-visible-groups +Groups matching this regexp will always be listed in the group buffer, +whether they are empty or not. + +@item gnus-group-name-charset-method-alist +@vindex gnus-group-name-charset-method-alist +An alist of method and the charset for group names. It is used to show +non-@acronym{ASCII} group names. + +For example: +@lisp +(setq gnus-group-name-charset-method-alist + '(((nntp "news.com.cn") . cn-gb-2312))) +@end lisp + +@item gnus-group-name-charset-group-alist +@cindex UTF-8 group names +@vindex gnus-group-name-charset-group-alist +An alist of regexp of group name and the charset for group names. It +is used to show non-@acronym{ASCII} group names. @code{((".*" +utf-8))} is the default value if UTF-8 is supported, otherwise the +default is @code{nil}. + +For example: +@lisp +(setq gnus-group-name-charset-group-alist + '(("\\.com\\.cn:" . cn-gb-2312))) +@end lisp + +@end table + +@node Scanning New Messages +@subsection Scanning New Messages +@cindex new messages +@cindex scanning new news + +@table @kbd + +@item g +@kindex g (Group) +@findex gnus-group-get-new-news +@c @icon{gnus-group-get-new-news} +Check the server(s) for new articles. If the numerical prefix is used, +this command will check only groups of level @var{arg} and lower +(@code{gnus-group-get-new-news}). If given a non-numerical prefix, this +command will force a total re-reading of the active file(s) from the +back end(s). + +@item M-g +@kindex M-g (Group) +@findex gnus-group-get-new-news-this-group +@vindex gnus-goto-next-group-when-activating +@c @icon{gnus-group-get-new-news-this-group} +Check whether new articles have arrived in the current group +(@code{gnus-group-get-new-news-this-group}). +@code{gnus-goto-next-group-when-activating} says whether this command is +to move point to the next group or not. It is @code{t} by default. + +@findex gnus-activate-all-groups +@cindex activating groups +@item C-c M-g +@kindex C-c M-g (Group) +Activate absolutely all groups (@code{gnus-activate-all-groups}). + +@item R +@kindex R (Group) +@cindex restarting +@findex gnus-group-restart +Restart Gnus (@code{gnus-group-restart}). This saves the @file{.newsrc} +file(s), closes the connection to all servers, clears up all run-time +Gnus variables, and then starts Gnus all over again. + +@end table + +@vindex gnus-get-new-news-hook +@code{gnus-get-new-news-hook} is run just before checking for new news. + +@vindex gnus-after-getting-new-news-hook +@code{gnus-after-getting-new-news-hook} is run after checking for new +news. + + +@node Group Information +@subsection Group Information +@cindex group information +@cindex information on groups + +@table @kbd + + +@item H f +@kindex H f (Group) +@findex gnus-group-fetch-faq +@vindex gnus-group-faq-directory +@cindex FAQ +@cindex ange-ftp +Try to fetch the @acronym{FAQ} for the current group +(@code{gnus-group-fetch-faq}). Gnus will try to get the @acronym{FAQ} +from @code{gnus-group-faq-directory}, which is usually a directory on +a remote machine. This variable can also be a list of directories. +In that case, giving a prefix to this command will allow you to choose +between the various sites. @code{ange-ftp} (or @code{efs}) will be +used for fetching the file. + +If fetching from the first site is unsuccessful, Gnus will attempt to go +through @code{gnus-group-faq-directory} and try to open them one by one. + +@item H c +@kindex H c (Group) +@findex gnus-group-fetch-charter +@vindex gnus-group-charter-alist +@cindex charter +Try to open the charter for the current group in a web browser +(@code{gnus-group-fetch-charter}). Query for a group if given a +prefix argument. + +Gnus will use @code{gnus-group-charter-alist} to find the location of +the charter. If no location is known, Gnus will fetch the control +messages for the group, which in some cases includes the charter. + +@item H C +@kindex H C (Group) +@findex gnus-group-fetch-control +@vindex gnus-group-fetch-control-use-browse-url +@cindex control message +Fetch the control messages for the group from the archive at +@code{ftp.isc.org} (@code{gnus-group-fetch-control}). Query for a +group if given a prefix argument. + +If @code{gnus-group-fetch-control-use-browse-url} is non-@code{nil}, +Gnus will open the control messages in a browser using +@code{browse-url}. Otherwise they are fetched using @code{ange-ftp} +and displayed in an ephemeral group. + +Note that the control messages are compressed. To use this command +you need to turn on @code{auto-compression-mode} (@pxref{Compressed +Files, ,Compressed Files, emacs, The Emacs Manual}). + +@item H d +@itemx C-c C-d +@c @icon{gnus-group-describe-group} +@kindex H d (Group) +@kindex C-c C-d (Group) +@cindex describing groups +@cindex group description +@findex gnus-group-describe-group +Describe the current group (@code{gnus-group-describe-group}). If given +a prefix, force Gnus to re-read the description from the server. + +@item M-d +@kindex M-d (Group) +@findex gnus-group-describe-all-groups +Describe all groups (@code{gnus-group-describe-all-groups}). If given a +prefix, force Gnus to re-read the description file from the server. + +@item H v +@itemx V +@kindex V (Group) +@kindex H v (Group) +@cindex version +@findex gnus-version +Display current Gnus version numbers (@code{gnus-version}). + +@item ? +@kindex ? (Group) +@findex gnus-group-describe-briefly +Give a very short help message (@code{gnus-group-describe-briefly}). + +@item C-c C-i +@kindex C-c C-i (Group) +@cindex info +@cindex manual +@findex gnus-info-find-node +Go to the Gnus info node (@code{gnus-info-find-node}). +@end table + + +@node Group Timestamp +@subsection Group Timestamp +@cindex timestamps +@cindex group timestamps + +It can be convenient to let Gnus keep track of when you last read a +group. To set the ball rolling, you should add +@code{gnus-group-set-timestamp} to @code{gnus-select-group-hook}: + +@lisp +(add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp) +@end lisp + +After doing this, each time you enter a group, it'll be recorded. + +This information can be displayed in various ways---the easiest is to +use the @samp{%d} spec in the group line format: + +@lisp +(setq gnus-group-line-format + "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n") +@end lisp + +This will result in lines looking like: + +@example +* 0: mail.ding 19961002T012943 + 0: custom 19961002T012713 +@end example + +As you can see, the date is displayed in compact ISO 8601 format. This +may be a bit too much, so to just display the date, you could say +something like: + +@lisp +(setq gnus-group-line-format + "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n") +@end lisp + +If you would like greater control of the time format, you can use a +user-defined format spec. Something like the following should do the +trick: + +@lisp +(setq gnus-group-line-format + "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n") +(defun gnus-user-format-function-d (headers) + (let ((time (gnus-group-timestamp gnus-tmp-group))) + (if time + (format-time-string "%b %d %H:%M" time) + ""))) +@end lisp + + +@node File Commands +@subsection File Commands +@cindex file commands + +@table @kbd + +@item r +@kindex r (Group) +@findex gnus-group-read-init-file +@vindex gnus-init-file +@cindex reading init file +Re-read the init file (@code{gnus-init-file}, which defaults to +@file{~/.gnus.el}) (@code{gnus-group-read-init-file}). + +@item s +@kindex s (Group) +@findex gnus-group-save-newsrc +@cindex saving .newsrc +Save the @file{.newsrc.eld} file (and @file{.newsrc} if wanted) +(@code{gnus-group-save-newsrc}). If given a prefix, force saving the +file(s) whether Gnus thinks it is necessary or not. + +@c @item Z +@c @kindex Z (Group) +@c @findex gnus-group-clear-dribble +@c Clear the dribble buffer (@code{gnus-group-clear-dribble}). + +@end table + + +@node Sieve Commands +@subsection Sieve Commands +@cindex group sieve commands + +Sieve is a server-side mail filtering language. In Gnus you can use +the @code{sieve} group parameter (@pxref{Group Parameters}) to specify +sieve rules that should apply to each group. Gnus provides two +commands to translate all these group parameters into a proper Sieve +script that can be transfered to the server somehow. + +@vindex gnus-sieve-file +@vindex gnus-sieve-region-start +@vindex gnus-sieve-region-end +The generated Sieve script is placed in @code{gnus-sieve-file} (by +default @file{~/.sieve}). The Sieve code that Gnus generate is placed +between two delimiters, @code{gnus-sieve-region-start} and +@code{gnus-sieve-region-end}, so you may write additional Sieve code +outside these delimiters that will not be removed the next time you +regenerate the Sieve script. + +@vindex gnus-sieve-crosspost +The variable @code{gnus-sieve-crosspost} controls how the Sieve script +is generated. If it is non-@code{nil} (the default) articles is +placed in all groups that have matching rules, otherwise the article +is only placed in the group with the first matching rule. For +example, the group parameter @samp{(sieve address "sender" +"owner-ding@@hpc.uh.edu")} will generate the following piece of Sieve +code if @code{gnus-sieve-crosspost} is @code{nil}. (When +@code{gnus-sieve-crosspost} is non-@code{nil}, it looks the same +except that the line containing the call to @code{stop} is removed.) + +@example +if address "sender" "owner-ding@@hpc.uh.edu" @{ + fileinto "INBOX.ding"; + stop; +@} +@end example + +@xref{Top, Emacs Sieve, Top, sieve, Emacs Sieve}. + +@table @kbd + +@item D g +@kindex D g (Group) +@findex gnus-sieve-generate +@vindex gnus-sieve-file +@cindex generating sieve script +Regenerate a Sieve script from the @code{sieve} group parameters and +put you into the @code{gnus-sieve-file} without saving it. + +@item D u +@kindex D u (Group) +@findex gnus-sieve-update +@vindex gnus-sieve-file +@cindex updating sieve script +Regenerates the Gnus managed part of @code{gnus-sieve-file} using the +@code{sieve} group parameters, save the file and upload it to the +server using the @code{sieveshell} program. + +@end table + + +@node Summary Buffer +@chapter Summary Buffer +@cindex summary buffer + +A line for each article is displayed in the summary buffer. You can +move around, read articles, post articles and reply to articles. + +The most common way to a summary buffer is to select a group from the +group buffer (@pxref{Selecting a Group}). + +You can have as many summary buffers open as you wish. + +You can customize the Summary Mode tool bar, see @kbd{M-x +customize-apropos RET gnus-summary-tool-bar}. This feature is only +available in Emacs. + +@kindex v (Summary) +@cindex keys, reserved for users (Summary) +The key @kbd{v} is reserved for users. You can bind it to some +command or better use it as a prefix key. For example: +@lisp +(define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread +@end lisp + +@menu +* Summary Buffer Format:: Deciding how the summary buffer is to look. +* Summary Maneuvering:: Moving around the summary buffer. +* Choosing Articles:: Reading articles. +* Paging the Article:: Scrolling the current article. +* Reply Followup and Post:: Posting articles. +* Delayed Articles:: Send articles at a later time. +* Marking Articles:: Marking articles as read, expirable, etc. +* Limiting:: You can limit the summary buffer. +* Threading:: How threads are made. +* Sorting the Summary Buffer:: How articles and threads are sorted. +* Asynchronous Fetching:: Gnus might be able to pre-fetch articles. +* Article Caching:: You may store articles in a cache. +* Persistent Articles:: Making articles expiry-resistant. +* Article Backlog:: Having already read articles hang around. +* Saving Articles:: Ways of customizing article saving. +* Decoding Articles:: Gnus can treat series of (uu)encoded articles. +* Article Treatment:: The article buffer can be mangled at will. +* MIME Commands:: Doing MIMEy things with the articles. +* Charsets:: Character set issues. +* Article Commands:: Doing various things with the article buffer. +* Summary Sorting:: Sorting the summary buffer in various ways. +* Finding the Parent:: No child support? Get the parent. +* Alternative Approaches:: Reading using non-default summaries. +* Tree Display:: A more visual display of threads. +* Mail Group Commands:: Some commands can only be used in mail groups. +* Various Summary Stuff:: What didn't fit anywhere else. +* Exiting the Summary Buffer:: Returning to the Group buffer, + or reselecting the current group. +* Crosspost Handling:: How crossposted articles are dealt with. +* Duplicate Suppression:: An alternative when crosspost handling fails. +* Security:: Decrypt and Verify. +* Mailing List:: Mailing list minor mode. +@end menu + + +@node Summary Buffer Format +@section Summary Buffer Format +@cindex summary buffer format + +@iftex +@iflatex +\gnusfigure{The Summary Buffer}{180}{ +\put(0,0){\epsfig{figure=ps/summary,width=7.5cm}} +\put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-article,width=7.5cm}}} +} +@end iflatex +@end iftex + +@menu +* Summary Buffer Lines:: You can specify how summary lines should look. +* To From Newsgroups:: How to not display your own name. +* Summary Buffer Mode Line:: You can say how the mode line should look. +* Summary Highlighting:: Making the summary buffer all pretty and nice. +@end menu + +@findex mail-extract-address-components +@findex gnus-extract-address-components +@vindex gnus-extract-address-components +Gnus will use the value of the @code{gnus-extract-address-components} +variable as a function for getting the name and address parts of a +@code{From} header. Two pre-defined functions exist: +@code{gnus-extract-address-components}, which is the default, quite +fast, and too simplistic solution; and +@code{mail-extract-address-components}, which works very nicely, but is +slower. The default function will return the wrong answer in 5% of the +cases. If this is unacceptable to you, use the other function instead: + +@lisp +(setq gnus-extract-address-components + 'mail-extract-address-components) +@end lisp + +@vindex gnus-summary-same-subject +@code{gnus-summary-same-subject} is a string indicating that the current +article has the same subject as the previous. This string will be used +with those specs that require it. The default is @code{""}. + + +@node Summary Buffer Lines +@subsection Summary Buffer Lines + +@vindex gnus-summary-line-format +You can change the format of the lines in the summary buffer by changing +the @code{gnus-summary-line-format} variable. It works along the same +lines as a normal @code{format} string, with some extensions +(@pxref{Formatting Variables}). + +There should always be a colon or a point position marker on the line; +the cursor always moves to the point position marker or the colon after +performing an operation. (Of course, Gnus wouldn't be Gnus if it wasn't +possible to change this. Just write a new function +@code{gnus-goto-colon} which does whatever you like with the cursor.) +@xref{Positioning Point}. + +The default string is @samp{%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n}. + +The following format specification characters and extended format +specification(s) are understood: + +@table @samp +@item N +Article number. +@item S +Subject string. List identifiers stripped, +@code{gnus-list-identifiers}. @xref{Article Hiding}. +@item s +Subject if the article is the root of the thread or the previous article +had a different subject, @code{gnus-summary-same-subject} otherwise. +(@code{gnus-summary-same-subject} defaults to @code{""}.) +@item F +Full @code{From} header. +@item n +The name (from the @code{From} header). +@item f +The name, @code{To} header or the @code{Newsgroups} header (@pxref{To +From Newsgroups}). +@item a +The name (from the @code{From} header). This differs from the @code{n} +spec in that it uses the function designated by the +@code{gnus-extract-address-components} variable, which is slower, but +may be more thorough. +@item A +The address (from the @code{From} header). This works the same way as +the @code{a} spec. +@item L +Number of lines in the article. +@item c +Number of characters in the article. This specifier is not supported +in some methods (like nnfolder). +@item k +Pretty-printed version of the number of characters in the article; +for example, @samp{1.2k} or @samp{0.4M}. +@item I +Indentation based on thread level (@pxref{Customizing Threading}). +@item B +A complex trn-style thread tree, showing response-connecting trace +lines. A thread could be drawn like this: + +@example +> ++-> +| +-> +| | \-> +| | \-> +| \-> ++-> +\-> +@end example + +You can customize the appearance with the following options. Note +that it is possible to make the thread display look really neat by +replacing the default @acronym{ASCII} characters with graphic +line-drawing glyphs. +@table @code +@item gnus-sum-thread-tree-root +@vindex gnus-sum-thread-tree-root +Used for the root of a thread. If @code{nil}, use subject +instead. The default is @samp{> }. + +@item gnus-sum-thread-tree-false-root +@vindex gnus-sum-thread-tree-false-root +Used for the false root of a thread (@pxref{Loose Threads}). If +@code{nil}, use subject instead. The default is @samp{> }. + +@item gnus-sum-thread-tree-single-indent +@vindex gnus-sum-thread-tree-single-indent +Used for a thread with just one message. If @code{nil}, use subject +instead. The default is @samp{}. + +@item gnus-sum-thread-tree-vertical +@vindex gnus-sum-thread-tree-vertical +Used for drawing a vertical line. The default is @samp{| }. + +@item gnus-sum-thread-tree-indent +@vindex gnus-sum-thread-tree-indent +Used for indenting. The default is @samp{ }. + +@item gnus-sum-thread-tree-leaf-with-other +@vindex gnus-sum-thread-tree-leaf-with-other +Used for a leaf with brothers. The default is @samp{+-> }. + +@item gnus-sum-thread-tree-single-leaf +@vindex gnus-sum-thread-tree-single-leaf +Used for a leaf without brothers. The default is @samp{\-> } + +@end table + +@item T +Nothing if the article is a root and lots of spaces if it isn't (it +pushes everything after it off the screen). +@item [ +Opening bracket, which is normally @samp{[}, but can also be @samp{<} +for adopted articles (@pxref{Customizing Threading}). +@item ] +Closing bracket, which is normally @samp{]}, but can also be @samp{>} +for adopted articles. +@item > +One space for each thread level. +@item < +Twenty minus thread level spaces. +@item U +Unread. @xref{Read Articles}. + +@item R +This misleadingly named specifier is the @dfn{secondary mark}. This +mark will say whether the article has been replied to, has been cached, +or has been saved. @xref{Other Marks}. + +@item i +Score as a number (@pxref{Scoring}). +@item z +@vindex gnus-summary-zcore-fuzz +Zcore, @samp{+} if above the default level and @samp{-} if below the +default level. If the difference between +@code{gnus-summary-default-score} and the score is less than +@code{gnus-summary-zcore-fuzz}, this spec will not be used. +@item V +Total thread score. +@item x +@code{Xref}. +@item D +@code{Date}. +@item d +The @code{Date} in @code{DD-MMM} format. +@item o +The @code{Date} in @var{YYYYMMDD}@code{T}@var{HHMMSS} format. +@item M +@code{Message-ID}. +@item r +@code{References}. +@item t +Number of articles in the current sub-thread. Using this spec will slow +down summary buffer generation somewhat. +@item e +An @samp{=} (@code{gnus-not-empty-thread-mark}) will be displayed if the +article has any children. +@item P +The line number. +@item O +Download mark. +@item * +Desired cursor position (instead of after first colon). +@item &user-date; +Age sensitive date format. Various date format is defined in +@code{gnus-user-date-format-alist}. +@item u +User defined specifier. The next character in the format string should +be a letter. Gnus will call the function +@code{gnus-user-format-function-@var{x}}, where @var{x} is the letter +following @samp{%u}. The function will be passed the current header as +argument. The function should return a string, which will be inserted +into the summary just like information from any other summary specifier. +@end table + +Text between @samp{%(} and @samp{%)} will be highlighted with +@code{gnus-mouse-face} when the mouse point is placed inside the area. +There can only be one such area. + +The @samp{%U} (status), @samp{%R} (replied) and @samp{%z} (zcore) specs +have to be handled with care. For reasons of efficiency, Gnus will +compute what column these characters will end up in, and ``hard-code'' +that. This means that it is invalid to have these specs after a +variable-length spec. Well, you might not be arrested, but your summary +buffer will look strange, which is bad enough. + +The smart choice is to have these specs as far to the left as possible. +(Isn't that the case with everything, though? But I digress.) + +This restriction may disappear in later versions of Gnus. + + +@node To From Newsgroups +@subsection To From Newsgroups +@cindex To +@cindex Newsgroups + +In some groups (particularly in archive groups), the @code{From} header +isn't very interesting, since all the articles there are written by +you. To display the information in the @code{To} or @code{Newsgroups} +headers instead, you need to decide three things: What information to +gather; where to display it; and when to display it. + +@enumerate +@item +@vindex gnus-extra-headers +The reading of extra header information is controlled by the +@code{gnus-extra-headers}. This is a list of header symbols. For +instance: + +@lisp +(setq gnus-extra-headers + '(To Newsgroups X-Newsreader)) +@end lisp + +This will result in Gnus trying to obtain these three headers, and +storing it in header structures for later easy retrieval. + +@item +@findex gnus-extra-header +The value of these extra headers can be accessed via the +@code{gnus-extra-header} function. Here's a format line spec that will +access the @code{X-Newsreader} header: + +@example +"%~(form (gnus-extra-header 'X-Newsreader))@@" +@end example + +@item +@vindex gnus-ignored-from-addresses +The @code{gnus-ignored-from-addresses} variable says when the @samp{%f} +summary line spec returns the @code{To}, @code{Newsreader} or +@code{From} header. If this regexp matches the contents of the +@code{From} header, the value of the @code{To} or @code{Newsreader} +headers are used instead. + +@end enumerate + +@vindex nnmail-extra-headers +A related variable is @code{nnmail-extra-headers}, which controls when +to include extra headers when generating overview (@acronym{NOV}) files. +If you have old overview files, you should regenerate them after +changing this variable, by entering the server buffer using @kbd{^}, +and then @kbd{g} on the appropriate mail server (e.g. nnml) to cause +regeneration. + +@vindex gnus-summary-line-format +You also have to instruct Gnus to display the data by changing the +@code{%n} spec to the @code{%f} spec in the +@code{gnus-summary-line-format} variable. + +In summary, you'd typically put something like the following in +@file{~/.gnus.el}: + +@lisp +(setq gnus-extra-headers + '(To Newsgroups)) +(setq nnmail-extra-headers gnus-extra-headers) +(setq gnus-summary-line-format + "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n") +(setq gnus-ignored-from-addresses + "Your Name Here") +@end lisp + +(The values listed above are the default values in Gnus. Alter them +to fit your needs.) + +A note for news server administrators, or for users who wish to try to +convince their news server administrator to provide some additional +support: + +The above is mostly useful for mail groups, where you have control over +the @acronym{NOV} files that are created. However, if you can persuade your +nntp admin to add (in the usual implementation, notably INN): + +@example +Newsgroups:full +@end example + +to the end of her @file{overview.fmt} file, then you can use that just +as you would the extra headers from the mail groups. + + +@node Summary Buffer Mode Line +@subsection Summary Buffer Mode Line + +@vindex gnus-summary-mode-line-format +You can also change the format of the summary mode bar (@pxref{Mode Line +Formatting}). Set @code{gnus-summary-mode-line-format} to whatever you +like. The default is @samp{Gnus: %%b [%A] %Z}. + +Here are the elements you can play with: + +@table @samp +@item G +Group name. +@item p +Unprefixed group name. +@item A +Current article number. +@item z +Current article score. +@item V +Gnus version. +@item U +Number of unread articles in this group. +@item e +Number of unread articles in this group that aren't displayed in the +summary buffer. +@item Z +A string with the number of unread and unselected articles represented +either as @samp{<%U(+%e) more>} if there are both unread and unselected +articles, and just as @samp{<%U more>} if there are just unread articles +and no unselected ones. +@item g +Shortish group name. For instance, @samp{rec.arts.anime} will be +shortened to @samp{r.a.anime}. +@item S +Subject of the current article. +@item u +User-defined spec (@pxref{User-Defined Specs}). +@item s +Name of the current score file (@pxref{Scoring}). +@item d +Number of dormant articles (@pxref{Unread Articles}). +@item t +Number of ticked articles (@pxref{Unread Articles}). +@item r +Number of articles that have been marked as read in this session. +@item E +Number of articles expunged by the score files. +@end table + + +@node Summary Highlighting +@subsection Summary Highlighting + +@table @code + +@item gnus-visual-mark-article-hook +@vindex gnus-visual-mark-article-hook +This hook is run after selecting an article. It is meant to be used for +highlighting the article in some way. It is not run if +@code{gnus-visual} is @code{nil}. + +@item gnus-summary-update-hook +@vindex gnus-summary-update-hook +This hook is called when a summary line is changed. It is not run if +@code{gnus-visual} is @code{nil}. + +@item gnus-summary-selected-face +@vindex gnus-summary-selected-face +This is the face (or @dfn{font} as some people call it) used to +highlight the current article in the summary buffer. + +@item gnus-summary-highlight +@vindex gnus-summary-highlight +Summary lines are highlighted according to this variable, which is a +list where the elements are of the format @code{(@var{form} +. @var{face})}. If you would, for instance, like ticked articles to be +italic and high-scored articles to be bold, you could set this variable +to something like +@lisp +(((eq mark gnus-ticked-mark) . italic) + ((> score default) . bold)) +@end lisp +As you may have guessed, if @var{form} returns a non-@code{nil} value, +@var{face} will be applied to the line. +@end table + + +@node Summary Maneuvering +@section Summary Maneuvering +@cindex summary movement + +All the straight movement commands understand the numeric prefix and +behave pretty much as you'd expect. + +None of these commands select articles. + +@table @kbd +@item G M-n +@itemx M-n +@kindex M-n (Summary) +@kindex G M-n (Summary) +@findex gnus-summary-next-unread-subject +Go to the next summary line of an unread article +(@code{gnus-summary-next-unread-subject}). + +@item G M-p +@itemx M-p +@kindex M-p (Summary) +@kindex G M-p (Summary) +@findex gnus-summary-prev-unread-subject +Go to the previous summary line of an unread article +(@code{gnus-summary-prev-unread-subject}). + +@item G g +@kindex G g (Summary) +@findex gnus-summary-goto-subject +Ask for an article number and then go to the summary line of that article +without displaying the article (@code{gnus-summary-goto-subject}). +@end table + +If Gnus asks you to press a key to confirm going to the next group, you +can use the @kbd{C-n} and @kbd{C-p} keys to move around the group +buffer, searching for the next group to read without actually returning +to the group buffer. + +Variables related to summary movement: + +@table @code + +@vindex gnus-auto-select-next +@item gnus-auto-select-next +If you issue one of the movement commands (like @kbd{n}) and there are +no more unread articles after the current one, Gnus will offer to go to +the next group. If this variable is @code{t} and the next group is +empty, Gnus will exit summary mode and return to the group buffer. If +this variable is neither @code{t} nor @code{nil}, Gnus will select the +next group with unread articles. As a special case, if this variable +is @code{quietly}, Gnus will select the next group without asking for +confirmation. If this variable is @code{almost-quietly}, the same +will happen only if you are located on the last article in the group. +Finally, if this variable is @code{slightly-quietly}, the @kbd{Z n} +command will go to the next group without confirmation. Also +@pxref{Group Levels}. + +@item gnus-auto-select-same +@vindex gnus-auto-select-same +If non-@code{nil}, all the movement commands will try to go to the next +article with the same subject as the current. (@dfn{Same} here might +mean @dfn{roughly equal}. See @code{gnus-summary-gather-subject-limit} +for details (@pxref{Customizing Threading}).) If there are no more +articles with the same subject, go to the first unread article. + +This variable is not particularly useful if you use a threaded display. + +@item gnus-summary-check-current +@vindex gnus-summary-check-current +If non-@code{nil}, all the ``unread'' movement commands will not proceed +to the next (or previous) article if the current article is unread. +Instead, they will choose the current article. + +@item gnus-auto-center-summary +@vindex gnus-auto-center-summary +If non-@code{nil}, Gnus will keep the point in the summary buffer +centered at all times. This makes things quite tidy, but if you have a +slow network connection, or simply do not like this un-Emacsism, you can +set this variable to @code{nil} to get the normal Emacs scrolling +action. This will also inhibit horizontal re-centering of the summary +buffer, which might make it more inconvenient to read extremely long +threads. + +This variable can also be a number. In that case, center the window at +the given number of lines from the top. + +@end table + + +@node Choosing Articles +@section Choosing Articles +@cindex selecting articles + +@menu +* Choosing Commands:: Commands for choosing articles. +* Choosing Variables:: Variables that influence these commands. +@end menu + + +@node Choosing Commands +@subsection Choosing Commands + +None of the following movement commands understand the numeric prefix, +and they all select and display an article. + +If you want to fetch new articles or redisplay the group, see +@ref{Exiting the Summary Buffer}. + +@table @kbd +@item SPACE +@kindex SPACE (Summary) +@findex gnus-summary-next-page +Select the current article, or, if that one's read already, the next +unread article (@code{gnus-summary-next-page}). + +If you have an article window open already and you press @kbd{SPACE} +again, the article will be scrolled. This lets you conveniently +@kbd{SPACE} through an entire newsgroup. @xref{Paging the Article}. + +@item G n +@itemx n +@kindex n (Summary) +@kindex G n (Summary) +@findex gnus-summary-next-unread-article +@c @icon{gnus-summary-next-unread} +Go to next unread article (@code{gnus-summary-next-unread-article}). + +@item G p +@itemx p +@kindex p (Summary) +@findex gnus-summary-prev-unread-article +@c @icon{gnus-summary-prev-unread} +Go to previous unread article (@code{gnus-summary-prev-unread-article}). + +@item G N +@itemx N +@kindex N (Summary) +@kindex G N (Summary) +@findex gnus-summary-next-article +Go to the next article (@code{gnus-summary-next-article}). + +@item G P +@itemx P +@kindex P (Summary) +@kindex G P (Summary) +@findex gnus-summary-prev-article +Go to the previous article (@code{gnus-summary-prev-article}). + +@item G C-n +@kindex G C-n (Summary) +@findex gnus-summary-next-same-subject +Go to the next article with the same subject +(@code{gnus-summary-next-same-subject}). + +@item G C-p +@kindex G C-p (Summary) +@findex gnus-summary-prev-same-subject +Go to the previous article with the same subject +(@code{gnus-summary-prev-same-subject}). + +@item G f +@itemx . +@kindex G f (Summary) +@kindex . (Summary) +@findex gnus-summary-first-unread-article +Go to the first unread article +(@code{gnus-summary-first-unread-article}). + +@item G b +@itemx , +@kindex G b (Summary) +@kindex , (Summary) +@findex gnus-summary-best-unread-article +Go to the unread article with the highest score +(@code{gnus-summary-best-unread-article}). If given a prefix argument, +go to the first unread article that has a score over the default score. + +@item G l +@itemx l +@kindex l (Summary) +@kindex G l (Summary) +@findex gnus-summary-goto-last-article +Go to the previous article read (@code{gnus-summary-goto-last-article}). + +@item G o +@kindex G o (Summary) +@findex gnus-summary-pop-article +@cindex history +@cindex article history +Pop an article off the summary history and go to this article +(@code{gnus-summary-pop-article}). This command differs from the +command above in that you can pop as many previous articles off the +history as you like, while @kbd{l} toggles the two last read articles. +For a somewhat related issue (if you use these commands a lot), +@pxref{Article Backlog}. + +@item G j +@itemx j +@kindex j (Summary) +@kindex G j (Summary) +@findex gnus-summary-goto-article +Ask for an article number or @code{Message-ID}, and then go to that +article (@code{gnus-summary-goto-article}). + +@end table + + +@node Choosing Variables +@subsection Choosing Variables + +Some variables relevant for moving and selecting articles: + +@table @code +@item gnus-auto-extend-newsgroup +@vindex gnus-auto-extend-newsgroup +All the movement commands will try to go to the previous (or next) +article, even if that article isn't displayed in the Summary buffer if +this variable is non-@code{nil}. Gnus will then fetch the article from +the server and display it in the article buffer. + +@item gnus-select-article-hook +@vindex gnus-select-article-hook +This hook is called whenever an article is selected. The default is +@code{nil}. If you would like each article to be saved in the Agent as +you read it, putting @code{gnus-agent-fetch-selected-article} on this +hook will do so. + +@item gnus-mark-article-hook +@vindex gnus-mark-article-hook +@findex gnus-summary-mark-unread-as-read +@findex gnus-summary-mark-read-and-unread-as-read +@findex gnus-unread-mark +This hook is called whenever an article is selected. It is intended to +be used for marking articles as read. The default value is +@code{gnus-summary-mark-read-and-unread-as-read}, and will change the +mark of almost any article you read to @code{gnus-read-mark}. The only +articles not affected by this function are ticked, dormant, and +expirable articles. If you'd instead like to just have unread articles +marked as read, you can use @code{gnus-summary-mark-unread-as-read} +instead. It will leave marks like @code{gnus-low-score-mark}, +@code{gnus-del-mark} (and so on) alone. + +@end table + + +@node Paging the Article +@section Scrolling the Article +@cindex article scrolling + +@table @kbd + +@item SPACE +@kindex SPACE (Summary) +@findex gnus-summary-next-page +Pressing @kbd{SPACE} will scroll the current article forward one page, +or, if you have come to the end of the current article, will choose the +next article (@code{gnus-summary-next-page}). + +@vindex gnus-article-boring-faces +@vindex gnus-article-skip-boring +If @code{gnus-article-skip-boring} is non-@code{nil} and the rest of +the article consists only of citations and signature, then it will be +skipped; the next article will be shown instead. You can customize +what is considered uninteresting with +@code{gnus-article-boring-faces}. You can manually view the article's +pages, no matter how boring, using @kbd{C-M-v}. + +@item DEL +@kindex DEL (Summary) +@findex gnus-summary-prev-page +Scroll the current article back one page (@code{gnus-summary-prev-page}). + +@item RET +@kindex RET (Summary) +@findex gnus-summary-scroll-up +Scroll the current article one line forward +(@code{gnus-summary-scroll-up}). + +@item M-RET +@kindex M-RET (Summary) +@findex gnus-summary-scroll-down +Scroll the current article one line backward +(@code{gnus-summary-scroll-down}). + +@item A g +@itemx g +@kindex A g (Summary) +@kindex g (Summary) +@findex gnus-summary-show-article +@vindex gnus-summary-show-article-charset-alist +(Re)fetch the current article (@code{gnus-summary-show-article}). If +given a prefix, fetch the current article, but don't run any of the +article treatment functions. This will give you a ``raw'' article, just +the way it came from the server. + +If given a numerical prefix, you can do semi-manual charset stuff. +@kbd{C-u 0 g cn-gb-2312 RET} will decode the message as if it were +encoded in the @code{cn-gb-2312} charset. If you have + +@lisp +(setq gnus-summary-show-article-charset-alist + '((1 . cn-gb-2312) + (2 . big5))) +@end lisp + +then you can say @kbd{C-u 1 g} to get the same effect. + +@item A < +@itemx < +@kindex < (Summary) +@kindex A < (Summary) +@findex gnus-summary-beginning-of-article +Scroll to the beginning of the article +(@code{gnus-summary-beginning-of-article}). + +@item A > +@itemx > +@kindex > (Summary) +@kindex A > (Summary) +@findex gnus-summary-end-of-article +Scroll to the end of the article (@code{gnus-summary-end-of-article}). + +@item A s +@itemx s +@kindex A s (Summary) +@kindex s (Summary) +@findex gnus-summary-isearch-article +Perform an isearch in the article buffer +(@code{gnus-summary-isearch-article}). + +@item h +@kindex h (Summary) +@findex gnus-summary-select-article-buffer +Select the article buffer (@code{gnus-summary-select-article-buffer}). + +@end table + + +@node Reply Followup and Post +@section Reply, Followup and Post + +@menu +* Summary Mail Commands:: Sending mail. +* Summary Post Commands:: Sending news. +* Summary Message Commands:: Other Message-related commands. +* Canceling and Superseding:: +@end menu + + +@node Summary Mail Commands +@subsection Summary Mail Commands +@cindex mail +@cindex composing mail + +Commands for composing a mail message: + +@table @kbd + +@item S r +@itemx r +@kindex S r (Summary) +@kindex r (Summary) +@findex gnus-summary-reply +@c @icon{gnus-summary-mail-reply} +@c @icon{gnus-summary-reply} +Mail a reply to the author of the current article +(@code{gnus-summary-reply}). + +@item S R +@itemx R +@kindex R (Summary) +@kindex S R (Summary) +@findex gnus-summary-reply-with-original +@c @icon{gnus-summary-reply-with-original} +Mail a reply to the author of the current article and include the +original message (@code{gnus-summary-reply-with-original}). This +command uses the process/prefix convention. + +@item S w +@kindex S w (Summary) +@findex gnus-summary-wide-reply +Mail a wide reply to the author of the current article +(@code{gnus-summary-wide-reply}). A @dfn{wide reply} is a reply that +goes out to all people listed in the @code{To}, @code{From} (or +@code{Reply-to}) and @code{Cc} headers. If @code{Mail-Followup-To} is +present, that's used instead. + +@item S W +@kindex S W (Summary) +@findex gnus-summary-wide-reply-with-original +Mail a wide reply to the current article and include the original +message (@code{gnus-summary-wide-reply-with-original}). This command uses +the process/prefix convention. + +@item S v +@kindex S v (Summary) +@findex gnus-summary-very-wide-reply +Mail a very wide reply to the author of the current article +(@code{gnus-summary-wide-reply}). A @dfn{very wide reply} is a reply +that goes out to all people listed in the @code{To}, @code{From} (or +@code{Reply-to}) and @code{Cc} headers in all the process/prefixed +articles. This command uses the process/prefix convention. + +@item S V +@kindex S V (Summary) +@findex gnus-summary-very-wide-reply-with-original +Mail a very wide reply to the author of the current article and include the +original message (@code{gnus-summary-very-wide-reply-with-original}). This +command uses the process/prefix convention. + +@item S B r +@kindex S B r (Summary) +@findex gnus-summary-reply-broken-reply-to +Mail a reply to the author of the current article but ignore the +@code{Reply-To} field (@code{gnus-summary-reply-broken-reply-to}). +If you need this because a mailing list incorrectly sets a +@code{Reply-To} header pointing to the list, you probably want to set +the @code{broken-reply-to} group parameter instead, so things will work +correctly. @xref{Group Parameters}. + +@item S B R +@kindex S B R (Summary) +@findex gnus-summary-reply-broken-reply-to-with-original +Mail a reply to the author of the current article and include the +original message but ignore the @code{Reply-To} field +(@code{gnus-summary-reply-broken-reply-to-with-original}). + +@item S o m +@itemx C-c C-f +@kindex S o m (Summary) +@kindex C-c C-f (Summary) +@findex gnus-summary-mail-forward +@c @icon{gnus-summary-mail-forward} +Forward the current article to some other person +(@code{gnus-summary-mail-forward}). If no prefix is given, the message +is forwarded according to the value of (@code{message-forward-as-mime}) +and (@code{message-forward-show-mml}); if the prefix is 1, decode the +message and forward directly inline; if the prefix is 2, forward message +as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and +forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message +directly inline; otherwise, the message is forwarded as no prefix given +but use the flipped value of (@code{message-forward-as-mime}). By +default, the message is decoded and forwarded as an rfc822 @acronym{MIME} +section. + +@item S m +@itemx m +@kindex m (Summary) +@kindex S m (Summary) +@findex gnus-summary-mail-other-window +@c @icon{gnus-summary-mail-originate} +Prepare a mail (@code{gnus-summary-mail-other-window}). By default, use +the posting style of the current group. If given a prefix, disable that. +If the prefix is 1, prompt for a group name to find the posting style. + +@item S i +@itemx i +@kindex i (Summary) +@kindex S i (Summary) +@findex gnus-summary-news-other-window +Prepare a news (@code{gnus-summary-news-other-window}). By default, +post to the current group. If given a prefix, disable that. If the +prefix is 1, prompt for a group to post to. + +This function actually prepares a news even when using mail groups. +This is useful for ``posting'' messages to mail groups without actually +sending them over the network: they're just saved directly to the group +in question. The corresponding back end must have a request-post method +for this to work though. + +@item S D b +@kindex S D b (Summary) +@findex gnus-summary-resend-bounced-mail +@cindex bouncing mail +If you have sent a mail, but the mail was bounced back to you for some +reason (wrong address, transient failure), you can use this command to +resend that bounced mail (@code{gnus-summary-resend-bounced-mail}). You +will be popped into a mail buffer where you can edit the headers before +sending the mail off again. If you give a prefix to this command, and +the bounced mail is a reply to some other mail, Gnus will try to fetch +that mail and display it for easy perusal of its headers. This might +very well fail, though. + +@item S D r +@kindex S D r (Summary) +@findex gnus-summary-resend-message +Not to be confused with the previous command, +@code{gnus-summary-resend-message} will prompt you for an address to +send the current message off to, and then send it to that place. The +headers of the message won't be altered---but lots of headers that say +@code{Resent-To}, @code{Resent-From} and so on will be added. This +means that you actually send a mail to someone that has a @code{To} +header that (probably) points to yourself. This will confuse people. +So, natcherly you'll only do that if you're really eVIl. + +This command is mainly used if you have several accounts and want to +ship a mail to a different account of yours. (If you're both +@code{root} and @code{postmaster} and get a mail for @code{postmaster} +to the @code{root} account, you may want to resend it to +@code{postmaster}. Ordnung muss sein! + +This command understands the process/prefix convention +(@pxref{Process/Prefix}). + +@item S D e +@kindex S D e (Summary) +@findex gnus-summary-resend-message-edit + +Like the previous command, but will allow you to edit the message as +if it were a new message before resending. + +@item S O m +@kindex S O m (Summary) +@findex gnus-uu-digest-mail-forward +Digest the current series (@pxref{Decoding Articles}) and forward the +result using mail (@code{gnus-uu-digest-mail-forward}). This command +uses the process/prefix convention (@pxref{Process/Prefix}). + +@item S M-c +@kindex S M-c (Summary) +@findex gnus-summary-mail-crosspost-complaint +@cindex crossposting +@cindex excessive crossposting +Send a complaint about excessive crossposting to the author of the +current article (@code{gnus-summary-mail-crosspost-complaint}). + +@findex gnus-crosspost-complaint +This command is provided as a way to fight back against the current +crossposting pandemic that's sweeping Usenet. It will compose a reply +using the @code{gnus-crosspost-complaint} variable as a preamble. This +command understands the process/prefix convention +(@pxref{Process/Prefix}) and will prompt you before sending each mail. + +@end table + +Also @xref{Header Commands, ,Header Commands, message, The Message +Manual}, for more information. + + +@node Summary Post Commands +@subsection Summary Post Commands +@cindex post +@cindex composing news + +Commands for posting a news article: + +@table @kbd +@item S p +@itemx a +@kindex a (Summary) +@kindex S p (Summary) +@findex gnus-summary-post-news +@c @icon{gnus-summary-post-news} +Prepare for posting an article (@code{gnus-summary-post-news}). By +default, post to the current group. If given a prefix, disable that. +If the prefix is 1, prompt for another group instead. + +@item S f +@itemx f +@kindex f (Summary) +@kindex S f (Summary) +@findex gnus-summary-followup +@c @icon{gnus-summary-followup} +Post a followup to the current article (@code{gnus-summary-followup}). + +@item S F +@itemx F +@kindex S F (Summary) +@kindex F (Summary) +@c @icon{gnus-summary-followup-with-original} +@findex gnus-summary-followup-with-original +Post a followup to the current article and include the original message +(@code{gnus-summary-followup-with-original}). This command uses the +process/prefix convention. + +@item S n +@kindex S n (Summary) +@findex gnus-summary-followup-to-mail +Post a followup to the current article via news, even if you got the +message through mail (@code{gnus-summary-followup-to-mail}). + +@item S N +@kindex S N (Summary) +@findex gnus-summary-followup-to-mail-with-original +Post a followup to the current article via news, even if you got the +message through mail and include the original message +(@code{gnus-summary-followup-to-mail-with-original}). This command uses +the process/prefix convention. + +@item S o p +@kindex S o p (Summary) +@findex gnus-summary-post-forward +Forward the current article to a newsgroup +(@code{gnus-summary-post-forward}). + If no prefix is given, the message is forwarded according to the value +of (@code{message-forward-as-mime}) and +(@code{message-forward-show-mml}); if the prefix is 1, decode the +message and forward directly inline; if the prefix is 2, forward message +as an rfc822 @acronym{MIME} section; if the prefix is 3, decode message and +forward as an rfc822 @acronym{MIME} section; if the prefix is 4, forward message +directly inline; otherwise, the message is forwarded as no prefix given +but use the flipped value of (@code{message-forward-as-mime}). By +default, the message is decoded and forwarded as an rfc822 @acronym{MIME} section. + +@item S O p +@kindex S O p (Summary) +@findex gnus-uu-digest-post-forward +@cindex digests +@cindex making digests +Digest the current series and forward the result to a newsgroup +(@code{gnus-uu-digest-post-forward}). This command uses the +process/prefix convention. + +@item S u +@kindex S u (Summary) +@findex gnus-uu-post-news +@c @icon{gnus-uu-post-news} +Uuencode a file, split it into parts, and post it as a series +(@code{gnus-uu-post-news}). (@pxref{Uuencoding and Posting}). +@end table + +Also @xref{Header Commands, ,Header Commands, message, The Message +Manual}, for more information. + + +@node Summary Message Commands +@subsection Summary Message Commands + +@table @kbd +@item S y +@kindex S y (Summary) +@findex gnus-summary-yank-message +Yank the current article into an already existing Message composition +buffer (@code{gnus-summary-yank-message}). This command prompts for +what message buffer you want to yank into, and understands the +process/prefix convention (@pxref{Process/Prefix}). + +@end table + + +@node Canceling and Superseding +@subsection Canceling Articles +@cindex canceling articles +@cindex superseding articles + +Have you ever written something, and then decided that you really, +really, really wish you hadn't posted that? + +Well, you can't cancel mail, but you can cancel posts. + +@findex gnus-summary-cancel-article +@kindex C (Summary) +@c @icon{gnus-summary-cancel-article} +Find the article you wish to cancel (you can only cancel your own +articles, so don't try any funny stuff). Then press @kbd{C} or @kbd{S +c} (@code{gnus-summary-cancel-article}). Your article will be +canceled---machines all over the world will be deleting your article. +This command uses the process/prefix convention (@pxref{Process/Prefix}). + +Be aware, however, that not all sites honor cancels, so your article may +live on here and there, while most sites will delete the article in +question. + +Gnus will use the ``current'' select method when canceling. If you +want to use the standard posting method, use the @samp{a} symbolic +prefix (@pxref{Symbolic Prefixes}). + +Gnus ensures that only you can cancel your own messages using a +@code{Cancel-Lock} header (@pxref{Canceling News, Canceling News, , +message, Message Manual}). + +If you discover that you have made some mistakes and want to do some +corrections, you can post a @dfn{superseding} article that will replace +your original article. + +@findex gnus-summary-supersede-article +@kindex S (Summary) +Go to the original article and press @kbd{S s} +(@code{gnus-summary-supersede-article}). You will be put in a buffer +where you can edit the article all you want before sending it off the +usual way. + +The same goes for superseding as for canceling, only more so: Some +sites do not honor superseding. On those sites, it will appear that you +have posted almost the same article twice. + +If you have just posted the article, and change your mind right away, +there is a trick you can use to cancel/supersede the article without +waiting for the article to appear on your site first. You simply return +to the post buffer (which is called @code{*sent ...*}). There you will +find the article you just posted, with all the headers intact. Change +the @code{Message-ID} header to a @code{Cancel} or @code{Supersedes} +header by substituting one of those words for the word +@code{Message-ID}. Then just press @kbd{C-c C-c} to send the article as +you would do normally. The previous article will be +canceled/superseded. + +Just remember, kids: There is no 'c' in 'supersede'. + +@node Delayed Articles +@section Delayed Articles +@cindex delayed sending +@cindex send delayed + +Sometimes, you might wish to delay the sending of a message. For +example, you might wish to arrange for a message to turn up just in time +to remind your about the birthday of your Significant Other. For this, +there is the @code{gnus-delay} package. Setup is simple: + +@lisp +(gnus-delay-initialize) +@end lisp + +@findex gnus-delay-article +Normally, to send a message you use the @kbd{C-c C-c} command from +Message mode. To delay a message, use @kbd{C-c C-j} +(@code{gnus-delay-article}) instead. This will ask you for how long the +message should be delayed. Possible answers are: + +@itemize @bullet +@item +A time span. Consists of an integer and a letter. For example, +@code{42d} means to delay for 42 days. Available letters are @code{m} +(minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M} +(months) and @code{Y} (years). + +@item +A specific date. Looks like @code{YYYY-MM-DD}. The message will be +delayed until that day, at a specific time (eight o'clock by default). +See also @code{gnus-delay-default-hour}. + +@item +A specific time of day. Given in @code{hh:mm} format, 24h, no am/pm +stuff. The deadline will be at that time today, except if that time has +already passed, then it's at the given time tomorrow. So if it's ten +o'clock in the morning and you specify @code{11:15}, then the deadline +is one hour and fifteen minutes hence. But if you specify @code{9:20}, +that means a time tomorrow. +@end itemize + +The action of the @code{gnus-delay-article} command is influenced by a +couple of variables: + +@table @code +@item gnus-delay-default-hour +@vindex gnus-delay-default-hour +When you specify a specific date, the message will be due on that hour +on the given date. Possible values are integers 0 through 23. + +@item gnus-delay-default-delay +@vindex gnus-delay-default-delay +This is a string and gives the default delay. It can be of any of the +formats described above. + +@item gnus-delay-group +@vindex gnus-delay-group +Delayed articles will be kept in this group on the drafts server until +they are due. You probably don't need to change this. The default +value is @code{"delayed"}. + +@item gnus-delay-header +@vindex gnus-delay-header +The deadline for each article will be stored in a header. This variable +is a string and gives the header name. You probably don't need to +change this. The default value is @code{"X-Gnus-Delayed"}. +@end table + +The way delaying works is like this: when you use the +@code{gnus-delay-article} command, you give a certain delay. Gnus +calculates the deadline of the message and stores it in the +@code{X-Gnus-Delayed} header and puts the message in the +@code{nndraft:delayed} group. + +@findex gnus-delay-send-queue +And whenever you get new news, Gnus looks through the group for articles +which are due and sends them. It uses the @code{gnus-delay-send-queue} +function for this. By default, this function is added to the hook +@code{gnus-get-new-news-hook}. But of course, you can change this. +Maybe you want to use the demon to send drafts? Just tell the demon to +execute the @code{gnus-delay-send-queue} function. + +@table @code +@item gnus-delay-initialize +@findex gnus-delay-initialize +By default, this function installs @code{gnus-delay-send-queue} in +@code{gnus-get-new-news-hook}. But it accepts the optional second +argument @code{no-check}. If it is non-@code{nil}, +@code{gnus-get-new-news-hook} is not changed. The optional first +argument is ignored. + +For example, @code{(gnus-delay-initialize nil t)} means to do nothing. +Presumably, you want to use the demon for sending due delayed articles. +Just don't forget to set that up :-) +@end table + + +@node Marking Articles +@section Marking Articles +@cindex article marking +@cindex article ticking +@cindex marks + +There are several marks you can set on an article. + +You have marks that decide the @dfn{readedness} (whoo, neato-keano +neologism ohoy!) of the article. Alphabetic marks generally mean +@dfn{read}, while non-alphabetic characters generally mean @dfn{unread}. + +In addition, you also have marks that do not affect readedness. + +@ifinfo +There's a plethora of commands for manipulating these marks. +@end ifinfo + +@menu +* Unread Articles:: Marks for unread articles. +* Read Articles:: Marks for read articles. +* Other Marks:: Marks that do not affect readedness. +* Setting Marks:: How to set and remove marks. +* Generic Marking Commands:: How to customize the marking. +* Setting Process Marks:: How to mark articles for later processing. +@end menu + + +@node Unread Articles +@subsection Unread Articles + +The following marks mark articles as (kinda) unread, in one form or +other. + +@table @samp +@item ! +@vindex gnus-ticked-mark +Marked as ticked (@code{gnus-ticked-mark}). + +@dfn{Ticked articles} are articles that will remain visible always. If +you see an article that you find interesting, or you want to put off +reading it, or replying to it, until sometime later, you'd typically +tick it. However, articles can be expired (from news servers by the +news server software, Gnus itself never expires ticked messages), so if +you want to keep an article forever, you'll have to make it persistent +(@pxref{Persistent Articles}). + +@item ? +@vindex gnus-dormant-mark +Marked as dormant (@code{gnus-dormant-mark}). + +@dfn{Dormant articles} will only appear in the summary buffer if there +are followups to it. If you want to see them even if they don't have +followups, you can use the @kbd{/ D} command (@pxref{Limiting}). +Otherwise (except for the visibility issue), they are just like ticked +messages. + +@item SPACE +@vindex gnus-unread-mark +Marked as unread (@code{gnus-unread-mark}). + +@dfn{Unread articles} are articles that haven't been read at all yet. +@end table + + +@node Read Articles +@subsection Read Articles +@cindex expirable mark + +All the following marks mark articles as read. + +@table @samp + +@item r +@vindex gnus-del-mark +These are articles that the user has marked as read with the @kbd{d} +command manually, more or less (@code{gnus-del-mark}). + +@item R +@vindex gnus-read-mark +Articles that have actually been read (@code{gnus-read-mark}). + +@item O +@vindex gnus-ancient-mark +Articles that were marked as read in previous sessions and are now +@dfn{old} (@code{gnus-ancient-mark}). + +@item K +@vindex gnus-killed-mark +Marked as killed (@code{gnus-killed-mark}). + +@item X +@vindex gnus-kill-file-mark +Marked as killed by kill files (@code{gnus-kill-file-mark}). + +@item Y +@vindex gnus-low-score-mark +Marked as read by having too low a score (@code{gnus-low-score-mark}). + +@item C +@vindex gnus-catchup-mark +Marked as read by a catchup (@code{gnus-catchup-mark}). + +@item G +@vindex gnus-canceled-mark +Canceled article (@code{gnus-canceled-mark}) + +@item F +@vindex gnus-souped-mark +@sc{soup}ed article (@code{gnus-souped-mark}). @xref{SOUP}. + +@item Q +@vindex gnus-sparse-mark +Sparsely reffed article (@code{gnus-sparse-mark}). @xref{Customizing +Threading}. + +@item M +@vindex gnus-duplicate-mark +Article marked as read by duplicate suppression +(@code{gnus-duplicate-mark}). @xref{Duplicate Suppression}. + +@end table + +All these marks just mean that the article is marked as read, really. +They are interpreted differently when doing adaptive scoring, though. + +One more special mark, though: + +@table @samp +@item E +@vindex gnus-expirable-mark +Marked as expirable (@code{gnus-expirable-mark}). + +Marking articles as @dfn{expirable} (or have them marked as such +automatically) doesn't make much sense in normal groups---a user doesn't +control expiring of news articles, but in mail groups, for instance, +articles marked as @dfn{expirable} can be deleted by Gnus at +any time. +@end table + + +@node Other Marks +@subsection Other Marks +@cindex process mark +@cindex bookmarks + +There are some marks that have nothing to do with whether the article is +read or not. + +@itemize @bullet + +@item +You can set a bookmark in the current article. Say you are reading a +long thesis on cats' urinary tracts, and have to go home for dinner +before you've finished reading the thesis. You can then set a bookmark +in the article, and Gnus will jump to this bookmark the next time it +encounters the article. @xref{Setting Marks}. + +@item +@vindex gnus-replied-mark +All articles that you have replied to or made a followup to (i.e., have +answered) will be marked with an @samp{A} in the second column +(@code{gnus-replied-mark}). + +@item +@vindex gnus-forwarded-mark +All articles that you have forwarded will be marked with an @samp{F} in +the second column (@code{gnus-forwarded-mark}). + +@item +@vindex gnus-cached-mark +Articles stored in the article cache will be marked with an @samp{*} in +the second column (@code{gnus-cached-mark}). @xref{Article Caching}. + +@item +@vindex gnus-saved-mark +Articles ``saved'' (in some manner or other; not necessarily +religiously) are marked with an @samp{S} in the second column +(@code{gnus-saved-mark}). + +@item +@vindex gnus-recent-mark +Articles that according to the server haven't been shown to the user +before are marked with a @samp{N} in the second column +(@code{gnus-recent-mark}). Note that not all servers support this +mark, in which case it simply never appears. Compare with +@code{gnus-unseen-mark}. + +@item +@vindex gnus-unseen-mark +Articles that haven't been seen before in Gnus by the user are marked +with a @samp{.} in the second column (@code{gnus-unseen-mark}). +Compare with @code{gnus-recent-mark}. + +@item +@vindex gnus-downloaded-mark +When using the Gnus agent (@pxref{Agent Basics}), articles may be +downloaded for unplugged (offline) viewing. If you are using the +@samp{%O} spec, these articles get the @samp{+} mark in that spec. +(The variable @code{gnus-downloaded-mark} controls which character to +use.) + +@item +@vindex gnus-undownloaded-mark +When using the Gnus agent (@pxref{Agent Basics}), some articles might +not have been downloaded. Such articles cannot be viewed while you +are unplugged (offline). If you are using the @samp{%O} spec, these +articles get the @samp{-} mark in that spec. (The variable +@code{gnus-undownloaded-mark} controls which character to use.) + +@item +@vindex gnus-downloadable-mark +The Gnus agent (@pxref{Agent Basics}) downloads some articles +automatically, but it is also possible to explicitly mark articles for +download, even if they would not be downloaded automatically. Such +explicitly-marked articles get the @samp{%} mark in the first column. +(The variable @code{gnus-downloadable-mark} controls which character to +use.) + +@item +@vindex gnus-not-empty-thread-mark +@vindex gnus-empty-thread-mark +If the @samp{%e} spec is used, the presence of threads or not will be +marked with @code{gnus-not-empty-thread-mark} and +@code{gnus-empty-thread-mark} in the third column, respectively. + +@item +@vindex gnus-process-mark +Finally we have the @dfn{process mark} (@code{gnus-process-mark}). A +variety of commands react to the presence of the process mark. For +instance, @kbd{X u} (@code{gnus-uu-decode-uu}) will uudecode and view +all articles that have been marked with the process mark. Articles +marked with the process mark have a @samp{#} in the second column. + +@end itemize + +You might have noticed that most of these ``non-readedness'' marks +appear in the second column by default. So if you have a cached, saved, +replied article that you have process-marked, what will that look like? + +Nothing much. The precedence rules go as follows: process -> cache -> +replied -> saved. So if the article is in the cache and is replied, +you'll only see the cache mark and not the replied mark. + + +@node Setting Marks +@subsection Setting Marks +@cindex setting marks + +All the marking commands understand the numeric prefix. + +@table @kbd +@item M c +@itemx M-u +@kindex M c (Summary) +@kindex M-u (Summary) +@findex gnus-summary-clear-mark-forward +@cindex mark as unread +Clear all readedness-marks from the current article +(@code{gnus-summary-clear-mark-forward}). In other words, mark the +article as unread. + +@item M t +@itemx ! +@kindex ! (Summary) +@kindex M t (Summary) +@findex gnus-summary-tick-article-forward +Tick the current article (@code{gnus-summary-tick-article-forward}). +@xref{Article Caching}. + +@item M ? +@itemx ? +@kindex ? (Summary) +@kindex M ? (Summary) +@findex gnus-summary-mark-as-dormant +Mark the current article as dormant +(@code{gnus-summary-mark-as-dormant}). @xref{Article Caching}. + +@item M d +@itemx d +@kindex M d (Summary) +@kindex d (Summary) +@findex gnus-summary-mark-as-read-forward +Mark the current article as read +(@code{gnus-summary-mark-as-read-forward}). + +@item D +@kindex D (Summary) +@findex gnus-summary-mark-as-read-backward +Mark the current article as read and move point to the previous line +(@code{gnus-summary-mark-as-read-backward}). + +@item M k +@itemx k +@kindex k (Summary) +@kindex M k (Summary) +@findex gnus-summary-kill-same-subject-and-select +Mark all articles that have the same subject as the current one as read, +and then select the next unread article +(@code{gnus-summary-kill-same-subject-and-select}). + +@item M K +@itemx C-k +@kindex M K (Summary) +@kindex C-k (Summary) +@findex gnus-summary-kill-same-subject +Mark all articles that have the same subject as the current one as read +(@code{gnus-summary-kill-same-subject}). + +@item M C +@kindex M C (Summary) +@findex gnus-summary-catchup +@c @icon{gnus-summary-catchup} +Mark all unread articles as read (@code{gnus-summary-catchup}). + +@item M C-c +@kindex M C-c (Summary) +@findex gnus-summary-catchup-all +Mark all articles in the group as read---even the ticked and dormant +articles (@code{gnus-summary-catchup-all}). + +@item M H +@kindex M H (Summary) +@findex gnus-summary-catchup-to-here +Catchup the current group to point (before the point) +(@code{gnus-summary-catchup-to-here}). + +@item M h +@kindex M h (Summary) +@findex gnus-summary-catchup-from-here +Catchup the current group from point (after the point) +(@code{gnus-summary-catchup-from-here}). + +@item C-w +@kindex C-w (Summary) +@findex gnus-summary-mark-region-as-read +Mark all articles between point and mark as read +(@code{gnus-summary-mark-region-as-read}). + +@item M V k +@kindex M V k (Summary) +@findex gnus-summary-kill-below +Kill all articles with scores below the default score (or below the +numeric prefix) (@code{gnus-summary-kill-below}). + +@item M e +@itemx E +@kindex M e (Summary) +@kindex E (Summary) +@findex gnus-summary-mark-as-expirable +Mark the current article as expirable +(@code{gnus-summary-mark-as-expirable}). + +@item M b +@kindex M b (Summary) +@findex gnus-summary-set-bookmark +Set a bookmark in the current article +(@code{gnus-summary-set-bookmark}). + +@item M B +@kindex M B (Summary) +@findex gnus-summary-remove-bookmark +Remove the bookmark from the current article +(@code{gnus-summary-remove-bookmark}). + +@item M V c +@kindex M V c (Summary) +@findex gnus-summary-clear-above +Clear all marks from articles with scores over the default score (or +over the numeric prefix) (@code{gnus-summary-clear-above}). + +@item M V u +@kindex M V u (Summary) +@findex gnus-summary-tick-above +Tick all articles with scores over the default score (or over the +numeric prefix) (@code{gnus-summary-tick-above}). + +@item M V m +@kindex M V m (Summary) +@findex gnus-summary-mark-above +Prompt for a mark, and mark all articles with scores over the default +score (or over the numeric prefix) with this mark +(@code{gnus-summary-clear-above}). +@end table + +@vindex gnus-summary-goto-unread +The @code{gnus-summary-goto-unread} variable controls what action should +be taken after setting a mark. If non-@code{nil}, point will move to +the next/previous unread article. If @code{nil}, point will just move +one line up or down. As a special case, if this variable is +@code{never}, all the marking commands as well as other commands (like +@kbd{SPACE}) will move to the next article, whether it is unread or not. +The default is @code{t}. + + +@node Generic Marking Commands +@subsection Generic Marking Commands + +Some people would like the command that ticks an article (@kbd{!}) go to +the next article. Others would like it to go to the next unread +article. Yet others would like it to stay on the current article. And +even though I haven't heard of anybody wanting it to go to the +previous (unread) article, I'm sure there are people that want that as +well. + +Multiply these five behaviors with five different marking commands, and +you get a potentially complex set of variable to control what each +command should do. + +To sidestep that mess, Gnus provides commands that do all these +different things. They can be found on the @kbd{M M} map in the summary +buffer. Type @kbd{M M C-h} to see them all---there are too many of them +to list in this manual. + +While you can use these commands directly, most users would prefer +altering the summary mode keymap. For instance, if you would like the +@kbd{!} command to go to the next article instead of the next unread +article, you could say something like: + +@lisp +@group +(add-hook 'gnus-summary-mode-hook 'my-alter-summary-map) +(defun my-alter-summary-map () + (local-set-key "!" 'gnus-summary-put-mark-as-ticked-next)) +@end group +@end lisp + +@noindent +or + +@lisp +(defun my-alter-summary-map () + (local-set-key "!" "MM!n")) +@end lisp + + +@node Setting Process Marks +@subsection Setting Process Marks +@cindex setting process marks + +Process marks are displayed as @code{#} in the summary buffer, and are +used for marking articles in such a way that other commands will +process these articles. For instance, if you process mark four +articles and then use the @kbd{*} command, Gnus will enter these four +articles into the cache. For more information, +@pxref{Process/Prefix}. + +@table @kbd + +@item M P p +@itemx # +@kindex # (Summary) +@kindex M P p (Summary) +@findex gnus-summary-mark-as-processable +Mark the current article with the process mark +(@code{gnus-summary-mark-as-processable}). +@findex gnus-summary-unmark-as-processable + +@item M P u +@itemx M-# +@kindex M P u (Summary) +@kindex M-# (Summary) +Remove the process mark, if any, from the current article +(@code{gnus-summary-unmark-as-processable}). + +@item M P U +@kindex M P U (Summary) +@findex gnus-summary-unmark-all-processable +Remove the process mark from all articles +(@code{gnus-summary-unmark-all-processable}). + +@item M P i +@kindex M P i (Summary) +@findex gnus-uu-invert-processable +Invert the list of process marked articles +(@code{gnus-uu-invert-processable}). + +@item M P R +@kindex M P R (Summary) +@findex gnus-uu-mark-by-regexp +Mark articles that have a @code{Subject} header that matches a regular +expression (@code{gnus-uu-mark-by-regexp}). + +@item M P G +@kindex M P G (Summary) +@findex gnus-uu-unmark-by-regexp +Unmark articles that have a @code{Subject} header that matches a regular +expression (@code{gnus-uu-unmark-by-regexp}). + +@item M P r +@kindex M P r (Summary) +@findex gnus-uu-mark-region +Mark articles in region (@code{gnus-uu-mark-region}). + +@item M P g +@kindex M P g (Summary) +@findex gnus-uu-unmark-region +Unmark articles in region (@code{gnus-uu-unmark-region}). + +@item M P t +@kindex M P t (Summary) +@findex gnus-uu-mark-thread +Mark all articles in the current (sub)thread +(@code{gnus-uu-mark-thread}). + +@item M P T +@kindex M P T (Summary) +@findex gnus-uu-unmark-thread +Unmark all articles in the current (sub)thread +(@code{gnus-uu-unmark-thread}). + +@item M P v +@kindex M P v (Summary) +@findex gnus-uu-mark-over +Mark all articles that have a score above the prefix argument +(@code{gnus-uu-mark-over}). + +@item M P s +@kindex M P s (Summary) +@findex gnus-uu-mark-series +Mark all articles in the current series (@code{gnus-uu-mark-series}). + +@item M P S +@kindex M P S (Summary) +@findex gnus-uu-mark-sparse +Mark all series that have already had some articles marked +(@code{gnus-uu-mark-sparse}). + +@item M P a +@kindex M P a (Summary) +@findex gnus-uu-mark-all +Mark all articles in series order (@code{gnus-uu-mark-all}). + +@item M P b +@kindex M P b (Summary) +@findex gnus-uu-mark-buffer +Mark all articles in the buffer in the order they appear +(@code{gnus-uu-mark-buffer}). + +@item M P k +@kindex M P k (Summary) +@findex gnus-summary-kill-process-mark +Push the current process mark set onto the stack and unmark all articles +(@code{gnus-summary-kill-process-mark}). + +@item M P y +@kindex M P y (Summary) +@findex gnus-summary-yank-process-mark +Pop the previous process mark set from the stack and restore it +(@code{gnus-summary-yank-process-mark}). + +@item M P w +@kindex M P w (Summary) +@findex gnus-summary-save-process-mark +Push the current process mark set onto the stack +(@code{gnus-summary-save-process-mark}). + +@end table + +Also see the @kbd{&} command in @ref{Searching for Articles}, for how to +set process marks based on article body contents. + + +@node Limiting +@section Limiting +@cindex limiting + +It can be convenient to limit the summary buffer to just show some +subset of the articles currently in the group. The effect most limit +commands have is to remove a few (or many) articles from the summary +buffer. + +All limiting commands work on subsets of the articles already fetched +from the servers. None of these commands query the server for +additional articles. + +@table @kbd + +@item / / +@itemx / s +@kindex / / (Summary) +@findex gnus-summary-limit-to-subject +Limit the summary buffer to articles that match some subject +(@code{gnus-summary-limit-to-subject}). If given a prefix, exclude +matching articles. + +@item / a +@kindex / a (Summary) +@findex gnus-summary-limit-to-author +Limit the summary buffer to articles that match some author +(@code{gnus-summary-limit-to-author}). If given a prefix, exclude +matching articles. + +@item / x +@kindex / x (Summary) +@findex gnus-summary-limit-to-extra +Limit the summary buffer to articles that match one of the ``extra'' +headers (@pxref{To From Newsgroups}) +(@code{gnus-summary-limit-to-extra}). If given a prefix, exclude +matching articles. + +@item / u +@itemx x +@kindex / u (Summary) +@kindex x (Summary) +@findex gnus-summary-limit-to-unread +Limit the summary buffer to articles not marked as read +(@code{gnus-summary-limit-to-unread}). If given a prefix, limit the +buffer to articles strictly unread. This means that ticked and +dormant articles will also be excluded. + +@item / m +@kindex / m (Summary) +@findex gnus-summary-limit-to-marks +Ask for a mark and then limit to all articles that have been marked +with that mark (@code{gnus-summary-limit-to-marks}). + +@item / t +@kindex / t (Summary) +@findex gnus-summary-limit-to-age +Ask for a number and then limit the summary buffer to articles older than (or equal to) that number of days +(@code{gnus-summary-limit-to-age}). If given a prefix, limit to +articles younger than that number of days. + +@item / n +@kindex / n (Summary) +@findex gnus-summary-limit-to-articles +With prefix @samp{n}, limit the summary buffer to the next @samp{n} +articles. If not given a prefix, use the process marked articles +instead. (@code{gnus-summary-limit-to-articles}). + +@item / w +@kindex / w (Summary) +@findex gnus-summary-pop-limit +Pop the previous limit off the stack and restore it +(@code{gnus-summary-pop-limit}). If given a prefix, pop all limits off +the stack. + +@item / . +@kindex / . (Summary) +@findex gnus-summary-limit-to-unseen +Limit the summary buffer to the unseen articles +(@code{gnus-summary-limit-to-unseen}). + +@item / v +@kindex / v (Summary) +@findex gnus-summary-limit-to-score +Limit the summary buffer to articles that have a score at or above some +score (@code{gnus-summary-limit-to-score}). + +@item / p +@kindex / p (Summary) +@findex gnus-summary-limit-to-display-predicate +Limit the summary buffer to articles that satisfy the @code{display} +group parameter predicate +(@code{gnus-summary-limit-to-display-predicate}). @xref{Group +Parameters}, for more on this predicate. + +@item / E +@itemx M S +@kindex M S (Summary) +@kindex / E (Summary) +@findex gnus-summary-limit-include-expunged +Include all expunged articles in the limit +(@code{gnus-summary-limit-include-expunged}). + +@item / D +@kindex / D (Summary) +@findex gnus-summary-limit-include-dormant +Include all dormant articles in the limit +(@code{gnus-summary-limit-include-dormant}). + +@item / * +@kindex / * (Summary) +@findex gnus-summary-limit-include-cached +Include all cached articles in the limit +(@code{gnus-summary-limit-include-cached}). + +@item / d +@kindex / d (Summary) +@findex gnus-summary-limit-exclude-dormant +Exclude all dormant articles from the limit +(@code{gnus-summary-limit-exclude-dormant}). + +@item / M +@kindex / M (Summary) +@findex gnus-summary-limit-exclude-marks +Exclude all marked articles (@code{gnus-summary-limit-exclude-marks}). + +@item / T +@kindex / T (Summary) +@findex gnus-summary-limit-include-thread +Include all the articles in the current thread in the limit. + +@item / c +@kindex / c (Summary) +@findex gnus-summary-limit-exclude-childless-dormant +Exclude all dormant articles that have no children from the limit@* +(@code{gnus-summary-limit-exclude-childless-dormant}). + +@item / C +@kindex / C (Summary) +@findex gnus-summary-limit-mark-excluded-as-read +Mark all excluded unread articles as read +(@code{gnus-summary-limit-mark-excluded-as-read}). If given a prefix, +also mark excluded ticked and dormant articles as read. + +@item / N +@kindex / N (Summary) +@findex gnus-summary-insert-new-articles +Insert all new articles in the summary buffer. It scans for new emails +if @var{back-end}@code{-get-new-mail} is non-@code{nil}. + +@item / o +@kindex / o (Summary) +@findex gnus-summary-insert-old-articles +Insert all old articles in the summary buffer. If given a numbered +prefix, fetch this number of articles. + +@end table + + +@node Threading +@section Threading +@cindex threading +@cindex article threading + +Gnus threads articles by default. @dfn{To thread} is to put responses +to articles directly after the articles they respond to---in a +hierarchical fashion. + +Threading is done by looking at the @code{References} headers of the +articles. In a perfect world, this would be enough to build pretty +trees, but unfortunately, the @code{References} header is often broken +or simply missing. Weird news propagation exacerbates the problem, +so one has to employ other heuristics to get pleasing results. A +plethora of approaches exists, as detailed in horrible detail in +@ref{Customizing Threading}. + +First, a quick overview of the concepts: + +@table @dfn +@item root +The top-most article in a thread; the first article in the thread. + +@item thread +A tree-like article structure. + +@item sub-thread +A small(er) section of this tree-like structure. + +@item loose threads +Threads often lose their roots due to article expiry, or due to the root +already having been read in a previous session, and not displayed in the +summary buffer. We then typically have many sub-threads that really +belong to one thread, but are without connecting roots. These are +called loose threads. + +@item thread gathering +An attempt to gather loose threads into bigger threads. + +@item sparse threads +A thread where the missing articles have been ``guessed'' at, and are +displayed as empty lines in the summary buffer. + +@end table + + +@menu +* Customizing Threading:: Variables you can change to affect the threading. +* Thread Commands:: Thread based commands in the summary buffer. +@end menu + + +@node Customizing Threading +@subsection Customizing Threading +@cindex customizing threading + +@menu +* Loose Threads:: How Gnus gathers loose threads into bigger threads. +* Filling In Threads:: Making the threads displayed look fuller. +* More Threading:: Even more variables for fiddling with threads. +* Low-Level Threading:: You thought it was over@dots{} but you were wrong! +@end menu + + +@node Loose Threads +@subsubsection Loose Threads +@cindex < +@cindex > +@cindex loose threads + +@table @code +@item gnus-summary-make-false-root +@vindex gnus-summary-make-false-root +If non-@code{nil}, Gnus will gather all loose subtrees into one big tree +and create a dummy root at the top. (Wait a minute. Root at the top? +Yup.) Loose subtrees occur when the real root has expired, or you've +read or killed the root in a previous session. + +When there is no real root of a thread, Gnus will have to fudge +something. This variable says what fudging method Gnus should use. +There are four possible values: + +@iftex +@iflatex +\gnusfigure{The Summary Buffer}{390}{ +\put(0,0){\epsfig{figure=ps/summary-adopt,width=7.5cm}} +\put(445,0){\makebox(0,0)[br]{\epsfig{figure=ps/summary-empty,width=7.5cm}}} +\put(0,400){\makebox(0,0)[tl]{\epsfig{figure=ps/summary-none,width=7.5cm}}} +\put(445,400){\makebox(0,0)[tr]{\epsfig{figure=ps/summary-dummy,width=7.5cm}}} +} +@end iflatex +@end iftex + +@cindex adopting articles + +@table @code + +@item adopt +Gnus will make the first of the orphaned articles the parent. This +parent will adopt all the other articles. The adopted articles will be +marked as such by pointy brackets (@samp{<>}) instead of the standard +square brackets (@samp{[]}). This is the default method. + +@item dummy +@vindex gnus-summary-dummy-line-format +@vindex gnus-summary-make-false-root-always +Gnus will create a dummy summary line that will pretend to be the +parent. This dummy line does not correspond to any real article, so +selecting it will just select the first real article after the dummy +article. @code{gnus-summary-dummy-line-format} is used to specify the +format of the dummy roots. It accepts only one format spec: @samp{S}, +which is the subject of the article. @xref{Formatting Variables}. +If you want all threads to have a dummy root, even the non-gathered +ones, set @code{gnus-summary-make-false-root-always} to @code{t}. + +@item empty +Gnus won't actually make any article the parent, but simply leave the +subject field of all orphans except the first empty. (Actually, it will +use @code{gnus-summary-same-subject} as the subject (@pxref{Summary +Buffer Format}).) + +@item none +Don't make any article parent at all. Just gather the threads and +display them after one another. + +@item nil +Don't gather loose threads. +@end table + +@item gnus-summary-gather-subject-limit +@vindex gnus-summary-gather-subject-limit +Loose threads are gathered by comparing subjects of articles. If this +variable is @code{nil}, Gnus requires an exact match between the +subjects of the loose threads before gathering them into one big +super-thread. This might be too strict a requirement, what with the +presence of stupid newsreaders that chop off long subject lines. If +you think so, set this variable to, say, 20 to require that only the +first 20 characters of the subjects have to match. If you set this +variable to a really low number, you'll find that Gnus will gather +everything in sight into one thread, which isn't very helpful. + +@cindex fuzzy article gathering +If you set this variable to the special value @code{fuzzy}, Gnus will +use a fuzzy string comparison algorithm on the subjects (@pxref{Fuzzy +Matching}). + +@item gnus-simplify-subject-fuzzy-regexp +@vindex gnus-simplify-subject-fuzzy-regexp +This can either be a regular expression or list of regular expressions +that match strings that will be removed from subjects if fuzzy subject +simplification is used. + +@item gnus-simplify-ignored-prefixes +@vindex gnus-simplify-ignored-prefixes +If you set @code{gnus-summary-gather-subject-limit} to something as low +as 10, you might consider setting this variable to something sensible: + +@c Written by Michael Ernst +@lisp +(setq gnus-simplify-ignored-prefixes + (concat + "\\`\\[?\\(" + (mapconcat + 'identity + '("looking" + "wanted" "followup" "summary\\( of\\)?" + "help" "query" "problem" "question" + "answer" "reference" "announce" + "How can I" "How to" "Comparison of" + ;; ... + ) + "\\|") + "\\)\\s *\\(" + (mapconcat 'identity + '("for" "for reference" "with" "about") + "\\|") + "\\)?\\]?:?[ \t]*")) +@end lisp + +All words that match this regexp will be removed before comparing two +subjects. + +@item gnus-simplify-subject-functions +@vindex gnus-simplify-subject-functions +If non-@code{nil}, this variable overrides +@code{gnus-summary-gather-subject-limit}. This variable should be a +list of functions to apply to the @code{Subject} string iteratively to +arrive at the simplified version of the string. + +Useful functions to put in this list include: + +@table @code +@item gnus-simplify-subject-re +@findex gnus-simplify-subject-re +Strip the leading @samp{Re:}. + +@item gnus-simplify-subject-fuzzy +@findex gnus-simplify-subject-fuzzy +Simplify fuzzily. + +@item gnus-simplify-whitespace +@findex gnus-simplify-whitespace +Remove excessive whitespace. + +@item gnus-simplify-all-whitespace +@findex gnus-simplify-all-whitespace +Remove all whitespace. +@end table + +You may also write your own functions, of course. + + +@item gnus-summary-gather-exclude-subject +@vindex gnus-summary-gather-exclude-subject +Since loose thread gathering is done on subjects only, that might lead +to many false hits, especially with certain common subjects like +@samp{} and @samp{(none)}. To make the situation slightly better, +you can use the regexp @code{gnus-summary-gather-exclude-subject} to say +what subjects should be excluded from the gathering process.@* +The default is @samp{^ *$\\|^(none)$}. + +@item gnus-summary-thread-gathering-function +@vindex gnus-summary-thread-gathering-function +Gnus gathers threads by looking at @code{Subject} headers. This means +that totally unrelated articles may end up in the same ``thread'', which +is confusing. An alternate approach is to look at all the +@code{Message-ID}s in all the @code{References} headers to find matches. +This will ensure that no gathered threads ever include unrelated +articles, but it also means that people who have posted with broken +newsreaders won't be gathered properly. The choice is yours---plague or +cholera: + +@table @code +@item gnus-gather-threads-by-subject +@findex gnus-gather-threads-by-subject +This function is the default gathering function and looks at +@code{Subject}s exclusively. + +@item gnus-gather-threads-by-references +@findex gnus-gather-threads-by-references +This function looks at @code{References} headers exclusively. +@end table + +If you want to test gathering by @code{References}, you could say +something like: + +@lisp +(setq gnus-summary-thread-gathering-function + 'gnus-gather-threads-by-references) +@end lisp + +@end table + + +@node Filling In Threads +@subsubsection Filling In Threads + +@table @code +@item gnus-fetch-old-headers +@vindex gnus-fetch-old-headers +If non-@code{nil}, Gnus will attempt to build old threads by fetching +more old headers---headers to articles marked as read. If you would +like to display as few summary lines as possible, but still connect as +many loose threads as possible, you should set this variable to +@code{some} or a number. If you set it to a number, no more than that +number of extra old headers will be fetched. In either case, fetching +old headers only works if the back end you are using carries overview +files---this would normally be @code{nntp}, @code{nnspool}, +@code{nnml}, and @code{nnmaildir}. Also remember that if the root of +the thread has been expired by the server, there's not much Gnus can +do about that. + +This variable can also be set to @code{invisible}. This won't have any +visible effects, but is useful if you use the @kbd{A T} command a lot +(@pxref{Finding the Parent}). + +@item gnus-fetch-old-ephemeral-headers +@vindex gnus-fetch-old-ephemeral-headers +Same as @code{gnus-fetch-old-headers}, but only used for ephemeral +newsgroups. + +@item gnus-build-sparse-threads +@vindex gnus-build-sparse-threads +Fetching old headers can be slow. A low-rent similar effect can be +gotten by setting this variable to @code{some}. Gnus will then look at +the complete @code{References} headers of all articles and try to string +together articles that belong in the same thread. This will leave +@dfn{gaps} in the threading display where Gnus guesses that an article +is missing from the thread. (These gaps appear like normal summary +lines. If you select a gap, Gnus will try to fetch the article in +question.) If this variable is @code{t}, Gnus will display all these +``gaps'' without regard for whether they are useful for completing the +thread or not. Finally, if this variable is @code{more}, Gnus won't cut +off sparse leaf nodes that don't lead anywhere. This variable is +@code{nil} by default. + +@item gnus-read-all-available-headers +@vindex gnus-read-all-available-headers +This is a rather obscure variable that few will find useful. It's +intended for those non-news newsgroups where the back end has to fetch +quite a lot to present the summary buffer, and where it's impossible to +go back to parents of articles. This is mostly the case in the +web-based groups, like the @code{nnultimate} groups. + +If you don't use those, then it's safe to leave this as the default +@code{nil}. If you want to use this variable, it should be a regexp +that matches the group name, or @code{t} for all groups. + +@end table + + +@node More Threading +@subsubsection More Threading + +@table @code +@item gnus-show-threads +@vindex gnus-show-threads +If this variable is @code{nil}, no threading will be done, and all of +the rest of the variables here will have no effect. Turning threading +off will speed group selection up a bit, but it is sure to make reading +slower and more awkward. + +@item gnus-thread-hide-subtree +@vindex gnus-thread-hide-subtree +If non-@code{nil}, all threads will be hidden when the summary buffer is +generated. + +This can also be a predicate specifier (@pxref{Predicate Specifiers}). +Available predicates are @code{gnus-article-unread-p} and +@code{gnus-article-unseen-p}. + +Here's an example: + +@lisp +(setq gnus-thread-hide-subtree + '(or gnus-article-unread-p + gnus-article-unseen-p)) +@end lisp + +(It's a pretty nonsensical example, since all unseen articles are also +unread, but you get my drift.) + + +@item gnus-thread-expunge-below +@vindex gnus-thread-expunge-below +All threads that have a total score (as defined by +@code{gnus-thread-score-function}) less than this number will be +expunged. This variable is @code{nil} by default, which means that no +threads are expunged. + +@item gnus-thread-hide-killed +@vindex gnus-thread-hide-killed +if you kill a thread and this variable is non-@code{nil}, the subtree +will be hidden. + +@item gnus-thread-ignore-subject +@vindex gnus-thread-ignore-subject +Sometimes somebody changes the subject in the middle of a thread. If +this variable is non-@code{nil}, which is the default, the subject +change is ignored. If it is @code{nil}, a change in the subject will +result in a new thread. + +@item gnus-thread-indent-level +@vindex gnus-thread-indent-level +This is a number that says how much each sub-thread should be indented. +The default is 4. + +@item gnus-sort-gathered-threads-function +@vindex gnus-sort-gathered-threads-function +Sometimes, particularly with mailing lists, the order in which mails +arrive locally is not necessarily the same as the order in which they +arrived on the mailing list. Consequently, when sorting sub-threads +using the default @code{gnus-thread-sort-by-number}, responses can end +up appearing before the article to which they are responding to. +Setting this variable to an alternate value +(e.g. @code{gnus-thread-sort-by-date}), in a group's parameters or in an +appropriate hook (e.g. @code{gnus-summary-generate-hook}) can produce a +more logical sub-thread ordering in such instances. + +@end table + + +@node Low-Level Threading +@subsubsection Low-Level Threading + +@table @code + +@item gnus-parse-headers-hook +@vindex gnus-parse-headers-hook +Hook run before parsing any headers. + +@item gnus-alter-header-function +@vindex gnus-alter-header-function +If non-@code{nil}, this function will be called to allow alteration of +article header structures. The function is called with one parameter, +the article header vector, which it may alter in any way. For instance, +if you have a mail-to-news gateway which alters the @code{Message-ID}s +in systematic ways (by adding prefixes and such), you can use this +variable to un-scramble the @code{Message-ID}s so that they are more +meaningful. Here's one example: + +@lisp +(setq gnus-alter-header-function 'my-alter-message-id) + +(defun my-alter-message-id (header) + (let ((id (mail-header-id header))) + (when (string-match + "\\(<[^<>@@]*\\)\\.?cygnus\\..*@@\\([^<>@@]*>\\)" id) + (mail-header-set-id + (concat (match-string 1 id) "@@" (match-string 2 id)) + header)))) +@end lisp + +@end table + + +@node Thread Commands +@subsection Thread Commands +@cindex thread commands + +@table @kbd + +@item T k +@itemx C-M-k +@kindex T k (Summary) +@kindex C-M-k (Summary) +@findex gnus-summary-kill-thread +Mark all articles in the current (sub-)thread as read +(@code{gnus-summary-kill-thread}). If the prefix argument is positive, +remove all marks instead. If the prefix argument is negative, tick +articles instead. + +@item T l +@itemx C-M-l +@kindex T l (Summary) +@kindex C-M-l (Summary) +@findex gnus-summary-lower-thread +Lower the score of the current (sub-)thread +(@code{gnus-summary-lower-thread}). + +@item T i +@kindex T i (Summary) +@findex gnus-summary-raise-thread +Increase the score of the current (sub-)thread +(@code{gnus-summary-raise-thread}). + +@item T # +@kindex T # (Summary) +@findex gnus-uu-mark-thread +Set the process mark on the current (sub-)thread +(@code{gnus-uu-mark-thread}). + +@item T M-# +@kindex T M-# (Summary) +@findex gnus-uu-unmark-thread +Remove the process mark from the current (sub-)thread +(@code{gnus-uu-unmark-thread}). + +@item T T +@kindex T T (Summary) +@findex gnus-summary-toggle-threads +Toggle threading (@code{gnus-summary-toggle-threads}). + +@item T s +@kindex T s (Summary) +@findex gnus-summary-show-thread +Expose the (sub-)thread hidden under the current article, if any@* +(@code{gnus-summary-show-thread}). + +@item T h +@kindex T h (Summary) +@findex gnus-summary-hide-thread +Hide the current (sub-)thread (@code{gnus-summary-hide-thread}). + +@item T S +@kindex T S (Summary) +@findex gnus-summary-show-all-threads +Expose all hidden threads (@code{gnus-summary-show-all-threads}). + +@item T H +@kindex T H (Summary) +@findex gnus-summary-hide-all-threads +Hide all threads (@code{gnus-summary-hide-all-threads}). + +@item T t +@kindex T t (Summary) +@findex gnus-summary-rethread-current +Re-thread the current article's thread +(@code{gnus-summary-rethread-current}). This works even when the +summary buffer is otherwise unthreaded. + +@item T ^ +@kindex T ^ (Summary) +@findex gnus-summary-reparent-thread +Make the current article the child of the marked (or previous) article +(@code{gnus-summary-reparent-thread}). + +@end table + +The following commands are thread movement commands. They all +understand the numeric prefix. + +@table @kbd + +@item T n +@kindex T n (Summary) +@itemx C-M-f +@kindex C-M-n (Summary) +@itemx M-down +@kindex M-down (Summary) +@findex gnus-summary-next-thread +Go to the next thread (@code{gnus-summary-next-thread}). + +@item T p +@kindex T p (Summary) +@itemx C-M-b +@kindex C-M-p (Summary) +@itemx M-up +@kindex M-up (Summary) +@findex gnus-summary-prev-thread +Go to the previous thread (@code{gnus-summary-prev-thread}). + +@item T d +@kindex T d (Summary) +@findex gnus-summary-down-thread +Descend the thread (@code{gnus-summary-down-thread}). + +@item T u +@kindex T u (Summary) +@findex gnus-summary-up-thread +Ascend the thread (@code{gnus-summary-up-thread}). + +@item T o +@kindex T o (Summary) +@findex gnus-summary-top-thread +Go to the top of the thread (@code{gnus-summary-top-thread}). +@end table + +@vindex gnus-thread-operation-ignore-subject +If you ignore subject while threading, you'll naturally end up with +threads that have several different subjects in them. If you then issue +a command like @kbd{T k} (@code{gnus-summary-kill-thread}) you might not +wish to kill the entire thread, but just those parts of the thread that +have the same subject as the current article. If you like this idea, +you can fiddle with @code{gnus-thread-operation-ignore-subject}. If it +is non-@code{nil} (which it is by default), subjects will be ignored +when doing thread commands. If this variable is @code{nil}, articles in +the same thread with different subjects will not be included in the +operation in question. If this variable is @code{fuzzy}, only articles +that have subjects fuzzily equal will be included (@pxref{Fuzzy +Matching}). + + +@node Sorting the Summary Buffer +@section Sorting the Summary Buffer + +@findex gnus-thread-sort-by-total-score +@findex gnus-thread-sort-by-date +@findex gnus-thread-sort-by-score +@findex gnus-thread-sort-by-subject +@findex gnus-thread-sort-by-author +@findex gnus-thread-sort-by-number +@findex gnus-thread-sort-by-random +@vindex gnus-thread-sort-functions +@findex gnus-thread-sort-by-most-recent-number +@findex gnus-thread-sort-by-most-recent-date +If you are using a threaded summary display, you can sort the threads by +setting @code{gnus-thread-sort-functions}, which can be either a single +function, a list of functions, or a list containing functions and +@code{(not some-function)} elements. + +By default, sorting is done on article numbers. Ready-made sorting +predicate functions include @code{gnus-thread-sort-by-number}, +@code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-subject}, +@code{gnus-thread-sort-by-date}, @code{gnus-thread-sort-by-score}, +@code{gnus-thread-sort-by-most-recent-number}, +@code{gnus-thread-sort-by-most-recent-date}, +@code{gnus-thread-sort-by-random} and +@code{gnus-thread-sort-by-total-score}. + +Each function takes two threads and returns non-@code{nil} if the first +thread should be sorted before the other. Note that sorting really is +normally done by looking only at the roots of each thread. + +If you use more than one function, the primary sort key should be the +last function in the list. You should probably always include +@code{gnus-thread-sort-by-number} in the list of sorting +functions---preferably first. This will ensure that threads that are +equal with respect to the other sort criteria will be displayed in +ascending article order. + +If you would like to sort by reverse score, then by subject, and finally +by number, you could do something like: + +@lisp +(setq gnus-thread-sort-functions + '(gnus-thread-sort-by-number + gnus-thread-sort-by-subject + (not gnus-thread-sort-by-total-score))) +@end lisp + +The threads that have highest score will be displayed first in the +summary buffer. When threads have the same score, they will be sorted +alphabetically. The threads that have the same score and the same +subject will be sorted by number, which is (normally) the sequence in +which the articles arrived. + +If you want to sort by score and then reverse arrival order, you could +say something like: + +@lisp +(setq gnus-thread-sort-functions + '((lambda (t1 t2) + (not (gnus-thread-sort-by-number t1 t2))) + gnus-thread-sort-by-score)) +@end lisp + +@vindex gnus-thread-score-function +The function in the @code{gnus-thread-score-function} variable (default +@code{+}) is used for calculating the total score of a thread. Useful +functions might be @code{max}, @code{min}, or squared means, or whatever +tickles your fancy. + +@findex gnus-article-sort-functions +@findex gnus-article-sort-by-date +@findex gnus-article-sort-by-score +@findex gnus-article-sort-by-subject +@findex gnus-article-sort-by-author +@findex gnus-article-sort-by-random +@findex gnus-article-sort-by-number +If you are using an unthreaded display for some strange reason or +other, you have to fiddle with the @code{gnus-article-sort-functions} +variable. It is very similar to the +@code{gnus-thread-sort-functions}, except that it uses slightly +different functions for article comparison. Available sorting +predicate functions are @code{gnus-article-sort-by-number}, +@code{gnus-article-sort-by-author}, +@code{gnus-article-sort-by-subject}, @code{gnus-article-sort-by-date}, +@code{gnus-article-sort-by-random}, and +@code{gnus-article-sort-by-score}. + +If you want to sort an unthreaded summary display by subject, you could +say something like: + +@lisp +(setq gnus-article-sort-functions + '(gnus-article-sort-by-number + gnus-article-sort-by-subject)) +@end lisp + + + +@node Asynchronous Fetching +@section Asynchronous Article Fetching +@cindex asynchronous article fetching +@cindex article pre-fetch +@cindex pre-fetch + +If you read your news from an @acronym{NNTP} server that's far away, the +network latencies may make reading articles a chore. You have to wait +for a while after pressing @kbd{n} to go to the next article before the +article appears. Why can't Gnus just go ahead and fetch the article +while you are reading the previous one? Why not, indeed. + +First, some caveats. There are some pitfalls to using asynchronous +article fetching, especially the way Gnus does it. + +Let's say you are reading article 1, which is short, and article 2 is +quite long, and you are not interested in reading that. Gnus does not +know this, so it goes ahead and fetches article 2. You decide to read +article 3, but since Gnus is in the process of fetching article 2, the +connection is blocked. + +To avoid these situations, Gnus will open two (count 'em two) +connections to the server. Some people may think this isn't a very nice +thing to do, but I don't see any real alternatives. Setting up that +extra connection takes some time, so Gnus startup will be slower. + +Gnus will fetch more articles than you will read. This will mean that +the link between your machine and the @acronym{NNTP} server will become more +loaded than if you didn't use article pre-fetch. The server itself will +also become more loaded---both with the extra article requests, and the +extra connection. + +Ok, so now you know that you shouldn't really use this thing@dots{} unless +you really want to. + +@vindex gnus-asynchronous +Here's how: Set @code{gnus-asynchronous} to @code{t}. The rest should +happen automatically. + +@vindex gnus-use-article-prefetch +You can control how many articles are to be pre-fetched by setting +@code{gnus-use-article-prefetch}. This is 30 by default, which means +that when you read an article in the group, the back end will pre-fetch +the next 30 articles. If this variable is @code{t}, the back end will +pre-fetch all the articles it can without bound. If it is +@code{nil}, no pre-fetching will be done. + +@vindex gnus-async-prefetch-article-p +@findex gnus-async-unread-p +There are probably some articles that you don't want to pre-fetch---read +articles, for instance. The @code{gnus-async-prefetch-article-p} +variable controls whether an article is to be pre-fetched. This +function should return non-@code{nil} when the article in question is +to be pre-fetched. The default is @code{gnus-async-unread-p}, which +returns @code{nil} on read articles. The function is called with an +article data structure as the only parameter. + +If, for instance, you wish to pre-fetch only unread articles shorter +than 100 lines, you could say something like: + +@lisp +(defun my-async-short-unread-p (data) + "Return non-nil for short, unread articles." + (and (gnus-data-unread-p data) + (< (mail-header-lines (gnus-data-header data)) + 100))) + +(setq gnus-async-prefetch-article-p 'my-async-short-unread-p) +@end lisp + +These functions will be called many, many times, so they should +preferably be short and sweet to avoid slowing down Gnus too much. +It's probably a good idea to byte-compile things like this. + +@vindex gnus-prefetched-article-deletion-strategy +Articles have to be removed from the asynch buffer sooner or later. The +@code{gnus-prefetched-article-deletion-strategy} says when to remove +articles. This is a list that may contain the following elements: + +@table @code +@item read +Remove articles when they are read. + +@item exit +Remove articles when exiting the group. +@end table + +The default value is @code{(read exit)}. + +@c @vindex gnus-use-header-prefetch +@c If @code{gnus-use-header-prefetch} is non-@code{nil}, prefetch articles +@c from the next group. + + +@node Article Caching +@section Article Caching +@cindex article caching +@cindex caching + +If you have an @emph{extremely} slow @acronym{NNTP} connection, you may +consider turning article caching on. Each article will then be stored +locally under your home directory. As you may surmise, this could +potentially use @emph{huge} amounts of disk space, as well as eat up all +your inodes so fast it will make your head swim. In vodka. + +Used carefully, though, it could be just an easier way to save articles. + +@vindex gnus-use-long-file-name +@vindex gnus-cache-directory +@vindex gnus-use-cache +To turn caching on, set @code{gnus-use-cache} to @code{t}. By default, +all articles ticked or marked as dormant will then be copied +over to your local cache (@code{gnus-cache-directory}). Whether this +cache is flat or hierarchical is controlled by the +@code{gnus-use-long-file-name} variable, as usual. + +When re-selecting a ticked or dormant article, it will be fetched from the +cache instead of from the server. As articles in your cache will never +expire, this might serve as a method of saving articles while still +keeping them where they belong. Just mark all articles you want to save +as dormant, and don't worry. + +When an article is marked as read, is it removed from the cache. + +@vindex gnus-cache-remove-articles +@vindex gnus-cache-enter-articles +The entering/removal of articles from the cache is controlled by the +@code{gnus-cache-enter-articles} and @code{gnus-cache-remove-articles} +variables. Both are lists of symbols. The first is @code{(ticked +dormant)} by default, meaning that ticked and dormant articles will be +put in the cache. The latter is @code{(read)} by default, meaning that +articles marked as read are removed from the cache. Possibly +symbols in these two lists are @code{ticked}, @code{dormant}, +@code{unread} and @code{read}. + +@findex gnus-jog-cache +So where does the massive article-fetching and storing come into the +picture? The @code{gnus-jog-cache} command will go through all +subscribed newsgroups, request all unread articles, score them, and +store them in the cache. You should only ever, ever ever ever, use this +command if 1) your connection to the @acronym{NNTP} server is really, really, +really slow and 2) you have a really, really, really huge disk. +Seriously. One way to cut down on the number of articles downloaded is +to score unwanted articles down and have them marked as read. They will +not then be downloaded by this command. + +@vindex gnus-uncacheable-groups +@vindex gnus-cacheable-groups +It is likely that you do not want caching on all groups. For instance, +if your @code{nnml} mail is located under your home directory, it makes no +sense to cache it somewhere else under your home directory. Unless you +feel that it's neat to use twice as much space. + +To limit the caching, you could set @code{gnus-cacheable-groups} to a +regexp of groups to cache, @samp{^nntp} for instance, or set the +@code{gnus-uncacheable-groups} regexp to @samp{^nnml}, for instance. +Both variables are @code{nil} by default. If a group matches both +variables, the group is not cached. + +@findex gnus-cache-generate-nov-databases +@findex gnus-cache-generate-active +@vindex gnus-cache-active-file +The cache stores information on what articles it contains in its active +file (@code{gnus-cache-active-file}). If this file (or any other parts +of the cache) becomes all messed up for some reason or other, Gnus +offers two functions that will try to set things right. @kbd{M-x +gnus-cache-generate-nov-databases} will (re)build all the @acronym{NOV} +files, and @kbd{gnus-cache-generate-active} will (re)generate the active +file. + +@findex gnus-cache-move-cache +@code{gnus-cache-move-cache} will move your whole +@code{gnus-cache-directory} to some other location. You get asked to +where, isn't that cool? + +@node Persistent Articles +@section Persistent Articles +@cindex persistent articles + +Closely related to article caching, we have @dfn{persistent articles}. +In fact, it's just a different way of looking at caching, and much more +useful in my opinion. + +Say you're reading a newsgroup, and you happen on to some valuable gem +that you want to keep and treasure forever. You'd normally just save it +(using one of the many saving commands) in some file. The problem with +that is that it's just, well, yucky. Ideally you'd prefer just having +the article remain in the group where you found it forever; untouched by +the expiry going on at the news server. + +This is what a @dfn{persistent article} is---an article that just won't +be deleted. It's implemented using the normal cache functions, but +you use two explicit commands for managing persistent articles: + +@table @kbd + +@item * +@kindex * (Summary) +@findex gnus-cache-enter-article +Make the current article persistent (@code{gnus-cache-enter-article}). + +@item M-* +@kindex M-* (Summary) +@findex gnus-cache-remove-article +Remove the current article from the persistent articles +(@code{gnus-cache-remove-article}). This will normally delete the +article. +@end table + +Both these commands understand the process/prefix convention. + +To avoid having all ticked articles (and stuff) entered into the cache, +you should set @code{gnus-use-cache} to @code{passive} if you're just +interested in persistent articles: + +@lisp +(setq gnus-use-cache 'passive) +@end lisp + + +@node Article Backlog +@section Article Backlog +@cindex backlog +@cindex article backlog + +If you have a slow connection, but the idea of using caching seems +unappealing to you (and it is, really), you can help the situation some +by switching on the @dfn{backlog}. This is where Gnus will buffer +already read articles so that it doesn't have to re-fetch articles +you've already read. This only helps if you are in the habit of +re-selecting articles you've recently read, of course. If you never do +that, turning the backlog on will slow Gnus down a little bit, and +increase memory usage some. + +@vindex gnus-keep-backlog +If you set @code{gnus-keep-backlog} to a number @var{n}, Gnus will store +at most @var{n} old articles in a buffer for later re-fetching. If this +variable is non-@code{nil} and is not a number, Gnus will store +@emph{all} read articles, which means that your Emacs will grow without +bound before exploding and taking your machine down with you. I put +that in there just to keep y'all on your toes. + +The default value is 20. + + +@node Saving Articles +@section Saving Articles +@cindex saving articles + +Gnus can save articles in a number of ways. Below is the documentation +for saving articles in a fairly straight-forward fashion (i.e., little +processing of the article is done before it is saved). For a different +approach (uudecoding, unsharing) you should use @code{gnus-uu} +(@pxref{Decoding Articles}). + +For the commands listed here, the target is a file. If you want to +save to a group, see the @kbd{B c} (@code{gnus-summary-copy-article}) +command (@pxref{Mail Group Commands}). + +@vindex gnus-save-all-headers +If @code{gnus-save-all-headers} is non-@code{nil}, Gnus will not delete +unwanted headers before saving the article. + +@vindex gnus-saved-headers +If the preceding variable is @code{nil}, all headers that match the +@code{gnus-saved-headers} regexp will be kept, while the rest will be +deleted before saving. + +@table @kbd + +@item O o +@itemx o +@kindex O o (Summary) +@kindex o (Summary) +@findex gnus-summary-save-article +@c @icon{gnus-summary-save-article} +Save the current article using the default article saver +(@code{gnus-summary-save-article}). + +@item O m +@kindex O m (Summary) +@findex gnus-summary-save-article-mail +Save the current article in a Unix mail box (mbox) file +(@code{gnus-summary-save-article-mail}). + +@item O r +@kindex O r (Summary) +@findex gnus-summary-save-article-rmail +Save the current article in Rmail format +(@code{gnus-summary-save-article-rmail}). + +@item O f +@kindex O f (Summary) +@findex gnus-summary-save-article-file +@c @icon{gnus-summary-save-article-file} +Save the current article in plain file format +(@code{gnus-summary-save-article-file}). + +@item O F +@kindex O F (Summary) +@findex gnus-summary-write-article-file +Write the current article in plain file format, overwriting any previous +file contents (@code{gnus-summary-write-article-file}). + +@item O b +@kindex O b (Summary) +@findex gnus-summary-save-article-body-file +Save the current article body in plain file format +(@code{gnus-summary-save-article-body-file}). + +@item O h +@kindex O h (Summary) +@findex gnus-summary-save-article-folder +Save the current article in mh folder format +(@code{gnus-summary-save-article-folder}). + +@item O v +@kindex O v (Summary) +@findex gnus-summary-save-article-vm +Save the current article in a VM folder +(@code{gnus-summary-save-article-vm}). + +@item O p +@itemx | +@kindex O p (Summary) +@kindex | (Summary) +@findex gnus-summary-pipe-output +Save the current article in a pipe. Uhm, like, what I mean is---Pipe +the current article to a process (@code{gnus-summary-pipe-output}). +If given a symbolic prefix (@pxref{Symbolic Prefixes}), include the +complete headers in the piped output. + +@item O P +@kindex O P (Summary) +@findex gnus-summary-muttprint +@vindex gnus-summary-muttprint-program +Save the current article into muttprint. That is, print it using the +external program @uref{http://muttprint.sourceforge.net/, +Muttprint}. The program name and options to use is controlled by the +variable @code{gnus-summary-muttprint-program}. +(@code{gnus-summary-muttprint}). + +@end table + +@vindex gnus-prompt-before-saving +All these commands use the process/prefix convention +(@pxref{Process/Prefix}). If you save bunches of articles using these +functions, you might get tired of being prompted for files to save each +and every article in. The prompting action is controlled by +the @code{gnus-prompt-before-saving} variable, which is @code{always} by +default, giving you that excessive prompting action you know and +loathe. If you set this variable to @code{t} instead, you'll be prompted +just once for each series of articles you save. If you like to really +have Gnus do all your thinking for you, you can even set this variable +to @code{nil}, which means that you will never be prompted for files to +save articles in. Gnus will simply save all the articles in the default +files. + + +@vindex gnus-default-article-saver +You can customize the @code{gnus-default-article-saver} variable to make +Gnus do what you want it to. You can use any of the eight ready-made +functions below, or you can create your own. + +@table @code + +@item gnus-summary-save-in-rmail +@findex gnus-summary-save-in-rmail +@vindex gnus-rmail-save-name +@findex gnus-plain-save-name +This is the default format, @dfn{Babyl}. Uses the function in the +@code{gnus-rmail-save-name} variable to get a file name to save the +article in. The default is @code{gnus-plain-save-name}. + +@item gnus-summary-save-in-mail +@findex gnus-summary-save-in-mail +@vindex gnus-mail-save-name +Save in a Unix mail (mbox) file. Uses the function in the +@code{gnus-mail-save-name} variable to get a file name to save the +article in. The default is @code{gnus-plain-save-name}. + +@item gnus-summary-save-in-file +@findex gnus-summary-save-in-file +@vindex gnus-file-save-name +@findex gnus-numeric-save-name +Append the article straight to an ordinary file. Uses the function in +the @code{gnus-file-save-name} variable to get a file name to save the +article in. The default is @code{gnus-numeric-save-name}. + +@item gnus-summary-write-to-file +@findex gnus-summary-write-to-file +Write the article straight to an ordinary file. The file is +overwritten if it exists. Uses the function in the +@code{gnus-file-save-name} variable to get a file name to save the +article in. The default is @code{gnus-numeric-save-name}. + +@item gnus-summary-save-body-in-file +@findex gnus-summary-save-body-in-file +Append the article body to an ordinary file. Uses the function in the +@code{gnus-file-save-name} variable to get a file name to save the +article in. The default is @code{gnus-numeric-save-name}. + +@item gnus-summary-write-body-to-file +@findex gnus-summary-write-body-to-file +Write the article body straight to an ordinary file. The file is +overwritten if it exists. Uses the function in the +@code{gnus-file-save-name} variable to get a file name to save the +article in. The default is @code{gnus-numeric-save-name}. + +@item gnus-summary-save-in-folder +@findex gnus-summary-save-in-folder +@findex gnus-folder-save-name +@findex gnus-Folder-save-name +@vindex gnus-folder-save-name +@cindex rcvstore +@cindex MH folders +Save the article to an MH folder using @code{rcvstore} from the MH +library. Uses the function in the @code{gnus-folder-save-name} variable +to get a file name to save the article in. The default is +@code{gnus-folder-save-name}, but you can also use +@code{gnus-Folder-save-name}, which creates capitalized names. + +@item gnus-summary-save-in-vm +@findex gnus-summary-save-in-vm +Save the article in a VM folder. You have to have the VM mail +reader to use this setting. +@end table + +The symbol of each function may have the following properties: + +@table @code +@item :decode +The value non-@code{nil} means save decoded articles. This is +meaningful only with @code{gnus-summary-save-in-file}, +@code{gnus-summary-save-body-in-file}, +@code{gnus-summary-write-to-file}, and +@code{gnus-summary-write-body-to-file}. + +@item :function +The value specifies an alternative function which appends, not +overwrites, articles to a file. This implies that when saving many +articles at a time, @code{gnus-prompt-before-saving} is bound to +@code{t} and all articles are saved in a single file. This is +meaningful only with @code{gnus-summary-write-to-file} and +@code{gnus-summary-write-body-to-file}. + +@item :headers +The value specifies the symbol of a variable of which the value +specifies headers to be saved. If it is omitted, +@code{gnus-save-all-headers} and @code{gnus-saved-headers} control what +headers should be saved. +@end table + +@vindex gnus-article-save-directory +All of these functions, except for the last one, will save the article +in the @code{gnus-article-save-directory}, which is initialized from the +@env{SAVEDIR} environment variable. This is @file{~/News/} by +default. + +As you can see above, the functions use different functions to find a +suitable name of a file to save the article in. Below is a list of +available functions that generate names: + +@table @code + +@item gnus-Numeric-save-name +@findex gnus-Numeric-save-name +File names like @file{~/News/Alt.andrea-dworkin/45}. + +@item gnus-numeric-save-name +@findex gnus-numeric-save-name +File names like @file{~/News/alt.andrea-dworkin/45}. + +@item gnus-Plain-save-name +@findex gnus-Plain-save-name +File names like @file{~/News/Alt.andrea-dworkin}. + +@item gnus-plain-save-name +@findex gnus-plain-save-name +File names like @file{~/News/alt.andrea-dworkin}. + +@item gnus-sender-save-name +@findex gnus-sender-save-name +File names like @file{~/News/larsi}. +@end table + +@vindex gnus-split-methods +You can have Gnus suggest where to save articles by plonking a regexp into +the @code{gnus-split-methods} alist. For instance, if you would like to +save articles related to Gnus in the file @file{gnus-stuff}, and articles +related to VM in @file{vm-stuff}, you could set this variable to something +like: + +@lisp +(("^Subject:.*gnus\\|^Newsgroups:.*gnus" "gnus-stuff") + ("^Subject:.*vm\\|^Xref:.*vm" "vm-stuff") + (my-choosing-function "../other-dir/my-stuff") + ((equal gnus-newsgroup-name "mail.misc") "mail-stuff")) +@end lisp + +We see that this is a list where each element is a list that has two +elements---the @dfn{match} and the @dfn{file}. The match can either be +a string (in which case it is used as a regexp to match on the article +head); it can be a symbol (which will be called as a function with the +group name as a parameter); or it can be a list (which will be +@code{eval}ed). If any of these actions have a non-@code{nil} result, +the @dfn{file} will be used as a default prompt. In addition, the +result of the operation itself will be used if the function or form +called returns a string or a list of strings. + +You basically end up with a list of file names that might be used when +saving the current article. (All ``matches'' will be used.) You will +then be prompted for what you really want to use as a name, with file +name completion over the results from applying this variable. + +This variable is @code{((gnus-article-archive-name))} by default, which +means that Gnus will look at the articles it saves for an +@code{Archive-name} line and use that as a suggestion for the file +name. + +Here's an example function to clean up file names somewhat. If you have +lots of mail groups called things like +@samp{nnml:mail.whatever}, you may want to chop off the beginning of +these group names before creating the file name to save to. The +following will do just that: + +@lisp +(defun my-save-name (group) + (when (string-match "^nnml:mail." group) + (substring group (match-end 0)))) + +(setq gnus-split-methods + '((gnus-article-archive-name) + (my-save-name))) +@end lisp + + +@vindex gnus-use-long-file-name +Finally, you have the @code{gnus-use-long-file-name} variable. If it is +@code{nil}, all the preceding functions will replace all periods +(@samp{.}) in the group names with slashes (@samp{/})---which means that +the functions will generate hierarchies of directories instead of having +all the files in the top level directory +(@file{~/News/alt/andrea-dworkin} instead of +@file{~/News/alt.andrea-dworkin}.) This variable is @code{t} by default +on most systems. However, for historical reasons, this is @code{nil} on +Xenix and usg-unix-v machines by default. + +This function also affects kill and score file names. If this variable +is a list, and the list contains the element @code{not-score}, long file +names will not be used for score files, if it contains the element +@code{not-save}, long file names will not be used for saving, and if it +contains the element @code{not-kill}, long file names will not be used +for kill files. + +If you'd like to save articles in a hierarchy that looks something like +a spool, you could + +@lisp +(setq gnus-use-long-file-name '(not-save)) ; @r{to get a hierarchy} +(setq gnus-default-article-saver + 'gnus-summary-save-in-file) ; @r{no encoding} +@end lisp + +Then just save with @kbd{o}. You'd then read this hierarchy with +ephemeral @code{nneething} groups---@kbd{G D} in the group buffer, and +the top level directory as the argument (@file{~/News/}). Then just walk +around to the groups/directories with @code{nneething}. + + +@node Decoding Articles +@section Decoding Articles +@cindex decoding articles + +Sometime users post articles (or series of articles) that have been +encoded in some way or other. Gnus can decode them for you. + +@menu +* Uuencoded Articles:: Uudecode articles. +* Shell Archives:: Unshar articles. +* PostScript Files:: Split PostScript. +* Other Files:: Plain save and binhex. +* Decoding Variables:: Variables for a happy decoding. +* Viewing Files:: You want to look at the result of the decoding? +@end menu + +@cindex series +@cindex article series +All these functions use the process/prefix convention +(@pxref{Process/Prefix}) for finding out what articles to work on, with +the extension that a ``single article'' means ``a single series''. Gnus +can find out by itself what articles belong to a series, decode all the +articles and unpack/view/save the resulting file(s). + +Gnus guesses what articles are in the series according to the following +simplish rule: The subjects must be (nearly) identical, except for the +last two numbers of the line. (Spaces are largely ignored, however.) + +For example: If you choose a subject called @samp{cat.gif (2/3)}, Gnus +will find all the articles that match the regexp @samp{^cat.gif +([0-9]+/[0-9]+).*$}. + +Subjects that are non-standard, like @samp{cat.gif (2/3) Part 6 of a +series}, will not be properly recognized by any of the automatic viewing +commands, and you have to mark the articles manually with @kbd{#}. + + +@node Uuencoded Articles +@subsection Uuencoded Articles +@cindex uudecode +@cindex uuencoded articles + +@table @kbd + +@item X u +@kindex X u (Summary) +@findex gnus-uu-decode-uu +@c @icon{gnus-uu-decode-uu} +Uudecodes the current series (@code{gnus-uu-decode-uu}). + +@item X U +@kindex X U (Summary) +@findex gnus-uu-decode-uu-and-save +Uudecodes and saves the current series +(@code{gnus-uu-decode-uu-and-save}). + +@item X v u +@kindex X v u (Summary) +@findex gnus-uu-decode-uu-view +Uudecodes and views the current series (@code{gnus-uu-decode-uu-view}). + +@item X v U +@kindex X v U (Summary) +@findex gnus-uu-decode-uu-and-save-view +Uudecodes, views and saves the current series +(@code{gnus-uu-decode-uu-and-save-view}). + +@end table + +Remember that these all react to the presence of articles marked with +the process mark. If, for instance, you'd like to decode and save an +entire newsgroup, you'd typically do @kbd{M P a} +(@code{gnus-uu-mark-all}) and then @kbd{X U} +(@code{gnus-uu-decode-uu-and-save}). + +All this is very much different from how @code{gnus-uu} worked with +@sc{gnus 4.1}, where you had explicit keystrokes for everything under +the sun. This version of @code{gnus-uu} generally assumes that you mark +articles in some way (@pxref{Setting Process Marks}) and then press +@kbd{X u}. + +@vindex gnus-uu-notify-files +Note: When trying to decode articles that have names matching +@code{gnus-uu-notify-files}, which is hard-coded to +@samp{[Cc][Ii][Nn][Dd][Yy][0-9]+.\\(gif\\|jpg\\)}, @code{gnus-uu} will +automatically post an article on @samp{comp.unix.wizards} saying that +you have just viewed the file in question. This feature can't be turned +off. + + +@node Shell Archives +@subsection Shell Archives +@cindex unshar +@cindex shell archives +@cindex shared articles + +Shell archives (``shar files'') used to be a popular way to distribute +sources, but it isn't used all that much today. In any case, we have +some commands to deal with these: + +@table @kbd + +@item X s +@kindex X s (Summary) +@findex gnus-uu-decode-unshar +Unshars the current series (@code{gnus-uu-decode-unshar}). + +@item X S +@kindex X S (Summary) +@findex gnus-uu-decode-unshar-and-save +Unshars and saves the current series (@code{gnus-uu-decode-unshar-and-save}). + +@item X v s +@kindex X v s (Summary) +@findex gnus-uu-decode-unshar-view +Unshars and views the current series (@code{gnus-uu-decode-unshar-view}). + +@item X v S +@kindex X v S (Summary) +@findex gnus-uu-decode-unshar-and-save-view +Unshars, views and saves the current series +(@code{gnus-uu-decode-unshar-and-save-view}). +@end table + + +@node PostScript Files +@subsection PostScript Files +@cindex PostScript + +@table @kbd + +@item X p +@kindex X p (Summary) +@findex gnus-uu-decode-postscript +Unpack the current PostScript series (@code{gnus-uu-decode-postscript}). + +@item X P +@kindex X P (Summary) +@findex gnus-uu-decode-postscript-and-save +Unpack and save the current PostScript series +(@code{gnus-uu-decode-postscript-and-save}). + +@item X v p +@kindex X v p (Summary) +@findex gnus-uu-decode-postscript-view +View the current PostScript series +(@code{gnus-uu-decode-postscript-view}). + +@item X v P +@kindex X v P (Summary) +@findex gnus-uu-decode-postscript-and-save-view +View and save the current PostScript series +(@code{gnus-uu-decode-postscript-and-save-view}). +@end table + + +@node Other Files +@subsection Other Files + +@table @kbd +@item X o +@kindex X o (Summary) +@findex gnus-uu-decode-save +Save the current series +(@code{gnus-uu-decode-save}). + +@item X b +@kindex X b (Summary) +@findex gnus-uu-decode-binhex +Unbinhex the current series (@code{gnus-uu-decode-binhex}). This +doesn't really work yet. +@end table + + +@node Decoding Variables +@subsection Decoding Variables + +Adjective, not verb. + +@menu +* Rule Variables:: Variables that say how a file is to be viewed. +* Other Decode Variables:: Other decode variables. +* Uuencoding and Posting:: Variables for customizing uuencoding. +@end menu + + +@node Rule Variables +@subsubsection Rule Variables +@cindex rule variables + +Gnus uses @dfn{rule variables} to decide how to view a file. All these +variables are of the form + +@lisp + (list '(regexp1 command2) + '(regexp2 command2) + ...) +@end lisp + +@table @code + +@item gnus-uu-user-view-rules +@vindex gnus-uu-user-view-rules +@cindex sox +This variable is consulted first when viewing files. If you wish to use, +for instance, @code{sox} to convert an @file{.au} sound file, you could +say something like: +@lisp +(setq gnus-uu-user-view-rules + (list '("\\\\.au$" "sox %s -t .aiff > /dev/audio"))) +@end lisp + +@item gnus-uu-user-view-rules-end +@vindex gnus-uu-user-view-rules-end +This variable is consulted if Gnus couldn't make any matches from the +user and default view rules. + +@item gnus-uu-user-archive-rules +@vindex gnus-uu-user-archive-rules +This variable can be used to say what commands should be used to unpack +archives. +@end table + + +@node Other Decode Variables +@subsubsection Other Decode Variables + +@table @code +@vindex gnus-uu-grabbed-file-functions + +@item gnus-uu-grabbed-file-functions +All functions in this list will be called right after each file has been +successfully decoded---so that you can move or view files right away, +and don't have to wait for all files to be decoded before you can do +anything. Ready-made functions you can put in this list are: + +@table @code + +@item gnus-uu-grab-view +@findex gnus-uu-grab-view +View the file. + +@item gnus-uu-grab-move +@findex gnus-uu-grab-move +Move the file (if you're using a saving function.) +@end table + +@item gnus-uu-be-dangerous +@vindex gnus-uu-be-dangerous +Specifies what to do if unusual situations arise during decoding. If +@code{nil}, be as conservative as possible. If @code{t}, ignore things +that didn't work, and overwrite existing files. Otherwise, ask each +time. + +@item gnus-uu-ignore-files-by-name +@vindex gnus-uu-ignore-files-by-name +Files with name matching this regular expression won't be viewed. + +@item gnus-uu-ignore-files-by-type +@vindex gnus-uu-ignore-files-by-type +Files with a @acronym{MIME} type matching this variable won't be viewed. +Note that Gnus tries to guess what type the file is based on the name. +@code{gnus-uu} is not a @acronym{MIME} package (yet), so this is slightly +kludgey. + +@item gnus-uu-tmp-dir +@vindex gnus-uu-tmp-dir +Where @code{gnus-uu} does its work. + +@item gnus-uu-do-not-unpack-archives +@vindex gnus-uu-do-not-unpack-archives +Non-@code{nil} means that @code{gnus-uu} won't peek inside archives +looking for files to display. + +@item gnus-uu-view-and-save +@vindex gnus-uu-view-and-save +Non-@code{nil} means that the user will always be asked to save a file +after viewing it. + +@item gnus-uu-ignore-default-view-rules +@vindex gnus-uu-ignore-default-view-rules +Non-@code{nil} means that @code{gnus-uu} will ignore the default viewing +rules. + +@item gnus-uu-ignore-default-archive-rules +@vindex gnus-uu-ignore-default-archive-rules +Non-@code{nil} means that @code{gnus-uu} will ignore the default archive +unpacking commands. + +@item gnus-uu-kill-carriage-return +@vindex gnus-uu-kill-carriage-return +Non-@code{nil} means that @code{gnus-uu} will strip all carriage returns +from articles. + +@item gnus-uu-unmark-articles-not-decoded +@vindex gnus-uu-unmark-articles-not-decoded +Non-@code{nil} means that @code{gnus-uu} will mark unsuccessfully +decoded articles as unread. + +@item gnus-uu-correct-stripped-uucode +@vindex gnus-uu-correct-stripped-uucode +Non-@code{nil} means that @code{gnus-uu} will @emph{try} to fix +uuencoded files that have had trailing spaces deleted. + +@item gnus-uu-pre-uudecode-hook +@vindex gnus-uu-pre-uudecode-hook +Hook run before sending a message to @code{uudecode}. + +@item gnus-uu-view-with-metamail +@vindex gnus-uu-view-with-metamail +@cindex metamail +Non-@code{nil} means that @code{gnus-uu} will ignore the viewing +commands defined by the rule variables and just fudge a @acronym{MIME} +content type based on the file name. The result will be fed to +@code{metamail} for viewing. + +@item gnus-uu-save-in-digest +@vindex gnus-uu-save-in-digest +Non-@code{nil} means that @code{gnus-uu}, when asked to save without +decoding, will save in digests. If this variable is @code{nil}, +@code{gnus-uu} will just save everything in a file without any +embellishments. The digesting almost conforms to RFC 1153---no easy way +to specify any meaningful volume and issue numbers were found, so I +simply dropped them. + +@end table + + +@node Uuencoding and Posting +@subsubsection Uuencoding and Posting + +@table @code + +@item gnus-uu-post-include-before-composing +@vindex gnus-uu-post-include-before-composing +Non-@code{nil} means that @code{gnus-uu} will ask for a file to encode +before you compose the article. If this variable is @code{t}, you can +either include an encoded file with @kbd{C-c C-i} or have one included +for you when you post the article. + +@item gnus-uu-post-length +@vindex gnus-uu-post-length +Maximum length of an article. The encoded file will be split into how +many articles it takes to post the entire file. + +@item gnus-uu-post-threaded +@vindex gnus-uu-post-threaded +Non-@code{nil} means that @code{gnus-uu} will post the encoded file in a +thread. This may not be smart, as no other decoder I have seen is able +to follow threads when collecting uuencoded articles. (Well, I have +seen one package that does that---@code{gnus-uu}, but somehow, I don't +think that counts@dots{}) Default is @code{nil}. + +@item gnus-uu-post-separate-description +@vindex gnus-uu-post-separate-description +Non-@code{nil} means that the description will be posted in a separate +article. The first article will typically be numbered (0/x). If this +variable is @code{nil}, the description the user enters will be included +at the beginning of the first article, which will be numbered (1/x). +Default is @code{t}. + +@end table + + +@node Viewing Files +@subsection Viewing Files +@cindex viewing files +@cindex pseudo-articles + +After decoding, if the file is some sort of archive, Gnus will attempt +to unpack the archive and see if any of the files in the archive can be +viewed. For instance, if you have a gzipped tar file @file{pics.tar.gz} +containing the files @file{pic1.jpg} and @file{pic2.gif}, Gnus will +uncompress and de-tar the main file, and then view the two pictures. +This unpacking process is recursive, so if the archive contains archives +of archives, it'll all be unpacked. + +Finally, Gnus will normally insert a @dfn{pseudo-article} for each +extracted file into the summary buffer. If you go to these +``articles'', you will be prompted for a command to run (usually Gnus +will make a suggestion), and then the command will be run. + +@vindex gnus-view-pseudo-asynchronously +If @code{gnus-view-pseudo-asynchronously} is @code{nil}, Emacs will wait +until the viewing is done before proceeding. + +@vindex gnus-view-pseudos +If @code{gnus-view-pseudos} is @code{automatic}, Gnus will not insert +the pseudo-articles into the summary buffer, but view them +immediately. If this variable is @code{not-confirm}, the user won't even +be asked for a confirmation before viewing is done. + +@vindex gnus-view-pseudos-separately +If @code{gnus-view-pseudos-separately} is non-@code{nil}, one +pseudo-article will be created for each file to be viewed. If +@code{nil}, all files that use the same viewing command will be given as +a list of parameters to that command. + +@vindex gnus-insert-pseudo-articles +If @code{gnus-insert-pseudo-articles} is non-@code{nil}, insert +pseudo-articles when decoding. It is @code{t} by default. + +So; there you are, reading your @emph{pseudo-articles} in your +@emph{virtual newsgroup} from the @emph{virtual server}; and you think: +Why isn't anything real anymore? How did we get here? + + +@node Article Treatment +@section Article Treatment + +Reading through this huge manual, you may have quite forgotten that the +object of newsreaders is to actually, like, read what people have +written. Reading articles. Unfortunately, people are quite bad at +writing, so there are tons of functions and variables to make reading +these articles easier. + +@menu +* Article Highlighting:: You want to make the article look like fruit salad. +* Article Fontisizing:: Making emphasized text look nice. +* Article Hiding:: You also want to make certain info go away. +* Article Washing:: Lots of way-neat functions to make life better. +* Article Header:: Doing various header transformations. +* Article Buttons:: Click on URLs, Message-IDs, addresses and the like. +* Article Button Levels:: Controlling appearance of buttons. +* Article Date:: Grumble, UT! +* Article Display:: Display various stuff---X-Face, Picons, Smileys +* Article Signature:: What is a signature? +* Article Miscellanea:: Various other stuff. +@end menu + + +@node Article Highlighting +@subsection Article Highlighting +@cindex highlighting + +Not only do you want your article buffer to look like fruit salad, but +you want it to look like technicolor fruit salad. + +@table @kbd + +@item W H a +@kindex W H a (Summary) +@findex gnus-article-highlight +@findex gnus-article-maybe-highlight +Do much highlighting of the current article +(@code{gnus-article-highlight}). This function highlights header, cited +text, the signature, and adds buttons to the body and the head. + +@item W H h +@kindex W H h (Summary) +@findex gnus-article-highlight-headers +@vindex gnus-header-face-alist +Highlight the headers (@code{gnus-article-highlight-headers}). The +highlighting will be done according to the @code{gnus-header-face-alist} +variable, which is a list where each element has the form +@code{(@var{regexp} @var{name} @var{content})}. +@var{regexp} is a regular expression for matching the +header, @var{name} is the face used for highlighting the header name +(@pxref{Faces and Fonts}) and @var{content} is the face for highlighting +the header value. The first match made will be used. Note that +@var{regexp} shouldn't have @samp{^} prepended---Gnus will add one. + +@item W H c +@kindex W H c (Summary) +@findex gnus-article-highlight-citation +Highlight cited text (@code{gnus-article-highlight-citation}). + +Some variables to customize the citation highlights: + +@table @code +@vindex gnus-cite-parse-max-size + +@item gnus-cite-parse-max-size +If the article size in bytes is bigger than this variable (which is +25000 by default), no citation highlighting will be performed. + +@item gnus-cite-max-prefix +@vindex gnus-cite-max-prefix +Maximum possible length for a citation prefix (default 20). + +@item gnus-cite-face-list +@vindex gnus-cite-face-list +List of faces used for highlighting citations (@pxref{Faces and Fonts}). +When there are citations from multiple articles in the same message, +Gnus will try to give each citation from each article its own face. +This should make it easier to see who wrote what. + +@item gnus-supercite-regexp +@vindex gnus-supercite-regexp +Regexp matching normal Supercite attribution lines. + +@item gnus-supercite-secondary-regexp +@vindex gnus-supercite-secondary-regexp +Regexp matching mangled Supercite attribution lines. + +@item gnus-cite-minimum-match-count +@vindex gnus-cite-minimum-match-count +Minimum number of identical prefixes we have to see before we believe +that it's a citation. + +@item gnus-cite-attribution-prefix +@vindex gnus-cite-attribution-prefix +Regexp matching the beginning of an attribution line. + +@item gnus-cite-attribution-suffix +@vindex gnus-cite-attribution-suffix +Regexp matching the end of an attribution line. + +@item gnus-cite-attribution-face +@vindex gnus-cite-attribution-face +Face used for attribution lines. It is merged with the face for the +cited text belonging to the attribution. + +@item gnus-cite-ignore-quoted-from +@vindex gnus-cite-ignore-quoted-from +If non-@code{nil}, no citation highlighting will be performed on lines +beginning with @samp{>From }. Those lines may have been quoted by MTAs +in order not to mix up with the envelope From line. The default value +is @code{t}. + +@end table + + +@item W H s +@kindex W H s (Summary) +@vindex gnus-signature-separator +@vindex gnus-signature-face +@findex gnus-article-highlight-signature +Highlight the signature (@code{gnus-article-highlight-signature}). +Everything after @code{gnus-signature-separator} (@pxref{Article +Signature}) in an article will be considered a signature and will be +highlighted with @code{gnus-signature-face}, which is @code{italic} by +default. + +@end table + +@xref{Customizing Articles}, for how to highlight articles automatically. + + +@node Article Fontisizing +@subsection Article Fontisizing +@cindex emphasis +@cindex article emphasis + +@findex gnus-article-emphasize +@kindex W e (Summary) +People commonly add emphasis to words in news articles by writing things +like @samp{_this_} or @samp{*this*} or @samp{/this/}. Gnus can make +this look nicer by running the article through the @kbd{W e} +(@code{gnus-article-emphasize}) command. + +@vindex gnus-emphasis-alist +How the emphasis is computed is controlled by the +@code{gnus-emphasis-alist} variable. This is an alist where the first +element is a regular expression to be matched. The second is a number +that says what regular expression grouping is used to find the entire +emphasized word. The third is a number that says what regexp grouping +should be displayed and highlighted. (The text between these two +groupings will be hidden.) The fourth is the face used for +highlighting. + +@lisp +(setq gnus-emphasis-alist + '(("_\\(\\w+\\)_" 0 1 gnus-emphasis-underline) + ("\\*\\(\\w+\\)\\*" 0 1 gnus-emphasis-bold))) +@end lisp + +@cindex slash +@cindex asterisk +@cindex underline +@cindex / +@cindex * + +@vindex gnus-emphasis-underline +@vindex gnus-emphasis-bold +@vindex gnus-emphasis-italic +@vindex gnus-emphasis-underline-bold +@vindex gnus-emphasis-underline-italic +@vindex gnus-emphasis-bold-italic +@vindex gnus-emphasis-underline-bold-italic +By default, there are seven rules, and they use the following faces: +@code{gnus-emphasis-bold}, @code{gnus-emphasis-italic}, +@code{gnus-emphasis-underline}, @code{gnus-emphasis-bold-italic}, +@code{gnus-emphasis-underline-italic}, +@code{gnus-emphasis-underline-bold}, and +@code{gnus-emphasis-underline-bold-italic}. + +If you want to change these faces, you can either use @kbd{M-x +customize}, or you can use @code{copy-face}. For instance, if you want +to make @code{gnus-emphasis-italic} use a red face instead, you could +say something like: + +@lisp +(copy-face 'red 'gnus-emphasis-italic) +@end lisp + +@vindex gnus-group-highlight-words-alist + +If you want to highlight arbitrary words, you can use the +@code{gnus-group-highlight-words-alist} variable, which uses the same +syntax as @code{gnus-emphasis-alist}. The @code{highlight-words} group +parameter (@pxref{Group Parameters}) can also be used. + +@xref{Customizing Articles}, for how to fontize articles automatically. + + +@node Article Hiding +@subsection Article Hiding +@cindex article hiding + +Or rather, hiding certain things in each article. There usually is much +too much cruft in most articles. + +@table @kbd + +@item W W a +@kindex W W a (Summary) +@findex gnus-article-hide +Do quite a lot of hiding on the article buffer +(@kbd{gnus-article-hide}). In particular, this function will hide +headers, @acronym{PGP}, cited text and the signature. + +@item W W h +@kindex W W h (Summary) +@findex gnus-article-hide-headers +Hide headers (@code{gnus-article-hide-headers}). @xref{Hiding +Headers}. + +@item W W b +@kindex W W b (Summary) +@findex gnus-article-hide-boring-headers +Hide headers that aren't particularly interesting +(@code{gnus-article-hide-boring-headers}). @xref{Hiding Headers}. + +@item W W s +@kindex W W s (Summary) +@findex gnus-article-hide-signature +Hide signature (@code{gnus-article-hide-signature}). @xref{Article +Signature}. + +@item W W l +@kindex W W l (Summary) +@findex gnus-article-hide-list-identifiers +@vindex gnus-list-identifiers +Strip list identifiers specified in @code{gnus-list-identifiers}. These +are strings some mailing list servers add to the beginning of all +@code{Subject} headers---for example, @samp{[zebra 4711]}. Any leading +@samp{Re: } is skipped before stripping. @code{gnus-list-identifiers} +may not contain @code{\\(..\\)}. + +@table @code + +@item gnus-list-identifiers +@vindex gnus-list-identifiers +A regular expression that matches list identifiers to be removed from +subject. This can also be a list of regular expressions. + +@end table + +@item W W P +@kindex W W P (Summary) +@findex gnus-article-hide-pem +Hide @acronym{PEM} (privacy enhanced messages) cruft +(@code{gnus-article-hide-pem}). + +@item W W B +@kindex W W B (Summary) +@findex gnus-article-strip-banner +@vindex gnus-article-banner-alist +@vindex gnus-article-address-banner-alist +@cindex banner +@cindex OneList +@cindex stripping advertisements +@cindex advertisements +Strip the banner specified by the @code{banner} group parameter +(@code{gnus-article-strip-banner}). This is mainly used to hide those +annoying banners and/or signatures that some mailing lists and moderated +groups adds to all the messages. The way to use this function is to add +the @code{banner} group parameter (@pxref{Group Parameters}) to the +group you want banners stripped from. The parameter either be a string, +which will be interpreted as a regular expression matching text to be +removed, or the symbol @code{signature}, meaning that the (last) +signature should be removed, or other symbol, meaning that the +corresponding regular expression in @code{gnus-article-banner-alist} is +used. + +Regardless of a group, you can hide things like advertisements only when +the sender of an article has a certain mail address specified in +@code{gnus-article-address-banner-alist}. + +@table @code + +@item gnus-article-address-banner-alist +@vindex gnus-article-address-banner-alist +Alist of mail addresses and banners. Each element has the form +@code{(@var{address} . @var{banner})}, where @var{address} is a regexp +matching a mail address in the From header, @var{banner} is one of a +symbol @code{signature}, an item in @code{gnus-article-banner-alist}, +a regexp and @code{nil}. If @var{address} matches author's mail +address, it will remove things like advertisements. For example, if a +sender has the mail address @samp{hail@@yoo-hoo.co.jp} and there is a +banner something like @samp{Do You Yoo-hoo!?} in all articles he +sends, you can use the following element to remove them: + +@lisp +("@@yoo-hoo\\.co\\.jp\\'" . + "\n_+\nDo You Yoo-hoo!\\?\n.*\n.*\n") +@end lisp + +@end table + +@item W W c +@kindex W W c (Summary) +@findex gnus-article-hide-citation +Hide citation (@code{gnus-article-hide-citation}). Some variables for +customizing the hiding: + +@table @code + +@item gnus-cited-opened-text-button-line-format +@itemx gnus-cited-closed-text-button-line-format +@vindex gnus-cited-closed-text-button-line-format +@vindex gnus-cited-opened-text-button-line-format +Gnus adds buttons to show where the cited text has been hidden, and to +allow toggle hiding the text. The format of the variable is specified +by these format-like variable (@pxref{Formatting Variables}). These +specs are valid: + +@table @samp +@item b +Starting point of the hidden text. +@item e +Ending point of the hidden text. +@item l +Number of characters in the hidden region. +@item n +Number of lines of hidden text. +@end table + +@item gnus-cited-lines-visible +@vindex gnus-cited-lines-visible +The number of lines at the beginning of the cited text to leave +shown. This can also be a cons cell with the number of lines at the top +and bottom of the text, respectively, to remain visible. + +@end table + +@item W W C-c +@kindex W W C-c (Summary) +@findex gnus-article-hide-citation-maybe + +Hide citation (@code{gnus-article-hide-citation-maybe}) depending on the +following two variables: + +@table @code +@item gnus-cite-hide-percentage +@vindex gnus-cite-hide-percentage +If the cited text is of a bigger percentage than this variable (default +50), hide the cited text. + +@item gnus-cite-hide-absolute +@vindex gnus-cite-hide-absolute +The cited text must have at least this length (default 10) before it +is hidden. +@end table + +@item W W C +@kindex W W C (Summary) +@findex gnus-article-hide-citation-in-followups +Hide cited text in articles that aren't roots +(@code{gnus-article-hide-citation-in-followups}). This isn't very +useful as an interactive command, but might be a handy function to stick +have happen automatically (@pxref{Customizing Articles}). + +@end table + +All these ``hiding'' commands are toggles, but if you give a negative +prefix to these commands, they will show what they have previously +hidden. If you give a positive prefix, they will always hide. + +Also @pxref{Article Highlighting} for further variables for +citation customization. + +@xref{Customizing Articles}, for how to hide article elements +automatically. + + +@node Article Washing +@subsection Article Washing +@cindex washing +@cindex article washing + +We call this ``article washing'' for a really good reason. Namely, the +@kbd{A} key was taken, so we had to use the @kbd{W} key instead. + +@dfn{Washing} is defined by us as ``changing something from something to +something else'', but normally results in something looking better. +Cleaner, perhaps. + +@xref{Customizing Articles}, if you want to change how Gnus displays +articles by default. + +@table @kbd + +@item C-u g +This is not really washing, it's sort of the opposite of washing. If +you type this, you see the article exactly as it exists on disk or on +the server. + +@item g +Force redisplaying of the current article +(@code{gnus-summary-show-article}). This is also not really washing. +If you type this, you see the article without any previously applied +interactive Washing functions but with all default treatments +(@pxref{Customizing Articles}). + +@item W l +@kindex W l (Summary) +@findex gnus-summary-stop-page-breaking +Remove page breaks from the current article +(@code{gnus-summary-stop-page-breaking}). @xref{Misc Article}, for page +delimiters. + +@item W r +@kindex W r (Summary) +@findex gnus-summary-caesar-message +@c @icon{gnus-summary-caesar-message} +Do a Caesar rotate (rot13) on the article buffer +(@code{gnus-summary-caesar-message}). +Unreadable articles that tell you to read them with Caesar rotate or rot13. +(Typically offensive jokes and such.) + +It's commonly called ``rot13'' because each letter is rotated 13 +positions in the alphabet, e. g. @samp{B} (letter #2) -> @samp{O} (letter +#15). It is sometimes referred to as ``Caesar rotate'' because Caesar +is rumored to have employed this form of, uh, somewhat weak encryption. + +@item W m +@kindex W m (Summary) +@findex gnus-summary-morse-message +Morse decode the article buffer (@code{gnus-summary-morse-message}). + +@item W t +@item t +@kindex W t (Summary) +@kindex t (Summary) +@findex gnus-summary-toggle-header +Toggle whether to display all headers in the article buffer +(@code{gnus-summary-toggle-header}). + +@item W v +@kindex W v (Summary) +@findex gnus-summary-verbose-headers +Toggle whether to display all headers in the article buffer permanently +(@code{gnus-summary-verbose-headers}). + +@item W o +@kindex W o (Summary) +@findex gnus-article-treat-overstrike +Treat overstrike (@code{gnus-article-treat-overstrike}). + +@item W d +@kindex W d (Summary) +@findex gnus-article-treat-dumbquotes +@vindex gnus-article-dumbquotes-map +@cindex Smartquotes +@cindex M****s*** sm*rtq**t*s +@cindex Latin 1 +Treat M****s*** sm*rtq**t*s according to +@code{gnus-article-dumbquotes-map} +(@code{gnus-article-treat-dumbquotes}). Note that this function guesses +whether a character is a sm*rtq**t* or not, so it should only be used +interactively. + +Sm*rtq**t*s are M****s***'s unilateral extension to the character map in +an attempt to provide more quoting characters. If you see something +like @code{\222} or @code{\264} where you're expecting some kind of +apostrophe or quotation mark, then try this wash. + +@item W Y f +@kindex W Y f (Summary) +@findex gnus-article-outlook-deuglify-article +@cindex Outlook Express +Full deuglify of broken Outlook (Express) articles: Treat dumbquotes, +unwrap lines, repair attribution and rearrange citation. +(@code{gnus-article-outlook-deuglify-article}). + +@item W Y u +@kindex W Y u (Summary) +@findex gnus-article-outlook-unwrap-lines +@vindex gnus-outlook-deuglify-unwrap-min +@vindex gnus-outlook-deuglify-unwrap-max +Unwrap lines that appear to be wrapped citation lines. You can control +what lines will be unwrapped by frobbing +@code{gnus-outlook-deuglify-unwrap-min} and +@code{gnus-outlook-deuglify-unwrap-max}, indicating the minimum and +maximum length of an unwrapped citation line. +(@code{gnus-article-outlook-unwrap-lines}). + +@item W Y a +@kindex W Y a (Summary) +@findex gnus-article-outlook-repair-attribution +Repair a broken attribution line.@* +(@code{gnus-article-outlook-repair-attribution}). + +@item W Y c +@kindex W Y c (Summary) +@findex gnus-article-outlook-rearrange-citation +Repair broken citations by rearranging the text. +(@code{gnus-article-outlook-rearrange-citation}). + +@item W w +@kindex W w (Summary) +@findex gnus-article-fill-cited-article +Do word wrap (@code{gnus-article-fill-cited-article}). + +You can give the command a numerical prefix to specify the width to use +when filling. + +@item W Q +@kindex W Q (Summary) +@findex gnus-article-fill-long-lines +Fill long lines (@code{gnus-article-fill-long-lines}). + +@item W C +@kindex W C (Summary) +@findex gnus-article-capitalize-sentences +Capitalize the first word in each sentence +(@code{gnus-article-capitalize-sentences}). + +@item W c +@kindex W c (Summary) +@findex gnus-article-remove-cr +Translate CRLF pairs (i. e., @samp{^M}s on the end of the lines) into LF +(this takes care of DOS line endings), and then translate any remaining +CRs into LF (this takes care of Mac line endings) +(@code{gnus-article-remove-cr}). + +@item W q +@kindex W q (Summary) +@findex gnus-article-de-quoted-unreadable +Treat quoted-printable (@code{gnus-article-de-quoted-unreadable}). +Quoted-Printable is one common @acronym{MIME} encoding employed when +sending non-@acronym{ASCII} (i.e., 8-bit) articles. It typically +makes strings like @samp{déjà vu} look like @samp{d=E9j=E0 vu}, which +doesn't look very readable to me. Note that this is usually done +automatically by Gnus if the message in question has a +@code{Content-Transfer-Encoding} header that says that this encoding +has been done. If a prefix is given, a charset will be asked for. + +@item W 6 +@kindex W 6 (Summary) +@findex gnus-article-de-base64-unreadable +Treat base64 (@code{gnus-article-de-base64-unreadable}). Base64 is +one common @acronym{MIME} encoding employed when sending +non-@acronym{ASCII} (i.e., 8-bit) articles. Note that this is +usually done automatically by Gnus if the message in question has a +@code{Content-Transfer-Encoding} header that says that this encoding +has been done. If a prefix is given, a charset will be asked for. + +@item W Z +@kindex W Z (Summary) +@findex gnus-article-decode-HZ +Treat HZ or HZP (@code{gnus-article-decode-HZ}). HZ (or HZP) is one +common encoding employed when sending Chinese articles. It typically +makes strings look like @samp{~@{<:Ky2;S@{#,NpJ)l6HK!#~@}}. + +@item W u +@kindex W u (Summary) +@findex gnus-article-unsplit-urls +Remove newlines from within URLs. Some mailers insert newlines into +outgoing email messages to keep lines short. This reformatting can +split long URLs onto multiple lines. Repair those URLs by removing +the newlines (@code{gnus-article-unsplit-urls}). + +@item W h +@kindex W h (Summary) +@findex gnus-article-wash-html +Treat @acronym{HTML} (@code{gnus-article-wash-html}). Note that this is +usually done automatically by Gnus if the message in question has a +@code{Content-Type} header that says that the message is @acronym{HTML}. + +If a prefix is given, a charset will be asked for. If it is a number, +the charset defined in @code{gnus-summary-show-article-charset-alist} +(@pxref{Paging the Article}) will be used. + +@vindex gnus-article-wash-function +The default is to use the function specified by +@code{mm-text-html-renderer} (@pxref{Display Customization, ,Display +Customization, emacs-mime, The Emacs MIME Manual}) to convert the +@acronym{HTML}, but this is controlled by the +@code{gnus-article-wash-function} variable. Pre-defined functions you +can use include: + +@table @code +@item w3 +Use Emacs/W3. + +@item w3m +Use @uref{http://emacs-w3m.namazu.org/, emacs-w3m}. + +@item w3m-standalone +Use @uref{http://w3m.sourceforge.net/, w3m}. + +@item links +Use @uref{http://links.sf.net/, Links}. + +@item lynx +Use @uref{http://lynx.isc.org/, Lynx}. + +@item html2text +Use html2text---a simple @acronym{HTML} converter included with Gnus. + +@end table + +@item W b +@kindex W b (Summary) +@findex gnus-article-add-buttons +Add clickable buttons to the article (@code{gnus-article-add-buttons}). +@xref{Article Buttons}. + +@item W B +@kindex W B (Summary) +@findex gnus-article-add-buttons-to-head +Add clickable buttons to the article headers +(@code{gnus-article-add-buttons-to-head}). + +@item W p +@kindex W p (Summary) +@findex gnus-article-verify-x-pgp-sig +Verify a signed control message +(@code{gnus-article-verify-x-pgp-sig}). Control messages such as +@code{newgroup} and @code{checkgroups} are usually signed by the +hierarchy maintainer. You need to add the @acronym{PGP} public key of +the maintainer to your keyring to verify the +message.@footnote{@acronym{PGP} keys for many hierarchies are +available at @uref{ftp://ftp.isc.org/pub/pgpcontrol/README.html}} + +@item W s +@kindex W s (Summary) +@findex gnus-summary-force-verify-and-decrypt +Verify a signed (@acronym{PGP}, @acronym{PGP/MIME} or +@acronym{S/MIME}) message +(@code{gnus-summary-force-verify-and-decrypt}). @xref{Security}. + +@item W a +@kindex W a (Summary) +@findex gnus-article-strip-headers-in-body +Strip headers like the @code{X-No-Archive} header from the beginning of +article bodies (@code{gnus-article-strip-headers-in-body}). + +@item W E l +@kindex W E l (Summary) +@findex gnus-article-strip-leading-blank-lines +Remove all blank lines from the beginning of the article +(@code{gnus-article-strip-leading-blank-lines}). + +@item W E m +@kindex W E m (Summary) +@findex gnus-article-strip-multiple-blank-lines +Replace all blank lines with empty lines and then all multiple empty +lines with a single empty line. +(@code{gnus-article-strip-multiple-blank-lines}). + +@item W E t +@kindex W E t (Summary) +@findex gnus-article-remove-trailing-blank-lines +Remove all blank lines at the end of the article +(@code{gnus-article-remove-trailing-blank-lines}). + +@item W E a +@kindex W E a (Summary) +@findex gnus-article-strip-blank-lines +Do all the three commands above +(@code{gnus-article-strip-blank-lines}). + +@item W E A +@kindex W E A (Summary) +@findex gnus-article-strip-all-blank-lines +Remove all blank lines +(@code{gnus-article-strip-all-blank-lines}). + +@item W E s +@kindex W E s (Summary) +@findex gnus-article-strip-leading-space +Remove all white space from the beginning of all lines of the article +body (@code{gnus-article-strip-leading-space}). + +@item W E e +@kindex W E e (Summary) +@findex gnus-article-strip-trailing-space +Remove all white space from the end of all lines of the article +body (@code{gnus-article-strip-trailing-space}). + +@end table + +@xref{Customizing Articles}, for how to wash articles automatically. + + +@node Article Header +@subsection Article Header + +These commands perform various transformations of article header. + +@table @kbd + +@item W G u +@kindex W G u (Summary) +@findex gnus-article-treat-unfold-headers +Unfold folded header lines (@code{gnus-article-treat-unfold-headers}). + +@item W G n +@kindex W G n (Summary) +@findex gnus-article-treat-fold-newsgroups +Fold the @code{Newsgroups} and @code{Followup-To} headers +(@code{gnus-article-treat-fold-newsgroups}). + +@item W G f +@kindex W G f (Summary) +@findex gnus-article-treat-fold-headers +Fold all the message headers +(@code{gnus-article-treat-fold-headers}). + +@item W E w +@kindex W E w (Summary) +@findex gnus-article-remove-leading-whitespace +Remove excessive whitespace from all headers +(@code{gnus-article-remove-leading-whitespace}). + +@end table + + +@node Article Buttons +@subsection Article Buttons +@cindex buttons + +People often include references to other stuff in articles, and it would +be nice if Gnus could just fetch whatever it is that people talk about +with the minimum of fuzz when you hit @kbd{RET} or use the middle mouse +button on these references. + +@vindex gnus-button-man-handler +Gnus adds @dfn{buttons} to certain standard references by default: +Well-formed URLs, mail addresses, Message-IDs, Info links, man pages and +Emacs or Gnus related references. This is controlled by two variables, +one that handles article bodies and one that handles article heads: + +@table @code + +@item gnus-button-alist +@vindex gnus-button-alist +This is an alist where each entry has this form: + +@lisp +(@var{regexp} @var{button-par} @var{use-p} @var{function} @var{data-par}) +@end lisp + +@table @var + +@item regexp +All text that match this regular expression (case insensitive) will be +considered an external reference. Here's a typical regexp that matches +embedded URLs: @samp{]*\\)>}. This can also be a +variable containing a regexp, useful variables to use include +@code{gnus-button-url-regexp} and @code{gnus-button-mid-or-mail-regexp}. + +@item button-par +Gnus has to know which parts of the matches is to be highlighted. This +is a number that says what sub-expression of the regexp is to be +highlighted. If you want it all highlighted, you use 0 here. + +@item use-p +This form will be @code{eval}ed, and if the result is non-@code{nil}, +this is considered a match. This is useful if you want extra sifting to +avoid false matches. Often variables named +@code{gnus-button-@var{*}-level} are used here, @xref{Article Button +Levels}, but any other form may be used too. + +@c @code{use-p} is @code{eval}ed only if @code{regexp} matches. + +@item function +This function will be called when you click on this button. + +@item data-par +As with @var{button-par}, this is a sub-expression number, but this one +says which part of the match is to be sent as data to @var{function}. + +@end table + +So the full entry for buttonizing URLs is then + +@lisp +("]*\\)>" 0 t gnus-button-url 1) +@end lisp + +@item gnus-header-button-alist +@vindex gnus-header-button-alist +This is just like the other alist, except that it is applied to the +article head only, and that each entry has an additional element that is +used to say what headers to apply the buttonize coding to: + +@lisp +(@var{header} @var{regexp} @var{button-par} @var{use-p} @var{function} @var{data-par}) +@end lisp + +@var{header} is a regular expression. +@end table + +@subsubsection Related variables and functions + +@table @code +@item gnus-button-@var{*}-level +@xref{Article Button Levels}. + +@c Stuff related to gnus-button-browse-level + +@item gnus-button-url-regexp +@vindex gnus-button-url-regexp +A regular expression that matches embedded URLs. It is used in the +default values of the variables above. + +@c Stuff related to gnus-button-man-level + +@item gnus-button-man-handler +@vindex gnus-button-man-handler +The function to use for displaying man pages. It must take at least one +argument with a string naming the man page. + +@c Stuff related to gnus-button-message-level + +@item gnus-button-mid-or-mail-regexp +@vindex gnus-button-mid-or-mail-regexp +Regular expression that matches a message ID or a mail address. + +@item gnus-button-prefer-mid-or-mail +@vindex gnus-button-prefer-mid-or-mail +This variable determines what to do when the button on a string as +@samp{foo123@@bar.invalid} is pushed. Strings like this can be either a +message ID or a mail address. If it is one of the symbols @code{mid} or +@code{mail}, Gnus will always assume that the string is a message ID or +a mail address, respectively. If this variable is set to the symbol +@code{ask}, always query the user what to do. If it is a function, this +function will be called with the string as its only argument. The +function must return @code{mid}, @code{mail}, @code{invalid} or +@code{ask}. The default value is the function +@code{gnus-button-mid-or-mail-heuristic}. + +@item gnus-button-mid-or-mail-heuristic +@findex gnus-button-mid-or-mail-heuristic +Function that guesses whether its argument is a message ID or a mail +address. Returns @code{mid} if it's a message IDs, @code{mail} if +it's a mail address, @code{ask} if unsure and @code{invalid} if the +string is invalid. + +@item gnus-button-mid-or-mail-heuristic-alist +@vindex gnus-button-mid-or-mail-heuristic-alist +An alist of @code{(RATE . REGEXP)} pairs used by the function +@code{gnus-button-mid-or-mail-heuristic}. + +@c Stuff related to gnus-button-tex-level + +@item gnus-button-ctan-handler +@findex gnus-button-ctan-handler +The function to use for displaying CTAN links. It must take one +argument, the string naming the URL. + +@item gnus-ctan-url +@vindex gnus-ctan-url +Top directory of a CTAN (Comprehensive TeX Archive Network) archive used +by @code{gnus-button-ctan-handler}. + +@c Misc stuff + +@item gnus-article-button-face +@vindex gnus-article-button-face +Face used on buttons. + +@item gnus-article-mouse-face +@vindex gnus-article-mouse-face +Face used when the mouse cursor is over a button. + +@end table + +@xref{Customizing Articles}, for how to buttonize articles automatically. + + +@node Article Button Levels +@subsection Article button levels +@cindex button levels +The higher the value of the variables @code{gnus-button-@var{*}-level}, +the more buttons will appear. If the level is zero, no corresponding +buttons are displayed. With the default value (which is 5) you should +already see quite a lot of buttons. With higher levels, you will see +more buttons, but you may also get more false positives. To avoid them, +you can set the variables @code{gnus-button-@var{*}-level} local to +specific groups (@pxref{Group Parameters}). Here's an example for the +variable @code{gnus-parameters}: + +@lisp +;; @r{increase @code{gnus-button-*-level} in some groups:} +(setq gnus-parameters + '(("\\<\\(emacs\\|gnus\\)\\>" (gnus-button-emacs-level 10)) + ("\\" (gnus-button-man-level 10)) + ("\\" (gnus-button-tex-level 10)))) +@end lisp + +@table @code + +@item gnus-button-browse-level +@vindex gnus-button-browse-level +Controls the display of references to message IDs, mail addresses and +news URLs. Related variables and functions include +@code{gnus-button-url-regexp}, @code{browse-url}, and +@code{browse-url-browser-function}. + +@item gnus-button-emacs-level +@vindex gnus-button-emacs-level +Controls the display of Emacs or Gnus references. Related functions are +@code{gnus-button-handle-custom}, +@code{gnus-button-handle-describe-function}, +@code{gnus-button-handle-describe-variable}, +@code{gnus-button-handle-symbol}, +@code{gnus-button-handle-describe-key}, +@code{gnus-button-handle-apropos}, +@code{gnus-button-handle-apropos-command}, +@code{gnus-button-handle-apropos-variable}, +@code{gnus-button-handle-apropos-documentation}, and +@code{gnus-button-handle-library}. + +@item gnus-button-man-level +@vindex gnus-button-man-level +Controls the display of references to (Unix) man pages. +See @code{gnus-button-man-handler}. + +@item gnus-button-message-level +@vindex gnus-button-message-level +Controls the display of message IDs, mail addresses and news URLs. +Related variables and functions include +@code{gnus-button-mid-or-mail-regexp}, +@code{gnus-button-prefer-mid-or-mail}, +@code{gnus-button-mid-or-mail-heuristic}, and +@code{gnus-button-mid-or-mail-heuristic-alist}. + +@item gnus-button-tex-level +@vindex gnus-button-tex-level +Controls the display of references to @TeX{} or LaTeX stuff, e.g. for CTAN +URLs. See the variables @code{gnus-ctan-url}, +@code{gnus-button-ctan-handler}, +@code{gnus-button-ctan-directory-regexp}, and +@code{gnus-button-handle-ctan-bogus-regexp}. + +@end table + + +@node Article Date +@subsection Article Date + +The date is most likely generated in some obscure timezone you've never +heard of, so it's quite nice to be able to find out what the time was +when the article was sent. + +@table @kbd + +@item W T u +@kindex W T u (Summary) +@findex gnus-article-date-ut +Display the date in UT (aka. GMT, aka ZULU) +(@code{gnus-article-date-ut}). + +@item W T i +@kindex W T i (Summary) +@findex gnus-article-date-iso8601 +@cindex ISO 8601 +Display the date in international format, aka. ISO 8601 +(@code{gnus-article-date-iso8601}). + +@item W T l +@kindex W T l (Summary) +@findex gnus-article-date-local +Display the date in the local timezone (@code{gnus-article-date-local}). + +@item W T p +@kindex W T p (Summary) +@findex gnus-article-date-english +Display the date in a format that's easily pronounceable in English +(@code{gnus-article-date-english}). + +@item W T s +@kindex W T s (Summary) +@vindex gnus-article-time-format +@findex gnus-article-date-user +@findex format-time-string +Display the date using a user-defined format +(@code{gnus-article-date-user}). The format is specified by the +@code{gnus-article-time-format} variable, and is a string that's passed +to @code{format-time-string}. See the documentation of that variable +for a list of possible format specs. + +@item W T e +@kindex W T e (Summary) +@findex gnus-article-date-lapsed +@findex gnus-start-date-timer +@findex gnus-stop-date-timer +Say how much time has elapsed between the article was posted and now +(@code{gnus-article-date-lapsed}). It looks something like: + +@example +X-Sent: 6 weeks, 4 days, 1 hour, 3 minutes, 8 seconds ago +@end example + +@vindex gnus-article-date-lapsed-new-header +The value of @code{gnus-article-date-lapsed-new-header} determines +whether this header will just be added below the old Date one, or will +replace it. + +An advantage of using Gnus to read mail is that it converts simple bugs +into wonderful absurdities. + +If you want to have this line updated continually, you can put + +@lisp +(gnus-start-date-timer) +@end lisp + +in your @file{~/.gnus.el} file, or you can run it off of some hook. If +you want to stop the timer, you can use the @code{gnus-stop-date-timer} +command. + +@item W T o +@kindex W T o (Summary) +@findex gnus-article-date-original +Display the original date (@code{gnus-article-date-original}). This can +be useful if you normally use some other conversion function and are +worried that it might be doing something totally wrong. Say, claiming +that the article was posted in 1854. Although something like that is +@emph{totally} impossible. Don't you trust me? *titter* + +@end table + +@xref{Customizing Articles}, for how to display the date in your +preferred format automatically. + + +@node Article Display +@subsection Article Display +@cindex picons +@cindex x-face +@cindex smileys + +These commands add various frivolous display gimmicks to the article +buffer in Emacs versions that support them. + +@code{X-Face} headers are small black-and-white images supplied by the +message headers (@pxref{X-Face}). + +@code{Face} headers are small colored images supplied by the message +headers (@pxref{Face}). + +Smileys are those little @samp{:-)} symbols that people like to litter +their messages with (@pxref{Smileys}). + +Picons, on the other hand, reside on your own system, and Gnus will +try to match the headers to what you have (@pxref{Picons}). + +All these functions are toggles---if the elements already exist, +they'll be removed. + +@table @kbd +@item W D x +@kindex W D x (Summary) +@findex gnus-article-display-x-face +Display an @code{X-Face} in the @code{From} header. +(@code{gnus-article-display-x-face}). + +@item W D d +@kindex W D d (Summary) +@findex gnus-article-display-face +Display a @code{Face} in the @code{From} header. +(@code{gnus-article-display-face}). + +@item W D s +@kindex W D s (Summary) +@findex gnus-treat-smiley +Display smileys (@code{gnus-treat-smiley}). + +@item W D f +@kindex W D f (Summary) +@findex gnus-treat-from-picon +Piconify the @code{From} header (@code{gnus-treat-from-picon}). + +@item W D m +@kindex W D m (Summary) +@findex gnus-treat-mail-picon +Piconify all mail headers (i. e., @code{Cc}, @code{To}) +(@code{gnus-treat-mail-picon}). + +@item W D n +@kindex W D n (Summary) +@findex gnus-treat-newsgroups-picon +Piconify all news headers (i. e., @code{Newsgroups} and +@code{Followup-To}) (@code{gnus-treat-newsgroups-picon}). + +@item W D D +@kindex W D D (Summary) +@findex gnus-article-remove-images +Remove all images from the article buffer +(@code{gnus-article-remove-images}). + +@end table + + + +@node Article Signature +@subsection Article Signature +@cindex signatures +@cindex article signature + +@vindex gnus-signature-separator +Each article is divided into two parts---the head and the body. The +body can be divided into a signature part and a text part. The variable +that says what is to be considered a signature is +@code{gnus-signature-separator}. This is normally the standard +@samp{^-- $} as mandated by son-of-RFC 1036. However, many people use +non-standard signature separators, so this variable can also be a list +of regular expressions to be tested, one by one. (Searches are done +from the end of the body towards the beginning.) One likely value is: + +@lisp +(setq gnus-signature-separator + '("^-- $" ; @r{The standard} + "^-- *$" ; @r{A common mangling} + "^-------*$" ; @r{Many people just use a looong} + ; @r{line of dashes. Shame!} + "^ *--------*$" ; @r{Double-shame!} + "^________*$" ; @r{Underscores are also popular} + "^========*$")) ; @r{Pervert!} +@end lisp + +The more permissive you are, the more likely it is that you'll get false +positives. + +@vindex gnus-signature-limit +@code{gnus-signature-limit} provides a limit to what is considered a +signature when displaying articles. + +@enumerate +@item +If it is an integer, no signature may be longer (in characters) than +that integer. +@item +If it is a floating point number, no signature may be longer (in lines) +than that number. +@item +If it is a function, the function will be called without any parameters, +and if it returns @code{nil}, there is no signature in the buffer. +@item +If it is a string, it will be used as a regexp. If it matches, the text +in question is not a signature. +@end enumerate + +This variable can also be a list where the elements may be of the types +listed above. Here's an example: + +@lisp +(setq gnus-signature-limit + '(200.0 "^---*Forwarded article")) +@end lisp + +This means that if there are more than 200 lines after the signature +separator, or the text after the signature separator is matched by +the regular expression @samp{^---*Forwarded article}, then it isn't a +signature after all. + + +@node Article Miscellanea +@subsection Article Miscellanea + +@table @kbd +@item A t +@kindex A t (Summary) +@findex gnus-article-babel +Translate the article from one language to another +(@code{gnus-article-babel}). + +@end table + + +@node MIME Commands +@section MIME Commands +@cindex MIME decoding +@cindex attachments +@cindex viewing attachments + +The following commands all understand the numerical prefix. For +instance, @kbd{3 b} means ``view the third @acronym{MIME} part''. + +@table @kbd +@item b +@itemx K v +@kindex b (Summary) +@kindex K v (Summary) +View the @acronym{MIME} part. + +@item K o +@kindex K o (Summary) +Save the @acronym{MIME} part. + +@item K c +@kindex K c (Summary) +Copy the @acronym{MIME} part. + +@item K e +@kindex K e (Summary) +View the @acronym{MIME} part externally. + +@item K i +@kindex K i (Summary) +View the @acronym{MIME} part internally. + +@item K | +@kindex K | (Summary) +Pipe the @acronym{MIME} part to an external command. +@end table + +The rest of these @acronym{MIME} commands do not use the numerical prefix in +the same manner: + +@table @kbd +@item K b +@kindex K b (Summary) +Make all the @acronym{MIME} parts have buttons in front of them. This is +mostly useful if you wish to save (or perform other actions) on inlined +parts. + +@item K m +@kindex K m (Summary) +@findex gnus-summary-repair-multipart +Some multipart messages are transmitted with missing or faulty headers. +This command will attempt to ``repair'' these messages so that they can +be viewed in a more pleasant manner +(@code{gnus-summary-repair-multipart}). + +@item X m +@kindex X m (Summary) +@findex gnus-summary-save-parts +Save all parts matching a @acronym{MIME} type to a directory +(@code{gnus-summary-save-parts}). Understands the process/prefix +convention (@pxref{Process/Prefix}). + +@item M-t +@kindex M-t (Summary) +@findex gnus-summary-toggle-display-buttonized +Toggle the buttonized display of the article buffer +(@code{gnus-summary-toggle-display-buttonized}). + +@item W M w +@kindex W M w (Summary) +@findex gnus-article-decode-mime-words +Decode RFC 2047-encoded words in the article headers +(@code{gnus-article-decode-mime-words}). + +@item W M c +@kindex W M c (Summary) +@findex gnus-article-decode-charset +Decode encoded article bodies as well as charsets +(@code{gnus-article-decode-charset}). + +This command looks in the @code{Content-Type} header to determine the +charset. If there is no such header in the article, you can give it a +prefix, which will prompt for the charset to decode as. In regional +groups where people post using some common encoding (but do not +include @acronym{MIME} headers), you can set the @code{charset} group/topic +parameter to the required charset (@pxref{Group Parameters}). + +@item W M v +@kindex W M v (Summary) +@findex gnus-mime-view-all-parts +View all the @acronym{MIME} parts in the current article +(@code{gnus-mime-view-all-parts}). + +@end table + +Relevant variables: + +@table @code +@item gnus-ignored-mime-types +@vindex gnus-ignored-mime-types +This is a list of regexps. @acronym{MIME} types that match a regexp from +this list will be completely ignored by Gnus. The default value is +@code{nil}. + +To have all Vcards be ignored, you'd say something like this: + +@lisp +(setq gnus-ignored-mime-types + '("text/x-vcard")) +@end lisp + +@item gnus-article-loose-mime +@vindex gnus-article-loose-mime +If non-@code{nil}, Gnus won't require the @samp{MIME-Version} header +before interpreting the message as a @acronym{MIME} message. This helps +when reading messages from certain broken mail user agents. The +default is @code{nil}. + +@item gnus-article-emulate-mime +@vindex gnus-article-emulate-mime +@cindex uuencode +@cindex yEnc +There are other, non-@acronym{MIME} encoding methods used. The most common +is @samp{uuencode}, but yEncode is also getting to be popular. If +this variable is non-@code{nil}, Gnus will look in message bodies to +see if it finds these encodings, and if so, it'll run them through the +Gnus @acronym{MIME} machinery. The default is @code{t}. Only +single-part yEnc encoded attachments can be decoded. There's no support +for encoding in Gnus. + +@item gnus-unbuttonized-mime-types +@vindex gnus-unbuttonized-mime-types +This is a list of regexps. @acronym{MIME} types that match a regexp from +this list won't have @acronym{MIME} buttons inserted unless they aren't +displayed or this variable is overridden by +@code{gnus-buttonized-mime-types}. The default value is +@code{(".*/.*")}. This variable is only used when +@code{gnus-inhibit-mime-unbuttonizing} is @code{nil}. + +@item gnus-buttonized-mime-types +@vindex gnus-buttonized-mime-types +This is a list of regexps. @acronym{MIME} types that match a regexp from +this list will have @acronym{MIME} buttons inserted unless they aren't +displayed. This variable overrides +@code{gnus-unbuttonized-mime-types}. The default value is @code{nil}. +This variable is only used when @code{gnus-inhibit-mime-unbuttonizing} +is @code{nil}. + +To see e.g. security buttons but no other buttons, you could set this +variable to @code{("multipart/signed")} and leave +@code{gnus-unbuttonized-mime-types} at the default value. + +You could also add @code{"multipart/alternative"} to this list to +display radio buttons that allow you to choose one of two media types +those mails include. See also @code{mm-discouraged-alternatives} +(@pxref{Display Customization, ,Display Customization, emacs-mime, The +Emacs MIME Manual}). + +@item gnus-inhibit-mime-unbuttonizing +@vindex gnus-inhibit-mime-unbuttonizing +If this is non-@code{nil}, then all @acronym{MIME} parts get buttons. The +default value is @code{nil}. + +@item gnus-article-mime-part-function +@vindex gnus-article-mime-part-function +For each @acronym{MIME} part, this function will be called with the @acronym{MIME} +handle as the parameter. The function is meant to be used to allow +users to gather information from the article (e. g., add Vcard info to +the bbdb database) or to do actions based on parts (e. g., automatically +save all jpegs into some directory). + +Here's an example function the does the latter: + +@lisp +(defun my-save-all-jpeg-parts (handle) + (when (equal (car (mm-handle-type handle)) "image/jpeg") + (with-temp-buffer + (insert (mm-get-part handle)) + (write-region (point-min) (point-max) + (read-file-name "Save jpeg to: "))))) +(setq gnus-article-mime-part-function + 'my-save-all-jpeg-parts) +@end lisp + +@vindex gnus-mime-multipart-functions +@item gnus-mime-multipart-functions +Alist of @acronym{MIME} multipart types and functions to handle them. + +@vindex gnus-mime-display-multipart-alternative-as-mixed +@item gnus-mime-display-multipart-alternative-as-mixed +Display "multipart/alternative" parts as "multipart/mixed". + +@vindex gnus-mime-display-multipart-related-as-mixed +@item gnus-mime-display-multipart-related-as-mixed +Display "multipart/related" parts as "multipart/mixed". + +If displaying "text/html" is discouraged, see +@code{mm-discouraged-alternatives}, images or other material inside a +"multipart/related" part might be overlooked when this variable is +@code{nil}. @ref{Display Customization, Display Customization, , +emacs-mime, Emacs-Mime Manual}. + +@vindex gnus-mime-display-multipart-as-mixed +@item gnus-mime-display-multipart-as-mixed +Display "multipart" parts as "multipart/mixed". If @code{t}, it +overrides @code{nil} values of +@code{gnus-mime-display-multipart-alternative-as-mixed} and +@code{gnus-mime-display-multipart-related-as-mixed}. + +@vindex mm-file-name-rewrite-functions +@item mm-file-name-rewrite-functions +List of functions used for rewriting file names of @acronym{MIME} parts. +Each function takes a file name as input and returns a file name. + +Ready-made functions include@* +@code{mm-file-name-delete-whitespace}, +@code{mm-file-name-trim-whitespace}, +@code{mm-file-name-collapse-whitespace}, and +@code{mm-file-name-replace-whitespace}. The later uses the value of +the variable @code{mm-file-name-replace-whitespace} to replace each +whitespace character in a file name with that string; default value +is @code{"_"} (a single underscore). +@findex mm-file-name-delete-whitespace +@findex mm-file-name-trim-whitespace +@findex mm-file-name-collapse-whitespace +@findex mm-file-name-replace-whitespace +@vindex mm-file-name-replace-whitespace + +The standard functions @code{capitalize}, @code{downcase}, +@code{upcase}, and @code{upcase-initials} may be useful, too. + +Everybody knows that whitespace characters in file names are evil, +except those who don't know. If you receive lots of attachments from +such unenlightened users, you can make live easier by adding + +@lisp +(setq mm-file-name-rewrite-functions + '(mm-file-name-trim-whitespace + mm-file-name-collapse-whitespace + mm-file-name-replace-whitespace)) +@end lisp + +@noindent +to your @file{~/.gnus.el} file. + +@end table + + +@node Charsets +@section Charsets +@cindex charsets + +People use different charsets, and we have @acronym{MIME} to let us know what +charsets they use. Or rather, we wish we had. Many people use +newsreaders and mailers that do not understand or use @acronym{MIME}, and +just send out messages without saying what character sets they use. To +help a bit with this, some local news hierarchies have policies that say +what character set is the default. For instance, the @samp{fj} +hierarchy uses @code{iso-2022-jp}. + +@vindex gnus-group-charset-alist +This knowledge is encoded in the @code{gnus-group-charset-alist} +variable, which is an alist of regexps (use the first item to match full +group names) and default charsets to be used when reading these groups. + +@vindex gnus-newsgroup-ignored-charsets +In addition, some people do use soi-disant @acronym{MIME}-aware agents that +aren't. These blithely mark messages as being in @code{iso-8859-1} +even if they really are in @code{koi-8}. To help here, the +@code{gnus-newsgroup-ignored-charsets} variable can be used. The +charsets that are listed here will be ignored. The variable can be +set on a group-by-group basis using the group parameters (@pxref{Group +Parameters}). The default value is @code{(unknown-8bit x-unknown)}, +which includes values some agents insist on having in there. + +@vindex gnus-group-posting-charset-alist +When posting, @code{gnus-group-posting-charset-alist} is used to +determine which charsets should not be encoded using the @acronym{MIME} +encodings. For instance, some hierarchies discourage using +quoted-printable header encoding. + +This variable is an alist of regexps and permitted unencoded charsets +for posting. Each element of the alist has the form @code{(}@var{test +header body-list}@code{)}, where: + +@table @var +@item test +is either a regular expression matching the newsgroup header or a +variable to query, +@item header +is the charset which may be left unencoded in the header (@code{nil} +means encode all charsets), +@item body-list +is a list of charsets which may be encoded using 8bit content-transfer +encoding in the body, or one of the special values @code{nil} (always +encode using quoted-printable) or @code{t} (always use 8bit). +@end table + +@cindex Russian +@cindex koi8-r +@cindex koi8-u +@cindex iso-8859-5 +@cindex coding system aliases +@cindex preferred charset + +@xref{Encoding Customization, , Encoding Customization, emacs-mime, +The Emacs MIME Manual}, for additional variables that control which +MIME charsets are used when sending messages. + +Other charset tricks that may be useful, although not Gnus-specific: + +If there are several @acronym{MIME} charsets that encode the same Emacs +charset, you can choose what charset to use by saying the following: + +@lisp +(put-charset-property 'cyrillic-iso8859-5 + 'preferred-coding-system 'koi8-r) +@end lisp + +This means that Russian will be encoded using @code{koi8-r} instead of +the default @code{iso-8859-5} @acronym{MIME} charset. + +If you want to read messages in @code{koi8-u}, you can cheat and say + +@lisp +(define-coding-system-alias 'koi8-u 'koi8-r) +@end lisp + +This will almost do the right thing. + +And finally, to read charsets like @code{windows-1251}, you can say +something like + +@lisp +(codepage-setup 1251) +(define-coding-system-alias 'windows-1251 'cp1251) +@end lisp + + +@node Article Commands +@section Article Commands + +@table @kbd + +@item A P +@cindex PostScript +@cindex printing +@kindex A P (Summary) +@vindex gnus-ps-print-hook +@findex gnus-summary-print-article +Generate and print a PostScript image of the article buffer +(@code{gnus-summary-print-article}). @code{gnus-ps-print-hook} will +be run just before printing the buffer. An alternative way to print +article is to use Muttprint (@pxref{Saving Articles}). + +@end table + + +@node Summary Sorting +@section Summary Sorting +@cindex summary sorting + +You can have the summary buffer sorted in various ways, even though I +can't really see why you'd want that. + +@table @kbd + +@item C-c C-s C-n +@kindex C-c C-s C-n (Summary) +@findex gnus-summary-sort-by-number +Sort by article number (@code{gnus-summary-sort-by-number}). + +@item C-c C-s C-a +@kindex C-c C-s C-a (Summary) +@findex gnus-summary-sort-by-author +Sort by author (@code{gnus-summary-sort-by-author}). + +@item C-c C-s C-s +@kindex C-c C-s C-s (Summary) +@findex gnus-summary-sort-by-subject +Sort by subject (@code{gnus-summary-sort-by-subject}). + +@item C-c C-s C-d +@kindex C-c C-s C-d (Summary) +@findex gnus-summary-sort-by-date +Sort by date (@code{gnus-summary-sort-by-date}). + +@item C-c C-s C-l +@kindex C-c C-s C-l (Summary) +@findex gnus-summary-sort-by-lines +Sort by lines (@code{gnus-summary-sort-by-lines}). + +@item C-c C-s C-c +@kindex C-c C-s C-c (Summary) +@findex gnus-summary-sort-by-chars +Sort by article length (@code{gnus-summary-sort-by-chars}). + +@item C-c C-s C-i +@kindex C-c C-s C-i (Summary) +@findex gnus-summary-sort-by-score +Sort by score (@code{gnus-summary-sort-by-score}). + +@item C-c C-s C-r +@kindex C-c C-s C-r (Summary) +@findex gnus-summary-sort-by-random +Randomize (@code{gnus-summary-sort-by-random}). + +@item C-c C-s C-o +@kindex C-c C-s C-o (Summary) +@findex gnus-summary-sort-by-original +Sort using the default sorting method +(@code{gnus-summary-sort-by-original}). +@end table + +These functions will work both when you use threading and when you don't +use threading. In the latter case, all summary lines will be sorted, +line by line. In the former case, sorting will be done on a +root-by-root basis, which might not be what you were looking for. To +toggle whether to use threading, type @kbd{T T} (@pxref{Thread +Commands}). + + +@node Finding the Parent +@section Finding the Parent +@cindex parent articles +@cindex referring articles + +@table @kbd +@item ^ +@kindex ^ (Summary) +@findex gnus-summary-refer-parent-article +If you'd like to read the parent of the current article, and it is not +displayed in the summary buffer, you might still be able to. That is, +if the current group is fetched by @acronym{NNTP}, the parent hasn't expired +and the @code{References} in the current article are not mangled, you +can just press @kbd{^} or @kbd{A r} +(@code{gnus-summary-refer-parent-article}). If everything goes well, +you'll get the parent. If the parent is already displayed in the +summary buffer, point will just move to this article. + +If given a positive numerical prefix, fetch that many articles back into +the ancestry. If given a negative numerical prefix, fetch just that +ancestor. So if you say @kbd{3 ^}, Gnus will fetch the parent, the +grandparent and the grandgrandparent of the current article. If you say +@kbd{-3 ^}, Gnus will only fetch the grandgrandparent of the current +article. + +@item A R (Summary) +@findex gnus-summary-refer-references +@kindex A R (Summary) +Fetch all articles mentioned in the @code{References} header of the +article (@code{gnus-summary-refer-references}). + +@item A T (Summary) +@findex gnus-summary-refer-thread +@kindex A T (Summary) +Display the full thread where the current article appears +(@code{gnus-summary-refer-thread}). This command has to fetch all the +headers in the current group to work, so it usually takes a while. If +you do it often, you may consider setting @code{gnus-fetch-old-headers} +to @code{invisible} (@pxref{Filling In Threads}). This won't have any +visible effects normally, but it'll make this command work a whole lot +faster. Of course, it'll make group entry somewhat slow. + +@vindex gnus-refer-thread-limit +The @code{gnus-refer-thread-limit} variable says how many old (i. e., +articles before the first displayed in the current group) headers to +fetch when doing this command. The default is 200. If @code{t}, all +the available headers will be fetched. This variable can be overridden +by giving the @kbd{A T} command a numerical prefix. + +@item M-^ (Summary) +@findex gnus-summary-refer-article +@kindex M-^ (Summary) +@cindex Message-ID +@cindex fetching by Message-ID +You can also ask Gnus for an arbitrary article, no matter what group it +belongs to. @kbd{M-^} (@code{gnus-summary-refer-article}) will ask you +for a @code{Message-ID}, which is one of those long, hard-to-read +thingies that look something like @samp{<38o6up$6f2@@hymir.ifi.uio.no>}. +You have to get it all exactly right. No fuzzy searches, I'm afraid. + +Gnus looks for the @code{Message-ID} in the headers that have already +been fetched, but also tries all the select methods specified by +@code{gnus-refer-article-method} if it is not found. +@end table + +@vindex gnus-refer-article-method +If the group you are reading is located on a back end that does not +support fetching by @code{Message-ID} very well (like @code{nnspool}), +you can set @code{gnus-refer-article-method} to an @acronym{NNTP} method. It +would, perhaps, be best if the @acronym{NNTP} server you consult is the one +updating the spool you are reading from, but that's not really +necessary. + +It can also be a list of select methods, as well as the special symbol +@code{current}, which means to use the current select method. If it +is a list, Gnus will try all the methods in the list until it finds a +match. + +Here's an example setting that will first try the current method, and +then ask Google if that fails: + +@lisp +(setq gnus-refer-article-method + '(current + (nnweb "google" (nnweb-type google)))) +@end lisp + +Most of the mail back ends support fetching by @code{Message-ID}, but +do not do a particularly excellent job at it. That is, @code{nnmbox}, +@code{nnbabyl}, @code{nnmaildir}, @code{nnml}, are able to locate +articles from any groups, while @code{nnfolder}, and @code{nnimap} are +only able to locate articles that have been posted to the current +group. (Anything else would be too time consuming.) @code{nnmh} does +not support this at all. + + +@node Alternative Approaches +@section Alternative Approaches + +Different people like to read news using different methods. This being +Gnus, we offer a small selection of minor modes for the summary buffers. + +@menu +* Pick and Read:: First mark articles and then read them. +* Binary Groups:: Auto-decode all articles. +@end menu + + +@node Pick and Read +@subsection Pick and Read +@cindex pick and read + +Some newsreaders (like @code{nn} and, uhm, @code{Netnews} on VM/CMS) use +a two-phased reading interface. The user first marks in a summary +buffer the articles she wants to read. Then she starts reading the +articles with just an article buffer displayed. + +@findex gnus-pick-mode +@kindex M-x gnus-pick-mode +Gnus provides a summary buffer minor mode that allows +this---@code{gnus-pick-mode}. This basically means that a few process +mark commands become one-keystroke commands to allow easy marking, and +it provides one additional command for switching to the summary buffer. + +Here are the available keystrokes when using pick mode: + +@table @kbd +@item . +@kindex . (Pick) +@findex gnus-pick-article-or-thread +Pick the article or thread on the current line +(@code{gnus-pick-article-or-thread}). If the variable +@code{gnus-thread-hide-subtree} is true, then this key selects the +entire thread when used at the first article of the thread. Otherwise, +it selects just the article. If given a numerical prefix, go to that +thread or article and pick it. (The line number is normally displayed +at the beginning of the summary pick lines.) + +@item SPACE +@kindex SPACE (Pick) +@findex gnus-pick-next-page +Scroll the summary buffer up one page (@code{gnus-pick-next-page}). If +at the end of the buffer, start reading the picked articles. + +@item u +@kindex u (Pick) +@findex gnus-pick-unmark-article-or-thread. +Unpick the thread or article +(@code{gnus-pick-unmark-article-or-thread}). If the variable +@code{gnus-thread-hide-subtree} is true, then this key unpicks the +thread if used at the first article of the thread. Otherwise it unpicks +just the article. You can give this key a numerical prefix to unpick +the thread or article at that line. + +@item RET +@kindex RET (Pick) +@findex gnus-pick-start-reading +@vindex gnus-pick-display-summary +Start reading the picked articles (@code{gnus-pick-start-reading}). If +given a prefix, mark all unpicked articles as read first. If +@code{gnus-pick-display-summary} is non-@code{nil}, the summary buffer +will still be visible when you are reading. + +@end table + +All the normal summary mode commands are still available in the +pick-mode, with the exception of @kbd{u}. However @kbd{!} is available +which is mapped to the same function +@code{gnus-summary-tick-article-forward}. + +If this sounds like a good idea to you, you could say: + +@lisp +(add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) +@end lisp + +@vindex gnus-pick-mode-hook +@code{gnus-pick-mode-hook} is run in pick minor mode buffers. + +@vindex gnus-mark-unpicked-articles-as-read +If @code{gnus-mark-unpicked-articles-as-read} is non-@code{nil}, mark +all unpicked articles as read. The default is @code{nil}. + +@vindex gnus-summary-pick-line-format +The summary line format in pick mode is slightly different from the +standard format. At the beginning of each line the line number is +displayed. The pick mode line format is controlled by the +@code{gnus-summary-pick-line-format} variable (@pxref{Formatting +Variables}). It accepts the same format specs that +@code{gnus-summary-line-format} does (@pxref{Summary Buffer Lines}). + + +@node Binary Groups +@subsection Binary Groups +@cindex binary groups + +@findex gnus-binary-mode +@kindex M-x gnus-binary-mode +If you spend much time in binary groups, you may grow tired of hitting +@kbd{X u}, @kbd{n}, @kbd{RET} all the time. @kbd{M-x gnus-binary-mode} +is a minor mode for summary buffers that makes all ordinary Gnus article +selection functions uudecode series of articles and display the result +instead of just displaying the articles the normal way. + +@kindex g (Binary) +@findex gnus-binary-show-article +The only way, in fact, to see the actual articles is the @kbd{g} +command, when you have turned on this mode +(@code{gnus-binary-show-article}). + +@vindex gnus-binary-mode-hook +@code{gnus-binary-mode-hook} is called in binary minor mode buffers. + + +@node Tree Display +@section Tree Display +@cindex trees + +@vindex gnus-use-trees +If you don't like the normal Gnus summary display, you might try setting +@code{gnus-use-trees} to @code{t}. This will create (by default) an +additional @dfn{tree buffer}. You can execute all summary mode commands +in the tree buffer. + +There are a few variables to customize the tree display, of course: + +@table @code +@item gnus-tree-mode-hook +@vindex gnus-tree-mode-hook +A hook called in all tree mode buffers. + +@item gnus-tree-mode-line-format +@vindex gnus-tree-mode-line-format +A format string for the mode bar in the tree mode buffers (@pxref{Mode +Line Formatting}). The default is @samp{Gnus: %%b %S %Z}. For a list +of valid specs, @pxref{Summary Buffer Mode Line}. + +@item gnus-selected-tree-face +@vindex gnus-selected-tree-face +Face used for highlighting the selected article in the tree buffer. The +default is @code{modeline}. + +@item gnus-tree-line-format +@vindex gnus-tree-line-format +A format string for the tree nodes. The name is a bit of a misnomer, +though---it doesn't define a line, but just the node. The default value +is @samp{%(%[%3,3n%]%)}, which displays the first three characters of +the name of the poster. It is vital that all nodes are of the same +length, so you @emph{must} use @samp{%4,4n}-like specifiers. + +Valid specs are: + +@table @samp +@item n +The name of the poster. +@item f +The @code{From} header. +@item N +The number of the article. +@item [ +The opening bracket. +@item ] +The closing bracket. +@item s +The subject. +@end table + +@xref{Formatting Variables}. + +Variables related to the display are: + +@table @code +@item gnus-tree-brackets +@vindex gnus-tree-brackets +This is used for differentiating between ``real'' articles and +``sparse'' articles. The format is +@example +((@var{real-open} . @var{real-close}) + (@var{sparse-open} . @var{sparse-close}) + (@var{dummy-open} . @var{dummy-close})) +@end example +and the default is @code{((?[ . ?]) (?( . ?)) (?@{ . ?@}) (?< . ?>))}. + +@item gnus-tree-parent-child-edges +@vindex gnus-tree-parent-child-edges +This is a list that contains the characters used for connecting parent +nodes to their children. The default is @code{(?- ?\\ ?|)}. + +@end table + +@item gnus-tree-minimize-window +@vindex gnus-tree-minimize-window +If this variable is non-@code{nil}, Gnus will try to keep the tree +buffer as small as possible to allow more room for the other Gnus +windows. If this variable is a number, the tree buffer will never be +higher than that number. The default is @code{t}. Note that if you +have several windows displayed side-by-side in a frame and the tree +buffer is one of these, minimizing the tree window will also resize all +other windows displayed next to it. + +You may also wish to add the following hook to keep the window minimized +at all times: + +@lisp +(add-hook 'gnus-configure-windows-hook + 'gnus-tree-perhaps-minimize) +@end lisp + +@item gnus-generate-tree-function +@vindex gnus-generate-tree-function +@findex gnus-generate-horizontal-tree +@findex gnus-generate-vertical-tree +The function that actually generates the thread tree. Two predefined +functions are available: @code{gnus-generate-horizontal-tree} and +@code{gnus-generate-vertical-tree} (which is the default). + +@end table + +Here's an example from a horizontal tree buffer: + +@example +@{***@}-(***)-[odd]-[Gun] + | \[Jan] + | \[odd]-[Eri] + | \(***)-[Eri] + | \[odd]-[Paa] + \[Bjo] + \[Gun] + \[Gun]-[Jor] +@end example + +Here's the same thread displayed in a vertical tree buffer: + +@example +@group +@{***@} + |--------------------------\-----\-----\ +(***) [Bjo] [Gun] [Gun] + |--\-----\-----\ | +[odd] [Jan] [odd] (***) [Jor] + | | |--\ +[Gun] [Eri] [Eri] [odd] + | + [Paa] +@end group +@end example + +If you're using horizontal trees, it might be nice to display the trees +side-by-side with the summary buffer. You could add something like the +following to your @file{~/.gnus.el} file: + +@lisp +(setq gnus-use-trees t + gnus-generate-tree-function 'gnus-generate-horizontal-tree + gnus-tree-minimize-window nil) +(gnus-add-configuration + '(article + (vertical 1.0 + (horizontal 0.25 + (summary 0.75 point) + (tree 1.0)) + (article 1.0)))) +@end lisp + +@xref{Window Layout}. + + +@node Mail Group Commands +@section Mail Group Commands +@cindex mail group commands + +Some commands only make sense in mail groups. If these commands are +invalid in the current group, they will raise a hell and let you know. + +All these commands (except the expiry and edit commands) use the +process/prefix convention (@pxref{Process/Prefix}). + +@table @kbd + +@item B e +@kindex B e (Summary) +@findex gnus-summary-expire-articles +@cindex expiring mail +Run all expirable articles in the current group through the expiry +process (@code{gnus-summary-expire-articles}). That is, delete all +expirable articles in the group that have been around for a while. +(@pxref{Expiring Mail}). + +@item B C-M-e +@kindex B C-M-e (Summary) +@findex gnus-summary-expire-articles-now +@cindex expiring mail +Delete all the expirable articles in the group +(@code{gnus-summary-expire-articles-now}). This means that @strong{all} +articles eligible for expiry in the current group will +disappear forever into that big @file{/dev/null} in the sky. + +@item B DEL +@kindex B DEL (Summary) +@findex gnus-summary-delete-article +@c @icon{gnus-summary-mail-delete} +Delete the mail article. This is ``delete'' as in ``delete it from your +disk forever and ever, never to return again.'' Use with caution. +(@code{gnus-summary-delete-article}). + +@item B m +@kindex B m (Summary) +@cindex move mail +@findex gnus-summary-move-article +@vindex gnus-preserve-marks +Move the article from one mail group to another +(@code{gnus-summary-move-article}). Marks will be preserved if +@code{gnus-preserve-marks} is non-@code{nil} (which is the default). + +@item B c +@kindex B c (Summary) +@cindex copy mail +@findex gnus-summary-copy-article +@c @icon{gnus-summary-mail-copy} +Copy the article from one group (mail group or not) to a mail group +(@code{gnus-summary-copy-article}). Marks will be preserved if +@code{gnus-preserve-marks} is non-@code{nil} (which is the default). + +@item B B +@kindex B B (Summary) +@cindex crosspost mail +@findex gnus-summary-crosspost-article +Crosspost the current article to some other group +(@code{gnus-summary-crosspost-article}). This will create a new copy of +the article in the other group, and the Xref headers of the article will +be properly updated. + +@item B i +@kindex B i (Summary) +@findex gnus-summary-import-article +Import an arbitrary file into the current mail newsgroup +(@code{gnus-summary-import-article}). You will be prompted for a file +name, a @code{From} header and a @code{Subject} header. + +@item B I +@kindex B I (Summary) +@findex gnus-summary-create-article +Create an empty article in the current mail newsgroups +(@code{gnus-summary-create-article}). You will be prompted for a +@code{From} header and a @code{Subject} header. + +@item B r +@kindex B r (Summary) +@findex gnus-summary-respool-article +@vindex gnus-summary-respool-default-method +Respool the mail article (@code{gnus-summary-respool-article}). +@code{gnus-summary-respool-default-method} will be used as the default +select method when respooling. This variable is @code{nil} by default, +which means that the current group select method will be used instead. +Marks will be preserved if @code{gnus-preserve-marks} is non-@code{nil} +(which is the default). + +@item B w +@itemx e +@kindex B w (Summary) +@kindex e (Summary) +@findex gnus-summary-edit-article +@kindex C-c C-c (Article) +@findex gnus-summary-edit-article-done +Edit the current article (@code{gnus-summary-edit-article}). To finish +editing and make the changes permanent, type @kbd{C-c C-c} +(@code{gnus-summary-edit-article-done}). If you give a prefix to the +@kbd{C-c C-c} command, Gnus won't re-highlight the article. + +@item B q +@kindex B q (Summary) +@findex gnus-summary-respool-query +If you want to re-spool an article, you might be curious as to what group +the article will end up in before you do the re-spooling. This command +will tell you (@code{gnus-summary-respool-query}). + +@item B t +@kindex B t (Summary) +@findex gnus-summary-respool-trace +Similarly, this command will display all fancy splitting patterns used +when respooling, if any (@code{gnus-summary-respool-trace}). + +@item B p +@kindex B p (Summary) +@findex gnus-summary-article-posted-p +Some people have a tendency to send you ``courtesy'' copies when they +follow up to articles you have posted. These usually have a +@code{Newsgroups} header in them, but not always. This command +(@code{gnus-summary-article-posted-p}) will try to fetch the current +article from your news server (or rather, from +@code{gnus-refer-article-method} or @code{gnus-select-method}) and will +report back whether it found the article or not. Even if it says that +it didn't find the article, it may have been posted anyway---mail +propagation is much faster than news propagation, and the news copy may +just not have arrived yet. + +@item K E +@kindex K E (Summary) +@findex gnus-article-encrypt-body +@vindex gnus-article-encrypt-protocol +Encrypt the body of an article (@code{gnus-article-encrypt-body}). +The body is encrypted with the encryption protocol specified by the +variable @code{gnus-article-encrypt-protocol}. + +@end table + +@vindex gnus-move-split-methods +@cindex moving articles +If you move (or copy) articles regularly, you might wish to have Gnus +suggest where to put the articles. @code{gnus-move-split-methods} is a +variable that uses the same syntax as @code{gnus-split-methods} +(@pxref{Saving Articles}). You may customize that variable to create +suggestions you find reasonable. (Note that +@code{gnus-move-split-methods} uses group names where +@code{gnus-split-methods} uses file names.) + +@lisp +(setq gnus-move-split-methods + '(("^From:.*Lars Magne" "nnml:junk") + ("^Subject:.*gnus" "nnfolder:important") + (".*" "nnml:misc"))) +@end lisp + + +@node Various Summary Stuff +@section Various Summary Stuff + +@menu +* Summary Group Information:: Information oriented commands. +* Searching for Articles:: Multiple article commands. +* Summary Generation Commands:: +* Really Various Summary Commands:: Those pesky non-conformant commands. +@end menu + +@table @code +@vindex gnus-summary-display-while-building +@item gnus-summary-display-while-building +If non-@code{nil}, show and update the summary buffer as it's being +built. If @code{t}, update the buffer after every line is inserted. +If the value is an integer, @var{n}, update the display every @var{n} +lines. The default is @code{nil}. + +@vindex gnus-summary-display-arrow +@item gnus-summary-display-arrow +If non-@code{nil}, display an arrow in the fringe to indicate the +current article. + +@vindex gnus-summary-mode-hook +@item gnus-summary-mode-hook +This hook is called when creating a summary mode buffer. + +@vindex gnus-summary-generate-hook +@item gnus-summary-generate-hook +This is called as the last thing before doing the threading and the +generation of the summary buffer. It's quite convenient for customizing +the threading variables based on what data the newsgroup has. This hook +is called from the summary buffer after most summary buffer variables +have been set. + +@vindex gnus-summary-prepare-hook +@item gnus-summary-prepare-hook +It is called after the summary buffer has been generated. You might use +it to, for instance, highlight lines or modify the look of the buffer in +some other ungodly manner. I don't care. + +@vindex gnus-summary-prepared-hook +@item gnus-summary-prepared-hook +A hook called as the very last thing after the summary buffer has been +generated. + +@vindex gnus-summary-ignore-duplicates +@item gnus-summary-ignore-duplicates +When Gnus discovers two articles that have the same @code{Message-ID}, +it has to do something drastic. No articles are allowed to have the +same @code{Message-ID}, but this may happen when reading mail from some +sources. Gnus allows you to customize what happens with this variable. +If it is @code{nil} (which is the default), Gnus will rename the +@code{Message-ID} (for display purposes only) and display the article as +any other article. If this variable is @code{t}, it won't display the +article---it'll be as if it never existed. + +@vindex gnus-alter-articles-to-read-function +@item gnus-alter-articles-to-read-function +This function, which takes two parameters (the group name and the list +of articles to be selected), is called to allow the user to alter the +list of articles to be selected. + +For instance, the following function adds the list of cached articles to +the list in one particular group: + +@lisp +(defun my-add-cached-articles (group articles) + (if (string= group "some.group") + (append gnus-newsgroup-cached articles) + articles)) +@end lisp + +@vindex gnus-newsgroup-variables +@item gnus-newsgroup-variables +A list of newsgroup (summary buffer) local variables, or cons of +variables and their default expressions to be evalled (when the default +values are not @code{nil}), that should be made global while the summary +buffer is active. + +Note: The default expressions will be evaluated (using function +@code{eval}) before assignment to the local variable rather than just +assigned to it. If the default expression is the symbol @code{global}, +that symbol will not be evaluated but the global value of the local +variable will be used instead. + +These variables can be used to set variables in the group parameters +while still allowing them to affect operations done in other +buffers. For example: + +@lisp +(setq gnus-newsgroup-variables + '(message-use-followup-to + (gnus-visible-headers . + "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^To:"))) +@end lisp + +Also @pxref{Group Parameters}. +@end table + + +@node Summary Group Information +@subsection Summary Group Information + +@table @kbd + +@item H f +@kindex H f (Summary) +@findex gnus-summary-fetch-faq +@vindex gnus-group-faq-directory +Try to fetch the @acronym{FAQ} (list of frequently asked questions) +for the current group (@code{gnus-summary-fetch-faq}). Gnus will try +to get the @acronym{FAQ} from @code{gnus-group-faq-directory}, which +is usually a directory on a remote machine. This variable can also be +a list of directories. In that case, giving a prefix to this command +will allow you to choose between the various sites. @code{ange-ftp} +or @code{efs} will probably be used for fetching the file. + +@item H d +@kindex H d (Summary) +@findex gnus-summary-describe-group +Give a brief description of the current group +(@code{gnus-summary-describe-group}). If given a prefix, force +rereading the description from the server. + +@item H h +@kindex H h (Summary) +@findex gnus-summary-describe-briefly +Give an extremely brief description of the most important summary +keystrokes (@code{gnus-summary-describe-briefly}). + +@item H i +@kindex H i (Summary) +@findex gnus-info-find-node +Go to the Gnus info node (@code{gnus-info-find-node}). +@end table + + +@node Searching for Articles +@subsection Searching for Articles + +@table @kbd + +@item M-s +@kindex M-s (Summary) +@findex gnus-summary-search-article-forward +Search through all subsequent (raw) articles for a regexp +(@code{gnus-summary-search-article-forward}). + +@item M-r +@kindex M-r (Summary) +@findex gnus-summary-search-article-backward +Search through all previous (raw) articles for a regexp +(@code{gnus-summary-search-article-backward}). + +@item & +@kindex & (Summary) +@findex gnus-summary-execute-command +This command will prompt you for a header, a regular expression to match +on this field, and a command to be executed if the match is made +(@code{gnus-summary-execute-command}). If the header is an empty +string, the match is done on the entire article. If given a prefix, +search backward instead. + +For instance, @kbd{& RET some.*string RET #} will put the process mark on +all articles that have heads or bodies that match @samp{some.*string}. + +@item M-& +@kindex M-& (Summary) +@findex gnus-summary-universal-argument +Perform any operation on all articles that have been marked with +the process mark (@code{gnus-summary-universal-argument}). +@end table + +@node Summary Generation Commands +@subsection Summary Generation Commands + +@table @kbd + +@item Y g +@kindex Y g (Summary) +@findex gnus-summary-prepare +Regenerate the current summary buffer (@code{gnus-summary-prepare}). + +@item Y c +@kindex Y c (Summary) +@findex gnus-summary-insert-cached-articles +Pull all cached articles (for the current group) into the summary buffer +(@code{gnus-summary-insert-cached-articles}). + +@item Y d +@kindex Y d (Summary) +@findex gnus-summary-insert-dormant-articles +Pull all dormant articles (for the current group) into the summary buffer +(@code{gnus-summary-insert-dormant-articles}). + +@end table + + +@node Really Various Summary Commands +@subsection Really Various Summary Commands + +@table @kbd + +@item A D +@itemx C-d +@kindex C-d (Summary) +@kindex A D (Summary) +@findex gnus-summary-enter-digest-group +If the current article is a collection of other articles (for instance, +a digest), you might use this command to enter a group based on the that +article (@code{gnus-summary-enter-digest-group}). Gnus will try to +guess what article type is currently displayed unless you give a prefix +to this command, which forces a ``digest'' interpretation. Basically, +whenever you see a message that is a collection of other messages of +some format, you @kbd{C-d} and read these messages in a more convenient +fashion. + +@item C-M-d +@kindex C-M-d (Summary) +@findex gnus-summary-read-document +This command is very similar to the one above, but lets you gather +several documents into one biiig group +(@code{gnus-summary-read-document}). It does this by opening several +@code{nndoc} groups for each document, and then opening an +@code{nnvirtual} group on top of these @code{nndoc} groups. This +command understands the process/prefix convention +(@pxref{Process/Prefix}). + +@item C-t +@kindex C-t (Summary) +@findex gnus-summary-toggle-truncation +Toggle truncation of summary lines +(@code{gnus-summary-toggle-truncation}). This will probably confuse the +line centering function in the summary buffer, so it's not a good idea +to have truncation switched off while reading articles. + +@item = +@kindex = (Summary) +@findex gnus-summary-expand-window +Expand the summary buffer window (@code{gnus-summary-expand-window}). +If given a prefix, force an @code{article} window configuration. + +@item C-M-e +@kindex C-M-e (Summary) +@findex gnus-summary-edit-parameters +Edit the group parameters (@pxref{Group Parameters}) of the current +group (@code{gnus-summary-edit-parameters}). + +@item C-M-a +@kindex C-M-a (Summary) +@findex gnus-summary-customize-parameters +Customize the group parameters (@pxref{Group Parameters}) of the current +group (@code{gnus-summary-customize-parameters}). + +@end table + + +@node Exiting the Summary Buffer +@section Exiting the Summary Buffer +@cindex summary exit +@cindex exiting groups + +Exiting from the summary buffer will normally update all info on the +group and return you to the group buffer. + +@table @kbd + +@item Z Z +@itemx Z Q +@itemx q +@kindex Z Z (Summary) +@kindex Z Q (Summary) +@kindex q (Summary) +@findex gnus-summary-exit +@vindex gnus-summary-exit-hook +@vindex gnus-summary-prepare-exit-hook +@vindex gnus-group-no-more-groups-hook +@c @icon{gnus-summary-exit} +Exit the current group and update all information on the group +(@code{gnus-summary-exit}). @code{gnus-summary-prepare-exit-hook} is +called before doing much of the exiting, which calls +@code{gnus-summary-expire-articles} by default. +@code{gnus-summary-exit-hook} is called after finishing the exit +process. @code{gnus-group-no-more-groups-hook} is run when returning to +group mode having no more (unread) groups. + +@item Z E +@itemx Q +@kindex Z E (Summary) +@kindex Q (Summary) +@findex gnus-summary-exit-no-update +Exit the current group without updating any information on the group +(@code{gnus-summary-exit-no-update}). + +@item Z c +@itemx c +@kindex Z c (Summary) +@kindex c (Summary) +@findex gnus-summary-catchup-and-exit +@c @icon{gnus-summary-catchup-and-exit} +Mark all unticked articles in the group as read and then exit +(@code{gnus-summary-catchup-and-exit}). + +@item Z C +@kindex Z C (Summary) +@findex gnus-summary-catchup-all-and-exit +Mark all articles, even the ticked ones, as read and then exit +(@code{gnus-summary-catchup-all-and-exit}). + +@item Z n +@kindex Z n (Summary) +@findex gnus-summary-catchup-and-goto-next-group +Mark all articles as read and go to the next group +(@code{gnus-summary-catchup-and-goto-next-group}). + +@item Z R +@itemx C-x C-s +@kindex Z R (Summary) +@kindex C-x C-s (Summary) +@findex gnus-summary-reselect-current-group +Exit this group, and then enter it again +(@code{gnus-summary-reselect-current-group}). If given a prefix, select +all articles, both read and unread. + +@item Z G +@itemx M-g +@kindex Z G (Summary) +@kindex M-g (Summary) +@findex gnus-summary-rescan-group +@c @icon{gnus-summary-mail-get} +Exit the group, check for new articles in the group, and select the +group (@code{gnus-summary-rescan-group}). If given a prefix, select all +articles, both read and unread. + +@item Z N +@kindex Z N (Summary) +@findex gnus-summary-next-group +Exit the group and go to the next group +(@code{gnus-summary-next-group}). + +@item Z P +@kindex Z P (Summary) +@findex gnus-summary-prev-group +Exit the group and go to the previous group +(@code{gnus-summary-prev-group}). + +@item Z s +@kindex Z s (Summary) +@findex gnus-summary-save-newsrc +Save the current number of read/marked articles in the dribble buffer +and then save the dribble buffer (@code{gnus-summary-save-newsrc}). If +given a prefix, also save the @file{.newsrc} file(s). Using this +command will make exit without updating (the @kbd{Q} command) worthless. +@end table + +@vindex gnus-exit-group-hook +@code{gnus-exit-group-hook} is called when you exit the current group +with an ``updating'' exit. For instance @kbd{Q} +(@code{gnus-summary-exit-no-update}) does not call this hook. + +@findex gnus-summary-wake-up-the-dead +@findex gnus-dead-summary-mode +@vindex gnus-kill-summary-on-exit +If you're in the habit of exiting groups, and then changing your mind +about it, you might set @code{gnus-kill-summary-on-exit} to @code{nil}. +If you do that, Gnus won't kill the summary buffer when you exit it. +(Quelle surprise!) Instead it will change the name of the buffer to +something like @samp{*Dead Summary ... *} and install a minor mode +called @code{gnus-dead-summary-mode}. Now, if you switch back to this +buffer, you'll find that all keys are mapped to a function called +@code{gnus-summary-wake-up-the-dead}. So tapping any keys in a dead +summary buffer will result in a live, normal summary buffer. + +There will never be more than one dead summary buffer at any one time. + +@vindex gnus-use-cross-reference +The data on the current group will be updated (which articles you have +read, which articles you have replied to, etc.) when you exit the +summary buffer. If the @code{gnus-use-cross-reference} variable is +@code{t} (which is the default), articles that are cross-referenced to +this group and are marked as read, will also be marked as read in the +other subscribed groups they were cross-posted to. If this variable is +neither @code{nil} nor @code{t}, the article will be marked as read in +both subscribed and unsubscribed groups (@pxref{Crosspost Handling}). + + +@node Crosspost Handling +@section Crosspost Handling + +@cindex velveeta +@cindex spamming +Marking cross-posted articles as read ensures that you'll never have to +read the same article more than once. Unless, of course, somebody has +posted it to several groups separately. Posting the same article to +several groups (not cross-posting) is called @dfn{spamming}, and you are +by law required to send nasty-grams to anyone who perpetrates such a +heinous crime. You may want to try NoCeM handling to filter out spam +(@pxref{NoCeM}). + +Remember: Cross-posting is kinda ok, but posting the same article +separately to several groups is not. Massive cross-posting (aka. +@dfn{velveeta}) is to be avoided at all costs, and you can even use the +@code{gnus-summary-mail-crosspost-complaint} command to complain about +excessive crossposting (@pxref{Summary Mail Commands}). + +@cindex cross-posting +@cindex Xref +@cindex @acronym{NOV} +One thing that may cause Gnus to not do the cross-posting thing +correctly is if you use an @acronym{NNTP} server that supports @sc{xover} +(which is very nice, because it speeds things up considerably) which +does not include the @code{Xref} header in its @acronym{NOV} lines. This is +Evil, but all too common, alas, alack. Gnus tries to Do The Right Thing +even with @sc{xover} by registering the @code{Xref} lines of all +articles you actually read, but if you kill the articles, or just mark +them as read without reading them, Gnus will not get a chance to snoop +the @code{Xref} lines out of these articles, and will be unable to use +the cross reference mechanism. + +@cindex LIST overview.fmt +@cindex overview.fmt +To check whether your @acronym{NNTP} server includes the @code{Xref} header +in its overview files, try @samp{telnet your.nntp.server nntp}, +@samp{MODE READER} on @code{inn} servers, and then say @samp{LIST +overview.fmt}. This may not work, but if it does, and the last line you +get does not read @samp{Xref:full}, then you should shout and whine at +your news admin until she includes the @code{Xref} header in the +overview files. + - @vindex gnus-nov-is-evil +If you want Gnus to get the @code{Xref}s right all the time, you have to - set @code{gnus-nov-is-evil} to @code{t}, which slows things down - considerably. ++set @code{nntp-nov-is-evil} to @code{t}, which slows things down ++considerably. Also @pxref{Slow/Expensive Connection}. + +C'est la vie. + +For an alternative approach, @pxref{Duplicate Suppression}. + + +@node Duplicate Suppression +@section Duplicate Suppression + +By default, Gnus tries to make sure that you don't have to read the same +article more than once by utilizing the crossposting mechanism +(@pxref{Crosspost Handling}). However, that simple and efficient +approach may not work satisfactory for some users for various +reasons. + +@enumerate +@item +The @acronym{NNTP} server may fail to generate the @code{Xref} header. This +is evil and not very common. + +@item +The @acronym{NNTP} server may fail to include the @code{Xref} header in the +@file{.overview} data bases. This is evil and all too common, alas. + +@item +You may be reading the same group (or several related groups) from +different @acronym{NNTP} servers. + +@item +You may be getting mail that duplicates articles posted to groups. +@end enumerate + +I'm sure there are other situations where @code{Xref} handling fails as +well, but these four are the most common situations. + +If, and only if, @code{Xref} handling fails for you, then you may +consider switching on @dfn{duplicate suppression}. If you do so, Gnus +will remember the @code{Message-ID}s of all articles you have read or +otherwise marked as read, and then, as if by magic, mark them as read +all subsequent times you see them---in @emph{all} groups. Using this +mechanism is quite likely to be somewhat inefficient, but not overly +so. It's certainly preferable to reading the same articles more than +once. + +Duplicate suppression is not a very subtle instrument. It's more like a +sledge hammer than anything else. It works in a very simple +fashion---if you have marked an article as read, it adds this Message-ID +to a cache. The next time it sees this Message-ID, it will mark the +article as read with the @samp{M} mark. It doesn't care what group it +saw the article in. + +@table @code +@item gnus-suppress-duplicates +@vindex gnus-suppress-duplicates +If non-@code{nil}, suppress duplicates. + +@item gnus-save-duplicate-list +@vindex gnus-save-duplicate-list +If non-@code{nil}, save the list of duplicates to a file. This will +make startup and shutdown take longer, so the default is @code{nil}. +However, this means that only duplicate articles read in a single Gnus +session are suppressed. + +@item gnus-duplicate-list-length +@vindex gnus-duplicate-list-length +This variable says how many @code{Message-ID}s to keep in the duplicate +suppression list. The default is 10000. + +@item gnus-duplicate-file +@vindex gnus-duplicate-file +The name of the file to store the duplicate suppression list in. The +default is @file{~/News/suppression}. +@end table + +If you have a tendency to stop and start Gnus often, setting +@code{gnus-save-duplicate-list} to @code{t} is probably a good idea. If +you leave Gnus running for weeks on end, you may have it @code{nil}. On +the other hand, saving the list makes startup and shutdown much slower, +so that means that if you stop and start Gnus often, you should set +@code{gnus-save-duplicate-list} to @code{nil}. Uhm. I'll leave this up +to you to figure out, I think. + +@node Security +@section Security + +Gnus is able to verify signed messages or decrypt encrypted messages. +The formats that are supported are @acronym{PGP}, @acronym{PGP/MIME} +and @acronym{S/MIME}, however you need some external programs to get +things to work: + +@enumerate +@item +To handle @acronym{PGP} and @acronym{PGP/MIME} messages, you have to +install an OpenPGP implementation such as GnuPG. The Lisp interface +to GnuPG included with Gnus is called PGG (@pxref{Top, ,PGG, pgg, PGG +Manual}), but Mailcrypt and gpg.el are also supported. + +@item +To handle @acronym{S/MIME} message, you need to install OpenSSL. OpenSSL 0.9.6 +or newer is recommended. + +@end enumerate + +The variables that control security functionality on reading messages +include: + +@table @code +@item mm-verify-option +@vindex mm-verify-option +Option of verifying signed parts. @code{never}, not verify; +@code{always}, always verify; @code{known}, only verify known +protocols. Otherwise, ask user. + +@item mm-decrypt-option +@vindex mm-decrypt-option +Option of decrypting encrypted parts. @code{never}, no decryption; +@code{always}, always decrypt; @code{known}, only decrypt known +protocols. Otherwise, ask user. + +@item mml1991-use +@vindex mml1991-use +Symbol indicating elisp interface to OpenPGP implementation for +@acronym{PGP} messages. The default is @code{pgg}, but +@code{mailcrypt} and @code{gpg} are also supported although +deprecated. + +@item mml2015-use +@vindex mml2015-use +Symbol indicating elisp interface to OpenPGP implementation for +@acronym{PGP/MIME} messages. The default is @code{pgg}, but +@code{mailcrypt} and @code{gpg} are also supported although +deprecated. + +@end table + +By default the buttons that display security information are not +shown, because they clutter reading the actual e-mail. You can type +@kbd{K b} manually to display the information. Use the +@code{gnus-buttonized-mime-types} and +@code{gnus-unbuttonized-mime-types} variables to control this +permanently. @ref{MIME Commands} for further details, and hints on +how to customize these variables to always display security +information. + +@cindex snarfing keys +@cindex importing PGP keys +@cindex PGP key ring import +Snarfing OpenPGP keys (i.e., importing keys from articles into your +key ring) is not supported explicitly through a menu item or command, +rather Gnus do detect and label keys as @samp{application/pgp-keys}, +allowing you to specify whatever action you think is appropriate +through the usual @acronym{MIME} infrastructure. You can use a +@file{~/.mailcap} entry (@pxref{mailcap, , mailcap, emacs-mime, The +Emacs MIME Manual}) such as the following to import keys using GNU +Privacy Guard when you click on the @acronym{MIME} button +(@pxref{Using MIME}). + +@example +application/pgp-keys; gpg --import --interactive --verbose; needsterminal +@end example +@noindent +This happens to also be the default action defined in +@code{mailcap-mime-data}. + +More information on how to set things for sending outgoing signed and +encrypted messages up can be found in the message manual +(@pxref{Security, ,Security, message, Message Manual}). + +@node Mailing List +@section Mailing List +@cindex mailing list +@cindex RFC 2396 + +@kindex A M (summary) +@findex gnus-mailing-list-insinuate +Gnus understands some mailing list fields of RFC 2369. To enable it, +add a @code{to-list} group parameter (@pxref{Group Parameters}), +possibly using @kbd{A M} (@code{gnus-mailing-list-insinuate}) in the +summary buffer. + +That enables the following commands to the summary buffer: + +@table @kbd + +@item C-c C-n h +@kindex C-c C-n h (Summary) +@findex gnus-mailing-list-help +Send a message to fetch mailing list help, if List-Help field exists. + +@item C-c C-n s +@kindex C-c C-n s (Summary) +@findex gnus-mailing-list-subscribe +Send a message to subscribe the mailing list, if List-Subscribe field exists. + +@item C-c C-n u +@kindex C-c C-n u (Summary) +@findex gnus-mailing-list-unsubscribe +Send a message to unsubscribe the mailing list, if List-Unsubscribe +field exists. + +@item C-c C-n p +@kindex C-c C-n p (Summary) +@findex gnus-mailing-list-post +Post to the mailing list, if List-Post field exists. + +@item C-c C-n o +@kindex C-c C-n o (Summary) +@findex gnus-mailing-list-owner +Send a message to the mailing list owner, if List-Owner field exists. + +@item C-c C-n a +@kindex C-c C-n a (Summary) +@findex gnus-mailing-list-owner +Browse the mailing list archive, if List-Archive field exists. + +@end table + + +@node Article Buffer +@chapter Article Buffer +@cindex article buffer + +The articles are displayed in the article buffer, of which there is only +one. All the summary buffers share the same article buffer unless you +tell Gnus otherwise. + +@menu +* Hiding Headers:: Deciding what headers should be displayed. +* Using MIME:: Pushing articles through @acronym{MIME} before reading them. +* Customizing Articles:: Tailoring the look of the articles. +* Article Keymap:: Keystrokes available in the article buffer. +* Misc Article:: Other stuff. +@end menu + + +@node Hiding Headers +@section Hiding Headers +@cindex hiding headers +@cindex deleting headers + +The top section of each article is the @dfn{head}. (The rest is the +@dfn{body}, but you may have guessed that already.) + +@vindex gnus-show-all-headers +There is a lot of useful information in the head: the name of the person +who wrote the article, the date it was written and the subject of the +article. That's well and nice, but there's also lots of information +most people do not want to see---what systems the article has passed +through before reaching you, the @code{Message-ID}, the +@code{References}, etc. ad nauseam---and you'll probably want to get rid +of some of those lines. If you want to keep all those lines in the +article buffer, you can set @code{gnus-show-all-headers} to @code{t}. + +Gnus provides you with two variables for sifting headers: + +@table @code + +@item gnus-visible-headers +@vindex gnus-visible-headers +If this variable is non-@code{nil}, it should be a regular expression +that says what headers you wish to keep in the article buffer. All +headers that do not match this variable will be hidden. + +For instance, if you only want to see the name of the person who wrote +the article and the subject, you'd say: + +@lisp +(setq gnus-visible-headers "^From:\\|^Subject:") +@end lisp + +This variable can also be a list of regexps to match headers to +remain visible. + +@item gnus-ignored-headers +@vindex gnus-ignored-headers +This variable is the reverse of @code{gnus-visible-headers}. If this +variable is set (and @code{gnus-visible-headers} is @code{nil}), it +should be a regular expression that matches all lines that you want to +hide. All lines that do not match this variable will remain visible. + +For instance, if you just want to get rid of the @code{References} line +and the @code{Xref} line, you might say: + +@lisp +(setq gnus-ignored-headers "^References:\\|^Xref:") +@end lisp + +This variable can also be a list of regexps to match headers to +be removed. + +Note that if @code{gnus-visible-headers} is non-@code{nil}, this +variable will have no effect. + +@end table + +@vindex gnus-sorted-header-list +Gnus can also sort the headers for you. (It does this by default.) You +can control the sorting by setting the @code{gnus-sorted-header-list} +variable. It is a list of regular expressions that says in what order +the headers are to be displayed. + +For instance, if you want the name of the author of the article first, +and then the subject, you might say something like: + +@lisp +(setq gnus-sorted-header-list '("^From:" "^Subject:")) +@end lisp + +Any headers that are to remain visible, but are not listed in this +variable, will be displayed in random order after all the headers listed in this variable. + +@findex gnus-article-hide-boring-headers +@vindex gnus-boring-article-headers +You can hide further boring headers by setting +@code{gnus-treat-hide-boring-headers} to @code{head}. What this function +does depends on the @code{gnus-boring-article-headers} variable. It's a +list, but this list doesn't actually contain header names. Instead it +lists various @dfn{boring conditions} that Gnus can check and remove +from sight. + +These conditions are: +@table @code +@item empty +Remove all empty headers. +@item followup-to +Remove the @code{Followup-To} header if it is identical to the +@code{Newsgroups} header. +@item reply-to +Remove the @code{Reply-To} header if it lists the same addresses as +the @code{From} header, or if the @code{broken-reply-to} group +parameter is set. +@item newsgroups +Remove the @code{Newsgroups} header if it only contains the current group +name. +@item to-address +Remove the @code{To} header if it only contains the address identical to +the current group's @code{to-address} parameter. +@item to-list +Remove the @code{To} header if it only contains the address identical to +the current group's @code{to-list} parameter. +@item cc-list +Remove the @code{Cc} header if it only contains the address identical to +the current group's @code{to-list} parameter. +@item date +Remove the @code{Date} header if the article is less than three days +old. +@item long-to +Remove the @code{To} and/or @code{Cc} header if it is very long. +@item many-to +Remove all @code{To} and/or @code{Cc} headers if there are more than one. +@end table + +To include these three elements, you could say something like: + +@lisp +(setq gnus-boring-article-headers + '(empty followup-to reply-to)) +@end lisp + +This is also the default value for this variable. + + +@node Using MIME +@section Using MIME +@cindex @acronym{MIME} + +Mime is a standard for waving your hands through the air, aimlessly, +while people stand around yawning. + +@acronym{MIME}, however, is a standard for encoding your articles, aimlessly, +while all newsreaders die of fear. + +@acronym{MIME} may specify what character set the article uses, the encoding +of the characters, and it also makes it possible to embed pictures and +other naughty stuff in innocent-looking articles. + +@vindex gnus-display-mime-function +@findex gnus-display-mime +Gnus pushes @acronym{MIME} articles through @code{gnus-display-mime-function} +to display the @acronym{MIME} parts. This is @code{gnus-display-mime} by +default, which creates a bundle of clickable buttons that can be used to +display, save and manipulate the @acronym{MIME} objects. + +The following commands are available when you have placed point over a +@acronym{MIME} button: + +@table @kbd +@findex gnus-article-press-button +@item RET (Article) +@kindex RET (Article) +@itemx BUTTON-2 (Article) +Toggle displaying of the @acronym{MIME} object +(@code{gnus-article-press-button}). If built-in viewers can not display +the object, Gnus resorts to external viewers in the @file{mailcap} +files. If a viewer has the @samp{copiousoutput} specification, the +object is displayed inline. + +@findex gnus-mime-view-part +@item M-RET (Article) +@kindex M-RET (Article) +@itemx v (Article) +Prompt for a method, and then view the @acronym{MIME} object using this +method (@code{gnus-mime-view-part}). + +@findex gnus-mime-view-part-as-type +@item t (Article) +@kindex t (Article) +View the @acronym{MIME} object as if it were a different @acronym{MIME} media type +(@code{gnus-mime-view-part-as-type}). + +@findex gnus-mime-view-part-as-charset +@item C (Article) +@kindex C (Article) +Prompt for a charset, and then view the @acronym{MIME} object using this +charset (@code{gnus-mime-view-part-as-charset}). + +@findex gnus-mime-save-part +@item o (Article) +@kindex o (Article) +Prompt for a file name, and then save the @acronym{MIME} object +(@code{gnus-mime-save-part}). + +@findex gnus-mime-save-part-and-strip +@item C-o (Article) +@kindex C-o (Article) +Prompt for a file name, then save the @acronym{MIME} object and strip it from +the article. Then proceed to article editing, where a reasonable +suggestion is being made on how the altered article should look +like. The stripped @acronym{MIME} object will be referred via the +message/external-body @acronym{MIME} type. +(@code{gnus-mime-save-part-and-strip}). + +@findex gnus-mime-delete-part +@item d (Article) +@kindex d (Article) +Delete the @acronym{MIME} object from the article and replace it with some +information about the removed @acronym{MIME} object +(@code{gnus-mime-delete-part}). + +@findex gnus-mime-copy-part +@item c (Article) +@kindex c (Article) +Copy the @acronym{MIME} object to a fresh buffer and display this buffer +(@code{gnus-mime-copy-part}). Compressed files like @file{.gz} and +@file{.bz2} are automatically decompressed if +@code{auto-compression-mode} is enabled (@pxref{Compressed Files,, +Accessing Compressed Files, emacs, The Emacs Editor}). + +@findex gnus-mime-print-part +@item p (Article) +@kindex p (Article) +Print the @acronym{MIME} object (@code{gnus-mime-print-part}). This +command respects the @samp{print=} specifications in the +@file{.mailcap} file. + +@findex gnus-mime-inline-part +@item i (Article) +@kindex i (Article) +Insert the contents of the @acronym{MIME} object into the buffer +(@code{gnus-mime-inline-part}) as text/plain. If given a prefix, insert +the raw contents without decoding. If given a numerical prefix, you can +do semi-manual charset stuff (see +@code{gnus-summary-show-article-charset-alist} in @ref{Paging the +Article}). + +@findex gnus-mime-view-part-internally +@item E (Article) +@kindex E (Article) +View the @acronym{MIME} object with an internal viewer. If no internal +viewer is available, use an external viewer +(@code{gnus-mime-view-part-internally}). + +@findex gnus-mime-view-part-externally +@item e (Article) +@kindex e (Article) +View the @acronym{MIME} object with an external viewer. +(@code{gnus-mime-view-part-externally}). + +@findex gnus-mime-pipe-part +@item | (Article) +@kindex | (Article) +Output the @acronym{MIME} object to a process (@code{gnus-mime-pipe-part}). + +@findex gnus-mime-action-on-part +@item . (Article) +@kindex . (Article) +Interactively run an action on the @acronym{MIME} object +(@code{gnus-mime-action-on-part}). + +@end table + +Gnus will display some @acronym{MIME} objects automatically. The way Gnus +determines which parts to do this with is described in the Emacs +@acronym{MIME} manual. + +It might be best to just use the toggling functions from the article +buffer to avoid getting nasty surprises. (For instance, you enter the +group @samp{alt.sing-a-long} and, before you know it, @acronym{MIME} has +decoded the sound file in the article and some horrible sing-a-long song +comes screaming out your speakers, and you can't find the volume button, +because there isn't one, and people are starting to look at you, and you +try to stop the program, but you can't, and you can't find the program +to control the volume, and everybody else in the room suddenly decides +to look at you disdainfully, and you'll feel rather stupid.) + +Any similarity to real events and people is purely coincidental. Ahem. + +Also @pxref{MIME Commands}. + + +@node Customizing Articles +@section Customizing Articles +@cindex article customization + +A slew of functions for customizing how the articles are to look like +exist. You can call these functions interactively +(@pxref{Article Washing}), or you can have them +called automatically when you select the articles. + +To have them called automatically, you should set the corresponding +``treatment'' variable. For instance, to have headers hidden, you'd set +@code{gnus-treat-hide-headers}. Below is a list of variables that can +be set, but first we discuss the values these variables can have. + +Note: Some values, while valid, make little sense. Check the list below +for sensible values. + +@enumerate +@item +@code{nil}: Don't do this treatment. + +@item +@code{t}: Do this treatment on all body parts. + +@item +@code{head}: Do the treatment on the headers. + +@item +@code{last}: Do this treatment on the last part. + +@item +An integer: Do this treatment on all body parts that have a length less +than this number. + +@item +A list of strings: Do this treatment on all body parts that are in +articles that are read in groups that have names that match one of the +regexps in the list. + +@item +A list where the first element is not a string: + +The list is evaluated recursively. The first element of the list is a +predicate. The following predicates are recognized: @code{or}, +@code{and}, @code{not} and @code{typep}. Here's an example: + +@lisp +(or last + (typep "text/x-vcard")) +@end lisp + +@end enumerate + +You may have noticed that the word @dfn{part} is used here. This refers +to the fact that some messages are @acronym{MIME} multipart articles that may +be divided into several parts. Articles that are not multiparts are +considered to contain just a single part. + +@vindex gnus-article-treat-types +Are the treatments applied to all sorts of multipart parts? Yes, if you +want to, but by default, only @samp{text/plain} parts are given the +treatment. This is controlled by the @code{gnus-article-treat-types} +variable, which is a list of regular expressions that are matched to the +type of the part. This variable is ignored if the value of the +controlling variable is a predicate list, as described above. + +@ifinfo +@c Avoid sort of redundant entries in the same section for the printed +@c manual, but add them in info to allow `i gnus-treat-foo-bar RET' or +@c `i foo-bar'. +@vindex gnus-treat-buttonize +@vindex gnus-treat-buttonize-head +@vindex gnus-treat-capitalize-sentences +@vindex gnus-treat-overstrike +@vindex gnus-treat-strip-cr +@vindex gnus-treat-strip-headers-in-body +@vindex gnus-treat-strip-leading-blank-lines +@vindex gnus-treat-strip-multiple-blank-lines +@vindex gnus-treat-strip-pem +@vindex gnus-treat-strip-trailing-blank-lines +@vindex gnus-treat-unsplit-urls +@vindex gnus-treat-wash-html +@vindex gnus-treat-date-english +@vindex gnus-treat-date-iso8601 +@vindex gnus-treat-date-lapsed +@vindex gnus-treat-date-local +@vindex gnus-treat-date-original +@vindex gnus-treat-date-user-defined +@vindex gnus-treat-date-ut +@vindex gnus-treat-from-picon +@vindex gnus-treat-mail-picon +@vindex gnus-treat-newsgroups-picon +@vindex gnus-treat-display-smileys +@vindex gnus-treat-body-boundary +@vindex gnus-treat-display-x-face +@vindex gnus-treat-display-face +@vindex gnus-treat-emphasize +@vindex gnus-treat-fill-article +@vindex gnus-treat-fill-long-lines +@vindex gnus-treat-hide-boring-headers +@vindex gnus-treat-hide-citation +@vindex gnus-treat-hide-citation-maybe +@vindex gnus-treat-hide-headers +@vindex gnus-treat-hide-signature +@vindex gnus-treat-strip-banner +@vindex gnus-treat-strip-list-identifiers +@vindex gnus-treat-highlight-citation +@vindex gnus-treat-highlight-headers +@vindex gnus-treat-highlight-signature +@vindex gnus-treat-play-sounds +@vindex gnus-treat-translate +@vindex gnus-treat-x-pgp-sig +@vindex gnus-treat-unfold-headers +@vindex gnus-treat-fold-headers +@vindex gnus-treat-fold-newsgroups +@vindex gnus-treat-leading-whitespace +@end ifinfo + +The following treatment options are available. The easiest way to +customize this is to examine the @code{gnus-article-treat} customization +group. Values in parenthesis are suggested sensible values. Others are +possible but those listed are probably sufficient for most people. + +@table @code +@item gnus-treat-buttonize (t, integer) +@item gnus-treat-buttonize-head (head) + +@xref{Article Buttons}. + +@item gnus-treat-capitalize-sentences (t, integer) +@item gnus-treat-overstrike (t, integer) +@item gnus-treat-strip-cr (t, integer) +@item gnus-treat-strip-headers-in-body (t, integer) +@item gnus-treat-strip-leading-blank-lines (t, integer) +@item gnus-treat-strip-multiple-blank-lines (t, integer) +@item gnus-treat-strip-pem (t, last, integer) +@item gnus-treat-strip-trailing-blank-lines (t, last, integer) +@item gnus-treat-unsplit-urls (t, integer) +@item gnus-treat-wash-html (t, integer) + +@xref{Article Washing}. + +@item gnus-treat-date-english (head) +@item gnus-treat-date-iso8601 (head) +@item gnus-treat-date-lapsed (head) +@item gnus-treat-date-local (head) +@item gnus-treat-date-original (head) +@item gnus-treat-date-user-defined (head) +@item gnus-treat-date-ut (head) + +@xref{Article Date}. + +@item gnus-treat-from-picon (head) +@item gnus-treat-mail-picon (head) +@item gnus-treat-newsgroups-picon (head) + +@xref{Picons}. + +@item gnus-treat-display-smileys (t, integer) + +@item gnus-treat-body-boundary (head) + +@vindex gnus-body-boundary-delimiter +Adds a delimiter between header and body, the string used as delimiter +is controlled by @code{gnus-body-boundary-delimiter}. + +@xref{Smileys}. + +@vindex gnus-treat-display-x-face +@item gnus-treat-display-x-face (head) + +@xref{X-Face}. + +@vindex gnus-treat-display-face +@item gnus-treat-display-face (head) + +@xref{Face}. + +@vindex gnus-treat-emphasize +@item gnus-treat-emphasize (t, head, integer) +@vindex gnus-treat-fill-article +@item gnus-treat-fill-article (t, integer) +@vindex gnus-treat-fill-long-lines +@item gnus-treat-fill-long-lines (t, integer) +@vindex gnus-treat-hide-boring-headers +@item gnus-treat-hide-boring-headers (head) +@vindex gnus-treat-hide-citation +@item gnus-treat-hide-citation (t, integer) +@vindex gnus-treat-hide-citation-maybe +@item gnus-treat-hide-citation-maybe (t, integer) +@vindex gnus-treat-hide-headers +@item gnus-treat-hide-headers (head) +@vindex gnus-treat-hide-signature +@item gnus-treat-hide-signature (t, last) +@vindex gnus-treat-strip-banner +@item gnus-treat-strip-banner (t, last) +@vindex gnus-treat-strip-list-identifiers +@item gnus-treat-strip-list-identifiers (head) + +@xref{Article Hiding}. + +@vindex gnus-treat-highlight-citation +@item gnus-treat-highlight-citation (t, integer) +@vindex gnus-treat-highlight-headers +@item gnus-treat-highlight-headers (head) +@vindex gnus-treat-highlight-signature +@item gnus-treat-highlight-signature (t, last, integer) + +@xref{Article Highlighting}. + +@vindex gnus-treat-play-sounds +@item gnus-treat-play-sounds +@vindex gnus-treat-translate +@item gnus-treat-translate +@vindex gnus-treat-x-pgp-sig +@item gnus-treat-x-pgp-sig (head) + +@vindex gnus-treat-unfold-headers +@item gnus-treat-unfold-headers (head) +@vindex gnus-treat-fold-headers +@item gnus-treat-fold-headers (head) +@vindex gnus-treat-fold-newsgroups +@item gnus-treat-fold-newsgroups (head) +@vindex gnus-treat-leading-whitespace +@item gnus-treat-leading-whitespace (head) + +@xref{Article Header}. + + +@end table + +@vindex gnus-part-display-hook +You can, of course, write your own functions to be called from +@code{gnus-part-display-hook}. The functions are called narrowed to the +part, and you can do anything you like, pretty much. There is no +information that you have to keep in the buffer---you can change +everything. + + +@node Article Keymap +@section Article Keymap + +Most of the keystrokes in the summary buffer can also be used in the +article buffer. They should behave as if you typed them in the summary +buffer, which means that you don't actually have to have a summary +buffer displayed while reading. You can do it all from the article +buffer. + +@kindex v (Article) +@cindex keys, reserved for users (Article) +The key @kbd{v} is reserved for users. You can bind it to some +command or better use it as a prefix key. + +A few additional keystrokes are available: + +@table @kbd + +@item SPACE +@kindex SPACE (Article) +@findex gnus-article-next-page +Scroll forwards one page (@code{gnus-article-next-page}). +This is exactly the same as @kbd{h SPACE h}. + +@item DEL +@kindex DEL (Article) +@findex gnus-article-prev-page +Scroll backwards one page (@code{gnus-article-prev-page}). +This is exactly the same as @kbd{h DEL h}. + +@item C-c ^ +@kindex C-c ^ (Article) +@findex gnus-article-refer-article +If point is in the neighborhood of a @code{Message-ID} and you press +@kbd{C-c ^}, Gnus will try to get that article from the server +(@code{gnus-article-refer-article}). + +@item C-c C-m +@kindex C-c C-m (Article) +@findex gnus-article-mail +Send a reply to the address near point (@code{gnus-article-mail}). If +given a prefix, include the mail. + +@item s +@kindex s (Article) +@findex gnus-article-show-summary +Reconfigure the buffers so that the summary buffer becomes visible +(@code{gnus-article-show-summary}). + +@item ? +@kindex ? (Article) +@findex gnus-article-describe-briefly +Give a very brief description of the available keystrokes +(@code{gnus-article-describe-briefly}). + +@item TAB +@kindex TAB (Article) +@findex gnus-article-next-button +Go to the next button, if any (@code{gnus-article-next-button}). This +only makes sense if you have buttonizing turned on. + +@item M-TAB +@kindex M-TAB (Article) +@findex gnus-article-prev-button +Go to the previous button, if any (@code{gnus-article-prev-button}). + +@item R +@kindex R (Article) +@findex gnus-article-reply-with-original +Send a reply to the current article and yank the current article +(@code{gnus-article-reply-with-original}). If given a prefix, make a +wide reply. If the region is active, only yank the text in the +region. + +@item F +@kindex F (Article) +@findex gnus-article-followup-with-original +Send a followup to the current article and yank the current article +(@code{gnus-article-followup-with-original}). If given a prefix, make +a wide reply. If the region is active, only yank the text in the +region. + + +@end table + + +@node Misc Article +@section Misc Article + +@table @code + +@item gnus-single-article-buffer +@vindex gnus-single-article-buffer +@cindex article buffers, several +If non-@code{nil}, use the same article buffer for all the groups. +(This is the default.) If @code{nil}, each group will have its own +article buffer. + +@vindex gnus-article-decode-hook +@item gnus-article-decode-hook +@cindex @acronym{MIME} +Hook used to decode @acronym{MIME} articles. The default value is +@code{(article-decode-charset article-decode-encoded-words)} + +@vindex gnus-article-prepare-hook +@item gnus-article-prepare-hook +This hook is called right after the article has been inserted into the +article buffer. It is mainly intended for functions that do something +depending on the contents; it should probably not be used for changing +the contents of the article buffer. + +@item gnus-article-mode-hook +@vindex gnus-article-mode-hook +Hook called in article mode buffers. + +@item gnus-article-mode-syntax-table +@vindex gnus-article-mode-syntax-table +Syntax table used in article buffers. It is initialized from +@code{text-mode-syntax-table}. + +@vindex gnus-article-over-scroll +@item gnus-article-over-scroll +If non-@code{nil}, allow scrolling the article buffer even when there +no more new text to scroll in. The default is @code{nil}. + +@vindex gnus-article-mode-line-format +@item gnus-article-mode-line-format +This variable is a format string along the same lines as +@code{gnus-summary-mode-line-format} (@pxref{Summary Buffer Mode +Line}). It accepts the same format specifications as that variable, +with two extensions: + +@table @samp + +@item w +The @dfn{wash status} of the article. This is a short string with one +character for each possible article wash operation that may have been +performed. The characters and their meaning: + +@table @samp + +@item c +Displayed when cited text may be hidden in the article buffer. + +@item h +Displayed when headers are hidden in the article buffer. + +@item p +Displayed when article is digitally signed or encrypted, and Gnus has +hidden the security headers. (N.B. does not tell anything about +security status, i.e. good or bad signature.) + +@item s +Displayed when the signature has been hidden in the Article buffer. + +@item o +Displayed when Gnus has treated overstrike characters in the article buffer. + +@item e +Displayed when Gnus has treated emphasised strings in the article buffer. + +@end table + +@item m +The number of @acronym{MIME} parts in the article. + +@end table + +@vindex gnus-break-pages + +@item gnus-break-pages +Controls whether @dfn{page breaking} is to take place. If this variable +is non-@code{nil}, the articles will be divided into pages whenever a +page delimiter appears in the article. If this variable is @code{nil}, +paging will not be done. + +@item gnus-page-delimiter +@vindex gnus-page-delimiter +This is the delimiter mentioned above. By default, it is @samp{^L} +(formfeed). + +@cindex IDNA +@cindex internationalized domain names +@vindex gnus-use-idna +@item gnus-use-idna +This variable controls whether Gnus performs IDNA decoding of +internationalized domain names inside @samp{From}, @samp{To} and +@samp{Cc} headers. This requires +@uref{http://www.gnu.org/software/libidn/, GNU Libidn}, and this +variable is only enabled if you have installed it. + +@end table + + +@node Composing Messages +@chapter Composing Messages +@cindex composing messages +@cindex messages +@cindex mail +@cindex sending mail +@cindex reply +@cindex followup +@cindex post +@cindex using gpg +@cindex using s/mime +@cindex using smime + +@kindex C-c C-c (Post) +All commands for posting and mailing will put you in a message buffer +where you can edit the article all you like, before you send the +article by pressing @kbd{C-c C-c}. @xref{Top, , Overview, message, +Message Manual}. Where the message will be posted/mailed to depends +on your setup (@pxref{Posting Server}). + +@menu +* Mail:: Mailing and replying. +* Posting Server:: What server should you post and mail via? +* POP before SMTP:: You cannot send a mail unless you read a mail. +* Mail and Post:: Mailing and posting at the same time. +* Archived Messages:: Where Gnus stores the messages you've sent. +* Posting Styles:: An easier way to specify who you are. +* Drafts:: Postponing messages and rejected messages. +* Rejected Articles:: What happens if the server doesn't like your article? +* Signing and encrypting:: How to compose secure messages. +@end menu + +Also @pxref{Canceling and Superseding} for information on how to +remove articles you shouldn't have posted. + + +@node Mail +@section Mail + +Variables for customizing outgoing mail: + +@table @code +@item gnus-uu-digest-headers +@vindex gnus-uu-digest-headers +List of regexps to match headers included in digested messages. The +headers will be included in the sequence they are matched. If +@code{nil} include all headers. + +@item gnus-add-to-list +@vindex gnus-add-to-list +If non-@code{nil}, add a @code{to-list} group parameter to mail groups +that have none when you do a @kbd{a}. + +@item gnus-confirm-mail-reply-to-news +@vindex gnus-confirm-mail-reply-to-news +If non-@code{nil}, Gnus will ask you for a confirmation when you are +about to reply to news articles by mail. If it is @code{nil}, nothing +interferes in what you want to do. This can also be a function +receiving the group name as the only parameter which should return +non-@code{nil} if a confirmation is needed, or a regular expression +matching group names, where confirmation should be asked for. + +If you find yourself never wanting to reply to mail, but occasionally +press @kbd{R} anyway, this variable might be for you. + +@item gnus-confirm-treat-mail-like-news +@vindex gnus-confirm-treat-mail-like-news +If non-@code{nil}, Gnus also requests confirmation according to +@code{gnus-confirm-mail-reply-to-news} when replying to mail. This is +useful for treating mailing lists like newsgroups. + +@end table + + +@node Posting Server +@section Posting Server + +When you press those magical @kbd{C-c C-c} keys to ship off your latest +(extremely intelligent, of course) article, where does it go? + +Thank you for asking. I hate you. + +It can be quite complicated. + +@vindex gnus-post-method +When posting news, Message usually invokes @code{message-send-news} +(@pxref{News Variables, , News Variables, message, Message Manual}). +Normally, Gnus will post using the same select method as you're +reading from (which might be convenient if you're reading lots of +groups from different private servers). However. If the server +you're reading from doesn't allow posting, just reading, you probably +want to use some other server to post your (extremely intelligent and +fabulously interesting) articles. You can then set the +@code{gnus-post-method} to some other method: + +@lisp +(setq gnus-post-method '(nnspool "")) +@end lisp + +Now, if you've done this, and then this server rejects your article, or +this server is down, what do you do then? To override this variable you +can use a non-zero prefix to the @kbd{C-c C-c} command to force using +the ``current'' server, to get back the default behavior, for posting. + +If you give a zero prefix (i.e., @kbd{C-u 0 C-c C-c}) to that command, +Gnus will prompt you for what method to use for posting. + +You can also set @code{gnus-post-method} to a list of select methods. +If that's the case, Gnus will always prompt you for what method to use +for posting. + +Finally, if you want to always post using the native select method, +you can set this variable to @code{native}. + +When sending mail, Message invokes @code{message-send-mail-function}. +The default function, @code{message-send-mail-with-sendmail}, pipes +your article to the @code{sendmail} binary for further queuing and +sending. When your local system is not configured for sending mail +using @code{sendmail}, and you have access to a remote @acronym{SMTP} +server, you can set @code{message-send-mail-function} to +@code{smtpmail-send-it} and make sure to setup the @code{smtpmail} +package correctly. An example: + +@lisp +(setq message-send-mail-function 'smtpmail-send-it + smtpmail-default-smtp-server "YOUR SMTP HOST") +@end lisp + +To the thing similar to this, there is +@code{message-smtpmail-send-it}. It is useful if your @acronym{ISP} +requires the @acronym{POP}-before-@acronym{SMTP} authentication. +@xref{POP before SMTP}. + +Other possible choices for @code{message-send-mail-function} includes +@code{message-send-mail-with-mh}, @code{message-send-mail-with-qmail}, +and @code{feedmail-send-it}. + +@node POP before SMTP +@section POP before SMTP +@cindex pop before smtp +@findex message-smtpmail-send-it +@findex mail-source-touch-pop + +Does your @acronym{ISP} require the @acronym{POP}-before-@acronym{SMTP} +authentication? It is whether you need to connect to the @acronym{POP} +mail server within a certain time before sending mails. If so, there is +a convenient way. To do that, put the following lines in your +@file{~/.gnus.el} file: + +@lisp +(setq message-send-mail-function 'message-smtpmail-send-it) +(add-hook 'message-send-mail-hook 'mail-source-touch-pop) +@end lisp + +@noindent +It means to let Gnus connect to the @acronym{POP} mail server in advance +whenever you send a mail. The @code{mail-source-touch-pop} function +does only a @acronym{POP} authentication according to the value of +@code{mail-sources} without fetching mails, just before sending a mail. +Note that you have to use @code{message-smtpmail-send-it} which runs +@code{message-send-mail-hook} rather than @code{smtpmail-send-it} and +set the value of @code{mail-sources} for a @acronym{POP} connection +correctly. @xref{Mail Sources}. + +If you have two or more @acronym{POP} mail servers set in +@code{mail-sources}, you may want to specify one of them to +@code{mail-source-primary-source} as the @acronym{POP} mail server to be +used for the @acronym{POP}-before-@acronym{SMTP} authentication. If it +is your primary @acronym{POP} mail server (i.e., you are fetching mails +mainly from that server), you can set it permanently as follows: + +@lisp +(setq mail-source-primary-source + '(pop :server "pop3.mail.server" + :password "secret")) +@end lisp + +@noindent +Otherwise, bind it dynamically only when performing the +@acronym{POP}-before-@acronym{SMTP} authentication as follows: + +@lisp +(add-hook 'message-send-mail-hook + (lambda () + (let ((mail-source-primary-source + '(pop :server "pop3.mail.server" + :password "secret"))) + (mail-source-touch-pop)))) +@end lisp + +@node Mail and Post +@section Mail and Post + +Here's a list of variables relevant to both mailing and +posting: + +@table @code +@item gnus-mailing-list-groups +@findex gnus-mailing-list-groups +@cindex mailing lists + +If your news server offers groups that are really mailing lists +gatewayed to the @acronym{NNTP} server, you can read those groups without +problems, but you can't post/followup to them without some difficulty. +One solution is to add a @code{to-address} to the group parameters +(@pxref{Group Parameters}). An easier thing to do is set the +@code{gnus-mailing-list-groups} to a regexp that matches the groups that +really are mailing lists. Then, at least, followups to the mailing +lists will work most of the time. Posting to these groups (@kbd{a}) is +still a pain, though. + +@item gnus-user-agent +@vindex gnus-user-agent +@cindex User-Agent + +This variable controls which information should be exposed in the +User-Agent header. It can be a list of symbols or a string. Valid +symbols are @code{gnus} (show Gnus version) and @code{emacs} (show Emacs +version). In addition to the Emacs version, you can add @code{codename} +(show (S)XEmacs codename) or either @code{config} (show system +configuration) or @code{type} (show system type). If you set it to a +string, be sure to use a valid format, see RFC 2616. + +@end table + +You may want to do spell-checking on messages that you send out. Or, if +you don't want to spell-check by hand, you could add automatic +spell-checking via the @code{ispell} package: + +@cindex ispell +@findex ispell-message +@lisp +(add-hook 'message-send-hook 'ispell-message) +@end lisp + +If you want to change the @code{ispell} dictionary based on what group +you're in, you could say something like the following: + +@lisp +(add-hook 'gnus-select-group-hook + (lambda () + (cond + ((string-match + "^de\\." (gnus-group-real-name gnus-newsgroup-name)) + (ispell-change-dictionary "deutsch")) + (t + (ispell-change-dictionary "english"))))) +@end lisp + +Modify to suit your needs. + + +@node Archived Messages +@section Archived Messages +@cindex archived messages +@cindex sent messages + +Gnus provides a few different methods for storing the mail and news you +send. The default method is to use the @dfn{archive virtual server} to +store the messages. If you want to disable this completely, the +@code{gnus-message-archive-group} variable should be @code{nil}, which +is the default. + +For archiving interesting messages in a group you read, see the +@kbd{B c} (@code{gnus-summary-copy-article}) command (@pxref{Mail +Group Commands}). + +@vindex gnus-message-archive-method +@code{gnus-message-archive-method} says what virtual server Gnus is to +use to store sent messages. The default is: + +@lisp +(nnfolder "archive" + (nnfolder-directory "~/Mail/archive") + (nnfolder-active-file "~/Mail/archive/active") + (nnfolder-get-new-mail nil) + (nnfolder-inhibit-expiry t)) +@end lisp + +You can, however, use any mail select method (@code{nnml}, +@code{nnmbox}, etc.). @code{nnfolder} is a quite likable select method +for doing this sort of thing, though. If you don't like the default +directory chosen, you could say something like: + +@lisp +(setq gnus-message-archive-method + '(nnfolder "archive" + (nnfolder-inhibit-expiry t) + (nnfolder-active-file "~/News/sent-mail/active") + (nnfolder-directory "~/News/sent-mail/"))) +@end lisp + +@vindex gnus-message-archive-group +@cindex Gcc +Gnus will insert @code{Gcc} headers in all outgoing messages that point +to one or more group(s) on that server. Which group to use is +determined by the @code{gnus-message-archive-group} variable. + +This variable can be used to do the following: + +@table @asis +@item a string +Messages will be saved in that group. + +Note that you can include a select method in the group name, then the +message will not be stored in the select method given by +@code{gnus-message-archive-method}, but in the select method specified +by the group name, instead. Suppose @code{gnus-message-archive-method} +has the default value shown above. Then setting +@code{gnus-message-archive-group} to @code{"foo"} means that outgoing +messages are stored in @samp{nnfolder+archive:foo}, but if you use the +value @code{"nnml:foo"}, then outgoing messages will be stored in +@samp{nnml:foo}. + +@item a list of strings +Messages will be saved in all those groups. + +@item an alist of regexps, functions and forms +When a key ``matches'', the result is used. + +@item @code{nil} +No message archiving will take place. This is the default. +@end table + +Let's illustrate: + +Just saving to a single group called @samp{MisK}: +@lisp +(setq gnus-message-archive-group "MisK") +@end lisp + +Saving to two groups, @samp{MisK} and @samp{safe}: +@lisp +(setq gnus-message-archive-group '("MisK" "safe")) +@end lisp + +Save to different groups based on what group you are in: +@lisp +(setq gnus-message-archive-group + '(("^alt" "sent-to-alt") + ("mail" "sent-to-mail") + (".*" "sent-to-misc"))) +@end lisp + +More complex stuff: +@lisp +(setq gnus-message-archive-group + '((if (message-news-p) + "misc-news" + "misc-mail"))) +@end lisp + +How about storing all news messages in one file, but storing all mail +messages in one file per month: + +@lisp +(setq gnus-message-archive-group + '((if (message-news-p) + "misc-news" + (concat "mail." (format-time-string "%Y-%m"))))) +@end lisp + +@c (XEmacs 19.13 doesn't have @code{format-time-string}, so you'll have to +@c use a different value for @code{gnus-message-archive-group} there.) + +Now, when you send a message off, it will be stored in the appropriate +group. (If you want to disable storing for just one particular message, +you can just remove the @code{Gcc} header that has been inserted.) The +archive group will appear in the group buffer the next time you start +Gnus, or the next time you press @kbd{F} in the group buffer. You can +enter it and read the articles in it just like you'd read any other +group. If the group gets really big and annoying, you can simply rename +if (using @kbd{G r} in the group buffer) to something +nice---@samp{misc-mail-september-1995}, or whatever. New messages will +continue to be stored in the old (now empty) group. + +That's the default method of archiving sent messages. Gnus offers a +different way for the people who don't like the default method. In that +case you should set @code{gnus-message-archive-group} to @code{nil}; +this will disable archiving. + +@table @code +@item gnus-outgoing-message-group +@vindex gnus-outgoing-message-group +All outgoing messages will be put in this group. If you want to store +all your outgoing mail and articles in the group @samp{nnml:archive}, +you set this variable to that value. This variable can also be a list of +group names. + +If you want to have greater control over what group to put each +message in, you can set this variable to a function that checks the +current newsgroup name and then returns a suitable group name (or list +of names). + +This variable can be used instead of @code{gnus-message-archive-group}, +but the latter is the preferred method. + +@item gnus-gcc-mark-as-read +@vindex gnus-gcc-mark-as-read +If non-@code{nil}, automatically mark @code{Gcc} articles as read. + +@item gnus-gcc-externalize-attachments +@vindex gnus-gcc-externalize-attachments +If @code{nil}, attach files as normal parts in Gcc copies; if a regexp +and matches the Gcc group name, attach files as external parts; if it is +@code{all}, attach local files as external parts; if it is other +non-@code{nil}, the behavior is the same as @code{all}, but it may be +changed in the future. + +@end table + + +@node Posting Styles +@section Posting Styles +@cindex posting styles +@cindex styles + +All them variables, they make my head swim. + +So what if you want a different @code{Organization} and signature based +on what groups you post to? And you post both from your home machine +and your work machine, and you want different @code{From} lines, and so +on? + +@vindex gnus-posting-styles +One way to do stuff like that is to write clever hooks that change the +variables you need to have changed. That's a bit boring, so somebody +came up with the bright idea of letting the user specify these things in +a handy alist. Here's an example of a @code{gnus-posting-styles} +variable: + +@lisp +((".*" + (signature "Peace and happiness") + (organization "What me?")) + ("^comp" + (signature "Death to everybody")) + ("comp.emacs.i-love-it" + (organization "Emacs is it"))) +@end lisp + +As you might surmise from this example, this alist consists of several +@dfn{styles}. Each style will be applicable if the first element +``matches'', in some form or other. The entire alist will be iterated +over, from the beginning towards the end, and each match will be +applied, which means that attributes in later styles that match override +the same attributes in earlier matching styles. So +@samp{comp.programming.literate} will have the @samp{Death to everybody} +signature and the @samp{What me?} @code{Organization} header. + +The first element in each style is called the @code{match}. If it's a +string, then Gnus will try to regexp match it against the group name. +If it is the form @code{(header @var{match} @var{regexp})}, then Gnus +will look in the original article for a header whose name is +@var{match} and compare that @var{regexp}. @var{match} and +@var{regexp} are strings. (The original article is the one you are +replying or following up to. If you are not composing a reply or a +followup, then there is nothing to match against.) If the +@code{match} is a function symbol, that function will be called with +no arguments. If it's a variable symbol, then the variable will be +referenced. If it's a list, then that list will be @code{eval}ed. In +any case, if this returns a non-@code{nil} value, then the style is +said to @dfn{match}. + +Each style may contain an arbitrary amount of @dfn{attributes}. Each +attribute consists of a @code{(@var{name} @var{value})} pair. In +addition, you can also use the @code{(@var{name} :file @var{value})} +form or the @code{(@var{name} :value @var{value})} form. Where +@code{:file} signifies @var{value} represents a file name and its +contents should be used as the attribute value, @code{:value} signifies +@var{value} does not represent a file name explicitly. The attribute +name can be one of: + +@itemize @bullet +@item @code{signature} +@item @code{signature-file} +@item @code{x-face-file} +@item @code{address}, overriding @code{user-mail-address} +@item @code{name}, overriding @code{(user-full-name)} +@item @code{body} +@end itemize + +The attribute name can also be a string or a symbol. In that case, +this will be used as a header name, and the value will be inserted in +the headers of the article; if the value is @code{nil}, the header +name will be removed. If the attribute name is @code{eval}, the form +is evaluated, and the result is thrown away. + +The attribute value can be a string (used verbatim), a function with +zero arguments (the return value will be used), a variable (its value +will be used) or a list (it will be @code{eval}ed and the return value +will be used). The functions and sexps are called/@code{eval}ed in the +message buffer that is being set up. The headers of the current article +are available through the @code{message-reply-headers} variable, which +is a vector of the following headers: number subject from date id +references chars lines xref extra. + +@vindex message-reply-headers + +If you wish to check whether the message you are about to compose is +meant to be a news article or a mail message, you can check the values +of the @code{message-news-p} and @code{message-mail-p} functions. + +@findex message-mail-p +@findex message-news-p + +So here's a new example: + +@lisp +(setq gnus-posting-styles + '((".*" + (signature-file "~/.signature") + (name "User Name") + (x-face-file "~/.xface") + (x-url (getenv "WWW_HOME")) + (organization "People's Front Against MWM")) + ("^rec.humor" + (signature my-funny-signature-randomizer)) + ((equal (system-name) "gnarly") ;; @r{A form} + (signature my-quote-randomizer)) + (message-news-p ;; @r{A function symbol} + (signature my-news-signature)) + (window-system ;; @r{A value symbol} + ("X-Window-System" (format "%s" window-system))) + ;; @r{If I'm replying to Larsi, set the Organization header.} + ((header "from" "larsi.*org") + (Organization "Somewhere, Inc.")) + ((posting-from-work-p) ;; @r{A user defined function} + (signature-file "~/.work-signature") + (address "user@@bar.foo") + (body "You are fired.\n\nSincerely, your boss.") + (organization "Important Work, Inc")) + ("nnml:.*" + (From (save-excursion + (set-buffer gnus-article-buffer) + (message-fetch-field "to")))) + ("^nn.+:" + (signature-file "~/.mail-signature")))) +@end lisp + +The @samp{nnml:.*} rule means that you use the @code{To} address as the +@code{From} address in all your outgoing replies, which might be handy +if you fill many roles. +You may also use @code{message-alternative-emails} instead. +@xref{Message Headers, ,Message Headers, message, Message Manual}. + +@node Drafts +@section Drafts +@cindex drafts + +If you are writing a message (mail or news) and suddenly remember that +you have a steak in the oven (or some pesto in the food processor, you +craaazy vegetarians), you'll probably wish there was a method to save +the message you are writing so that you can continue editing it some +other day, and send it when you feel its finished. + +Well, don't worry about it. Whenever you start composing a message of +some sort using the Gnus mail and post commands, the buffer you get will +automatically associate to an article in a special @dfn{draft} group. +If you save the buffer the normal way (@kbd{C-x C-s}, for instance), the +article will be saved there. (Auto-save files also go to the draft +group.) + +@cindex nndraft +@vindex nndraft-directory +The draft group is a special group (which is implemented as an +@code{nndraft} group, if you absolutely have to know) called +@samp{nndraft:drafts}. The variable @code{nndraft-directory} says where +@code{nndraft} is to store its files. What makes this group special is +that you can't tick any articles in it or mark any articles as +read---all articles in the group are permanently unread. + +If the group doesn't exist, it will be created and you'll be subscribed +to it. The only way to make it disappear from the Group buffer is to +unsubscribe it. The special properties of the draft group comes from +a group property (@pxref{Group Parameters}), and if lost the group +behaves like any other group. This means the commands below will not +be available. To restore the special properties of the group, the +simplest way is to kill the group, using @kbd{C-k}, and restart +Gnus. The group is automatically created again with the +correct parameters. The content of the group is not lost. + +@c @findex gnus-dissociate-buffer-from-draft +@c @kindex C-c M-d (Mail) +@c @kindex C-c M-d (Post) +@c @findex gnus-associate-buffer-with-draft +@c @kindex C-c C-d (Mail) +@c @kindex C-c C-d (Post) +@c If you're writing some super-secret message that you later want to +@c encode with PGP before sending, you may wish to turn the auto-saving +@c (and association with the draft group) off. You never know who might be +@c interested in reading all your extremely valuable and terribly horrible +@c and interesting secrets. The @kbd{C-c M-d} +@c (@code{gnus-dissociate-buffer-from-draft}) command does that for you. +@c If you change your mind and want to turn the auto-saving back on again, +@c @kbd{C-c C-d} (@code{gnus-associate-buffer-with-draft} does that. +@c +@c @vindex gnus-use-draft +@c To leave association with the draft group off by default, set +@c @code{gnus-use-draft} to @code{nil}. It is @code{t} by default. + +@findex gnus-draft-edit-message +@kindex D e (Draft) +When you want to continue editing the article, you simply enter the +draft group and push @kbd{D e} (@code{gnus-draft-edit-message}) to do +that. You will be placed in a buffer where you left off. + +Rejected articles will also be put in this draft group (@pxref{Rejected +Articles}). + +@findex gnus-draft-send-all-messages +@kindex D s (Draft) +@findex gnus-draft-send-message +@kindex D S (Draft) +If you have lots of rejected messages you want to post (or mail) without +doing further editing, you can use the @kbd{D s} command +(@code{gnus-draft-send-message}). This command understands the +process/prefix convention (@pxref{Process/Prefix}). The @kbd{D S} +command (@code{gnus-draft-send-all-messages}) will ship off all messages +in the buffer. + +@findex gnus-draft-toggle-sending +@kindex D t (Draft) +If you have some messages that you wish not to send, you can use the +@kbd{D t} (@code{gnus-draft-toggle-sending}) command to mark the message +as unsendable. This is a toggling command. + + +@node Rejected Articles +@section Rejected Articles +@cindex rejected articles + +Sometimes a news server will reject an article. Perhaps the server +doesn't like your face. Perhaps it just feels miserable. Perhaps +@emph{there be demons}. Perhaps you have included too much cited text. +Perhaps the disk is full. Perhaps the server is down. + +These situations are, of course, totally beyond the control of Gnus. +(Gnus, of course, loves the way you look, always feels great, has angels +fluttering around inside of it, doesn't care about how much cited text +you include, never runs full and never goes down.) So Gnus saves these +articles until some later time when the server feels better. + +The rejected articles will automatically be put in a special draft group +(@pxref{Drafts}). When the server comes back up again, you'd then +typically enter that group and send all the articles off. + +@node Signing and encrypting +@section Signing and encrypting +@cindex using gpg +@cindex using s/mime +@cindex using smime + +Gnus can digitally sign and encrypt your messages, using vanilla +@acronym{PGP} format or @acronym{PGP/MIME} or @acronym{S/MIME}. For +decoding such messages, see the @code{mm-verify-option} and +@code{mm-decrypt-option} options (@pxref{Security}). + +@vindex gnus-message-replysign +@vindex gnus-message-replyencrypt +@vindex gnus-message-replysignencrypted +Often, you would like to sign replies to people who send you signed +messages. Even more often, you might want to encrypt messages which +are in reply to encrypted messages. Gnus offers +@code{gnus-message-replysign} to enable the former, and +@code{gnus-message-replyencrypt} for the latter. In addition, setting +@code{gnus-message-replysignencrypted} (on by default) will sign +automatically encrypted messages. + +Instructing @acronym{MML} to perform security operations on a +@acronym{MIME} part is done using the @kbd{C-c C-m s} key map for +signing and the @kbd{C-c C-m c} key map for encryption, as follows. + +@table @kbd + +@item C-c C-m s s +@kindex C-c C-m s s (Message) +@findex mml-secure-message-sign-smime + +Digitally sign current message using @acronym{S/MIME}. + +@item C-c C-m s o +@kindex C-c C-m s o (Message) +@findex mml-secure-message-sign-pgp + +Digitally sign current message using @acronym{PGP}. + +@item C-c C-m s p +@kindex C-c C-m s p (Message) +@findex mml-secure-message-sign-pgp + +Digitally sign current message using @acronym{PGP/MIME}. + +@item C-c C-m c s +@kindex C-c C-m c s (Message) +@findex mml-secure-message-encrypt-smime + +Digitally encrypt current message using @acronym{S/MIME}. + +@item C-c C-m c o +@kindex C-c C-m c o (Message) +@findex mml-secure-message-encrypt-pgp + +Digitally encrypt current message using @acronym{PGP}. + +@item C-c C-m c p +@kindex C-c C-m c p (Message) +@findex mml-secure-message-encrypt-pgpmime + +Digitally encrypt current message using @acronym{PGP/MIME}. + +@item C-c C-m C-n +@kindex C-c C-m C-n (Message) +@findex mml-unsecure-message +Remove security related @acronym{MML} tags from message. + +@end table + +@xref{Security, ,Security, message, Message Manual}, for more information. + +@node Select Methods +@chapter Select Methods +@cindex foreign groups +@cindex select methods + +A @dfn{foreign group} is a group not read by the usual (or +default) means. It could be, for instance, a group from a different +@acronym{NNTP} server, it could be a virtual group, or it could be your own +personal mail group. + +A foreign group (or any group, really) is specified by a @dfn{name} and +a @dfn{select method}. To take the latter first, a select method is a +list where the first element says what back end to use (e.g. @code{nntp}, +@code{nnspool}, @code{nnml}) and the second element is the @dfn{server +name}. There may be additional elements in the select method, where the +value may have special meaning for the back end in question. + +One could say that a select method defines a @dfn{virtual server}---so +we do just that (@pxref{Server Buffer}). + +The @dfn{name} of the group is the name the back end will recognize the +group as. + +For instance, the group @samp{soc.motss} on the @acronym{NNTP} server +@samp{some.where.edu} will have the name @samp{soc.motss} and select +method @code{(nntp "some.where.edu")}. Gnus will call this group +@samp{nntp+some.where.edu:soc.motss}, even though the @code{nntp} +back end just knows this group as @samp{soc.motss}. + +The different methods all have their peculiarities, of course. + +@menu +* Server Buffer:: Making and editing virtual servers. +* Getting News:: Reading USENET news with Gnus. +* Getting Mail:: Reading your personal mail with Gnus. +* Browsing the Web:: Getting messages from a plethora of Web sources. +* IMAP:: Using Gnus as a @acronym{IMAP} client. +* Other Sources:: Reading directories, files, SOUP packets. +* Combined Groups:: Combining groups into one group. +* Email Based Diary:: Using mails to manage diary events in Gnus. +* Gnus Unplugged:: Reading news and mail offline. +@end menu + + +@node Server Buffer +@section Server Buffer + +Traditionally, a @dfn{server} is a machine or a piece of software that +one connects to, and then requests information from. Gnus does not +connect directly to any real servers, but does all transactions through +one back end or other. But that's just putting one layer more between +the actual media and Gnus, so we might just as well say that each +back end represents a virtual server. + +For instance, the @code{nntp} back end may be used to connect to several +different actual @acronym{NNTP} servers, or, perhaps, to many different ports +on the same actual @acronym{NNTP} server. You tell Gnus which back end to +use, and what parameters to set by specifying a @dfn{select method}. + +These select method specifications can sometimes become quite +complicated---say, for instance, that you want to read from the +@acronym{NNTP} server @samp{news.funet.fi} on port number 13, which +hangs if queried for @acronym{NOV} headers and has a buggy select. Ahem. +Anyway, if you had to specify that for each group that used this +server, that would be too much work, so Gnus offers a way of naming +select methods, which is what you do in the server buffer. + +To enter the server buffer, use the @kbd{^} +(@code{gnus-group-enter-server-mode}) command in the group buffer. + +@menu +* Server Buffer Format:: You can customize the look of this buffer. +* Server Commands:: Commands to manipulate servers. +* Example Methods:: Examples server specifications. +* Creating a Virtual Server:: An example session. +* Server Variables:: Which variables to set. +* Servers and Methods:: You can use server names as select methods. +* Unavailable Servers:: Some servers you try to contact may be down. +@end menu + +@vindex gnus-server-mode-hook +@code{gnus-server-mode-hook} is run when creating the server buffer. + + +@node Server Buffer Format +@subsection Server Buffer Format +@cindex server buffer format + +@vindex gnus-server-line-format +You can change the look of the server buffer lines by changing the +@code{gnus-server-line-format} variable. This is a @code{format}-like +variable, with some simple extensions: + +@table @samp + +@item h +How the news is fetched---the back end name. + +@item n +The name of this server. + +@item w +Where the news is to be fetched from---the address. + +@item s +The opened/closed/denied status of the server. + +@item a +Whether this server is agentized. +@end table + +@vindex gnus-server-mode-line-format +The mode line can also be customized by using the +@code{gnus-server-mode-line-format} variable (@pxref{Mode Line +Formatting}). The following specs are understood: + +@table @samp +@item S +Server name. + +@item M +Server method. +@end table + +Also @pxref{Formatting Variables}. + + +@node Server Commands +@subsection Server Commands +@cindex server commands + +@table @kbd + +@item v +@kindex v (Server) +@cindex keys, reserved for users (Server) +The key @kbd{v} is reserved for users. You can bind it to some +command or better use it as a prefix key. + +@item a +@kindex a (Server) +@findex gnus-server-add-server +Add a new server (@code{gnus-server-add-server}). + +@item e +@kindex e (Server) +@findex gnus-server-edit-server +Edit a server (@code{gnus-server-edit-server}). + +@item SPACE +@kindex SPACE (Server) +@findex gnus-server-read-server +Browse the current server (@code{gnus-server-read-server}). + +@item q +@kindex q (Server) +@findex gnus-server-exit +Return to the group buffer (@code{gnus-server-exit}). + +@item k +@kindex k (Server) +@findex gnus-server-kill-server +Kill the current server (@code{gnus-server-kill-server}). + +@item y +@kindex y (Server) +@findex gnus-server-yank-server +Yank the previously killed server (@code{gnus-server-yank-server}). + +@item c +@kindex c (Server) +@findex gnus-server-copy-server +Copy the current server (@code{gnus-server-copy-server}). + +@item l +@kindex l (Server) +@findex gnus-server-list-servers +List all servers (@code{gnus-server-list-servers}). + +@item s +@kindex s (Server) +@findex gnus-server-scan-server +Request that the server scan its sources for new articles +(@code{gnus-server-scan-server}). This is mainly sensible with mail +servers. + +@item g +@kindex g (Server) +@findex gnus-server-regenerate-server +Request that the server regenerate all its data structures +(@code{gnus-server-regenerate-server}). This can be useful if you have +a mail back end that has gotten out of sync. + +@end table + + +@node Example Methods +@subsection Example Methods + +Most select methods are pretty simple and self-explanatory: + +@lisp +(nntp "news.funet.fi") +@end lisp + +Reading directly from the spool is even simpler: + +@lisp +(nnspool "") +@end lisp + +As you can see, the first element in a select method is the name of the +back end, and the second is the @dfn{address}, or @dfn{name}, if you +will. + +After these two elements, there may be an arbitrary number of +@code{(@var{variable} @var{form})} pairs. + +To go back to the first example---imagine that you want to read from +port 15 on that machine. This is what the select method should +look like then: + +@lisp +(nntp "news.funet.fi" (nntp-port-number 15)) +@end lisp + +You should read the documentation to each back end to find out what +variables are relevant, but here's an @code{nnmh} example: + +@code{nnmh} is a mail back end that reads a spool-like structure. Say +you have two structures that you wish to access: One is your private +mail spool, and the other is a public one. Here's the possible spec for +your private mail: + +@lisp +(nnmh "private" (nnmh-directory "~/private/mail/")) +@end lisp + +(This server is then called @samp{private}, but you may have guessed +that.) + +Here's the method for a public spool: + +@lisp +(nnmh "public" + (nnmh-directory "/usr/information/spool/") + (nnmh-get-new-mail nil)) +@end lisp + +@cindex proxy +@cindex firewall + +If you are behind a firewall and only have access to the @acronym{NNTP} +server from the firewall machine, you can instruct Gnus to @code{rlogin} +on the firewall machine and telnet from there to the @acronym{NNTP} server. +Doing this can be rather fiddly, but your virtual server definition +should probably look something like this: + +@lisp +(nntp "firewall" + (nntp-open-connection-function nntp-open-via-rlogin-and-telnet) + (nntp-via-address "the.firewall.machine") + (nntp-address "the.real.nntp.host") + (nntp-end-of-line "\n")) +@end lisp + +If you want to use the wonderful @code{ssh} program to provide a +compressed connection over the modem line, you could add the following +configuration to the example above: + +@lisp + (nntp-via-rlogin-command "ssh") +@end lisp + +See also @code{nntp-via-rlogin-command-switches}. + +If you're behind a firewall, but have direct access to the outside world +through a wrapper command like "runsocks", you could open a socksified +telnet connection to the news server as follows: + +@lisp +(nntp "outside" + (nntp-pre-command "runsocks") + (nntp-open-connection-function nntp-open-via-telnet) + (nntp-address "the.news.server") + (nntp-end-of-line "\n")) +@end lisp + +This means that you have to have set up @code{ssh-agent} correctly to +provide automatic authorization, of course. And to get a compressed +connection, you have to have the @samp{Compression} option in the +@code{ssh} @file{config} file. + + +@node Creating a Virtual Server +@subsection Creating a Virtual Server + +If you're saving lots of articles in the cache by using persistent +articles, you may want to create a virtual server to read the cache. + +First you need to add a new server. The @kbd{a} command does that. It +would probably be best to use @code{nnml} to read the cache. You +could also use @code{nnspool} or @code{nnmh}, though. + +Type @kbd{a nnml RET cache RET}. + +You should now have a brand new @code{nnml} virtual server called +@samp{cache}. You now need to edit it to have the right definitions. +Type @kbd{e} to edit the server. You'll be entered into a buffer that +will contain the following: + +@lisp +(nnml "cache") +@end lisp + +Change that to: + +@lisp +(nnml "cache" + (nnml-directory "~/News/cache/") + (nnml-active-file "~/News/cache/active")) +@end lisp + +Type @kbd{C-c C-c} to return to the server buffer. If you now press +@kbd{RET} over this virtual server, you should be entered into a browse +buffer, and you should be able to enter any of the groups displayed. + + +@node Server Variables +@subsection Server Variables +@cindex server variables +@cindex server parameters + +One sticky point when defining variables (both on back ends and in Emacs +in general) is that some variables are typically initialized from other +variables when the definition of the variables is being loaded. If you +change the ``base'' variable after the variables have been loaded, you +won't change the ``derived'' variables. + +This typically affects directory and file variables. For instance, +@code{nnml-directory} is @file{~/Mail/} by default, and all @code{nnml} +directory variables are initialized from that variable, so +@code{nnml-active-file} will be @file{~/Mail/active}. If you define a +new virtual @code{nnml} server, it will @emph{not} suffice to set just +@code{nnml-directory}---you have to explicitly set all the file +variables to be what you want them to be. For a complete list of +variables for each back end, see each back end's section later in this +manual, but here's an example @code{nnml} definition: + +@lisp +(nnml "public" + (nnml-directory "~/my-mail/") + (nnml-active-file "~/my-mail/active") + (nnml-newsgroups-file "~/my-mail/newsgroups")) +@end lisp + +Server variables are often called @dfn{server parameters}. + +@node Servers and Methods +@subsection Servers and Methods + +Wherever you would normally use a select method +(e.g. @code{gnus-secondary-select-method}, in the group select method, +when browsing a foreign server) you can use a virtual server name +instead. This could potentially save lots of typing. And it's nice all +over. + + +@node Unavailable Servers +@subsection Unavailable Servers + +If a server seems to be unreachable, Gnus will mark that server as +@code{denied}. That means that any subsequent attempt to make contact +with that server will just be ignored. ``It can't be opened,'' Gnus +will tell you, without making the least effort to see whether that is +actually the case or not. + +That might seem quite naughty, but it does make sense most of the time. +Let's say you have 10 groups subscribed to on server +@samp{nephelococcygia.com}. This server is located somewhere quite far +away from you and the machine is quite slow, so it takes 1 minute just +to find out that it refuses connection to you today. If Gnus were to +attempt to do that 10 times, you'd be quite annoyed, so Gnus won't +attempt to do that. Once it has gotten a single ``connection refused'', +it will regard that server as ``down''. + +So, what happens if the machine was only feeling unwell temporarily? +How do you test to see whether the machine has come up again? + +You jump to the server buffer (@pxref{Server Buffer}) and poke it +with the following commands: + +@table @kbd + +@item O +@kindex O (Server) +@findex gnus-server-open-server +Try to establish connection to the server on the current line +(@code{gnus-server-open-server}). + +@item C +@kindex C (Server) +@findex gnus-server-close-server +Close the connection (if any) to the server +(@code{gnus-server-close-server}). + +@item D +@kindex D (Server) +@findex gnus-server-deny-server +Mark the current server as unreachable +(@code{gnus-server-deny-server}). + +@item M-o +@kindex M-o (Server) +@findex gnus-server-open-all-servers +Open the connections to all servers in the buffer +(@code{gnus-server-open-all-servers}). + +@item M-c +@kindex M-c (Server) +@findex gnus-server-close-all-servers +Close the connections to all servers in the buffer +(@code{gnus-server-close-all-servers}). + +@item R +@kindex R (Server) +@findex gnus-server-remove-denials +Remove all marks to whether Gnus was denied connection from any servers +(@code{gnus-server-remove-denials}). + +@item L +@kindex L (Server) +@findex gnus-server-offline-server +Set server status to offline (@code{gnus-server-offline-server}). + +@end table + + +@node Getting News +@section Getting News +@cindex reading news +@cindex news back ends + +A newsreader is normally used for reading news. Gnus currently provides +only two methods of getting news---it can read from an @acronym{NNTP} server, +or it can read from a local spool. + +@menu +* NNTP:: Reading news from an @acronym{NNTP} server. +* News Spool:: Reading news from the local spool. +@end menu + + +@node NNTP +@subsection NNTP +@cindex nntp + +Subscribing to a foreign group from an @acronym{NNTP} server is rather easy. +You just specify @code{nntp} as method and the address of the @acronym{NNTP} +server as the, uhm, address. + +If the @acronym{NNTP} server is located at a non-standard port, setting the +third element of the select method to this port number should allow you +to connect to the right port. You'll have to edit the group info for +that (@pxref{Foreign Groups}). + +The name of the foreign group can be the same as a native group. In +fact, you can subscribe to the same group from as many different servers +you feel like. There will be no name collisions. + +The following variables can be used to create a virtual @code{nntp} +server: + +@table @code + +@item nntp-server-opened-hook +@vindex nntp-server-opened-hook +@cindex @sc{mode reader} +@cindex authinfo +@cindex authentication +@cindex nntp authentication +@findex nntp-send-authinfo +@findex nntp-send-mode-reader +is run after a connection has been made. It can be used to send +commands to the @acronym{NNTP} server after it has been contacted. By +default it sends the command @code{MODE READER} to the server with the +@code{nntp-send-mode-reader} function. This function should always be +present in this hook. + +@item nntp-authinfo-function +@vindex nntp-authinfo-function +@findex nntp-send-authinfo +@vindex nntp-authinfo-file +This function will be used to send @samp{AUTHINFO} to the @acronym{NNTP} +server. The default function is @code{nntp-send-authinfo}, which looks +through your @file{~/.authinfo} (or whatever you've set the +@code{nntp-authinfo-file} variable to) for applicable entries. If none +are found, it will prompt you for a login name and a password. The +format of the @file{~/.authinfo} file is (almost) the same as the +@code{ftp} @file{~/.netrc} file, which is defined in the @code{ftp} +manual page, but here are the salient facts: + +@enumerate +@item +The file contains one or more line, each of which define one server. + +@item +Each line may contain an arbitrary number of token/value pairs. + +The valid tokens include @samp{machine}, @samp{login}, @samp{password}, +@samp{default}. In addition Gnus introduces two new tokens, not present +in the original @file{.netrc}/@code{ftp} syntax, namely @samp{port} and +@samp{force}. (This is the only way the @file{.authinfo} file format +deviates from the @file{.netrc} file format.) @samp{port} is used to +indicate what port on the server the credentials apply to and +@samp{force} is explained below. + +@end enumerate + +Here's an example file: + +@example +machine news.uio.no login larsi password geheimnis +machine nntp.ifi.uio.no login larsi force yes +@end example + +The token/value pairs may appear in any order; @samp{machine} doesn't +have to be first, for instance. + +In this example, both login name and password have been supplied for the +former server, while the latter has only the login name listed, and the +user will be prompted for the password. The latter also has the +@samp{force} tag, which means that the authinfo will be sent to the +@var{nntp} server upon connection; the default (i.e., when there is not +@samp{force} tag) is to not send authinfo to the @var{nntp} server +until the @var{nntp} server asks for it. + +You can also add @samp{default} lines that will apply to all servers +that don't have matching @samp{machine} lines. + +@example +default force yes +@end example + +This will force sending @samp{AUTHINFO} commands to all servers not +previously mentioned. + +Remember to not leave the @file{~/.authinfo} file world-readable. + +@item nntp-server-action-alist +@vindex nntp-server-action-alist +This is a list of regexps to match on server types and actions to be +taken when matches are made. For instance, if you want Gnus to beep +every time you connect to innd, you could say something like: + +@lisp +(setq nntp-server-action-alist + '(("innd" (ding)))) +@end lisp + +You probably don't want to do that, though. + +The default value is + +@lisp +'(("nntpd 1\\.5\\.11t" + (remove-hook 'nntp-server-opened-hook + 'nntp-send-mode-reader))) +@end lisp + +This ensures that Gnus doesn't send the @code{MODE READER} command to +nntpd 1.5.11t, since that command chokes that server, I've been told. + +@item nntp-maximum-request +@vindex nntp-maximum-request +If the @acronym{NNTP} server doesn't support @acronym{NOV} headers, this back end +will collect headers by sending a series of @code{head} commands. To +speed things up, the back end sends lots of these commands without +waiting for reply, and then reads all the replies. This is controlled +by the @code{nntp-maximum-request} variable, and is 400 by default. If +your network is buggy, you should set this to 1. + +@item nntp-connection-timeout +@vindex nntp-connection-timeout +If you have lots of foreign @code{nntp} groups that you connect to +regularly, you're sure to have problems with @acronym{NNTP} servers not +responding properly, or being too loaded to reply within reasonable +time. This is can lead to awkward problems, which can be helped +somewhat by setting @code{nntp-connection-timeout}. This is an integer +that says how many seconds the @code{nntp} back end should wait for a +connection before giving up. If it is @code{nil}, which is the default, +no timeouts are done. + +@item nntp-nov-is-evil +@vindex nntp-nov-is-evil +If the @acronym{NNTP} server does not support @acronym{NOV}, you could set this +variable to @code{t}, but @code{nntp} usually checks automatically whether @acronym{NOV} +can be used. + +@item nntp-xover-commands +@vindex nntp-xover-commands +@cindex @acronym{NOV} +@cindex XOVER +List of strings used as commands to fetch @acronym{NOV} lines from a +server. The default value of this variable is @code{("XOVER" +"XOVERVIEW")}. + +@item nntp-nov-gap +@vindex nntp-nov-gap +@code{nntp} normally sends just one big request for @acronym{NOV} lines to +the server. The server responds with one huge list of lines. However, +if you have read articles 2-5000 in the group, and only want to read +article 1 and 5001, that means that @code{nntp} will fetch 4999 @acronym{NOV} +lines that you will not need. This variable says how +big a gap between two consecutive articles is allowed to be before the +@code{XOVER} request is split into several request. Note that if your +network is fast, setting this variable to a really small number means +that fetching will probably be slower. If this variable is @code{nil}, +@code{nntp} will never split requests. The default is 5. + +@item nntp-xref-number-is-evil +@vindex nntp-xref-number-is-evil +When Gnus refers to an article having the @code{Message-ID} that a user +specifies or having the @code{Message-ID} of the parent article of the +current one (@pxref{Finding the Parent}), Gnus sends a @code{HEAD} +command to the @acronym{NNTP} server to know where it is, and the server +returns the data containing the pairs of a group and an article number +in the @code{Xref} header. Gnus normally uses the article number to +refer to the article if the data shows that that article is in the +current group, while it uses the @code{Message-ID} otherwise. However, +some news servers, e.g., ones running Diablo, run multiple engines +having the same articles but article numbers are not kept synchronized +between them. In that case, the article number that appears in the +@code{Xref} header varies by which engine is chosen, so you cannot refer +to the parent article that is in the current group, for instance. If +you connect to such a server, set this variable to a non-@code{nil} +value, and Gnus never uses article numbers. For example: + +@lisp +(setq gnus-select-method + '(nntp "newszilla" + (nntp-address "newszilla.example.com") + (nntp-xref-number-is-evil t) + @dots{})) +@end lisp + +The default value of this server variable is @code{nil}. + +@item nntp-prepare-server-hook +@vindex nntp-prepare-server-hook +A hook run before attempting to connect to an @acronym{NNTP} server. + +@item nntp-record-commands +@vindex nntp-record-commands +If non-@code{nil}, @code{nntp} will log all commands it sends to the +@acronym{NNTP} server (along with a timestamp) in the @samp{*nntp-log*} +buffer. This is useful if you are debugging a Gnus/@acronym{NNTP} connection +that doesn't seem to work. + +@item nntp-open-connection-function +@vindex nntp-open-connection-function +It is possible to customize how the connection to the nntp server will +be opened. If you specify an @code{nntp-open-connection-function} +parameter, Gnus will use that function to establish the connection. +Six pre-made functions are supplied. These functions can be grouped in +two categories: direct connection functions (four pre-made), and +indirect ones (two pre-made). + +@item nntp-never-echoes-commands +@vindex nntp-never-echoes-commands +Non-@code{nil} means the nntp server never echoes commands. It is +reported that some nntps server doesn't echo commands. So, you may want +to set this to non-@code{nil} in the method for such a server setting +@code{nntp-open-connection-function} to @code{nntp-open-ssl-stream} for +example. The default value is @code{nil}. Note that the +@code{nntp-open-connection-functions-never-echo-commands} variable +overrides the @code{nil} value of this variable. + +@item nntp-open-connection-functions-never-echo-commands +@vindex nntp-open-connection-functions-never-echo-commands +List of functions that never echo commands. Add or set a function which +you set to @code{nntp-open-connection-function} to this list if it does +not echo commands. Note that a non-@code{nil} value of the +@code{nntp-never-echoes-commands} variable overrides this variable. The +default value is @code{(nntp-open-network-stream)}. + +@item nntp-prepare-post-hook +@vindex nntp-prepare-post-hook +A hook run just before posting an article. If there is no +@code{Message-ID} header in the article and the news server provides the +recommended ID, it will be added to the article before running this +hook. It is useful to make @code{Cancel-Lock} headers even if you +inhibit Gnus to add a @code{Message-ID} header, you could say: + +@lisp +(add-hook 'nntp-prepare-post-hook 'canlock-insert-header) +@end lisp + +Note that not all servers support the recommended ID. This works for +INN versions 2.3.0 and later, for instance. + +@end table + +@menu +* Direct Functions:: Connecting directly to the server. +* Indirect Functions:: Connecting indirectly to the server. +* Common Variables:: Understood by several connection functions. +@end menu + + +@node Direct Functions +@subsubsection Direct Functions +@cindex direct connection functions + +These functions are called direct because they open a direct connection +between your machine and the @acronym{NNTP} server. The behavior of these +functions is also affected by commonly understood variables +(@pxref{Common Variables}). + +@table @code +@findex nntp-open-network-stream +@item nntp-open-network-stream +This is the default, and simply connects to some port or other on the +remote system. + +@findex nntp-open-tls-stream +@item nntp-open-tls-stream +Opens a connection to a server over a @dfn{secure} channel. To use +this you must have @uref{http://www.gnu.org/software/gnutls/, GNUTLS} +installed. You then define a server as follows: + +@lisp +;; @r{"nntps" is port 563 and is predefined in our @file{/etc/services}} +;; @r{however, @samp{gnutls-cli -p} doesn't like named ports.} +;; +(nntp "snews.bar.com" + (nntp-open-connection-function nntp-open-tls-stream) + (nntp-port-number ) + (nntp-address "snews.bar.com")) +@end lisp + +@findex nntp-open-ssl-stream +@item nntp-open-ssl-stream +Opens a connection to a server over a @dfn{secure} channel. To use +this you must have @uref{http://www.openssl.org, OpenSSL} or +@uref{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL, SSLeay} installed. You +then define a server as follows: + +@lisp +;; @r{"snews" is port 563 and is predefined in our @file{/etc/services}} +;; @r{however, @samp{openssl s_client -port} doesn't like named ports.} +;; +(nntp "snews.bar.com" + (nntp-open-connection-function nntp-open-ssl-stream) + (nntp-port-number 563) + (nntp-address "snews.bar.com")) +@end lisp + +@findex nntp-open-telnet-stream +@item nntp-open-telnet-stream +Opens a connection to an @acronym{NNTP} server by simply @samp{telnet}'ing +it. You might wonder why this function exists, since we have the +default @code{nntp-open-network-stream} which would do the job. (One +of) the reason(s) is that if you are behind a firewall but have direct +connections to the outside world thanks to a command wrapper like +@code{runsocks}, you can use it like this: + +@lisp +(nntp "socksified" + (nntp-pre-command "runsocks") + (nntp-open-connection-function nntp-open-telnet-stream) + (nntp-address "the.news.server")) +@end lisp + +With the default method, you would need to wrap your whole Emacs +session, which is not a good idea. +@end table + + +@node Indirect Functions +@subsubsection Indirect Functions +@cindex indirect connection functions + +These functions are called indirect because they connect to an +intermediate host before actually connecting to the @acronym{NNTP} server. +All of these functions and related variables are also said to belong to +the ``via'' family of connection: they're all prefixed with ``via'' to make +things cleaner. The behavior of these functions is also affected by +commonly understood variables (@pxref{Common Variables}). + +@table @code +@item nntp-open-via-rlogin-and-telnet +@findex nntp-open-via-rlogin-and-telnet +Does an @samp{rlogin} on a remote system, and then does a @samp{telnet} +to the real @acronym{NNTP} server from there. This is useful for instance if +you need to connect to a firewall machine first. + +@code{nntp-open-via-rlogin-and-telnet}-specific variables: + +@table @code +@item nntp-via-rlogin-command +@vindex nntp-via-rlogin-command +Command used to log in on the intermediate host. The default is +@samp{rsh}, but @samp{ssh} is a popular alternative. + +@item nntp-via-rlogin-command-switches +@vindex nntp-via-rlogin-command-switches +List of strings to be used as the switches to +@code{nntp-via-rlogin-command}. The default is @code{nil}. If you use +@samp{ssh} for @code{nntp-via-rlogin-command}, you may set this to +@samp{("-C")} in order to compress all data connections, otherwise set +this to @samp{("-t" "-e" "none")} or @samp{("-C" "-t" "-e" "none")} if +the telnet command requires a pseudo-tty allocation on an intermediate +host. +@end table + +@item nntp-open-via-telnet-and-telnet +@findex nntp-open-via-telnet-and-telnet +Does essentially the same, but uses @samp{telnet} instead of +@samp{rlogin} to connect to the intermediate host. + +@code{nntp-open-via-telnet-and-telnet}-specific variables: + +@table @code +@item nntp-via-telnet-command +@vindex nntp-via-telnet-command +Command used to @code{telnet} the intermediate host. The default is +@samp{telnet}. + +@item nntp-via-telnet-switches +@vindex nntp-via-telnet-switches +List of strings to be used as the switches to the +@code{nntp-via-telnet-command} command. The default is @samp{("-8")}. + +@item nntp-via-user-password +@vindex nntp-via-user-password +Password to use when logging in on the intermediate host. + +@item nntp-via-envuser +@vindex nntp-via-envuser +If non-@code{nil}, the intermediate @code{telnet} session (client and +server both) will support the @code{ENVIRON} option and not prompt for +login name. This works for Solaris @code{telnet}, for instance. + +@item nntp-via-shell-prompt +@vindex nntp-via-shell-prompt +Regexp matching the shell prompt on the intermediate host. The default +is @samp{bash\\|\$ *\r?$\\|> *\r?}. + +@end table + +@end table + + +Here are some additional variables that are understood by all the above +functions: + +@table @code + +@item nntp-via-user-name +@vindex nntp-via-user-name +User name to use when connecting to the intermediate host. + +@item nntp-via-address +@vindex nntp-via-address +Address of the intermediate host to connect to. + +@end table + + +@node Common Variables +@subsubsection Common Variables + +The following variables affect the behavior of all, or several of the +pre-made connection functions. When not specified, all functions are +affected (the values of the following variables will be used as the +default if each virtual @code{nntp} server doesn't specify those server +variables individually). + +@table @code + +@item nntp-pre-command +@vindex nntp-pre-command +A command wrapper to use when connecting through a non native +connection function (all except @code{nntp-open-network-stream}, +@code{nntp-open-tls-stream}, and @code{nntp-open-ssl-stream}). This is +where you would put a @samp{SOCKS} wrapper for instance. + +@item nntp-address +@vindex nntp-address +The address of the @acronym{NNTP} server. + +@item nntp-port-number +@vindex nntp-port-number +Port number to connect to the @acronym{NNTP} server. The default is +@samp{nntp}. If you use @acronym{NNTP} over +@acronym{TLS}/@acronym{SSL}, you may want to use integer ports rather +than named ports (i.e, use @samp{563} instead of @samp{snews} or +@samp{nntps}), because external @acronym{TLS}/@acronym{SSL} tools may +not work with named ports. + +@item nntp-end-of-line +@vindex nntp-end-of-line +String to use as end-of-line marker when talking to the @acronym{NNTP} +server. This is @samp{\r\n} by default, but should be @samp{\n} when +using a non native connection function. + +@item nntp-telnet-command +@vindex nntp-telnet-command +Command to use when connecting to the @acronym{NNTP} server through +@samp{telnet}. This is @emph{not} for an intermediate host. This is +just for the real @acronym{NNTP} server. The default is +@samp{telnet}. + +@item nntp-telnet-switches +@vindex nntp-telnet-switches +A list of switches to pass to @code{nntp-telnet-command}. The default +is @samp{("-8")}. + +@end table + + +@node News Spool +@subsection News Spool +@cindex nnspool +@cindex news spool + +Subscribing to a foreign group from the local spool is extremely easy, +and might be useful, for instance, to speed up reading groups that +contain very big articles---@samp{alt.binaries.pictures.furniture}, for +instance. + +Anyway, you just specify @code{nnspool} as the method and @code{""} (or +anything else) as the address. + +If you have access to a local spool, you should probably use that as the +native select method (@pxref{Finding the News}). It is normally faster +than using an @code{nntp} select method, but might not be. It depends. +You just have to try to find out what's best at your site. + +@table @code + +@item nnspool-inews-program +@vindex nnspool-inews-program +Program used to post an article. + +@item nnspool-inews-switches +@vindex nnspool-inews-switches +Parameters given to the inews program when posting an article. + +@item nnspool-spool-directory +@vindex nnspool-spool-directory +Where @code{nnspool} looks for the articles. This is normally +@file{/usr/spool/news/}. + +@item nnspool-nov-directory +@vindex nnspool-nov-directory +Where @code{nnspool} will look for @acronym{NOV} files. This is normally@* +@file{/usr/spool/news/over.view/}. + +@item nnspool-lib-dir +@vindex nnspool-lib-dir +Where the news lib dir is (@file{/usr/lib/news/} by default). + +@item nnspool-active-file +@vindex nnspool-active-file +The name of the active file. + +@item nnspool-newsgroups-file +@vindex nnspool-newsgroups-file +The name of the group descriptions file. + +@item nnspool-history-file +@vindex nnspool-history-file +The name of the news history file. + +@item nnspool-active-times-file +@vindex nnspool-active-times-file +The name of the active date file. + +@item nnspool-nov-is-evil +@vindex nnspool-nov-is-evil +If non-@code{nil}, @code{nnspool} won't try to use any @acronym{NOV} files +that it finds. + +@item nnspool-sift-nov-with-sed +@vindex nnspool-sift-nov-with-sed +@cindex sed +If non-@code{nil}, which is the default, use @code{sed} to get the +relevant portion from the overview file. If @code{nil}, +@code{nnspool} will load the entire file into a buffer and process it +there. + +@end table + + +@node Getting Mail +@section Getting Mail +@cindex reading mail +@cindex mail + +Reading mail with a newsreader---isn't that just plain WeIrD? But of +course. + +@menu +* Mail in a Newsreader:: Important introductory notes. +* Getting Started Reading Mail:: A simple cookbook example. +* Splitting Mail:: How to create mail groups. +* Mail Sources:: How to tell Gnus where to get mail from. +* Mail Back End Variables:: Variables for customizing mail handling. +* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail. +* Group Mail Splitting:: Use group customize to drive mail splitting. +* Incorporating Old Mail:: What about the old mail you have? +* Expiring Mail:: Getting rid of unwanted mail. +* Washing Mail:: Removing cruft from the mail you get. +* Duplicates:: Dealing with duplicated mail. +* Not Reading Mail:: Using mail back ends for reading other files. +* Choosing a Mail Back End:: Gnus can read a variety of mail formats. +@end menu + + +@node Mail in a Newsreader +@subsection Mail in a Newsreader + +If you are used to traditional mail readers, but have decided to switch +to reading mail with Gnus, you may find yourself experiencing something +of a culture shock. + +Gnus does not behave like traditional mail readers. If you want to make +it behave that way, you can, but it's an uphill battle. + +Gnus, by default, handles all its groups using the same approach. This +approach is very newsreaderly---you enter a group, see the new/unread +messages, and when you read the messages, they get marked as read, and +you don't see them any more. (Unless you explicitly ask for them.) + +In particular, you do not do anything explicitly to delete messages. + +Does this mean that all the messages that have been marked as read are +deleted? How awful! + +But, no, it means that old messages are @dfn{expired} according to some +scheme or other. For news messages, the expire process is controlled by +the news administrator; for mail, the expire process is controlled by +you. The expire process for mail is covered in depth in @ref{Expiring +Mail}. + +What many Gnus users find, after using it a while for both news and +mail, is that the transport mechanism has very little to do with how +they want to treat a message. + +Many people subscribe to several mailing lists. These are transported +via @acronym{SMTP}, and are therefore mail. But we might go for weeks without +answering, or even reading these messages very carefully. We may not +need to save them because if we should need to read one again, they are +archived somewhere else. + +Some people have local news groups which have only a handful of readers. +These are transported via @acronym{NNTP}, and are therefore news. But we may need +to read and answer a large fraction of the messages very carefully in +order to do our work. And there may not be an archive, so we may need +to save the interesting messages the same way we would personal mail. + +The important distinction turns out to be not the transport mechanism, +but other factors such as how interested we are in the subject matter, +or how easy it is to retrieve the message if we need to read it again. + +Gnus provides many options for sorting mail into ``groups'' which behave +like newsgroups, and for treating each group (whether mail or news) +differently. + +Some users never get comfortable using the Gnus (ahem) paradigm and wish +that Gnus should grow up and be a male, er, mail reader. It is possible +to whip Gnus into a more mailreaderly being, but, as said before, it's +not easy. People who prefer proper mail readers should try @sc{vm} +instead, which is an excellent, and proper, mail reader. + +I don't mean to scare anybody off, but I want to make it clear that you +may be required to learn a new way of thinking about messages. After +you've been subjected to The Gnus Way, you will come to love it. I can +guarantee it. (At least the guy who sold me the Emacs Subliminal +Brain-Washing Functions that I've put into Gnus did guarantee it. You +Will Be Assimilated. You Love Gnus. You Love The Gnus Mail Way. +You Do.) + + +@node Getting Started Reading Mail +@subsection Getting Started Reading Mail + +It's quite easy to use Gnus to read your new mail. You just plonk the +mail back end of your choice into @code{gnus-secondary-select-methods}, +and things will happen automatically. + +For instance, if you want to use @code{nnml} (which is a ``one file per +mail'' back end), you could put the following in your @file{~/.gnus.el} file: + +@lisp +(setq gnus-secondary-select-methods '((nnml ""))) +@end lisp + +Now, the next time you start Gnus, this back end will be queried for new +articles, and it will move all the messages in your spool file to its +directory, which is @file{~/Mail/} by default. The new group that will +be created (@samp{mail.misc}) will be subscribed, and you can read it +like any other group. + +You will probably want to split the mail into several groups, though: + +@lisp +(setq nnmail-split-methods + '(("junk" "^From:.*Lars Ingebrigtsen") + ("crazy" "^Subject:.*die\\|^Organization:.*flabby") + ("other" ""))) +@end lisp + +This will result in three new @code{nnml} mail groups being created: +@samp{nnml:junk}, @samp{nnml:crazy}, and @samp{nnml:other}. All the +mail that doesn't fit into the first two groups will be placed in the +last group. + +This should be sufficient for reading mail with Gnus. You might want to +give the other sections in this part of the manual a perusal, though. +Especially @pxref{Choosing a Mail Back End} and @pxref{Expiring Mail}. + + +@node Splitting Mail +@subsection Splitting Mail +@cindex splitting mail +@cindex mail splitting +@cindex mail filtering (splitting) + +@vindex nnmail-split-methods +The @code{nnmail-split-methods} variable says how the incoming mail is +to be split into groups. + +@lisp +(setq nnmail-split-methods + '(("mail.junk" "^From:.*Lars Ingebrigtsen") + ("mail.crazy" "^Subject:.*die\\|^Organization:.*flabby") + ("mail.other" ""))) +@end lisp + +This variable is a list of lists, where the first element of each of +these lists is the name of the mail group (they do not have to be called +something beginning with @samp{mail}, by the way), and the second +element is a regular expression used on the header of each mail to +determine if it belongs in this mail group. The first string may +contain @samp{\\1} forms, like the ones used by @code{replace-match} to +insert sub-expressions from the matched text. For instance: + +@lisp +("list.\\1" "From:.* \\(.*\\)-list@@majordomo.com") +@end lisp + +@noindent +In that case, @code{nnmail-split-lowercase-expanded} controls whether +the inserted text should be made lowercase. @xref{Fancy Mail Splitting}. + +The second element can also be a function. In that case, it will be +called narrowed to the headers with the first element of the rule as the +argument. It should return a non-@code{nil} value if it thinks that the +mail belongs in that group. + +@cindex @samp{bogus} group +The last of these groups should always be a general one, and the regular +expression should @emph{always} be @samp{""} so that it matches any mails +that haven't been matched by any of the other regexps. (These rules are +processed from the beginning of the alist toward the end. The first rule +to make a match will ``win'', unless you have crossposting enabled. In +that case, all matching rules will ``win''.) If no rule matched, the mail +will end up in the @samp{bogus} group. When new groups are created by +splitting mail, you may want to run @code{gnus-group-find-new-groups} to +see the new groups. This also applies to the @samp{bogus} group. + +If you like to tinker with this yourself, you can set this variable to a +function of your choice. This function will be called without any +arguments in a buffer narrowed to the headers of an incoming mail +message. The function should return a list of group names that it +thinks should carry this mail message. + +Note that the mail back ends are free to maul the poor, innocent, +incoming headers all they want to. They all add @code{Lines} headers; +some add @code{X-Gnus-Group} headers; most rename the Unix mbox +@code{From} line to something else. + +@vindex nnmail-crosspost +The mail back ends all support cross-posting. If several regexps match, +the mail will be ``cross-posted'' to all those groups. +@code{nnmail-crosspost} says whether to use this mechanism or not. Note +that no articles are crossposted to the general (@samp{""}) group. + +@vindex nnmail-crosspost-link-function +@cindex crosspost +@cindex links +@code{nnmh} and @code{nnml} makes crossposts by creating hard links to +the crossposted articles. However, not all file systems support hard +links. If that's the case for you, set +@code{nnmail-crosspost-link-function} to @code{copy-file}. (This +variable is @code{add-name-to-file} by default.) + +@kindex M-x nnmail-split-history +@findex nnmail-split-history +If you wish to see where the previous mail split put the messages, you +can use the @kbd{M-x nnmail-split-history} command. If you wish to see +where re-spooling messages would put the messages, you can use +@code{gnus-summary-respool-trace} and related commands (@pxref{Mail +Group Commands}). + +@vindex nnmail-split-header-length-limit +Header lines longer than the value of +@code{nnmail-split-header-length-limit} are excluded from the split +function. + +@vindex nnmail-mail-splitting-decodes +@vindex nnmail-mail-splitting-charset +By default, splitting does not decode headers, so you can not match on +non-@acronym{ASCII} strings. But it is useful if you want to match +articles based on the raw header data. To enable it, set the +@code{nnmail-mail-splitting-decodes} variable to a non-@code{nil} value. +In addition, the value of the @code{nnmail-mail-splitting-charset} +variable is used for decoding non-@acronym{MIME} encoded string when +@code{nnmail-mail-splitting-decodes} is non-@code{nil}. The default +value is @code{nil} which means not to decode non-@acronym{MIME} encoded +string. A suitable value for you will be @code{undecided} or be the +charset used normally in mails you are interested in. + +@vindex nnmail-resplit-incoming +By default, splitting is performed on all incoming messages. If you +specify a @code{directory} entry for the variable @code{mail-sources} +(@pxref{Mail Source Specifiers}), however, then splitting does +@emph{not} happen by default. You can set the variable +@code{nnmail-resplit-incoming} to a non-@code{nil} value to make +splitting happen even in this case. (This variable has no effect on +other kinds of entries.) + +Gnus gives you all the opportunity you could possibly want for shooting +yourself in the foot. Let's say you create a group that will contain +all the mail you get from your boss. And then you accidentally +unsubscribe from the group. Gnus will still put all the mail from your +boss in the unsubscribed group, and so, when your boss mails you ``Have +that report ready by Monday or you're fired!'', you'll never see it and, +come Tuesday, you'll still believe that you're gainfully employed while +you really should be out collecting empty bottles to save up for next +month's rent money. + + +@node Mail Sources +@subsection Mail Sources + +Mail can be gotten from many different sources---the mail spool, from +a @acronym{POP} mail server, from a procmail directory, or from a +maildir, for instance. + +@menu +* Mail Source Specifiers:: How to specify what a mail source is. +* Mail Source Customization:: Some variables that influence things. +* Fetching Mail:: Using the mail source specifiers. +@end menu + + +@node Mail Source Specifiers +@subsubsection Mail Source Specifiers +@cindex POP +@cindex mail server +@cindex procmail +@cindex mail spool +@cindex mail source + +You tell Gnus how to fetch mail by setting @code{mail-sources} +(@pxref{Fetching Mail}) to a @dfn{mail source specifier}. + +Here's an example: + +@lisp +(pop :server "pop3.mailserver.com" :user "myname") +@end lisp + +As can be observed, a mail source specifier is a list where the first +element is a @dfn{mail source type}, followed by an arbitrary number of +@dfn{keywords}. Keywords that are not explicitly specified are given +default values. + +The following mail source types are available: + +@table @code +@item file +Get mail from a single file; typically from the mail spool. + +Keywords: + +@table @code +@item :path +The file name. Defaults to the value of the @env{MAIL} +environment variable or the value of @code{rmail-spool-directory} +(usually something like @file{/usr/mail/spool/user-name}). + +@item :prescript +@itemx :postscript +Script run before/after fetching mail. +@end table + +An example file mail source: + +@lisp +(file :path "/usr/spool/mail/user-name") +@end lisp + +Or using the default file name: + +@lisp +(file) +@end lisp + +If the mail spool file is not located on the local machine, it's best +to use @acronym{POP} or @acronym{IMAP} or the like to fetch the mail. +You can not use ange-ftp file names here---it has no way to lock the +mail spool while moving the mail. + +If it's impossible to set up a proper server, you can use ssh instead. + +@lisp +(setq mail-sources + '((file :prescript "ssh host bin/getmail >%t"))) +@end lisp + +The @samp{getmail} script would look something like the following: + +@example +#!/bin/sh +# getmail - move mail from spool to stdout +# flu@@iki.fi + +MOVEMAIL=/usr/lib/emacs/20.3/i386-redhat-linux/movemail +TMP=$HOME/Mail/tmp +rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP +@end example + +Alter this script to fit the @samp{movemail} and temporary +file you want to use. + + +@item directory +@vindex nnmail-scan-directory-mail-source-once +Get mail from several files in a directory. This is typically used +when you have procmail split the incoming mail into several files. +That is, there is a one-to-one correspondence between files in that +directory and groups, so that mail from the file @file{foo.bar.spool} +will be put in the group @code{foo.bar}. (You can change the suffix +to be used instead of @code{.spool}.) Setting +@code{nnmail-scan-directory-mail-source-once} to non-@code{nil} forces +Gnus to scan the mail source only once. This is particularly useful +if you want to scan mail groups at a specified level. + +@vindex nnmail-resplit-incoming +There is also the variable @code{nnmail-resplit-incoming}, if you set +that to a non-@code{nil} value, then the normal splitting process is +applied to all the files from the directory, @ref{Splitting Mail}. + +Keywords: + +@table @code +@item :path +The name of the directory where the files are. There is no default +value. + +@item :suffix +Only files ending with this suffix are used. The default is +@samp{.spool}. + +@item :predicate +Only files that have this predicate return non-@code{nil} are returned. +The default is @code{identity}. This is used as an additional +filter---only files that have the right suffix @emph{and} satisfy this +predicate are considered. + +@item :prescript +@itemx :postscript +Script run before/after fetching mail. + +@end table + +An example directory mail source: + +@lisp +(directory :path "/home/user-name/procmail-dir/" + :suffix ".prcml") +@end lisp + +@item pop +Get mail from a @acronym{POP} server. + +Keywords: + +@table @code +@item :server +The name of the @acronym{POP} server. The default is taken from the +@env{MAILHOST} environment variable. + +@item :port +The port number of the @acronym{POP} server. This can be a number (eg, +@samp{:port 1234}) or a string (eg, @samp{:port "pop3"}). If it is a +string, it should be a service name as listed in @file{/etc/services} on +Unix systems. The default is @samp{"pop3"}. On some systems you might +need to specify it as @samp{"pop-3"} instead. + +@item :user +The user name to give to the @acronym{POP} server. The default is the login +name. + +@item :password +The password to give to the @acronym{POP} server. If not specified, +the user is prompted. + +@item :program +The program to use to fetch mail from the @acronym{POP} server. This +should be a @code{format}-like string. Here's an example: + +@example +fetchmail %u@@%s -P %p %t +@end example + +The valid format specifier characters are: + +@table @samp +@item t +The name of the file the mail is to be moved to. This must always be +included in this string. + +@item s +The name of the server. + +@item P +The port number of the server. + +@item u +The user name to use. + +@item p +The password to use. +@end table + +The values used for these specs are taken from the values you give the +corresponding keywords. + +@item :prescript +A script to be run before fetching the mail. The syntax is the same as +the @code{:program} keyword. This can also be a function to be run. + +@item :postscript +A script to be run after fetching the mail. The syntax is the same as +the @code{:program} keyword. This can also be a function to be run. + +@item :function +The function to use to fetch mail from the @acronym{POP} server. The +function is called with one parameter---the name of the file where the +mail should be moved to. + +@item :authentication +This can be either the symbol @code{password} or the symbol @code{apop} +and says what authentication scheme to use. The default is +@code{password}. + +@end table + +@vindex pop3-movemail +@vindex pop3-leave-mail-on-server +If the @code{:program} and @code{:function} keywords aren't specified, +@code{pop3-movemail} will be used. If @code{pop3-leave-mail-on-server} +is non-@code{nil} the mail is to be left on the @acronym{POP} server +after fetching when using @code{pop3-movemail}. Note that POP servers +maintain no state information between sessions, so what the client +believes is there and what is actually there may not match up. If they +do not, then you may get duplicate mails or the whole thing can fall +apart and leave you with a corrupt mailbox. + +Here are some examples for getting mail from a @acronym{POP} server. +Fetch from the default @acronym{POP} server, using the default user +name, and default fetcher: + +@lisp +(pop) +@end lisp + +Fetch from a named server with a named user and password: + +@lisp +(pop :server "my.pop.server" + :user "user-name" :password "secret") +@end lisp + +Use @samp{movemail} to move the mail: + +@lisp +(pop :program "movemail po:%u %t %p") +@end lisp + +@item maildir +Get mail from a maildir. This is a type of mailbox that is supported by +at least qmail and postfix, where each file in a special directory +contains exactly one mail. + +Keywords: + +@table @code +@item :path +The name of the directory where the mails are stored. The default is +taken from the @env{MAILDIR} environment variable or +@file{~/Maildir/}. +@item :subdirs +The subdirectories of the Maildir. The default is +@samp{("new" "cur")}. + +@c If you sometimes look at your mail through a pop3 daemon before fetching +@c them with Gnus, you may also have to fetch your mails from the +@c @code{cur} directory inside the maildir, like in the first example +@c below. + +You can also get mails from remote hosts (because maildirs don't suffer +from locking problems). + +@end table + +Two example maildir mail sources: + +@lisp +(maildir :path "/home/user-name/Maildir/" + :subdirs ("cur" "new")) +@end lisp + +@lisp +(maildir :path "/user@@remotehost.org:~/Maildir/" + :subdirs ("new")) +@end lisp + +@item imap +Get mail from a @acronym{IMAP} server. If you don't want to use +@acronym{IMAP} as intended, as a network mail reading protocol (ie +with nnimap), for some reason or other, Gnus let you treat it similar +to a @acronym{POP} server and fetches articles from a given +@acronym{IMAP} mailbox. @xref{IMAP}, for more information. + +Note that for the Kerberos, GSSAPI, @acronym{TLS}/@acronym{SSL} and STARTTLS support you +may need external programs and libraries, @xref{IMAP}. + +Keywords: + +@table @code +@item :server +The name of the @acronym{IMAP} server. The default is taken from the +@env{MAILHOST} environment variable. + +@item :port +The port number of the @acronym{IMAP} server. The default is @samp{143}, or +@samp{993} for @acronym{TLS}/@acronym{SSL} connections. + +@item :user +The user name to give to the @acronym{IMAP} server. The default is the login +name. + +@item :password +The password to give to the @acronym{IMAP} server. If not specified, the user is +prompted. + +@item :stream +What stream to use for connecting to the server, this is one of the +symbols in @code{imap-stream-alist}. Right now, this means +@samp{gssapi}, @samp{kerberos4}, @samp{starttls}, @samp{tls}, +@samp{ssl}, @samp{shell} or the default @samp{network}. + +@item :authentication +Which authenticator to use for authenticating to the server, this is +one of the symbols in @code{imap-authenticator-alist}. Right now, +this means @samp{gssapi}, @samp{kerberos4}, @samp{digest-md5}, +@samp{cram-md5}, @samp{anonymous} or the default @samp{login}. + +@item :program +When using the `shell' :stream, the contents of this variable is +mapped into the @code{imap-shell-program} variable. This should be a +@code{format}-like string (or list of strings). Here's an example: + +@example +ssh %s imapd +@end example + +The valid format specifier characters are: + +@table @samp +@item s +The name of the server. + +@item l +User name from @code{imap-default-user}. + +@item p +The port number of the server. +@end table + +The values used for these specs are taken from the values you give the +corresponding keywords. + +@item :mailbox +The name of the mailbox to get mail from. The default is @samp{INBOX} +which normally is the mailbox which receive incoming mail. + +@item :predicate +The predicate used to find articles to fetch. The default, @samp{UNSEEN +UNDELETED}, is probably the best choice for most people, but if you +sometimes peek in your mailbox with a @acronym{IMAP} client and mark some +articles as read (or; SEEN) you might want to set this to @samp{1:*}. +Then all articles in the mailbox is fetched, no matter what. For a +complete list of predicates, see RFC 2060 section 6.4.4. + +@item :fetchflag +How to flag fetched articles on the server, the default @samp{\Deleted} +will mark them as deleted, an alternative would be @samp{\Seen} which +would simply mark them as read. These are the two most likely choices, +but more flags are defined in RFC 2060 section 2.3.2. + +@item :dontexpunge +If non-@code{nil}, don't remove all articles marked as deleted in the +mailbox after finishing the fetch. + +@end table + +An example @acronym{IMAP} mail source: + +@lisp +(imap :server "mail.mycorp.com" + :stream kerberos4 + :fetchflag "\\Seen") +@end lisp + +@item webmail +Get mail from a webmail server, such as @uref{http://www.hotmail.com/}, +@uref{http://webmail.netscape.com/}, @uref{http://www.netaddress.com/}, +@uref{http://mail.yahoo.com/}. + +NOTE: Webmail largely depends on cookies. A "one-line-cookie" patch is +required for url "4.0pre.46". + +WARNING: Mails may be lost. NO WARRANTY. + +Keywords: + +@table @code +@item :subtype +The type of the webmail server. The default is @code{hotmail}. The +alternatives are @code{netscape}, @code{netaddress}, @code{my-deja}. + +@item :user +The user name to give to the webmail server. The default is the login +name. + +@item :password +The password to give to the webmail server. If not specified, the user is +prompted. + +@item :dontexpunge +If non-@code{nil}, only fetch unread articles and don't move them to +trash folder after finishing the fetch. + +@end table + +An example webmail source: + +@lisp +(webmail :subtype 'hotmail + :user "user-name" + :password "secret") +@end lisp +@end table + +@table @dfn +@item Common Keywords +Common keywords can be used in any type of mail source. + +Keywords: + +@table @code +@item :plugged +If non-@code{nil}, fetch the mail even when Gnus is unplugged. If you +use directory source to get mail, you can specify it as in this +example: + +@lisp +(setq mail-sources + '((directory :path "/home/pavel/.Spool/" + :suffix "" + :plugged t))) +@end lisp + +Gnus will then fetch your mail even when you are unplugged. This is +useful when you use local mail and news. + +@end table +@end table + +@subsubsection Function Interface + +Some of the above keywords specify a Lisp function to be executed. +For each keyword @code{:foo}, the Lisp variable @code{foo} is bound to +the value of the keyword while the function is executing. For example, +consider the following mail-source setting: + +@lisp +(setq mail-sources '((pop :user "jrl" + :server "pophost" :function fetchfunc))) +@end lisp + +While the function @code{fetchfunc} is executing, the symbol @code{user} +is bound to @code{"jrl"}, and the symbol @code{server} is bound to +@code{"pophost"}. The symbols @code{port}, @code{password}, +@code{program}, @code{prescript}, @code{postscript}, @code{function}, +and @code{authentication} are also bound (to their default values). + +See above for a list of keywords for each type of mail source. + + +@node Mail Source Customization +@subsubsection Mail Source Customization + +The following is a list of variables that influence how the mail is +fetched. You would normally not need to set or change any of these +variables. + +@table @code +@item mail-source-crash-box +@vindex mail-source-crash-box +File where mail will be stored while processing it. The default is@* +@file{~/.emacs-mail-crash-box}. + +@item mail-source-delete-incoming +@vindex mail-source-delete-incoming +If non-@code{nil}, delete incoming files after handling them. If +@code{t}, delete the files immediately, if @code{nil}, never delete any +files. If a positive number, delete files older than number of days +(This will only happen, when receiving new mail). You may also set +@code{mail-source-delete-incoming} to @code{nil} and call +@code{mail-source-delete-old-incoming} from a hook or interactively. + +@item mail-source-delete-old-incoming-confirm +@vindex mail-source-delete-old-incoming-confirm +If non-@code{nil}, ask for confirmation before deleting old incoming +files. This variable only applies when +@code{mail-source-delete-incoming} is a positive number. + +@item mail-source-ignore-errors +@vindex mail-source-ignore-errors +If non-@code{nil}, ignore errors when reading mail from a mail source. + +@item mail-source-directory +@vindex mail-source-directory +Directory where incoming mail source files (if any) will be stored. The +default is @file{~/Mail/}. At present, the only thing this is used for +is to say where the incoming files will be stored if the variable +@code{mail-source-delete-incoming} is @code{nil} or a number. + +@item mail-source-incoming-file-prefix +@vindex mail-source-incoming-file-prefix +Prefix for file name for storing incoming mail. The default is +@file{Incoming}, in which case files will end up with names like +@file{Incoming30630D_} or @file{Incoming298602ZD}. This is really only +relevant if @code{mail-source-delete-incoming} is @code{nil} or a +number. + +@item mail-source-default-file-modes +@vindex mail-source-default-file-modes +All new mail files will get this file mode. The default is 384. + +@item mail-source-movemail-program +@vindex mail-source-movemail-program +If non-@code{nil}, name of program for fetching new mail. If +@code{nil}, @code{movemail} in @var{exec-directory}. + +@end table + + +@node Fetching Mail +@subsubsection Fetching Mail + +@vindex mail-sources +@vindex nnmail-spool-file +The way to actually tell Gnus where to get new mail from is to set +@code{mail-sources} to a list of mail source specifiers +(@pxref{Mail Source Specifiers}). + +If this variable (and the obsolescent @code{nnmail-spool-file}) is +@code{nil}, the mail back ends will never attempt to fetch mail by +themselves. + +If you want to fetch mail both from your local spool as well as a +@acronym{POP} mail server, you'd say something like: + +@lisp +(setq mail-sources + '((file) + (pop :server "pop3.mail.server" + :password "secret"))) +@end lisp + +Or, if you don't want to use any of the keyword defaults: + +@lisp +(setq mail-sources + '((file :path "/var/spool/mail/user-name") + (pop :server "pop3.mail.server" + :user "user-name" + :port "pop3" + :password "secret"))) +@end lisp + + +When you use a mail back end, Gnus will slurp all your mail from your +inbox and plonk it down in your home directory. Gnus doesn't move any +mail if you're not using a mail back end---you have to do a lot of magic +invocations first. At the time when you have finished drawing the +pentagram, lightened the candles, and sacrificed the goat, you really +shouldn't be too surprised when Gnus moves your mail. + + + +@node Mail Back End Variables +@subsection Mail Back End Variables + +These variables are (for the most part) pertinent to all the various +mail back ends. + +@table @code +@vindex nnmail-read-incoming-hook +@item nnmail-read-incoming-hook +The mail back ends all call this hook after reading new mail. You can +use this hook to notify any mail watch programs, if you want to. + +@vindex nnmail-split-hook +@item nnmail-split-hook +@findex gnus-article-decode-encoded-words +@cindex RFC 1522 decoding +@cindex RFC 2047 decoding +Hook run in the buffer where the mail headers of each message is kept +just before the splitting based on these headers is done. The hook is +free to modify the buffer contents in any way it sees fit---the buffer +is discarded after the splitting has been done, and no changes performed +in the buffer will show up in any files. +@code{gnus-article-decode-encoded-words} is one likely function to add +to this hook. + +@vindex nnmail-pre-get-new-mail-hook +@vindex nnmail-post-get-new-mail-hook +@item nnmail-pre-get-new-mail-hook +@itemx nnmail-post-get-new-mail-hook +These are two useful hooks executed when treating new incoming +mail---@code{nnmail-pre-get-new-mail-hook} (is called just before +starting to handle the new mail) and +@code{nnmail-post-get-new-mail-hook} (is called when the mail handling +is done). Here's and example of using these two hooks to change the +default file modes the new mail files get: + +@lisp +(add-hook 'nnmail-pre-get-new-mail-hook + (lambda () (set-default-file-modes 511))) + +(add-hook 'nnmail-post-get-new-mail-hook + (lambda () (set-default-file-modes 551))) +@end lisp + +@item nnmail-use-long-file-names +@vindex nnmail-use-long-file-names +If non-@code{nil}, the mail back ends will use long file and directory +names. Groups like @samp{mail.misc} will end up in directories +(assuming use of @code{nnml} back end) or files (assuming use of +@code{nnfolder} back end) like @file{mail.misc}. If it is @code{nil}, +the same group will end up in @file{mail/misc}. + +@item nnmail-delete-file-function +@vindex nnmail-delete-file-function +@findex delete-file +Function called to delete files. It is @code{delete-file} by default. + +@item nnmail-cache-accepted-message-ids +@vindex nnmail-cache-accepted-message-ids +If non-@code{nil}, put the @code{Message-ID}s of articles imported into +the back end (via @code{Gcc}, for instance) into the mail duplication +discovery cache. The default is @code{nil}. + +@item nnmail-cache-ignore-groups +@vindex nnmail-cache-ignore-groups +This can be a regular expression or a list of regular expressions. +Group names that match any of the regular expressions will never be +recorded in the @code{Message-ID} cache. + +This can be useful, for example, when using Fancy Splitting +(@pxref{Fancy Mail Splitting}) together with the function +@code{nnmail-split-fancy-with-parent}. + +@end table + + +@node Fancy Mail Splitting +@subsection Fancy Mail Splitting +@cindex mail splitting +@cindex fancy mail splitting + +@vindex nnmail-split-fancy +@findex nnmail-split-fancy +If the rather simple, standard method for specifying how to split mail +doesn't allow you to do what you want, you can set +@code{nnmail-split-methods} to @code{nnmail-split-fancy}. Then you can +play with the @code{nnmail-split-fancy} variable. + +Let's look at an example value of this variable first: + +@lisp +;; @r{Messages from the mailer daemon are not crossposted to any of} +;; @r{the ordinary groups. Warnings are put in a separate group} +;; @r{from real errors.} +(| ("from" mail (| ("subject" "warn.*" "mail.warning") + "mail.misc")) + ;; @r{Non-error messages are crossposted to all relevant} + ;; @r{groups, but we don't crosspost between the group for the} + ;; @r{(ding) list and the group for other (ding) related mail.} + (& (| (any "ding@@ifi\\.uio\\.no" "ding.list") + ("subject" "ding" "ding.misc")) + ;; @r{Other mailing lists@dots{}} + (any "procmail@@informatik\\.rwth-aachen\\.de" "procmail.list") + (any "SmartList@@informatik\\.rwth-aachen\\.de" "SmartList.list") + ;; @r{Both lists below have the same suffix, so prevent} + ;; @r{cross-posting to mkpkg.list of messages posted only to} + ;; @r{the bugs- list, but allow cross-posting when the} + ;; @r{message was really cross-posted.} + (any "bugs-mypackage@@somewhere" "mypkg.bugs") + (any "mypackage@@somewhere" - "bugs-mypackage" "mypkg.list") + ;; @r{People@dots{}} + (any "larsi@@ifi\\.uio\\.no" "people.Lars_Magne_Ingebrigtsen")) + ;; @r{Unmatched mail goes to the catch all group.} + "misc.misc") +@end lisp + +This variable has the format of a @dfn{split}. A split is a +(possibly) recursive structure where each split may contain other +splits. Here are the possible split syntaxes: + +@table @code + +@item group +If the split is a string, that will be taken as a group name. Normal +regexp match expansion will be done. See below for examples. + +@c Don't fold this line. +@item (@var{field} @var{value} [- @var{restrict} [@dots{}] ] @var{split} [@var{invert-partial}]) +The split can be a list containing at least three elements. If the +first element @var{field} (a regexp matching a header) contains +@var{value} (also a regexp) then store the message as specified by +@var{split}. + +If @var{restrict} (yet another regexp) matches some string after +@var{field} and before the end of the matched @var{value}, the +@var{split} is ignored. If none of the @var{restrict} clauses match, +@var{split} is processed. + +The last element @var{invert-partial} is optional. If it is +non-@code{nil}, the match-partial-words behavior controlled by the +variable @code{nnmail-split-fancy-match-partial-words} (see below) is +be inverted. (New in Gnus 5.10.7) + +@item (| @var{split} @dots{}) +If the split is a list, and the first element is @code{|} (vertical +bar), then process each @var{split} until one of them matches. A +@var{split} is said to match if it will cause the mail message to be +stored in one or more groups. + +@item (& @var{split} @dots{}) +If the split is a list, and the first element is @code{&}, then +process all @var{split}s in the list. + +@item junk +If the split is the symbol @code{junk}, then don't save (i.e., delete) +this message. Use with extreme caution. + +@item (: @var{function} @var{arg1} @var{arg2} @dots{}) +If the split is a list, and the first element is @samp{:}, then the +second element will be called as a function with @var{args} given as +arguments. The function should return a @var{split}. + +@cindex body split +For instance, the following function could be used to split based on the +body of the messages: + +@lisp +(defun split-on-body () + (save-excursion + (save-restriction + (widen) + (goto-char (point-min)) + (when (re-search-forward "Some.*string" nil t) + "string.group")))) +@end lisp + +The buffer is narrowed to the message in question when @var{function} +is run. That's why @code{(widen)} needs to be called after +@code{save-excursion} and @code{save-restriction} in the example +above. Also note that with the nnimap backend, message bodies will +not be downloaded by default. You need to set +@code{nnimap-split-download-body} to @code{t} to do that +(@pxref{Splitting in IMAP}). + +@item (! @var{func} @var{split}) +If the split is a list, and the first element is @code{!}, then +@var{split} will be processed, and @var{func} will be called as a +function with the result of @var{split} as argument. @var{func} +should return a split. + +@item nil +If the split is @code{nil}, it is ignored. + +@end table + +In these splits, @var{field} must match a complete field name. + +Normally, @var{value} in these splits must match a complete @emph{word} +according to the fundamental mode syntax table. In other words, all +@var{value}'s will be implicitly surrounded by @code{\<...\>} markers, +which are word delimiters. Therefore, if you use the following split, +for example, + +@example +(any "joe" "joemail") +@end example + +@noindent +messages sent from @samp{joedavis@@foo.org} will normally not be filed +in @samp{joemail}. If you want to alter this behavior, you can use any +of the following three ways: + +@enumerate +@item +@vindex nnmail-split-fancy-match-partial-words +You can set the @code{nnmail-split-fancy-match-partial-words} variable +to non-@code{nil} in order to ignore word boundaries and instead the +match becomes more like a grep. This variable controls whether partial +words are matched during fancy splitting. The default value is +@code{nil}. + +Note that it influences all @var{value}'s in your split rules. + +@item +@var{value} beginning with @code{.*} ignores word boundaries in front of +a word. Similarly, if @var{value} ends with @code{.*}, word boundaries +in the rear of a word will be ignored. For example, the @var{value} +@code{"@@example\\.com"} does not match @samp{foo@@example.com} but +@code{".*@@example\\.com"} does. + +@item +You can set the @var{invert-partial} flag in your split rules of the +@samp{(@var{field} @var{value} @dots{})} types, aforementioned in this +section. If the flag is set, word boundaries on both sides of a word +are ignored even if @code{nnmail-split-fancy-match-partial-words} is +@code{nil}. Contrarily, if the flag is set, word boundaries are not +ignored even if @code{nnmail-split-fancy-match-partial-words} is +non-@code{nil}. (New in Gnus 5.10.7) +@end enumerate + +@vindex nnmail-split-abbrev-alist +@var{field} and @var{value} can also be Lisp symbols, in that case +they are expanded as specified by the variable +@code{nnmail-split-abbrev-alist}. This is an alist of cons cells, +where the @sc{car} of a cell contains the key, and the @sc{cdr} +contains the associated value. Predefined entries in +@code{nnmail-split-abbrev-alist} include: + +@table @code +@item from +Matches the @samp{From}, @samp{Sender} and @samp{Resent-From} fields. +@item to +Matches the @samp{To}, @samp{Cc}, @samp{Apparently-To}, +@samp{Resent-To} and @samp{Resent-Cc} fields. +@item any +Is the union of the @code{from} and @code{to} entries. +@end table + +@vindex nnmail-split-fancy-syntax-table +@code{nnmail-split-fancy-syntax-table} is the syntax table in effect +when all this splitting is performed. + +If you want to have Gnus create groups dynamically based on some +information in the headers (i.e., do @code{replace-match}-like +substitutions in the group names), you can say things like: + +@example +(any "debian-\\b\\(\\w+\\)@@lists.debian.org" "mail.debian.\\1") +@end example + +In this example, messages sent to @samp{debian-foo@@lists.debian.org} +will be filed in @samp{mail.debian.foo}. + +If the string contains the element @samp{\&}, then the previously +matched string will be substituted. Similarly, the elements @samp{\\1} +up to @samp{\\9} will be substituted with the text matched by the +groupings 1 through 9. + +@vindex nnmail-split-lowercase-expanded +Where @code{nnmail-split-lowercase-expanded} controls whether the +lowercase of the matched string should be used for the substitution. +Setting it as non-@code{nil} is useful to avoid the creation of multiple +groups when users send to an address using different case +(i.e. mailing-list@@domain vs Mailing-List@@Domain). The default value +is @code{t}. + +@findex nnmail-split-fancy-with-parent +@code{nnmail-split-fancy-with-parent} is a function which allows you to +split followups into the same groups their parents are in. Sometimes +you can't make splitting rules for all your mail. For example, your +boss might send you personal mail regarding different projects you are +working on, and as you can't tell your boss to put a distinguishing +string into the subject line, you have to resort to manually moving the +messages into the right group. With this function, you only have to do +it once per thread. + +To use this feature, you have to set @code{nnmail-treat-duplicates} +and @code{nnmail-cache-accepted-message-ids} to a non-@code{nil} +value. And then you can include @code{nnmail-split-fancy-with-parent} +using the colon feature, like so: +@lisp +(setq nnmail-treat-duplicates 'warn ; @r{or @code{delete}} + nnmail-cache-accepted-message-ids t + nnmail-split-fancy + '(| (: nnmail-split-fancy-with-parent) + ;; @r{other splits go here} + )) +@end lisp + +This feature works as follows: when @code{nnmail-treat-duplicates} is +non-@code{nil}, Gnus records the message id of every message it sees +in the file specified by the variable +@code{nnmail-message-id-cache-file}, together with the group it is in +(the group is omitted for non-mail messages). When mail splitting is +invoked, the function @code{nnmail-split-fancy-with-parent} then looks +at the References (and In-Reply-To) header of each message to split +and searches the file specified by @code{nnmail-message-id-cache-file} +for the message ids. When it has found a parent, it returns the +corresponding group name unless the group name matches the regexp +@code{nnmail-split-fancy-with-parent-ignore-groups}. It is +recommended that you set @code{nnmail-message-id-cache-length} to a +somewhat higher number than the default so that the message ids are +still in the cache. (A value of 5000 appears to create a file some +300 kBytes in size.) +@vindex nnmail-cache-accepted-message-ids +When @code{nnmail-cache-accepted-message-ids} is non-@code{nil}, Gnus +also records the message ids of moved articles, so that the followup +messages goes into the new group. + +Also see the variable @code{nnmail-cache-ignore-groups} if you don't +want certain groups to be recorded in the cache. For example, if all +outgoing messages are written to an ``outgoing'' group, you could set +@code{nnmail-cache-ignore-groups} to match that group name. +Otherwise, answers to all your messages would end up in the +``outgoing'' group. + + +@node Group Mail Splitting +@subsection Group Mail Splitting +@cindex mail splitting +@cindex group mail splitting + +@findex gnus-group-split +If you subscribe to dozens of mailing lists but you don't want to +maintain mail splitting rules manually, group mail splitting is for you. +You just have to set @code{to-list} and/or @code{to-address} in group +parameters or group customization and set @code{nnmail-split-methods} to +@code{gnus-group-split}. This splitting function will scan all groups +for those parameters and split mail accordingly, i.e., messages posted +from or to the addresses specified in the parameters @code{to-list} or +@code{to-address} of a mail group will be stored in that group. + +Sometimes, mailing lists have multiple addresses, and you may want mail +splitting to recognize them all: just set the @code{extra-aliases} group +parameter to the list of additional addresses and it's done. If you'd +rather use a regular expression, set @code{split-regexp}. + +All these parameters in a group will be used to create an +@code{nnmail-split-fancy} split, in which the @var{field} is @samp{any}, +the @var{value} is a single regular expression that matches +@code{to-list}, @code{to-address}, all of @code{extra-aliases} and all +matches of @code{split-regexp}, and the @var{split} is the name of the +group. @var{restrict}s are also supported: just set the +@code{split-exclude} parameter to a list of regular expressions. + +If you can't get the right split to be generated using all these +parameters, or you just need something fancier, you can set the +parameter @code{split-spec} to an @code{nnmail-split-fancy} split. In +this case, all other aforementioned parameters will be ignored by +@code{gnus-group-split}. In particular, @code{split-spec} may be set to +@code{nil}, in which case the group will be ignored by +@code{gnus-group-split}. + +@vindex gnus-group-split-default-catch-all-group +@code{gnus-group-split} will do cross-posting on all groups that match, +by defining a single @code{&} fancy split containing one split for each +group. If a message doesn't match any split, it will be stored in the +group named in @code{gnus-group-split-default-catch-all-group}, unless +some group has @code{split-spec} set to @code{catch-all}, in which case +that group is used as the catch-all group. Even though this variable is +often used just to name a group, it may also be set to an arbitrarily +complex fancy split (after all, a group name is a fancy split), and this +may be useful to split mail that doesn't go to any mailing list to +personal mail folders. Note that this fancy split is added as the last +element of a @code{|} split list that also contains a @code{&} split +with the rules extracted from group parameters. + +It's time for an example. Assume the following group parameters have +been defined: + +@example +nnml:mail.bar: +((to-address . "bar@@femail.com") + (split-regexp . ".*@@femail\\.com")) +nnml:mail.foo: +((to-list . "foo@@nowhere.gov") + (extra-aliases "foo@@localhost" "foo-redist@@home") + (split-exclude "bugs-foo" "rambling-foo") + (admin-address . "foo-request@@nowhere.gov")) +nnml:mail.others: +((split-spec . catch-all)) +@end example + +Setting @code{nnmail-split-methods} to @code{gnus-group-split} will +behave as if @code{nnmail-split-fancy} had been selected and variable +@code{nnmail-split-fancy} had been set as follows: + +@lisp +(| (& (any "\\(bar@@femail\\.com\\|.*@@femail\\.com\\)" "mail.bar") + (any "\\(foo@@nowhere\\.gov\\|foo@@localhost\\|foo-redist@@home\\)" + - "bugs-foo" - "rambling-foo" "mail.foo")) + "mail.others") +@end lisp + +@findex gnus-group-split-fancy +If you'd rather not use group splitting for all your mail groups, you +may use it for only some of them, by using @code{nnmail-split-fancy} +splits like this: + +@lisp +(: gnus-group-split-fancy @var{groups} @var{no-crosspost} @var{catch-all}) +@end lisp + +@var{groups} may be a regular expression or a list of group names whose +parameters will be scanned to generate the output split. +@var{no-crosspost} can be used to disable cross-posting; in this case, a +single @code{|} split will be output. @var{catch-all} is the fall back +fancy split, used like @code{gnus-group-split-default-catch-all-group}. +If @var{catch-all} is @code{nil}, or if @code{split-regexp} matches the +empty string in any selected group, no catch-all split will be issued. +Otherwise, if some group has @code{split-spec} set to @code{catch-all}, +this group will override the value of the @var{catch-all} argument. + +@findex gnus-group-split-setup +Unfortunately, scanning all groups and their parameters can be quite +slow, especially considering that it has to be done for every message. +But don't despair! The function @code{gnus-group-split-setup} can be +used to enable @code{gnus-group-split} in a much more efficient way. It +sets @code{nnmail-split-methods} to @code{nnmail-split-fancy} and sets +@code{nnmail-split-fancy} to the split produced by +@code{gnus-group-split-fancy}. Thus, the group parameters are only +scanned once, no matter how many messages are split. + +@findex gnus-group-split-update +However, if you change group parameters, you'd have to update +@code{nnmail-split-fancy} manually. You can do it by running +@code{gnus-group-split-update}. If you'd rather have it updated +automatically, just tell @code{gnus-group-split-setup} to do it for +you. For example, add to your @file{~/.gnus.el}: + +@lisp +(gnus-group-split-setup @var{auto-update} @var{catch-all}) +@end lisp + +If @var{auto-update} is non-@code{nil}, @code{gnus-group-split-update} +will be added to @code{nnmail-pre-get-new-mail-hook}, so you won't ever +have to worry about updating @code{nnmail-split-fancy} again. If you +don't omit @var{catch-all} (it's optional, equivalent to @code{nil}), +@code{gnus-group-split-default-catch-all-group} will be set to its +value. + +@vindex gnus-group-split-updated-hook +Because you may want to change @code{nnmail-split-fancy} after it is set +by @code{gnus-group-split-update}, this function will run +@code{gnus-group-split-updated-hook} just before finishing. + +@node Incorporating Old Mail +@subsection Incorporating Old Mail +@cindex incorporating old mail +@cindex import old mail + +Most people have lots of old mail stored in various file formats. If +you have set up Gnus to read mail using one of the spiffy Gnus mail +back ends, you'll probably wish to have that old mail incorporated into +your mail groups. + +Doing so can be quite easy. + +To take an example: You're reading mail using @code{nnml} +(@pxref{Mail Spool}), and have set @code{nnmail-split-methods} to a +satisfactory value (@pxref{Splitting Mail}). You have an old Unix mbox +file filled with important, but old, mail. You want to move it into +your @code{nnml} groups. + +Here's how: + +@enumerate +@item +Go to the group buffer. + +@item +Type @kbd{G f} and give the file name to the mbox file when prompted to create an +@code{nndoc} group from the mbox file (@pxref{Foreign Groups}). + +@item +Type @kbd{SPACE} to enter the newly created group. + +@item +Type @kbd{M P b} to process-mark all articles in this group's buffer +(@pxref{Setting Process Marks}). + +@item +Type @kbd{B r} to respool all the process-marked articles, and answer +@samp{nnml} when prompted (@pxref{Mail Group Commands}). +@end enumerate + +All the mail messages in the mbox file will now also be spread out over +all your @code{nnml} groups. Try entering them and check whether things +have gone without a glitch. If things look ok, you may consider +deleting the mbox file, but I wouldn't do that unless I was absolutely +sure that all the mail has ended up where it should be. + +Respooling is also a handy thing to do if you're switching from one mail +back end to another. Just respool all the mail in the old mail groups +using the new mail back end. + + +@node Expiring Mail +@subsection Expiring Mail +@cindex article expiry +@cindex expiring mail + +Traditional mail readers have a tendency to remove mail articles when +you mark them as read, in some way. Gnus takes a fundamentally +different approach to mail reading. + +Gnus basically considers mail just to be news that has been received in +a rather peculiar manner. It does not think that it has the power to +actually change the mail, or delete any mail messages. If you enter a +mail group, and mark articles as ``read'', or kill them in some other +fashion, the mail articles will still exist on the system. I repeat: +Gnus will not delete your old, read mail. Unless you ask it to, of +course. + +To make Gnus get rid of your unwanted mail, you have to mark the +articles as @dfn{expirable}. (With the default key bindings, this means +that you have to type @kbd{E}.) This does not mean that the articles +will disappear right away, however. In general, a mail article will be +deleted from your system if, 1) it is marked as expirable, AND 2) it is +more than one week old. If you do not mark an article as expirable, it +will remain on your system until hell freezes over. This bears +repeating one more time, with some spurious capitalizations: IF you do +NOT mark articles as EXPIRABLE, Gnus will NEVER delete those ARTICLES. + +You do not have to mark articles as expirable by hand. Gnus provides +two features, called ``auto-expire'' and ``total-expire'', that can help you +with this. In a nutshell, ``auto-expire'' means that Gnus hits @kbd{E} +for you when you select an article. And ``total-expire'' means that Gnus +considers all articles as expirable that are read. So, in addition to +the articles marked @samp{E}, also the articles marked @samp{r}, +@samp{R}, @samp{O}, @samp{K}, @samp{Y} and so on are considered +expirable. + +When should either auto-expire or total-expire be used? Most people +who are subscribed to mailing lists split each list into its own group +and then turn on auto-expire or total-expire for those groups. +(@xref{Splitting Mail}, for more information on splitting each list +into its own group.) + +Which one is better, auto-expire or total-expire? It's not easy to +answer. Generally speaking, auto-expire is probably faster. Another +advantage of auto-expire is that you get more marks to work with: for +the articles that are supposed to stick around, you can still choose +between tick and dormant and read marks. But with total-expire, you +only have dormant and ticked to choose from. The advantage of +total-expire is that it works well with adaptive scoring (@pxref{Adaptive +Scoring}). Auto-expire works with normal scoring but not with adaptive +scoring. + +@vindex gnus-auto-expirable-newsgroups +Groups that match the regular expression +@code{gnus-auto-expirable-newsgroups} will have all articles that you +read marked as expirable automatically. All articles marked as +expirable have an @samp{E} in the first column in the summary buffer. + +By default, if you have auto expiry switched on, Gnus will mark all the +articles you read as expirable, no matter if they were read or unread +before. To avoid having articles marked as read marked as expirable +automatically, you can put something like the following in your +@file{~/.gnus.el} file: + +@vindex gnus-mark-article-hook +@lisp +(remove-hook 'gnus-mark-article-hook + 'gnus-summary-mark-read-and-unread-as-read) +(add-hook 'gnus-mark-article-hook 'gnus-summary-mark-unread-as-read) +@end lisp + +Note that making a group auto-expirable doesn't mean that all read +articles are expired---only the articles marked as expirable +will be expired. Also note that using the @kbd{d} command won't make +articles expirable---only semi-automatic marking of articles as read will +mark the articles as expirable in auto-expirable groups. + +Let's say you subscribe to a couple of mailing lists, and you want the +articles you have read to disappear after a while: + +@lisp +(setq gnus-auto-expirable-newsgroups + "mail.nonsense-list\\|mail.nice-list") +@end lisp + +Another way to have auto-expiry happen is to have the element +@code{auto-expire} in the group parameters of the group. + +If you use adaptive scoring (@pxref{Adaptive Scoring}) and +auto-expiring, you'll have problems. Auto-expiring and adaptive scoring +don't really mix very well. + +@vindex nnmail-expiry-wait +The @code{nnmail-expiry-wait} variable supplies the default time an +expirable article has to live. Gnus starts counting days from when the +message @emph{arrived}, not from when it was sent. The default is seven +days. + +Gnus also supplies a function that lets you fine-tune how long articles +are to live, based on what group they are in. Let's say you want to +have one month expiry period in the @samp{mail.private} group, a one day +expiry period in the @samp{mail.junk} group, and a six day expiry period +everywhere else: + +@vindex nnmail-expiry-wait-function +@lisp +(setq nnmail-expiry-wait-function + (lambda (group) + (cond ((string= group "mail.private") + 31) + ((string= group "mail.junk") + 1) + ((string= group "important") + 'never) + (t + 6)))) +@end lisp + +The group names this function is fed are ``unadorned'' group +names---no @samp{nnml:} prefixes and the like. + +The @code{nnmail-expiry-wait} variable and +@code{nnmail-expiry-wait-function} function can either be a number (not +necessarily an integer) or one of the symbols @code{immediate} or +@code{never}. + +You can also use the @code{expiry-wait} group parameter to selectively +change the expiry period (@pxref{Group Parameters}). + +@vindex nnmail-expiry-target +The normal action taken when expiring articles is to delete them. +However, in some circumstances it might make more sense to move them +to other groups instead of deleting them. The variable +@code{nnmail-expiry-target} (and the @code{expiry-target} group +parameter) controls this. The variable supplies a default value for +all groups, which can be overridden for specific groups by the group +parameter. default value is @code{delete}, but this can also be a +string (which should be the name of the group the message should be +moved to), or a function (which will be called in a buffer narrowed to +the message in question, and with the name of the group being moved +from as its parameter) which should return a target---either a group +name or @code{delete}. + +Here's an example for specifying a group name: +@lisp +(setq nnmail-expiry-target "nnml:expired") +@end lisp + +@findex nnmail-fancy-expiry-target +@vindex nnmail-fancy-expiry-targets +Gnus provides a function @code{nnmail-fancy-expiry-target} which will +expire mail to groups according to the variable +@code{nnmail-fancy-expiry-targets}. Here's an example: + +@lisp + (setq nnmail-expiry-target 'nnmail-fancy-expiry-target + nnmail-fancy-expiry-targets + '((to-from "boss" "nnfolder:Work") + ("subject" "IMPORTANT" "nnfolder:IMPORTANT.%Y.%b") + ("from" ".*" "nnfolder:Archive-%Y"))) +@end lisp + +With this setup, any mail that has @code{IMPORTANT} in its Subject +header and was sent in the year @code{YYYY} and month @code{MMM}, will +get expired to the group @code{nnfolder:IMPORTANT.YYYY.MMM}. If its +From or To header contains the string @code{boss}, it will get expired +to @code{nnfolder:Work}. All other mail will get expired to +@code{nnfolder:Archive-YYYY}. + +@vindex nnmail-keep-last-article +If @code{nnmail-keep-last-article} is non-@code{nil}, Gnus will never +expire the final article in a mail newsgroup. This is to make life +easier for procmail users. + +@vindex gnus-total-expirable-newsgroups +By the way: That line up there, about Gnus never expiring non-expirable +articles, is a lie. If you put @code{total-expire} in the group +parameters, articles will not be marked as expirable, but all read +articles will be put through the expiry process. Use with extreme +caution. Even more dangerous is the +@code{gnus-total-expirable-newsgroups} variable. All groups that match +this regexp will have all read articles put through the expiry process, +which means that @emph{all} old mail articles in the groups in question +will be deleted after a while. Use with extreme caution, and don't come +crying to me when you discover that the regexp you used matched the +wrong group and all your important mail has disappeared. Be a +@emph{man}! Or a @emph{woman}! Whatever you feel more comfortable +with! So there! + +Most people make most of their mail groups total-expirable, though. + +@vindex gnus-inhibit-user-auto-expire +If @code{gnus-inhibit-user-auto-expire} is non-@code{nil}, user marking +commands will not mark an article as expirable, even if the group has +auto-expire turned on. + + +@node Washing Mail +@subsection Washing Mail +@cindex mail washing +@cindex list server brain damage +@cindex incoming mail treatment + +Mailers and list servers are notorious for doing all sorts of really, +really stupid things with mail. ``Hey, RFC 822 doesn't explicitly +prohibit us from adding the string @code{wE aRe ElItE!!!!!1!!} to the +end of all lines passing through our server, so let's do that!!!!1!'' +Yes, but RFC 822 wasn't designed to be read by morons. Things that were +considered to be self-evident were not discussed. So. Here we are. + +Case in point: The German version of Microsoft Exchange adds @samp{AW: +} to the subjects of replies instead of @samp{Re: }. I could pretend to +be shocked and dismayed by this, but I haven't got the energy. It is to +laugh. + +Gnus provides a plethora of functions for washing articles while +displaying them, but it might be nicer to do the filtering before +storing the mail to disk. For that purpose, we have three hooks and +various functions that can be put in these hooks. + +@table @code +@item nnmail-prepare-incoming-hook +@vindex nnmail-prepare-incoming-hook +This hook is called before doing anything with the mail and is meant for +grand, sweeping gestures. It is called in a buffer that contains all +the new, incoming mail. Functions to be used include: + +@table @code +@item nnheader-ms-strip-cr +@findex nnheader-ms-strip-cr +Remove trailing carriage returns from each line. This is default on +Emacs running on MS machines. + +@end table + +@item nnmail-prepare-incoming-header-hook +@vindex nnmail-prepare-incoming-header-hook +This hook is called narrowed to each header. It can be used when +cleaning up the headers. Functions that can be used include: + +@table @code +@item nnmail-remove-leading-whitespace +@findex nnmail-remove-leading-whitespace +Clear leading white space that ``helpful'' listservs have added to the +headers to make them look nice. Aaah. + +(Note that this function works on both the header on the body of all +messages, so it is a potentially dangerous function to use (if a body +of a message contains something that looks like a header line). So +rather than fix the bug, it is of course the right solution to make it +into a feature by documenting it.) + +@item nnmail-remove-list-identifiers +@findex nnmail-remove-list-identifiers +Some list servers add an identifier---for example, @samp{(idm)}---to the +beginning of all @code{Subject} headers. I'm sure that's nice for +people who use stone age mail readers. This function will remove +strings that match the @code{nnmail-list-identifiers} regexp, which can +also be a list of regexp. @code{nnmail-list-identifiers} may not contain +@code{\\(..\\)}. + +For instance, if you want to remove the @samp{(idm)} and the +@samp{nagnagnag} identifiers: + +@lisp +(setq nnmail-list-identifiers + '("(idm)" "nagnagnag")) +@end lisp + +This can also be done non-destructively with +@code{gnus-list-identifiers}, @xref{Article Hiding}. + +@item nnmail-remove-tabs +@findex nnmail-remove-tabs +Translate all @samp{TAB} characters into @samp{SPACE} characters. + +@item nnmail-fix-eudora-headers +@findex nnmail-fix-eudora-headers +@cindex Eudora +Eudora produces broken @code{References} headers, but OK +@code{In-Reply-To} headers. This function will get rid of the +@code{References} headers. + +@end table + +@item nnmail-prepare-incoming-message-hook +@vindex nnmail-prepare-incoming-message-hook +This hook is called narrowed to each message. Functions to be used +include: + +@table @code +@item article-de-quoted-unreadable +@findex article-de-quoted-unreadable +Decode Quoted Readable encoding. + +@end table +@end table + + +@node Duplicates +@subsection Duplicates + +@vindex nnmail-treat-duplicates +@vindex nnmail-message-id-cache-length +@vindex nnmail-message-id-cache-file +@cindex duplicate mails +If you are a member of a couple of mailing lists, you will sometimes +receive two copies of the same mail. This can be quite annoying, so +@code{nnmail} checks for and treats any duplicates it might find. To do +this, it keeps a cache of old @code{Message-ID}s--- +@code{nnmail-message-id-cache-file}, which is @file{~/.nnmail-cache} by +default. The approximate maximum number of @code{Message-ID}s stored +there is controlled by the @code{nnmail-message-id-cache-length} +variable, which is 1000 by default. (So 1000 @code{Message-ID}s will be +stored.) If all this sounds scary to you, you can set +@code{nnmail-treat-duplicates} to @code{warn} (which is what it is by +default), and @code{nnmail} won't delete duplicate mails. Instead it +will insert a warning into the head of the mail saying that it thinks +that this is a duplicate of a different message. + +This variable can also be a function. If that's the case, the function +will be called from a buffer narrowed to the message in question with +the @code{Message-ID} as a parameter. The function must return either +@code{nil}, @code{warn}, or @code{delete}. + +You can turn this feature off completely by setting the variable to +@code{nil}. + +If you want all the duplicate mails to be put into a special +@dfn{duplicates} group, you could do that using the normal mail split +methods: + +@lisp +(setq nnmail-split-fancy + '(| ;; @r{Messages duplicates go to a separate group.} + ("gnus-warning" "duplicat\\(e\\|ion\\) of message" "duplicate") + ;; @r{Message from daemons, postmaster, and the like to another.} + (any mail "mail.misc") + ;; @r{Other rules.} + [...] )) +@end lisp +@noindent +Or something like: +@lisp +(setq nnmail-split-methods + '(("duplicates" "^Gnus-Warning:.*duplicate") + ;; @r{Other rules.} + [...])) +@end lisp + +Here's a neat feature: If you know that the recipient reads her mail +with Gnus, and that she has @code{nnmail-treat-duplicates} set to +@code{delete}, you can send her as many insults as you like, just by +using a @code{Message-ID} of a mail that you know that she's already +received. Think of all the fun! She'll never see any of it! Whee! + + +@node Not Reading Mail +@subsection Not Reading Mail + +If you start using any of the mail back ends, they have the annoying +habit of assuming that you want to read mail with them. This might not +be unreasonable, but it might not be what you want. + +If you set @code{mail-sources} and @code{nnmail-spool-file} to +@code{nil}, none of the back ends will ever attempt to read incoming +mail, which should help. + +@vindex nnbabyl-get-new-mail +@vindex nnmbox-get-new-mail +@vindex nnml-get-new-mail +@vindex nnmh-get-new-mail +@vindex nnfolder-get-new-mail +This might be too much, if, for instance, you are reading mail quite +happily with @code{nnml} and just want to peek at some old Rmail +file you have stashed away with @code{nnbabyl}. All back ends have +variables called back-end-@code{get-new-mail}. If you want to disable +the @code{nnbabyl} mail reading, you edit the virtual server for the +group to have a setting where @code{nnbabyl-get-new-mail} to @code{nil}. + +All the mail back ends will call @code{nn}*@code{-prepare-save-mail-hook} +narrowed to the article to be saved before saving it when reading +incoming mail. + + +@node Choosing a Mail Back End +@subsection Choosing a Mail Back End + +Gnus will read the mail spool when you activate a mail group. The mail +file is first copied to your home directory. What happens after that +depends on what format you want to store your mail in. + +There are six different mail back ends in the standard Gnus, and more +back ends are available separately. The mail back end most people use +(because it is possibly the fastest) is @code{nnml} (@pxref{Mail +Spool}). + +@menu +* Unix Mail Box:: Using the (quite) standard Un*x mbox. +* Rmail Babyl:: Emacs programs use the Rmail Babyl format. +* Mail Spool:: Store your mail in a private spool? +* MH Spool:: An mhspool-like back end. +* Maildir:: Another one-file-per-message format. +* Mail Folders:: Having one file for each group. +* Comparing Mail Back Ends:: An in-depth looks at pros and cons. +@end menu + + +@node Unix Mail Box +@subsubsection Unix Mail Box +@cindex nnmbox +@cindex unix mail box + +@vindex nnmbox-active-file +@vindex nnmbox-mbox-file +The @dfn{nnmbox} back end will use the standard Un*x mbox file to store +mail. @code{nnmbox} will add extra headers to each mail article to say +which group it belongs in. + +Virtual server settings: + +@table @code +@item nnmbox-mbox-file +@vindex nnmbox-mbox-file +The name of the mail box in the user's home directory. Default is +@file{~/mbox}. + +@item nnmbox-active-file +@vindex nnmbox-active-file +The name of the active file for the mail box. Default is +@file{~/.mbox-active}. + +@item nnmbox-get-new-mail +@vindex nnmbox-get-new-mail +If non-@code{nil}, @code{nnmbox} will read incoming mail and split it +into groups. Default is @code{t}. +@end table + + +@node Rmail Babyl +@subsubsection Rmail Babyl +@cindex nnbabyl +@cindex Rmail mbox + +@vindex nnbabyl-active-file +@vindex nnbabyl-mbox-file +The @dfn{nnbabyl} back end will use a Babyl mail box (aka. @dfn{Rmail +mbox}) to store mail. @code{nnbabyl} will add extra headers to each +mail article to say which group it belongs in. + +Virtual server settings: + +@table @code +@item nnbabyl-mbox-file +@vindex nnbabyl-mbox-file +The name of the Rmail mbox file. The default is @file{~/RMAIL} + +@item nnbabyl-active-file +@vindex nnbabyl-active-file +The name of the active file for the rmail box. The default is +@file{~/.rmail-active} + +@item nnbabyl-get-new-mail +@vindex nnbabyl-get-new-mail +If non-@code{nil}, @code{nnbabyl} will read incoming mail. Default is +@code{t} +@end table + + +@node Mail Spool +@subsubsection Mail Spool +@cindex nnml +@cindex mail @acronym{NOV} spool + +The @dfn{nnml} spool mail format isn't compatible with any other known +format. It should be used with some caution. + +@vindex nnml-directory +If you use this back end, Gnus will split all incoming mail into files, +one file for each mail, and put the articles into the corresponding +directories under the directory specified by the @code{nnml-directory} +variable. The default value is @file{~/Mail/}. + +You do not have to create any directories beforehand; Gnus will take +care of all that. + +If you have a strict limit as to how many files you are allowed to store +in your account, you should not use this back end. As each mail gets its +own file, you might very well occupy thousands of inodes within a few +weeks. If this is no problem for you, and it isn't a problem for you +having your friendly systems administrator walking around, madly, +shouting ``Who is eating all my inodes?! Who? Who!?!'', then you should +know that this is probably the fastest format to use. You do not have +to trudge through a big mbox file just to read your new mail. + +@code{nnml} is probably the slowest back end when it comes to article +splitting. It has to create lots of files, and it also generates +@acronym{NOV} databases for the incoming mails. This makes it possibly the +fastest back end when it comes to reading mail. + +@cindex self contained nnml servers +@cindex marks +When the marks file is used (which it is by default), @code{nnml} +servers have the property that you may backup them using @code{tar} or +similar, and later be able to restore them into Gnus (by adding the +proper @code{nnml} server) and have all your marks be preserved. Marks +for a group is usually stored in the @code{.marks} file (but see +@code{nnml-marks-file-name}) within each @code{nnml} group's directory. +Individual @code{nnml} groups are also possible to backup, use @kbd{G m} +to restore the group (after restoring the backup into the nnml +directory). + +If for some reason you believe your @file{.marks} files are screwed +up, you can just delete them all. Gnus will then correctly regenerate +them next time it starts. + +Virtual server settings: + +@table @code +@item nnml-directory +@vindex nnml-directory +All @code{nnml} directories will be placed under this directory. The +default is the value of @code{message-directory} (whose default value +is @file{~/Mail}). + +@item nnml-active-file +@vindex nnml-active-file +The active file for the @code{nnml} server. The default is +@file{~/Mail/active}. + +@item nnml-newsgroups-file +@vindex nnml-newsgroups-file +The @code{nnml} group descriptions file. @xref{Newsgroups File +Format}. The default is @file{~/Mail/newsgroups}. + +@item nnml-get-new-mail +@vindex nnml-get-new-mail +If non-@code{nil}, @code{nnml} will read incoming mail. The default is +@code{t}. + +@item nnml-nov-is-evil +@vindex nnml-nov-is-evil +If non-@code{nil}, this back end will ignore any @acronym{NOV} files. The +default is @code{nil}. + +@item nnml-nov-file-name +@vindex nnml-nov-file-name +The name of the @acronym{NOV} files. The default is @file{.overview}. + +@item nnml-prepare-save-mail-hook +@vindex nnml-prepare-save-mail-hook +Hook run narrowed to an article before saving. + +@item nnml-marks-is-evil +@vindex nnml-marks-is-evil +If non-@code{nil}, this back end will ignore any @sc{marks} files. The +default is @code{nil}. + +@item nnml-marks-file-name +@vindex nnml-marks-file-name +The name of the @dfn{marks} files. The default is @file{.marks}. + +@item nnml-use-compressed-files +@vindex nnml-use-compressed-files +If non-@code{nil}, @code{nnml} will allow using compressed message +files. + +@end table + +@findex nnml-generate-nov-databases +If your @code{nnml} groups and @acronym{NOV} files get totally out of +whack, you can do a complete update by typing @kbd{M-x +nnml-generate-nov-databases}. This command will trawl through the +entire @code{nnml} hierarchy, looking at each and every article, so it +might take a while to complete. A better interface to this +functionality can be found in the server buffer (@pxref{Server +Commands}). + + +@node MH Spool +@subsubsection MH Spool +@cindex nnmh +@cindex mh-e mail spool + +@code{nnmh} is just like @code{nnml}, except that is doesn't generate +@acronym{NOV} databases and it doesn't keep an active file or marks +file. This makes @code{nnmh} a @emph{much} slower back end than +@code{nnml}, but it also makes it easier to write procmail scripts +for. + +Virtual server settings: + +@table @code +@item nnmh-directory +@vindex nnmh-directory +All @code{nnmh} directories will be located under this directory. The +default is the value of @code{message-directory} (whose default is +@file{~/Mail}) + +@item nnmh-get-new-mail +@vindex nnmh-get-new-mail +If non-@code{nil}, @code{nnmh} will read incoming mail. The default is +@code{t}. + +@item nnmh-be-safe +@vindex nnmh-be-safe +If non-@code{nil}, @code{nnmh} will go to ridiculous lengths to make +sure that the articles in the folder are actually what Gnus thinks +they are. It will check date stamps and stat everything in sight, so +setting this to @code{t} will mean a serious slow-down. If you never +use anything but Gnus to read the @code{nnmh} articles, you do not +have to set this variable to @code{t}. The default is @code{nil}. +@end table + + +@node Maildir +@subsubsection Maildir +@cindex nnmaildir +@cindex maildir + +@code{nnmaildir} stores mail in the maildir format, with each maildir +corresponding to a group in Gnus. This format is documented here: +@uref{http://cr.yp.to/proto/maildir.html} and here: +@uref{http://www.qmail.org/man/man5/maildir.html}. @code{nnmaildir} +also stores extra information in the @file{.nnmaildir/} directory +within a maildir. + +Maildir format was designed to allow concurrent deliveries and +reading, without needing locks. With other back ends, you would have +your mail delivered to a spool of some kind, and then you would +configure Gnus to split mail from that spool into your groups. You +can still do that with @code{nnmaildir}, but the more common +configuration is to have your mail delivered directly to the maildirs +that appear as group in Gnus. + +@code{nnmaildir} is designed to be perfectly reliable: @kbd{C-g} will +never corrupt its data in memory, and @code{SIGKILL} will never +corrupt its data in the filesystem. + +@code{nnmaildir} stores article marks and @acronym{NOV} data in each +maildir. So you can copy a whole maildir from one Gnus setup to +another, and you will keep your marks. + +Virtual server settings: + +@table @code +@item directory +For each of your @code{nnmaildir} servers (it's very unlikely that +you'd need more than one), you need to create a directory and populate +it with maildirs or symlinks to maildirs (and nothing else; do not +choose a directory already used for other purposes). Each maildir +will be represented in Gnus as a newsgroup on that server; the +filename of the symlink will be the name of the group. Any filenames +in the directory starting with @samp{.} are ignored. The directory is +scanned when you first start Gnus, and each time you type @kbd{g} in +the group buffer; if any maildirs have been removed or added, +@code{nnmaildir} notices at these times. + +The value of the @code{directory} parameter should be a Lisp form +which is processed by @code{eval} and @code{expand-file-name} to get +the path of the directory for this server. The form is @code{eval}ed +only when the server is opened; the resulting string is used until the +server is closed. (If you don't know about forms and @code{eval}, +don't worry---a simple string will work.) This parameter is not +optional; you must specify it. I don't recommend using +@code{"~/Mail"} or a subdirectory of it; several other parts of Gnus +use that directory by default for various things, and may get confused +if @code{nnmaildir} uses it too. @code{"~/.nnmaildir"} is a typical +value. + +@item target-prefix +This should be a Lisp form which is processed by @code{eval} and +@code{expand-file-name}. The form is @code{eval}ed only when the +server is opened; the resulting string is used until the server is +closed. + +When you create a group on an @code{nnmaildir} server, the maildir is +created with @code{target-prefix} prepended to its name, and a symlink +pointing to that maildir is created, named with the plain group name. +So if @code{directory} is @code{"~/.nnmaildir"} and +@code{target-prefix} is @code{"../maildirs/"}, then when you create +the group @code{foo}, @code{nnmaildir} will create +@file{~/.nnmaildir/../maildirs/foo} as a maildir, and will create +@file{~/.nnmaildir/foo} as a symlink pointing to +@file{../maildirs/foo}. + +You can set @code{target-prefix} to a string without any slashes to +create both maildirs and symlinks in the same @code{directory}; in +this case, any maildirs found in @code{directory} whose names start +with @code{target-prefix} will not be listed as groups (but the +symlinks pointing to them will be). + +As a special case, if @code{target-prefix} is @code{""} (the default), +then when you create a group, the maildir will be created in +@code{directory} without a corresponding symlink. Beware that you +cannot use @code{gnus-group-delete-group} on such groups without the +@code{force} argument. + +@item directory-files +This should be a function with the same interface as +@code{directory-files} (such as @code{directory-files} itself). It is +used to scan the server's @code{directory} for maildirs. This +parameter is optional; the default is +@code{nnheader-directory-files-safe} if +@code{nnheader-directory-files-is-safe} is @code{nil}, and +@code{directory-files} otherwise. +(@code{nnheader-directory-files-is-safe} is checked only once when the +server is opened; if you want to check it each time the directory is +scanned, you'll have to provide your own function that does that.) + +@item get-new-mail +If non-@code{nil}, then after scanning for new mail in the group +maildirs themselves as usual, this server will also incorporate mail +the conventional Gnus way, from @code{mail-sources} according to +@code{nnmail-split-methods} or @code{nnmail-split-fancy}. The default +value is @code{nil}. + +Do @emph{not} use the same maildir both in @code{mail-sources} and as +an @code{nnmaildir} group. The results might happen to be useful, but +that would be by chance, not by design, and the results might be +different in the future. If your split rules create new groups, +remember to supply a @code{create-directory} server parameter. +@end table + +@subsubsection Group parameters + +@code{nnmaildir} uses several group parameters. It's safe to ignore +all this; the default behavior for @code{nnmaildir} is the same as the +default behavior for other mail back ends: articles are deleted after +one week, etc. Except for the expiry parameters, all this +functionality is unique to @code{nnmaildir}, so you can ignore it if +you're just trying to duplicate the behavior you already have with +another back end. + +If the value of any of these parameters is a vector, the first element +is evaluated as a Lisp form and the result is used, rather than the +original value. If the value is not a vector, the value itself is +evaluated as a Lisp form. (This is why these parameters use names +different from those of other, similar parameters supported by other +back ends: they have different, though similar, meanings.) (For +numbers, strings, @code{nil}, and @code{t}, you can ignore the +@code{eval} business again; for other values, remember to use an extra +quote and wrap the value in a vector when appropriate.) + +@table @code +@item expire-age +An integer specifying the minimum age, in seconds, of an article +before it will be expired, or the symbol @code{never} to specify that +articles should never be expired. If this parameter is not set, +@code{nnmaildir} falls back to the usual +@code{nnmail-expiry-wait}(@code{-function}) variables (the +@code{expiry-wait} group parameter overrides @code{nnmail-expiry-wait} +and makes @code{nnmail-expiry-wait-function} ineffective). If you +wanted a value of 3 days, you could use something like @code{[(* 3 24 +60 60)]}; @code{nnmaildir} will evaluate the form and use the result. +An article's age is measured starting from the article file's +modification time. Normally, this is the same as the article's +delivery time, but editing an article makes it younger. Moving an +article (other than via expiry) may also make an article younger. + +@item expire-group +If this is set to a string such as a full Gnus group name, like +@example +"backend+server.address.string:group.name" +@end example +and if it is not the name of the same group that the parameter belongs +to, then articles will be moved to the specified group during expiry +before being deleted. @emph{If this is set to an @code{nnmaildir} +group, the article will be just as old in the destination group as it +was in the source group.} So be careful with @code{expire-age} in the +destination group. If this is set to the name of the same group that +the parameter belongs to, then the article is not expired at all. If +you use the vector form, the first element is evaluated once for each +article. So that form can refer to +@code{nnmaildir-article-file-name}, etc., to decide where to put the +article. @emph{Even if this parameter is not set, @code{nnmaildir} +does not fall back to the @code{expiry-target} group parameter or the +@code{nnmail-expiry-target} variable.} + +@item read-only +If this is set to @code{t}, @code{nnmaildir} will treat the articles +in this maildir as read-only. This means: articles are not renamed +from @file{new/} into @file{cur/}; articles are only found in +@file{new/}, not @file{cur/}; articles are never deleted; articles +cannot be edited. @file{new/} is expected to be a symlink to the +@file{new/} directory of another maildir---e.g., a system-wide mailbox +containing a mailing list of common interest. Everything in the +maildir outside @file{new/} is @emph{not} treated as read-only, so for +a shared mailbox, you do still need to set up your own maildir (or +have write permission to the shared mailbox); your maildir just won't +contain extra copies of the articles. + +@item directory-files +A function with the same interface as @code{directory-files}. It is +used to scan the directories in the maildir corresponding to this +group to find articles. The default is the function specified by the +server's @code{directory-files} parameter. + +@item distrust-Lines: +If non-@code{nil}, @code{nnmaildir} will always count the lines of an +article, rather than use the @code{Lines:} header field. If +@code{nil}, the header field will be used if present. + +@item always-marks +A list of mark symbols, such as @code{['(read expire)]}. Whenever +Gnus asks @code{nnmaildir} for article marks, @code{nnmaildir} will +say that all articles have these marks, regardless of whether the +marks stored in the filesystem say so. This is a proof-of-concept +feature that will probably be removed eventually; it ought to be done +in Gnus proper, or abandoned if it's not worthwhile. + +@item never-marks +A list of mark symbols, such as @code{['(tick expire)]}. Whenever +Gnus asks @code{nnmaildir} for article marks, @code{nnmaildir} will +say that no articles have these marks, regardless of whether the marks +stored in the filesystem say so. @code{never-marks} overrides +@code{always-marks}. This is a proof-of-concept feature that will +probably be removed eventually; it ought to be done in Gnus proper, or +abandoned if it's not worthwhile. + +@item nov-cache-size +An integer specifying the size of the @acronym{NOV} memory cache. To +speed things up, @code{nnmaildir} keeps @acronym{NOV} data in memory +for a limited number of articles in each group. (This is probably not +worthwhile, and will probably be removed in the future.) This +parameter's value is noticed only the first time a group is seen after +the server is opened---i.e., when you first start Gnus, typically. +The @acronym{NOV} cache is never resized until the server is closed +and reopened. The default is an estimate of the number of articles +that would be displayed in the summary buffer: a count of articles +that are either marked with @code{tick} or not marked with +@code{read}, plus a little extra. +@end table + +@subsubsection Article identification +Articles are stored in the @file{cur/} subdirectory of each maildir. +Each article file is named like @code{uniq:info}, where @code{uniq} +contains no colons. @code{nnmaildir} ignores, but preserves, the +@code{:info} part. (Other maildir readers typically use this part of +the filename to store marks.) The @code{uniq} part uniquely +identifies the article, and is used in various places in the +@file{.nnmaildir/} subdirectory of the maildir to store information +about the corresponding article. The full pathname of an article is +available in the variable @code{nnmaildir-article-file-name} after you +request the article in the summary buffer. + +@subsubsection NOV data +An article identified by @code{uniq} has its @acronym{NOV} data (used +to generate lines in the summary buffer) stored in +@code{.nnmaildir/nov/uniq}. There is no +@code{nnmaildir-generate-nov-databases} function. (There isn't much +need for it---an article's @acronym{NOV} data is updated automatically +when the article or @code{nnmail-extra-headers} has changed.) You can +force @code{nnmaildir} to regenerate the @acronym{NOV} data for a +single article simply by deleting the corresponding @acronym{NOV} +file, but @emph{beware}: this will also cause @code{nnmaildir} to +assign a new article number for this article, which may cause trouble +with @code{seen} marks, the Agent, and the cache. + +@subsubsection Article marks +An article identified by @code{uniq} is considered to have the mark +@code{flag} when the file @file{.nnmaildir/marks/flag/uniq} exists. +When Gnus asks @code{nnmaildir} for a group's marks, @code{nnmaildir} +looks for such files and reports the set of marks it finds. When Gnus +asks @code{nnmaildir} to store a new set of marks, @code{nnmaildir} +creates and deletes the corresponding files as needed. (Actually, +rather than create a new file for each mark, it just creates hard +links to @file{.nnmaildir/markfile}, to save inodes.) + +You can invent new marks by creating a new directory in +@file{.nnmaildir/marks/}. You can tar up a maildir and remove it from +your server, untar it later, and keep your marks. You can add and +remove marks yourself by creating and deleting mark files. If you do +this while Gnus is running and your @code{nnmaildir} server is open, +it's best to exit all summary buffers for @code{nnmaildir} groups and +type @kbd{s} in the group buffer first, and to type @kbd{g} or +@kbd{M-g} in the group buffer afterwards. Otherwise, Gnus might not +pick up the changes, and might undo them. + + +@node Mail Folders +@subsubsection Mail Folders +@cindex nnfolder +@cindex mbox folders +@cindex mail folders + +@code{nnfolder} is a back end for storing each mail group in a +separate file. Each file is in the standard Un*x mbox format. +@code{nnfolder} will add extra headers to keep track of article +numbers and arrival dates. + +@cindex self contained nnfolder servers +@cindex marks +When the marks file is used (which it is by default), @code{nnfolder} +servers have the property that you may backup them using @code{tar} or +similar, and later be able to restore them into Gnus (by adding the +proper @code{nnfolder} server) and have all your marks be preserved. +Marks for a group are usually stored in a file named as the mbox file +with @code{.mrk} concatenated to it (but see +@code{nnfolder-marks-file-suffix}) within the @code{nnfolder} +directory. Individual @code{nnfolder} groups are also possible to +backup, use @kbd{G m} to restore the group (after restoring the backup +into the @code{nnfolder} directory). + +Virtual server settings: + +@table @code +@item nnfolder-directory +@vindex nnfolder-directory +All the @code{nnfolder} mail boxes will be stored under this +directory. The default is the value of @code{message-directory} +(whose default is @file{~/Mail}) + +@item nnfolder-active-file +@vindex nnfolder-active-file +The name of the active file. The default is @file{~/Mail/active}. + +@item nnfolder-newsgroups-file +@vindex nnfolder-newsgroups-file +The name of the group descriptions file. @xref{Newsgroups File +Format}. The default is @file{~/Mail/newsgroups} + +@item nnfolder-get-new-mail +@vindex nnfolder-get-new-mail +If non-@code{nil}, @code{nnfolder} will read incoming mail. The +default is @code{t} + +@item nnfolder-save-buffer-hook +@vindex nnfolder-save-buffer-hook +@cindex backup files +Hook run before saving the folders. Note that Emacs does the normal +backup renaming of files even with the @code{nnfolder} buffers. If +you wish to switch this off, you could say something like the +following in your @file{.emacs} file: + +@lisp +(defun turn-off-backup () + (set (make-local-variable 'backup-inhibited) t)) + +(add-hook 'nnfolder-save-buffer-hook 'turn-off-backup) +@end lisp + +@item nnfolder-delete-mail-hook +@vindex nnfolder-delete-mail-hook +Hook run in a buffer narrowed to the message that is to be deleted. +This function can be used to copy the message to somewhere else, or to +extract some information from it before removing it. + +@item nnfolder-nov-is-evil +@vindex nnfolder-nov-is-evil +If non-@code{nil}, this back end will ignore any @acronym{NOV} files. The +default is @code{nil}. + +@item nnfolder-nov-file-suffix +@vindex nnfolder-nov-file-suffix +The extension for @acronym{NOV} files. The default is @file{.nov}. + +@item nnfolder-nov-directory +@vindex nnfolder-nov-directory +The directory where the @acronym{NOV} files should be stored. If +@code{nil}, @code{nnfolder-directory} is used. + +@item nnfolder-marks-is-evil +@vindex nnfolder-marks-is-evil +If non-@code{nil}, this back end will ignore any @sc{marks} files. The +default is @code{nil}. + +@item nnfolder-marks-file-suffix +@vindex nnfolder-marks-file-suffix +The extension for @sc{marks} files. The default is @file{.mrk}. + +@item nnfolder-marks-directory +@vindex nnfolder-marks-directory +The directory where the @sc{marks} files should be stored. If +@code{nil}, @code{nnfolder-directory} is used. + +@end table + + +@findex nnfolder-generate-active-file +@kindex M-x nnfolder-generate-active-file +If you have lots of @code{nnfolder}-like files you'd like to read with +@code{nnfolder}, you can use the @kbd{M-x nnfolder-generate-active-file} +command to make @code{nnfolder} aware of all likely files in +@code{nnfolder-directory}. This only works if you use long file names, +though. + +@node Comparing Mail Back Ends +@subsubsection Comparing Mail Back Ends + +First, just for terminology, the @dfn{back end} is the common word for a +low-level access method---a transport, if you will, by which something +is acquired. The sense is that one's mail has to come from somewhere, +and so selection of a suitable back end is required in order to get that +mail within spitting distance of Gnus. + +The same concept exists for Usenet itself: Though access to articles is +typically done by @acronym{NNTP} these days, once upon a midnight dreary, everyone +in the world got at Usenet by running a reader on the machine where the +articles lay (the machine which today we call an @acronym{NNTP} server), and +access was by the reader stepping into the articles' directory spool +area directly. One can still select between either the @code{nntp} or +@code{nnspool} back ends, to select between these methods, if one happens +actually to live on the server (or can see its spool directly, anyway, +via NFS). + +The goal in selecting a mail back end is to pick one which +simultaneously represents a suitable way of dealing with the original +format plus leaving mail in a form that is convenient to use in the +future. Here are some high and low points on each: + +@table @code +@item nnmbox + +UNIX systems have historically had a single, very common, and well- +defined format. All messages arrive in a single @dfn{spool file}, and +they are delineated by a line whose regular expression matches +@samp{^From_}. (My notational use of @samp{_} is to indicate a space, +to make it clear in this instance that this is not the RFC-specified +@samp{From:} header.) Because Emacs and therefore Gnus emanate +historically from the Unix environment, it is simplest if one does not +mess a great deal with the original mailbox format, so if one chooses +this back end, Gnus' primary activity in getting mail from the real spool +area to Gnus' preferred directory is simply to copy it, with no +(appreciable) format change in the process. It is the ``dumbest'' way +to move mail into availability in the Gnus environment. This makes it +fast to move into place, but slow to parse, when Gnus has to look at +what's where. + +@item nnbabyl + +Once upon a time, there was the DEC-10 and DEC-20, running operating +systems called TOPS and related things, and the usual (only?) mail +reading environment was a thing called Babyl. I don't know what format +was used for mail landing on the system, but Babyl had its own internal +format to which mail was converted, primarily involving creating a +spool-file-like entity with a scheme for inserting Babyl-specific +headers and status bits above the top of each message in the file. +Rmail was Emacs' first mail reader, it was written by Richard Stallman, +and Stallman came out of that TOPS/Babyl environment, so he wrote Rmail +to understand the mail files folks already had in existence. Gnus (and +VM, for that matter) continue to support this format because it's +perceived as having some good qualities in those mailer-specific +headers/status bits stuff. Rmail itself still exists as well, of +course, and is still maintained by Stallman. + +Both of the above forms leave your mail in a single file on your +file system, and they must parse that entire file each time you take a +look at your mail. + +@item nnml + +@code{nnml} is the back end which smells the most as though you were +actually operating with an @code{nnspool}-accessed Usenet system. (In +fact, I believe @code{nnml} actually derived from @code{nnspool} code, +lo these years ago.) One's mail is taken from the original spool file, +and is then cut up into individual message files, 1:1. It maintains a +Usenet-style active file (analogous to what one finds in an INN- or +CNews-based news system in (for instance) @file{/var/lib/news/active}, +or what is returned via the @samp{NNTP LIST} verb) and also creates +@dfn{overview} files for efficient group entry, as has been defined for +@acronym{NNTP} servers for some years now. It is slower in mail-splitting, +due to the creation of lots of files, updates to the @code{nnml} active +file, and additions to overview files on a per-message basis, but it is +extremely fast on access because of what amounts to the indexing support +provided by the active file and overviews. + +@code{nnml} costs @dfn{inodes} in a big way; that is, it soaks up the +resource which defines available places in the file system to put new +files. Sysadmins take a dim view of heavy inode occupation within +tight, shared file systems. But if you live on a personal machine where +the file system is your own and space is not at a premium, @code{nnml} +wins big. + +It is also problematic using this back end if you are living in a +FAT16-based Windows world, since much space will be wasted on all these +tiny files. + +@item nnmh + +The Rand MH mail-reading system has been around UNIX systems for a very +long time; it operates by splitting one's spool file of messages into +individual files, but with little or no indexing support---@code{nnmh} +is considered to be semantically equivalent to ``@code{nnml} without +active file or overviews''. This is arguably the worst choice, because +one gets the slowness of individual file creation married to the +slowness of access parsing when learning what's new in one's groups. + +@item nnfolder + +Basically the effect of @code{nnfolder} is @code{nnmbox} (the first +method described above) on a per-group basis. That is, @code{nnmbox} +itself puts @emph{all} one's mail in one file; @code{nnfolder} provides a +little bit of optimization to this so that each of one's mail groups has +a Unix mail box file. It's faster than @code{nnmbox} because each group +can be parsed separately, and still provides the simple Unix mail box +format requiring minimal effort in moving the mail around. In addition, +it maintains an ``active'' file making it much faster for Gnus to figure +out how many messages there are in each separate group. + +If you have groups that are expected to have a massive amount of +messages, @code{nnfolder} is not the best choice, but if you receive +only a moderate amount of mail, @code{nnfolder} is probably the most +friendly mail back end all over. + +@item nnmaildir + +For configuring expiry and other things, @code{nnmaildir} uses +incompatible group parameters, slightly different from those of other +mail back ends. + +@code{nnmaildir} is largely similar to @code{nnml}, with some notable +differences. Each message is stored in a separate file, but the +filename is unrelated to the article number in Gnus. @code{nnmaildir} +also stores the equivalent of @code{nnml}'s overview files in one file +per article, so it uses about twice as many inodes as @code{nnml}. (Use +@code{df -i} to see how plentiful your inode supply is.) If this slows +you down or takes up very much space, consider switching to +@uref{http://www.namesys.com/, ReiserFS} or another non-block-structured +file system. + +Since maildirs don't require locking for delivery, the maildirs you use +as groups can also be the maildirs your mail is directly delivered to. +This means you can skip Gnus' mail splitting if your mail is already +organized into different mailboxes during delivery. A @code{directory} +entry in @code{mail-sources} would have a similar effect, but would +require one set of mailboxes for spooling deliveries (in mbox format, +thus damaging message bodies), and another set to be used as groups (in +whatever format you like). A maildir has a built-in spool, in the +@code{new/} subdirectory. Beware that currently, mail moved from +@code{new/} to @code{cur/} instead of via mail splitting will not +undergo treatment such as duplicate checking. + +@code{nnmaildir} stores article marks for a given group in the +corresponding maildir, in a way designed so that it's easy to manipulate +them from outside Gnus. You can tar up a maildir, unpack it somewhere +else, and still have your marks. @code{nnml} also stores marks, but +it's not as easy to work with them from outside Gnus as with +@code{nnmaildir}. + +@code{nnmaildir} uses a significant amount of memory to speed things up. +(It keeps in memory some of the things that @code{nnml} stores in files +and that @code{nnmh} repeatedly parses out of message files.) If this +is a problem for you, you can set the @code{nov-cache-size} group +parameter to something small (0 would probably not work, but 1 probably +would) to make it use less memory. This caching will probably be +removed in the future. + +Startup is likely to be slower with @code{nnmaildir} than with other +back ends. Everything else is likely to be faster, depending in part +on your file system. + +@code{nnmaildir} does not use @code{nnoo}, so you cannot use @code{nnoo} +to write an @code{nnmaildir}-derived back end. + +@end table + + +@node Browsing the Web +@section Browsing the Web +@cindex web +@cindex browsing the web +@cindex www +@cindex http + +Web-based discussion forums are getting more and more popular. On many +subjects, the web-based forums have become the most important forums, +eclipsing the importance of mailing lists and news groups. The reason +is easy to understand---they are friendly to new users; you just point +and click, and there's the discussion. With mailing lists, you have to +go through a cumbersome subscription procedure, and most people don't +even know what a news group is. + +The problem with this scenario is that web browsers are not very good at +being newsreaders. They do not keep track of what articles you've read; +they do not allow you to score on subjects you're interested in; they do +not allow off-line browsing; they require you to click around and drive +you mad in the end. + +So---if web browsers suck at reading discussion forums, why not use Gnus +to do it instead? + +Gnus has been getting a bit of a collection of back ends for providing +interfaces to these sources. + +@menu +* Archiving Mail:: +* Web Searches:: Creating groups from articles that match a string. +* Slashdot:: Reading the Slashdot comments. +* Ultimate:: The Ultimate Bulletin Board systems. +* Web Archive:: Reading mailing list archived on web. +* RSS:: Reading RDF site summary. +* Customizing W3:: Doing stuff to Emacs/W3 from Gnus. +@end menu + +All the web sources require Emacs/W3 and the url library or those +alternatives to work. + +The main caveat with all these web sources is that they probably won't +work for a very long time. Gleaning information from the @acronym{HTML} data +is guesswork at best, and when the layout is altered, the Gnus back end +will fail. If you have reasonably new versions of these back ends, +though, you should be ok. + +One thing all these Web methods have in common is that the Web sources +are often down, unavailable or just plain too slow to be fun. In those +cases, it makes a lot of sense to let the Gnus Agent (@pxref{Gnus +Unplugged}) handle downloading articles, and then you can read them at +leisure from your local disk. No more World Wide Wait for you. + +@node Archiving Mail +@subsection Archiving Mail +@cindex archiving mail +@cindex backup of mail + +Some of the back ends, notably @code{nnml}, @code{nnfolder}, and +@code{nnmaildir}, now actually store the article marks with each group. +For these servers, archiving and restoring a group while preserving +marks is fairly simple. + +(Preserving the group level and group parameters as well still +requires ritual dancing and sacrifices to the @file{.newsrc.eld} deity +though.) + +To archive an entire @code{nnml}, @code{nnfolder}, or @code{nnmaildir} +server, take a recursive copy of the server directory. There is no need +to shut down Gnus, so archiving may be invoked by @code{cron} or +similar. You restore the data by restoring the directory tree, and +adding a server definition pointing to that directory in Gnus. The +@ref{Article Backlog}, @ref{Asynchronous Fetching} and other things +might interfere with overwriting data, so you may want to shut down Gnus +before you restore the data. + +It is also possible to archive individual @code{nnml}, +@code{nnfolder}, or @code{nnmaildir} groups, while preserving marks. +For @code{nnml} or @code{nnmaildir}, you copy all files in the group's +directory. For @code{nnfolder} you need to copy both the base folder +file itself (@file{FOO}, say), and the marks file (@file{FOO.mrk} in +this example). Restoring the group is done with @kbd{G m} from the Group +buffer. The last step makes Gnus notice the new directory. +@code{nnmaildir} notices the new directory automatically, so @kbd{G m} +is unnecessary in that case. + +@node Web Searches +@subsection Web Searches +@cindex nnweb +@cindex Google +@cindex dejanews +@cindex gmane +@cindex Usenet searches +@cindex searching the Usenet + +It's, like, too neat to search the Usenet for articles that match a +string, but it, like, totally @emph{sucks}, like, totally, to use one of +those, like, Web browsers, and you, like, have to, rilly, like, look at +the commercials, so, like, with Gnus you can do @emph{rad}, rilly, +searches without having to use a browser. + +The @code{nnweb} back end allows an easy interface to the mighty search +engine. You create an @code{nnweb} group, enter a search pattern, and +then enter the group and read the articles like you would any normal +group. The @kbd{G w} command in the group buffer (@pxref{Foreign +Groups}) will do this in an easy-to-use fashion. + +@code{nnweb} groups don't really lend themselves to being solid +groups---they have a very fleeting idea of article numbers. In fact, +each time you enter an @code{nnweb} group (not even changing the search +pattern), you are likely to get the articles ordered in a different +manner. Not even using duplicate suppression (@pxref{Duplicate +Suppression}) will help, since @code{nnweb} doesn't even know the +@code{Message-ID} of the articles before reading them using some search +engines (Google, for instance). The only possible way to keep track +of which articles you've read is by scoring on the @code{Date} +header---mark all articles posted before the last date you read the +group as read. + +If the search engine changes its output substantially, @code{nnweb} +won't be able to parse it and will fail. One could hardly fault the Web +providers if they were to do this---their @emph{raison d'être} is to +make money off of advertisements, not to provide services to the +community. Since @code{nnweb} washes the ads off all the articles, one +might think that the providers might be somewhat miffed. We'll see. + +You must have the @code{url} and @code{W3} package or those alternatives +(try @code{customize-group} on the @samp{mm-url} variable group) +installed to be able to use @code{nnweb}. + +Virtual server variables: + +@table @code +@item nnweb-type +@vindex nnweb-type +What search engine type is being used. The currently supported types +are @code{google}, @code{dejanews}, and @code{gmane}. Note that +@code{dejanews} is an alias to @code{google}. + +@item nnweb-search +@vindex nnweb-search +The search string to feed to the search engine. + +@item nnweb-max-hits +@vindex nnweb-max-hits +Advisory maximum number of hits per search to display. The default is +999. + +@item nnweb-type-definition +@vindex nnweb-type-definition +Type-to-definition alist. This alist says what @code{nnweb} should do +with the various search engine types. The following elements must be +present: + +@table @code +@item article +Function to decode the article and provide something that Gnus +understands. + +@item map +Function to create an article number to message header and URL alist. + +@item search +Function to send the search string to the search engine. + +@item address +The address the aforementioned function should send the search string +to. + +@item id +Format string URL to fetch an article by @code{Message-ID}. +@end table + +@end table + + +@node Slashdot +@subsection Slashdot +@cindex Slashdot +@cindex nnslashdot + +@uref{http://slashdot.org/, Slashdot} is a popular news site, with +lively discussion following the news articles. @code{nnslashdot} will +let you read this forum in a convenient manner. + +The easiest way to read this source is to put something like the +following in your @file{~/.gnus.el} file: + +@lisp +(setq gnus-secondary-select-methods + '((nnslashdot ""))) +@end lisp + +This will make Gnus query the @code{nnslashdot} back end for new comments +and groups. The @kbd{F} command will subscribe each new news article as +a new Gnus group, and you can read the comments by entering these +groups. (Note that the default subscription method is to subscribe new +groups as zombies. Other methods are available (@pxref{Subscription +Methods}). + +If you want to remove an old @code{nnslashdot} group, the @kbd{G DEL} +command is the most handy tool (@pxref{Foreign Groups}). + +When following up to @code{nnslashdot} comments (or posting new +comments), some light @acronym{HTML}izations will be performed. In +particular, text quoted with @samp{> } will be quoted with +@samp{blockquote} instead, and signatures will have @samp{br} added to +the end of each line. Other than that, you can just write @acronym{HTML} +directly into the message buffer. Note that Slashdot filters out some +@acronym{HTML} forms. + +The following variables can be altered to change its behavior: + +@table @code +@item nnslashdot-threaded +Whether @code{nnslashdot} should display threaded groups or not. The +default is @code{t}. To be able to display threads, @code{nnslashdot} +has to retrieve absolutely all comments in a group upon entry. If a +threaded display is not required, @code{nnslashdot} will only retrieve +the comments that are actually wanted by the user. Threading is nicer, +but much, much slower than unthreaded. + +@item nnslashdot-login-name +@vindex nnslashdot-login-name +The login name to use when posting. + +@item nnslashdot-password +@vindex nnslashdot-password +The password to use when posting. + +@item nnslashdot-directory +@vindex nnslashdot-directory +Where @code{nnslashdot} will store its files. The default is +@file{~/News/slashdot/}. + +@item nnslashdot-active-url +@vindex nnslashdot-active-url +The @acronym{URL} format string that will be used to fetch the +information on news articles and comments. The default is@* +@samp{http://slashdot.org/search.pl?section=&min=%d}. + +@item nnslashdot-comments-url +@vindex nnslashdot-comments-url +The @acronym{URL} format string that will be used to fetch comments. + +@item nnslashdot-article-url +@vindex nnslashdot-article-url +The @acronym{URL} format string that will be used to fetch the news +article. The default is +@samp{http://slashdot.org/article.pl?sid=%s&mode=nocomment}. + +@item nnslashdot-threshold +@vindex nnslashdot-threshold +The score threshold. The default is -1. + +@item nnslashdot-group-number +@vindex nnslashdot-group-number +The number of old groups, in addition to the ten latest, to keep +updated. The default is 0. + +@end table + + + +@node Ultimate +@subsection Ultimate +@cindex nnultimate +@cindex Ultimate Bulletin Board + +@uref{http://www.ultimatebb.com/, The Ultimate Bulletin Board} is +probably the most popular Web bulletin board system used. It has a +quite regular and nice interface, and it's possible to get the +information Gnus needs to keep groups updated. + +The easiest way to get started with @code{nnultimate} is to say +something like the following in the group buffer: @kbd{B nnultimate RET +http://www.tcj.com/messboard/ubbcgi/ RET}. (Substitute the @acronym{URL} +(not including @samp{Ultimate.cgi} or the like at the end) for a forum +you're interested in; there's quite a list of them on the Ultimate web +site.) Then subscribe to the groups you're interested in from the +server buffer, and read them from the group buffer. + +The following @code{nnultimate} variables can be altered: + +@table @code +@item nnultimate-directory +@vindex nnultimate-directory +The directory where @code{nnultimate} stores its files. The default is@* +@file{~/News/ultimate/}. +@end table + + +@node Web Archive +@subsection Web Archive +@cindex nnwarchive +@cindex Web Archive + +Some mailing lists only have archives on Web servers, such as +@uref{http://www.egroups.com/} and +@uref{http://www.mail-archive.com/}. It has a quite regular and nice +interface, and it's possible to get the information Gnus needs to keep +groups updated. + +@findex gnus-group-make-warchive-group +The easiest way to get started with @code{nnwarchive} is to say +something like the following in the group buffer: @kbd{M-x +gnus-group-make-warchive-group RET @var{an_egroup} RET egroups RET +www.egroups.com RET @var{your@@email.address} RET}. (Substitute the +@var{an_egroup} with the mailing list you subscribed, the +@var{your@@email.address} with your email address.), or to browse the +back end by @kbd{B nnwarchive RET mail-archive RET}. + +The following @code{nnwarchive} variables can be altered: + +@table @code +@item nnwarchive-directory +@vindex nnwarchive-directory +The directory where @code{nnwarchive} stores its files. The default is@* +@file{~/News/warchive/}. + +@item nnwarchive-login +@vindex nnwarchive-login +The account name on the web server. + +@item nnwarchive-passwd +@vindex nnwarchive-passwd +The password for your account on the web server. +@end table + +@node RSS +@subsection RSS +@cindex nnrss +@cindex RSS + +Some web sites have an RDF Site Summary (@acronym{RSS}). +@acronym{RSS} is a format for summarizing headlines from news related +sites (such as BBC or CNN). But basically anything list-like can be +presented as an @acronym{RSS} feed: weblogs, changelogs or recent +changes to a wiki (e.g. @url{http://cliki.net/recent-changes.rdf}). + +@acronym{RSS} has a quite regular and nice interface, and it's +possible to get the information Gnus needs to keep groups updated. + +Note: you had better use Emacs which supports the @code{utf-8} coding +system because @acronym{RSS} uses UTF-8 for encoding non-@acronym{ASCII} +text by default. It is also used by default for non-@acronym{ASCII} +group names. + +@kindex G R (Group) +Use @kbd{G R} from the group buffer to subscribe to a feed---you will be +prompted for the location, the title and the description of the feed. +The title, which allows any characters, will be used for the group name +and the name of the group data file. The description can be omitted. + +An easy way to get started with @code{nnrss} is to say something like +the following in the group buffer: @kbd{B nnrss RET RET y}, then +subscribe to groups. + +The @code{nnrss} back end saves the group data file in +@code{nnrss-directory} (see below) for each @code{nnrss} group. File +names containing non-@acronym{ASCII} characters will be encoded by the +coding system specified with the @code{nnmail-pathname-coding-system} +variable. If it is @code{nil}, in Emacs the coding system defaults to +the value of @code{default-file-name-coding-system}. If you are using +XEmacs and want to use non-@acronym{ASCII} group names, you should set +the value for the @code{nnmail-pathname-coding-system} variable properly. + +The @code{nnrss} back end generates @samp{multipart/alternative} +@acronym{MIME} articles in which each contains a @samp{text/plain} part +and a @samp{text/html} part. + +@cindex OPML +You can also use the following commands to import and export your +subscriptions from a file in @acronym{OPML} format (Outline Processor +Markup Language). + +@defun nnrss-opml-import file +Prompt for an @acronym{OPML} file, and subscribe to each feed in the +file. +@end defun + +@defun nnrss-opml-export +Write your current @acronym{RSS} subscriptions to a buffer in +@acronym{OPML} format. +@end defun + +The following @code{nnrss} variables can be altered: + +@table @code +@item nnrss-directory +@vindex nnrss-directory +The directory where @code{nnrss} stores its files. The default is +@file{~/News/rss/}. + +@item nnrss-file-coding-system +@vindex nnrss-file-coding-system +The coding system used when reading and writing the @code{nnrss} groups +data files. The default is the value of +@code{mm-universal-coding-system} (which defaults to @code{emacs-mule} +in Emacs or @code{escape-quoted} in XEmacs). + +@item nnrss-use-local +@vindex nnrss-use-local +@findex nnrss-generate-download-script +If you set @code{nnrss-use-local} to @code{t}, @code{nnrss} will read +the feeds from local files in @code{nnrss-directory}. You can use +the command @code{nnrss-generate-download-script} to generate a +download script using @command{wget}. + +@item nnrss-wash-html-in-text-plain-parts +Non-@code{nil} means that @code{nnrss} renders text in @samp{text/plain} +parts as @acronym{HTML}. The function specified by the +@code{mm-text-html-renderer} variable (@pxref{Display Customization, +,Display Customization, emacs-mime, The Emacs MIME Manual}) will be used +to render text. If it is @code{nil}, which is the default, text will +simply be folded. Leave it @code{nil} if you prefer to see +@samp{text/html} parts. +@end table + +The following code may be helpful, if you want to show the description in +the summary buffer. + +@lisp +(add-to-list 'nnmail-extra-headers nnrss-description-field) +(setq gnus-summary-line-format "%U%R%z%I%(%[%4L: %-15,15f%]%) %s%uX\n") + +(defun gnus-user-format-function-X (header) + (let ((descr + (assq nnrss-description-field (mail-header-extra header)))) + (if descr (concat "\n\t" (cdr descr)) ""))) +@end lisp + +The following code may be useful to open an nnrss url directly from the +summary buffer. + +@lisp +(require 'browse-url) + +(defun browse-nnrss-url( arg ) + (interactive "p") + (let ((url (assq nnrss-url-field + (mail-header-extra + (gnus-data-header + (assq (gnus-summary-article-number) + gnus-newsgroup-data)))))) + (if url + (progn + (browse-url (cdr url)) + (gnus-summary-mark-as-read-forward 1)) + (gnus-summary-scroll-up arg)))) + +(eval-after-load "gnus" + #'(define-key gnus-summary-mode-map + (kbd "") 'browse-nnrss-url)) +(add-to-list 'nnmail-extra-headers nnrss-url-field) +@end lisp + +Even if you have added @code{"text/html"} to the +@code{mm-discouraged-alternatives} variable (@pxref{Display +Customization, ,Display Customization, emacs-mime, The Emacs MIME +Manual}) since you don't want to see @acronym{HTML} parts, it might be +more useful especially in @code{nnrss} groups to display +@samp{text/html} parts. Here's an example of setting +@code{mm-discouraged-alternatives} as a group parameter (@pxref{Group +Parameters}) in order to display @samp{text/html} parts only in +@code{nnrss} groups: + +@lisp +;; @r{Set the default value of @code{mm-discouraged-alternatives}.} +(eval-after-load "gnus-sum" + '(add-to-list + 'gnus-newsgroup-variables + '(mm-discouraged-alternatives + . '("text/html" "image/.*")))) + +;; @r{Display @samp{text/html} parts in @code{nnrss} groups.} +(add-to-list + 'gnus-parameters + '("\\`nnrss:" (mm-discouraged-alternatives nil))) +@end lisp + + +@node Customizing W3 +@subsection Customizing W3 +@cindex W3 +@cindex html +@cindex url +@cindex Netscape + +Gnus uses the url library to fetch web pages and Emacs/W3 (or those +alternatives) to display web pages. Emacs/W3 is documented in its own +manual, but there are some things that may be more relevant for Gnus +users. + +For instance, a common question is how to make Emacs/W3 follow links +using the @code{browse-url} functions (which will call some external web +browser like Netscape). Here's one way: + +@lisp +(eval-after-load "w3" + '(progn + (fset 'w3-fetch-orig (symbol-function 'w3-fetch)) + (defun w3-fetch (&optional url target) + (interactive (list (w3-read-url-with-default))) + (if (eq major-mode 'gnus-article-mode) + (browse-url url) + (w3-fetch-orig url target))))) +@end lisp + +Put that in your @file{.emacs} file, and hitting links in W3-rendered +@acronym{HTML} in the Gnus article buffers will use @code{browse-url} to +follow the link. + + +@node IMAP +@section IMAP +@cindex nnimap +@cindex @acronym{IMAP} + +@acronym{IMAP} is a network protocol for reading mail (or news, or @dots{}), +think of it as a modernized @acronym{NNTP}. Connecting to a @acronym{IMAP} +server is much similar to connecting to a news server, you just +specify the network address of the server. + +@acronym{IMAP} has two properties. First, @acronym{IMAP} can do +everything that @acronym{POP} can, it can hence be viewed as a +@acronym{POP++}. Secondly, @acronym{IMAP} is a mail storage protocol, +similar to @acronym{NNTP} being a news storage protocol---however, +@acronym{IMAP} offers more features than @acronym{NNTP} because news +is more or less read-only whereas mail is read-write. + +If you want to use @acronym{IMAP} as a @acronym{POP++}, use an imap +entry in @code{mail-sources}. With this, Gnus will fetch mails from +the @acronym{IMAP} server and store them on the local disk. This is +not the usage described in this section---@xref{Mail Sources}. + +If you want to use @acronym{IMAP} as a mail storage protocol, use an nnimap +entry in @code{gnus-secondary-select-methods}. With this, Gnus will +manipulate mails stored on the @acronym{IMAP} server. This is the kind of +usage explained in this section. + +A server configuration in @file{~/.gnus.el} with a few @acronym{IMAP} +servers might look something like the following. (Note that for +@acronym{TLS}/@acronym{SSL}, you need external programs and libraries, +see below.) + +@lisp +(setq gnus-secondary-select-methods + '((nnimap "simpleserver") ; @r{no special configuration} + ; @r{perhaps a ssh port forwarded server:} + (nnimap "dolk" + (nnimap-address "localhost") + (nnimap-server-port 1430)) + ; @r{a UW server running on localhost} + (nnimap "barbar" + (nnimap-server-port 143) + (nnimap-address "localhost") + (nnimap-list-pattern ("INBOX" "mail/*"))) + ; @r{anonymous public cyrus server:} + (nnimap "cyrus.andrew.cmu.edu" + (nnimap-authenticator anonymous) + (nnimap-list-pattern "archive.*") + (nnimap-stream network)) + ; @r{a ssl server on a non-standard port:} + (nnimap "vic20" + (nnimap-address "vic20.somewhere.com") + (nnimap-server-port 9930) + (nnimap-stream ssl)))) +@end lisp + +After defining the new server, you can subscribe to groups on the +server using normal Gnus commands such as @kbd{U} in the Group Buffer +(@pxref{Subscription Commands}) or via the Server Buffer +(@pxref{Server Buffer}). + +The following variables can be used to create a virtual @code{nnimap} +server: + +@table @code + +@item nnimap-address +@vindex nnimap-address + +The address of the remote @acronym{IMAP} server. Defaults to the virtual +server name if not specified. + +@item nnimap-server-port +@vindex nnimap-server-port +Port on server to contact. Defaults to port 143, or 993 for @acronym{TLS}/@acronym{SSL}. + +Note that this should be an integer, example server specification: + +@lisp +(nnimap "mail.server.com" + (nnimap-server-port 4711)) +@end lisp + +@item nnimap-list-pattern +@vindex nnimap-list-pattern +String or list of strings of mailboxes to limit available groups to. +This is used when the server has very many mailboxes and you're only +interested in a few---some servers export your home directory via +@acronym{IMAP}, you'll probably want to limit the mailboxes to those in +@file{~/Mail/*} then. + +The string can also be a cons of REFERENCE and the string as above, what +REFERENCE is used for is server specific, but on the University of +Washington server it's a directory that will be concatenated with the +mailbox. + +Example server specification: + +@lisp +(nnimap "mail.server.com" + (nnimap-list-pattern ("INBOX" "Mail/*" "alt.sex.*" + ("~friend/Mail/" . "list/*")))) +@end lisp + +@item nnimap-stream +@vindex nnimap-stream +The type of stream used to connect to your server. By default, nnimap +will detect and automatically use all of the below, with the exception +of @acronym{TLS}/@acronym{SSL}. (@acronym{IMAP} over +@acronym{TLS}/@acronym{SSL} is being replaced by STARTTLS, which can +be automatically detected, but it's not widely deployed yet.) + +Example server specification: + +@lisp +(nnimap "mail.server.com" + (nnimap-stream ssl)) +@end lisp + +Please note that the value of @code{nnimap-stream} is a symbol! + +@itemize @bullet +@item +@dfn{gssapi:} Connect with GSSAPI (usually Kerberos 5). Requires the +@samp{gsasl} or @samp{imtest} program. +@item +@dfn{kerberos4:} Connect with Kerberos 4. Requires the @samp{imtest} program. +@item +@dfn{starttls:} Connect via the STARTTLS extension (similar to +@acronym{TLS}/@acronym{SSL}). Requires the external library @samp{starttls.el} and program +@samp{starttls}. +@item +@dfn{tls:} Connect through @acronym{TLS}. Requires GNUTLS (the program +@samp{gnutls-cli}). +@item +@dfn{ssl:} Connect through @acronym{SSL}. Requires OpenSSL (the program +@samp{openssl}) or SSLeay (@samp{s_client}). +@item +@dfn{shell:} Use a shell command to start @acronym{IMAP} connection. +@item +@dfn{network:} Plain, TCP/IP network connection. +@end itemize + +@vindex imap-kerberos4-program +The @samp{imtest} program is shipped with Cyrus IMAPD. If you're +using @samp{imtest} from Cyrus IMAPD < 2.0.14 (which includes version +1.5.x and 1.6.x) you need to frob @code{imap-process-connection-type} +to make @code{imap.el} use a pty instead of a pipe when communicating +with @samp{imtest}. You will then suffer from a line length +restrictions on @acronym{IMAP} commands, which might make Gnus seem to hang +indefinitely if you have many articles in a mailbox. The variable +@code{imap-kerberos4-program} contain parameters to pass to the imtest +program. + +For @acronym{TLS} connection, the @code{gnutls-cli} program from GNUTLS is +needed. It is available from +@uref{http://www.gnu.org/software/gnutls/}. + +@vindex imap-gssapi-program +This parameter specifies a list of command lines that invoke a GSSAPI +authenticated @acronym{IMAP} stream in a subshell. They are tried +sequentially until a connection is made, or the list has been +exhausted. By default, @samp{gsasl} from GNU SASL, available from +@uref{http://www.gnu.org/software/gsasl/}, and the @samp{imtest} +program from Cyrus IMAPD (see @code{imap-kerberos4-program}), are +tried. + +@vindex imap-ssl-program +For @acronym{SSL} connections, the OpenSSL program is available from +@uref{http://www.openssl.org/}. OpenSSL was formerly known as SSLeay, +and nnimap support it too---although the most recent versions of +SSLeay, 0.9.x, are known to have serious bugs making it +useless. Earlier versions, especially 0.8.x, of SSLeay are known to +work. The variable @code{imap-ssl-program} contain parameters to pass +to OpenSSL/SSLeay. + +@vindex imap-shell-program +@vindex imap-shell-host +For @acronym{IMAP} connections using the @code{shell} stream, the variable +@code{imap-shell-program} specify what program to call. + +@item nnimap-authenticator +@vindex nnimap-authenticator + +The authenticator used to connect to the server. By default, nnimap +will use the most secure authenticator your server is capable of. + +Example server specification: + +@lisp +(nnimap "mail.server.com" + (nnimap-authenticator anonymous)) +@end lisp + +Please note that the value of @code{nnimap-authenticator} is a symbol! + +@itemize @bullet +@item +@dfn{gssapi:} GSSAPI (usually kerberos 5) authentication. Requires +external program @code{gsasl} or @code{imtest}. +@item +@dfn{kerberos4:} Kerberos 4 authentication. Requires external program +@code{imtest}. +@item +@dfn{digest-md5:} Encrypted username/password via DIGEST-MD5. Requires +external library @code{digest-md5.el}. +@item +@dfn{cram-md5:} Encrypted username/password via CRAM-MD5. +@item +@dfn{login:} Plain-text username/password via LOGIN. +@item +@dfn{anonymous:} Login as ``anonymous'', supplying your email address as password. +@end itemize + +@item nnimap-expunge-on-close +@cindex expunging +@vindex nnimap-expunge-on-close +Unlike Parmenides the @acronym{IMAP} designers have decided things that +don't exist actually do exist. More specifically, @acronym{IMAP} has +this concept of marking articles @code{Deleted} which doesn't actually +delete them, and this (marking them @code{Deleted}, that is) is what +nnimap does when you delete an article in Gnus (with @kbd{B DEL} or +similar). + +Since the articles aren't really removed when we mark them with the +@code{Deleted} flag we'll need a way to actually delete them. Feel like +running in circles yet? + +Traditionally, nnimap has removed all articles marked as @code{Deleted} +when closing a mailbox but this is now configurable by this server +variable. + +The possible options are: + +@table @code + +@item always +The default behavior, delete all articles marked as ``Deleted'' when +closing a mailbox. +@item never +Never actually delete articles. Currently there is no way of showing +the articles marked for deletion in nnimap, but other @acronym{IMAP} clients +may allow you to do this. If you ever want to run the EXPUNGE command +manually, @xref{Expunging mailboxes}. +@item ask +When closing mailboxes, nnimap will ask if you wish to expunge deleted +articles or not. + +@end table + +@item nnimap-importantize-dormant +@vindex nnimap-importantize-dormant + +If non-@code{nil} (the default), marks dormant articles as ticked (as +well), for other @acronym{IMAP} clients. Within Gnus, dormant articles will +naturally still (only) be marked as dormant. This is to make dormant +articles stand out, just like ticked articles, in other @acronym{IMAP} +clients. (In other words, Gnus has two ``Tick'' marks and @acronym{IMAP} +has only one.) + +Probably the only reason for frobbing this would be if you're trying +enable per-user persistent dormant flags, using something like: + +@lisp +(setcdr (assq 'dormant nnimap-mark-to-flag-alist) + (format "gnus-dormant-%s" (user-login-name))) +(setcdr (assq 'dormant nnimap-mark-to-predicate-alist) + (format "KEYWORD gnus-dormant-%s" (user-login-name))) +@end lisp + +In this case, you would not want the per-user dormant flag showing up +as ticked for other users. + +@item nnimap-expunge-search-string +@cindex expunging +@vindex nnimap-expunge-search-string +@cindex expiring @acronym{IMAP} mail + +This variable contain the @acronym{IMAP} search command sent to server when +searching for articles eligible for expiring. The default is +@code{"UID %s NOT SINCE %s"}, where the first @code{%s} is replaced by +UID set and the second @code{%s} is replaced by a date. + +Probably the only useful value to change this to is +@code{"UID %s NOT SENTSINCE %s"}, which makes nnimap use the Date: in +messages instead of the internal article date. See section 6.4.4 of +RFC 2060 for more information on valid strings. + +However, if @code{nnimap-search-uids-not-since-is-evil} +is true, this variable has no effect since the search logic +is reversed, as described below. + +@item nnimap-authinfo-file +@vindex nnimap-authinfo-file + +A file containing credentials used to log in on servers. The format is +(almost) the same as the @code{ftp} @file{~/.netrc} file. See the +variable @code{nntp-authinfo-file} for exact syntax; also see +@ref{NNTP}. An example of an .authinfo line for an IMAP server, is: + +@example +machine students.uio.no login larsi password geheimnis port imap +@end example + +Note that it should be @code{port imap}, or @code{port 143}, if you +use a @code{nnimap-stream} of @code{tls} or @code{ssl}, even if the +actual port number used is port 993 for secured IMAP. For +convenience, Gnus will accept @code{port imaps} as a synonym of +@code{port imap}. + +@item nnimap-need-unselect-to-notice-new-mail +@vindex nnimap-need-unselect-to-notice-new-mail + +Unselect mailboxes before looking for new mail in them. Some servers +seem to need this under some circumstances; it was reported that +Courier 1.7.1 did. + +@item nnimap-nov-is-evil +@vindex nnimap-nov-is-evil +@cindex Courier @acronym{IMAP} server +@cindex @acronym{NOV} + +Never generate or use a local @acronym{NOV} database. Defaults to the +value of @code{gnus-agent}. + +Using a @acronym{NOV} database usually makes header fetching much +faster, but it uses the @code{UID SEARCH UID} command, which is very +slow on some servers (notably some versions of Courier). Since the Gnus +Agent caches the information in the @acronym{NOV} database without using +the slow command, this variable defaults to true if the Agent is in use, +and false otherwise. + +@item nnimap-search-uids-not-since-is-evil +@vindex nnimap-search-uids-not-since-is-evil +@cindex Courier @acronym{IMAP} server +@cindex expiring @acronym{IMAP} mail + +Avoid the @code{UID SEARCH UID @var{message numbers} NOT SINCE +@var{date}} command, which is slow on some @acronym{IMAP} servers +(notably, some versions of Courier). Instead, use @code{UID SEARCH SINCE +@var{date}} and prune the list of expirable articles within Gnus. + +When Gnus expires your mail (@pxref{Expiring Mail}), it starts with a +list of expirable articles and asks the IMAP server questions like ``Of +these articles, which ones are older than a week?'' While this seems +like a perfectly reasonable question, some IMAP servers take a long time +to answer it, since they seemingly go looking into every old article to +see if it is one of the expirable ones. Curiously, the question ``Of +@emph{all} articles, which ones are newer than a week?'' seems to be +much faster to answer, so setting this variable causes Gnus to ask this +question and figure out the answer to the real question itself. + +This problem can really sneak up on you: when you first configure Gnus, +everything works fine, but once you accumulate a couple thousand +messages, you start cursing Gnus for being so slow. On the other hand, +if you get a lot of email within a week, setting this variable will +cause a lot of network traffic between Gnus and the IMAP server. + +@end table + +@menu +* Splitting in IMAP:: Splitting mail with nnimap. +* Expiring in IMAP:: Expiring mail with nnimap. +* Editing IMAP ACLs:: Limiting/enabling other users access to a mailbox. +* Expunging mailboxes:: Equivalent of a ``compress mailbox'' button. +* A note on namespaces:: How to (not) use @acronym{IMAP} namespace in Gnus. +* Debugging IMAP:: What to do when things don't work. +@end menu + + + +@node Splitting in IMAP +@subsection Splitting in IMAP +@cindex splitting imap mail + +Splitting is something Gnus users have loved and used for years, and now +the rest of the world is catching up. Yeah, dream on, not many +@acronym{IMAP} servers have server side splitting and those that have +splitting seem to use some non-standard protocol. This means that +@acronym{IMAP} support for Gnus has to do its own splitting. + +And it does. + +(Incidentally, people seem to have been dreaming on, and Sieve has +gaining a market share and is supported by several IMAP servers. +Fortunately, Gnus support it too, @xref{Sieve Commands}.) + +Here are the variables of interest: + +@table @code + +@item nnimap-split-crosspost +@cindex splitting, crosspost +@cindex crosspost +@vindex nnimap-split-crosspost + +If non-@code{nil}, do crossposting if several split methods match the +mail. If @code{nil}, the first match in @code{nnimap-split-rule} +found will be used. + +Nnmail equivalent: @code{nnmail-crosspost}. + +@item nnimap-split-inbox +@cindex splitting, inbox +@cindex inbox +@vindex nnimap-split-inbox + +A string or a list of strings that gives the name(s) of @acronym{IMAP} +mailboxes to split from. Defaults to @code{nil}, which means that +splitting is disabled! + +@lisp +(setq nnimap-split-inbox + '("INBOX" ("~/friend/Mail" . "lists/*") "lists.imap")) +@end lisp + +No nnmail equivalent. + +@item nnimap-split-rule +@cindex splitting, rules +@vindex nnimap-split-rule + +New mail found in @code{nnimap-split-inbox} will be split according to +this variable. + +This variable contains a list of lists, where the first element in the +sublist gives the name of the @acronym{IMAP} mailbox to move articles +matching the regexp in the second element in the sublist. Got that? +Neither did I, we need examples. + +@lisp +(setq nnimap-split-rule + '(("INBOX.nnimap" + "^Sender: owner-nnimap@@vic20.globalcom.se") + ("INBOX.junk" "^Subject:.*MAKE MONEY") + ("INBOX.private" ""))) +@end lisp + +This will put all articles from the nnimap mailing list into mailbox +INBOX.nnimap, all articles containing MAKE MONEY in the Subject: line +into INBOX.junk and everything else in INBOX.private. + +The first string may contain @samp{\\1} forms, like the ones used by +replace-match to insert sub-expressions from the matched text. For +instance: + +@lisp +("INBOX.lists.\\1" "^Sender: owner-\\([a-z-]+\\)@@") +@end lisp + +The first element can also be the symbol @code{junk} to indicate that +matching messages should simply be deleted. Use with care. + +The second element can also be a function. In that case, it will be +called with the first element of the rule as the argument, in a buffer +containing the headers of the article. It should return a +non-@code{nil} value if it thinks that the mail belongs in that group. + +Nnmail users might recollect that the last regexp had to be empty to +match all articles (like in the example above). This is not required in +nnimap. Articles not matching any of the regexps will not be moved out +of your inbox. (This might affect performance if you keep lots of +unread articles in your inbox, since the splitting code would go over +them every time you fetch new mail.) + +These rules are processed from the beginning of the alist toward the +end. The first rule to make a match will ``win'', unless you have +crossposting enabled. In that case, all matching rules will ``win''. + +This variable can also have a function as its value, the function will +be called with the headers narrowed and should return a group where it +thinks the article should be split to. See @code{nnimap-split-fancy}. + +The splitting code tries to create mailboxes if it needs to. + +To allow for different split rules on different virtual servers, and +even different split rules in different inboxes on the same server, +the syntax of this variable have been extended along the lines of: + +@lisp +(setq nnimap-split-rule + '(("my1server" (".*" (("ding" "ding@@gnus.org") + ("junk" "From:.*Simon")))) + ("my2server" ("INBOX" nnimap-split-fancy)) + ("my[34]server" (".*" (("private" "To:.*Simon") + ("junk" my-junk-func)))))) +@end lisp + +The virtual server name is in fact a regexp, so that the same rules +may apply to several servers. In the example, the servers +@code{my3server} and @code{my4server} both use the same rules. +Similarly, the inbox string is also a regexp. The actual splitting +rules are as before, either a function, or a list with group/regexp or +group/function elements. + +Nnmail equivalent: @code{nnmail-split-methods}. + +@item nnimap-split-predicate +@cindex splitting +@vindex nnimap-split-predicate + +Mail matching this predicate in @code{nnimap-split-inbox} will be +split, it is a string and the default is @samp{UNSEEN UNDELETED}. + +This might be useful if you use another @acronym{IMAP} client to read mail in +your inbox but would like Gnus to split all articles in the inbox +regardless of readedness. Then you might change this to +@samp{UNDELETED}. + +@item nnimap-split-fancy +@cindex splitting, fancy +@findex nnimap-split-fancy +@vindex nnimap-split-fancy + +It's possible to set @code{nnimap-split-rule} to +@code{nnmail-split-fancy} if you want to use fancy +splitting. @xref{Fancy Mail Splitting}. + +However, to be able to have different fancy split rules for nnmail and +nnimap back ends you can set @code{nnimap-split-rule} to +@code{nnimap-split-fancy} and define the nnimap specific fancy split +rule in @code{nnimap-split-fancy}. + +Example: + +@lisp +(setq nnimap-split-rule 'nnimap-split-fancy + nnimap-split-fancy ...) +@end lisp + +Nnmail equivalent: @code{nnmail-split-fancy}. + +@item nnimap-split-download-body +@findex nnimap-split-download-body +@vindex nnimap-split-download-body + +Set to non-@code{nil} to download entire articles during splitting. +This is generally not required, and will slow things down +considerably. You may need it if you want to use an advanced +splitting function that analyzes the body to split the article. + +@end table + +@node Expiring in IMAP +@subsection Expiring in IMAP +@cindex expiring @acronym{IMAP} mail + +Even though @code{nnimap} is not a proper @code{nnmail} derived back +end, it supports most features in regular expiring (@pxref{Expiring +Mail}). Unlike splitting in @acronym{IMAP} (@pxref{Splitting in +IMAP}) it does not clone the @code{nnmail} variables (i.e., creating +@var{nnimap-expiry-wait}) but reuse the @code{nnmail} variables. What +follows below are the variables used by the @code{nnimap} expiry +process. + +A note on how the expire mark is stored on the @acronym{IMAP} server is +appropriate here as well. The expire mark is translated into a +@code{imap} client specific mark, @code{gnus-expire}, and stored on the +message. This means that likely only Gnus will understand and treat +the @code{gnus-expire} mark properly, although other clients may allow +you to view client specific flags on the message. It also means that +your server must support permanent storage of client specific flags on +messages. Most do, fortunately. + +If expiring @acronym{IMAP} mail seems very slow, try setting the server +variable @code{nnimap-search-uids-not-since-is-evil}. + +@table @code + +@item nnmail-expiry-wait +@item nnmail-expiry-wait-function + +These variables are fully supported. The expire value can be a +number, the symbol @code{immediate} or @code{never}. + +@item nnmail-expiry-target + +This variable is supported, and internally implemented by calling the +@code{nnmail} functions that handle this. It contains an optimization +that if the destination is a @acronym{IMAP} group on the same server, the +article is copied instead of appended (that is, uploaded again). + +@end table + +@node Editing IMAP ACLs +@subsection Editing IMAP ACLs +@cindex editing imap acls +@cindex Access Control Lists +@cindex Editing @acronym{IMAP} ACLs +@kindex G l (Group) +@findex gnus-group-nnimap-edit-acl + +ACL stands for Access Control List. ACLs are used in @acronym{IMAP} for +limiting (or enabling) other users access to your mail boxes. Not all +@acronym{IMAP} servers support this, this function will give an error if it +doesn't. + +To edit an ACL for a mailbox, type @kbd{G l} +(@code{gnus-group-edit-nnimap-acl}) and you'll be presented with an ACL +editing window with detailed instructions. + +Some possible uses: + +@itemize @bullet +@item +Giving ``anyone'' the ``lrs'' rights (lookup, read, keep seen/unseen flags) +on your mailing list mailboxes enables other users on the same server to +follow the list without subscribing to it. +@item +At least with the Cyrus server, you are required to give the user +``anyone'' posting ("p") capabilities to have ``plussing'' work (that is, +mail sent to user+mailbox@@domain ending up in the @acronym{IMAP} mailbox +INBOX.mailbox). +@end itemize + +@node Expunging mailboxes +@subsection Expunging mailboxes +@cindex expunging + +@cindex expunge +@cindex manual expunging +@kindex G x (Group) +@findex gnus-group-nnimap-expunge + +If you're using the @code{never} setting of @code{nnimap-expunge-on-close}, +you may want the option of expunging all deleted articles in a mailbox +manually. This is exactly what @kbd{G x} does. + +Currently there is no way of showing deleted articles, you can just +delete them. + +@node A note on namespaces +@subsection A note on namespaces +@cindex IMAP namespace +@cindex namespaces + +The @acronym{IMAP} protocol has a concept called namespaces, described +by the following text in the RFC2060: + +@display +5.1.2. Mailbox Namespace Naming Convention + + By convention, the first hierarchical element of any mailbox name + which begins with "#" identifies the "namespace" of the remainder of + the name. This makes it possible to disambiguate between different + types of mailbox stores, each of which have their own namespaces. + + For example, implementations which offer access to USENET + newsgroups MAY use the "#news" namespace to partition the USENET + newsgroup namespace from that of other mailboxes. Thus, the + comp.mail.misc newsgroup would have an mailbox name of + "#news.comp.mail.misc", and the name "comp.mail.misc" could refer + to a different object (e.g. a user's private mailbox). +@end display + +While there is nothing in this text that warrants concern for the +@acronym{IMAP} implementation in Gnus, some servers use namespace +prefixes in a way that does not work with how Gnus uses mailbox names. + +Specifically, University of Washington's @acronym{IMAP} server uses +mailbox names like @code{#driver.mbx/read-mail} which are valid only +in the @sc{create} and @sc{append} commands. After the mailbox is +created (or a messages is appended to a mailbox), it must be accessed +without the namespace prefix, i.e. @code{read-mail}. Since Gnus do +not make it possible for the user to guarantee that user entered +mailbox names will only be used with the CREATE and APPEND commands, +you should simply not use the namespace prefixed mailbox names in +Gnus. + +See the UoW IMAPD documentation for the @code{#driver.*/} prefix +for more information on how to use the prefixes. They are a power +tool and should be used only if you are sure what the effects are. + +@node Debugging IMAP +@subsection Debugging IMAP +@cindex IMAP debugging +@cindex protocol dump (IMAP) + +@acronym{IMAP} is a complex protocol, more so than @acronym{NNTP} or +@acronym{POP3}. Implementation bugs are not unlikely, and we do our +best to fix them right away. If you encounter odd behavior, chances +are that either the server or Gnus is buggy. + +If you are familiar with network protocols in general, you will +probably be able to extract some clues from the protocol dump of the +exchanges between Gnus and the server. Even if you are not familiar +with network protocols, when you include the protocol dump in +@acronym{IMAP}-related bug reports you are helping us with data +critical to solving the problem. Therefore, we strongly encourage you +to include the protocol dump when reporting IMAP bugs in Gnus. + + +@vindex imap-log +Because the protocol dump, when enabled, generates lots of data, it is +disabled by default. You can enable it by setting @code{imap-log} as +follows: + +@lisp +(setq imap-log t) +@end lisp + +This instructs the @code{imap.el} package to log any exchanges with +the server. The log is stored in the buffer @samp{*imap-log*}. Look +for error messages, which sometimes are tagged with the keyword +@code{BAD}---but when submitting a bug, make sure to include all the +data. + +@node Other Sources +@section Other Sources + +Gnus can do more than just read news or mail. The methods described +below allow Gnus to view directories and files as if they were +newsgroups. + +@menu +* Directory Groups:: You can read a directory as if it was a newsgroup. +* Anything Groups:: Dired? Who needs dired? +* Document Groups:: Single files can be the basis of a group. +* SOUP:: Reading @sc{soup} packets ``offline''. +* Mail-To-News Gateways:: Posting articles via mail-to-news gateways. +@end menu + + +@node Directory Groups +@subsection Directory Groups +@cindex nndir +@cindex directory groups + +If you have a directory that has lots of articles in separate files in +it, you might treat it as a newsgroup. The files have to have numerical +names, of course. + +This might be an opportune moment to mention @code{ange-ftp} (and its +successor @code{efs}), that most wonderful of all wonderful Emacs +packages. When I wrote @code{nndir}, I didn't think much about it---a +back end to read directories. Big deal. + +@code{ange-ftp} changes that picture dramatically. For instance, if you +enter the @code{ange-ftp} file name +@file{/ftp.hpc.uh.edu:/pub/emacs/ding-list/} as the directory name, +@code{ange-ftp} or @code{efs} will actually allow you to read this +directory over at @samp{sina} as a newsgroup. Distributed news ahoy! + +@code{nndir} will use @acronym{NOV} files if they are present. + +@code{nndir} is a ``read-only'' back end---you can't delete or expire +articles with this method. You can use @code{nnmh} or @code{nnml} for +whatever you use @code{nndir} for, so you could switch to any of those +methods if you feel the need to have a non-read-only @code{nndir}. + + +@node Anything Groups +@subsection Anything Groups +@cindex nneething + +From the @code{nndir} back end (which reads a single spool-like +directory), it's just a hop and a skip to @code{nneething}, which +pretends that any arbitrary directory is a newsgroup. Strange, but +true. + +When @code{nneething} is presented with a directory, it will scan this +directory and assign article numbers to each file. When you enter such +a group, @code{nneething} must create ``headers'' that Gnus can use. +After all, Gnus is a newsreader, in case you're forgetting. +@code{nneething} does this in a two-step process. First, it snoops each +file in question. If the file looks like an article (i.e., the first +few lines look like headers), it will use this as the head. If this is +just some arbitrary file without a head (e.g. a C source file), +@code{nneething} will cobble up a header out of thin air. It will use +file ownership, name and date and do whatever it can with these +elements. + +All this should happen automatically for you, and you will be presented +with something that looks very much like a newsgroup. Totally like a +newsgroup, to be precise. If you select an article, it will be displayed +in the article buffer, just as usual. + +If you select a line that represents a directory, Gnus will pop you into +a new summary buffer for this @code{nneething} group. And so on. You can +traverse the entire disk this way, if you feel like, but remember that +Gnus is not dired, really, and does not intend to be, either. + +There are two overall modes to this action---ephemeral or solid. When +doing the ephemeral thing (i.e., @kbd{G D} from the group buffer), Gnus +will not store information on what files you have read, and what files +are new, and so on. If you create a solid @code{nneething} group the +normal way with @kbd{G m}, Gnus will store a mapping table between +article numbers and file names, and you can treat this group like any +other groups. When you activate a solid @code{nneething} group, you will +be told how many unread articles it contains, etc., etc. + +Some variables: + +@table @code +@item nneething-map-file-directory +@vindex nneething-map-file-directory +All the mapping files for solid @code{nneething} groups will be stored +in this directory, which defaults to @file{~/.nneething/}. + +@item nneething-exclude-files +@vindex nneething-exclude-files +All files that match this regexp will be ignored. Nice to use to exclude +auto-save files and the like, which is what it does by default. + +@item nneething-include-files +@vindex nneething-include-files +Regexp saying what files to include in the group. If this variable is +non-@code{nil}, only files matching this regexp will be included. + +@item nneething-map-file +@vindex nneething-map-file +Name of the map files. +@end table + + +@node Document Groups +@subsection Document Groups +@cindex nndoc +@cindex documentation group +@cindex help group + +@code{nndoc} is a cute little thing that will let you read a single file +as a newsgroup. Several files types are supported: + +@table @code +@cindex Babyl +@cindex Rmail mbox +@item babyl +The Babyl (Rmail) mail box. + +@cindex mbox +@cindex Unix mbox +@item mbox +The standard Unix mbox file. + +@cindex MMDF mail box +@item mmdf +The MMDF mail box format. + +@item news +Several news articles appended into a file. + +@cindex rnews batch files +@item rnews +The rnews batch transport format. + +@item nsmail +Netscape mail boxes. + +@item mime-parts +@acronym{MIME} multipart messages. + +@item standard-digest +The standard (RFC 1153) digest format. + +@item mime-digest +A @acronym{MIME} digest of messages. + +@item lanl-gov-announce +Announcement messages from LANL Gov Announce. + +@cindex forwarded messages +@item rfc822-forward +A message forwarded according to RFC822. + +@item outlook +The Outlook mail box. + +@item oe-dbx +The Outlook Express dbx mail box. + +@item exim-bounce +A bounce message from the Exim MTA. + +@item forward +A message forwarded according to informal rules. + +@item rfc934 +An RFC934-forwarded message. + +@item mailman +A mailman digest. + +@item clari-briefs +A digest of Clarinet brief news items. + +@item slack-digest +Non-standard digest format---matches most things, but does it badly. + +@item mail-in-mail +The last resort. +@end table + +You can also use the special ``file type'' @code{guess}, which means +that @code{nndoc} will try to guess what file type it is looking at. +@code{digest} means that @code{nndoc} should guess what digest type the +file is. + +@code{nndoc} will not try to change the file or insert any extra headers into +it---it will simply, like, let you use the file as the basis for a +group. And that's it. + +If you have some old archived articles that you want to insert into your +new & spiffy Gnus mail back end, @code{nndoc} can probably help you with +that. Say you have an old @file{RMAIL} file with mail that you now want +to split into your new @code{nnml} groups. You look at that file using +@code{nndoc} (using the @kbd{G f} command in the group buffer +(@pxref{Foreign Groups})), set the process mark on all the articles in +the buffer (@kbd{M P b}, for instance), and then re-spool (@kbd{B r}) +using @code{nnml}. If all goes well, all the mail in the @file{RMAIL} +file is now also stored in lots of @code{nnml} directories, and you can +delete that pesky @file{RMAIL} file. If you have the guts! + +Virtual server variables: + +@table @code +@item nndoc-article-type +@vindex nndoc-article-type +This should be one of @code{mbox}, @code{babyl}, @code{digest}, +@code{news}, @code{rnews}, @code{mmdf}, @code{forward}, @code{rfc934}, +@code{rfc822-forward}, @code{mime-parts}, @code{standard-digest}, +@code{slack-digest}, @code{clari-briefs}, @code{nsmail}, @code{outlook}, +@code{oe-dbx}, @code{mailman}, and @code{mail-in-mail} or @code{guess}. + +@item nndoc-post-type +@vindex nndoc-post-type +This variable says whether Gnus is to consider the group a news group or +a mail group. There are two valid values: @code{mail} (the default) +and @code{news}. +@end table + +@menu +* Document Server Internals:: How to add your own document types. +@end menu + + +@node Document Server Internals +@subsubsection Document Server Internals + +Adding new document types to be recognized by @code{nndoc} isn't +difficult. You just have to whip up a definition of what the document +looks like, write a predicate function to recognize that document type, +and then hook into @code{nndoc}. + +First, here's an example document type definition: + +@example +(mmdf + (article-begin . "^\^A\^A\^A\^A\n") + (body-end . "^\^A\^A\^A\^A\n")) +@end example + +The definition is simply a unique @dfn{name} followed by a series of +regexp pseudo-variable settings. Below are the possible +variables---don't be daunted by the number of variables; most document +types can be defined with very few settings: + +@table @code +@item first-article +If present, @code{nndoc} will skip past all text until it finds +something that match this regexp. All text before this will be +totally ignored. + +@item article-begin +This setting has to be present in all document type definitions. It +says what the beginning of each article looks like. To do more +complicated things that cannot be dealt with a simple regexp, you can +use @code{article-begin-function} instead of this. + +@item article-begin-function +If present, this should be a function that moves point to the beginning +of each article. This setting overrides @code{article-begin}. + +@item head-begin +If present, this should be a regexp that matches the head of the +article. To do more complicated things that cannot be dealt with a +simple regexp, you can use @code{head-begin-function} instead of this. + +@item head-begin-function +If present, this should be a function that moves point to the head of +the article. This setting overrides @code{head-begin}. + +@item head-end +This should match the end of the head of the article. It defaults to +@samp{^$}---the empty line. + +@item body-begin +This should match the beginning of the body of the article. It defaults +to @samp{^\n}. To do more complicated things that cannot be dealt with +a simple regexp, you can use @code{body-begin-function} instead of this. + +@item body-begin-function +If present, this function should move point to the beginning of the body +of the article. This setting overrides @code{body-begin}. + +@item body-end +If present, this should match the end of the body of the article. To do +more complicated things that cannot be dealt with a simple regexp, you +can use @code{body-end-function} instead of this. + +@item body-end-function +If present, this function should move point to the end of the body of +the article. This setting overrides @code{body-end}. + +@item file-begin +If present, this should match the beginning of the file. All text +before this regexp will be totally ignored. + +@item file-end +If present, this should match the end of the file. All text after this +regexp will be totally ignored. + +@end table + +So, using these variables @code{nndoc} is able to dissect a document +file into a series of articles, each with a head and a body. However, a +few more variables are needed since not all document types are all that +news-like---variables needed to transform the head or the body into +something that's palatable for Gnus: + +@table @code +@item prepare-body-function +If present, this function will be called when requesting an article. It +will be called with point at the start of the body, and is useful if the +document has encoded some parts of its contents. + +@item article-transform-function +If present, this function is called when requesting an article. It's +meant to be used for more wide-ranging transformation of both head and +body of the article. + +@item generate-head-function +If present, this function is called to generate a head that Gnus can +understand. It is called with the article number as a parameter, and is +expected to generate a nice head for the article in question. It is +called when requesting the headers of all articles. + +@item generate-article-function +If present, this function is called to generate an entire article that +Gnus can understand. It is called with the article number as a +parameter when requesting all articles. + +@item dissection-function +If present, this function is called to dissect a document by itself, +overriding @code{first-article}, @code{article-begin}, +@code{article-begin-function}, @code{head-begin}, +@code{head-begin-function}, @code{head-end}, @code{body-begin}, +@code{body-begin-function}, @code{body-end}, @code{body-end-function}, +@code{file-begin}, and @code{file-end}. + +@end table + +Let's look at the most complicated example I can come up with---standard +digests: + +@example +(standard-digest + (first-article . ,(concat "^" (make-string 70 ?-) "\n\n+")) + (article-begin . ,(concat "\n\n" (make-string 30 ?-) "\n\n+")) + (prepare-body-function . nndoc-unquote-dashes) + (body-end-function . nndoc-digest-body-end) + (head-end . "^ ?$") + (body-begin . "^ ?\n") + (file-end . "^End of .*digest.*[0-9].*\n\\*\\*\\|^End of.*Digest *$") + (subtype digest guess)) +@end example + +We see that all text before a 70-width line of dashes is ignored; all +text after a line that starts with that @samp{^End of} is also ignored; +each article begins with a 30-width line of dashes; the line separating +the head from the body may contain a single space; and that the body is +run through @code{nndoc-unquote-dashes} before being delivered. + +To hook your own document definition into @code{nndoc}, use the +@code{nndoc-add-type} function. It takes two parameters---the first +is the definition itself and the second (optional) parameter says +where in the document type definition alist to put this definition. +The alist is traversed sequentially, and +@code{nndoc-@var{type}-type-p} is called for a given type @var{type}. +So @code{nndoc-mmdf-type-p} is called to see whether a document is of +@code{mmdf} type, and so on. These type predicates should return +@code{nil} if the document is not of the correct type; @code{t} if it +is of the correct type; and a number if the document might be of the +correct type. A high number means high probability; a low number +means low probability with @samp{0} being the lowest valid number. + + +@node SOUP +@subsection SOUP +@cindex SOUP +@cindex offline + +In the PC world people often talk about ``offline'' newsreaders. These +are thingies that are combined reader/news transport monstrosities. +With built-in modem programs. Yecchh! + +Of course, us Unix Weenie types of human beans use things like +@code{uucp} and, like, @code{nntpd} and set up proper news and mail +transport things like Ghod intended. And then we just use normal +newsreaders. + +However, it can sometimes be convenient to do something that's a bit +easier on the brain if you have a very slow modem, and you're not really +that interested in doing things properly. + +A file format called @sc{soup} has been developed for transporting news +and mail from servers to home machines and back again. It can be a bit +fiddly. + +First some terminology: + +@table @dfn + +@item server +This is the machine that is connected to the outside world and where you +get news and/or mail from. + +@item home machine +This is the machine that you want to do the actual reading and responding +on. It is typically not connected to the rest of the world in any way. + +@item packet +Something that contains messages and/or commands. There are two kinds +of packets: + +@table @dfn +@item message packets +These are packets made at the server, and typically contain lots of +messages for you to read. These are called @file{SoupoutX.tgz} by +default, where @var{x} is a number. + +@item response packets +These are packets made at the home machine, and typically contains +replies that you've written. These are called @file{SoupinX.tgz} by +default, where @var{x} is a number. + +@end table + +@end table + + +@enumerate + +@item +You log in on the server and create a @sc{soup} packet. You can either +use a dedicated @sc{soup} thingie (like the @code{awk} program), or you +can use Gnus to create the packet with its @sc{soup} commands (@kbd{O +s} and/or @kbd{G s b}; and then @kbd{G s p}) (@pxref{SOUP Commands}). + +@item +You transfer the packet home. Rail, boat, car or modem will do fine. + +@item +You put the packet in your home directory. + +@item +You fire up Gnus on your home machine using the @code{nnsoup} back end as +the native or secondary server. + +@item +You read articles and mail and answer and followup to the things you +want (@pxref{SOUP Replies}). + +@item +You do the @kbd{G s r} command to pack these replies into a @sc{soup} +packet. + +@item +You transfer this packet to the server. + +@item +You use Gnus to mail this packet out with the @kbd{G s s} command. + +@item +You then repeat until you die. + +@end enumerate + +So you basically have a bipartite system---you use @code{nnsoup} for +reading and Gnus for packing/sending these @sc{soup} packets. + +@menu +* SOUP Commands:: Commands for creating and sending @sc{soup} packets +* SOUP Groups:: A back end for reading @sc{soup} packets. +* SOUP Replies:: How to enable @code{nnsoup} to take over mail and news. +@end menu + + +@node SOUP Commands +@subsubsection SOUP Commands + +These are commands for creating and manipulating @sc{soup} packets. + +@table @kbd +@item G s b +@kindex G s b (Group) +@findex gnus-group-brew-soup +Pack all unread articles in the current group +(@code{gnus-group-brew-soup}). This command understands the +process/prefix convention. + +@item G s w +@kindex G s w (Group) +@findex gnus-soup-save-areas +Save all @sc{soup} data files (@code{gnus-soup-save-areas}). + +@item G s s +@kindex G s s (Group) +@findex gnus-soup-send-replies +Send all replies from the replies packet +(@code{gnus-soup-send-replies}). + +@item G s p +@kindex G s p (Group) +@findex gnus-soup-pack-packet +Pack all files into a @sc{soup} packet (@code{gnus-soup-pack-packet}). + +@item G s r +@kindex G s r (Group) +@findex nnsoup-pack-replies +Pack all replies into a replies packet (@code{nnsoup-pack-replies}). + +@item O s +@kindex O s (Summary) +@findex gnus-soup-add-article +This summary-mode command adds the current article to a @sc{soup} packet +(@code{gnus-soup-add-article}). It understands the process/prefix +convention (@pxref{Process/Prefix}). + +@end table + + +There are a few variables to customize where Gnus will put all these +thingies: + +@table @code + +@item gnus-soup-directory +@vindex gnus-soup-directory +Directory where Gnus will save intermediate files while composing +@sc{soup} packets. The default is @file{~/SoupBrew/}. + +@item gnus-soup-replies-directory +@vindex gnus-soup-replies-directory +This is what Gnus will use as a temporary directory while sending our +reply packets. @file{~/SoupBrew/SoupReplies/} is the default. + +@item gnus-soup-prefix-file +@vindex gnus-soup-prefix-file +Name of the file where Gnus stores the last used prefix. The default is +@samp{gnus-prefix}. + +@item gnus-soup-packer +@vindex gnus-soup-packer +A format string command for packing a @sc{soup} packet. The default is +@samp{tar cf - %s | gzip > $HOME/Soupout%d.tgz}. + +@item gnus-soup-unpacker +@vindex gnus-soup-unpacker +Format string command for unpacking a @sc{soup} packet. The default is +@samp{gunzip -c %s | tar xvf -}. + +@item gnus-soup-packet-directory +@vindex gnus-soup-packet-directory +Where Gnus will look for reply packets. The default is @file{~/}. + +@item gnus-soup-packet-regexp +@vindex gnus-soup-packet-regexp +Regular expression matching @sc{soup} reply packets in +@code{gnus-soup-packet-directory}. + +@end table + + +@node SOUP Groups +@subsubsection SOUP Groups +@cindex nnsoup + +@code{nnsoup} is the back end for reading @sc{soup} packets. It will +read incoming packets, unpack them, and put them in a directory where +you can read them at leisure. + +These are the variables you can use to customize its behavior: + +@table @code + +@item nnsoup-tmp-directory +@vindex nnsoup-tmp-directory +When @code{nnsoup} unpacks a @sc{soup} packet, it does it in this +directory. (@file{/tmp/} by default.) + +@item nnsoup-directory +@vindex nnsoup-directory +@code{nnsoup} then moves each message and index file to this directory. +The default is @file{~/SOUP/}. + +@item nnsoup-replies-directory +@vindex nnsoup-replies-directory +All replies will be stored in this directory before being packed into a +reply packet. The default is @file{~/SOUP/replies/}. + +@item nnsoup-replies-format-type +@vindex nnsoup-replies-format-type +The @sc{soup} format of the replies packets. The default is @samp{?n} +(rnews), and I don't think you should touch that variable. I probably +shouldn't even have documented it. Drats! Too late! + +@item nnsoup-replies-index-type +@vindex nnsoup-replies-index-type +The index type of the replies packet. The default is @samp{?n}, which +means ``none''. Don't fiddle with this one either! + +@item nnsoup-active-file +@vindex nnsoup-active-file +Where @code{nnsoup} stores lots of information. This is not an ``active +file'' in the @code{nntp} sense; it's an Emacs Lisp file. If you lose +this file or mess it up in any way, you're dead. The default is +@file{~/SOUP/active}. + +@item nnsoup-packer +@vindex nnsoup-packer +Format string command for packing a reply @sc{soup} packet. The default +is @samp{tar cf - %s | gzip > $HOME/Soupin%d.tgz}. + +@item nnsoup-unpacker +@vindex nnsoup-unpacker +Format string command for unpacking incoming @sc{soup} packets. The +default is @samp{gunzip -c %s | tar xvf -}. + +@item nnsoup-packet-directory +@vindex nnsoup-packet-directory +Where @code{nnsoup} will look for incoming packets. The default is +@file{~/}. + +@item nnsoup-packet-regexp +@vindex nnsoup-packet-regexp +Regular expression matching incoming @sc{soup} packets. The default is +@samp{Soupout}. + +@item nnsoup-always-save +@vindex nnsoup-always-save +If non-@code{nil}, save the replies buffer after each posted message. + +@end table + + +@node SOUP Replies +@subsubsection SOUP Replies + +Just using @code{nnsoup} won't mean that your postings and mailings end +up in @sc{soup} reply packets automagically. You have to work a bit +more for that to happen. + +@findex nnsoup-set-variables +The @code{nnsoup-set-variables} command will set the appropriate +variables to ensure that all your followups and replies end up in the +@sc{soup} system. + +In specific, this is what it does: + +@lisp +(setq message-send-news-function 'nnsoup-request-post) +(setq message-send-mail-function 'nnsoup-request-mail) +@end lisp + +And that's it, really. If you only want news to go into the @sc{soup} +system you just use the first line. If you only want mail to be +@sc{soup}ed you use the second. + + +@node Mail-To-News Gateways +@subsection Mail-To-News Gateways +@cindex mail-to-news gateways +@cindex gateways + +If your local @code{nntp} server doesn't allow posting, for some reason +or other, you can post using one of the numerous mail-to-news gateways. +The @code{nngateway} back end provides the interface. + +Note that you can't read anything from this back end---it can only be +used to post with. + +Server variables: + +@table @code +@item nngateway-address +@vindex nngateway-address +This is the address of the mail-to-news gateway. + +@item nngateway-header-transformation +@vindex nngateway-header-transformation +News headers often have to be transformed in some odd way or other +for the mail-to-news gateway to accept it. This variable says what +transformation should be called, and defaults to +@code{nngateway-simple-header-transformation}. The function is called +narrowed to the headers to be transformed and with one parameter---the +gateway address. + +This default function just inserts a new @code{To} header based on the +@code{Newsgroups} header and the gateway address. +For instance, an article with this @code{Newsgroups} header: + +@example +Newsgroups: alt.religion.emacs +@end example + +will get this @code{To} header inserted: + +@example +To: alt-religion-emacs@@GATEWAY +@end example + +The following pre-defined functions exist: + +@findex nngateway-simple-header-transformation +@table @code + +@item nngateway-simple-header-transformation +Creates a @code{To} header that looks like +@var{newsgroup}@@@code{nngateway-address}. + +@findex nngateway-mail2news-header-transformation + +@item nngateway-mail2news-header-transformation +Creates a @code{To} header that looks like +@code{nngateway-address}. +@end table + +@end table + +Here's an example: + +@lisp +(setq gnus-post-method + '(nngateway + "mail2news@@replay.com" + (nngateway-header-transformation + nngateway-mail2news-header-transformation))) +@end lisp + +So, to use this, simply say something like: + +@lisp +(setq gnus-post-method '(nngateway "GATEWAY.ADDRESS")) +@end lisp + + + +@node Combined Groups +@section Combined Groups + +Gnus allows combining a mixture of all the other group types into bigger +groups. + +@menu +* Virtual Groups:: Combining articles from many groups. +* Kibozed Groups:: Looking through parts of the newsfeed for articles. +@end menu + + +@node Virtual Groups +@subsection Virtual Groups +@cindex nnvirtual +@cindex virtual groups +@cindex merging groups + +An @dfn{nnvirtual group} is really nothing more than a collection of +other groups. + +For instance, if you are tired of reading many small groups, you can +put them all in one big group, and then grow tired of reading one +big, unwieldy group. The joys of computing! + +You specify @code{nnvirtual} as the method. The address should be a +regexp to match component groups. + +All marks in the virtual group will stick to the articles in the +component groups. So if you tick an article in a virtual group, the +article will also be ticked in the component group from whence it +came. (And vice versa---marks from the component groups will also be +shown in the virtual group.). To create an empty virtual group, run +@kbd{G V} (@code{gnus-group-make-empty-virtual}) in the group buffer +and edit the method regexp with @kbd{M-e} +(@code{gnus-group-edit-group-method}) + +Here's an example @code{nnvirtual} method that collects all Andrea Dworkin +newsgroups into one, big, happy newsgroup: + +@lisp +(nnvirtual "^alt\\.fan\\.andrea-dworkin$\\|^rec\\.dworkin.*") +@end lisp + +The component groups can be native or foreign; everything should work +smoothly, but if your computer explodes, it was probably my fault. + +Collecting the same group from several servers might actually be a good +idea if users have set the Distribution header to limit distribution. +If you would like to read @samp{soc.motss} both from a server in Japan +and a server in Norway, you could use the following as the group regexp: + +@example +"^nntp\\+server\\.jp:soc\\.motss$\\|^nntp\\+server\\.no:soc\\.motss$" +@end example + +(Remember, though, that if you're creating the group with @kbd{G m}, you +shouldn't double the backslashes, and you should leave off the quote +characters at the beginning and the end of the string.) + +This should work kinda smoothly---all articles from both groups should +end up in this one, and there should be no duplicates. Threading (and +the rest) will still work as usual, but there might be problems with the +sequence of articles. Sorting on date might be an option here +(@pxref{Selecting a Group}). + +One limitation, however---all groups included in a virtual +group have to be alive (i.e., subscribed or unsubscribed). Killed or +zombie groups can't be component groups for @code{nnvirtual} groups. + +@vindex nnvirtual-always-rescan +If the @code{nnvirtual-always-rescan} variable is non-@code{nil} (which +is the default), @code{nnvirtual} will always scan groups for unread +articles when entering a virtual group. If this variable is @code{nil} +and you read articles in a component group after the virtual group has +been activated, the read articles from the component group will show up +when you enter the virtual group. You'll also see this effect if you +have two virtual groups that have a component group in common. If +that's the case, you should set this variable to @code{t}. Or you can +just tap @code{M-g} on the virtual group every time before you enter +it---it'll have much the same effect. + +@code{nnvirtual} can have both mail and news groups as component groups. +When responding to articles in @code{nnvirtual} groups, @code{nnvirtual} +has to ask the back end of the component group the article comes from +whether it is a news or mail back end. However, when you do a @kbd{^}, +there is typically no sure way for the component back end to know this, +and in that case @code{nnvirtual} tells Gnus that the article came from a +not-news back end. (Just to be on the safe side.) + +@kbd{C-c C-n} in the message buffer will insert the @code{Newsgroups} +line from the article you respond to in these cases. + +@code{nnvirtual} groups do not inherit anything but articles and marks +from component groups---group parameters, for instance, are not +inherited. + + +@node Kibozed Groups +@subsection Kibozed Groups +@cindex nnkiboze +@cindex kibozing + +@dfn{Kibozing} is defined by the @acronym{OED} as ``grepping through +(parts of) the news feed''. @code{nnkiboze} is a back end that will +do this for you. Oh joy! Now you can grind any @acronym{NNTP} server +down to a halt with useless requests! Oh happiness! + +@kindex G k (Group) +To create a kibozed group, use the @kbd{G k} command in the group +buffer. + +The address field of the @code{nnkiboze} method is, as with +@code{nnvirtual}, a regexp to match groups to be ``included'' in the +@code{nnkiboze} group. That's where most similarities between +@code{nnkiboze} and @code{nnvirtual} end. + +In addition to this regexp detailing component groups, an +@code{nnkiboze} group must have a score file to say what articles are +to be included in the group (@pxref{Scoring}). + +@kindex M-x nnkiboze-generate-groups +@findex nnkiboze-generate-groups +You must run @kbd{M-x nnkiboze-generate-groups} after creating the +@code{nnkiboze} groups you want to have. This command will take time. +Lots of time. Oodles and oodles of time. Gnus has to fetch the +headers from all the articles in all the component groups and run them +through the scoring process to determine if there are any articles in +the groups that are to be part of the @code{nnkiboze} groups. + +Please limit the number of component groups by using restrictive +regexps. Otherwise your sysadmin may become annoyed with you, and the +@acronym{NNTP} site may throw you off and never let you back in again. +Stranger things have happened. + +@code{nnkiboze} component groups do not have to be alive---they can be dead, +and they can be foreign. No restrictions. + +@vindex nnkiboze-directory +The generation of an @code{nnkiboze} group means writing two files in +@code{nnkiboze-directory}, which is @file{~/News/kiboze/} by default. +One contains the @acronym{NOV} header lines for all the articles in +the group, and the other is an additional @file{.newsrc} file to store +information on what groups have been searched through to find +component articles. + +Articles marked as read in the @code{nnkiboze} group will have +their @acronym{NOV} lines removed from the @acronym{NOV} file. + + +@node Email Based Diary +@section Email Based Diary +@cindex diary +@cindex email based diary +@cindex calendar + +This section describes a special mail back end called @code{nndiary}, +and its companion library @code{gnus-diary}. It is ``special'' in the +sense that it is not meant to be one of the standard alternatives for +reading mail with Gnus. See @ref{Choosing a Mail Back End} for that. +Instead, it is used to treat @emph{some} of your mails in a special way, +namely, as event reminders. + +Here is a typical scenario: + +@itemize @bullet +@item +You've got a date with Andy Mc Dowell or Bruce Willis (select according +to your sexual preference) in one month. You don't want to forget it. +@item +So you send a ``reminder'' message (actually, a diary one) to yourself. +@item +You forget all about it and keep on getting and reading new mail, as usual. +@item +From time to time, as you type `g' in the group buffer and as the date +is getting closer, the message will pop up again to remind you of your +appointment, just as if it were new and unread. +@item +Read your ``new'' messages, this one included, and start dreaming again +of the night you're gonna have. +@item +Once the date is over (you actually fell asleep just after dinner), the +message will be automatically deleted if it is marked as expirable. +@end itemize + +The Gnus Diary back end has the ability to handle regular appointments +(that wouldn't ever be deleted) as well as punctual ones, operates as a +real mail back end and is configurable in many ways. All of this is +explained in the sections below. + +@menu +* The NNDiary Back End:: Basic setup and usage. +* The Gnus Diary Library:: Utility toolkit on top of nndiary. +* Sending or Not Sending:: A final note on sending diary messages. +@end menu + + +@node The NNDiary Back End +@subsection The NNDiary Back End +@cindex nndiary +@cindex the nndiary back end + +@code{nndiary} is a back end very similar to @code{nnml} (@pxref{Mail +Spool}). Actually, it could appear as a mix of @code{nnml} and +@code{nndraft}. If you know @code{nnml}, you're already familiar with +the message storing scheme of @code{nndiary}: one file per message, one +directory per group. + + Before anything, there is one requirement to be able to run +@code{nndiary} properly: you @emph{must} use the group timestamp feature +of Gnus. This adds a timestamp to each group's parameters. @ref{Group +Timestamp} to see how it's done. + +@menu +* Diary Messages:: What makes a message valid for nndiary. +* Running NNDiary:: NNDiary has two modes of operation. +* Customizing NNDiary:: Bells and whistles. +@end menu + +@node Diary Messages +@subsubsection Diary Messages +@cindex nndiary messages +@cindex nndiary mails + +@code{nndiary} messages are just normal ones, except for the mandatory +presence of 7 special headers. These headers are of the form +@code{X-Diary-}, @code{} being one of +@code{Minute}, @code{Hour}, @code{Dom}, @code{Month}, @code{Year}, +@code{Time-Zone} and @code{Dow}. @code{Dom} means ``Day of Month'', and +@code{dow} means ``Day of Week''. These headers actually behave like +crontab specifications and define the event date(s): + +@itemize @bullet +@item +For all headers except the @code{Time-Zone} one, a header value is +either a star (meaning all possible values), or a list of fields +(separated by a comma). +@item +A field is either an integer, or a range. +@item +A range is two integers separated by a dash. +@item +Possible integer values are 0--59 for @code{Minute}, 0--23 for +@code{Hour}, 1--31 for @code{Dom}, 1--12 for @code{Month}, above 1971 +for @code{Year} and 0--6 for @code{Dow} (0 meaning Sunday). +@item +As a special case, a star in either @code{Dom} or @code{Dow} doesn't +mean ``all possible values'', but ``use only the other field''. Note +that if both are star'ed, the use of either one gives the same result. +@item +The @code{Time-Zone} header is special in that it can only have one +value (@code{GMT}, for instance). A star doesn't mean ``all possible +values'' (because it makes no sense), but ``the current local time +zone''. Most of the time, you'll be using a star here. However, for a +list of available time zone values, see the variable +@code{nndiary-headers}. +@end itemize + +As a concrete example, here are the diary headers to add to your message +for specifying ``Each Monday and each 1st of month, at 12:00, 20:00, +21:00, 22:00, 23:00 and 24:00, from 1999 to 2010'' (I'll let you find +what to do then): + +@example +X-Diary-Minute: 0 +X-Diary-Hour: 12, 20-24 +X-Diary-Dom: 1 +X-Diary-Month: * +X-Diary-Year: 1999-2010 +X-Diary-Dow: 1 +X-Diary-Time-Zone: * +@end example + +@node Running NNDiary +@subsubsection Running NNDiary +@cindex running nndiary +@cindex nndiary operation modes + +@code{nndiary} has two modes of operation: ``traditional'' (the default) +and ``autonomous''. In traditional mode, @code{nndiary} does not get new +mail by itself. You have to move (@kbd{B m}) or copy (@kbd{B c}) mails +from your primary mail back end to nndiary groups in order to handle them +as diary messages. In autonomous mode, @code{nndiary} retrieves its own +mail and handles it independently from your primary mail back end. + +One should note that Gnus is not inherently designed to allow several +``master'' mail back ends at the same time. However, this does make +sense with @code{nndiary}: you really want to send and receive diary +messages to your diary groups directly. So, @code{nndiary} supports +being sort of a ``second primary mail back end'' (to my knowledge, it is +the only back end offering this feature). However, there is a limitation +(which I hope to fix some day): respooling doesn't work in autonomous +mode. + +In order to use @code{nndiary} in autonomous mode, you have several +things to do: + +@itemize @bullet +@item +Allow @code{nndiary} to retrieve new mail by itself. Put the following +line in your @file{~/.gnus.el} file: + +@lisp +(setq nndiary-get-new-mail t) +@end lisp +@item +You must arrange for diary messages (those containing @code{X-Diary-*} +headers) to be split in a private folder @emph{before} Gnus treat them. +Again, this is needed because Gnus cannot (yet ?) properly handle +multiple primary mail back ends. Getting those messages from a separate +source will compensate this misfeature to some extent. + +As an example, here's my procmailrc entry to store diary files in +@file{~/.nndiary} (the default @code{nndiary} mail source file): + +@example +:0 HD : +* ^X-Diary +.nndiary +@end example +@end itemize + +Once this is done, you might want to customize the following two options +that affect the diary mail retrieval and splitting processes: + +@defvar nndiary-mail-sources +This is the diary-specific replacement for the standard +@code{mail-sources} variable. It obeys the same syntax, and defaults to +@code{(file :path "~/.nndiary")}. +@end defvar + +@defvar nndiary-split-methods +This is the diary-specific replacement for the standard +@code{nnmail-split-methods} variable. It obeys the same syntax. +@end defvar + + Finally, you may add a permanent @code{nndiary} virtual server +(something like @code{(nndiary "diary")} should do) to your +@code{gnus-secondary-select-methods}. + + Hopefully, almost everything (see the TODO section in +@file{nndiary.el}) will work as expected when you restart Gnus: in +autonomous mode, typing @kbd{g} and @kbd{M-g} in the group buffer, will +also get your new diary mails and split them according to your +diary-specific rules, @kbd{F} will find your new diary groups etc. + +@node Customizing NNDiary +@subsubsection Customizing NNDiary +@cindex customizing nndiary +@cindex nndiary customization + +Now that @code{nndiary} is up and running, it's time to customize it. +The custom group is called @code{nndiary} (no, really ?!). You should +browse it to figure out which options you'd like to tweak. The following +two variables are probably the only ones you will want to change: + +@defvar nndiary-reminders +This is the list of times when you want to be reminded of your +appointments (e.g. 3 weeks before, then 2 days before, then 1 hour +before and that's it). Remember that ``being reminded'' means that the +diary message will pop up as brand new and unread again when you get new +mail. +@end defvar + +@defvar nndiary-week-starts-on-monday +Rather self-explanatory. Otherwise, Sunday is assumed (this is the +default). +@end defvar + + +@node The Gnus Diary Library +@subsection The Gnus Diary Library +@cindex gnus-diary +@cindex the gnus diary library + +Using @code{nndiary} manually (I mean, writing the headers by hand and +so on) would be rather boring. Fortunately, there is a library called +@code{gnus-diary} written on top of @code{nndiary}, that does many +useful things for you. + + In order to use it, add the following line to your @file{~/.gnus.el} file: + +@lisp +(require 'gnus-diary) +@end lisp + + Also, you shouldn't use any @code{gnus-user-format-function-[d|D]} +(@pxref{Summary Buffer Lines}). @code{gnus-diary} provides both of these +(sorry if you used them before). + + +@menu +* Diary Summary Line Format:: A nicer summary buffer line format. +* Diary Articles Sorting:: A nicer way to sort messages. +* Diary Headers Generation:: Not doing it manually. +* Diary Group Parameters:: Not handling them manually. +@end menu + +@node Diary Summary Line Format +@subsubsection Diary Summary Line Format +@cindex diary summary buffer line +@cindex diary summary line format + +Displaying diary messages in standard summary line format (usually +something like @samp{From Joe: Subject}) is pretty useless. Most of +the time, you're the one who wrote the message, and you mostly want to +see the event's date. + + @code{gnus-diary} provides two supplemental user formats to be used in +summary line formats. @code{D} corresponds to a formatted time string +for the next occurrence of the event (e.g. ``Sat, Sep 22 01, 12:00''), +while @code{d} corresponds to an approximative remaining time until the +next occurrence of the event (e.g. ``in 6 months, 1 week''). + + For example, here's how Joe's birthday is displayed in my +@code{nndiary+diary:birthdays} summary buffer (note that the message is +expirable, but will never be deleted, as it specifies a periodic event): + +@example + E Sat, Sep 22 01, 12:00: Joe's birthday (in 6 months, 1 week) +@end example + +In order to get something like the above, you would normally add the +following line to your diary groups'parameters: + +@lisp +(gnus-summary-line-format "%U%R%z %uD: %(%s%) (%ud)\n") +@end lisp + +However, @code{gnus-diary} does it automatically (@pxref{Diary Group +Parameters}). You can however customize the provided summary line format +with the following user options: + +@defvar gnus-diary-summary-line-format +Defines the summary line format used for diary groups (@pxref{Summary +Buffer Lines}). @code{gnus-diary} uses it to automatically update the +diary groups'parameters. +@end defvar + +@defvar gnus-diary-time-format +Defines the format to display dates in diary summary buffers. This is +used by the @code{D} user format. See the docstring for details. +@end defvar + +@defvar gnus-diary-delay-format-function +Defines the format function to use for displaying delays (remaining +times) in diary summary buffers. This is used by the @code{d} user +format. There are currently built-in functions for English and French; +you can also define your own. See the docstring for details. +@end defvar + +@node Diary Articles Sorting +@subsubsection Diary Articles Sorting +@cindex diary articles sorting +@cindex diary summary lines sorting +@findex gnus-summary-sort-by-schedule +@findex gnus-thread-sort-by-schedule +@findex gnus-article-sort-by-schedule + +@code{gnus-diary} provides new sorting functions (@pxref{Sorting the +Summary Buffer} ) called @code{gnus-summary-sort-by-schedule}, +@code{gnus-thread-sort-by-schedule} and +@code{gnus-article-sort-by-schedule}. These functions let you organize +your diary summary buffers from the closest event to the farthest one. + +@code{gnus-diary} automatically installs +@code{gnus-summary-sort-by-schedule} as a menu item in the summary +buffer's ``sort'' menu, and the two others as the primary (hence +default) sorting functions in the group parameters (@pxref{Diary Group +Parameters}). + +@node Diary Headers Generation +@subsubsection Diary Headers Generation +@cindex diary headers generation +@findex gnus-diary-check-message + +@code{gnus-diary} provides a function called +@code{gnus-diary-check-message} to help you handle the @code{X-Diary-*} +headers. This function ensures that the current message contains all the +required diary headers, and prompts you for values or corrections if +needed. + + This function is hooked into the @code{nndiary} back end, so that +moving or copying an article to a diary group will trigger it +automatically. It is also bound to @kbd{C-c D c} in @code{message-mode} +and @code{article-edit-mode} in order to ease the process of converting +a usual mail to a diary one. + + This function takes a prefix argument which will force prompting of +all diary headers, regardless of their presence or validity. That way, +you can very easily reschedule an already valid diary message, for +instance. + +@node Diary Group Parameters +@subsubsection Diary Group Parameters +@cindex diary group parameters + +When you create a new diary group, or visit one, @code{gnus-diary} +automatically checks your group parameters and if needed, sets the +summary line format to the diary-specific value, installs the +diary-specific sorting functions, and also adds the different +@code{X-Diary-*} headers to the group's posting-style. It is then easier +to send a diary message, because if you use @kbd{C-u a} or @kbd{C-u m} +on a diary group to prepare a message, these headers will be inserted +automatically (although not filled with proper values yet). + +@node Sending or Not Sending +@subsection Sending or Not Sending + +Well, assuming you've read all of the above, here are two final notes on +mail sending with @code{nndiary}: + +@itemize @bullet +@item +@code{nndiary} is a @emph{real} mail back end. You really send real diary +messsages for real. This means for instance that you can give +appointments to anybody (provided they use Gnus and @code{nndiary}) by +sending the diary message to them as well. +@item +However, since @code{nndiary} also has a @code{request-post} method, you +can also use @kbd{C-u a} instead of @kbd{C-u m} on a diary group and the +message won't actually be sent; just stored locally in the group. This +comes in very handy for private appointments. +@end itemize + +@node Gnus Unplugged +@section Gnus Unplugged +@cindex offline +@cindex unplugged +@cindex agent +@cindex Gnus agent +@cindex Gnus unplugged + +In olden times (ca. February '88), people used to run their newsreaders +on big machines with permanent connections to the net. News transport +was dealt with by news servers, and all the newsreaders had to do was to +read news. Believe it or not. + +Nowadays most people read news and mail at home, and use some sort of +modem to connect to the net. To avoid running up huge phone bills, it +would be nice to have a way to slurp down all the news and mail, hang up +the phone, read for several hours, and then upload any responses you +have to make. And then you repeat the procedure. + +Of course, you can use news servers for doing this as well. I've used +@code{inn} together with @code{slurp}, @code{pop} and @code{sendmail} +for some years, but doing that's a bore. Moving the news server +functionality up to the newsreader makes sense if you're the only person +reading news on a machine. + +Setting up Gnus as an ``offline'' newsreader is quite simple. In +fact, you don't even have to configure anything. + +Of course, to use it as such, you have to learn a few new commands. + +@menu +* Agent Basics:: How it all is supposed to work. +* Agent Categories:: How to tell the Gnus Agent what to download. +* Agent Commands:: New commands for all the buffers. +* Agent Visuals:: Ways that the agent may effect your summary buffer. +* Agent as Cache:: The Agent is a big cache too. +* Agent Expiry:: How to make old articles go away. +* Agent Regeneration:: How to recover from lost connections and other accidents. +* Agent and IMAP:: How to use the Agent with @acronym{IMAP}. +* Outgoing Messages:: What happens when you post/mail something? +* Agent Variables:: Customizing is fun. +* Example Setup:: An example @file{~/.gnus.el} file for offline people. +* Batching Agents:: How to fetch news from a @code{cron} job. +* Agent Caveats:: What you think it'll do and what it does. +@end menu + + +@node Agent Basics +@subsection Agent Basics + +First, let's get some terminology out of the way. + +The Gnus Agent is said to be @dfn{unplugged} when you have severed the +connection to the net (and notified the Agent that this is the case). +When the connection to the net is up again (and Gnus knows this), the +Agent is @dfn{plugged}. + +The @dfn{local} machine is the one you're running on, and which isn't +connected to the net continuously. + +@dfn{Downloading} means fetching things from the net to your local +machine. @dfn{Uploading} is doing the opposite. + +You know that Gnus gives you all the opportunity you'd ever want for +shooting yourself in the foot. Some people call it flexibility. Gnus +is also customizable to a great extent, which means that the user has a +say on how Gnus behaves. Other newsreaders might unconditionally shoot +you in your foot, but with Gnus, you have a choice! + +Gnus is never really in plugged or unplugged state. Rather, it applies +that state to each server individually. This means that some servers +can be plugged while others can be unplugged. Additionally, some +servers can be ignored by the Agent altogether (which means that +they're kinda like plugged always). + +So when you unplug the Agent and then wonder why is Gnus opening a +connection to the Net, the next step to do is to look whether all +servers are agentized. If there is an unagentized server, you found +the culprit. + +Another thing is the @dfn{offline} state. Sometimes, servers aren't +reachable. When Gnus notices this, it asks you whether you want the +server to be switched to offline state. If you say yes, then the +server will behave somewhat as if it was unplugged, except that Gnus +will ask you whether you want to switch it back online again. + +Let's take a typical Gnus session using the Agent. + +@itemize @bullet + +@item +@findex gnus-unplugged +You start Gnus with @code{gnus-unplugged}. This brings up the Gnus +Agent in a disconnected state. You can read all the news that you have +already fetched while in this mode. + +@item +You then decide to see whether any new news has arrived. You connect +your machine to the net (using PPP or whatever), and then hit @kbd{J j} +to make Gnus become @dfn{plugged} and use @kbd{g} to check for new mail +as usual. To check for new mail in unplugged mode (@pxref{Mail +Source Specifiers}). + +@item +You can then read the new news immediately, or you can download the +news onto your local machine. If you want to do the latter, you press +@kbd{g} to check if there are any new news and then @kbd{J s} to fetch +all the eligible articles in all the groups. (To let Gnus know which +articles you want to download, @pxref{Agent Categories}). + +@item +After fetching the articles, you press @kbd{J j} to make Gnus become +unplugged again, and you shut down the PPP thing (or whatever). And +then you read the news offline. + +@item +And then you go to step 2. +@end itemize + +Here are some things you should do the first time (or so) that you use +the Agent. + +@itemize @bullet + +@item +Decide which servers should be covered by the Agent. If you have a mail +back end, it would probably be nonsensical to have it covered by the +Agent. Go to the server buffer (@kbd{^} in the group buffer) and press +@kbd{J a} on the server (or servers) that you wish to have covered by the +Agent (@pxref{Server Agent Commands}), or @kbd{J r} on automatically +added servers you do not wish to have covered by the Agent. By default, +all @code{nntp} and @code{nnimap} servers in @code{gnus-select-method} and +@code{gnus-secondary-select-methods} are agentized. + +@item +Decide on download policy. It's fairly simple once you decide whether +you are going to use agent categories, topic parameters, and/or group +parameters to implement your policy. If you're new to gnus, it +is probably best to start with a category, @xref{Agent Categories}. + +Both topic parameters (@pxref{Topic Parameters}) and agent categories +(@pxref{Agent Categories}) provide for setting a policy that applies +to multiple groups. Which you use is entirely up to you. Topic +parameters do override categories so, if you mix the two, you'll have +to take that into account. If you have a few groups that deviate from +your policy, you can use group parameters (@pxref{Group Parameters}) to +configure them. + +@item +Uhm@dots{} that's it. +@end itemize + + +@node Agent Categories +@subsection Agent Categories + +One of the main reasons to integrate the news transport layer into the +newsreader is to allow greater control over what articles to download. +There's not much point in downloading huge amounts of articles, just to +find out that you're not interested in reading any of them. It's better +to be somewhat more conservative in choosing what to download, and then +mark the articles for downloading manually if it should turn out that +you're interested in the articles anyway. + +One of the more effective methods for controlling what is to be +downloaded is to create a @dfn{category} and then assign some (or all) +groups to this category. Groups that do not belong in any other +category belong to the @code{default} category. Gnus has its own +buffer for creating and managing categories. + +If you prefer, you can also use group parameters (@pxref{Group +Parameters}) and topic parameters (@pxref{Topic Parameters}) for an +alternative approach to controlling the agent. The only real +difference is that categories are specific to the agent (so there is +less to learn) while group and topic parameters include the kitchen +sink. + +Since you can set agent parameters in several different places we have +a rule to decide which source to believe. This rule specifies that +the parameter sources are checked in the following order: group +parameters, topic parameters, agent category, and finally customizable +variables. So you can mix all of these sources to produce a wide range +of behavior, just don't blame me if you don't remember where you put +your settings. + +@menu +* Category Syntax:: What a category looks like. +* Category Buffer:: A buffer for maintaining categories. +* Category Variables:: Customize'r'Us. +@end menu + + +@node Category Syntax +@subsubsection Category Syntax + +A category consists of a name, the list of groups belonging to the +category, and a number of optional parameters that override the +customizable variables. The complete list of agent parameters are +listed below. + +@cindex Agent Parameters +@table @code +@item gnus-agent-cat-name +The name of the category. + +@item gnus-agent-cat-groups +The list of groups that are in this category. + +@item gnus-agent-cat-predicate +A predicate which (generally) gives a rough outline of which articles +are eligible for downloading; and + +@item gnus-agent-cat-score-file +a score rule which (generally) gives you a finer granularity when +deciding what articles to download. (Note that this @dfn{download +score} is not necessarily related to normal scores.) + +@item gnus-agent-cat-enable-expiration +a boolean indicating whether the agent should expire old articles in +this group. Most groups should be expired to conserve disk space. In +fact, its probably safe to say that the gnus.* hierarchy contains the +only groups that should not be expired. + +@item gnus-agent-cat-days-until-old +an integer indicating the number of days that the agent should wait +before deciding that a read article is safe to expire. + +@item gnus-agent-cat-low-score +an integer that overrides the value of @code{gnus-agent-low-score}. + +@item gnus-agent-cat-high-score +an integer that overrides the value of @code{gnus-agent-high-score}. + +@item gnus-agent-cat-length-when-short +an integer that overrides the value of +@code{gnus-agent-short-article}. + +@item gnus-agent-cat-length-when-long +an integer that overrides the value of @code{gnus-agent-long-article}. + +@c @item gnus-agent-cat-disable-undownloaded-faces +@c a symbol indicating whether the summary buffer should @emph{not} display +@c undownloaded articles using the gnus-summary-*-undownloaded-face +@c faces. The symbol nil will enable the use of undownloaded faces while +@c all other symbols disable them. + +@item gnus-agent-cat-enable-undownloaded-faces +a symbol indicating whether the summary buffer should display +undownloaded articles using the gnus-summary-*-undownloaded-face +faces. The symbol nil will disable the use of undownloaded faces while +all other symbols enable them. +@end table + +The name of a category can not be changed once the category has been +created. + +Each category maintains a list of groups that are exclusive members of +that category. The exclusivity rule is automatically enforced, add a +group to a new category and it is automatically removed from its old +category. + +A predicate in its simplest form can be a single predicate such as +@code{true} or @code{false}. These two will download every available +article or nothing respectively. In the case of these two special +predicates an additional score rule is superfluous. + +Predicates of @code{high} or @code{low} download articles in respect of +their scores in relationship to @code{gnus-agent-high-score} and +@code{gnus-agent-low-score} as described below. + +To gain even finer control of what is to be regarded eligible for +download a predicate can consist of a number of predicates with logical +operators sprinkled in between. + +Perhaps some examples are in order. + +Here's a simple predicate. (It's the default predicate, in fact, used +for all groups that don't belong to any other category.) + +@lisp +short +@end lisp + +Quite simple, eh? This predicate is true if and only if the article is +short (for some value of ``short''). + +Here's a more complex predicate: + +@lisp +(or high + (and + (not low) + (not long))) +@end lisp + +This means that an article should be downloaded if it has a high score, +or if the score is not low and the article is not long. You get the +drift. + +The available logical operators are @code{or}, @code{and} and +@code{not}. (If you prefer, you can use the more ``C''-ish operators +@samp{|}, @code{&} and @code{!} instead.) + +The following predicates are pre-defined, but if none of these fit what +you want to do, you can write your own. + +When evaluating each of these predicates, the named constant will be +bound to the value determined by calling +@code{gnus-agent-find-parameter} on the appropriate parameter. For +example, gnus-agent-short-article will be bound to +@code{(gnus-agent-find-parameter group 'agent-short-article)}. This +means that you can specify a predicate in your category then tune that +predicate to individual groups. + +@table @code +@item short +True if the article is shorter than @code{gnus-agent-short-article} +lines; default 100. + +@item long +True if the article is longer than @code{gnus-agent-long-article} +lines; default 200. + +@item low +True if the article has a download score less than +@code{gnus-agent-low-score}; default 0. + +@item high +True if the article has a download score greater than +@code{gnus-agent-high-score}; default 0. + +@item spam +True if the Gnus Agent guesses that the article is spam. The +heuristics may change over time, but at present it just computes a +checksum and sees whether articles match. + +@item true +Always true. + +@item false +Always false. +@end table + +If you want to create your own predicate function, here's what you have +to know: The functions are called with no parameters, but the +@code{gnus-headers} and @code{gnus-score} dynamic variables are bound to +useful values. + +For example, you could decide that you don't want to download articles +that were posted more than a certain number of days ago (e.g. posted +more than @code{gnus-agent-expire-days} ago) you might write a function +something along the lines of the following: + +@lisp +(defun my-article-old-p () + "Say whether an article is old." + (< (time-to-days (date-to-time (mail-header-date gnus-headers))) + (- (time-to-days (current-time)) gnus-agent-expire-days))) +@end lisp + +with the predicate then defined as: + +@lisp +(not my-article-old-p) +@end lisp + +or you could append your predicate to the predefined +@code{gnus-category-predicate-alist} in your @file{~/.gnus.el} or +wherever. + +@lisp +(require 'gnus-agent) +(setq gnus-category-predicate-alist + (append gnus-category-predicate-alist + '((old . my-article-old-p)))) +@end lisp + +and simply specify your predicate as: + +@lisp +(not old) +@end lisp + +If/when using something like the above, be aware that there are many +misconfigured systems/mailers out there and so an article's date is not +always a reliable indication of when it was posted. Hell, some people +just don't give a damn. + +The above predicates apply to @emph{all} the groups which belong to the +category. However, if you wish to have a specific predicate for an +individual group within a category, or you're just too lazy to set up a +new category, you can enter a group's individual predicate in its group +parameters like so: + +@lisp +(agent-predicate . short) +@end lisp + +This is the group/topic parameter equivalent of the agent category default. +Note that when specifying a single word predicate like this, the +@code{agent-predicate} specification must be in dotted pair notation. + +The equivalent of the longer example from above would be: + +@lisp +(agent-predicate or high (and (not low) (not long))) +@end lisp + +The outer parenthesis required in the category specification are not +entered here as, not being in dotted pair notation, the value of the +predicate is assumed to be a list. + + +Now, the syntax of the download score is the same as the syntax of +normal score files, except that all elements that require actually +seeing the article itself are verboten. This means that only the +following headers can be scored on: @code{Subject}, @code{From}, +@code{Date}, @code{Message-ID}, @code{References}, @code{Chars}, +@code{Lines}, and @code{Xref}. + +As with predicates, the specification of the @code{download score rule} +to use in respect of a group can be in either the category definition if +it's to be applicable to all groups in therein, or a group's parameters +if it's to be specific to that group. + +In both of these places the @code{download score rule} can take one of +three forms: + +@enumerate +@item +Score rule + +This has the same syntax as a normal Gnus score file except only a +subset of scoring keywords are available as mentioned above. + +example: + +@itemize @bullet +@item +Category specification + +@lisp +(("from" + ("Lars Ingebrigtsen" 1000000 nil s)) +("lines" + (500 -100 nil <))) +@end lisp + +@item +Group/Topic Parameter specification + +@lisp +(agent-score ("from" + ("Lars Ingebrigtsen" 1000000 nil s)) + ("lines" + (500 -100 nil <))) +@end lisp + +Again, note the omission of the outermost parenthesis here. +@end itemize + +@item +Agent score file + +These score files must @emph{only} contain the permitted scoring +keywords stated above. + +example: + +@itemize @bullet +@item +Category specification + +@lisp +("~/News/agent.SCORE") +@end lisp + +or perhaps + +@lisp +("~/News/agent.SCORE" "~/News/agent.group.SCORE") +@end lisp + +@item +Group Parameter specification + +@lisp +(agent-score "~/News/agent.SCORE") +@end lisp + +Additional score files can be specified as above. Need I say anything +about parenthesis? +@end itemize + +@item +Use @code{normal} score files + +If you don't want to maintain two sets of scoring rules for a group, and +your desired @code{downloading} criteria for a group are the same as your +@code{reading} criteria then you can tell the agent to refer to your +@code{normal} score files when deciding what to download. + +These directives in either the category definition or a group's +parameters will cause the agent to read in all the applicable score +files for a group, @emph{filtering out} those sections that do not +relate to one of the permitted subset of scoring keywords. + +@itemize @bullet +@item +Category Specification + +@lisp +file +@end lisp + +@item +Group Parameter specification + +@lisp +(agent-score . file) +@end lisp +@end itemize +@end enumerate + +@node Category Buffer +@subsubsection Category Buffer + +You'd normally do all category maintenance from the category buffer. +When you enter it for the first time (with the @kbd{J c} command from +the group buffer), you'll only see the @code{default} category. + +The following commands are available in this buffer: + +@table @kbd +@item q +@kindex q (Category) +@findex gnus-category-exit +Return to the group buffer (@code{gnus-category-exit}). + +@item e +@kindex e (Category) +@findex gnus-category-customize-category +Use a customization buffer to set all of the selected category's +parameters at one time (@code{gnus-category-customize-category}). + +@item k +@kindex k (Category) +@findex gnus-category-kill +Kill the current category (@code{gnus-category-kill}). + +@item c +@kindex c (Category) +@findex gnus-category-copy +Copy the current category (@code{gnus-category-copy}). + +@item a +@kindex a (Category) +@findex gnus-category-add +Add a new category (@code{gnus-category-add}). + +@item p +@kindex p (Category) +@findex gnus-category-edit-predicate +Edit the predicate of the current category +(@code{gnus-category-edit-predicate}). + +@item g +@kindex g (Category) +@findex gnus-category-edit-groups +Edit the list of groups belonging to the current category +(@code{gnus-category-edit-groups}). + +@item s +@kindex s (Category) +@findex gnus-category-edit-score +Edit the download score rule of the current category +(@code{gnus-category-edit-score}). + +@item l +@kindex l (Category) +@findex gnus-category-list +List all the categories (@code{gnus-category-list}). +@end table + + +@node Category Variables +@subsubsection Category Variables + +@table @code +@item gnus-category-mode-hook +@vindex gnus-category-mode-hook +Hook run in category buffers. + +@item gnus-category-line-format +@vindex gnus-category-line-format +Format of the lines in the category buffer (@pxref{Formatting +Variables}). Valid elements are: + +@table @samp +@item c +The name of the category. + +@item g +The number of groups in the category. +@end table + +@item gnus-category-mode-line-format +@vindex gnus-category-mode-line-format +Format of the category mode line (@pxref{Mode Line Formatting}). + +@item gnus-agent-short-article +@vindex gnus-agent-short-article +Articles that have fewer lines than this are short. Default 100. + +@item gnus-agent-long-article +@vindex gnus-agent-long-article +Articles that have more lines than this are long. Default 200. + +@item gnus-agent-low-score +@vindex gnus-agent-low-score +Articles that have a score lower than this have a low score. Default +0. + +@item gnus-agent-high-score +@vindex gnus-agent-high-score +Articles that have a score higher than this have a high score. Default +0. + +@item gnus-agent-expire-days +@vindex gnus-agent-expire-days +The number of days that a @samp{read} article must stay in the agent's +local disk before becoming eligible for expiration (While the name is +the same, this doesn't mean expiring the article on the server. It +just means deleting the local copy of the article). What is also +important to understand is that the counter starts with the time the +article was written to the local disk and not the time the article was +read. +Default 7. + +@item gnus-agent-enable-expiration +@vindex gnus-agent-enable-expiration +Determines whether articles in a group are, by default, expired or +retained indefinitely. The default is @code{ENABLE} which means that +you'll have to disable expiration when desired. On the other hand, +you could set this to @code{DISABLE}. In that case, you would then +have to enable expiration in selected groups. + +@end table + + +@node Agent Commands +@subsection Agent Commands +@findex gnus-agent-toggle-plugged +@kindex J j (Agent) + +All the Gnus Agent commands are on the @kbd{J} submap. The @kbd{J j} +(@code{gnus-agent-toggle-plugged}) command works in all modes, and +toggles the plugged/unplugged state of the Gnus Agent. + + +@menu +* Group Agent Commands:: Configure groups and fetch their contents. +* Summary Agent Commands:: Manually select then fetch specific articles. +* Server Agent Commands:: Select the servers that are supported by the agent. +@end menu + + + + +@node Group Agent Commands +@subsubsection Group Agent Commands + +@table @kbd +@item J u +@kindex J u (Agent Group) +@findex gnus-agent-fetch-groups +Fetch all eligible articles in the current group +(@code{gnus-agent-fetch-groups}). + +@item J c +@kindex J c (Agent Group) +@findex gnus-enter-category-buffer +Enter the Agent category buffer (@code{gnus-enter-category-buffer}). + +@item J s +@kindex J s (Agent Group) +@findex gnus-agent-fetch-session +Fetch all eligible articles in all groups +(@code{gnus-agent-fetch-session}). + +@item J S +@kindex J S (Agent Group) +@findex gnus-group-send-queue +Send all sendable messages in the queue group +(@code{gnus-group-send-queue}). @xref{Drafts}. + +@item J a +@kindex J a (Agent Group) +@findex gnus-agent-add-group +Add the current group to an Agent category +(@code{gnus-agent-add-group}). This command understands the +process/prefix convention (@pxref{Process/Prefix}). + +@item J r +@kindex J r (Agent Group) +@findex gnus-agent-remove-group +Remove the current group from its category, if any +(@code{gnus-agent-remove-group}). This command understands the +process/prefix convention (@pxref{Process/Prefix}). + +@item J Y +@kindex J Y (Agent Group) +@findex gnus-agent-synchronize-flags +Synchronize flags changed while unplugged with remote server, if any. + + +@end table + + +@node Summary Agent Commands +@subsubsection Summary Agent Commands + +@table @kbd +@item J # +@kindex J # (Agent Summary) +@findex gnus-agent-mark-article +Mark the article for downloading (@code{gnus-agent-mark-article}). + +@item J M-# +@kindex J M-# (Agent Summary) +@findex gnus-agent-unmark-article +Remove the downloading mark from the article +(@code{gnus-agent-unmark-article}). + +@cindex % +@item @@ +@kindex @@ (Agent Summary) +@findex gnus-agent-toggle-mark +Toggle whether to download the article +(@code{gnus-agent-toggle-mark}). The download mark is @samp{%} by +default. + +@item J c +@kindex J c (Agent Summary) +@findex gnus-agent-catchup +Mark all articles as read (@code{gnus-agent-catchup}) that are neither cached, downloaded, nor downloadable. + +@item J S +@kindex J S (Agent Summary) +@findex gnus-agent-fetch-group +Download all eligible (@pxref{Agent Categories}) articles in this group. +(@code{gnus-agent-fetch-group}). + +@item J s +@kindex J s (Agent Summary) +@findex gnus-agent-fetch-series +Download all processable articles in this group. +(@code{gnus-agent-fetch-series}). + +@item J u +@kindex J u (Agent Summary) +@findex gnus-agent-summary-fetch-group +Download all downloadable articles in the current group +(@code{gnus-agent-summary-fetch-group}). + +@end table + + +@node Server Agent Commands +@subsubsection Server Agent Commands + +@table @kbd +@item J a +@kindex J a (Agent Server) +@findex gnus-agent-add-server +Add the current server to the list of servers covered by the Gnus Agent +(@code{gnus-agent-add-server}). + +@item J r +@kindex J r (Agent Server) +@findex gnus-agent-remove-server +Remove the current server from the list of servers covered by the Gnus +Agent (@code{gnus-agent-remove-server}). + +@end table + + +@node Agent Visuals +@subsection Agent Visuals + +If you open a summary while unplugged and, Gnus knows from the group's +active range that there are more articles than the headers currently +stored in the Agent, you may see some articles whose subject looks +something like @samp{[Undownloaded article #####]}. These are +placeholders for the missing headers. Aside from setting a mark, +there is not much that can be done with one of these placeholders. +When Gnus finally gets a chance to fetch the group's headers, the +placeholders will automatically be replaced by the actual headers. +You can configure the summary buffer's maneuvering to skip over the +placeholders if you care (See @code{gnus-auto-goto-ignores}). + +While it may be obvious to all, the only headers and articles +available while unplugged are those headers and articles that were +fetched into the Agent while previously plugged. To put it another +way, ``If you forget to fetch something while plugged, you might have a +less than satisfying unplugged session''. For this reason, the Agent +adds two visual effects to your summary buffer. These effects display +the download status of each article so that you always know which +articles will be available when unplugged. + +The first visual effect is the @samp{%O} spec. If you customize +@code{gnus-summary-line-format} to include this specifier, you will add +a single character field that indicates an article's download status. +Articles that have been fetched into either the Agent or the Cache, +will display @code{gnus-downloaded-mark} (defaults to @samp{+}). All +other articles will display @code{gnus-undownloaded-mark} (defaults to +@samp{-}). If you open a group that has not been agentized, a space +(@samp{ }) will be displayed. + +The second visual effect are the undownloaded faces. The faces, there +are three indicating the article's score (low, normal, high), seem to +result in a love/hate response from many Gnus users. The problem is +that the face selection is controlled by a list of condition tests and +face names (See @code{gnus-summary-highlight}). Each condition is +tested in the order in which it appears in the list so early +conditions have precedence over later conditions. All of this means +that, if you tick an undownloaded article, the article will continue +to be displayed in the undownloaded face rather than the ticked face. + +If you use the Agent as a cache (to avoid downloading the same article +each time you visit it or to minimize your connection time), the +undownloaded face will probably seem like a good idea. The reason +being that you do all of our work (marking, reading, deleting) with +downloaded articles so the normal faces always appear. + +For occasional Agent users, the undownloaded faces may appear to be an +absolutely horrible idea. The issue being that, since most of their +articles have not been fetched into the Agent, most of the normal +faces will be obscured by the undownloaded faces. If this is your +situation, you have two choices available. First, you can completely +disable the undownload faces by customizing +@code{gnus-summary-highlight} to delete the three cons-cells that +refer to the @code{gnus-summary-*-undownloaded-face} faces. Second, +if you prefer to take a more fine-grained approach, you may set the +@code{agent-disable-undownloaded-faces} group parameter to @code{t}. +This parameter, like all other agent parameters, may be set on an +Agent Category (@pxref{Agent Categories}), a Group Topic (@pxref{Topic +Parameters}), or an individual group (@pxref{Group Parameters}). + +@node Agent as Cache +@subsection Agent as Cache + +When Gnus is plugged, it is not efficient to download headers or +articles from the server again, if they are already stored in the +Agent. So, Gnus normally only downloads headers once, and stores them +in the Agent. These headers are later used when generating the summary +buffer, regardless of whether you are plugged or unplugged. Articles +are not cached in the Agent by default though (that would potentially +consume lots of disk space), but if you have already downloaded an +article into the Agent, Gnus will not download the article from the +server again but use the locally stored copy instead. + +If you so desire, you can configure the agent (see @code{gnus-agent-cache} +@pxref{Agent Variables}) to always download headers and articles while +plugged. Gnus will almost certainly be slower, but it will be kept +synchronized with the server. That last point probably won't make any +sense if you are using a nntp or nnimap back end. + +@node Agent Expiry +@subsection Agent Expiry + +@vindex gnus-agent-expire-days +@findex gnus-agent-expire +@kindex M-x gnus-agent-expire +@kindex M-x gnus-agent-expire-group +@findex gnus-agent-expire-group +@cindex agent expiry +@cindex Gnus agent expiry +@cindex expiry, in Gnus agent + +The Agent back end, @code{nnagent}, doesn't handle expiry. Well, at +least it doesn't handle it like other back ends. Instead, there are +special @code{gnus-agent-expire} and @code{gnus-agent-expire-group} +commands that will expire all read articles that are older than +@code{gnus-agent-expire-days} days. They can be run whenever you feel +that you're running out of space. Neither are particularly fast or +efficient, and it's not a particularly good idea to interrupt them (with +@kbd{C-g} or anything else) once you've started one of them. + +Note that other functions, e.g. @code{gnus-request-expire-articles}, +might run @code{gnus-agent-expire} for you to keep the agent +synchronized with the group. + +The agent parameter @code{agent-enable-expiration} may be used to +prevent expiration in selected groups. + +@vindex gnus-agent-expire-all +If @code{gnus-agent-expire-all} is non-@code{nil}, the agent +expiration commands will expire all articles---unread, read, ticked +and dormant. If @code{nil} (which is the default), only read articles +are eligible for expiry, and unread, ticked and dormant articles will +be kept indefinitely. + +If you find that some articles eligible for expiry are never expired, +perhaps some Gnus Agent files are corrupted. There's are special +commands, @code{gnus-agent-regenerate} and +@code{gnus-agent-regenerate-group}, to fix possible problems. + +@node Agent Regeneration +@subsection Agent Regeneration + +@cindex agent regeneration +@cindex Gnus agent regeneration +@cindex regeneration + +The local data structures used by @code{nnagent} may become corrupted +due to certain exceptional conditions. When this happens, +@code{nnagent} functionality may degrade or even fail. The solution +to this problem is to repair the local data structures by removing all +internal inconsistencies. + +For example, if your connection to your server is lost while +downloaded articles into the agent, the local data structures will not +know about articles successfully downloaded prior to the connection +failure. Running @code{gnus-agent-regenerate} or +@code{gnus-agent-regenerate-group} will update the data structures +such that you don't need to download these articles a second time. + +@findex gnus-agent-regenerate +@kindex M-x gnus-agent-regenerate +The command @code{gnus-agent-regenerate} will perform +@code{gnus-agent-regenerate-group} on every agentized group. While +you can run @code{gnus-agent-regenerate} in any buffer, it is strongly +recommended that you first close all summary buffers. + +@findex gnus-agent-regenerate-group +@kindex M-x gnus-agent-regenerate-group +The command @code{gnus-agent-regenerate-group} uses the local copies +of individual articles to repair the local @acronym{NOV}(header) database. It +then updates the internal data structures that document which articles +are stored locally. An optional argument will mark articles in the +agent as unread. + +@node Agent and IMAP +@subsection Agent and IMAP + +The Agent works with any Gnus back end, including nnimap. However, +since there are some conceptual differences between @acronym{NNTP} and +@acronym{IMAP}, this section (should) provide you with some information to +make Gnus Agent work smoother as a @acronym{IMAP} Disconnected Mode client. + +The first thing to keep in mind is that all flags (read, ticked, etc) +are kept on the @acronym{IMAP} server, rather than in @file{.newsrc} as is the +case for nntp. Thus Gnus need to remember flag changes when +disconnected, and synchronize these flags when you plug back in. + +Gnus keeps track of flag changes when reading nnimap groups under the +Agent. When you plug back in, Gnus will check if you have any changed +any flags and ask if you wish to synchronize these with the server. +The behavior is customizable by @code{gnus-agent-synchronize-flags}. + +@vindex gnus-agent-synchronize-flags +If @code{gnus-agent-synchronize-flags} is @code{nil}, the Agent will +never automatically synchronize flags. If it is @code{ask}, which is +the default, the Agent will check if you made any changes and if so +ask if you wish to synchronize these when you re-connect. If it has +any other value, all flags will be synchronized automatically. + +If you do not wish to synchronize flags automatically when you +re-connect, you can do it manually with the +@code{gnus-agent-synchronize-flags} command that is bound to @kbd{J Y} +in the group buffer. + +Some things are currently not implemented in the Agent that you'd might +expect from a disconnected @acronym{IMAP} client, including: + +@itemize @bullet + +@item +Copying/moving articles into nnimap groups when unplugged. + +@item +Creating/deleting nnimap groups when unplugged. + +@end itemize + +Technical note: the synchronization algorithm does not work by ``pushing'' +all local flags to the server, but rather incrementally update the +server view of flags by changing only those flags that were changed by +the user. Thus, if you set one flag on an article, quit the group and +re-select the group and remove the flag; the flag will be set and +removed from the server when you ``synchronize''. The queued flag +operations can be found in the per-server @code{flags} file in the Agent +directory. It's emptied when you synchronize flags. + + +@node Outgoing Messages +@subsection Outgoing Messages + +When Gnus is unplugged, all outgoing messages (both mail and news) are +stored in the draft group ``queue'' (@pxref{Drafts}). You can view +them there after posting, and edit them at will. + +When Gnus is plugged again, you can send the messages either from the +draft group with the special commands available there, or you can use +the @kbd{J S} command in the group buffer to send all the sendable +messages in the draft group. + + + +@node Agent Variables +@subsection Agent Variables + +@table @code +@item gnus-agent-directory +@vindex gnus-agent-directory +Where the Gnus Agent will store its files. The default is +@file{~/News/agent/}. + +@item gnus-agent-handle-level +@vindex gnus-agent-handle-level +Groups on levels (@pxref{Group Levels}) higher than this variable will +be ignored by the Agent. The default is @code{gnus-level-subscribed}, +which means that only subscribed group will be considered by the Agent +by default. + +@item gnus-agent-plugged-hook +@vindex gnus-agent-plugged-hook +Hook run when connecting to the network. + +@item gnus-agent-unplugged-hook +@vindex gnus-agent-unplugged-hook +Hook run when disconnecting from the network. + +@item gnus-agent-fetched-hook +@vindex gnus-agent-fetched-hook +Hook run when finished fetching articles. + +@item gnus-agent-cache +@vindex gnus-agent-cache +Variable to control whether use the locally stored @acronym{NOV} and +articles when plugged, e.g. essentially using the Agent as a cache. +The default is non-@code{nil}, which means to use the Agent as a cache. + +@item gnus-agent-go-online +@vindex gnus-agent-go-online +If @code{gnus-agent-go-online} is @code{nil}, the Agent will never +automatically switch offline servers into online status. If it is +@code{ask}, the default, the Agent will ask if you wish to switch +offline servers into online status when you re-connect. If it has any +other value, all offline servers will be automatically switched into +online status. + +@item gnus-agent-mark-unread-after-downloaded +@vindex gnus-agent-mark-unread-after-downloaded +If @code{gnus-agent-mark-unread-after-downloaded} is non-@code{nil}, +mark articles as unread after downloading. This is usually a safe +thing to do as the newly downloaded article has obviously not been +read. The default is @code{t}. + +@item gnus-agent-consider-all-articles +@vindex gnus-agent-consider-all-articles +If @code{gnus-agent-consider-all-articles} is non-@code{nil}, the +agent will let the agent predicate decide whether articles need to be +downloaded or not, for all articles. When @code{nil}, the default, +the agent will only let the predicate decide whether unread articles +are downloaded or not. If you enable this, you may also want to look +into the agent expiry settings (@pxref{Category Variables}), so that +the agent doesn't download articles which the agent will later expire, +over and over again. + +@item gnus-agent-max-fetch-size +@vindex gnus-agent-max-fetch-size +The agent fetches articles into a temporary buffer prior to parsing +them into individual files. To avoid exceeding the max. buffer size, +the agent alternates between fetching and parsing until all articles +have been fetched. @code{gnus-agent-max-fetch-size} provides a size +limit to control how often the cycling occurs. A large value improves +performance. A small value minimizes the time lost should the +connection be lost while fetching (You may need to run +@code{gnus-agent-regenerate-group} to update the group's state. +However, all articles parsed prior to loosing the connection will be +available while unplugged). The default is 10M so it is unusual to +see any cycling. + +@item gnus-server-unopen-status +@vindex gnus-server-unopen-status +Perhaps not an Agent variable, but closely related to the Agent, this +variable says what will happen if Gnus cannot open a server. If the +Agent is enabled, the default, @code{nil}, makes Gnus ask the user +whether to deny the server or whether to unplug the agent. If the +Agent is disabled, Gnus always simply deny the server. Other choices +for this variable include @code{denied} and @code{offline} the latter +is only valid if the Agent is used. + +@item gnus-auto-goto-ignores +@vindex gnus-auto-goto-ignores +Another variable that isn't an Agent variable, yet so closely related +that most will look for it here, this variable tells the summary +buffer how to maneuver around undownloaded (only headers stored in the +agent) and unfetched (neither article nor headers stored) articles. + +The valid values are @code{nil} (maneuver to any article), +@code{undownloaded} (maneuvering while unplugged ignores articles that +have not been fetched), @code{always-undownloaded} (maneuvering always +ignores articles that have not been fetched), @code{unfetched} +(maneuvering ignores articles whose headers have not been fetched). + +@item gnus-agent-auto-agentize-methods +@vindex gnus-agent-auto-agentize-methods +If you have never used the Agent before (or more technically, if +@file{~/News/agent/lib/servers} does not exist), Gnus will +automatically agentize a few servers for you. This variable control +which backends should be auto-agentized. It is typically only useful +to agentize remote backends. The auto-agentizing has the same effect +as running @kbd{J a} on the servers (@pxref{Server Agent Commands}). +If the file exist, you must manage the servers manually by adding or +removing them, this variable is only applicable the first time you +start Gnus. The default is @samp{(nntp nnimap)}. + +@end table + + +@node Example Setup +@subsection Example Setup + +If you don't want to read this manual, and you have a fairly standard +setup, you may be able to use something like the following as your +@file{~/.gnus.el} file to get started. + +@lisp +;; @r{Define how Gnus is to fetch news. We do this over @acronym{NNTP}} +;; @r{from your ISP's server.} +(setq gnus-select-method '(nntp "news.your-isp.com")) + +;; @r{Define how Gnus is to read your mail. We read mail from} +;; @r{your ISP's @acronym{POP} server.} +(setq mail-sources '((pop :server "pop.your-isp.com"))) + +;; @r{Say how Gnus is to store the mail. We use nnml groups.} +(setq gnus-secondary-select-methods '((nnml ""))) + +;; @r{Make Gnus into an offline newsreader.} +;; (gnus-agentize) ; @r{The obsolete setting.} +;; (setq gnus-agent t) ; @r{Now the default.} +@end lisp + +That should be it, basically. Put that in your @file{~/.gnus.el} file, +edit to suit your needs, start up PPP (or whatever), and type @kbd{M-x +gnus}. + +If this is the first time you've run Gnus, you will be subscribed +automatically to a few default newsgroups. You'll probably want to +subscribe to more groups, and to do that, you have to query the +@acronym{NNTP} server for a complete list of groups with the @kbd{A A} +command. This usually takes quite a while, but you only have to do it +once. + +After reading and parsing a while, you'll be presented with a list of +groups. Subscribe to the ones you want to read with the @kbd{u} +command. @kbd{l} to make all the killed groups disappear after you've +subscribe to all the groups you want to read. (@kbd{A k} will bring +back all the killed groups.) + +You can now read the groups at once, or you can download the articles +with the @kbd{J s} command. And then read the rest of this manual to +find out which of the other gazillion things you want to customize. + + +@node Batching Agents +@subsection Batching Agents +@findex gnus-agent-batch + +Having the Gnus Agent fetch articles (and post whatever messages you've +written) is quite easy once you've gotten things set up properly. The +following shell script will do everything that is necessary: + +You can run a complete batch command from the command line with the +following incantation: + +@example +#!/bin/sh +emacs -batch -l ~/.emacs -l ~/.gnus.el -f gnus-agent-batch >/dev/null 2>&1 +@end example + + +@node Agent Caveats +@subsection Agent Caveats + +The Gnus Agent doesn't seem to work like most other offline +newsreaders. Here are some common questions that some imaginary people +may ask: + +@table @dfn +@item If I read an article while plugged, do they get entered into the Agent? + +@strong{No}. If you want this behavior, add +@code{gnus-agent-fetch-selected-article} to +@code{gnus-select-article-hook}. + +@item If I read an article while plugged, and the article already exists in +the Agent, will it get downloaded once more? + +@strong{No}, unless @code{gnus-agent-cache} is @code{nil}. + +@end table + +In short, when Gnus is unplugged, it only looks into the locally stored +articles; when it's plugged, it talks to your ISP and may also use the +locally stored articles. + + +@node Scoring +@chapter Scoring +@cindex scoring + +Other people use @dfn{kill files}, but we here at Gnus Towers like +scoring better than killing, so we'd rather switch than fight. They do +something completely different as well, so sit up straight and pay +attention! + +@vindex gnus-summary-mark-below +All articles have a default score (@code{gnus-summary-default-score}), +which is 0 by default. This score may be raised or lowered either +interactively or by score files. Articles that have a score lower than +@code{gnus-summary-mark-below} are marked as read. + +Gnus will read any @dfn{score files} that apply to the current group +before generating the summary buffer. + +There are several commands in the summary buffer that insert score +entries based on the current article. You can, for instance, ask Gnus to +lower or increase the score of all articles with a certain subject. + +There are two sorts of scoring entries: Permanent and temporary. +Temporary score entries are self-expiring entries. Any entries that are +temporary and have not been used for, say, a week, will be removed +silently to help keep the sizes of the score files down. + +@menu +* Summary Score Commands:: Adding score entries for the current group. +* Group Score Commands:: General score commands. +* Score Variables:: Customize your scoring. (My, what terminology). +* Score File Format:: What a score file may contain. +* Score File Editing:: You can edit score files by hand as well. +* Adaptive Scoring:: Big Sister Gnus knows what you read. +* Home Score File:: How to say where new score entries are to go. +* Followups To Yourself:: Having Gnus notice when people answer you. +* Scoring On Other Headers:: Scoring on non-standard headers. +* Scoring Tips:: How to score effectively. +* Reverse Scoring:: That problem child of old is not problem. +* Global Score Files:: Earth-spanning, ear-splitting score files. +* Kill Files:: They are still here, but they can be ignored. +* Converting Kill Files:: Translating kill files to score files. +* GroupLens:: Getting predictions on what you like to read. +* Advanced Scoring:: Using logical expressions to build score rules. +* Score Decays:: It can be useful to let scores wither away. +@end menu + + +@node Summary Score Commands +@section Summary Score Commands +@cindex score commands + +The score commands that alter score entries do not actually modify real +score files. That would be too inefficient. Gnus maintains a cache of +previously loaded score files, one of which is considered the +@dfn{current score file alist}. The score commands simply insert +entries into this list, and upon group exit, this list is saved. + +The current score file is by default the group's local score file, even +if no such score file actually exists. To insert score commands into +some other score file (e.g. @file{all.SCORE}), you must first make this +score file the current one. + +General score commands that don't actually change the score file: + +@table @kbd + +@item V s +@kindex V s (Summary) +@findex gnus-summary-set-score +Set the score of the current article (@code{gnus-summary-set-score}). + +@item V S +@kindex V S (Summary) +@findex gnus-summary-current-score +Display the score of the current article +(@code{gnus-summary-current-score}). + +@item V t +@kindex V t (Summary) +@findex gnus-score-find-trace +Display all score rules that have been used on the current article +(@code{gnus-score-find-trace}). In the @code{*Score Trace*} buffer, you +may type @kbd{e} to edit score file corresponding to the score rule on +current line and @kbd{f} to format (@code{gnus-score-pretty-print}) the +score file and edit it. + +@item V w +@kindex V w (Summary) +@findex gnus-score-find-favourite-words +List words used in scoring (@code{gnus-score-find-favourite-words}). + +@item V R +@kindex V R (Summary) +@findex gnus-summary-rescore +Run the current summary through the scoring process +(@code{gnus-summary-rescore}). This might be useful if you're playing +around with your score files behind Gnus' back and want to see the +effect you're having. + +@item V c +@kindex V c (Summary) +@findex gnus-score-change-score-file +Make a different score file the current +(@code{gnus-score-change-score-file}). + +@item V e +@kindex V e (Summary) +@findex gnus-score-edit-current-scores +Edit the current score file (@code{gnus-score-edit-current-scores}). +You will be popped into a @code{gnus-score-mode} buffer (@pxref{Score +File Editing}). + +@item V f +@kindex V f (Summary) +@findex gnus-score-edit-file +Edit a score file and make this score file the current one +(@code{gnus-score-edit-file}). + +@item V F +@kindex V F (Summary) +@findex gnus-score-flush-cache +Flush the score cache (@code{gnus-score-flush-cache}). This is useful +after editing score files. + +@item V C +@kindex V C (Summary) +@findex gnus-score-customize +Customize a score file in a visually pleasing manner +(@code{gnus-score-customize}). + +@end table + +The rest of these commands modify the local score file. + +@table @kbd + +@item V m +@kindex V m (Summary) +@findex gnus-score-set-mark-below +Prompt for a score, and mark all articles with a score below this as +read (@code{gnus-score-set-mark-below}). + +@item V x +@kindex V x (Summary) +@findex gnus-score-set-expunge-below +Prompt for a score, and add a score rule to the current score file to +expunge all articles below this score +(@code{gnus-score-set-expunge-below}). +@end table + +The keystrokes for actually making score entries follow a very regular +pattern, so there's no need to list all the commands. (Hundreds of +them.) + +@findex gnus-summary-increase-score +@findex gnus-summary-lower-score + +@enumerate +@item +The first key is either @kbd{I} (upper case i) for increasing the score +or @kbd{L} for lowering the score. +@item +The second key says what header you want to score on. The following +keys are available: +@table @kbd + +@item a +Score on the author name. + +@item s +Score on the subject line. + +@item x +Score on the @code{Xref} line---i.e., the cross-posting line. + +@item r +Score on the @code{References} line. + +@item d +Score on the date. + +@item l +Score on the number of lines. + +@item i +Score on the @code{Message-ID} header. + +@item e +Score on an ``extra'' header, that is, one of those in gnus-extra-headers, +if your @acronym{NNTP} server tracks additional header data in overviews. + +@item f +Score on followups---this matches the author name, and adds scores to +the followups to this author. (Using this key leads to the creation of +@file{ADAPT} files.) + +@item b +Score on the body. + +@item h +Score on the head. + +@item t +Score on thread. (Using this key leads to the creation of @file{ADAPT} +files.) + +@end table + +@item +The third key is the match type. Which match types are valid depends on +what headers you are scoring on. + +@table @code + +@item strings + +@table @kbd + +@item e +Exact matching. + +@item s +Substring matching. + +@item f +Fuzzy matching (@pxref{Fuzzy Matching}). + +@item r +Regexp matching +@end table + +@item date +@table @kbd + +@item b +Before date. + +@item a +After date. + +@item n +This date. +@end table + +@item number +@table @kbd + +@item < +Less than number. + +@item = +Equal to number. + +@item > +Greater than number. +@end table +@end table + +@item +The fourth and usually final key says whether this is a temporary (i.e., +expiring) score entry, or a permanent (i.e., non-expiring) score entry, +or whether it is to be done immediately, without adding to the score +file. +@table @kbd + +@item t +Temporary score entry. + +@item p +Permanent score entry. + +@item i +Immediately scoring. +@end table + +@item +If you are scoring on `e' (extra) headers, you will then be prompted for +the header name on which you wish to score. This must be a header named +in gnus-extra-headers, and @samp{TAB} completion is available. + +@end enumerate + +So, let's say you want to increase the score on the current author with +exact matching permanently: @kbd{I a e p}. If you want to lower the +score based on the subject line, using substring matching, and make a +temporary score entry: @kbd{L s s t}. Pretty easy. + +To make things a bit more complicated, there are shortcuts. If you use +a capital letter on either the second or third keys, Gnus will use +defaults for the remaining one or two keystrokes. The defaults are +``substring'' and ``temporary''. So @kbd{I A} is the same as @kbd{I a s +t}, and @kbd{I a R} is the same as @kbd{I a r t}. + +These functions take both the numerical prefix and the symbolic prefix +(@pxref{Symbolic Prefixes}). A numerical prefix says how much to lower +(or increase) the score of the article. A symbolic prefix of @code{a} +says to use the @file{all.SCORE} file for the command instead of the +current score file. + +@vindex gnus-score-mimic-keymap +The @code{gnus-score-mimic-keymap} says whether these commands will +pretend they are keymaps or not. + + +@node Group Score Commands +@section Group Score Commands +@cindex group score commands + +There aren't many of these as yet, I'm afraid. + +@table @kbd + +@item W f +@kindex W f (Group) +@findex gnus-score-flush-cache +Gnus maintains a cache of score alists to avoid having to reload them +all the time. This command will flush the cache +(@code{gnus-score-flush-cache}). + +@end table + +You can do scoring from the command line by saying something like: + +@findex gnus-batch-score +@cindex batch scoring +@example +$ emacs -batch -l ~/.emacs -l ~/.gnus.el -f gnus-batch-score +@end example + + +@node Score Variables +@section Score Variables +@cindex score variables + +@table @code + +@item gnus-use-scoring +@vindex gnus-use-scoring +If @code{nil}, Gnus will not check for score files, and will not, in +general, do any score-related work. This is @code{t} by default. + +@item gnus-kill-killed +@vindex gnus-kill-killed +If this variable is @code{nil}, Gnus will never apply score files to +articles that have already been through the kill process. While this +may save you lots of time, it also means that if you apply a kill file +to a group, and then change the kill file and want to run it over you +group again to kill more articles, it won't work. You have to set this +variable to @code{t} to do that. (It is @code{t} by default.) + +@item gnus-kill-files-directory +@vindex gnus-kill-files-directory +All kill and score files will be stored in this directory, which is +initialized from the @env{SAVEDIR} environment variable by default. +This is @file{~/News/} by default. + +@item gnus-score-file-suffix +@vindex gnus-score-file-suffix +Suffix to add to the group name to arrive at the score file name +(@file{SCORE} by default.) + +@item gnus-score-uncacheable-files +@vindex gnus-score-uncacheable-files +@cindex score cache +All score files are normally cached to avoid excessive re-loading of +score files. However, if this might make your Emacs grow big and +bloated, so this regexp can be used to weed out score files unlikely +to be needed again. It would be a bad idea to deny caching of +@file{all.SCORE}, while it might be a good idea to not cache +@file{comp.infosystems.www.authoring.misc.ADAPT}. In fact, this +variable is @samp{ADAPT$} by default, so no adaptive score files will +be cached. + +@item gnus-save-score +@vindex gnus-save-score +If you have really complicated score files, and do lots of batch +scoring, then you might set this variable to @code{t}. This will make +Gnus save the scores into the @file{.newsrc.eld} file. + +If you do not set this to @code{t}, then manual scores (like those set +with @kbd{V s} (@code{gnus-summary-set-score})) will not be preserved +across group visits. + +@item gnus-score-interactive-default-score +@vindex gnus-score-interactive-default-score +Score used by all the interactive raise/lower commands to raise/lower +score with. Default is 1000, which may seem excessive, but this is to +ensure that the adaptive scoring scheme gets enough room to play with. +We don't want the small changes from the adaptive scoring to overwrite +manually entered data. + +@item gnus-summary-default-score +@vindex gnus-summary-default-score +Default score of an article, which is 0 by default. + +@item gnus-summary-expunge-below +@vindex gnus-summary-expunge-below +Don't display the summary lines of articles that have scores lower than +this variable. This is @code{nil} by default, which means that no +articles will be hidden. This variable is local to the summary buffers, +and has to be set from @code{gnus-summary-mode-hook}. + +@item gnus-score-over-mark +@vindex gnus-score-over-mark +Mark (in the third column) used for articles with a score over the +default. Default is @samp{+}. + +@item gnus-score-below-mark +@vindex gnus-score-below-mark +Mark (in the third column) used for articles with a score below the +default. Default is @samp{-}. + +@item gnus-score-find-score-files-function +@vindex gnus-score-find-score-files-function +Function used to find score files for the current group. This function +is called with the name of the group as the argument. + +Predefined functions available are: +@table @code + +@item gnus-score-find-single +@findex gnus-score-find-single +Only apply the group's own score file. + +@item gnus-score-find-bnews +@findex gnus-score-find-bnews +Apply all score files that match, using bnews syntax. This is the +default. If the current group is @samp{gnu.emacs.gnus}, for instance, +@file{all.emacs.all.SCORE}, @file{not.alt.all.SCORE} and +@file{gnu.all.SCORE} would all apply. In short, the instances of +@samp{all} in the score file names are translated into @samp{.*}, and +then a regexp match is done. + +This means that if you have some score entries that you want to apply to +all groups, then you put those entries in the @file{all.SCORE} file. + +The score files are applied in a semi-random order, although Gnus will +try to apply the more general score files before the more specific score +files. It does this by looking at the number of elements in the score +file names---discarding the @samp{all} elements. + +@item gnus-score-find-hierarchical +@findex gnus-score-find-hierarchical +Apply all score files from all the parent groups. This means that you +can't have score files like @file{all.SCORE}, but you can have +@file{SCORE}, @file{comp.SCORE} and @file{comp.emacs.SCORE} for each +server. + +@end table +This variable can also be a list of functions. In that case, all +these functions will be called with the group name as argument, and +all the returned lists of score files will be applied. These +functions can also return lists of lists of score alists directly. In +that case, the functions that return these non-file score alists +should probably be placed before the ``real'' score file functions, to +ensure that the last score file returned is the local score file. +Phu. + +For example, to do hierarchical scoring but use a non-server-specific +overall score file, you could use the value +@example +(list (lambda (group) ("all.SCORE")) + 'gnus-score-find-hierarchical) +@end example + +@item gnus-score-expiry-days +@vindex gnus-score-expiry-days +This variable says how many days should pass before an unused score file +entry is expired. If this variable is @code{nil}, no score file entries +are expired. It's 7 by default. + +@item gnus-update-score-entry-dates +@vindex gnus-update-score-entry-dates +If this variable is non-@code{nil}, temporary score entries that have +been triggered (matched) will have their dates updated. (This is how Gnus +controls expiry---all non-matched-entries will become too old while +matched entries will stay fresh and young.) However, if you set this +variable to @code{nil}, even matched entries will grow old and will +have to face that oh-so grim reaper. + +@item gnus-score-after-write-file-function +@vindex gnus-score-after-write-file-function +Function called with the name of the score file just written. + +@item gnus-score-thread-simplify +@vindex gnus-score-thread-simplify +If this variable is non-@code{nil}, article subjects will be +simplified for subject scoring purposes in the same manner as with +threading---according to the current value of +@code{gnus-simplify-subject-functions}. If the scoring entry uses +@code{substring} or @code{exact} matching, the match will also be +simplified in this manner. + +@end table + + +@node Score File Format +@section Score File Format +@cindex score file format + +A score file is an @code{emacs-lisp} file that normally contains just a +single form. Casual users are not expected to edit these files; +everything can be changed from the summary buffer. + +Anyway, if you'd like to dig into it yourself, here's an example: + +@lisp +(("from" + ("Lars Ingebrigtsen" -10000) + ("Per Abrahamsen") + ("larsi\\|lmi" -50000 nil R)) + ("subject" + ("Ding is Badd" nil 728373)) + ("xref" + ("alt.politics" -1000 728372 s)) + ("lines" + (2 -100 nil <)) + (mark 0) + (expunge -1000) + (mark-and-expunge -10) + (read-only nil) + (orphan -10) + (adapt t) + (files "/hom/larsi/News/gnu.SCORE") + (exclude-files "all.SCORE") + (local (gnus-newsgroup-auto-expire t) + (gnus-summary-make-false-root empty)) + (eval (ding))) +@end lisp + +This example demonstrates most score file elements. @xref{Advanced +Scoring}, for a different approach. + +Even though this looks much like Lisp code, nothing here is actually +@code{eval}ed. The Lisp reader is used to read this form, though, so it +has to be valid syntactically, if not semantically. + +Six keys are supported by this alist: + +@table @code + +@item STRING +If the key is a string, it is the name of the header to perform the +match on. Scoring can only be performed on these eight headers: +@code{From}, @code{Subject}, @code{References}, @code{Message-ID}, +@code{Xref}, @code{Lines}, @code{Chars} and @code{Date}. In addition to +these headers, there are three strings to tell Gnus to fetch the entire +article and do the match on larger parts of the article: @code{Body} +will perform the match on the body of the article, @code{Head} will +perform the match on the head of the article, and @code{All} will +perform the match on the entire article. Note that using any of these +last three keys will slow down group entry @emph{considerably}. The +final ``header'' you can score on is @code{Followup}. These score +entries will result in new score entries being added for all follow-ups +to articles that matches these score entries. + +Following this key is an arbitrary number of score entries, where each +score entry has one to four elements. +@enumerate + +@item +The first element is the @dfn{match element}. On most headers this will +be a string, but on the Lines and Chars headers, this must be an +integer. + +@item +If the second element is present, it should be a number---the @dfn{score +element}. This number should be an integer in the neginf to posinf +interval. This number is added to the score of the article if the match +is successful. If this element is not present, the +@code{gnus-score-interactive-default-score} number will be used +instead. This is 1000 by default. + +@item +If the third element is present, it should be a number---the @dfn{date +element}. This date says when the last time this score entry matched, +which provides a mechanism for expiring the score entries. It this +element is not present, the score entry is permanent. The date is +represented by the number of days since December 31, 1 BCE. + +@item +If the fourth element is present, it should be a symbol---the @dfn{type +element}. This element specifies what function should be used to see +whether this score entry matches the article. What match types that can +be used depends on what header you wish to perform the match on. +@table @dfn + +@item From, Subject, References, Xref, Message-ID +For most header types, there are the @code{r} and @code{R} (regexp), as +well as @code{s} and @code{S} (substring) types, and @code{e} and +@code{E} (exact match), and @code{w} (word match) types. If this +element is not present, Gnus will assume that substring matching should +be used. @code{R}, @code{S}, and @code{E} differ from the others in +that the matches will be done in a case-sensitive manner. All these +one-letter types are really just abbreviations for the @code{regexp}, +@code{string}, @code{exact}, and @code{word} types, which you can use +instead, if you feel like. + +@item Extra +Just as for the standard string overview headers, if you are using +gnus-extra-headers, you can score on these headers' values. In this +case, there is a 5th element in the score entry, being the name of the +header to be scored. The following entry is useful in your +@file{all.SCORE} file in case of spam attacks from a single origin +host, if your @acronym{NNTP} server tracks @samp{NNTP-Posting-Host} in +overviews: + +@lisp +("111.222.333.444" -1000 nil s + "NNTP-Posting-Host") +@end lisp + +@item Lines, Chars +These two headers use different match types: @code{<}, @code{>}, +@code{=}, @code{>=} and @code{<=}. + +These predicates are true if + +@example +(PREDICATE HEADER MATCH) +@end example + +evaluates to non-@code{nil}. For instance, the advanced match +@code{("lines" 4 <)} (@pxref{Advanced Scoring}) will result in the +following form: + +@lisp +(< header-value 4) +@end lisp + +Or to put it another way: When using @code{<} on @code{Lines} with 4 as +the match, we get the score added if the article has less than 4 lines. +(It's easy to get confused and think it's the other way around. But +it's not. I think.) + +When matching on @code{Lines}, be careful because some back ends (like +@code{nndir}) do not generate @code{Lines} header, so every article ends +up being marked as having 0 lines. This can lead to strange results if +you happen to lower score of the articles with few lines. + +@item Date +For the Date header we have three kinda silly match types: +@code{before}, @code{at} and @code{after}. I can't really imagine this +ever being useful, but, like, it would feel kinda silly not to provide +this function. Just in case. You never know. Better safe than sorry. +Once burnt, twice shy. Don't judge a book by its cover. Never not have +sex on a first date. (I have been told that at least one person, and I +quote, ``found this function indispensable'', however.) + +@cindex ISO8601 +@cindex date +A more useful match type is @code{regexp}. With it, you can match the +date string using a regular expression. The date is normalized to +ISO8601 compact format first---@var{YYYYMMDD}@code{T}@var{HHMMSS}. If +you want to match all articles that have been posted on April 1st in +every year, you could use @samp{....0401.........} as a match string, +for instance. (Note that the date is kept in its original time zone, so +this will match articles that were posted when it was April 1st where +the article was posted from. Time zones are such wholesome fun for the +whole family, eh?) + +@item Head, Body, All +These three match keys use the same match types as the @code{From} (etc) +header uses. + +@item Followup +This match key is somewhat special, in that it will match the +@code{From} header, and affect the score of not only the matching +articles, but also all followups to the matching articles. This allows +you e.g. increase the score of followups to your own articles, or +decrease the score of followups to the articles of some known +trouble-maker. Uses the same match types as the @code{From} header +uses. (Using this match key will lead to creation of @file{ADAPT} +files.) + +@item Thread +This match key works along the same lines as the @code{Followup} match +key. If you say that you want to score on a (sub-)thread started by an +article with a @code{Message-ID} @var{x}, then you add a @samp{thread} +match. This will add a new @samp{thread} match for each article that +has @var{x} in its @code{References} header. (These new @samp{thread} +matches will use the @code{Message-ID}s of these matching articles.) +This will ensure that you can raise/lower the score of an entire thread, +even though some articles in the thread may not have complete +@code{References} headers. Note that using this may lead to +undeterministic scores of the articles in the thread. (Using this match +key will lead to creation of @file{ADAPT} files.) +@end table +@end enumerate + +@cindex score file atoms +@item mark +The value of this entry should be a number. Any articles with a score +lower than this number will be marked as read. + +@item expunge +The value of this entry should be a number. Any articles with a score +lower than this number will be removed from the summary buffer. + +@item mark-and-expunge +The value of this entry should be a number. Any articles with a score +lower than this number will be marked as read and removed from the +summary buffer. + +@item thread-mark-and-expunge +The value of this entry should be a number. All articles that belong to +a thread that has a total score below this number will be marked as read +and removed from the summary buffer. @code{gnus-thread-score-function} +says how to compute the total score for a thread. + +@item files +The value of this entry should be any number of file names. These files +are assumed to be score files as well, and will be loaded the same way +this one was. + +@item exclude-files +The clue of this entry should be any number of files. These files will +not be loaded, even though they would normally be so, for some reason or +other. + +@item eval +The value of this entry will be @code{eval}el. This element will be +ignored when handling global score files. + +@item read-only +Read-only score files will not be updated or saved. Global score files +should feature this atom (@pxref{Global Score Files}). (Note: +@dfn{Global} here really means @dfn{global}; not your personal +apply-to-all-groups score files.) + +@item orphan +The value of this entry should be a number. Articles that do not have +parents will get this number added to their scores. Imagine you follow +some high-volume newsgroup, like @samp{comp.lang.c}. Most likely you +will only follow a few of the threads, also want to see any new threads. + +You can do this with the following two score file entries: + +@example + (orphan -500) + (mark-and-expunge -100) +@end example + +When you enter the group the first time, you will only see the new +threads. You then raise the score of the threads that you find +interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{C y}) the +rest. Next time you enter the group, you will see new articles in the +interesting threads, plus any new threads. + +I.e.---the orphan score atom is for high-volume groups where a few +interesting threads which can't be found automatically by ordinary +scoring rules exist. + +@item adapt +This entry controls the adaptive scoring. If it is @code{t}, the +default adaptive scoring rules will be used. If it is @code{ignore}, no +adaptive scoring will be performed on this group. If it is a list, this +list will be used as the adaptive scoring rules. If it isn't present, +or is something other than @code{t} or @code{ignore}, the default +adaptive scoring rules will be used. If you want to use adaptive +scoring on most groups, you'd set @code{gnus-use-adaptive-scoring} to +@code{t}, and insert an @code{(adapt ignore)} in the groups where you do +not want adaptive scoring. If you only want adaptive scoring in a few +groups, you'd set @code{gnus-use-adaptive-scoring} to @code{nil}, and +insert @code{(adapt t)} in the score files of the groups where you want +it. + +@item adapt-file +All adaptive score entries will go to the file named by this entry. It +will also be applied when entering the group. This atom might be handy +if you want to adapt on several groups at once, using the same adaptive +file for a number of groups. + +@item local +@cindex local variables +The value of this entry should be a list of @code{(@var{var} +@var{value})} pairs. Each @var{var} will be made buffer-local to the +current summary buffer, and set to the value specified. This is a +convenient, if somewhat strange, way of setting variables in some +groups if you don't like hooks much. Note that the @var{value} won't +be evaluated. +@end table + + +@node Score File Editing +@section Score File Editing + +You normally enter all scoring commands from the summary buffer, but you +might feel the urge to edit them by hand as well, so we've supplied you +with a mode for that. + +It's simply a slightly customized @code{emacs-lisp} mode, with these +additional commands: + +@table @kbd + +@item C-c C-c +@kindex C-c C-c (Score) +@findex gnus-score-edit-done +Save the changes you have made and return to the summary buffer +(@code{gnus-score-edit-done}). + +@item C-c C-d +@kindex C-c C-d (Score) +@findex gnus-score-edit-insert-date +Insert the current date in numerical format +(@code{gnus-score-edit-insert-date}). This is really the day number, if +you were wondering. + +@item C-c C-p +@kindex C-c C-p (Score) +@findex gnus-score-pretty-print +The adaptive score files are saved in an unformatted fashion. If you +intend to read one of these files, you want to @dfn{pretty print} it +first. This command (@code{gnus-score-pretty-print}) does that for +you. + +@end table + +Type @kbd{M-x gnus-score-mode} to use this mode. + +@vindex gnus-score-mode-hook +@code{gnus-score-menu-hook} is run in score mode buffers. + +In the summary buffer you can use commands like @kbd{V f}, @kbd{V e} and +@kbd{V t} to begin editing score files. + + +@node Adaptive Scoring +@section Adaptive Scoring +@cindex adaptive scoring + +If all this scoring is getting you down, Gnus has a way of making it all +happen automatically---as if by magic. Or rather, as if by artificial +stupidity, to be precise. + +@vindex gnus-use-adaptive-scoring +When you read an article, or mark an article as read, or kill an +article, you leave marks behind. On exit from the group, Gnus can sniff +these marks and add score elements depending on what marks it finds. +You turn on this ability by setting @code{gnus-use-adaptive-scoring} to +@code{t} or @code{(line)}. If you want score adaptively on separate +words appearing in the subjects, you should set this variable to +@code{(word)}. If you want to use both adaptive methods, set this +variable to @code{(word line)}. + +@vindex gnus-default-adaptive-score-alist +To give you complete control over the scoring process, you can customize +the @code{gnus-default-adaptive-score-alist} variable. For instance, it +might look something like this: + +@lisp +(setq gnus-default-adaptive-score-alist + '((gnus-unread-mark) + (gnus-ticked-mark (from 4)) + (gnus-dormant-mark (from 5)) + (gnus-del-mark (from -4) (subject -1)) + (gnus-read-mark (from 4) (subject 2)) + (gnus-expirable-mark (from -1) (subject -1)) + (gnus-killed-mark (from -1) (subject -3)) + (gnus-kill-file-mark) + (gnus-ancient-mark) + (gnus-low-score-mark) + (gnus-catchup-mark (from -1) (subject -1)))) +@end lisp + +As you see, each element in this alist has a mark as a key (either a +variable name or a ``real'' mark---a character). Following this key is +a arbitrary number of header/score pairs. If there are no header/score +pairs following the key, no adaptive scoring will be done on articles +that have that key as the article mark. For instance, articles with +@code{gnus-unread-mark} in the example above will not get adaptive score +entries. + +Each article can have only one mark, so just a single of these rules +will be applied to each article. + +To take @code{gnus-del-mark} as an example---this alist says that all +articles that have that mark (i.e., are marked with @samp{e}) will have a +score entry added to lower based on the @code{From} header by -4, and +lowered by @code{Subject} by -1. Change this to fit your prejudices. + +If you have marked 10 articles with the same subject with +@code{gnus-del-mark}, the rule for that mark will be applied ten times. +That means that that subject will get a score of ten times -1, which +should be, unless I'm much mistaken, -10. + +If you have auto-expirable (mail) groups (@pxref{Expiring Mail}), all +the read articles will be marked with the @samp{E} mark. This'll +probably make adaptive scoring slightly impossible, so auto-expiring and +adaptive scoring doesn't really mix very well. + +The headers you can score on are @code{from}, @code{subject}, +@code{message-id}, @code{references}, @code{xref}, @code{lines}, +@code{chars} and @code{date}. In addition, you can score on +@code{followup}, which will create an adaptive score entry that matches +on the @code{References} header using the @code{Message-ID} of the +current article, thereby matching the following thread. + +If you use this scheme, you should set the score file atom @code{mark} +to something small---like -300, perhaps, to avoid having small random +changes result in articles getting marked as read. + +After using adaptive scoring for a week or so, Gnus should start to +become properly trained and enhance the authors you like best, and kill +the authors you like least, without you having to say so explicitly. + +You can control what groups the adaptive scoring is to be performed on +by using the score files (@pxref{Score File Format}). This will also +let you use different rules in different groups. + +@vindex gnus-adaptive-file-suffix +The adaptive score entries will be put into a file where the name is the +group name with @code{gnus-adaptive-file-suffix} appended. The default +is @file{ADAPT}. + +@vindex gnus-score-exact-adapt-limit +When doing adaptive scoring, substring or fuzzy matching would probably +give you the best results in most cases. However, if the header one +matches is short, the possibility for false positives is great, so if +the length of the match is less than +@code{gnus-score-exact-adapt-limit}, exact matching will be used. If +this variable is @code{nil}, exact matching will always be used to avoid +this problem. + +@vindex gnus-default-adaptive-word-score-alist +As mentioned above, you can adapt either on individual words or entire +headers. If you adapt on words, the +@code{gnus-default-adaptive-word-score-alist} variable says what score +each instance of a word should add given a mark. + +@lisp +(setq gnus-default-adaptive-word-score-alist + `((,gnus-read-mark . 30) + (,gnus-catchup-mark . -10) + (,gnus-killed-mark . -20) + (,gnus-del-mark . -15))) +@end lisp + +This is the default value. If you have adaption on words enabled, every +word that appears in subjects of articles marked with +@code{gnus-read-mark} will result in a score rule that increase the +score with 30 points. + +@vindex gnus-default-ignored-adaptive-words +@vindex gnus-ignored-adaptive-words +Words that appear in the @code{gnus-default-ignored-adaptive-words} list +will be ignored. If you wish to add more words to be ignored, use the +@code{gnus-ignored-adaptive-words} list instead. + +@vindex gnus-adaptive-word-length-limit +Some may feel that short words shouldn't count when doing adaptive +scoring. If so, you may set @code{gnus-adaptive-word-length-limit} to +an integer. Words shorter than this number will be ignored. This +variable defaults to @code{nil}. + +@vindex gnus-adaptive-word-syntax-table +When the scoring is done, @code{gnus-adaptive-word-syntax-table} is the +syntax table in effect. It is similar to the standard syntax table, but +it considers numbers to be non-word-constituent characters. + +@vindex gnus-adaptive-word-minimum +If @code{gnus-adaptive-word-minimum} is set to a number, the adaptive +word scoring process will never bring down the score of an article to +below this number. The default is @code{nil}. + +@vindex gnus-adaptive-word-no-group-words +If @code{gnus-adaptive-word-no-group-words} is set to @code{t}, gnus +won't adaptively word score any of the words in the group name. Useful +for groups like @samp{comp.editors.emacs}, where most of the subject +lines contain the word @samp{emacs}. + +After using this scheme for a while, it might be nice to write a +@code{gnus-psychoanalyze-user} command to go through the rules and see +what words you like and what words you don't like. Or perhaps not. + +Note that the adaptive word scoring thing is highly experimental and is +likely to change in the future. Initial impressions seem to indicate +that it's totally useless as it stands. Some more work (involving more +rigorous statistical methods) will have to be done to make this useful. + + +@node Home Score File +@section Home Score File + +The score file where new score file entries will go is called the +@dfn{home score file}. This is normally (and by default) the score file +for the group itself. For instance, the home score file for +@samp{gnu.emacs.gnus} is @file{gnu.emacs.gnus.SCORE}. + +However, this may not be what you want. It is often convenient to share +a common home score file among many groups---all @samp{emacs} groups +could perhaps use the same home score file. + +@vindex gnus-home-score-file +The variable that controls this is @code{gnus-home-score-file}. It can +be: + +@enumerate +@item +A string. Then this file will be used as the home score file for all +groups. + +@item +A function. The result of this function will be used as the home score +file. The function will be called with the name of the group as the +parameter. + +@item +A list. The elements in this list can be: + +@enumerate +@item +@code{(@var{regexp} @var{file-name})}. If the @var{regexp} matches the +group name, the @var{file-name} will be used as the home score file. + +@item +A function. If the function returns non-@code{nil}, the result will +be used as the home score file. The function will be called with the +name of the group as the parameter. + +@item +A string. Use the string as the home score file. +@end enumerate + +The list will be traversed from the beginning towards the end looking +for matches. + +@end enumerate + +So, if you want to use just a single score file, you could say: + +@lisp +(setq gnus-home-score-file + "my-total-score-file.SCORE") +@end lisp + +If you want to use @file{gnu.SCORE} for all @samp{gnu} groups and +@file{rec.SCORE} for all @samp{rec} groups (and so on), you can say: + +@findex gnus-hierarchial-home-score-file +@lisp +(setq gnus-home-score-file + 'gnus-hierarchial-home-score-file) +@end lisp + +This is a ready-made function provided for your convenience. +Other functions include + +@table @code +@item gnus-current-home-score-file +@findex gnus-current-home-score-file +Return the ``current'' regular score file. This will make scoring +commands add entry to the ``innermost'' matching score file. + +@end table + +If you want to have one score file for the @samp{emacs} groups and +another for the @samp{comp} groups, while letting all other groups use +their own home score files: + +@lisp +(setq gnus-home-score-file + ;; @r{All groups that match the regexp @code{"\\.emacs"}} + '(("\\.emacs" "emacs.SCORE") + ;; @r{All the comp groups in one score file} + ("^comp" "comp.SCORE"))) +@end lisp + +@vindex gnus-home-adapt-file +@code{gnus-home-adapt-file} works exactly the same way as +@code{gnus-home-score-file}, but says what the home adaptive score file +is instead. All new adaptive file entries will go into the file +specified by this variable, and the same syntax is allowed. + +In addition to using @code{gnus-home-score-file} and +@code{gnus-home-adapt-file}, you can also use group parameters +(@pxref{Group Parameters}) and topic parameters (@pxref{Topic +Parameters}) to achieve much the same. Group and topic parameters take +precedence over this variable. + + +@node Followups To Yourself +@section Followups To Yourself + +Gnus offers two commands for picking out the @code{Message-ID} header in +the current buffer. Gnus will then add a score rule that scores using +this @code{Message-ID} on the @code{References} header of other +articles. This will, in effect, increase the score of all articles that +respond to the article in the current buffer. Quite useful if you want +to easily note when people answer what you've said. + +@table @code + +@item gnus-score-followup-article +@findex gnus-score-followup-article +This will add a score to articles that directly follow up your own +article. + +@item gnus-score-followup-thread +@findex gnus-score-followup-thread +This will add a score to all articles that appear in a thread ``below'' +your own article. +@end table + +@vindex message-sent-hook +These two functions are both primarily meant to be used in hooks like +@code{message-sent-hook}, like this: +@lisp +(add-hook 'message-sent-hook 'gnus-score-followup-thread) +@end lisp + + +If you look closely at your own @code{Message-ID}, you'll notice that +the first two or three characters are always the same. Here's two of +mine: + +@example + + +@end example + +So ``my'' ident on this machine is @samp{x6}. This can be +exploited---the following rule will raise the score on all followups to +myself: + +@lisp +("references" + ("" + 1000 nil r)) +@end lisp + +Whether it's the first two or first three characters that are ``yours'' +is system-dependent. + + +@node Scoring On Other Headers +@section Scoring On Other Headers +@cindex scoring on other headers + +Gnus is quite fast when scoring the ``traditional'' +headers---@samp{From}, @samp{Subject} and so on. However, scoring +other headers requires writing a @code{head} scoring rule, which means +that Gnus has to request every single article from the back end to find +matches. This takes a long time in big groups. + +Now, there's not much you can do about this for news groups, but for +mail groups, you have greater control. In @ref{To From Newsgroups}, +it's explained in greater detail what this mechanism does, but here's +a cookbook example for @code{nnml} on how to allow scoring on the +@samp{To} and @samp{Cc} headers. + +Put the following in your @file{~/.gnus.el} file. + +@lisp +(setq gnus-extra-headers '(To Cc Newsgroups Keywords) + nnmail-extra-headers gnus-extra-headers) +@end lisp + +Restart Gnus and rebuild your @code{nnml} overview files with the +@kbd{M-x nnml-generate-nov-databases} command. This will take a long +time if you have much mail. + +Now you can score on @samp{To} and @samp{Cc} as ``extra headers'' like +so: @kbd{I e s p To RET RET}. + +See? Simple. + + +@node Scoring Tips +@section Scoring Tips +@cindex scoring tips + +@table @dfn + +@item Crossposts +@cindex crossposts +@cindex scoring crossposts +If you want to lower the score of crossposts, the line to match on is +the @code{Xref} header. +@lisp +("xref" (" talk.politics.misc:" -1000)) +@end lisp + +@item Multiple crossposts +If you want to lower the score of articles that have been crossposted to +more than, say, 3 groups: +@lisp +("xref" + ("[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+ +[^:\n]+:[0-9]+" + -1000 nil r)) +@end lisp + +@item Matching on the body +This is generally not a very good idea---it takes a very long time. +Gnus actually has to fetch each individual article from the server. But +you might want to anyway, I guess. Even though there are three match +keys (@code{Head}, @code{Body} and @code{All}), you should choose one +and stick with it in each score file. If you use any two, each article +will be fetched @emph{twice}. If you want to match a bit on the +@code{Head} and a bit on the @code{Body}, just use @code{All} for all +the matches. + +@item Marking as read +You will probably want to mark articles that have scores below a certain +number as read. This is most easily achieved by putting the following +in your @file{all.SCORE} file: +@lisp +((mark -100)) +@end lisp +You may also consider doing something similar with @code{expunge}. + +@item Negated character classes +If you say stuff like @code{[^abcd]*}, you may get unexpected results. +That will match newlines, which might lead to, well, The Unknown. Say +@code{[^abcd\n]*} instead. +@end table + + +@node Reverse Scoring +@section Reverse Scoring +@cindex reverse scoring + +If you want to keep just articles that have @samp{Sex with Emacs} in the +subject header, and expunge all other articles, you could put something +like this in your score file: + +@lisp +(("subject" + ("Sex with Emacs" 2)) + (mark 1) + (expunge 1)) +@end lisp + +So, you raise all articles that match @samp{Sex with Emacs} and mark the +rest as read, and expunge them to boot. + + +@node Global Score Files +@section Global Score Files +@cindex global score files + +Sure, other newsreaders have ``global kill files''. These are usually +nothing more than a single kill file that applies to all groups, stored +in the user's home directory. Bah! Puny, weak newsreaders! + +What I'm talking about here are Global Score Files. Score files from +all over the world, from users everywhere, uniting all nations in one +big, happy score file union! Ange-score! New and untested! + +@vindex gnus-global-score-files +All you have to do to use other people's score files is to set the +@code{gnus-global-score-files} variable. One entry for each score file, +or each score file directory. Gnus will decide by itself what score +files are applicable to which group. + +To use the score file +@file{/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE} and +all score files in the @file{/ftp@@ftp.some-where:/pub/score} directory, +say this: + +@lisp +(setq gnus-global-score-files + '("/ftp@@ftp.gnus.org:/pub/larsi/ding/score/soc.motss.SCORE" + "/ftp@@ftp.some-where:/pub/score/")) +@end lisp + +@findex gnus-score-search-global-directories +@noindent +Simple, eh? Directory names must end with a @samp{/}. These +directories are typically scanned only once during each Gnus session. +If you feel the need to manually re-scan the remote directories, you can +use the @code{gnus-score-search-global-directories} command. + +Note that, at present, using this option will slow down group entry +somewhat. (That is---a lot.) + +If you want to start maintaining score files for other people to use, +just put your score file up for anonymous ftp and announce it to the +world. Become a retro-moderator! Participate in the retro-moderator +wars sure to ensue, where retro-moderators battle it out for the +sympathy of the people, luring them to use their score files on false +premises! Yay! The net is saved! + +Here are some tips for the would-be retro-moderator, off the top of my +head: + +@itemize @bullet + +@item +Articles heavily crossposted are probably junk. +@item +To lower a single inappropriate article, lower by @code{Message-ID}. +@item +Particularly brilliant authors can be raised on a permanent basis. +@item +Authors that repeatedly post off-charter for the group can safely be +lowered out of existence. +@item +Set the @code{mark} and @code{expunge} atoms to obliterate the nastiest +articles completely. + +@item +Use expiring score entries to keep the size of the file down. You +should probably have a long expiry period, though, as some sites keep +old articles for a long time. +@end itemize + +@dots{} I wonder whether other newsreaders will support global score files +in the future. @emph{Snicker}. Yup, any day now, newsreaders like Blue +Wave, xrn and 1stReader are bound to implement scoring. Should we start +holding our breath yet? + + +@node Kill Files +@section Kill Files +@cindex kill files + +Gnus still supports those pesky old kill files. In fact, the kill file +entries can now be expiring, which is something I wrote before Daniel +Quinlan thought of doing score files, so I've left the code in there. + +In short, kill processing is a lot slower (and I do mean @emph{a lot}) +than score processing, so it might be a good idea to rewrite your kill +files into score files. + +Anyway, a kill file is a normal @code{emacs-lisp} file. You can put any +forms into this file, which means that you can use kill files as some +sort of primitive hook function to be run on group entry, even though +that isn't a very good idea. + +Normal kill files look like this: + +@lisp +(gnus-kill "From" "Lars Ingebrigtsen") +(gnus-kill "Subject" "ding") +(gnus-expunge "X") +@end lisp + +This will mark every article written by me as read, and remove the +marked articles from the summary buffer. Very useful, you'll agree. + +Other programs use a totally different kill file syntax. If Gnus +encounters what looks like a @code{rn} kill file, it will take a stab at +interpreting it. + +Two summary functions for editing a @sc{gnus} kill file: + +@table @kbd + +@item M-k +@kindex M-k (Summary) +@findex gnus-summary-edit-local-kill +Edit this group's kill file (@code{gnus-summary-edit-local-kill}). + +@item M-K +@kindex M-K (Summary) +@findex gnus-summary-edit-global-kill +Edit the general kill file (@code{gnus-summary-edit-global-kill}). +@end table + +Two group mode functions for editing the kill files: + +@table @kbd + +@item M-k +@kindex M-k (Group) +@findex gnus-group-edit-local-kill +Edit this group's kill file (@code{gnus-group-edit-local-kill}). + +@item M-K +@kindex M-K (Group) +@findex gnus-group-edit-global-kill +Edit the general kill file (@code{gnus-group-edit-global-kill}). +@end table + +Kill file variables: + +@table @code +@item gnus-kill-file-name +@vindex gnus-kill-file-name +A kill file for the group @samp{soc.motss} is normally called +@file{soc.motss.KILL}. The suffix appended to the group name to get +this file name is detailed by the @code{gnus-kill-file-name} variable. +The ``global'' kill file (not in the score file sense of ``global'', of +course) is just called @file{KILL}. + +@vindex gnus-kill-save-kill-file +@item gnus-kill-save-kill-file +If this variable is non-@code{nil}, Gnus will save the +kill file after processing, which is necessary if you use expiring +kills. + +@item gnus-apply-kill-hook +@vindex gnus-apply-kill-hook +@findex gnus-apply-kill-file-unless-scored +@findex gnus-apply-kill-file +A hook called to apply kill files to a group. It is +@code{(gnus-apply-kill-file)} by default. If you want to ignore the +kill file if you have a score file for the same group, you can set this +hook to @code{(gnus-apply-kill-file-unless-scored)}. If you don't want +kill files to be processed, you should set this variable to @code{nil}. + +@item gnus-kill-file-mode-hook +@vindex gnus-kill-file-mode-hook +A hook called in kill-file mode buffers. + +@end table + + +@node Converting Kill Files +@section Converting Kill Files +@cindex kill files +@cindex converting kill files + +If you have loads of old kill files, you may want to convert them into +score files. If they are ``regular'', you can use +the @file{gnus-kill-to-score.el} package; if not, you'll have to do it +by hand. + +The kill to score conversion package isn't included in Gnus by default. +You can fetch it from +@uref{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}. + +If your old kill files are very complex---if they contain more +non-@code{gnus-kill} forms than not, you'll have to convert them by +hand. Or just let them be as they are. Gnus will still use them as +before. + + +@node GroupLens +@section GroupLens +@cindex GroupLens + +@sc{Note:} Unfortunately the GroupLens system seems to have shut down, +so this section is mostly of historical interest. + +@uref{http://www.cs.umn.edu/Research/GroupLens/, GroupLens} is a +collaborative filtering system that helps you work together with other +people to find the quality news articles out of the huge volume of +news articles generated every day. + +To accomplish this the GroupLens system combines your opinions about +articles you have already read with the opinions of others who have done +likewise and gives you a personalized prediction for each unread news +article. Think of GroupLens as a matchmaker. GroupLens watches how you +rate articles, and finds other people that rate articles the same way. +Once it has found some people you agree with it tells you, in the form +of a prediction, what they thought of the article. You can use this +prediction to help you decide whether or not you want to read the +article. + +@menu +* Using GroupLens:: How to make Gnus use GroupLens. +* Rating Articles:: Letting GroupLens know how you rate articles. +* Displaying Predictions:: Displaying predictions given by GroupLens. +* GroupLens Variables:: Customizing GroupLens. +@end menu + + +@node Using GroupLens +@subsection Using GroupLens + +To use GroupLens you must register a pseudonym with your local +@uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html, Better Bit +Bureau (BBB)} is the only better bit in town at the moment. + +Once you have registered you'll need to set a couple of variables. + +@table @code + +@item gnus-use-grouplens +@vindex gnus-use-grouplens +Setting this variable to a non-@code{nil} value will make Gnus hook into +all the relevant GroupLens functions. + +@item grouplens-pseudonym +@vindex grouplens-pseudonym +This variable should be set to the pseudonym you got when registering +with the Better Bit Bureau. + +@item grouplens-newsgroups +@vindex grouplens-newsgroups +A list of groups that you want to get GroupLens predictions for. + +@end table + +That's the minimum of what you need to get up and running with GroupLens. +Once you've registered, GroupLens will start giving you scores for +articles based on the average of what other people think. But, to get +the real benefit of GroupLens you need to start rating articles +yourself. Then the scores GroupLens gives you will be personalized for +you, based on how the people you usually agree with have already rated. + + +@node Rating Articles +@subsection Rating Articles + +In GroupLens, an article is rated on a scale from 1 to 5, inclusive. +Where 1 means something like this article is a waste of bandwidth and 5 +means that the article was really good. The basic question to ask +yourself is, ``on a scale from 1 to 5 would I like to see more articles +like this one?'' + +There are four ways to enter a rating for an article in GroupLens. + +@table @kbd + +@item r +@kindex r (GroupLens) +@findex bbb-summary-rate-article +This function will prompt you for a rating on a scale of one to five. + +@item k +@kindex k (GroupLens) +@findex grouplens-score-thread +This function will prompt you for a rating, and rate all the articles in +the thread. This is really useful for some of those long running giant +threads in rec.humor. + +@end table + +The next two commands, @kbd{n} and @kbd{,} take a numerical prefix to be +the score of the article you're reading. + +@table @kbd + +@item 1-5 n +@kindex n (GroupLens) +@findex grouplens-next-unread-article +Rate the article and go to the next unread article. + +@item 1-5 , +@kindex , (GroupLens) +@findex grouplens-best-unread-article +Rate the article and go to the next unread article with the highest score. + +@end table + +If you want to give the current article a score of 4 and then go to the +next article, just type @kbd{4 n}. + + +@node Displaying Predictions +@subsection Displaying Predictions + +GroupLens makes a prediction for you about how much you will like a +news article. The predictions from GroupLens are on a scale from 1 to +5, where 1 is the worst and 5 is the best. You can use the predictions +from GroupLens in one of three ways controlled by the variable +@code{gnus-grouplens-override-scoring}. + +@vindex gnus-grouplens-override-scoring +There are three ways to display predictions in grouplens. You may +choose to have the GroupLens scores contribute to, or override the +regular Gnus scoring mechanism. override is the default; however, some +people prefer to see the Gnus scores plus the grouplens scores. To get +the separate scoring behavior you need to set +@code{gnus-grouplens-override-scoring} to @code{'separate}. To have the +GroupLens predictions combined with the grouplens scores set it to +@code{'override} and to combine the scores set +@code{gnus-grouplens-override-scoring} to @code{'combine}. When you use +the combine option you will also want to set the values for +@code{grouplens-prediction-offset} and +@code{grouplens-score-scale-factor}. + +@vindex grouplens-prediction-display +In either case, GroupLens gives you a few choices for how you would like +to see your predictions displayed. The display of predictions is +controlled by the @code{grouplens-prediction-display} variable. + +The following are valid values for that variable. + +@table @code +@item prediction-spot +The higher the prediction, the further to the right an @samp{*} is +displayed. + +@item confidence-interval +A numeric confidence interval. + +@item prediction-bar +The higher the prediction, the longer the bar. + +@item confidence-bar +Numerical confidence. + +@item confidence-spot +The spot gets bigger with more confidence. + +@item prediction-num +Plain-old numeric value. + +@item confidence-plus-minus +Prediction +/- confidence. + +@end table + + +@node GroupLens Variables +@subsection GroupLens Variables + +@table @code + +@item gnus-summary-grouplens-line-format +The summary line format used in GroupLens-enhanced summary buffers. It +accepts the same specs as the normal summary line format (@pxref{Summary +Buffer Lines}). The default is @samp{%U%R%z%l%I%(%[%4L: %-23,23n%]%) +%s\n}. + +@item grouplens-bbb-host +Host running the bbbd server. @samp{grouplens.cs.umn.edu} is the +default. + +@item grouplens-bbb-port +Port of the host running the bbbd server. The default is 9000. + +@item grouplens-score-offset +Offset the prediction by this value. In other words, subtract the +prediction value by this number to arrive at the effective score. The +default is 0. + +@item grouplens-score-scale-factor +This variable allows the user to magnify the effect of GroupLens scores. +The scale factor is applied after the offset. The default is 1. + +@end table + + +@node Advanced Scoring +@section Advanced Scoring + +Scoring on Subjects and From headers is nice enough, but what if you're +really interested in what a person has to say only when she's talking +about a particular subject? Or what if you really don't want to +read what person A has to say when she's following up to person B, but +want to read what she says when she's following up to person C? + +By using advanced scoring rules you may create arbitrarily complex +scoring patterns. + +@menu +* Advanced Scoring Syntax:: A definition. +* Advanced Scoring Examples:: What they look like. +* Advanced Scoring Tips:: Getting the most out of it. +@end menu + + +@node Advanced Scoring Syntax +@subsection Advanced Scoring Syntax + +Ordinary scoring rules have a string as the first element in the rule. +Advanced scoring rules have a list as the first element. The second +element is the score to be applied if the first element evaluated to a +non-@code{nil} value. + +These lists may consist of three logical operators, one redirection +operator, and various match operators. + +Logical operators: + +@table @code +@item & +@itemx and +This logical operator will evaluate each of its arguments until it finds +one that evaluates to @code{false}, and then it'll stop. If all arguments +evaluate to @code{true} values, then this operator will return +@code{true}. + +@item | +@itemx or +This logical operator will evaluate each of its arguments until it finds +one that evaluates to @code{true}. If no arguments are @code{true}, +then this operator will return @code{false}. + +@item ! +@itemx not +@itemx ¬ +This logical operator only takes a single argument. It returns the +logical negation of the value of its argument. + +@end table + +There is an @dfn{indirection operator} that will make its arguments +apply to the ancestors of the current article being scored. For +instance, @code{1-} will make score rules apply to the parent of the +current article. @code{2-} will make score rules apply to the +grandparent of the current article. Alternatively, you can write +@code{^^}, where the number of @code{^}s (carets) says how far back into +the ancestry you want to go. + +Finally, we have the match operators. These are the ones that do the +real work. Match operators are header name strings followed by a match +and a match type. A typical match operator looks like @samp{("from" +"Lars Ingebrigtsen" s)}. The header names are the same as when using +simple scoring, and the match types are also the same. + + +@node Advanced Scoring Examples +@subsection Advanced Scoring Examples + +Please note that the following examples are score file rules. To +make a complete score file from them, surround them with another pair +of parentheses. + +Let's say you want to increase the score of articles written by Lars +when he's talking about Gnus: + +@example +@group +((& + ("from" "Lars Ingebrigtsen") + ("subject" "Gnus")) + 1000) +@end group +@end example + +Quite simple, huh? + +When he writes long articles, he sometimes has something nice to say: + +@example +((& + ("from" "Lars Ingebrigtsen") + (| + ("subject" "Gnus") + ("lines" 100 >))) + 1000) +@end example + +However, when he responds to things written by Reig Eigil Logge, you +really don't want to read what he's written: + +@example +((& + ("from" "Lars Ingebrigtsen") + (1- ("from" "Reig Eigil Logge"))) + -100000) +@end example + +Everybody that follows up Redmondo when he writes about disappearing +socks should have their scores raised, but only when they talk about +white socks. However, when Lars talks about socks, it's usually not +very interesting: + +@example +((& + (1- + (& + ("from" "redmondo@@.*no" r) + ("body" "disappearing.*socks" t))) + (! ("from" "Lars Ingebrigtsen")) + ("body" "white.*socks")) + 1000) +@end example + +Suppose you're reading a high volume group and you're only interested +in replies. The plan is to score down all articles that don't have +subject that begin with "Re:", "Fw:" or "Fwd:" and then score up all +parents of articles that have subjects that begin with reply marks. + +@example +((! ("subject" "re:\\|fwd?:" r)) + -200) +((1- ("subject" "re:\\|fwd?:" r)) + 200) +@end example + +The possibilities are endless. + +@node Advanced Scoring Tips +@subsection Advanced Scoring Tips + +The @code{&} and @code{|} logical operators do short-circuit logic. +That is, they stop processing their arguments when it's clear what the +result of the operation will be. For instance, if one of the arguments +of an @code{&} evaluates to @code{false}, there's no point in evaluating +the rest of the arguments. This means that you should put slow matches +(@samp{body}, @samp{header}) last and quick matches (@samp{from}, +@samp{subject}) first. + +The indirection arguments (@code{1-} and so on) will make their +arguments work on previous generations of the thread. If you say +something like: + +@example +... +(1- + (1- + ("from" "lars"))) +... +@end example + +Then that means ``score on the from header of the grandparent of the +current article''. An indirection is quite fast, but it's better to say: + +@example +(1- + (& + ("from" "Lars") + ("subject" "Gnus"))) +@end example + +than it is to say: + +@example +(& + (1- ("from" "Lars")) + (1- ("subject" "Gnus"))) +@end example + + +@node Score Decays +@section Score Decays +@cindex score decays +@cindex decays + +You may find that your scores have a tendency to grow without +bounds, especially if you're using adaptive scoring. If scores get too +big, they lose all meaning---they simply max out and it's difficult to +use them in any sensible way. + +@vindex gnus-decay-scores +@findex gnus-decay-score +@vindex gnus-decay-score-function +Gnus provides a mechanism for decaying scores to help with this problem. +When score files are loaded and @code{gnus-decay-scores} is +non-@code{nil}, Gnus will run the score files through the decaying +mechanism thereby lowering the scores of all non-permanent score rules. +The decay itself if performed by the @code{gnus-decay-score-function} +function, which is @code{gnus-decay-score} by default. Here's the +definition of that function: + +@lisp +(defun gnus-decay-score (score) + "Decay SCORE according to `gnus-score-decay-constant' +and `gnus-score-decay-scale'." + (let ((n (- score + (* (if (< score 0) -1 1) + (min (abs score) + (max gnus-score-decay-constant + (* (abs score) + gnus-score-decay-scale))))))) + (if (and (featurep 'xemacs) + ;; XEmacs' floor can handle only the floating point + ;; number below the half of the maximum integer. + (> (abs n) (lsh -1 -2))) + (string-to-number + (car (split-string (number-to-string n) "\\."))) + (floor n)))) +@end lisp + +@vindex gnus-score-decay-scale +@vindex gnus-score-decay-constant +@code{gnus-score-decay-constant} is 3 by default and +@code{gnus-score-decay-scale} is 0.05. This should cause the following: + +@enumerate +@item +Scores between -3 and 3 will be set to 0 when this function is called. + +@item +Scores with magnitudes between 3 and 60 will be shrunk by 3. + +@item +Scores with magnitudes greater than 60 will be shrunk by 5% of the +score. +@end enumerate + +If you don't like this decay function, write your own. It is called +with the score to be decayed as its only parameter, and it should return +the new score, which should be an integer. + +Gnus will try to decay scores once a day. If you haven't run Gnus for +four days, Gnus will decay the scores four times, for instance. + +@iftex +@iflatex +@chapter Message +@include message.texi +@chapter Emacs MIME +@include emacs-mime.texi +@chapter Sieve +@include sieve.texi +@chapter PGG +@include pgg.texi +@end iflatex +@end iftex + +@node Various +@chapter Various + +@menu +* Process/Prefix:: A convention used by many treatment commands. +* Interactive:: Making Gnus ask you many questions. +* Symbolic Prefixes:: How to supply some Gnus functions with options. +* Formatting Variables:: You can specify what buffers should look like. +* Window Layout:: Configuring the Gnus buffer windows. +* Faces and Fonts:: How to change how faces look. +* Compilation:: How to speed Gnus up. +* Mode Lines:: Displaying information in the mode lines. +* Highlighting and Menus:: Making buffers look all nice and cozy. +* Buttons:: Get tendinitis in ten easy steps! +* Daemons:: Gnus can do things behind your back. +* NoCeM:: How to avoid spam and other fatty foods. +* Undo:: Some actions can be undone. +* Predicate Specifiers:: Specifying predicates. +* Moderation:: What to do if you're a moderator. +* Fetching a Group:: Starting Gnus just to read a group. +* Image Enhancements:: Modern versions of Emacs/XEmacs can display images. +* Fuzzy Matching:: What's the big fuzz? +* Thwarting Email Spam:: Simple ways to avoid unsolicited commercial email. +* Spam Package:: A package for filtering and processing spam. +* Other modes:: Interaction with other modes. +* Various Various:: Things that are really various. +@end menu + + +@node Process/Prefix +@section Process/Prefix +@cindex process/prefix convention + +Many functions, among them functions for moving, decoding and saving +articles, use what is known as the @dfn{Process/Prefix convention}. + +This is a method for figuring out what articles the user wants the +command to be performed on. + +It goes like this: + +If the numeric prefix is N, perform the operation on the next N +articles, starting with the current one. If the numeric prefix is +negative, perform the operation on the previous N articles, starting +with the current one. + +@vindex transient-mark-mode +If @code{transient-mark-mode} in non-@code{nil} and the region is +active, all articles in the region will be worked upon. + +If there is no numeric prefix, but some articles are marked with the +process mark, perform the operation on the articles marked with +the process mark. + +If there is neither a numeric prefix nor any articles marked with the +process mark, just perform the operation on the current article. + +Quite simple, really, but it needs to be made clear so that surprises +are avoided. + +Commands that react to the process mark will push the current list of +process marked articles onto a stack and will then clear all process +marked articles. You can restore the previous configuration with the +@kbd{M P y} command (@pxref{Setting Process Marks}). + +@vindex gnus-summary-goto-unread +One thing that seems to shock & horrify lots of people is that, for +instance, @kbd{3 d} does exactly the same as @kbd{d} @kbd{d} @kbd{d}. +Since each @kbd{d} (which marks the current article as read) by default +goes to the next unread article after marking, this means that @kbd{3 d} +will mark the next three unread articles as read, no matter what the +summary buffer looks like. Set @code{gnus-summary-goto-unread} to +@code{nil} for a more straightforward action. + +Many commands do not use the process/prefix convention. All commands +that do explicitly say so in this manual. To apply the process/prefix +convention to commands that do not use it, you can use the @kbd{M-&} +command. For instance, to mark all the articles in the group as +expirable, you could say @kbd{M P b M-& E}. + + +@node Interactive +@section Interactive +@cindex interaction + +@table @code + +@item gnus-novice-user +@vindex gnus-novice-user +If this variable is non-@code{nil}, you are either a newcomer to the +World of Usenet, or you are very cautious, which is a nice thing to be, +really. You will be given questions of the type ``Are you sure you want +to do this?'' before doing anything dangerous. This is @code{t} by +default. + +@item gnus-expert-user +@vindex gnus-expert-user +If this variable is non-@code{nil}, you will seldom be asked any +questions by Gnus. It will simply assume you know what you're doing, no +matter how strange. + +@item gnus-interactive-catchup +@vindex gnus-interactive-catchup +Require confirmation before catching up a group if non-@code{nil}. It +is @code{t} by default. + +@item gnus-interactive-exit +@vindex gnus-interactive-exit +Require confirmation before exiting Gnus. This variable is @code{t} by +default. +@end table + + +@node Symbolic Prefixes +@section Symbolic Prefixes +@cindex symbolic prefixes + +Quite a lot of Emacs commands react to the (numeric) prefix. For +instance, @kbd{C-u 4 C-f} moves point four characters forward, and +@kbd{C-u 9 0 0 I s s p} adds a permanent @code{Subject} substring score +rule of 900 to the current article. + +This is all nice and well, but what if you want to give a command some +additional information? Well, what most commands do is interpret the +``raw'' prefix in some special way. @kbd{C-u 0 C-x C-s} means that one +doesn't want a backup file to be created when saving the current buffer, +for instance. But what if you want to save without making a backup +file, and you want Emacs to flash lights and play a nice tune at the +same time? You can't, and you're probably perfectly happy that way. + +@kindex M-i (Summary) +@findex gnus-symbolic-argument +I'm not, so I've added a second prefix---the @dfn{symbolic prefix}. The +prefix key is @kbd{M-i} (@code{gnus-symbolic-argument}), and the next +character typed in is the value. You can stack as many @kbd{M-i} +prefixes as you want. @kbd{M-i a C-M-u} means ``feed the @kbd{C-M-u} +command the symbolic prefix @code{a}''. @kbd{M-i a M-i b C-M-u} means +``feed the @kbd{C-M-u} command the symbolic prefixes @code{a} and +@code{b}''. You get the drift. + +Typing in symbolic prefixes to commands that don't accept them doesn't +hurt, but it doesn't do any good either. Currently not many Gnus +functions make use of the symbolic prefix. + +If you're interested in how Gnus implements this, @pxref{Extended +Interactive}. + + +@node Formatting Variables +@section Formatting Variables +@cindex formatting variables + +Throughout this manual you've probably noticed lots of variables called +things like @code{gnus-group-line-format} and +@code{gnus-summary-mode-line-format}. These control how Gnus is to +output lines in the various buffers. There's quite a lot of them. +Fortunately, they all use the same syntax, so there's not that much to +be annoyed by. + +Here's an example format spec (from the group buffer): @samp{%M%S%5y: +%(%g%)\n}. We see that it is indeed extremely ugly, and that there are +lots of percentages everywhere. + +@menu +* Formatting Basics:: A formatting variable is basically a format string. +* Mode Line Formatting:: Some rules about mode line formatting variables. +* Advanced Formatting:: Modifying output in various ways. +* User-Defined Specs:: Having Gnus call your own functions. +* Formatting Fonts:: Making the formatting look colorful and nice. +* Positioning Point:: Moving point to a position after an operation. +* Tabulation:: Tabulating your output. +* Wide Characters:: Dealing with wide characters. +@end menu + +Currently Gnus uses the following formatting variables: +@code{gnus-group-line-format}, @code{gnus-summary-line-format}, +@code{gnus-server-line-format}, @code{gnus-topic-line-format}, +@code{gnus-group-mode-line-format}, +@code{gnus-summary-mode-line-format}, +@code{gnus-article-mode-line-format}, +@code{gnus-server-mode-line-format}, and +@code{gnus-summary-pick-line-format}. + +All these format variables can also be arbitrary elisp forms. In that +case, they will be @code{eval}ed to insert the required lines. + +@kindex M-x gnus-update-format +@findex gnus-update-format +Gnus includes a command to help you while creating your own format +specs. @kbd{M-x gnus-update-format} will @code{eval} the current form, +update the spec in question and pop you to a buffer where you can +examine the resulting Lisp code to be run to generate the line. + + + +@node Formatting Basics +@subsection Formatting Basics + +Each @samp{%} element will be replaced by some string or other when the +buffer in question is generated. @samp{%5y} means ``insert the @samp{y} +spec, and pad with spaces to get a 5-character field''. + +As with normal C and Emacs Lisp formatting strings, the numerical +modifier between the @samp{%} and the formatting type character will +@dfn{pad} the output so that it is always at least that long. +@samp{%5y} will make the field always (at least) five characters wide by +padding with spaces to the left. If you say @samp{%-5y}, it will pad to +the right instead. + +You may also wish to limit the length of the field to protect against +particularly wide values. For that you can say @samp{%4,6y}, which +means that the field will never be more than 6 characters wide and never +less than 4 characters wide. + +Also Gnus supports some extended format specifications, such as +@samp{%&user-date;}. + + +@node Mode Line Formatting +@subsection Mode Line Formatting + +Mode line formatting variables (e.g., +@code{gnus-summary-mode-line-format}) follow the same rules as other, +buffer line oriented formatting variables (@pxref{Formatting Basics}) +with the following two differences: + +@enumerate + +@item +There must be no newline (@samp{\n}) at the end. + +@item +The special @samp{%%b} spec can be used to display the buffer name. +Well, it's no spec at all, really---@samp{%%} is just a way to quote +@samp{%} to allow it to pass through the formatting machinery unmangled, +so that Emacs receives @samp{%b}, which is something the Emacs mode line +display interprets to mean ``show the buffer name''. For a full list of +mode line specs Emacs understands, see the documentation of the +@code{mode-line-format} variable. + +@end enumerate + + +@node Advanced Formatting +@subsection Advanced Formatting + +It is frequently useful to post-process the fields in some way. +Padding, limiting, cutting off parts and suppressing certain values can +be achieved by using @dfn{tilde modifiers}. A typical tilde spec might +look like @samp{%~(cut 3)~(ignore "0")y}. + +These are the valid modifiers: + +@table @code +@item pad +@itemx pad-left +Pad the field to the left with spaces until it reaches the required +length. + +@item pad-right +Pad the field to the right with spaces until it reaches the required +length. + +@item max +@itemx max-left +Cut off characters from the left until it reaches the specified length. + +@item max-right +Cut off characters from the right until it reaches the specified +length. + +@item cut +@itemx cut-left +Cut off the specified number of characters from the left. + +@item cut-right +Cut off the specified number of characters from the right. + +@item ignore +Return an empty string if the field is equal to the specified value. + +@item form +Use the specified form as the field value when the @samp{@@} spec is +used. + +Here's an example: + +@lisp +"~(form (current-time-string))@@" +@end lisp + +@end table + +Let's take an example. The @samp{%o} spec in the summary mode lines +will return a date in compact ISO8601 format---@samp{19960809T230410}. +This is quite a mouthful, so we want to shave off the century number and +the time, leaving us with a six-character date. That would be +@samp{%~(cut-left 2)~(max-right 6)~(pad 6)o}. (Cutting is done before +maxing, and we need the padding to ensure that the date is never less +than 6 characters to make it look nice in columns.) + +Ignoring is done first; then cutting; then maxing; and then as the very +last operation, padding. + +If you use lots of these advanced thingies, you'll find that Gnus gets +quite slow. This can be helped enormously by running @kbd{M-x +gnus-compile} when you are satisfied with the look of your lines. +@xref{Compilation}. + + +@node User-Defined Specs +@subsection User-Defined Specs + +All the specs allow for inserting user defined specifiers---@samp{u}. +The next character in the format string should be a letter. Gnus +will call the function @code{gnus-user-format-function-}@samp{X}, where +@samp{X} is the letter following @samp{%u}. The function will be passed +a single parameter---what the parameter means depends on what buffer +it's being called from. The function should return a string, which will +be inserted into the buffer just like information from any other +specifier. This function may also be called with dummy values, so it +should protect against that. + +Also Gnus supports extended user-defined specs, such as @samp{%u&foo;}. +Gnus will call the function @code{gnus-user-format-function-}@samp{foo}. + +You can also use tilde modifiers (@pxref{Advanced Formatting} to achieve +much the same without defining new functions. Here's an example: +@samp{%~(form (count-lines (point-min) (point)))@@}. The form +given here will be evaluated to yield the current line number, and then +inserted. + + +@node Formatting Fonts +@subsection Formatting Fonts + +There are specs for highlighting, and these are shared by all the format +variables. Text inside the @samp{%(} and @samp{%)} specifiers will get +the special @code{mouse-face} property set, which means that it will be +highlighted (with @code{gnus-mouse-face}) when you put the mouse pointer +over it. + +Text inside the @samp{%@{} and @samp{%@}} specifiers will have their +normal faces set using @code{gnus-face-0}, which is @code{bold} by +default. If you say @samp{%1@{}, you'll get @code{gnus-face-1} instead, +and so on. Create as many faces as you wish. The same goes for the +@code{mouse-face} specs---you can say @samp{%3(hello%)} to have +@samp{hello} mouse-highlighted with @code{gnus-mouse-face-3}. + +Text inside the @samp{%<<} and @samp{%>>} specifiers will get the +special @code{balloon-help} property set to +@code{gnus-balloon-face-0}. If you say @samp{%1<<}, you'll get +@code{gnus-balloon-face-1} and so on. The @code{gnus-balloon-face-*} +variables should be either strings or symbols naming functions that +return a string. When the mouse passes over text with this property +set, a balloon window will appear and display the string. Please +refer to @ref{Tooltips, ,Tooltips, emacs, The Emacs Manual}, +(in GNU Emacs) or the doc string of @code{balloon-help-mode} (in +XEmacs) for more information on this. (For technical reasons, the +guillemets have been approximated as @samp{<<} and @samp{>>} in this +paragraph.) + +Here's an alternative recipe for the group buffer: + +@lisp +;; @r{Create three face types.} +(setq gnus-face-1 'bold) +(setq gnus-face-3 'italic) + +;; @r{We want the article count to be in} +;; @r{a bold and green face. So we create} +;; @r{a new face called @code{my-green-bold}.} +(copy-face 'bold 'my-green-bold) +;; @r{Set the color.} +(set-face-foreground 'my-green-bold "ForestGreen") +(setq gnus-face-2 'my-green-bold) + +;; @r{Set the new & fancy format.} +(setq gnus-group-line-format + "%M%S%3@{%5y%@}%2[:%] %(%1@{%g%@}%)\n") +@end lisp + +I'm sure you'll be able to use this scheme to create totally unreadable +and extremely vulgar displays. Have fun! + +Note that the @samp{%(} specs (and friends) do not make any sense on the +mode-line variables. + +@node Positioning Point +@subsection Positioning Point + +Gnus usually moves point to a pre-defined place on each line in most +buffers. By default, point move to the first colon character on the +line. You can customize this behavior in three different ways. + +You can move the colon character to somewhere else on the line. + +@findex gnus-goto-colon +You can redefine the function that moves the point to the colon. The +function is called @code{gnus-goto-colon}. + +But perhaps the most convenient way to deal with this, if you don't want +to have a colon in your line, is to use the @samp{%*} specifier. If you +put a @samp{%*} somewhere in your format line definition, Gnus will +place point there. + + +@node Tabulation +@subsection Tabulation + +You can usually line up your displays by padding and cutting your +strings. However, when combining various strings of different size, it +can often be more convenient to just output the strings, and then worry +about lining up the following text afterwards. + +To do that, Gnus supplies tabulator specs---@samp{%=}. There are two +different types---@dfn{hard tabulators} and @dfn{soft tabulators}. + +@samp{%50=} will insert space characters to pad the line up to column +50. If the text is already past column 50, nothing will be inserted. +This is the soft tabulator. + +@samp{%-50=} will insert space characters to pad the line up to column +50. If the text is already past column 50, the excess text past column +50 will be removed. This is the hard tabulator. + + +@node Wide Characters +@subsection Wide Characters + +Fixed width fonts in most countries have characters of the same width. +Some countries, however, use Latin characters mixed with wider +characters---most notable East Asian countries. + +The problem is that when formatting, Gnus assumes that if a string is 10 +characters wide, it'll be 10 Latin characters wide on the screen. In +these countries, that's not true. + +@vindex gnus-use-correct-string-widths +To help fix this, you can set @code{gnus-use-correct-string-widths} to +@code{t}. This makes buffer generation slower, but the results will be +prettier. The default value under XEmacs is @code{t} but @code{nil} +for Emacs. + + +@node Window Layout +@section Window Layout +@cindex window layout + +No, there's nothing here about X, so be quiet. + +@vindex gnus-use-full-window +If @code{gnus-use-full-window} non-@code{nil}, Gnus will delete all +other windows and occupy the entire Emacs screen by itself. It is +@code{t} by default. + +Setting this variable to @code{nil} kinda works, but there are +glitches. Use at your own peril. + +@vindex gnus-buffer-configuration +@code{gnus-buffer-configuration} describes how much space each Gnus +buffer should be given. Here's an excerpt of this variable: + +@lisp +((group (vertical 1.0 (group 1.0 point) + (if gnus-carpal (group-carpal 4)))) + (article (vertical 1.0 (summary 0.25 point) + (article 1.0)))) +@end lisp + +This is an alist. The @dfn{key} is a symbol that names some action or +other. For instance, when displaying the group buffer, the window +configuration function will use @code{group} as the key. A full list of +possible names is listed below. + +The @dfn{value} (i.e., the @dfn{split}) says how much space each buffer +should occupy. To take the @code{article} split as an example - + +@lisp +(article (vertical 1.0 (summary 0.25 point) + (article 1.0))) +@end lisp + +This @dfn{split} says that the summary buffer should occupy 25% of upper +half of the screen, and that it is placed over the article buffer. As +you may have noticed, 100% + 25% is actually 125% (yup, I saw y'all +reaching for that calculator there). However, the special number +@code{1.0} is used to signal that this buffer should soak up all the +rest of the space available after the rest of the buffers have taken +whatever they need. There should be only one buffer with the @code{1.0} +size spec per split. + +Point will be put in the buffer that has the optional third element +@code{point}. In a @code{frame} split, the last subsplit having a leaf +split where the tag @code{frame-focus} is a member (i.e. is the third or +fourth element in the list, depending on whether the @code{point} tag is +present) gets focus. + +Here's a more complicated example: + +@lisp +(article (vertical 1.0 (group 4) + (summary 0.25 point) + (if gnus-carpal (summary-carpal 4)) + (article 1.0))) +@end lisp + +If the size spec is an integer instead of a floating point number, +then that number will be used to say how many lines a buffer should +occupy, not a percentage. + +If the @dfn{split} looks like something that can be @code{eval}ed (to be +precise---if the @code{car} of the split is a function or a subr), this +split will be @code{eval}ed. If the result is non-@code{nil}, it will +be used as a split. This means that there will be three buffers if +@code{gnus-carpal} is @code{nil}, and four buffers if @code{gnus-carpal} +is non-@code{nil}. + +Not complicated enough for you? Well, try this on for size: + +@lisp +(article (horizontal 1.0 + (vertical 0.5 + (group 1.0) + (gnus-carpal 4)) + (vertical 1.0 + (summary 0.25 point) + (summary-carpal 4) + (article 1.0)))) +@end lisp + +Whoops. Two buffers with the mystery 100% tag. And what's that +@code{horizontal} thingie? + +If the first element in one of the split is @code{horizontal}, Gnus will +split the window horizontally, giving you two windows side-by-side. +Inside each of these strips you may carry on all you like in the normal +fashion. The number following @code{horizontal} says what percentage of +the screen is to be given to this strip. + +For each split, there @emph{must} be one element that has the 100% tag. +The splitting is never accurate, and this buffer will eat any leftover +lines from the splits. + +To be slightly more formal, here's a definition of what a valid split +may look like: + +@example +@group +split = frame | horizontal | vertical | buffer | form +frame = "(frame " size *split ")" +horizontal = "(horizontal " size *split ")" +vertical = "(vertical " size *split ")" +buffer = "(" buf-name " " size *[ "point" ] *[ "frame-focus"] ")" +size = number | frame-params +buf-name = group | article | summary ... +@end group +@end example + +The limitations are that the @code{frame} split can only appear as the +top-level split. @var{form} should be an Emacs Lisp form that should +return a valid split. We see that each split is fully recursive, and +may contain any number of @code{vertical} and @code{horizontal} splits. + +@vindex gnus-window-min-width +@vindex gnus-window-min-height +@cindex window height +@cindex window width +Finding the right sizes can be a bit complicated. No window may be less +than @code{gnus-window-min-height} (default 1) characters high, and all +windows must be at least @code{gnus-window-min-width} (default 1) +characters wide. Gnus will try to enforce this before applying the +splits. If you want to use the normal Emacs window width/height limit, +you can just set these two variables to @code{nil}. + +If you're not familiar with Emacs terminology, @code{horizontal} and +@code{vertical} splits may work the opposite way of what you'd expect. +Windows inside a @code{horizontal} split are shown side-by-side, and +windows within a @code{vertical} split are shown above each other. + +@findex gnus-configure-frame +If you want to experiment with window placement, a good tip is to call +@code{gnus-configure-frame} directly with a split. This is the function +that does all the real work when splitting buffers. Below is a pretty +nonsensical configuration with 5 windows; two for the group buffer and +three for the article buffer. (I said it was nonsensical.) If you +@code{eval} the statement below, you can get an idea of how that would +look straight away, without going through the normal Gnus channels. +Play with it until you're satisfied, and then use +@code{gnus-add-configuration} to add your new creation to the buffer +configuration list. + +@lisp +(gnus-configure-frame + '(horizontal 1.0 + (vertical 10 + (group 1.0) + (article 0.3 point)) + (vertical 1.0 + (article 1.0) + (horizontal 4 + (group 1.0) + (article 10))))) +@end lisp + +You might want to have several frames as well. No prob---just use the +@code{frame} split: + +@lisp +(gnus-configure-frame + '(frame 1.0 + (vertical 1.0 + (summary 0.25 point frame-focus) + (article 1.0)) + (vertical ((height . 5) (width . 15) + (user-position . t) + (left . -1) (top . 1)) + (picon 1.0)))) + +@end lisp + +This split will result in the familiar summary/article window +configuration in the first (or ``main'') frame, while a small additional +frame will be created where picons will be shown. As you can see, +instead of the normal @code{1.0} top-level spec, each additional split +should have a frame parameter alist as the size spec. +@xref{Frame Parameters, , Frame Parameters, elisp, The GNU Emacs Lisp +Reference Manual}. Under XEmacs, a frame property list will be +accepted, too---for instance, @code{(height 5 width 15 left -1 top 1)} +is such a plist. +The list of all possible keys for @code{gnus-buffer-configuration} can +be found in its default value. + +Note that the @code{message} key is used for both +@code{gnus-group-mail} and @code{gnus-summary-mail-other-window}. If +it is desirable to distinguish between the two, something like this +might be used: + +@lisp +(message (horizontal 1.0 + (vertical 1.0 (message 1.0 point)) + (vertical 0.24 + (if (buffer-live-p gnus-summary-buffer) + '(summary 0.5)) + (group 1.0)))) +@end lisp + +One common desire for a multiple frame split is to have a separate frame +for composing mail and news while leaving the original frame intact. To +accomplish that, something like the following can be done: + +@lisp +(message + (frame 1.0 + (if (not (buffer-live-p gnus-summary-buffer)) + (car (cdr (assoc 'group gnus-buffer-configuration))) + (car (cdr (assoc 'summary gnus-buffer-configuration)))) + (vertical ((user-position . t) (top . 1) (left . 1) + (name . "Message")) + (message 1.0 point)))) +@end lisp + +@findex gnus-add-configuration +Since the @code{gnus-buffer-configuration} variable is so long and +complicated, there's a function you can use to ease changing the config +of a single setting: @code{gnus-add-configuration}. If, for instance, +you want to change the @code{article} setting, you could say: + +@lisp +(gnus-add-configuration + '(article (vertical 1.0 + (group 4) + (summary .25 point) + (article 1.0)))) +@end lisp + +You'd typically stick these @code{gnus-add-configuration} calls in your +@file{~/.gnus.el} file or in some startup hook---they should be run after +Gnus has been loaded. + +@vindex gnus-always-force-window-configuration +If all windows mentioned in the configuration are already visible, Gnus +won't change the window configuration. If you always want to force the +``right'' window configuration, you can set +@code{gnus-always-force-window-configuration} to non-@code{nil}. + +If you're using tree displays (@pxref{Tree Display}), and the tree +window is displayed vertically next to another window, you may also want +to fiddle with @code{gnus-tree-minimize-window} to avoid having the +windows resized. + +@subsection Example Window Configurations + +@itemize @bullet +@item +Narrow left hand side occupied by group buffer. Right hand side split +between summary buffer (top one-sixth) and article buffer (bottom). + +@ifinfo +@example ++---+---------+ +| G | Summary | +| r +---------+ +| o | | +| u | Article | +| p | | ++---+---------+ +@end example +@end ifinfo + +@lisp +(gnus-add-configuration + '(article + (horizontal 1.0 + (vertical 25 (group 1.0)) + (vertical 1.0 + (summary 0.16 point) + (article 1.0))))) + +(gnus-add-configuration + '(summary + (horizontal 1.0 + (vertical 25 (group 1.0)) + (vertical 1.0 (summary 1.0 point))))) +@end lisp + +@end itemize + + +@node Faces and Fonts +@section Faces and Fonts +@cindex faces +@cindex fonts +@cindex colors + +Fiddling with fonts and faces used to be very difficult, but these days +it is very simple. You simply say @kbd{M-x customize-face}, pick out +the face you want to alter, and alter it via the standard Customize +interface. + + +@node Compilation +@section Compilation +@cindex compilation +@cindex byte-compilation + +@findex gnus-compile + +Remember all those line format specification variables? +@code{gnus-summary-line-format}, @code{gnus-group-line-format}, and so +on. Now, Gnus will of course heed whatever these variables are, but, +unfortunately, changing them will mean a quite significant slow-down. +(The default values of these variables have byte-compiled functions +associated with them, while the user-generated versions do not, of +course.) + +To help with this, you can run @kbd{M-x gnus-compile} after you've +fiddled around with the variables and feel that you're (kind of) +satisfied. This will result in the new specs being byte-compiled, and +you'll get top speed again. Gnus will save these compiled specs in the +@file{.newsrc.eld} file. (User-defined functions aren't compiled by +this function, though---you should compile them yourself by sticking +them into the @file{~/.gnus.el} file and byte-compiling that file.) + + +@node Mode Lines +@section Mode Lines +@cindex mode lines + +@vindex gnus-updated-mode-lines +@code{gnus-updated-mode-lines} says what buffers should keep their mode +lines updated. It is a list of symbols. Supported symbols include +@code{group}, @code{article}, @code{summary}, @code{server}, +@code{browse}, and @code{tree}. If the corresponding symbol is present, +Gnus will keep that mode line updated with information that may be +pertinent. If this variable is @code{nil}, screen refresh may be +quicker. + +@cindex display-time + +@vindex gnus-mode-non-string-length +By default, Gnus displays information on the current article in the mode +lines of the summary and article buffers. The information Gnus wishes +to display (e.g. the subject of the article) is often longer than the +mode lines, and therefore have to be cut off at some point. The +@code{gnus-mode-non-string-length} variable says how long the other +elements on the line is (i.e., the non-info part). If you put +additional elements on the mode line (e.g. a clock), you should modify +this variable: + +@c Hook written by Francesco Potorti` +@lisp +(add-hook 'display-time-hook + (lambda () (setq gnus-mode-non-string-length + (+ 21 + (if line-number-mode 5 0) + (if column-number-mode 4 0) + (length display-time-string))))) +@end lisp + +If this variable is @code{nil} (which is the default), the mode line +strings won't be chopped off, and they won't be padded either. Note +that the default is unlikely to be desirable, as even the percentage +complete in the buffer may be crowded off the mode line; the user should +configure this variable appropriately for her configuration. + + +@node Highlighting and Menus +@section Highlighting and Menus +@cindex visual +@cindex highlighting +@cindex menus + +@vindex gnus-visual +The @code{gnus-visual} variable controls most of the Gnus-prettifying +aspects. If @code{nil}, Gnus won't attempt to create menus or use fancy +colors or fonts. This will also inhibit loading the @file{gnus-vis.el} +file. + +This variable can be a list of visual properties that are enabled. The +following elements are valid, and are all included by default: + +@table @code +@item group-highlight +Do highlights in the group buffer. +@item summary-highlight +Do highlights in the summary buffer. +@item article-highlight +Do highlights in the article buffer. +@item highlight +Turn on highlighting in all buffers. +@item group-menu +Create menus in the group buffer. +@item summary-menu +Create menus in the summary buffers. +@item article-menu +Create menus in the article buffer. +@item browse-menu +Create menus in the browse buffer. +@item server-menu +Create menus in the server buffer. +@item score-menu +Create menus in the score buffers. +@item menu +Create menus in all buffers. +@end table + +So if you only want highlighting in the article buffer and menus in all +buffers, you could say something like: + +@lisp +(setq gnus-visual '(article-highlight menu)) +@end lisp + +If you want highlighting only and no menus whatsoever, you'd say: + +@lisp +(setq gnus-visual '(highlight)) +@end lisp + +If @code{gnus-visual} is @code{t}, highlighting and menus will be used +in all Gnus buffers. + +Other general variables that influence the look of all buffers include: + +@table @code +@item gnus-mouse-face +@vindex gnus-mouse-face +This is the face (i.e., font) used for mouse highlighting in Gnus. No +mouse highlights will be done if @code{gnus-visual} is @code{nil}. + +@end table + +There are hooks associated with the creation of all the different menus: + +@table @code + +@item gnus-article-menu-hook +@vindex gnus-article-menu-hook +Hook called after creating the article mode menu. + +@item gnus-group-menu-hook +@vindex gnus-group-menu-hook +Hook called after creating the group mode menu. + +@item gnus-summary-menu-hook +@vindex gnus-summary-menu-hook +Hook called after creating the summary mode menu. + +@item gnus-server-menu-hook +@vindex gnus-server-menu-hook +Hook called after creating the server mode menu. + +@item gnus-browse-menu-hook +@vindex gnus-browse-menu-hook +Hook called after creating the browse mode menu. + +@item gnus-score-menu-hook +@vindex gnus-score-menu-hook +Hook called after creating the score mode menu. + +@end table + + +@node Buttons +@section Buttons +@cindex buttons +@cindex mouse +@cindex click + +Those new-fangled @dfn{mouse} contraptions is very popular with the +young, hep kids who don't want to learn the proper way to do things +these days. Why, I remember way back in the summer of '89, when I was +using Emacs on a Tops 20 system. Three hundred users on one single +machine, and every user was running Simula compilers. Bah! + +Right. + +@vindex gnus-carpal +Well, you can make Gnus display bufferfuls of buttons you can click to +do anything by setting @code{gnus-carpal} to @code{t}. Pretty simple, +really. Tell the chiropractor I sent you. + + +@table @code + +@item gnus-carpal-mode-hook +@vindex gnus-carpal-mode-hook +Hook run in all carpal mode buffers. + +@item gnus-carpal-button-face +@vindex gnus-carpal-button-face +Face used on buttons. + +@item gnus-carpal-header-face +@vindex gnus-carpal-header-face +Face used on carpal buffer headers. + +@item gnus-carpal-group-buffer-buttons +@vindex gnus-carpal-group-buffer-buttons +Buttons in the group buffer. + +@item gnus-carpal-summary-buffer-buttons +@vindex gnus-carpal-summary-buffer-buttons +Buttons in the summary buffer. + +@item gnus-carpal-server-buffer-buttons +@vindex gnus-carpal-server-buffer-buttons +Buttons in the server buffer. + +@item gnus-carpal-browse-buffer-buttons +@vindex gnus-carpal-browse-buffer-buttons +Buttons in the browse buffer. +@end table + +All the @code{buttons} variables are lists. The elements in these list +are either cons cells where the @code{car} contains a text to be displayed and +the @code{cdr} contains a function symbol, or a simple string. + + +@node Daemons +@section Daemons +@cindex demons +@cindex daemons + +Gnus, being larger than any program ever written (allegedly), does lots +of strange stuff that you may wish to have done while you're not +present. For instance, you may want it to check for new mail once in a +while. Or you may want it to close down all connections to all servers +when you leave Emacs idle. And stuff like that. + +Gnus will let you do stuff like that by defining various +@dfn{handlers}. Each handler consists of three elements: A +@var{function}, a @var{time}, and an @var{idle} parameter. + +Here's an example of a handler that closes connections when Emacs has +been idle for thirty minutes: + +@lisp +(gnus-demon-close-connections nil 30) +@end lisp + +Here's a handler that scans for @acronym{PGP} headers every hour when +Emacs is idle: + +@lisp +(gnus-demon-scan-pgp 60 t) +@end lisp + +This @var{time} parameter and that @var{idle} parameter work together +in a strange, but wonderful fashion. Basically, if @var{idle} is +@code{nil}, then the function will be called every @var{time} minutes. + +If @var{idle} is @code{t}, then the function will be called after +@var{time} minutes only if Emacs is idle. So if Emacs is never idle, +the function will never be called. But once Emacs goes idle, the +function will be called every @var{time} minutes. + +If @var{idle} is a number and @var{time} is a number, the function will +be called every @var{time} minutes only when Emacs has been idle for +@var{idle} minutes. + +If @var{idle} is a number and @var{time} is @code{nil}, the function +will be called once every time Emacs has been idle for @var{idle} +minutes. + +And if @var{time} is a string, it should look like @samp{07:31}, and +the function will then be called once every day somewhere near that +time. Modified by the @var{idle} parameter, of course. + +@vindex gnus-demon-timestep +(When I say ``minute'' here, I really mean @code{gnus-demon-timestep} +seconds. This is 60 by default. If you change that variable, +all the timings in the handlers will be affected.) + +So, if you want to add a handler, you could put something like this in +your @file{~/.gnus.el} file: + +@findex gnus-demon-add-handler +@lisp +(gnus-demon-add-handler 'gnus-demon-close-connections 30 t) +@end lisp + +@findex gnus-demon-add-nocem +@findex gnus-demon-add-scanmail +@findex gnus-demon-add-rescan +@findex gnus-demon-add-scan-timestamps +@findex gnus-demon-add-disconnection +Some ready-made functions to do this have been created: +@code{gnus-demon-add-nocem}, @code{gnus-demon-add-disconnection}, +@code{gnus-demon-add-nntp-close-connection}, +@code{gnus-demon-add-scan-timestamps}, @code{gnus-demon-add-rescan}, and +@code{gnus-demon-add-scanmail}. Just put those functions in your +@file{~/.gnus.el} if you want those abilities. + +@findex gnus-demon-init +@findex gnus-demon-cancel +@vindex gnus-demon-handlers +If you add handlers to @code{gnus-demon-handlers} directly, you should +run @code{gnus-demon-init} to make the changes take hold. To cancel all +daemons, you can use the @code{gnus-demon-cancel} function. + +Note that adding daemons can be pretty naughty if you over do it. Adding +functions that scan all news and mail from all servers every two seconds +is a sure-fire way of getting booted off any respectable system. So +behave. + + +@node NoCeM +@section NoCeM +@cindex nocem +@cindex spam + +@dfn{Spamming} is posting the same article lots and lots of times. +Spamming is bad. Spamming is evil. + +Spamming is usually canceled within a day or so by various anti-spamming +agencies. These agencies usually also send out @dfn{NoCeM} messages. +NoCeM is pronounced ``no see-'em'', and means what the name +implies---these are messages that make the offending articles, like, go +away. + +What use are these NoCeM messages if the articles are canceled anyway? +Some sites do not honor cancel messages and some sites just honor cancels +from a select few people. Then you may wish to make use of the NoCeM +messages, which are distributed in the @samp{alt.nocem.misc} newsgroup. + +Gnus can read and parse the messages in this group automatically, and +this will make spam disappear. + +There are some variables to customize, of course: + +@table @code +@item gnus-use-nocem +@vindex gnus-use-nocem +Set this variable to @code{t} to set the ball rolling. It is @code{nil} +by default. + +You can also set this variable to a positive number as a group level. +In that case, Gnus scans NoCeM messages when checking new news if this +value is not exceeding a group level that you specify as the prefix +argument to some commands, e.g. @code{gnus}, +@code{gnus-group-get-new-news}, etc. Otherwise, Gnus does not scan +NoCeM messages if you specify a group level to those commands. For +example, if you use 1 or 2 on the mail groups and the levels on the news +groups remain the default, 3 is the best choice. + +@item gnus-nocem-groups +@vindex gnus-nocem-groups +Gnus will look for NoCeM messages in the groups in this list. The +default is +@lisp +("news.lists.filters" "news.admin.net-abuse.bulletins" + "alt.nocem.misc" "news.admin.net-abuse.announce") +@end lisp + +@item gnus-nocem-issuers +@vindex gnus-nocem-issuers +There are many people issuing NoCeM messages. This list says what +people you want to listen to. The default is +@lisp +("Automoose-1" "clewis@@ferret.ocunix.on.ca" + "cosmo.roadkill" "SpamHippo" "hweede@@snafu.de") +@end lisp +fine, upstanding citizens all of them. + +Known despammers that you can put in this list are listed at@* +@uref{http://www.xs4all.nl/~rosalind/nocemreg/nocemreg.html}. + +You do not have to heed NoCeM messages from all these people---just the +ones you want to listen to. You also don't have to accept all NoCeM +messages from the people you like. Each NoCeM message has a @dfn{type} +header that gives the message a (more or less, usually less) rigorous +definition. Common types are @samp{spam}, @samp{spew}, @samp{mmf}, +@samp{binary}, and @samp{troll}. To specify this, you have to use +@code{(@var{issuer} @var{conditions} @dots{})} elements in the list. +Each condition is either a string (which is a regexp that matches types +you want to use) or a list on the form @code{(not @var{string})}, where +@var{string} is a regexp that matches types you don't want to use. + +For instance, if you want all NoCeM messages from Chris Lewis except his +@samp{troll} messages, you'd say: + +@lisp +("clewis@@ferret.ocunix.on.ca" ".*" (not "troll")) +@end lisp + +On the other hand, if you just want nothing but his @samp{spam} and +@samp{spew} messages, you'd say: + +@lisp +("clewis@@ferret.ocunix.on.ca" (not ".*") "spew" "spam") +@end lisp + +The specs are applied left-to-right. + + +@item gnus-nocem-verifyer +@vindex gnus-nocem-verifyer +@findex pgg-verify +This should be a function for verifying that the NoCeM issuer is who she +says she is. The default is @code{pgg-verify}, which returns +non-@code{nil} if the verification is successful, otherwise (including +the case the NoCeM message was not signed) returns @code{nil}. If this +is too slow and you don't care for verification (which may be dangerous), +you can set this variable to @code{nil}. + +Formerly the default was @code{mc-verify}, which is a Mailcrypt +function. While you can still use it, you can change it into +@code{pgg-verify} running with GnuPG if you are willing to add the +@acronym{PGP} public keys to GnuPG's keyring. + +@item gnus-nocem-directory +@vindex gnus-nocem-directory +This is where Gnus will store its NoCeM cache files. The default is@* +@file{~/News/NoCeM/}. + +@item gnus-nocem-expiry-wait +@vindex gnus-nocem-expiry-wait +The number of days before removing old NoCeM entries from the cache. +The default is 15. If you make it shorter Gnus will be faster, but you +might then see old spam. + +@item gnus-nocem-check-from +@vindex gnus-nocem-check-from +Non-@code{nil} means check for valid issuers in message bodies. +Otherwise don't bother fetching articles unless their author matches a +valid issuer; that is much faster if you are selective about the +issuers. + +@item gnus-nocem-check-article-limit +@vindex gnus-nocem-check-article-limit +If non-@code{nil}, the maximum number of articles to check in any NoCeM +group. NoCeM groups can be huge and very slow to process. + +@end table + +Using NoCeM could potentially be a memory hog. If you have many living +(i. e., subscribed or unsubscribed groups), your Emacs process will grow +big. If this is a problem, you should kill off all (or most) of your +unsubscribed groups (@pxref{Subscription Commands}). + + +@node Undo +@section Undo +@cindex undo + +It is very useful to be able to undo actions one has done. In normal +Emacs buffers, it's easy enough---you just push the @code{undo} button. +In Gnus buffers, however, it isn't that simple. + +The things Gnus displays in its buffer is of no value whatsoever to +Gnus---it's all just data designed to look nice to the user. +Killing a group in the group buffer with @kbd{C-k} makes the line +disappear, but that's just a side-effect of the real action---the +removal of the group in question from the internal Gnus structures. +Undoing something like that can't be done by the normal Emacs +@code{undo} function. + +Gnus tries to remedy this somewhat by keeping track of what the user +does and coming up with actions that would reverse the actions the user +takes. When the user then presses the @code{undo} key, Gnus will run +the code to reverse the previous action, or the previous actions. +However, not all actions are easily reversible, so Gnus currently offers +a few key functions to be undoable. These include killing groups, +yanking groups, and changing the list of read articles of groups. +That's it, really. More functions may be added in the future, but each +added function means an increase in data to be stored, so Gnus will +never be totally undoable. + +@findex gnus-undo-mode +@vindex gnus-use-undo +@findex gnus-undo +The undoability is provided by the @code{gnus-undo-mode} minor mode. It +is used if @code{gnus-use-undo} is non-@code{nil}, which is the +default. The @kbd{C-M-_} key performs the @code{gnus-undo} +command, which should feel kinda like the normal Emacs @code{undo} +command. + + +@node Predicate Specifiers +@section Predicate Specifiers +@cindex predicate specifiers + +Some Gnus variables are @dfn{predicate specifiers}. This is a special +form that allows flexible specification of predicates without having +to type all that much. + +These specifiers are lists consisting of functions, symbols and lists. + +Here's an example: + +@lisp +(or gnus-article-unseen-p + gnus-article-unread-p) +@end lisp + +The available symbols are @code{or}, @code{and} and @code{not}. The +functions all take one parameter. + +@findex gnus-make-predicate +Internally, Gnus calls @code{gnus-make-predicate} on these specifiers +to create a function that can be called. This input parameter to this +function will be passed along to all the functions in the predicate +specifier. + + +@node Moderation +@section Moderation +@cindex moderation + +If you are a moderator, you can use the @file{gnus-mdrtn.el} package. +It is not included in the standard Gnus package. Write a mail to +@samp{larsi@@gnus.org} and state what group you moderate, and you'll +get a copy. + +The moderation package is implemented as a minor mode for summary +buffers. Put + +@lisp +(add-hook 'gnus-summary-mode-hook 'gnus-moderate) +@end lisp + +in your @file{~/.gnus.el} file. + +If you are the moderator of @samp{rec.zoofle}, this is how it's +supposed to work: + +@enumerate +@item +You split your incoming mail by matching on +@samp{Newsgroups:.*rec.zoofle}, which will put all the to-be-posted +articles in some mail group---for instance, @samp{nnml:rec.zoofle}. + +@item +You enter that group once in a while and post articles using the @kbd{e} +(edit-and-post) or @kbd{s} (just send unedited) commands. + +@item +If, while reading the @samp{rec.zoofle} newsgroup, you happen upon some +articles that weren't approved by you, you can cancel them with the +@kbd{c} command. +@end enumerate + +To use moderation mode in these two groups, say: + +@lisp +(setq gnus-moderated-list + "^nnml:rec.zoofle$\\|^rec.zoofle$") +@end lisp + + +@node Fetching a Group +@section Fetching a Group +@cindex fetching a group + +@findex gnus-fetch-group +It is sometimes convenient to be able to just say ``I want to read this +group and I don't care whether Gnus has been started or not''. This is +perhaps more useful for people who write code than for users, but the +command @code{gnus-fetch-group} provides this functionality in any case. +It takes the group name as a parameter. + + +@node Image Enhancements +@section Image Enhancements + +XEmacs, as well as Emacs 21@footnote{Emacs 21 on MS Windows doesn't +support images, Emacs 22 does.} and up, are able to display pictures and +stuff, so Gnus has taken advantage of that. + +@menu +* X-Face:: Display a funky, teensy black-and-white image. +* Face:: Display a funkier, teensier colored image. +* Smileys:: Show all those happy faces the way they were meant to be shown. +* Picons:: How to display pictures of what you're reading. +* XVarious:: Other XEmacsy Gnusey variables. +@end menu + + +@node X-Face +@subsection X-Face +@cindex x-face + +@code{X-Face} headers describe a 48x48 pixel black-and-white (1 bit +depth) image that's supposed to represent the author of the message. +It seems to be supported by an ever-growing number of mail and news +readers. + +@cindex x-face +@findex gnus-article-display-x-face +@vindex gnus-article-x-face-command +@vindex gnus-article-x-face-too-ugly +@iftex +@iflatex +\include{xface} +@end iflatex +@end iftex +@c @anchor{X-Face} + +Viewing an @code{X-Face} header either requires an Emacs that has - @samp{compface} support (which most XEmacs versions has), or that you ++@samp{compface} support (which most XEmacs versions have), or that you +have suitable conversion or display programs installed. If your Emacs +has image support the default action is to display the face before the +@code{From} header. If there's no native @code{X-Face} support, Gnus +will try to convert the @code{X-Face} header using external programs +from the @code{pbmplus} package and friends, see below. For XEmacs it's +faster if XEmacs has been compiled with @code{X-Face} support. The +default action under Emacs without image support is to fork off the +@code{display} program. + +On a GNU/Linux system, the @code{display} program is included in the +ImageMagick package. For external conversion programs look for packages +with names like @code{netpbm}, @code{libgr-progs} and @code{compface}. +On Windows, you may use the packages @code{netpbm} and @code{compface} +from @url{http://gnuwin32.sourceforge.net}. You need to add the +@code{bin} directory to your @code{PATH} environment variable. +@c In fact only the following DLLs and binaries seem to be required: +@c compface1.dll uncompface.exe libnetpbm10.dll icontopbm.exe + +The variable @code{gnus-article-x-face-command} controls which programs +are used to display the @code{X-Face} header. If this variable is a +string, this string will be executed in a sub-shell. If it is a +function, this function will be called with the face as the argument. +If @code{gnus-article-x-face-too-ugly} (which is a regexp) matches the +@code{From} header, the face will not be shown. + +(Note: @code{x-face} is used in the variable/function names, not +@code{xface}). + +@noindent +Face and variable: + +@table @code +@item gnus-x-face +@vindex gnus-x-face +Face to show X-Face. The colors from this face are used as the +foreground and background colors of the displayed X-Faces. The +default colors are black and white. +@end table + +If you use posting styles, you can use an @code{x-face-file} entry in +@code{gnus-posting-styles}, @xref{Posting Styles}. If you don't, Gnus +provides a few convenience functions and variables to allow easier +insertion of X-Face headers in outgoing messages. You also need the +above mentioned ImageMagick, netpbm or other image conversion packages +(depending the values of the variables below) for these functions. + +@findex gnus-random-x-face +@vindex gnus-convert-pbm-to-x-face-command +@vindex gnus-x-face-directory +@code{gnus-random-x-face} goes through all the @samp{pbm} files in +@code{gnus-x-face-directory} and picks one at random, and then +converts it to the X-Face format by using the +@code{gnus-convert-pbm-to-x-face-command} shell command. The +@samp{pbm} files should be 48x48 pixels big. It returns the X-Face +header data as a string. + +@findex gnus-insert-random-x-face-header +@code{gnus-insert-random-x-face-header} calls +@code{gnus-random-x-face} and inserts a @samp{X-Face} header with the +randomly generated data. + +@findex gnus-x-face-from-file +@vindex gnus-convert-image-to-x-face-command +@code{gnus-x-face-from-file} takes a GIF file as the parameter, and then +converts the file to X-Face format by using the +@code{gnus-convert-image-to-x-face-command} shell command. + +Here's how you would typically use the first function. Put something +like the following in your @file{~/.gnus.el} file: + +@lisp +(setq message-required-news-headers + (nconc message-required-news-headers + (list '(X-Face . gnus-random-x-face)))) +@end lisp + +Using the last function would be something like this: + +@lisp +(setq message-required-news-headers + (nconc message-required-news-headers + (list '(X-Face . (lambda () + (gnus-x-face-from-file + "~/My-face.gif")))))) +@end lisp + + +@node Face +@subsection Face +@cindex face + +@c #### FIXME: faces and x-faces' implementations should really be harmonized. + +@code{Face} headers are essentially a funkier version of @code{X-Face} +ones. They describe a 48x48 pixel colored image that's supposed to +represent the author of the message. + +@cindex face +@findex gnus-article-display-face +The contents of a @code{Face} header must be a base64 encoded PNG image. +See @uref{http://quimby.gnus.org/circus/face/} for the precise +specifications. + +Viewing an @code{Face} header requires an Emacs that is able to display +PNG images. +@c Maybe add this: +@c (if (featurep 'xemacs) +@c (featurep 'png) +@c (image-type-available-p 'png)) + +Gnus provides a few convenience functions and variables to allow +easier insertion of Face headers in outgoing messages. + +@findex gnus-convert-png-to-face +@code{gnus-convert-png-to-face} takes a 48x48 PNG image, no longer than +726 bytes long, and converts it to a face. + +@findex gnus-face-from-file +@vindex gnus-convert-image-to-face-command +@code{gnus-face-from-file} takes a JPEG file as the parameter, and then +converts the file to Face format by using the +@code{gnus-convert-image-to-face-command} shell command. + +Here's how you would typically use this function. Put something like the +following in your @file{~/.gnus.el} file: + +@lisp +(setq message-required-news-headers + (nconc message-required-news-headers + (list '(Face . (lambda () + (gnus-face-from-file "~/face.jpg")))))) +@end lisp + + +@node Smileys +@subsection Smileys +@cindex smileys + +@iftex +@iflatex +\gnusfig{-3cm}{0.5cm}{\epsfig{figure=ps/BigFace,height=20cm}} +\input{smiley} +@end iflatex +@end iftex + +@dfn{Smiley} is a package separate from Gnus, but since Gnus is +currently the only package that uses Smiley, it is documented here. + +In short---to use Smiley in Gnus, put the following in your +@file{~/.gnus.el} file: + +@lisp +(setq gnus-treat-display-smileys t) +@end lisp + +Smiley maps text smiley faces---@samp{:-)}, @samp{8-)}, @samp{:-(} and +the like---to pictures and displays those instead of the text smiley +faces. The conversion is controlled by a list of regexps that matches +text and maps that to file names. + +@vindex smiley-regexp-alist +The alist used is specified by the @code{smiley-regexp-alist} +variable. The first item in each element is the regexp to be matched; +the second element is the regexp match group that is to be replaced by +the picture; and the third element is the name of the file to be +displayed. + +The following variables customize where Smiley will look for these +files: + +@table @code + +@item smiley-data-directory +@vindex smiley-data-directory +Where Smiley will look for smiley faces files. + +@item gnus-smiley-file-types +@vindex gnus-smiley-file-types +List of suffixes on smiley file names to try. + +@end table + + +@node Picons +@subsection Picons + +@iftex +@iflatex +\include{picons} +@end iflatex +@end iftex + +So@dots{} You want to slow down your news reader even more! This is a +good way to do so. It's also a great way to impress people staring +over your shoulder as you read news. + +What are Picons? To quote directly from the Picons Web site: + +@iftex +@iflatex +\margindex{} +@end iflatex +@end iftex + +@quotation +@dfn{Picons} is short for ``personal icons''. They're small, +constrained images used to represent users and domains on the net, +organized into databases so that the appropriate image for a given +e-mail address can be found. Besides users and domains, there are picon +databases for Usenet newsgroups and weather forecasts. The picons are +in either monochrome @code{XBM} format or color @code{XPM} and +@code{GIF} formats. +@end quotation + +@vindex gnus-picon-databases +For instructions on obtaining and installing the picons databases, +point your Web browser at +@uref{http://www.cs.indiana.edu/picons/ftp/index.html}. + +If you are using Debian GNU/Linux, saying @samp{apt-get install +picons.*} will install the picons where Gnus can find them. + +To enable displaying picons, simply make sure that +@code{gnus-picon-databases} points to the directory containing the +Picons databases. + +The following variables offer control over where things are located. + +@table @code + +@item gnus-picon-databases +@vindex gnus-picon-databases +The location of the picons database. This is a list of directories +containing the @file{news}, @file{domains}, @file{users} (and so on) +subdirectories. Defaults to @code{("/usr/lib/picon" +"/usr/local/faces")}. + +@item gnus-picon-news-directories +@vindex gnus-picon-news-directories +List of subdirectories to search in @code{gnus-picon-databases} for +newsgroups faces. @code{("news")} is the default. + +@item gnus-picon-user-directories +@vindex gnus-picon-user-directories +List of subdirectories to search in @code{gnus-picon-databases} for user +faces. @code{("users" "usenix" "local" "misc")} is the default. + +@item gnus-picon-domain-directories +@vindex gnus-picon-domain-directories +List of subdirectories to search in @code{gnus-picon-databases} for +domain name faces. Defaults to @code{("domains")}. Some people may +want to add @samp{"unknown"} to this list. + +@item gnus-picon-file-types +@vindex gnus-picon-file-types +Ordered list of suffixes on picon file names to try. Defaults to +@code{("xpm" "gif" "xbm")} minus those not built-in your Emacs. + +@end table + + +@node XVarious +@subsection Various XEmacs Variables + +@table @code +@item gnus-xmas-glyph-directory +@vindex gnus-xmas-glyph-directory +This is where Gnus will look for pictures. Gnus will normally +auto-detect this directory, but you may set it manually if you have an +unusual directory structure. + +@item gnus-xmas-modeline-glyph +@vindex gnus-xmas-modeline-glyph +A glyph displayed in all Gnus mode lines. It is a tiny gnu head by +default. + +@end table + +@subsubsection Toolbar + +@table @code + +@item gnus-use-toolbar +@vindex gnus-use-toolbar +This variable specifies the position to display the toolbar. If +@code{nil}, don't display toolbars. If it is non-@code{nil}, it should +be one of the symbols @code{default}, @code{top}, @code{bottom}, +@code{right}, and @code{left}. @code{default} means to use the default +toolbar, the rest mean to display the toolbar on the place which those +names show. The default is @code{default}. + +@item gnus-toolbar-thickness +@vindex gnus-toolbar-thickness +Cons of the height and the width specifying the thickness of a toolbar. +The height is used for the toolbar displayed on the top or the bottom, +the width is used for the toolbar displayed on the right or the left. +The default is that of the default toolbar. + +@item gnus-group-toolbar +@vindex gnus-group-toolbar +The toolbar in the group buffer. + +@item gnus-summary-toolbar +@vindex gnus-summary-toolbar +The toolbar in the summary buffer. + +@item gnus-summary-mail-toolbar +@vindex gnus-summary-mail-toolbar +The toolbar in the summary buffer of mail groups. + +@end table + +@iftex +@iflatex +\margindex{} +@end iflatex +@end iftex + + +@node Fuzzy Matching +@section Fuzzy Matching +@cindex fuzzy matching + +Gnus provides @dfn{fuzzy matching} of @code{Subject} lines when doing +things like scoring, thread gathering and thread comparison. + +As opposed to regular expression matching, fuzzy matching is very fuzzy. +It's so fuzzy that there's not even a definition of what @dfn{fuzziness} +means, and the implementation has changed over time. + +Basically, it tries to remove all noise from lines before comparing. +@samp{Re: }, parenthetical remarks, white space, and so on, are filtered +out of the strings before comparing the results. This often leads to +adequate results---even when faced with strings generated by text +manglers masquerading as newsreaders. + + +@node Thwarting Email Spam +@section Thwarting Email Spam +@cindex email spam +@cindex spam +@cindex UCE +@cindex unsolicited commercial email + +In these last days of the Usenet, commercial vultures are hanging about +and grepping through news like crazy to find email addresses they can +foist off their scams and products to. As a reaction to this, many +people have started putting nonsense addresses into their @code{From} +lines. I think this is counterproductive---it makes it difficult for +people to send you legitimate mail in response to things you write, as +well as making it difficult to see who wrote what. This rewriting may +perhaps be a bigger menace than the unsolicited commercial email itself +in the end. + +The biggest problem I have with email spam is that it comes in under +false pretenses. I press @kbd{g} and Gnus merrily informs me that I +have 10 new emails. I say ``Golly gee! Happy is me!'' and select the +mail group, only to find two pyramid schemes, seven advertisements +(``New! Miracle tonic for growing full, lustrous hair on your toes!'') +and one mail asking me to repent and find some god. + +This is annoying. Here's what you can do about it. + +@menu +* The problem of spam:: Some background, and some solutions +* Anti-Spam Basics:: Simple steps to reduce the amount of spam. +* SpamAssassin:: How to use external anti-spam tools. +* Hashcash:: Reduce spam by burning CPU time. +@end menu + +@node The problem of spam +@subsection The problem of spam +@cindex email spam +@cindex spam filtering approaches +@cindex filtering approaches, spam +@cindex UCE +@cindex unsolicited commercial email + +First, some background on spam. + +If you have access to e-mail, you are familiar with spam (technically +termed @acronym{UCE}, Unsolicited Commercial E-mail). Simply put, it +exists because e-mail delivery is very cheap compared to paper mail, +so only a very small percentage of people need to respond to an UCE to +make it worthwhile to the advertiser. Ironically, one of the most +common spams is the one offering a database of e-mail addresses for +further spamming. Senders of spam are usually called @emph{spammers}, +but terms like @emph{vermin}, @emph{scum}, @emph{sociopaths}, and +@emph{morons} are in common use as well. + +Spam comes from a wide variety of sources. It is simply impossible to +dispose of all spam without discarding useful messages. A good +example is the TMDA system, which requires senders +unknown to you to confirm themselves as legitimate senders before +their e-mail can reach you. Without getting into the technical side +of TMDA, a downside is clearly that e-mail from legitimate sources may +be discarded if those sources can't or won't confirm themselves +through the TMDA system. Another problem with TMDA is that it +requires its users to have a basic understanding of e-mail delivery +and processing. + +The simplest approach to filtering spam is filtering, at the mail +server or when you sort through incoming mail. If you get 200 spam +messages per day from @samp{random-address@@vmadmin.com}, you block +@samp{vmadmin.com}. If you get 200 messages about @samp{VIAGRA}, you +discard all messages with @samp{VIAGRA} in the message. If you get +lots of spam from Bulgaria, for example, you try to filter all mail +from Bulgarian IPs. + +This, unfortunately, is a great way to discard legitimate e-mail. The +risks of blocking a whole country (Bulgaria, Norway, Nigeria, China, +etc.) or even a continent (Asia, Africa, Europe, etc.) from contacting +you should be obvious, so don't do it if you have the choice. + +In another instance, the very informative and useful RISKS digest has +been blocked by overzealous mail filters because it @strong{contained} +words that were common in spam messages. Nevertheless, in isolated +cases, with great care, direct filtering of mail can be useful. + +Another approach to filtering e-mail is the distributed spam +processing, for instance DCC implements such a system. In essence, +@var{N} systems around the world agree that a machine @var{X} in +Ghana, Estonia, or California is sending out spam e-mail, and these +@var{N} systems enter @var{X} or the spam e-mail from @var{X} into a +database. The criteria for spam detection vary---it may be the number +of messages sent, the content of the messages, and so on. When a user +of the distributed processing system wants to find out if a message is +spam, he consults one of those @var{N} systems. + +Distributed spam processing works very well against spammers that send +a large number of messages at once, but it requires the user to set up +fairly complicated checks. There are commercial and free distributed +spam processing systems. Distributed spam processing has its risks as +well. For instance legitimate e-mail senders have been accused of +sending spam, and their web sites and mailing lists have been shut +down for some time because of the incident. + +The statistical approach to spam filtering is also popular. It is +based on a statistical analysis of previous spam messages. Usually +the analysis is a simple word frequency count, with perhaps pairs of +words or 3-word combinations thrown into the mix. Statistical +analysis of spam works very well in most of the cases, but it can +classify legitimate e-mail as spam in some cases. It takes time to +run the analysis, the full message must be analyzed, and the user has +to store the database of spam analysis. Statistical analysis on the +server is gaining popularity. This has the advantage of letting the +user Just Read Mail, but has the disadvantage that it's harder to tell +the server that it has misclassified mail. + +Fighting spam is not easy, no matter what anyone says. There is no +magic switch that will distinguish Viagra ads from Mom's e-mails. +Even people are having a hard time telling spam apart from non-spam, +because spammers are actively looking to fool us into thinking they +are Mom, essentially. Spamming is irritating, irresponsible, and +idiotic behavior from a bunch of people who think the world owes them +a favor. We hope the following sections will help you in fighting the +spam plague. + +@node Anti-Spam Basics +@subsection Anti-Spam Basics +@cindex email spam +@cindex spam +@cindex UCE +@cindex unsolicited commercial email + +One way of dealing with spam is having Gnus split out all spam into a +@samp{spam} mail group (@pxref{Splitting Mail}). + +First, pick one (1) valid mail address that you can be reached at, and +put it in your @code{From} header of all your news articles. (I've +chosen @samp{larsi@@trym.ifi.uio.no}, but for many addresses on the form +@samp{larsi+usenet@@ifi.uio.no} will be a better choice. Ask your +sysadmin whether your sendmail installation accepts keywords in the local +part of the mail address.) + +@lisp +(setq message-default-news-headers + "From: Lars Magne Ingebrigtsen \n") +@end lisp + +Then put the following split rule in @code{nnmail-split-fancy} +(@pxref{Fancy Mail Splitting}): + +@lisp +(... + (to "larsi@@trym.ifi.uio.no" + (| ("subject" "re:.*" "misc") + ("references" ".*@@.*" "misc") + "spam")) + ...) +@end lisp + +This says that all mail to this address is suspect, but if it has a +@code{Subject} that starts with a @samp{Re:} or has a @code{References} +header, it's probably ok. All the rest goes to the @samp{spam} group. +(This idea probably comes from Tim Pierce.) + +In addition, many mail spammers talk directly to your @acronym{SMTP} server +and do not include your email address explicitly in the @code{To} +header. Why they do this is unknown---perhaps it's to thwart this +thwarting scheme? In any case, this is trivial to deal with---you just +put anything not addressed to you in the @samp{spam} group by ending +your fancy split rule in this way: + +@lisp +( + ... + (to "larsi" "misc") + "spam") +@end lisp + +In my experience, this will sort virtually everything into the right +group. You still have to check the @samp{spam} group from time to time to +check for legitimate mail, though. If you feel like being a good net +citizen, you can even send off complaints to the proper authorities on +each unsolicited commercial email---at your leisure. + +This works for me. It allows people an easy way to contact me (they can +just press @kbd{r} in the usual way), and I'm not bothered at all with +spam. It's a win-win situation. Forging @code{From} headers to point +to non-existent domains is yucky, in my opinion. + +Be careful with this approach. Spammers are wise to it. + + +@node SpamAssassin +@subsection SpamAssassin, Vipul's Razor, DCC, etc +@cindex SpamAssassin +@cindex Vipul's Razor +@cindex DCC + +The days where the hints in the previous section were sufficient in +avoiding spam are coming to an end. There are many tools out there +that claim to reduce the amount of spam you get. This section could +easily become outdated fast, as new products replace old, but +fortunately most of these tools seem to have similar interfaces. Even +though this section will use SpamAssassin as an example, it should be +easy to adapt it to most other tools. + +Note that this section does not involve the @code{spam.el} package, +which is discussed in the next section. If you don't care for all +the features of @code{spam.el}, you can make do with these simple +recipes. + +If the tool you are using is not installed on the mail server, you +need to invoke it yourself. Ideas on how to use the +@code{:postscript} mail source parameter (@pxref{Mail Source +Specifiers}) follow. + +@lisp +(setq mail-sources + '((file :prescript "formail -bs spamassassin < /var/mail/%u") + (pop :user "jrl" + :server "pophost" + :postscript + "mv %t /tmp/foo; formail -bs spamc < /tmp/foo > %t"))) +@end lisp + +Once you manage to process your incoming spool somehow, thus making +the mail contain e.g.@: a header indicating it is spam, you are ready to +filter it out. Using normal split methods (@pxref{Splitting Mail}): + +@lisp +(setq nnmail-split-methods '(("spam" "^X-Spam-Flag: YES") + ...)) +@end lisp + +Or using fancy split methods (@pxref{Fancy Mail Splitting}): + +@lisp +(setq nnmail-split-methods 'nnmail-split-fancy + nnmail-split-fancy '(| ("X-Spam-Flag" "YES" "spam") + ...)) +@end lisp + +Some people might not like the idea of piping the mail through various +programs using a @code{:prescript} (if some program is buggy, you +might lose all mail). If you are one of them, another solution is to +call the external tools during splitting. Example fancy split method: + +@lisp +(setq nnmail-split-fancy '(| (: kevin-spamassassin) + ...)) +(defun kevin-spamassassin () + (save-excursion + (save-restriction + (widen) + (if (eq 1 (call-process-region (point-min) (point-max) + "spamc" nil nil nil "-c")) + "spam")))) +@end lisp + +Note that with the nnimap backend, message bodies will not be +downloaded by default. You need to set +@code{nnimap-split-download-body} to @code{t} to do that +(@pxref{Splitting in IMAP}). + +That is about it. As some spam is likely to get through anyway, you +might want to have a nifty function to call when you happen to read +spam. And here is the nifty function: + +@lisp + (defun my-gnus-raze-spam () + "Submit SPAM to Vipul's Razor, then mark it as expirable." + (interactive) + (gnus-summary-show-raw-article) + (gnus-summary-save-in-pipe "razor-report -f -d") + (gnus-summary-mark-as-expirable 1)) +@end lisp + +@node Hashcash +@subsection Hashcash +@cindex hashcash + +A novel technique to fight spam is to require senders to do something +costly for each message they send. This has the obvious drawback that +you cannot rely on everyone in the world using this technique, +since it is not part of the Internet standards, but it may be useful +in smaller communities. + +While the tools in the previous section work well in practice, they +work only because the tools are constantly maintained and updated as +new form of spam appears. This means that a small percentage of spam +will always get through. It also means that somewhere, someone needs +to read lots of spam to update these tools. Hashcash avoids that, but +instead prefers that everyone you contact through e-mail supports the +scheme. You can view the two approaches as pragmatic vs dogmatic. +The approaches have their own advantages and disadvantages, but as +often in the real world, a combination of them is stronger than either +one of them separately. + +@cindex X-Hashcash +The ``something costly'' is to burn CPU time, more specifically to +compute a hash collision up to a certain number of bits. The +resulting hashcash cookie is inserted in a @samp{X-Hashcash:} +header. For more details, and for the external application +@code{hashcash} you need to install to use this feature, see +@uref{http://www.cypherspace.org/~adam/hashcash/}. Even more +information can be found at @uref{http://www.camram.org/}. + +If you wish to call hashcash for each message you send, say something +like: + +@lisp +(require 'hashcash) +(add-hook 'message-send-hook 'mail-add-payment) +@end lisp + +The @file{hashcash.el} library can be found in the Gnus development +contrib directory or at +@uref{http://users.actrix.gen.nz/mycroft/hashcash.el}. + +You will need to set up some additional variables as well: + +@table @code + +@item hashcash-default-payment +@vindex hashcash-default-payment +This variable indicates the default number of bits the hash collision +should consist of. By default this is 0, meaning nothing will be +done. Suggested useful values include 17 to 29. + +@item hashcash-payment-alist +@vindex hashcash-payment-alist +Some receivers may require you to spend burn more CPU time than the +default. This variable contains a list of @samp{(@var{addr} +@var{amount})} cells, where @var{addr} is the receiver (email address +or newsgroup) and @var{amount} is the number of bits in the collision +that is needed. It can also contain @samp{(@var{addr} @var{string} +@var{amount})} cells, where the @var{string} is the string to use +(normally the email address or newsgroup name is used). + +@item hashcash +@vindex hashcash +Where the @code{hashcash} binary is installed. + +@end table + +Currently there is no built in functionality in Gnus to verify +hashcash cookies, it is expected that this is performed by your hand +customized mail filtering scripts. Improvements in this area would be +a useful contribution, however. + +@node Spam Package +@section Spam Package +@cindex spam filtering +@cindex spam + +The Spam package provides Gnus with a centralized mechanism for +detecting and filtering spam. It filters new mail, and processes +messages according to whether they are spam or ham. (@dfn{Ham} is the +name used throughout this manual to indicate non-spam messages.) + +@menu +* Spam Package Introduction:: +* Filtering Incoming Mail:: +* Detecting Spam in Groups:: +* Spam and Ham Processors:: +* Spam Package Configuration Examples:: +* Spam Back Ends:: +* Extending the Spam package:: +* Spam Statistics Package:: +@end menu + +@node Spam Package Introduction +@subsection Spam Package Introduction +@cindex spam filtering +@cindex spam filtering sequence of events +@cindex spam + +You must read this section to understand how the Spam package works. +Do not skip, speed-read, or glance through this section. + +@cindex spam-initialize +@vindex spam-use-stat +To use the Spam package, you @strong{must} first run the function +@code{spam-initialize}: + +@example +(spam-initialize) +@end example + +This autoloads @code{spam.el} and installs the various hooks necessary +to let the Spam package do its job. In order to make use of the Spam +package, you have to set up certain group parameters and variables, +which we will describe below. All of the variables controlling the +Spam package can be found in the @samp{spam} customization group. + +There are two ``contact points'' between the Spam package and the rest +of Gnus: checking new mail for spam, and leaving a group. + +Checking new mail for spam is done in one of two ways: while splitting +incoming mail, or when you enter a group. + +The first way, checking for spam while splitting incoming mail, is +suited to mail back ends such as @code{nnml} or @code{nnimap}, where +new mail appears in a single spool file. The Spam package processes +incoming mail, and sends mail considered to be spam to a designated +``spam'' group. @xref{Filtering Incoming Mail}. + +The second way is suited to back ends such as @code{nntp}, which have +no incoming mail spool, or back ends where the server is in charge of +splitting incoming mail. In this case, when you enter a Gnus group, +the unseen or unread messages in that group are checked for spam. +Detected spam messages are marked as spam. @xref{Detecting Spam in +Groups}. + +@cindex spam back ends +In either case, you have to tell the Spam package what method to use +to detect spam messages. There are several methods, or @dfn{spam back +ends} (not to be confused with Gnus back ends!) to choose from: spam +``blacklists'' and ``whitelists'', dictionary-based filters, and so +forth. @xref{Spam Back Ends}. + +In the Gnus summary buffer, messages that have been identified as spam +always appear with a @samp{$} symbol. + +The Spam package divides Gnus groups into three categories: ham +groups, spam groups, and unclassified groups. You should mark each of +the groups you subscribe to as either a ham group or a spam group, +using the @code{spam-contents} group parameter (@pxref{Group +Parameters}). Spam groups have a special property: when you enter a +spam group, all unseen articles are marked as spam. Thus, mail split +into a spam group is automatically marked as spam. + +Identifying spam messages is only half of the Spam package's job. The +second half comes into play whenever you exit a group buffer. At this +point, the Spam package does several things: + +First, it calls @dfn{spam and ham processors} to process the articles +according to whether they are spam or ham. There is a pair of spam +and ham processors associated with each spam back end, and what the +processors do depends on the back end. At present, the main role of +spam and ham processors is for dictionary-based spam filters: they add +the contents of the messages in the group to the filter's dictionary, +to improve its ability to detect future spam. The @code{spam-process} +group parameter specifies what spam processors to use. @xref{Spam and +Ham Processors}. + +If the spam filter failed to mark a spam message, you can mark it +yourself, so that the message is processed as spam when you exit the +group: + +@table @kbd +@item M-d +@itemx M s x +@itemx S x +@kindex M-d +@kindex S x +@kindex M s x +@findex gnus-summary-mark-as-spam +@findex gnus-summary-mark-as-spam +Mark current article as spam, showing it with the @samp{$} mark +(@code{gnus-summary-mark-as-spam}). +@end table + +@noindent +Similarly, you can unmark an article if it has been erroneously marked +as spam. @xref{Setting Marks}. + +Normally, a ham message found in a non-ham group is not processed as +ham---the rationale is that it should be moved into a ham group for +further processing (see below). However, you can force these articles +to be processed as ham by setting +@code{spam-process-ham-in-spam-groups} and +@code{spam-process-ham-in-nonham-groups}. + +@vindex gnus-ham-process-destinations +@vindex gnus-spam-process-destinations +The second thing that the Spam package does when you exit a group is +to move ham articles out of spam groups, and spam articles out of ham +groups. Ham in a spam group is moved to the group specified by the +variable @code{gnus-ham-process-destinations}, or the group parameter +@code{ham-process-destination}. Spam in a ham group is moved to the +group specified by the variable @code{gnus-spam-process-destinations}, +or the group parameter @code{spam-process-destination}. If these +variables are not set, the articles are left in their current group. +If an article cannot be moved (e.g., with a read-only backend such +as @acronym{NNTP}), it is copied. + +If an article is moved to another group, it is processed again when +you visit the new group. Normally, this is not a problem, but if you +want each article to be processed only once, load the +@code{gnus-registry.el} package and set the variable +@code{spam-log-to-registry} to @code{t}. @xref{Spam Package +Configuration Examples}. + +Normally, spam groups ignore @code{gnus-spam-process-destinations}. +However, if you set @code{spam-move-spam-nonspam-groups-only} to +@code{nil}, spam will also be moved out of spam groups, depending on +the @code{spam-process-destination} parameter. + +The final thing the Spam package does is to mark spam articles as +expired, which is usually the right thing to do. + +If all this seems confusing, don't worry. Soon it will be as natural +as typing Lisp one-liners on a neural interface@dots{} err, sorry, that's +50 years in the future yet. Just trust us, it's not so bad. + +@node Filtering Incoming Mail +@subsection Filtering Incoming Mail +@cindex spam filtering +@cindex spam filtering incoming mail +@cindex spam + +To use the Spam package to filter incoming mail, you must first set up +fancy mail splitting. @xref{Fancy Mail Splitting}. The Spam package +defines a special splitting function that you can add to your fancy +split variable (either @code{nnmail-split-fancy} or +@code{nnimap-split-fancy}, depending on your mail back end): + +@example +(: spam-split) +@end example + +@vindex spam-split-group +@noindent +The @code{spam-split} function scans incoming mail according to your +chosen spam back end(s), and sends messages identified as spam to a +spam group. By default, the spam group is a group named @samp{spam}, +but you can change this by customizing @code{spam-split-group}. Make +sure the contents of @code{spam-split-group} are an unqualified group +name. For instance, in an @code{nnimap} server @samp{your-server}, +the value @samp{spam} means @samp{nnimap+your-server:spam}. The value +@samp{nnimap+server:spam} is therefore wrong---it gives the group +@samp{nnimap+your-server:nnimap+server:spam}. + +@code{spam-split} does not modify the contents of messages in any way. + +@vindex nnimap-split-download-body +Note for IMAP users: if you use the @code{spam-check-bogofilter}, +@code{spam-check-ifile}, and @code{spam-check-stat} spam back ends, +you should also set set the variable @code{nnimap-split-download-body} +to @code{t}. These spam back ends are most useful when they can +``scan'' the full message body. By default, the nnimap back end only +retrieves the message headers; @code{nnimap-split-download-body} tells +it to retrieve the message bodies as well. We don't set this by +default because it will slow @acronym{IMAP} down, and that is not an +appropriate decision to make on behalf of the user. @xref{Splitting +in IMAP}. + +You have to specify one or more spam back ends for @code{spam-split} +to use, by setting the @code{spam-use-*} variables. @xref{Spam Back +Ends}. Normally, @code{spam-split} simply uses all the spam back ends +you enabled in this way. However, you can tell @code{spam-split} to +use only some of them. Why this is useful? Suppose you are using the +@code{spam-use-regex-headers} and @code{spam-use-blackholes} spam back +ends, and the following split rule: + +@example + nnimap-split-fancy '(| + (any "ding" "ding") + (: spam-split) + ;; @r{default mailbox} + "mail") +@end example + +@noindent +The problem is that you want all ding messages to make it to the ding +folder. But that will let obvious spam (for example, spam detected by +SpamAssassin, and @code{spam-use-regex-headers}) through, when it's +sent to the ding list. On the other hand, some messages to the ding +list are from a mail server in the blackhole list, so the invocation +of @code{spam-split} can't be before the ding rule. + +The solution is to let SpamAssassin headers supersede ding rules, and +perform the other @code{spam-split} rules (including a second +invocation of the regex-headers check) after the ding rule. This is +done by passing a parameter to @code{spam-split}: + +@example +nnimap-split-fancy + '(| + ;; @r{spam detected by @code{spam-use-regex-headers} goes to @samp{regex-spam}} + (: spam-split "regex-spam" 'spam-use-regex-headers) + (any "ding" "ding") + ;; @r{all other spam detected by spam-split goes to @code{spam-split-group}} + (: spam-split) + ;; @r{default mailbox} + "mail") +@end example + +@noindent +This lets you invoke specific @code{spam-split} checks depending on +your particular needs, and target the results of those checks to a +particular spam group. You don't have to throw all mail into all the +spam tests. Another reason why this is nice is that messages to +mailing lists you have rules for don't have to have resource-intensive +blackhole checks performed on them. You could also specify different +spam checks for your nnmail split vs. your nnimap split. Go crazy. + +You should set the @code{spam-use-*} variables for whatever spam back +ends you intend to use. The reason is that when loading +@file{spam.el}, some conditional loading is done depending on what +@code{spam-use-xyz} variables you have set. @xref{Spam Back Ends}. + +@c @emph{TODO: spam.el needs to provide a uniform way of training all the +@c statistical databases. Some have that functionality built-in, others +@c don't.} + +@node Detecting Spam in Groups +@subsection Detecting Spam in Groups + +To detect spam when visiting a group, set the group's +@code{spam-autodetect} and @code{spam-autodetect-methods} group +parameters. These are accessible with @kbd{G c} or @kbd{G p}, as +usual (@pxref{Group Parameters}). + +You should set the @code{spam-use-*} variables for whatever spam back +ends you intend to use. The reason is that when loading +@file{spam.el}, some conditional loading is done depending on what +@code{spam-use-xyz} variables you have set. + +By default, only unseen articles are processed for spam. You can +force Gnus to recheck all messages in the group by setting the +variable @code{spam-autodetect-recheck-messages} to @code{t}. + +If you use the @code{spam-autodetect} method of checking for spam, you +can specify different spam detection methods for different groups. +For instance, the @samp{ding} group may have @code{spam-use-BBDB} as +the autodetection method, while the @samp{suspect} group may have the +@code{spam-use-blacklist} and @code{spam-use-bogofilter} methods +enabled. Unlike with @code{spam-split}, you don't have any control +over the @emph{sequence} of checks, but this is probably unimportant. + +@node Spam and Ham Processors +@subsection Spam and Ham Processors +@cindex spam filtering +@cindex spam filtering variables +@cindex spam variables +@cindex spam + +@vindex gnus-spam-process-newsgroups +Spam and ham processors specify special actions to take when you exit +a group buffer. Spam processors act on spam messages, and ham +processors on ham messages. At present, the main role of these +processors is to update the dictionaries of dictionary-based spam back +ends such as Bogofilter (@pxref{Bogofilter}) and the Spam Statistics +package (@pxref{Spam Statistics Filtering}). + +The spam and ham processors that apply to each group are determined by +the group's@code{spam-process} group parameter. If this group +parameter is not defined, they are determined by the variable +@code{gnus-spam-process-newsgroups}. + +@vindex gnus-spam-newsgroup-contents +Gnus learns from the spam you get. You have to collect your spam in +one or more spam groups, and set or customize the variable +@code{spam-junk-mailgroups} as appropriate. You can also declare +groups to contain spam by setting their group parameter +@code{spam-contents} to @code{gnus-group-spam-classification-spam}, or +by customizing the corresponding variable +@code{gnus-spam-newsgroup-contents}. The @code{spam-contents} group +parameter and the @code{gnus-spam-newsgroup-contents} variable can +also be used to declare groups as @emph{ham} groups if you set their +classification to @code{gnus-group-spam-classification-ham}. If +groups are not classified by means of @code{spam-junk-mailgroups}, +@code{spam-contents}, or @code{gnus-spam-newsgroup-contents}, they are +considered @emph{unclassified}. All groups are unclassified by +default. + +@vindex gnus-spam-mark +@cindex $ +In spam groups, all messages are considered to be spam by default: +they get the @samp{$} mark (@code{gnus-spam-mark}) when you enter the +group. If you have seen a message, had it marked as spam, then +unmarked it, it won't be marked as spam when you enter the group +thereafter. You can disable that behavior, so all unread messages +will get the @samp{$} mark, if you set the +@code{spam-mark-only-unseen-as-spam} parameter to @code{nil}. You +should remove the @samp{$} mark when you are in the group summary +buffer for every message that is not spam after all. To remove the +@samp{$} mark, you can use @kbd{M-u} to ``unread'' the article, or +@kbd{d} for declaring it read the non-spam way. When you leave a +group, all spam-marked (@samp{$}) articles are sent to a spam +processor which will study them as spam samples. + +Messages may also be deleted in various other ways, and unless +@code{ham-marks} group parameter gets overridden below, marks @samp{R} +and @samp{r} for default read or explicit delete, marks @samp{X} and +@samp{K} for automatic or explicit kills, as well as mark @samp{Y} for +low scores, are all considered to be associated with articles which +are not spam. This assumption might be false, in particular if you +use kill files or score files as means for detecting genuine spam, you +should then adjust the @code{ham-marks} group parameter. + +@defvar ham-marks +You can customize this group or topic parameter to be the list of +marks you want to consider ham. By default, the list contains the +deleted, read, killed, kill-filed, and low-score marks (the idea is +that these articles have been read, but are not spam). It can be +useful to also include the tick mark in the ham marks. It is not +recommended to make the unread mark a ham mark, because it normally +indicates a lack of classification. But you can do it, and we'll be +happy for you. +@end defvar + +@defvar spam-marks +You can customize this group or topic parameter to be the list of +marks you want to consider spam. By default, the list contains only +the spam mark. It is not recommended to change that, but you can if +you really want to. +@end defvar + +When you leave @emph{any} group, regardless of its +@code{spam-contents} classification, all spam-marked articles are sent +to a spam processor, which will study these as spam samples. If you +explicit kill a lot, you might sometimes end up with articles marked +@samp{K} which you never saw, and which might accidentally contain +spam. Best is to make sure that real spam is marked with @samp{$}, +and nothing else. + +@vindex gnus-ham-process-destinations +When you leave a @emph{spam} group, all spam-marked articles are +marked as expired after processing with the spam processor. This is +not done for @emph{unclassified} or @emph{ham} groups. Also, any +@strong{ham} articles in a spam group will be moved to a location +determined by either the @code{ham-process-destination} group +parameter or a match in the @code{gnus-ham-process-destinations} +variable, which is a list of regular expressions matched with group +names (it's easiest to customize this variable with @kbd{M-x +customize-variable @key{RET} gnus-ham-process-destinations}). Each +group name list is a standard Lisp list, if you prefer to customize +the variable manually. If the @code{ham-process-destination} +parameter is not set, ham articles are left in place. If the +@code{spam-mark-ham-unread-before-move-from-spam-group} parameter is +set, the ham articles are marked as unread before being moved. + +If ham can not be moved---because of a read-only backend such as +@acronym{NNTP}, for example, it will be copied. + +Note that you can use multiples destinations per group or regular +expression! This enables you to send your ham to a regular mail +group and to a @emph{ham training} group. + +When you leave a @emph{ham} group, all ham-marked articles are sent to +a ham processor, which will study these as non-spam samples. + +@vindex spam-process-ham-in-spam-groups +By default the variable @code{spam-process-ham-in-spam-groups} is +@code{nil}. Set it to @code{t} if you want ham found in spam groups +to be processed. Normally this is not done, you are expected instead +to send your ham to a ham group and process it there. + +@vindex spam-process-ham-in-nonham-groups +By default the variable @code{spam-process-ham-in-nonham-groups} is +@code{nil}. Set it to @code{t} if you want ham found in non-ham (spam +or unclassified) groups to be processed. Normally this is not done, +you are expected instead to send your ham to a ham group and process +it there. + +@vindex gnus-spam-process-destinations +When you leave a @emph{ham} or @emph{unclassified} group, all +@strong{spam} articles are moved to a location determined by either +the @code{spam-process-destination} group parameter or a match in the +@code{gnus-spam-process-destinations} variable, which is a list of +regular expressions matched with group names (it's easiest to +customize this variable with @kbd{M-x customize-variable @key{RET} +gnus-spam-process-destinations}). Each group name list is a standard +Lisp list, if you prefer to customize the variable manually. If the +@code{spam-process-destination} parameter is not set, the spam +articles are only expired. The group name is fully qualified, meaning +that if you see @samp{nntp:servername} before the group name in the +group buffer then you need it here as well. + +If spam can not be moved---because of a read-only backend such as +@acronym{NNTP}, for example, it will be copied. + +Note that you can use multiples destinations per group or regular +expression! This enables you to send your spam to multiple @emph{spam +training} groups. + +@vindex spam-log-to-registry +The problem with processing ham and spam is that Gnus doesn't track +this processing by default. Enable the @code{spam-log-to-registry} +variable so @code{spam.el} will use @code{gnus-registry.el} to track +what articles have been processed, and avoid processing articles +multiple times. Keep in mind that if you limit the number of registry +entries, this won't work as well as it does without a limit. + +@vindex spam-mark-only-unseen-as-spam +Set this variable if you want only unseen articles in spam groups to +be marked as spam. By default, it is set. If you set it to +@code{nil}, unread articles will also be marked as spam. + +@vindex spam-mark-ham-unread-before-move-from-spam-group +Set this variable if you want ham to be unmarked before it is moved +out of the spam group. This is very useful when you use something +like the tick mark @samp{!} to mark ham---the article will be placed +in your @code{ham-process-destination}, unmarked as if it came fresh +from the mail server. + +@vindex spam-autodetect-recheck-messages +When autodetecting spam, this variable tells @code{spam.el} whether +only unseen articles or all unread articles should be checked for +spam. It is recommended that you leave it off. + +@node Spam Package Configuration Examples +@subsection Spam Package Configuration Examples +@cindex spam filtering +@cindex spam filtering configuration examples +@cindex spam configuration examples +@cindex spam + +@subsubheading Ted's setup + +From Ted Zlatanov . +@example +;; @r{for @code{gnus-registry-split-fancy-with-parent} and spam autodetection} +;; @r{see @file{gnus-registry.el} for more information} +(gnus-registry-initialize) +(spam-initialize) + +(setq + spam-log-to-registry t ; @r{for spam autodetection} + spam-use-BBDB t + spam-use-regex-headers t ; @r{catch X-Spam-Flag (SpamAssassin)} + ;; @r{all groups with @samp{spam} in the name contain spam} + gnus-spam-newsgroup-contents + '(("spam" gnus-group-spam-classification-spam)) + ;; @r{see documentation for these} + spam-move-spam-nonspam-groups-only nil + spam-mark-only-unseen-as-spam t + spam-mark-ham-unread-before-move-from-spam-group t + nnimap-split-rule 'nnimap-split-fancy + ;; @r{understand what this does before you copy it to your own setup!} + nnimap-split-fancy '(| + ;; @r{trace references to parents and put in their group} + (: gnus-registry-split-fancy-with-parent) + ;; @r{this will catch server-side SpamAssassin tags} + (: spam-split 'spam-use-regex-headers) + (any "ding" "ding") + ;; @r{note that spam by default will go to @samp{spam}} + (: spam-split) + ;; @r{default mailbox} + "mail")) + +;; @r{my parameters, set with @kbd{G p}} + +;; @r{all nnml groups, and all nnimap groups except} +;; @r{@samp{nnimap+mail.lifelogs.com:train} and} +;; @r{@samp{nnimap+mail.lifelogs.com:spam}: any spam goes to nnimap training,} +;; @r{because it must have been detected manually} + +((spam-process-destination . "nnimap+mail.lifelogs.com:train")) + +;; @r{all @acronym{NNTP} groups} +;; @r{autodetect spam with the blacklist and ham with the BBDB} +((spam-autodetect-methods spam-use-blacklist spam-use-BBDB) +;; @r{send all spam to the training group} + (spam-process-destination . "nnimap+mail.lifelogs.com:train")) + +;; @r{only some @acronym{NNTP} groups, where I want to autodetect spam} +((spam-autodetect . t)) + +;; @r{my nnimap @samp{nnimap+mail.lifelogs.com:spam} group} + +;; @r{this is a spam group} +((spam-contents gnus-group-spam-classification-spam) + + ;; @r{any spam (which happens when I enter for all unseen messages,} + ;; @r{because of the @code{gnus-spam-newsgroup-contents} setting above), goes to} + ;; @r{@samp{nnimap+mail.lifelogs.com:train} unless I mark it as ham} + + (spam-process-destination "nnimap+mail.lifelogs.com:train") + + ;; @r{any ham goes to my @samp{nnimap+mail.lifelogs.com:mail} folder, but} + ;; @r{also to my @samp{nnimap+mail.lifelogs.com:trainham} folder for training} + + (ham-process-destination "nnimap+mail.lifelogs.com:mail" + "nnimap+mail.lifelogs.com:trainham") + ;; @r{in this group, only @samp{!} marks are ham} + (ham-marks + (gnus-ticked-mark)) + ;; @r{remembers senders in the blacklist on the way out---this is} + ;; @r{definitely not needed, it just makes me feel better} + (spam-process (gnus-group-spam-exit-processor-blacklist))) + +;; @r{Later, on the @acronym{IMAP} server I use the @samp{train} group for training} +;; @r{SpamAssassin to recognize spam, and the @samp{trainham} group fora} +;; @r{recognizing ham---but Gnus has nothing to do with it.} + +@end example + +@subsubheading Using @file{spam.el} on an IMAP server with a statistical filter on the server +From Reiner Steib . + +My provider has set up bogofilter (in combination with @acronym{DCC}) on +the mail server (@acronym{IMAP}). Recognized spam goes to +@samp{spam.detected}, the rest goes through the normal filter rules, +i.e. to @samp{some.folder} or to @samp{INBOX}. Training on false +positives or negatives is done by copying or moving the article to +@samp{training.ham} or @samp{training.spam} respectively. A cron job on +the server feeds those to bogofilter with the suitable ham or spam +options and deletes them from the @samp{training.ham} and +@samp{training.spam} folders. + +With the following entries in @code{gnus-parameters}, @code{spam.el} +does most of the job for me: + +@lisp + ("nnimap:spam\\.detected" + (gnus-article-sort-functions '(gnus-article-sort-by-chars)) + (ham-process-destination "nnimap:INBOX" "nnimap:training.ham") + (spam-contents gnus-group-spam-classification-spam)) + ("nnimap:\\(INBOX\\|other-folders\\)" + (spam-process-destination . "nnimap:training.spam") + (spam-contents gnus-group-spam-classification-ham)) +@end lisp + +@itemize + +@item @b{The Spam folder:} + +In the folder @samp{spam.detected}, I have to check for false positives +(i.e. legitimate mails, that were wrongly judged as spam by +bogofilter or DCC). + +Because of the @code{gnus-group-spam-classification-spam} entry, all +messages are marked as spam (with @code{$}). When I find a false +positive, I mark the message with some other ham mark +(@code{ham-marks}, @ref{Spam and Ham Processors}). On group exit, +those messages are copied to both groups, @samp{INBOX} (where I want +to have the article) and @samp{training.ham} (for training bogofilter) +and deleted from the @samp{spam.detected} folder. + +The @code{gnus-article-sort-by-chars} entry simplifies detection of +false positives for me. I receive lots of worms (sweN, @dots{}), that all +have a similar size. Grouping them by size (i.e. chars) makes finding +other false positives easier. (Of course worms aren't @i{spam} +(@acronym{UCE}, @acronym{UBE}) strictly speaking. Anyhow, bogofilter is +an excellent tool for filtering those unwanted mails for me.) + +@item @b{Ham folders:} + +In my ham folders, I just hit @kbd{S x} +(@code{gnus-summary-mark-as-spam}) whenever I see an unrecognized spam +mail (false negative). On group exit, those messages are moved to +@samp{training.ham}. +@end itemize + +@subsubheading Reporting spam articles in Gmane groups with @code{spam-report.el} + +From Reiner Steib . + +With following entry in @code{gnus-parameters}, @kbd{S x} +(@code{gnus-summary-mark-as-spam}) marks articles in @code{gmane.*} +groups as spam and reports the to Gmane at group exit: + +@lisp + ("^gmane\\." + (spam-process (gnus-group-spam-exit-processor-report-gmane))) +@end lisp + +Additionally, I use @code{(setq spam-report-gmane-use-article-number nil)} +because I don't read the groups directly from news.gmane.org, but +through my local news server (leafnode). I.e. the article numbers are +not the same as on news.gmane.org, thus @code{spam-report.el} has to check +the @code{X-Report-Spam} header to find the correct number. + +@node Spam Back Ends +@subsection Spam Back Ends +@cindex spam back ends + +The spam package offers a variety of back ends for detecting spam. +Each back end defines a set of methods for detecting spam +(@pxref{Filtering Incoming Mail}, @pxref{Detecting Spam in Groups}), +and a pair of spam and ham processors (@pxref{Spam and Ham +Processors}). + +@menu +* Blacklists and Whitelists:: +* BBDB Whitelists:: +* Gmane Spam Reporting:: +* Anti-spam Hashcash Payments:: +* Blackholes:: +* Regular Expressions Header Matching:: +* Bogofilter:: +* ifile spam filtering:: +* Spam Statistics Filtering:: +* SpamOracle:: +@end menu + +@node Blacklists and Whitelists +@subsubsection Blacklists and Whitelists +@cindex spam filtering +@cindex whitelists, spam filtering +@cindex blacklists, spam filtering +@cindex spam + +@defvar spam-use-blacklist + +Set this variable to @code{t} if you want to use blacklists when +splitting incoming mail. Messages whose senders are in the blacklist +will be sent to the @code{spam-split-group}. This is an explicit +filter, meaning that it acts only on mail senders @emph{declared} to +be spammers. + +@end defvar + +@defvar spam-use-whitelist + +Set this variable to @code{t} if you want to use whitelists when +splitting incoming mail. Messages whose senders are not in the +whitelist will be sent to the next spam-split rule. This is an +explicit filter, meaning that unless someone is in the whitelist, their +messages are not assumed to be spam or ham. + +@end defvar + +@defvar spam-use-whitelist-exclusive + +Set this variable to @code{t} if you want to use whitelists as an +implicit filter, meaning that every message will be considered spam +unless the sender is in the whitelist. Use with care. + +@end defvar + +@defvar gnus-group-spam-exit-processor-blacklist + +Add this symbol to a group's @code{spam-process} parameter by +customizing the group parameters or the +@code{gnus-spam-process-newsgroups} variable. When this symbol is +added to a group's @code{spam-process} parameter, the senders of +spam-marked articles will be added to the blacklist. + +@emph{WARNING} + +Instead of the obsolete +@code{gnus-group-spam-exit-processor-blacklist}, it is recommended +that you use @code{'(spam spam-use-blacklist)}. Everything will work +the same way, we promise. + +@end defvar + +@defvar gnus-group-ham-exit-processor-whitelist + +Add this symbol to a group's @code{spam-process} parameter by +customizing the group parameters or the +@code{gnus-spam-process-newsgroups} variable. When this symbol is +added to a group's @code{spam-process} parameter, the senders of +ham-marked articles in @emph{ham} groups will be added to the +whitelist. Note that this ham processor has no effect in @emph{spam} +or @emph{unclassified} groups. + +@emph{WARNING} + +Instead of the obsolete +@code{gnus-group-ham-exit-processor-whitelist}, it is recommended +that you use @code{'(ham spam-use-whitelist)}. Everything will work +the same way, we promise. + +@end defvar + +Blacklists are lists of regular expressions matching addresses you +consider to be spam senders. For instance, to block mail from any +sender at @samp{vmadmin.com}, you can put @samp{vmadmin.com} in your +blacklist. You start out with an empty blacklist. Blacklist entries +use the Emacs regular expression syntax. + +Conversely, whitelists tell Gnus what addresses are considered +legitimate. All messages from whitelisted addresses are considered +non-spam. Also see @ref{BBDB Whitelists}. Whitelist entries use the +Emacs regular expression syntax. + +The blacklist and whitelist file locations can be customized with the +@code{spam-directory} variable (@file{~/News/spam} by default), or +the @code{spam-whitelist} and @code{spam-blacklist} variables +directly. The whitelist and blacklist files will by default be in the +@code{spam-directory} directory, named @file{whitelist} and +@file{blacklist} respectively. + +@node BBDB Whitelists +@subsubsection BBDB Whitelists +@cindex spam filtering +@cindex BBDB whitelists, spam filtering +@cindex BBDB, spam filtering +@cindex spam + +@defvar spam-use-BBDB + +Analogous to @code{spam-use-whitelist} (@pxref{Blacklists and +Whitelists}), but uses the BBDB as the source of whitelisted +addresses, without regular expressions. You must have the BBDB loaded +for @code{spam-use-BBDB} to work properly. Messages whose senders are +not in the BBDB will be sent to the next spam-split rule. This is an +explicit filter, meaning that unless someone is in the BBDB, their +messages are not assumed to be spam or ham. + +@end defvar + +@defvar spam-use-BBDB-exclusive + +Set this variable to @code{t} if you want to use the BBDB as an +implicit filter, meaning that every message will be considered spam +unless the sender is in the BBDB. Use with care. Only sender +addresses in the BBDB will be allowed through; all others will be +classified as spammers. + +@end defvar + +@defvar gnus-group-ham-exit-processor-BBDB + +Add this symbol to a group's @code{spam-process} parameter by +customizing the group parameters or the +@code{gnus-spam-process-newsgroups} variable. When this symbol is +added to a group's @code{spam-process} parameter, the senders of +ham-marked articles in @emph{ham} groups will be added to the +BBDB. Note that this ham processor has no effect in @emph{spam} +or @emph{unclassified} groups. + +@emph{WARNING} + +Instead of the obsolete +@code{gnus-group-ham-exit-processor-BBDB}, it is recommended +that you use @code{'(ham spam-use-BBDB)}. Everything will work +the same way, we promise. + +@end defvar + +@node Gmane Spam Reporting +@subsubsection Gmane Spam Reporting +@cindex spam reporting +@cindex Gmane, spam reporting +@cindex Gmane, spam reporting +@cindex spam + +@defvar gnus-group-spam-exit-processor-report-gmane + +Add this symbol to a group's @code{spam-process} parameter by +customizing the group parameters or the +@code{gnus-spam-process-newsgroups} variable. When this symbol is +added to a group's @code{spam-process} parameter, the spam-marked +articles groups will be reported to the Gmane administrators via a +HTTP request. + +Gmane can be found at @uref{http://gmane.org}. + +@emph{WARNING} + +Instead of the obsolete +@code{gnus-group-spam-exit-processor-report-gmane}, it is recommended +that you use @code{'(spam spam-use-gmane)}. Everything will work the +same way, we promise. + +@end defvar + +@defvar spam-report-gmane-use-article-number + +This variable is @code{t} by default. Set it to @code{nil} if you are +running your own news server, for instance, and the local article +numbers don't correspond to the Gmane article numbers. When +@code{spam-report-gmane-use-article-number} is @code{nil}, +@code{spam-report.el} will use the @code{X-Report-Spam} header that +Gmane provides. + +@end defvar + +@node Anti-spam Hashcash Payments +@subsubsection Anti-spam Hashcash Payments +@cindex spam filtering +@cindex hashcash, spam filtering +@cindex spam + +@defvar spam-use-hashcash + +Similar to @code{spam-use-whitelist} (@pxref{Blacklists and +Whitelists}), but uses hashcash tokens for whitelisting messages +instead of the sender address. You must have the @code{hashcash.el} +package loaded for @code{spam-use-hashcash} to work properly. +Messages without a hashcash payment token will be sent to the next +spam-split rule. This is an explicit filter, meaning that unless a +hashcash token is found, the messages are not assumed to be spam or +ham. + +@end defvar + +@node Blackholes +@subsubsection Blackholes +@cindex spam filtering +@cindex blackholes, spam filtering +@cindex spam + +@defvar spam-use-blackholes + +This option is disabled by default. You can let Gnus consult the +blackhole-type distributed spam processing systems (DCC, for instance) +when you set this option. The variable @code{spam-blackhole-servers} +holds the list of blackhole servers Gnus will consult. The current +list is fairly comprehensive, but make sure to let us know if it +contains outdated servers. + +The blackhole check uses the @code{dig.el} package, but you can tell +@file{spam.el} to use @code{dns.el} instead for better performance if +you set @code{spam-use-dig} to @code{nil}. It is not recommended at +this time to set @code{spam-use-dig} to @code{nil} despite the +possible performance improvements, because some users may be unable to +use it, but you can try it and see if it works for you. + +@end defvar + +@defvar spam-blackhole-servers + +The list of servers to consult for blackhole checks. + +@end defvar + +@defvar spam-blackhole-good-server-regex + +A regular expression for IPs that should not be checked against the +blackhole server list. When set to @code{nil}, it has no effect. + +@end defvar + +@defvar spam-use-dig + +Use the @code{dig.el} package instead of the @code{dns.el} package. +The default setting of @code{t} is recommended. + +@end defvar + +Blackhole checks are done only on incoming mail. There is no spam or +ham processor for blackholes. + +@node Regular Expressions Header Matching +@subsubsection Regular Expressions Header Matching +@cindex spam filtering +@cindex regular expressions header matching, spam filtering +@cindex spam + +@defvar spam-use-regex-headers + +This option is disabled by default. You can let Gnus check the +message headers against lists of regular expressions when you set this +option. The variables @code{spam-regex-headers-spam} and +@code{spam-regex-headers-ham} hold the list of regular expressions. +Gnus will check against the message headers to determine if the +message is spam or ham, respectively. + +@end defvar + +@defvar spam-regex-headers-spam + +The list of regular expressions that, when matched in the headers of +the message, positively identify it as spam. + +@end defvar + +@defvar spam-regex-headers-ham + +The list of regular expressions that, when matched in the headers of +the message, positively identify it as ham. + +@end defvar + +Regular expression header checks are done only on incoming mail. +There is no specific spam or ham processor for regular expressions. + +@node Bogofilter +@subsubsection Bogofilter +@cindex spam filtering +@cindex bogofilter, spam filtering +@cindex spam + +@defvar spam-use-bogofilter + +Set this variable if you want @code{spam-split} to use Eric Raymond's +speedy Bogofilter. + +With a minimum of care for associating the @samp{$} mark for spam +articles only, Bogofilter training all gets fairly automatic. You +should do this until you get a few hundreds of articles in each +category, spam or not. The command @kbd{S t} in summary mode, either +for debugging or for curiosity, shows the @emph{spamicity} score of +the current article (between 0.0 and 1.0). + +Bogofilter determines if a message is spam based on a specific +threshold. That threshold can be customized, consult the Bogofilter +documentation. + +If the @code{bogofilter} executable is not in your path, Bogofilter +processing will be turned off. + +You should not enable this if you use @code{spam-use-bogofilter-headers}. + +@end defvar + +@table @kbd +@item M s t +@itemx S t +@kindex M s t +@kindex S t +@findex spam-bogofilter-score +Get the Bogofilter spamicity score (@code{spam-bogofilter-score}). +@end table + +@defvar spam-use-bogofilter-headers + +Set this variable if you want @code{spam-split} to use Eric Raymond's +speedy Bogofilter, looking only at the message headers. It works +similarly to @code{spam-use-bogofilter}, but the @code{X-Bogosity} header +must be in the message already. Normally you would do this with a +procmail recipe or something similar; consult the Bogofilter +installation documents for details. + +You should not enable this if you use @code{spam-use-bogofilter}. + +@end defvar + +@defvar gnus-group-spam-exit-processor-bogofilter +Add this symbol to a group's @code{spam-process} parameter by +customizing the group parameters or the +@code{gnus-spam-process-newsgroups} variable. When this symbol is +added to a group's @code{spam-process} parameter, spam-marked articles +will be added to the Bogofilter spam database. + +@emph{WARNING} + +Instead of the obsolete +@code{gnus-group-spam-exit-processor-bogofilter}, it is recommended +that you use @code{'(spam spam-use-bogofilter)}. Everything will work +the same way, we promise. +@end defvar + +@defvar gnus-group-ham-exit-processor-bogofilter +Add this symbol to a group's @code{spam-process} parameter by +customizing the group parameters or the +@code{gnus-spam-process-newsgroups} variable. When this symbol is +added to a group's @code{spam-process} parameter, the ham-marked +articles in @emph{ham} groups will be added to the Bogofilter database +of non-spam messages. Note that this ham processor has no effect in +@emph{spam} or @emph{unclassified} groups. + +@emph{WARNING} + +Instead of the obsolete +@code{gnus-group-ham-exit-processor-bogofilter}, it is recommended +that you use @code{'(ham spam-use-bogofilter)}. Everything will work +the same way, we promise. +@end defvar + +@defvar spam-bogofilter-database-directory + +This is the directory where Bogofilter will store its databases. It +is not specified by default, so Bogofilter will use its own default +database directory. + +@end defvar + +The Bogofilter mail classifier is similar to @command{ifile} in intent and +purpose. A ham and a spam processor are provided, plus the +@code{spam-use-bogofilter} and @code{spam-use-bogofilter-headers} +variables to indicate to spam-split that Bogofilter should either be +used, or has already been used on the article. The 0.9.2.1 version of +Bogofilter was used to test this functionality. + +@node ifile spam filtering +@subsubsection ifile spam filtering +@cindex spam filtering +@cindex ifile, spam filtering +@cindex spam + +@defvar spam-use-ifile + +Enable this variable if you want @code{spam-split} to use @command{ifile}, a +statistical analyzer similar to Bogofilter. + +@end defvar + +@defvar spam-ifile-all-categories + +Enable this variable if you want @code{spam-use-ifile} to give you all +the ifile categories, not just spam/non-spam. If you use this, make +sure you train ifile as described in its documentation. + +@end defvar + +@defvar spam-ifile-spam-category + +This is the category of spam messages as far as ifile is concerned. +The actual string used is irrelevant, but you probably want to leave +the default value of @samp{spam}. +@end defvar + +@defvar spam-ifile-database + +This is the filename for the ifile database. It is not specified by +default, so ifile will use its own default database name. + +@end defvar + +The ifile mail classifier is similar to Bogofilter in intent and +purpose. A ham and a spam processor are provided, plus the +@code{spam-use-ifile} variable to indicate to spam-split that ifile +should be used. The 1.2.1 version of ifile was used to test this +functionality. + +@node Spam Statistics Filtering +@subsubsection Spam Statistics Filtering +@cindex spam filtering +@cindex spam-stat, spam filtering +@cindex spam-stat +@cindex spam + +This back end uses the Spam Statistics Emacs Lisp package to perform +statistics-based filtering (@pxref{Spam Statistics Package}). Before +using this, you may want to perform some additional steps to +initialize your Spam Statistics dictionary. @xref{Creating a +spam-stat dictionary}. + +@defvar spam-use-stat + +@end defvar + +@defvar gnus-group-spam-exit-processor-stat +Add this symbol to a group's @code{spam-process} parameter by +customizing the group parameters or the +@code{gnus-spam-process-newsgroups} variable. When this symbol is +added to a group's @code{spam-process} parameter, the spam-marked +articles will be added to the spam-stat database of spam messages. + +@emph{WARNING} + +Instead of the obsolete +@code{gnus-group-spam-exit-processor-stat}, it is recommended +that you use @code{'(spam spam-use-stat)}. Everything will work +the same way, we promise. +@end defvar + +@defvar gnus-group-ham-exit-processor-stat +Add this symbol to a group's @code{spam-process} parameter by +customizing the group parameters or the +@code{gnus-spam-process-newsgroups} variable. When this symbol is +added to a group's @code{spam-process} parameter, the ham-marked +articles in @emph{ham} groups will be added to the spam-stat database +of non-spam messages. Note that this ham processor has no effect in +@emph{spam} or @emph{unclassified} groups. + +@emph{WARNING} + +Instead of the obsolete +@code{gnus-group-ham-exit-processor-stat}, it is recommended +that you use @code{'(ham spam-use-stat)}. Everything will work +the same way, we promise. +@end defvar + +This enables @file{spam.el} to cooperate with @file{spam-stat.el}. +@file{spam-stat.el} provides an internal (Lisp-only) spam database, +which unlike ifile or Bogofilter does not require external programs. +A spam and a ham processor, and the @code{spam-use-stat} variable for +@code{spam-split} are provided. + +@node SpamOracle +@subsubsection Using SpamOracle with Gnus +@cindex spam filtering +@cindex SpamOracle +@cindex spam + +An easy way to filter out spam is to use SpamOracle. SpamOracle is an +statistical mail filtering tool written by Xavier Leroy and needs to be +installed separately. + +There are several ways to use SpamOracle with Gnus. In all cases, your +mail is piped through SpamOracle in its @emph{mark} mode. SpamOracle will +then enter an @samp{X-Spam} header indicating whether it regards the +mail as a spam mail or not. + +One possibility is to run SpamOracle as a @code{:prescript} from the +@xref{Mail Source Specifiers}, (@pxref{SpamAssassin}). This method has +the advantage that the user can see the @emph{X-Spam} headers. + +The easiest method is to make @file{spam.el} (@pxref{Spam Package}) +call SpamOracle. + +@vindex spam-use-spamoracle +To enable SpamOracle usage by @file{spam.el}, set the variable +@code{spam-use-spamoracle} to @code{t} and configure the +@code{nnmail-split-fancy} or @code{nnimap-split-fancy}. @xref{Spam +Package}. In this example the @samp{INBOX} of an nnimap server is +filtered using SpamOracle. Mails recognized as spam mails will be +moved to @code{spam-split-group}, @samp{Junk} in this case. Ham +messages stay in @samp{INBOX}: + +@example +(setq spam-use-spamoracle t + spam-split-group "Junk" + nnimap-split-inbox '("INBOX") + nnimap-split-rule 'nnimap-split-fancy + nnimap-split-fancy '(| (: spam-split) "INBOX")) +@end example + +@defvar spam-use-spamoracle +Set to @code{t} if you want Gnus to enable spam filtering using +SpamOracle. +@end defvar + +@defvar spam-spamoracle-binary +Gnus uses the SpamOracle binary called @file{spamoracle} found in the +user's PATH. Using the variable @code{spam-spamoracle-binary}, this +can be customized. +@end defvar + +@defvar spam-spamoracle-database +By default, SpamOracle uses the file @file{~/.spamoracle.db} as a database to +store its analysis. This is controlled by the variable +@code{spam-spamoracle-database} which defaults to @code{nil}. That means +the default SpamOracle database will be used. In case you want your +database to live somewhere special, set +@code{spam-spamoracle-database} to this path. +@end defvar + +SpamOracle employs a statistical algorithm to determine whether a +message is spam or ham. In order to get good results, meaning few +false hits or misses, SpamOracle needs training. SpamOracle learns +the characteristics of your spam mails. Using the @emph{add} mode +(training mode) one has to feed good (ham) and spam mails to +SpamOracle. This can be done by pressing @kbd{|} in the Summary +buffer and pipe the mail to a SpamOracle process or using +@file{spam.el}'s spam- and ham-processors, which is much more +convenient. For a detailed description of spam- and ham-processors, +@xref{Spam Package}. + +@defvar gnus-group-spam-exit-processor-spamoracle +Add this symbol to a group's @code{spam-process} parameter by +customizing the group parameter or the +@code{gnus-spam-process-newsgroups} variable. When this symbol is added +to a group's @code{spam-process} parameter, spam-marked articles will be +sent to SpamOracle as spam samples. + +@emph{WARNING} + +Instead of the obsolete +@code{gnus-group-spam-exit-processor-spamoracle}, it is recommended +that you use @code{'(spam spam-use-spamoracle)}. Everything will work +the same way, we promise. +@end defvar + +@defvar gnus-group-ham-exit-processor-spamoracle +Add this symbol to a group's @code{spam-process} parameter by +customizing the group parameter or the +@code{gnus-spam-process-newsgroups} variable. When this symbol is added +to a group's @code{spam-process} parameter, the ham-marked articles in +@emph{ham} groups will be sent to the SpamOracle as samples of ham +messages. Note that this ham processor has no effect in @emph{spam} or +@emph{unclassified} groups. + +@emph{WARNING} + +Instead of the obsolete +@code{gnus-group-ham-exit-processor-spamoracle}, it is recommended +that you use @code{'(ham spam-use-spamoracle)}. Everything will work +the same way, we promise. +@end defvar + +@emph{Example:} These are the Group Parameters of a group that has been +classified as a ham group, meaning that it should only contain ham +messages. +@example + ((spam-contents gnus-group-spam-classification-ham) + (spam-process ((ham spam-use-spamoracle) + (spam spam-use-spamoracle)))) +@end example +For this group the @code{spam-use-spamoracle} is installed for both +ham and spam processing. If the group contains spam message +(e.g. because SpamOracle has not had enough sample messages yet) and +the user marks some messages as spam messages, these messages will be +processed by SpamOracle. The processor sends the messages to +SpamOracle as new samples for spam. + +@node Extending the Spam package +@subsection Extending the Spam package +@cindex spam filtering +@cindex spam elisp package, extending +@cindex extending the spam elisp package + +Say you want to add a new back end called blackbox. For filtering +incoming mail, provide the following: + +@enumerate + +@item +Code + +@lisp +(defvar spam-use-blackbox nil + "True if blackbox should be used.") +@end lisp + +Add +@lisp +(spam-use-blackbox . spam-check-blackbox) +@end lisp +to @code{spam-list-of-checks}. + +Add +@lisp +(gnus-group-ham-exit-processor-blackbox ham spam-use-blackbox) +(gnus-group-spam-exit-processor-blackbox spam spam-use-blackbox) +@end lisp + +to @code{spam-list-of-processors}. + +Add +@lisp +(spam-use-blackbox spam-blackbox-register-routine + nil + spam-blackbox-unregister-routine + nil) +@end lisp + +to @code{spam-registration-functions}. Write the register/unregister +routines using the bogofilter register/unregister routines as a +start, or other register/unregister routines more appropriate to +Blackbox. + +@item +Functionality + +Write the @code{spam-check-blackbox} function. It should return +@samp{nil} or @code{spam-split-group}, observing the other +conventions. See the existing @code{spam-check-*} functions for +examples of what you can do, and stick to the template unless you +fully understand the reasons why you aren't. + +Make sure to add @code{spam-use-blackbox} to +@code{spam-list-of-statistical-checks} if Blackbox is a statistical +mail analyzer that needs the full message body to operate. + +@end enumerate + +For processing spam and ham messages, provide the following: + +@enumerate + +@item +Code + +Note you don't have to provide a spam or a ham processor. Only +provide them if Blackbox supports spam or ham processing. + +Also, ham and spam processors are being phased out as single +variables. Instead the form @code{'(spam spam-use-blackbox)} or +@code{'(ham spam-use-blackbox)} is favored. For now, spam/ham +processor variables are still around but they won't be for long. + +@lisp +(defvar gnus-group-spam-exit-processor-blackbox "blackbox-spam" + "The Blackbox summary exit spam processor. +Only applicable to spam groups.") + +(defvar gnus-group-ham-exit-processor-blackbox "blackbox-ham" + "The whitelist summary exit ham processor. +Only applicable to non-spam (unclassified and ham) groups.") + +@end lisp + +@item +Gnus parameters + +Add +@lisp +(const :tag "Spam: Blackbox" (spam spam-use-blackbox)) +(const :tag "Ham: Blackbox" (ham spam-use-blackbox)) +@end lisp +to the @code{spam-process} group parameter in @code{gnus.el}. Make +sure you do it twice, once for the parameter and once for the +variable customization. + +Add +@lisp +(variable-item spam-use-blackbox) +@end lisp +to the @code{spam-autodetect-methods} group parameter in +@code{gnus.el}. + +@end enumerate + +@node Spam Statistics Package +@subsection Spam Statistics Package +@cindex Paul Graham +@cindex Graham, Paul +@cindex naive Bayesian spam filtering +@cindex Bayesian spam filtering, naive +@cindex spam filtering, naive Bayesian + +Paul Graham has written an excellent essay about spam filtering using +statistics: @uref{http://www.paulgraham.com/spam.html,A Plan for +Spam}. In it he describes the inherent deficiency of rule-based +filtering as used by SpamAssassin, for example: Somebody has to write +the rules, and everybody else has to install these rules. You are +always late. It would be much better, he argues, to filter mail based +on whether it somehow resembles spam or non-spam. One way to measure +this is word distribution. He then goes on to describe a solution +that checks whether a new mail resembles any of your other spam mails +or not. + +The basic idea is this: Create a two collections of your mail, one +with spam, one with non-spam. Count how often each word appears in +either collection, weight this by the total number of mails in the +collections, and store this information in a dictionary. For every +word in a new mail, determine its probability to belong to a spam or a +non-spam mail. Use the 15 most conspicuous words, compute the total +probability of the mail being spam. If this probability is higher +than a certain threshold, the mail is considered to be spam. + +The Spam Statistics package adds support to Gnus for this kind of +filtering. It can be used as one of the back ends of the Spam package +(@pxref{Spam Package}), or by itself. + +Before using the Spam Statistics package, you need to set it up. +First, you need two collections of your mail, one with spam, one with +non-spam. Then you need to create a dictionary using these two +collections, and save it. And last but not least, you need to use +this dictionary in your fancy mail splitting rules. + +@menu +* Creating a spam-stat dictionary:: +* Splitting mail using spam-stat:: +* Low-level interface to the spam-stat dictionary:: +@end menu + +@node Creating a spam-stat dictionary +@subsubsection Creating a spam-stat dictionary + +Before you can begin to filter spam based on statistics, you must +create these statistics based on two mail collections, one with spam, +one with non-spam. These statistics are then stored in a dictionary +for later use. In order for these statistics to be meaningful, you +need several hundred emails in both collections. + +Gnus currently supports only the nnml back end for automated dictionary +creation. The nnml back end stores all mails in a directory, one file +per mail. Use the following: + +@defun spam-stat-process-spam-directory +Create spam statistics for every file in this directory. Every file +is treated as one spam mail. +@end defun + +@defun spam-stat-process-non-spam-directory +Create non-spam statistics for every file in this directory. Every +file is treated as one non-spam mail. +@end defun + +Usually you would call @code{spam-stat-process-spam-directory} on a +directory such as @file{~/Mail/mail/spam} (this usually corresponds to +the group @samp{nnml:mail.spam}), and you would call +@code{spam-stat-process-non-spam-directory} on a directory such as +@file{~/Mail/mail/misc} (this usually corresponds to the group +@samp{nnml:mail.misc}). + +When you are using @acronym{IMAP}, you won't have the mails available +locally, so that will not work. One solution is to use the Gnus Agent +to cache the articles. Then you can use directories such as +@file{"~/News/agent/nnimap/mail.yourisp.com/personal_spam"} for +@code{spam-stat-process-spam-directory}. @xref{Agent as Cache}. + +@defvar spam-stat +This variable holds the hash-table with all the statistics---the +dictionary we have been talking about. For every word in either +collection, this hash-table stores a vector describing how often the +word appeared in spam and often it appeared in non-spam mails. +@end defvar + +If you want to regenerate the statistics from scratch, you need to +reset the dictionary. + +@defun spam-stat-reset +Reset the @code{spam-stat} hash-table, deleting all the statistics. +@end defun + +When you are done, you must save the dictionary. The dictionary may +be rather large. If you will not update the dictionary incrementally +(instead, you will recreate it once a month, for example), then you +can reduce the size of the dictionary by deleting all words that did +not appear often enough or that do not clearly belong to only spam or +only non-spam mails. + +@defun spam-stat-reduce-size +Reduce the size of the dictionary. Use this only if you do not want +to update the dictionary incrementally. +@end defun + +@defun spam-stat-save +Save the dictionary. +@end defun + +@defvar spam-stat-file +The filename used to store the dictionary. This defaults to +@file{~/.spam-stat.el}. +@end defvar + +@node Splitting mail using spam-stat +@subsubsection Splitting mail using spam-stat + +This section describes how to use the Spam statistics +@emph{independently} of the @xref{Spam Package}. + +First, add the following to your @file{~/.gnus.el} file: + +@lisp +(require 'spam-stat) +(spam-stat-load) +@end lisp + +This will load the necessary Gnus code, and the dictionary you +created. + +Next, you need to adapt your fancy splitting rules: You need to +determine how to use @code{spam-stat}. The following examples are for +the nnml back end. Using the nnimap back end works just as well. Just +use @code{nnimap-split-fancy} instead of @code{nnmail-split-fancy}. + +In the simplest case, you only have two groups, @samp{mail.misc} and +@samp{mail.spam}. The following expression says that mail is either +spam or it should go into @samp{mail.misc}. If it is spam, then +@code{spam-stat-split-fancy} will return @samp{mail.spam}. + +@lisp +(setq nnmail-split-fancy + `(| (: spam-stat-split-fancy) + "mail.misc")) +@end lisp + +@defvar spam-stat-split-fancy-spam-group +The group to use for spam. Default is @samp{mail.spam}. +@end defvar + +If you also filter mail with specific subjects into other groups, use +the following expression. Only mails not matching the regular +expression are considered potential spam. + +@lisp +(setq nnmail-split-fancy + `(| ("Subject" "\\bspam-stat\\b" "mail.emacs") + (: spam-stat-split-fancy) + "mail.misc")) +@end lisp + +If you want to filter for spam first, then you must be careful when +creating the dictionary. Note that @code{spam-stat-split-fancy} must +consider both mails in @samp{mail.emacs} and in @samp{mail.misc} as +non-spam, therefore both should be in your collection of non-spam +mails, when creating the dictionary! + +@lisp +(setq nnmail-split-fancy + `(| (: spam-stat-split-fancy) + ("Subject" "\\bspam-stat\\b" "mail.emacs") + "mail.misc")) +@end lisp + +You can combine this with traditional filtering. Here, we move all +HTML-only mails into the @samp{mail.spam.filtered} group. Note that since +@code{spam-stat-split-fancy} will never see them, the mails in +@samp{mail.spam.filtered} should be neither in your collection of spam mails, +nor in your collection of non-spam mails, when creating the +dictionary! + +@lisp +(setq nnmail-split-fancy + `(| ("Content-Type" "text/html" "mail.spam.filtered") + (: spam-stat-split-fancy) + ("Subject" "\\bspam-stat\\b" "mail.emacs") + "mail.misc")) +@end lisp + + +@node Low-level interface to the spam-stat dictionary +@subsubsection Low-level interface to the spam-stat dictionary + +The main interface to using @code{spam-stat}, are the following functions: + +@defun spam-stat-buffer-is-spam +Called in a buffer, that buffer is considered to be a new spam mail. +Use this for new mail that has not been processed before. +@end defun + +@defun spam-stat-buffer-is-no-spam +Called in a buffer, that buffer is considered to be a new non-spam +mail. Use this for new mail that has not been processed before. +@end defun + +@defun spam-stat-buffer-change-to-spam +Called in a buffer, that buffer is no longer considered to be normal +mail but spam. Use this to change the status of a mail that has +already been processed as non-spam. +@end defun + +@defun spam-stat-buffer-change-to-non-spam +Called in a buffer, that buffer is no longer considered to be spam but +normal mail. Use this to change the status of a mail that has already +been processed as spam. +@end defun + +@defun spam-stat-save +Save the hash table to the file. The filename used is stored in the +variable @code{spam-stat-file}. +@end defun + +@defun spam-stat-load +Load the hash table from a file. The filename used is stored in the +variable @code{spam-stat-file}. +@end defun + +@defun spam-stat-score-word +Return the spam score for a word. +@end defun + +@defun spam-stat-score-buffer +Return the spam score for a buffer. +@end defun + +@defun spam-stat-split-fancy +Use this function for fancy mail splitting. Add the rule @samp{(: +spam-stat-split-fancy)} to @code{nnmail-split-fancy} +@end defun + +Make sure you load the dictionary before using it. This requires the +following in your @file{~/.gnus.el} file: + +@lisp +(require 'spam-stat) +(spam-stat-load) +@end lisp + +Typical test will involve calls to the following functions: + +@smallexample +Reset: (setq spam-stat (make-hash-table :test 'equal)) +Learn spam: (spam-stat-process-spam-directory "~/Mail/mail/spam") +Learn non-spam: (spam-stat-process-non-spam-directory "~/Mail/mail/misc") +Save table: (spam-stat-save) +File size: (nth 7 (file-attributes spam-stat-file)) +Number of words: (hash-table-count spam-stat) +Test spam: (spam-stat-test-directory "~/Mail/mail/spam") +Test non-spam: (spam-stat-test-directory "~/Mail/mail/misc") +Reduce table size: (spam-stat-reduce-size) +Save table: (spam-stat-save) +File size: (nth 7 (file-attributes spam-stat-file)) +Number of words: (hash-table-count spam-stat) +Test spam: (spam-stat-test-directory "~/Mail/mail/spam") +Test non-spam: (spam-stat-test-directory "~/Mail/mail/misc") +@end smallexample + +Here is how you would create your dictionary: + +@smallexample +Reset: (setq spam-stat (make-hash-table :test 'equal)) +Learn spam: (spam-stat-process-spam-directory "~/Mail/mail/spam") +Learn non-spam: (spam-stat-process-non-spam-directory "~/Mail/mail/misc") +Repeat for any other non-spam group you need... +Reduce table size: (spam-stat-reduce-size) +Save table: (spam-stat-save) +@end smallexample + +@node Other modes +@section Interaction with other modes + +@subsection Dired +@cindex dired + +@code{gnus-dired-minor-mode} provides some useful functions for dired +buffers. It is enabled with +@lisp +(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode) +@end lisp + +@table @kbd +@item C-c C-m C-a +@findex gnus-dired-attach +@cindex attachments, selection via dired +Send dired's marked files as an attachment (@code{gnus-dired-attach}). +You will be prompted for a message buffer. + +@item C-c C-m C-l +@findex gnus-dired-find-file-mailcap +Visit a file according to the appropriate mailcap entry +(@code{gnus-dired-find-file-mailcap}). With prefix, open file in a new +buffer. + +@item C-c C-m C-p +@findex gnus-dired-print +Print file according to the mailcap entry (@code{gnus-dired-print}). If +there is no print command, print in a PostScript image. +@end table + +@node Various Various +@section Various Various +@cindex mode lines +@cindex highlights + +@table @code + +@item gnus-home-directory +@vindex gnus-home-directory +All Gnus file and directory variables will be initialized from this +variable, which defaults to @file{~/}. + +@item gnus-directory +@vindex gnus-directory +Most Gnus storage file and directory variables will be initialized from +this variable, which defaults to the @env{SAVEDIR} environment +variable, or @file{~/News/} if that variable isn't set. + +Note that Gnus is mostly loaded when the @file{~/.gnus.el} file is read. +This means that other directory variables that are initialized from this +variable won't be set properly if you set this variable in +@file{~/.gnus.el}. Set this variable in @file{.emacs} instead. + +@item gnus-default-directory +@vindex gnus-default-directory +Not related to the above variable at all---this variable says what the +default directory of all Gnus buffers should be. If you issue commands +like @kbd{C-x C-f}, the prompt you'll get starts in the current buffer's +default directory. If this variable is @code{nil} (which is the +default), the default directory will be the default directory of the +buffer you were in when you started Gnus. + +@item gnus-verbose +@vindex gnus-verbose +This variable is an integer between zero and ten. The higher the value, +the more messages will be displayed. If this variable is zero, Gnus +will never flash any messages, if it is seven (which is the default), +most important messages will be shown, and if it is ten, Gnus won't ever +shut up, but will flash so many messages it will make your head swim. + +@item gnus-verbose-backends +@vindex gnus-verbose-backends +This variable works the same way as @code{gnus-verbose}, but it applies +to the Gnus back ends instead of Gnus proper. + +@item nnheader-max-head-length +@vindex nnheader-max-head-length +When the back ends read straight heads of articles, they all try to read +as little as possible. This variable (default 8192) specifies +the absolute max length the back ends will try to read before giving up +on finding a separator line between the head and the body. If this +variable is @code{nil}, there is no upper read bound. If it is +@code{t}, the back ends won't try to read the articles piece by piece, +but read the entire articles. This makes sense with some versions of +@code{ange-ftp} or @code{efs}. + +@item nnheader-head-chop-length +@vindex nnheader-head-chop-length +This variable (default 2048) says how big a piece of each article to +read when doing the operation described above. + +@item nnheader-file-name-translation-alist +@vindex nnheader-file-name-translation-alist +@cindex file names +@cindex invalid characters in file names +@cindex characters in file names +This is an alist that says how to translate characters in file names. +For instance, if @samp{:} is invalid as a file character in file names +on your system (you OS/2 user you), you could say something like: + +@lisp +@group +(setq nnheader-file-name-translation-alist + '((?: . ?_))) +@end group +@end lisp + +In fact, this is the default value for this variable on OS/2 and MS +Windows (phooey) systems. + +@item gnus-hidden-properties +@vindex gnus-hidden-properties +This is a list of properties to use to hide ``invisible'' text. It is +@code{(invisible t intangible t)} by default on most systems, which +makes invisible text invisible and intangible. + +@item gnus-parse-headers-hook +@vindex gnus-parse-headers-hook +A hook called before parsing headers. It can be used, for instance, to +gather statistics on the headers fetched, or perhaps you'd like to prune +some headers. I don't see why you'd want that, though. + +@item gnus-shell-command-separator +@vindex gnus-shell-command-separator +String used to separate two shell commands. The default is @samp{;}. + +@item gnus-invalid-group-regexp +@vindex gnus-invalid-group-regexp + +Regexp to match ``invalid'' group names when querying user for a group +name. The default value catches some @strong{really} invalid group +names who could possibly mess up Gnus internally (like allowing +@samp{:} in a group name, which is normally used to delimit method and +group). + +@acronym{IMAP} users might want to allow @samp{/} in group names though. + + +@end table + +@node The End +@chapter The End + +Well, that's the manual---you can get on with your life now. Keep in +touch. Say hello to your cats from me. + +My @strong{ghod}---I just can't stand goodbyes. Sniffle. + +Ol' Charles Reznikoff said it pretty well, so I leave the floor to him: + +@quotation +@strong{Te Deum} + +@sp 1 +Not because of victories @* +I sing,@* +having none,@* +but for the common sunshine,@* +the breeze,@* +the largess of the spring. + +@sp 1 +Not for victory@* +but for the day's work done@* +as well as I was able;@* +not for a seat upon the dais@* +but at the common table.@* +@end quotation + + +@node Appendices +@chapter Appendices + +@menu +* XEmacs:: Requirements for installing under XEmacs. +* History:: How Gnus got where it is today. +* On Writing Manuals:: Why this is not a beginner's guide. +* Terminology:: We use really difficult, like, words here. +* Customization:: Tailoring Gnus to your needs. +* Troubleshooting:: What you might try if things do not work. +* Gnus Reference Guide:: Rilly, rilly technical stuff. +* Emacs for Heathens:: A short introduction to Emacsian terms. +* Frequently Asked Questions:: The Gnus FAQ +@end menu + + +@node XEmacs +@section XEmacs +@cindex XEmacs +@cindex installing under XEmacs + +XEmacs is distributed as a collection of packages. You should install +whatever packages the Gnus XEmacs package requires. The current +requirements are @samp{gnus}, @samp{mail-lib}, @samp{xemacs-base}, +@samp{eterm}, @samp{sh-script}, @samp{net-utils}, @samp{os-utils}, +@samp{dired}, @samp{mh-e}, @samp{sieve}, @samp{ps-print}, @samp{W3}, +@samp{pgg}, @samp{mailcrypt}, @samp{ecrypto}, and @samp{sasl}. + + +@node History +@section History + +@cindex history +@sc{gnus} was written by Masanobu @sc{Umeda}. When autumn crept up in +'94, Lars Magne Ingebrigtsen grew bored and decided to rewrite Gnus. + +If you want to investigate the person responsible for this outrage, +you can point your (feh!) web browser to +@uref{http://quimby.gnus.org/}. This is also the primary +distribution point for the new and spiffy versions of Gnus, and is +known as The Site That Destroys Newsrcs And Drives People Mad. + +During the first extended alpha period of development, the new Gnus was +called ``(ding) Gnus''. @dfn{(ding)} is, of course, short for +@dfn{ding is not Gnus}, which is a total and utter lie, but who cares? +(Besides, the ``Gnus'' in this abbreviation should probably be +pronounced ``news'' as @sc{Umeda} intended, which makes it a more +appropriate name, don't you think?) + +In any case, after spending all that energy on coming up with a new and +spunky name, we decided that the name was @emph{too} spunky, so we +renamed it back again to ``Gnus''. But in mixed case. ``Gnus'' vs. +``@sc{gnus}''. New vs. old. + +@menu +* Gnus Versions:: What Gnus versions have been released. +* Other Gnus Versions:: Other Gnus versions that also have been released. +* Why?:: What's the point of Gnus? +* Compatibility:: Just how compatible is Gnus with @sc{gnus}? +* Conformity:: Gnus tries to conform to all standards. +* Emacsen:: Gnus can be run on a few modern Emacsen. +* Gnus Development:: How Gnus is developed. +* Contributors:: Oodles of people. +* New Features:: Pointers to some of the new stuff in Gnus. +@end menu + + +@node Gnus Versions +@subsection Gnus Versions +@cindex ding Gnus +@cindex September Gnus +@cindex Red Gnus +@cindex Quassia Gnus +@cindex Pterodactyl Gnus +@cindex Oort Gnus +@cindex No Gnus +@cindex Gnus versions + +The first ``proper'' release of Gnus 5 was done in November 1995 when it +was included in the Emacs 19.30 distribution (132 (ding) Gnus releases +plus 15 Gnus 5.0 releases). + +In May 1996 the next Gnus generation (aka. ``September Gnus'' (after 99 +releases)) was released under the name ``Gnus 5.2'' (40 releases). + +On July 28th 1996 work on Red Gnus was begun, and it was released on +January 25th 1997 (after 84 releases) as ``Gnus 5.4'' (67 releases). + +On September 13th 1997, Quassia Gnus was started and lasted 37 releases. +It was released as ``Gnus 5.6'' on March 8th 1998 (46 releases). + +Gnus 5.6 begat Pterodactyl Gnus on August 29th 1998 and was released as +``Gnus 5.8'' (after 99 releases and a CVS repository) on December 3rd +1999. + +On the 26th of October 2000, Oort Gnus was begun and was released as +Gnus 5.10 on May 1st 2003 (24 releases). + +On the January 4th 2004, No Gnus was begun. + +If you happen upon a version of Gnus that has a prefixed name -- +``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'', +``Pterodactyl Gnus'', ``Oort Gnus'', ``No Gnus'' -- don't panic. +Don't let it know that you're frightened. Back away. Slowly. Whatever +you do, don't run. Walk away, calmly, until you're out of its reach. +Find a proper released version of Gnus and snuggle up to that instead. + + +@node Other Gnus Versions +@subsection Other Gnus Versions +@cindex Semi-gnus + +In addition to the versions of Gnus which have had their releases +coordinated by Lars, one major development has been Semi-gnus from +Japan. It's based on a library called @acronym{SEMI}, which provides +@acronym{MIME} capabilities. + +These Gnusae are based mainly on Gnus 5.6 and Pterodactyl Gnus. +Collectively, they are called ``Semi-gnus'', and different strains are +called T-gnus, ET-gnus, Nana-gnus and Chaos. These provide powerful +@acronym{MIME} and multilingualization things, especially important for +Japanese users. + + +@node Why? +@subsection Why? + +What's the point of Gnus? + +I want to provide a ``rad'', ``happening'', ``way cool'' and ``hep'' +newsreader, that lets you do anything you can think of. That was my +original motivation, but while working on Gnus, it has become clear to +me that this generation of newsreaders really belong in the stone age. +Newsreaders haven't developed much since the infancy of the net. If the +volume continues to rise with the current rate of increase, all current +newsreaders will be pretty much useless. How do you deal with +newsgroups that have thousands of new articles each day? How do you +keep track of millions of people who post? + +Gnus offers no real solutions to these questions, but I would very much +like to see Gnus being used as a testing ground for new methods of +reading and fetching news. Expanding on @sc{Umeda}-san's wise decision +to separate the newsreader from the back ends, Gnus now offers a simple +interface for anybody who wants to write new back ends for fetching mail +and news from different sources. I have added hooks for customizations +everywhere I could imagine it being useful. By doing so, I'm inviting +every one of you to explore and invent. + +May Gnus never be complete. @kbd{C-u 100 M-x all-hail-emacs} and +@kbd{C-u 100 M-x all-hail-xemacs}. + + +@node Compatibility +@subsection Compatibility + +@cindex compatibility +Gnus was designed to be fully compatible with @sc{gnus}. Almost all key +bindings have been kept. More key bindings have been added, of course, +but only in one or two obscure cases have old bindings been changed. + +Our motto is: +@quotation +@cartouche +@center In a cloud bones of steel. +@end cartouche +@end quotation + +All commands have kept their names. Some internal functions have changed +their names. + +The @code{gnus-uu} package has changed drastically. @xref{Decoding +Articles}. + +One major compatibility question is the presence of several summary +buffers. All variables relevant while reading a group are +buffer-local to the summary buffer they belong in. Although many +important variables have their values copied into their global +counterparts whenever a command is executed in the summary buffer, this +change might lead to incorrect values being used unless you are careful. + +All code that relies on knowledge of @sc{gnus} internals will probably +fail. To take two examples: Sorting @code{gnus-newsrc-alist} (or +changing it in any way, as a matter of fact) is strictly verboten. Gnus +maintains a hash table that points to the entries in this alist (which +speeds up many functions), and changing the alist directly will lead to +peculiar results. + +@cindex hilit19 +@cindex highlighting +Old hilit19 code does not work at all. In fact, you should probably +remove all hilit code from all Gnus hooks +(@code{gnus-group-prepare-hook} and @code{gnus-summary-prepare-hook}). +Gnus provides various integrated functions for highlighting. These are +faster and more accurate. To make life easier for everybody, Gnus will +by default remove all hilit calls from all hilit hooks. Uncleanliness! +Away! + +Packages like @code{expire-kill} will no longer work. As a matter of +fact, you should probably remove all old @sc{gnus} packages (and other +code) when you start using Gnus. More likely than not, Gnus already +does what you have written code to make @sc{gnus} do. (Snicker.) + +Even though old methods of doing things are still supported, only the +new methods are documented in this manual. If you detect a new method of +doing something while reading this manual, that does not mean you have +to stop doing it the old way. + +Gnus understands all @sc{gnus} startup files. + +@kindex M-x gnus-bug +@findex gnus-bug +@cindex reporting bugs +@cindex bugs +Overall, a casual user who hasn't written much code that depends on +@sc{gnus} internals should suffer no problems. If problems occur, +please let me know by issuing that magic command @kbd{M-x gnus-bug}. + +@vindex gnus-bug-create-help-buffer +If you are in the habit of sending bug reports @emph{very} often, you +may find the helpful help buffer annoying after a while. If so, set +@code{gnus-bug-create-help-buffer} to @code{nil} to avoid having it pop +up at you. + + +@node Conformity +@subsection Conformity + +No rebels without a clue here, ma'am. We conform to all standards known +to (wo)man. Except for those standards and/or conventions we disagree +with, of course. + +@table @strong + +@item RFC (2)822 +@cindex RFC 822 +@cindex RFC 2822 +There are no known breaches of this standard. + +@item RFC 1036 +@cindex RFC 1036 +There are no known breaches of this standard, either. + +@item Son-of-RFC 1036 +@cindex Son-of-RFC 1036 +We do have some breaches to this one. + +@table @emph + +@item X-Newsreader +@itemx User-Agent +These are considered to be ``vanity headers'', while I consider them +to be consumer information. After seeing so many badly formatted +articles coming from @code{tin} and @code{Netscape} I know not to use +either of those for posting articles. I would not have known that if +it wasn't for the @code{X-Newsreader} header. +@end table + +@item USEFOR +@cindex USEFOR +USEFOR is an IETF working group writing a successor to RFC 1036, based +on Son-of-RFC 1036. They have produced a number of drafts proposing +various changes to the format of news articles. The Gnus towers will +look into implementing the changes when the draft is accepted as an RFC. + +@item MIME - RFC 2045-2049 etc +@cindex @acronym{MIME} +All the various @acronym{MIME} RFCs are supported. + +@item Disposition Notifications - RFC 2298 +Message Mode is able to request notifications from the receiver. + +@item PGP - RFC 1991 and RFC 2440 +@cindex RFC 1991 +@cindex RFC 2440 +RFC 1991 is the original @acronym{PGP} message specification, +published as an informational RFC. RFC 2440 was the follow-up, now +called Open PGP, and put on the Standards Track. Both document a +non-@acronym{MIME} aware @acronym{PGP} format. Gnus supports both +encoding (signing and encryption) and decoding (verification and +decryption). + +@item PGP/MIME - RFC 2015/3156 +RFC 2015 (superseded by 3156 which references RFC 2440 instead of RFC +1991) describes the @acronym{MIME}-wrapping around the RFC 1991/2440 format. +Gnus supports both encoding and decoding. + +@item S/MIME - RFC 2633 +RFC 2633 describes the @acronym{S/MIME} format. + +@item IMAP - RFC 1730/2060, RFC 2195, RFC 2086, RFC 2359, RFC 2595, RFC 1731 +RFC 1730 is @acronym{IMAP} version 4, updated somewhat by RFC 2060 +(@acronym{IMAP} 4 revision 1). RFC 2195 describes CRAM-MD5 +authentication for @acronym{IMAP}. RFC 2086 describes access control +lists (ACLs) for @acronym{IMAP}. RFC 2359 describes a @acronym{IMAP} +protocol enhancement. RFC 2595 describes the proper @acronym{TLS} +integration (STARTTLS) with @acronym{IMAP}. RFC 1731 describes the +GSSAPI/Kerberos4 mechanisms for @acronym{IMAP}. + +@end table + +If you ever notice Gnus acting non-compliant with regards to the texts +mentioned above, don't hesitate to drop a note to Gnus Towers and let us +know. + + +@node Emacsen +@subsection Emacsen +@cindex Emacsen +@cindex XEmacs +@cindex Mule +@cindex Emacs + +Gnus should work on: + +@itemize @bullet + +@item +Emacs 21.1 and up. + +@item +XEmacs 21.4 and up. + +@end itemize + +This Gnus version will absolutely not work on any Emacsen older than +that. Not reliably, at least. Older versions of Gnus may work on older +Emacs versions. Particularly, Gnus 5.10.8 should also work on Emacs +20.7 and XEmacs 21.1. + +There are some vague differences between Gnus on the various +platforms---XEmacs features more graphics (a logo and a toolbar)---but +other than that, things should look pretty much the same under all +Emacsen. + + +@node Gnus Development +@subsection Gnus Development + +Gnus is developed in a two-phased cycle. The first phase involves much +discussion on the @samp{ding@@gnus.org} mailing list, where people +propose changes and new features, post patches and new back ends. This +phase is called the @dfn{alpha} phase, since the Gnusae released in this +phase are @dfn{alpha releases}, or (perhaps more commonly in other +circles) @dfn{snapshots}. During this phase, Gnus is assumed to be +unstable and should not be used by casual users. Gnus alpha releases +have names like ``Red Gnus'' and ``Quassia Gnus''. + +After futzing around for 50-100 alpha releases, Gnus is declared +@dfn{frozen}, and only bug fixes are applied. Gnus loses the prefix, +and is called things like ``Gnus 5.6.32'' instead. Normal people are +supposed to be able to use these, and these are mostly discussed on the +@samp{gnu.emacs.gnus} newsgroup. + +@cindex Incoming* +@vindex mail-source-delete-incoming +Some variable defaults differ between alpha Gnusae and released Gnusae. +In particular, @code{mail-source-delete-incoming} defaults to @code{nil} in +alpha Gnusae and @code{t} in released Gnusae. This is to prevent +lossage of mail if an alpha release hiccups while handling the mail. + +The division of discussion between the ding mailing list and the Gnus +newsgroup is not purely based on publicity concerns. It's true that +having people write about the horrible things that an alpha Gnus release +can do (sometimes) in a public forum may scare people off, but more +importantly, talking about new experimental features that have been +introduced may confuse casual users. New features are frequently +introduced, fiddled with, and judged to be found wanting, and then +either discarded or totally rewritten. People reading the mailing list +usually keep up with these rapid changes, while people on the newsgroup +can't be assumed to do so. + + + +@node Contributors +@subsection Contributors +@cindex contributors + +The new Gnus version couldn't have been done without the help of all the +people on the (ding) mailing list. Every day for over a year I have +gotten billions of nice bug reports from them, filling me with joy, +every single one of them. Smooches. The people on the list have been +tried beyond endurance, what with my ``oh, that's a neat idea , yup, I'll release it right away no wait, that doesn't +work at all , yup, I'll ship that one off right away no, wait, that absolutely does not work'' policy for releases. +Micro$oft---bah. Amateurs. I'm @emph{much} worse. (Or is that +``worser''? ``much worser''? ``worsest''?) + +I would like to take this opportunity to thank the Academy for@dots{} oops, +wrong show. + +@itemize @bullet + +@item +Masanobu @sc{Umeda}---the writer of the original @sc{gnus}. + +@item +Shenghuo Zhu---uudecode.el, mm-uu.el, rfc1843.el, webmail.el, +nnwarchive and many, many other things connected with @acronym{MIME} and +other types of en/decoding, as well as general bug fixing, new +functionality and stuff. + +@item +Per Abrahamsen---custom, scoring, highlighting and @sc{soup} code (as +well as numerous other things). + +@item +Luis Fernandes---design and graphics. + +@item +Joe Reiss---creator of the smiley faces. + +@item +Justin Sheehy---the @acronym{FAQ} maintainer. + +@item +Erik Naggum---help, ideas, support, code and stuff. + +@item +Wes Hardaker---@file{gnus-picon.el} and the manual section on +@dfn{picons} (@pxref{Picons}). + +@item +Kim-Minh Kaplan---further work on the picon code. + +@item +Brad Miller---@file{gnus-gl.el} and the GroupLens manual section +(@pxref{GroupLens}). + +@item +Sudish Joseph---innumerable bug fixes. + +@item +Ilja Weis---@file{gnus-topic.el}. + +@item +Steven L. Baur---lots and lots and lots of bugs detections and fixes. + +@item +Vladimir Alexiev---the refcard and reference booklets. + +@item +Felix Lee & Jamie Zawinski---I stole some pieces from the XGnus +distribution by Felix Lee and JWZ. + +@item +Scott Byer---@file{nnfolder.el} enhancements & rewrite. + +@item +Peter Mutsaers---orphan article scoring code. + +@item +Ken Raeburn---POP mail support. + +@item +Hallvard B Furuseth---various bits and pieces, especially dealing with +.newsrc files. + +@item +Brian Edmonds---@file{gnus-bbdb.el}. + +@item +David Moore---rewrite of @file{nnvirtual.el} and many other things. + +@item +Kevin Davidson---came up with the name @dfn{ding}, so blame him. + +@item +François Pinard---many, many interesting and thorough bug reports, as +well as autoconf support. + +@end itemize + +This manual was proof-read by Adrian Aichner, with Ricardo Nassif, Mark +Borges, and Jost Krieger proof-reading parts of the manual. + +The following people have contributed many patches and suggestions: + +Christopher Davis, +Andrew Eskilsson, +Kai Grossjohann, +Kevin Greiner, +Jesper Harder, +Paul Jarc, +Simon Josefsson, +David Kågedal, +Richard Pieri, +Fabrice Popineau, +Daniel Quinlan, +Michael Shields, +Reiner Steib, +Jason L. Tibbitts, III, +Jack Vinson, +Katsumi Yamaoka, @c Yamaoka +and +Teodor Zlatanov. + +Also thanks to the following for patches and stuff: + +Jari Aalto, +Adrian Aichner, +Vladimir Alexiev, +Russ Allbery, +Peter Arius, +Matt Armstrong, +Marc Auslander, +Miles Bader, +Alexei V. Barantsev, +Frank Bennett, +Robert Bihlmeyer, +Chris Bone, +Mark Borges, +Mark Boyns, +Lance A. Brown, +Rob Browning, +Kees de Bruin, +Martin Buchholz, +Joe Buehler, +Kevin Buhr, +Alastair Burt, +Joao Cachopo, +Zlatko Calusic, +Massimo Campostrini, +Castor, +David Charlap, +Dan Christensen, +Kevin Christian, +Jae-you Chung, @c ? +James H. Cloos, Jr., +Laura Conrad, +Michael R. Cook, +Glenn Coombs, +Andrew J. Cosgriff, +Neil Crellin, +Frank D. Cringle, +Geoffrey T. Dairiki, +Andre Deparade, +Ulrik Dickow, +Dave Disser, +Rui-Tao Dong, @c ? +Joev Dubach, +Michael Welsh Duggan, +Dave Edmondson, +Paul Eggert, +Mark W. Eichin, +Karl Eichwalder, +Enami Tsugutomo, @c Enami +Michael Ernst, +Luc Van Eycken, +Sam Falkner, +Nelson Jose dos Santos Ferreira, +Sigbjorn Finne, +Sven Fischer, +Paul Fisher, +Decklin Foster, +Gary D. Foster, +Paul Franklin, +Guy Geens, +Arne Georg Gleditsch, +David S. Goldberg, +Michelangelo Grigni, +Dale Hagglund, +D. Hall, +Magnus Hammerin, +Kenichi Handa, @c Handa +Raja R. Harinath, +Yoshiki Hayashi, @c Hayashi +P. E. Jareth Hein, +Hisashige Kenji, @c Hisashige +Scott Hofmann, +Marc Horowitz, +Gunnar Horrigmo, +Richard Hoskins, +Brad Howes, +Miguel de Icaza, +François Felix Ingrand, +Tatsuya Ichikawa, @c Ichikawa +Ishikawa Ichiro, @c Ishikawa +Lee Iverson, +Iwamuro Motonori, @c Iwamuro +Rajappa Iyer, +Andreas Jaeger, +Adam P. Jenkins, +Randell Jesup, +Fred Johansen, +Gareth Jones, +Greg Klanderman, +Karl Kleinpaste, +Michael Klingbeil, +Peter Skov Knudsen, +Shuhei Kobayashi, @c Kobayashi +Petr Konecny, +Koseki Yoshinori, @c Koseki +Thor Kristoffersen, +Jens Lautenbacher, +Martin Larose, +Seokchan Lee, @c Lee +Joerg Lenneis, +Carsten Leonhardt, +James LewisMoss, +Christian Limpach, +Markus Linnala, +Dave Love, +Mike McEwan, +Tonny Madsen, +Shlomo Mahlab, +Nat Makarevitch, +Istvan Marko, +David Martin, +Jason R. Mastaler, +Gordon Matzigkeit, +Timo Metzemakers, +Richard Mlynarik, +Lantz Moore, +Morioka Tomohiko, @c Morioka +Erik Toubro Nielsen, +Hrvoje Niksic, +Andy Norman, +Fred Oberhauser, +C. R. Oldham, +Alexandre Oliva, +Ken Olstad, +Masaharu Onishi, @c Onishi +Hideki Ono, @c Ono +Ettore Perazzoli, +William Perry, +Stephen Peters, +Jens-Ulrik Holger Petersen, +Ulrich Pfeifer, +Matt Pharr, +Andy Piper, +John McClary Prevost, +Bill Pringlemeir, +Mike Pullen, +Jim Radford, +Colin Rafferty, +Lasse Rasinen, +Lars Balker Rasmussen, +Joe Reiss, +Renaud Rioboo, +Roland B. Roberts, +Bart Robinson, +Christian von Roques, +Markus Rost, +Jason Rumney, +Wolfgang Rupprecht, +Jay Sachs, +Dewey M. Sasser, +Conrad Sauerwald, +Loren Schall, +Dan Schmidt, +Ralph Schleicher, +Philippe Schnoebelen, +Andreas Schwab, +Randal L. Schwartz, +Danny Siu, +Matt Simmons, +Paul D. Smith, +Jeff Sparkes, +Toby Speight, +Michael Sperber, +Darren Stalder, +Richard Stallman, +Greg Stark, +Sam Steingold, +Paul Stevenson, +Jonas Steverud, +Paul Stodghill, +Kiyokazu Suto, @c Suto +Kurt Swanson, +Samuel Tardieu, +Teddy, +Chuck Thompson, +Tozawa Akihiko, @c Tozawa +Philippe Troin, +James Troup, +Trung Tran-Duc, +Jack Twilley, +Aaron M. Ucko, +Aki Vehtari, +Didier Verna, +Vladimir Volovich, +Jan Vroonhof, +Stefan Waldherr, +Pete Ware, +Barry A. Warsaw, +Christoph Wedler, +Joe Wells, +Lee Willis, +and +Lloyd Zusman. + + +For a full overview of what each person has done, the ChangeLogs +included in the Gnus alpha distributions should give ample reading +(550kB and counting). + +Apologies to everybody that I've forgotten, of which there are many, I'm +sure. + +Gee, that's quite a list of people. I guess that must mean that there +actually are people who are using Gnus. Who'd'a thunk it! + + +@node New Features +@subsection New Features +@cindex new features + +@menu +* ding Gnus:: New things in Gnus 5.0/5.1, the first new Gnus. +* September Gnus:: The Thing Formally Known As Gnus 5.2/5.3. +* Red Gnus:: Third time best---Gnus 5.4/5.5. +* Quassia Gnus:: Two times two is four, or Gnus 5.6/5.7. +* Pterodactyl Gnus:: Pentad also starts with P, AKA Gnus 5.8/5.9. +* Oort Gnus:: It's big. It's far out. Gnus 5.10/5.11. +@end menu + +These lists are, of course, just @emph{short} overviews of the +@emph{most} important new features. No, really. There are tons more. +Yes, we have feeping creaturism in full effect. + +@node ding Gnus +@subsubsection (ding) Gnus + +New features in Gnus 5.0/5.1: + +@itemize @bullet + +@item +The look of all buffers can be changed by setting format-like variables +(@pxref{Group Buffer Format} and @pxref{Summary Buffer Format}). + +@item +Local spool and several @acronym{NNTP} servers can be used at once +(@pxref{Select Methods}). + +@item +You can combine groups into virtual groups (@pxref{Virtual Groups}). + +@item +You can read a number of different mail formats (@pxref{Getting Mail}). +All the mail back ends implement a convenient mail expiry scheme +(@pxref{Expiring Mail}). + +@item +Gnus can use various strategies for gathering threads that have lost +their roots (thereby gathering loose sub-threads into one thread) or it +can go back and retrieve enough headers to build a complete thread +(@pxref{Customizing Threading}). + +@item +Killed groups can be displayed in the group buffer, and you can read +them as well (@pxref{Listing Groups}). + +@item +Gnus can do partial group updates---you do not have to retrieve the +entire active file just to check for new articles in a few groups +(@pxref{The Active File}). + +@item +Gnus implements a sliding scale of subscribedness to groups +(@pxref{Group Levels}). + +@item +You can score articles according to any number of criteria +(@pxref{Scoring}). You can even get Gnus to find out how to score +articles for you (@pxref{Adaptive Scoring}). + +@item +Gnus maintains a dribble buffer that is auto-saved the normal Emacs +manner, so it should be difficult to lose much data on what you have +read if your machine should go down (@pxref{Auto Save}). + +@item +Gnus now has its own startup file (@file{~/.gnus.el}) to avoid +cluttering up the @file{.emacs} file. + +@item +You can set the process mark on both groups and articles and perform +operations on all the marked items (@pxref{Process/Prefix}). + +@item +You can grep through a subset of groups and create a group from the +results (@pxref{Kibozed Groups}). + +@item +You can list subsets of groups according to, well, anything +(@pxref{Listing Groups}). + +@item +You can browse foreign servers and subscribe to groups from those +servers (@pxref{Browse Foreign Server}). + +@item +Gnus can fetch articles, asynchronously, on a second connection to the +server (@pxref{Asynchronous Fetching}). + +@item +You can cache articles locally (@pxref{Article Caching}). + +@item +The uudecode functions have been expanded and generalized +(@pxref{Decoding Articles}). + +@item +You can still post uuencoded articles, which was a little-known feature +of @sc{gnus}' past (@pxref{Uuencoding and Posting}). + +@item +Fetching parents (and other articles) now actually works without +glitches (@pxref{Finding the Parent}). + +@item +Gnus can fetch @acronym{FAQ}s and group descriptions (@pxref{Group Information}). + +@item +Digests (and other files) can be used as the basis for groups +(@pxref{Document Groups}). + +@item +Articles can be highlighted and customized (@pxref{Customizing +Articles}). + +@item +URLs and other external references can be buttonized (@pxref{Article +Buttons}). + +@item +You can do lots of strange stuff with the Gnus window & frame +configuration (@pxref{Window Layout}). + +@item +You can click on buttons instead of using the keyboard +(@pxref{Buttons}). + +@end itemize + + +@node September Gnus +@subsubsection September Gnus + +@iftex +@iflatex +\gnusfig{-28cm}{0cm}{\epsfig{figure=ps/september,height=20cm}} +@end iflatex +@end iftex + +New features in Gnus 5.2/5.3: + +@itemize @bullet + +@item +A new message composition mode is used. All old customization variables +for @code{mail-mode}, @code{rnews-reply-mode} and @code{gnus-msg} are +now obsolete. + +@item +Gnus is now able to generate @dfn{sparse} threads---threads where +missing articles are represented by empty nodes (@pxref{Customizing +Threading}). + +@lisp +(setq gnus-build-sparse-threads 'some) +@end lisp + +@item +Outgoing articles are stored on a special archive server +(@pxref{Archived Messages}). + +@item +Partial thread regeneration now happens when articles are +referred. + +@item +Gnus can make use of GroupLens predictions (@pxref{GroupLens}). + +@item +Picons (personal icons) can be displayed under XEmacs (@pxref{Picons}). + +@item +A @code{trn}-like tree buffer can be displayed (@pxref{Tree Display}). + +@lisp +(setq gnus-use-trees t) +@end lisp + +@item +An @code{nn}-like pick-and-read minor mode is available for the summary +buffers (@pxref{Pick and Read}). + +@lisp +(add-hook 'gnus-summary-mode-hook 'gnus-pick-mode) +@end lisp + +@item +In binary groups you can use a special binary minor mode (@pxref{Binary +Groups}). + +@item +Groups can be grouped in a folding topic hierarchy (@pxref{Group +Topics}). + +@lisp +(add-hook 'gnus-group-mode-hook 'gnus-topic-mode) +@end lisp + +@item +Gnus can re-send and bounce mail (@pxref{Summary Mail Commands}). + +@item +Groups can now have a score, and bubbling based on entry frequency +is possible (@pxref{Group Score}). + +@lisp +(add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group) +@end lisp + +@item +Groups can be process-marked, and commands can be performed on +groups of groups (@pxref{Marking Groups}). + +@item +Caching is possible in virtual groups. + +@item +@code{nndoc} now understands all kinds of digests, mail boxes, rnews +news batches, ClariNet briefs collections, and just about everything +else (@pxref{Document Groups}). + +@item +Gnus has a new back end (@code{nnsoup}) to create/read SOUP packets +(@pxref{SOUP}). + +@item +The Gnus cache is much faster. + +@item +Groups can be sorted according to many criteria (@pxref{Sorting +Groups}). + +@item +New group parameters have been introduced to set list-addresses and +expiry times (@pxref{Group Parameters}). + +@item +All formatting specs allow specifying faces to be used +(@pxref{Formatting Fonts}). + +@item +There are several more commands for setting/removing/acting on process +marked articles on the @kbd{M P} submap (@pxref{Setting Process Marks}). + +@item +The summary buffer can be limited to show parts of the available +articles based on a wide range of criteria. These commands have been +bound to keys on the @kbd{/} submap (@pxref{Limiting}). + +@item +Articles can be made persistent with the @kbd{*} command +(@pxref{Persistent Articles}). + +@item +All functions for hiding article elements are now toggles. + +@item +Article headers can be buttonized (@pxref{Article Washing}). + +@item +All mail back ends support fetching articles by @code{Message-ID}. + +@item +Duplicate mail can now be treated properly (@pxref{Duplicates}). + +@item +All summary mode commands are available directly from the article +buffer (@pxref{Article Keymap}). + +@item +Frames can be part of @code{gnus-buffer-configuration} (@pxref{Window +Layout}). + +@item +Mail can be re-scanned by a daemonic process (@pxref{Daemons}). +@iftex +@iflatex +\marginpar[\mbox{}\hfill\epsfig{figure=ps/fseptember,height=5cm}]{\epsfig{figure=ps/fseptember,height=5cm}} +@end iflatex +@end iftex + +@item +Gnus can make use of NoCeM files to weed out spam (@pxref{NoCeM}). + +@lisp +(setq gnus-use-nocem t) +@end lisp + +@item +Groups can be made permanently visible (@pxref{Listing Groups}). + +@lisp +(setq gnus-permanently-visible-groups "^nnml:") +@end lisp + +@item +Many new hooks have been introduced to make customizing easier. + +@item +Gnus respects the @code{Mail-Copies-To} header. + +@item +Threads can be gathered by looking at the @code{References} header +(@pxref{Customizing Threading}). + +@lisp +(setq gnus-summary-thread-gathering-function + 'gnus-gather-threads-by-references) +@end lisp + +@item +Read articles can be stored in a special backlog buffer to avoid +refetching (@pxref{Article Backlog}). + +@lisp +(setq gnus-keep-backlog 50) +@end lisp + +@item +A clean copy of the current article is always stored in a separate +buffer to allow easier treatment. + +@item +Gnus can suggest where to save articles (@pxref{Saving Articles}). + +@item +Gnus doesn't have to do as much prompting when saving (@pxref{Saving +Articles}). + +@lisp +(setq gnus-prompt-before-saving t) +@end lisp + +@item +@code{gnus-uu} can view decoded files asynchronously while fetching +articles (@pxref{Other Decode Variables}). + +@lisp +(setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view) +@end lisp + +@item +Filling in the article buffer now works properly on cited text +(@pxref{Article Washing}). + +@item +Hiding cited text adds buttons to toggle hiding, and how much +cited text to hide is now customizable (@pxref{Article Hiding}). + +@lisp +(setq gnus-cited-lines-visible 2) +@end lisp + +@item +Boring headers can be hidden (@pxref{Article Hiding}). + +@item +Default scoring values can now be set from the menu bar. + +@item +Further syntax checking of outgoing articles have been added. + +@end itemize + + +@node Red Gnus +@subsubsection Red Gnus + +New features in Gnus 5.4/5.5: + +@iftex +@iflatex +\gnusfig{-5.5cm}{-4cm}{\epsfig{figure=ps/red,height=20cm}} +@end iflatex +@end iftex + +@itemize @bullet + +@item +@file{nntp.el} has been totally rewritten in an asynchronous fashion. + +@item +Article prefetching functionality has been moved up into +Gnus (@pxref{Asynchronous Fetching}). + +@item +Scoring can now be performed with logical operators like @code{and}, +@code{or}, @code{not}, and parent redirection (@pxref{Advanced +Scoring}). + +@item +Article washing status can be displayed in the +article mode line (@pxref{Misc Article}). + +@item +@file{gnus.el} has been split into many smaller files. + +@item +Suppression of duplicate articles based on Message-ID can be done +(@pxref{Duplicate Suppression}). + +@lisp +(setq gnus-suppress-duplicates t) +@end lisp + +@item +New variables for specifying what score and adapt files are to be +considered home score and adapt files (@pxref{Home Score File}) have +been added. + +@item +@code{nndoc} was rewritten to be easily extendable (@pxref{Document +Server Internals}). + +@item +Groups can inherit group parameters from parent topics (@pxref{Topic +Parameters}). + +@item +Article editing has been revamped and is now actually usable. + +@item +Signatures can be recognized in more intelligent fashions +(@pxref{Article Signature}). + +@item +Summary pick mode has been made to look more @code{nn}-like. Line +numbers are displayed and the @kbd{.} command can be used to pick +articles (@code{Pick and Read}). + +@item +Commands for moving the @file{.newsrc.eld} from one server to +another have been added (@pxref{Changing Servers}). + +@item +There's a way now to specify that ``uninteresting'' fields be suppressed +when generating lines in buffers (@pxref{Advanced Formatting}). + +@item +Several commands in the group buffer can be undone with @kbd{C-M-_} +(@pxref{Undo}). + +@item +Scoring can be done on words using the new score type @code{w} +(@pxref{Score File Format}). + +@item +Adaptive scoring can be done on a Subject word-by-word basis +(@pxref{Adaptive Scoring}). + +@lisp +(setq gnus-use-adaptive-scoring '(word)) +@end lisp + +@item +Scores can be decayed (@pxref{Score Decays}). + +@lisp +(setq gnus-decay-scores t) +@end lisp + +@item +Scoring can be performed using a regexp on the Date header. The Date is +normalized to compact ISO 8601 format first (@pxref{Score File Format}). + +@item +A new command has been added to remove all data on articles from +the native server (@pxref{Changing Servers}). + +@item +A new command for reading collections of documents +(@code{nndoc} with @code{nnvirtual} on top) has been added---@kbd{C-M-d} +(@pxref{Really Various Summary Commands}). + +@item +Process mark sets can be pushed and popped (@pxref{Setting Process +Marks}). + +@item +A new mail-to-news back end makes it possible to post even when the @acronym{NNTP} +server doesn't allow posting (@pxref{Mail-To-News Gateways}). + +@item +A new back end for reading searches from Web search engines +(@dfn{DejaNews}, @dfn{Alta Vista}, @dfn{InReference}) has been added +(@pxref{Web Searches}). + +@item +Groups inside topics can now be sorted using the standard sorting +functions, and each topic can be sorted independently (@pxref{Topic +Sorting}). + +@item +Subsets of the groups can be sorted independently (@code{Sorting +Groups}). + +@item +Cached articles can be pulled into the groups (@pxref{Summary Generation +Commands}). +@iftex +@iflatex +\marginpar[\mbox{}\hfill\epsfig{figure=ps/fred,width=3cm}]{\epsfig{figure=ps/fred,width=3cm}} +@end iflatex +@end iftex + +@item +Score files are now applied in a more reliable order (@pxref{Score +Variables}). + +@item +Reports on where mail messages end up can be generated (@pxref{Splitting +Mail}). + +@item +More hooks and functions have been added to remove junk from incoming +mail before saving the mail (@pxref{Washing Mail}). + +@item +Emphasized text can be properly fontisized: + +@end itemize + + +@node Quassia Gnus +@subsubsection Quassia Gnus + +New features in Gnus 5.6: + +@itemize @bullet + +@item +New functionality for using Gnus as an offline newsreader has been +added. A plethora of new commands and modes have been added. +@xref{Gnus Unplugged}, for the full story. + +@item +The @code{nndraft} back end has returned, but works differently than +before. All Message buffers are now also articles in the @code{nndraft} +group, which is created automatically. + +@item +@code{gnus-alter-header-function} can now be used to alter header +values. + +@item +@code{gnus-summary-goto-article} now accept Message-ID's. + +@item +A new Message command for deleting text in the body of a message +outside the region: @kbd{C-c C-v}. + +@item +You can now post to component group in @code{nnvirtual} groups with +@kbd{C-u C-c C-c}. + +@item + @code{nntp-rlogin-program}---new variable to ease customization. + +@item +@code{C-u C-c C-c} in @code{gnus-article-edit-mode} will now inhibit +re-highlighting of the article buffer. + +@item +New element in @code{gnus-boring-article-headers}---@code{long-to}. + +@item +@kbd{M-i} symbolic prefix command. @xref{Symbolic Prefixes}, for +details. + +@item +@kbd{L} and @kbd{I} in the summary buffer now take the symbolic prefix +@kbd{a} to add the score rule to the @file{all.SCORE} file. + +@item +@code{gnus-simplify-subject-functions} variable to allow greater +control over simplification. + +@item +@kbd{A T}---new command for fetching the current thread. + +@item +@kbd{/ T}---new command for including the current thread in the +limit. + +@item +@kbd{M-RET} is a new Message command for breaking cited text. + +@item +@samp{\\1}-expressions are now valid in @code{nnmail-split-methods}. + +@item +The @code{custom-face-lookup} function has been removed. +If you used this function in your initialization files, you must +rewrite them to use @code{face-spec-set} instead. + +@item +Canceling now uses the current select method. Symbolic prefix +@kbd{a} forces normal posting method. + +@item +New command to translate M******** sm*rtq**t*s into proper +text---@kbd{W d}. + +@item +For easier debugging of @code{nntp}, you can set +@code{nntp-record-commands} to a non-@code{nil} value. + +@item +@code{nntp} now uses @file{~/.authinfo}, a @file{.netrc}-like file, for +controlling where and how to send @sc{authinfo} to @acronym{NNTP} servers. + +@item +A command for editing group parameters from the summary buffer +has been added. + +@item +A history of where mails have been split is available. + +@item +A new article date command has been added---@code{article-date-iso8601}. + +@item +Subjects can be simplified when threading by setting +@code{gnus-score-thread-simplify}. + +@item +A new function for citing in Message has been +added---@code{message-cite-original-without-signature}. + +@item +@code{article-strip-all-blank-lines}---new article command. + +@item +A new Message command to kill to the end of the article has +been added. + +@item +A minimum adaptive score can be specified by using the +@code{gnus-adaptive-word-minimum} variable. + +@item +The ``lapsed date'' article header can be kept continually +updated by the @code{gnus-start-date-timer} command. + +@item +Web listserv archives can be read with the @code{nnlistserv} back end. + +@item +Old dejanews archives can now be read by @code{nnweb}. + +@end itemize + +@node Pterodactyl Gnus +@subsubsection Pterodactyl Gnus + +New features in Gnus 5.8: + +@itemize @bullet + +@item +The mail-fetching functions have changed. See the manual for the +many details. In particular, all procmail fetching variables are gone. + +If you used procmail like in + +@lisp +(setq nnmail-use-procmail t) +(setq nnmail-spool-file 'procmail) +(setq nnmail-procmail-directory "~/mail/incoming/") +(setq nnmail-procmail-suffix "\\.in") +@end lisp + +this now has changed to + +@lisp +(setq mail-sources + '((directory :path "~/mail/incoming/" + :suffix ".in"))) +@end lisp + +@xref{Mail Source Specifiers}. + +@item +Gnus is now a @acronym{MIME}-capable reader. This affects many parts of +Gnus, and adds a slew of new commands. See the manual for details. + +@item +Gnus has also been multilingualized. This also affects too +many parts of Gnus to summarize here, and adds many new variables. + +@item +@code{gnus-auto-select-first} can now be a function to be +called to position point. + +@item +The user can now decide which extra headers should be included in +summary buffers and @acronym{NOV} files. + +@item +@code{gnus-article-display-hook} has been removed. Instead, a number +of variables starting with @code{gnus-treat-} have been added. + +@item +The Gnus posting styles have been redone again and now works in a +subtly different manner. + +@item +New web-based back ends have been added: @code{nnslashdot}, +@code{nnwarchive} and @code{nnultimate}. nnweb has been revamped, +again, to keep up with ever-changing layouts. + +@item +Gnus can now read @acronym{IMAP} mail via @code{nnimap}. + +@end itemize + +@node Oort Gnus +@subsubsection Oort Gnus +@cindex Oort Gnus + +New features in Gnus 5.10: + +@itemize @bullet + +@item Installation changes +@c *********************** + +@itemize @bullet +@item +Upgrading from previous (stable) version if you have used Oort. + +If you have tried Oort (the unstable Gnus branch leading to this +release) but went back to a stable version, be careful when upgrading to +this version. In particular, you will probably want to remove all +@file{.marks} (nnml) and @file{.mrk} (nnfolder) files, so that flags are +read from your @file{.newsrc.eld} instead of from the +@file{.marks}/@file{.mrk} file where this release store flags. See a +later entry for more information about marks. Note that downgrading +isn't save in general. + +@item +Lisp files are now installed in @file{.../site-lisp/gnus/} by default. +It defaulted to @file{.../site-lisp/} formerly. In addition to this, +the new installer issues a warning if other Gnus installations which +will shadow the latest one are detected. You can then remove those +shadows manually or remove them using @code{make +remove-installed-shadows}. + +@item +New @file{make.bat} for compiling and installing Gnus under MS Windows + +Use @file{make.bat} if you want to install Gnus under MS Windows, the +first argument to the batch-program should be the directory where +@file{xemacs.exe} respectively @file{emacs.exe} is located, if you want +to install Gnus after compiling it, give @file{make.bat} @code{/copy} as +the second parameter. + +@file{make.bat} has been rewritten from scratch, it now features +automatic recognition of XEmacs and GNU Emacs, generates +@file{gnus-load.el}, checks if errors occur while compilation and +generation of info files and reports them at the end of the build +process. It now uses @code{makeinfo} if it is available and falls +back to @file{infohack.el} otherwise. @file{make.bat} should now +install all files which are necessary to run Gnus and be generally a +complete replacement for the @code{configure; make; make install} +cycle used under Unix systems. + +The new @file{make.bat} makes @file{make-x.bat} and @file{xemacs.mak} +superfluous, so they have been removed. + +@item +@file{~/News/overview/} not used. + +As a result of the following change, the @file{~/News/overview/} +directory is not used any more. You can safely delete the entire +hierarchy. + +@c FIXME: `gnus-load' is mentioned in README, which is not included in +@c CVS. We should find a better place for this item. +@item +@code{(require 'gnus-load)} + +If you use a stand-alone Gnus distribution, you'd better add +@code{(require 'gnus-load)} into your @file{~/.emacs} after adding the Gnus +lisp directory into load-path. + +File @file{gnus-load.el} contains autoload commands, functions and variables, +some of which may not be included in distributions of Emacsen. + +@end itemize + +@item New packages and libraries within Gnus +@c ***************************************** + +@itemize @bullet + +@item +The revised Gnus @acronym{FAQ} is included in the manual, +@xref{Frequently Asked Questions}. + +@item +@acronym{TLS} wrapper shipped with Gnus + +@acronym{TLS}/@acronym{SSL} is now supported in @acronym{IMAP} and +@acronym{NNTP} via @file{tls.el} and GNUTLS. The old +@acronym{TLS}/@acronym{SSL} support via (external third party) +@file{ssl.el} and OpenSSL still works. + +@item +Improved anti-spam features. + +Gnus is now able to take out spam from your mail and news streams +using a wide variety of programs and filter rules. Among the supported +methods are RBL blocklists, bogofilter and white/blacklists. Hooks +for easy use of external packages such as SpamAssassin and Hashcash +are also new. @xref{Thwarting Email Spam}. +@c FIXME: @xref{Spam Package}?. Should this be under Misc? + +@item +Gnus supports server-side mail filtering using Sieve. + +Sieve rules can be added as Group Parameters for groups, and the +complete Sieve script is generated using @kbd{D g} from the Group +buffer, and then uploaded to the server using @kbd{C-c C-l} in the +generated Sieve buffer. @xref{Sieve Commands}, and the new Sieve +manual @ref{Top, , Top, sieve, Emacs Sieve}. + +@end itemize + +@item Changes in group mode +@c ************************ + +@itemize @bullet + +@item +@code{gnus-group-read-ephemeral-group} can be called interactively, +using @kbd{G M}. + +@item +Retrieval of charters and control messages + +There are new commands for fetching newsgroup charters (@kbd{H c}) and +control messages (@kbd{H C}). + +@item +The new variable @code{gnus-parameters} can be used to set group parameters. + +Earlier this was done only via @kbd{G p} (or @kbd{G c}), which stored +the parameters in @file{~/.newsrc.eld}, but via this variable you can +enjoy the powers of customize, and simplified backups since you set the +variable in @file{~/.gnus.el} instead of @file{~/.newsrc.eld}. The +variable maps regular expressions matching group names to group +parameters, a'la: +@lisp +(setq gnus-parameters + '(("mail\\..*" + (gnus-show-threads nil) + (gnus-use-scoring nil)) + ("^nnimap:\\(foo.bar\\)$" + (to-group . "\\1")))) +@end lisp + +@item +Unread count correct in nnimap groups. + +The estimated number of unread articles in the group buffer should now +be correct for nnimap groups. This is achieved by calling +@code{nnimap-fixup-unread-after-getting-new-news} from the +@code{gnus-setup-news-hook} (called on startup) and +@code{gnus-after-getting-new-news-hook}. (called after getting new +mail). If you have modified those variables from the default, you may +want to add @code{nnimap-fixup-unread-after-getting-new-news} again. If +you were happy with the estimate and want to save some (minimal) time +when getting new mail, remove the function. + +@item +Group names are treated as UTF-8 by default. + +This is supposedly what USEFOR wanted to migrate to. See +@code{gnus-group-name-charset-group-alist} and +@code{gnus-group-name-charset-method-alist} for customization. + +@item +@code{gnus-group-charset-alist} and +@code{gnus-group-ignored-charsets-alist}. + +The regexps in these variables are compared with full group names +instead of real group names in 5.8. Users who customize these +variables should change those regexps accordingly. For example: +@lisp +("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr) +@end lisp + +@end itemize + +@item Changes in summary and article mode +@c ************************************** + +@itemize @bullet + +@item +@kbd{F} (@code{gnus-article-followup-with-original}) and @kbd{R} +(@code{gnus-article-reply-with-original}) only yank the text in the +region if the region is active. + +@item +In draft groups, @kbd{e} is now bound to @code{gnus-draft-edit-message}. +Use @kbd{B w} for @code{gnus-summary-edit-article} instead. + +@item +Article Buttons + +More buttons for URLs, mail addresses, Message-IDs, Info links, man +pages and Emacs or Gnus related references. @xref{Article Buttons}. The +variables @code{gnus-button-@var{*}-level} can be used to control the +appearance of all article buttons. @xref{Article Button Levels}. + +@item +Single-part yenc encoded attachments can be decoded. + +@item +Picons + +The picons code has been reimplemented to work in GNU Emacs---some of +the previous options have been removed or renamed. + +Picons are small ``personal icons'' representing users, domain and +newsgroups, which can be displayed in the Article buffer. +@xref{Picons}. + +@item +If the new option @code{gnus-treat-body-boundary} is non-@code{nil}, a +boundary line is drawn at the end of the headers. + +@item +Signed article headers (X-PGP-Sig) can be verified with @kbd{W p}. + +@item +The Summary Buffer uses an arrow in the fringe to indicate the current +article. Use @code{(setq gnus-summary-display-arrow nil)} to disable it. + +@item +Warn about email replies to news + +Do you often find yourself replying to news by email by mistake? Then +the new option @code{gnus-confirm-mail-reply-to-news} is just the thing for +you. + +@item +If the new option @code{gnus-summary-display-while-building} is +non-@code{nil}, the summary buffer is shown and updated as it's being +built. + +@item +The new @code{recent} mark @samp{.} indicates newly arrived messages (as +opposed to old but unread messages). + +@item +Gnus supports RFC 2369 mailing list headers, and adds a number of +related commands in mailing list groups. @xref{Mailing List}. + +@item +The Date header can be displayed in a format that can be read aloud +in English. @xref{Article Date}. + +@item +diffs are automatically highlighted in groups matching +@code{mm-uu-diff-groups-regexp} + +@item +Better handling of Microsoft citation styles + +Gnus now tries to recognize the mangled header block that some Microsoft +mailers use to indicate that the rest of the message is a citation, even +though it is not quoted in any way. The variable +@code{gnus-cite-unsightly-citation-regexp} matches the start of these +citations. + +The new command @kbd{W Y f} +(@code{gnus-article-outlook-deuglify-article}) allows deuglifying broken +Outlook (Express) articles. + +@item +@code{gnus-article-skip-boring} + +If you set @code{gnus-article-skip-boring} to @code{t}, then Gnus will +not scroll down to show you a page that contains only boring text, +which by default means cited text and signature. You can customize +what is skippable using @code{gnus-article-boring-faces}. + +This feature is especially useful if you read many articles that +consist of a little new content at the top with a long, untrimmed +message cited below. + +@item +Smileys (@samp{:-)}, @samp{;-)} etc) are now displayed graphically in +Emacs too. + +Put @code{(setq gnus-treat-display-smileys nil)} in @file{~/.gnus.el} to +disable it. + +@item +Face headers handling. @xref{Face}. + +@item +In the summary buffer, the new command @kbd{/ N} inserts new messages +and @kbd{/ o} inserts old messages. + +@item +Gnus decodes morse encoded messages if you press @kbd{W m}. + +@item +@code{gnus-summary-line-format} + +The default value changed to @samp{%U%R%z%I%(%[%4L: %-23,23f%]%) +%s\n}. Moreover @code{gnus-extra-headers}, +@code{nnmail-extra-headers} and @code{gnus-ignored-from-addresses} +changed their default so that the users name will be replaced by the +recipient's name or the group name posting to for @acronym{NNTP} +groups. + +@item +Deleting of attachments. + +The command @code{gnus-mime-save-part-and-strip} (bound to @kbd{C-o} +on @acronym{MIME} buttons) saves a part and replaces the part with an +external one. @code{gnus-mime-delete-part} (bound to @kbd{d} on +@acronym{MIME} buttons) removes a part. It works only on back ends +that support editing. + +@item +@code{gnus-default-charset} + +The default value is determined from the +@code{current-language-environment} variable, instead of +@code{iso-8859-1}. Also the @samp{.*} item in +@code{gnus-group-charset-alist} is removed. + +@item +Printing capabilities are enhanced. + +Gnus supports Muttprint natively with @kbd{O P} from the Summary and +Article buffers. Also, each individual @acronym{MIME} part can be +printed using @kbd{p} on the @acronym{MIME} button. + +@item +Extended format specs. + +Format spec @samp{%&user-date;} is added into +@code{gnus-summary-line-format-alist}. Also, user defined extended +format specs are supported. The extended format specs look like +@samp{%u&foo;}, which invokes function +@code{gnus-user-format-function-@var{foo}}. Because @samp{&} is used as the +escape character, old user defined format @samp{%u&} is no longer supported. + +@item +@kbd{/ *} (@code{gnus-summary-limit-include-cached}) is rewritten. +@c FIXME: Was this a user-visible change? + +It was aliased to @kbd{Y c} +(@code{gnus-summary-insert-cached-articles}). The new function filters +out other articles. + +@item +Some limiting commands accept a @kbd{C-u} prefix to negate the match. + +If @kbd{C-u} is used on subject, author or extra headers, i.e., @kbd{/ +s}, @kbd{/ a}, and @kbd{/ x} +(@code{gnus-summary-limit-to-@{subject,author,extra@}}) respectively, the +result will be to display all articles that do not match the expression. + +@item +Gnus inlines external parts (message/external). + +@end itemize + +@item Changes in Message mode and related Gnus features +@c **************************************************** + +@itemize @bullet + +@item +Delayed articles + +You can delay the sending of a message with @kbd{C-c C-j} in the Message +buffer. The messages are delivered at specified time. This is useful +for sending yourself reminders. @xref{Delayed Articles}. + +@item +If the new option @code{nnml-use-compressed-files} is non-@code{nil}, +the nnml back end allows compressed message files. + +@item +The new option @code{gnus-gcc-mark-as-read} automatically marks +Gcc articles as read. + +@item +Externalizing of attachments + +If @code{gnus-gcc-externalize-attachments} or +@code{message-fcc-externalize-attachments} is non-@code{nil}, attach +local files as external parts. + +@item +The envelope sender address can be customized when using Sendmail. +@xref{Mail Variables, Mail Variables,, message, Message Manual}. + +@item +Gnus no longer generate the Sender: header automatically. + +Earlier it was generated when the user configurable email address was +different from the Gnus guessed default user address. As the guessing +algorithm is rarely correct these days, and (more controversially) the +only use of the Sender: header was to check if you are entitled to +cancel/supersede news (which is now solved by Cancel Locks instead, +see another entry), generation of the header has been disabled by +default. See the variables @code{message-required-headers}, +@code{message-required-news-headers}, and +@code{message-required-mail-headers}. + +@item +Features from third party @file{message-utils.el} added to @file{message.el}. + +Message now asks if you wish to remove @samp{(was: )} from +subject lines (see @code{message-subject-trailing-was-query}). @kbd{C-c +M-m} and @kbd{C-c M-f} inserts markers indicating included text. +@kbd{C-c C-f a} adds a X-No-Archive: header. @kbd{C-c C-f x} inserts +appropriate headers and a note in the body for cross-postings and +followups (see the variables @code{message-cross-post-@var{*}}). + +@item +References and X-Draft-From headers are no longer generated when you +start composing messages and @code{message-generate-headers-first} is +@code{nil}. + +@item +Easy inclusion of X-Faces headers. @xref{X-Face}. + +@item +Group Carbon Copy (GCC) quoting + +To support groups that contains SPC and other weird characters, groups +are quoted before they are placed in the Gcc: header. This means +variables such as @code{gnus-message-archive-group} should no longer +contain quote characters to make groups containing SPC work. Also, if +you are using the string @samp{nnml:foo, nnml:bar} (indicating Gcc +into two groups) you must change it to return the list +@code{("nnml:foo" "nnml:bar")}, otherwise the Gcc: line will be quoted +incorrectly. Note that returning the string @samp{nnml:foo, nnml:bar} +was incorrect earlier, it just didn't generate any problems since it +was inserted directly. + +@item +@code{message-insinuate-rmail} + +Adding @code{(message-insinuate-rmail)} and @code{(setq +mail-user-agent 'gnus-user-agent)} in @file{.emacs} convinces Rmail to +compose, reply and forward messages in message-mode, where you can +enjoy the power of @acronym{MML}. + +@item +@code{message-minibuffer-local-map} + +The line below enables BBDB in resending a message: +@lisp +(define-key message-minibuffer-local-map [(tab)] + 'bbdb-complete-name) +@end lisp + +@item +@code{gnus-posting-styles} + +Add a new format of match like +@lisp +((header "to" "larsi.*org") + (Organization "Somewhere, Inc.")) +@end lisp +The old format like the lines below is obsolete, but still accepted. +@lisp +(header "to" "larsi.*org" + (Organization "Somewhere, Inc.")) +@end lisp + +@item +@code{message-ignored-news-headers} and @code{message-ignored-mail-headers} + +@samp{X-Draft-From} and @samp{X-Gnus-Agent-Meta-Information} have been +added into these two variables. If you customized those, perhaps you +need add those two headers too. + +@item +Gnus supports the ``format=flowed'' (RFC 2646) parameter. On +composing messages, it is enabled by @code{use-hard-newlines}. +Decoding format=flowed was present but not documented in earlier +versions. + +@item +The option @code{mm-fill-flowed} can be used to disable treatment of +``format=flowed'' messages. Also, flowed text is disabled when sending +inline PGP signed messages. @xref{Flowed text, , Flowed text, +emacs-mime, The Emacs MIME Manual}. (New in Gnus 5.10.7) +@c This entry is also present in the node "No Gnus". + +@item +Gnus supports the generation of RFC 2298 Disposition Notification requests. + +This is invoked with the @kbd{C-c M-n} key binding from message mode. + +@item +Message supports the Importance: (RFC 2156) header. + +In the message buffer, @kbd{C-c C-f C-i} or @kbd{C-c C-u} cycles through +the valid values. + +@item +Gnus supports Cancel Locks in News. + +This means a header @samp{Cancel-Lock} is inserted in news posting. It is +used to determine if you wrote an article or not (for canceling and +superseding). Gnus generates a random password string the first time +you post a message, and saves it in your @file{~/.emacs} using the Custom +system. While the variable is called @code{canlock-password}, it is not +security sensitive data. Publishing your canlock string on the web +will not allow anyone to be able to anything she could not already do. +The behavior can be changed by customizing @code{message-insert-canlock}. + +@item +Gnus supports @acronym{PGP} (RFC 1991/2440), @acronym{PGP/MIME} (RFC +2015/3156) and @acronym{S/MIME} (RFC 2630-2633). + +It needs an external @acronym{S/MIME} and OpenPGP implementation, but no +additional Lisp libraries. This add several menu items to the +Attachments menu, and @kbd{C-c RET} key bindings, when composing +messages. This also obsoletes @code{gnus-article-hide-pgp-hook}. + +@item +@acronym{MML} (Mime compose) prefix changed from @kbd{M-m} to @kbd{C-c +C-m}. + +This change was made to avoid conflict with the standard binding of +@code{back-to-indentation}, which is also useful in message mode. + +@item +The default for @code{message-forward-show-mml} changed to the symbol +@code{best}. + +The behavior for the @code{best} value is to show @acronym{MML} (i.e., +convert to @acronym{MIME}) when appropriate. @acronym{MML} will not be +used when forwarding signed or encrypted messages, as the conversion +invalidate the digital signature. + +@item +If @code{auto-compression-mode} is enabled, attachments are automatically +decompressed when activated. +@c FIXME: Does this affect article or message mode? + +@item +Support for non-@acronym{ASCII} domain names + +Message supports non-@acronym{ASCII} domain names in From:, To: and +Cc: and will query you whether to perform encoding when you try to +send a message. The variable @code{message-use-idna} controls this. +Gnus will also decode non-@acronym{ASCII} domain names in From:, To: +and Cc: when you view a message. The variable @code{gnus-use-idna} +controls this. + +@item You can now drag and drop attachments to the Message buffer. +See @code{mml-dnd-protocol-alist} and @code{mml-dnd-attach-options}. +@xref{MIME, ,MIME, message, Message Manual}. +@c New in 5.10.9 / 5.11 + +@end itemize + +@item Changes in back ends +@c *********************** + +@itemize @bullet +@item +Gnus can display RSS newsfeeds as a newsgroup. @xref{RSS}. + +@item +The nndoc back end now supports mailman digests and exim bounces. + +@item +Gnus supports Maildir groups. + +Gnus includes a new back end @file{nnmaildir.el}. @xref{Maildir}. + +@item +The nnml and nnfolder back ends store marks for each groups. + +This makes it possible to take backup of nnml/nnfolder servers/groups +separately of @file{~/.newsrc.eld}, while preserving marks. It also +makes it possible to share articles and marks between users (without +sharing the @file{~/.newsrc.eld} file) within e.g. a department. It +works by storing the marks stored in @file{~/.newsrc.eld} in a per-group +file @file{.marks} (for nnml) and @file{@var{groupname}.mrk} (for +nnfolder, named @var{groupname}). If the nnml/nnfolder is moved to +another machine, Gnus will automatically use the @file{.marks} or +@file{.mrk} file instead of the information in @file{~/.newsrc.eld}. +The new server variables @code{nnml-marks-is-evil} and +@code{nnfolder-marks-is-evil} can be used to disable this feature. + +@end itemize + +@item Appearance +@c ************* + +@itemize @bullet + +@item +The menu bar item (in Group and Summary buffer) named ``Misc'' has +been renamed to ``Gnus''. + +@item +The menu bar item (in Message mode) named ``@acronym{MML}'' has been +renamed to ``Attachments''. Note that this menu also contains security +related stuff, like signing and encryption (@pxref{Security, Security,, +message, Message Manual}). + +@item +The tool bars have been updated to use GNOME icons in Group, Summary and +Message mode. You can also customize the tool bars. This is a new +feature in Gnus 5.10.9. (Only for Emacs, not in XEmacs.) + +@item The tool bar icons are now (de)activated correctly +in the group buffer, see the variable @code{gnus-group-update-tool-bar}. +Its default value depends on your Emacs version. This is a new feature +in Gnus 5.10.9. +@end itemize + + +@item Miscellaneous changes +@c ************************ + +@itemize @bullet + +@item +@code{gnus-agent} + +The Gnus Agent has seen a major updated and is now enabled by default, +and all nntp and nnimap servers from @code{gnus-select-method} and +@code{gnus-secondary-select-method} are agentized by default. Earlier +only the server in @code{gnus-select-method} was agentized by the +default, and the agent was disabled by default. When the agent is +enabled, headers are now also retrieved from the Agent cache instead +of the back ends when possible. Earlier this only happened in the +unplugged state. You can enroll or remove servers with @kbd{J a} and +@kbd{J r} in the server buffer. Gnus will not download articles into +the Agent cache, unless you instruct it to do so, though, by using +@kbd{J u} or @kbd{J s} from the Group buffer. You revert to the old +behavior of having the Agent disabled with @code{(setq gnus-agent +nil)}. Note that putting @code{(gnus-agentize)} in @file{~/.gnus.el} +is not needed any more. + +@item +Gnus reads the @acronym{NOV} and articles in the Agent if plugged. + +If one reads an article while plugged, and the article already exists +in the Agent, it won't get downloaded once more. @code{(setq +gnus-agent-cache nil)} reverts to the old behavior. + +@item +Dired integration + +@code{gnus-dired-minor-mode} (see @ref{Other modes}) installs key +bindings in dired buffers to send a file as an attachment, open a file +using the appropriate mailcap entry, and print a file using the mailcap +entry. + +@item +The format spec @code{%C} for positioning point has changed to @code{%*}. + +@item +@code{gnus-slave-unplugged} + +A new command which starts Gnus offline in slave mode. + +@end itemize + +@end itemize + +@iftex + +@page +@node The Manual +@section The Manual +@cindex colophon +@cindex manual + +This manual was generated from a TeXinfo file and then run through +either @code{texi2dvi} +@iflatex +or my own home-brewed TeXinfo to \LaTeX\ transformer, +and then run through @code{latex} and @code{dvips} +@end iflatex +to get what you hold in your hands now. + +The following conventions have been used: + +@enumerate + +@item +This is a @samp{string} + +@item +This is a @kbd{keystroke} + +@item +This is a @file{file} + +@item +This is a @code{symbol} + +@end enumerate + +So if I were to say ``set @code{flargnoze} to @samp{yes}'', that would +mean: + +@lisp +(setq flargnoze "yes") +@end lisp + +If I say ``set @code{flumphel} to @code{yes}'', that would mean: + +@lisp +(setq flumphel 'yes) +@end lisp + +@samp{yes} and @code{yes} are two @emph{very} different things---don't +ever get them confused. + +@iflatex +@c @head +Of course, everything in this manual is of vital interest, so you should +read it all. Several times. However, if you feel like skimming the +manual, look for that gnu head you should see in the margin over +there---it means that what's being discussed is of more importance than +the rest of the stuff. (On the other hand, if everything is infinitely +important, how can anything be more important than that? Just one more +of the mysteries of this world, I guess.) +@end iflatex + +@end iftex + + +@node On Writing Manuals +@section On Writing Manuals + +I guess most manuals are written after-the-fact; documenting a program +that's already there. This is not how this manual is written. When +implementing something, I write the manual entry for that something +straight away. I then see that it's difficult to explain the +functionality, so I write how it's supposed to be, and then I change the - implementation. Writing the documentation and writing the code goes - hand in hand. ++implementation. Writing the documentation and writing the code go hand ++in hand. + +This, of course, means that this manual has no, or little, flow. It +documents absolutely everything in Gnus, but often not where you're +looking for it. It is a reference manual, and not a guide to how to get +started with Gnus. + +That would be a totally different book, that should be written using the - reference manual as source material. It would look quite differently. ++reference manual as source material. It would look quite different. + + +@page +@node Terminology +@section Terminology + +@cindex terminology +@table @dfn + +@item news +@cindex news +This is what you are supposed to use this thing for---reading news. +News is generally fetched from a nearby @acronym{NNTP} server, and is +generally publicly available to everybody. If you post news, the entire +world is likely to read just what you have written, and they'll all +snigger mischievously. Behind your back. + +@item mail +@cindex mail +Everything that's delivered to you personally is mail. Some news/mail +readers (like Gnus) blur the distinction between mail and news, but +there is a difference. Mail is private. News is public. Mailing is +not posting, and replying is not following up. + +@item reply +@cindex reply +Send a mail to the person who has written what you are reading. + +@item follow up +@cindex follow up +Post an article to the current newsgroup responding to the article you +are reading. + +@item back end +@cindex back end +Gnus considers mail and news to be mostly the same, really. The only +difference is how to access the actual articles. News articles are +commonly fetched via the protocol @acronym{NNTP}, whereas mail +messages could be read from a file on the local disk. The internal +architecture of Gnus thus comprises a ``front end'' and a number of +``back ends''. Internally, when you enter a group (by hitting +@key{RET}, say), you thereby invoke a function in the front end in +Gnus. The front end then ``talks'' to a back end and says things like +``Give me the list of articles in the foo group'' or ``Show me article +number 4711''. + +So a back end mainly defines either a protocol (the @code{nntp} back +end accesses news via @acronym{NNTP}, the @code{nnimap} back end +accesses mail via @acronym{IMAP}) or a file format and directory +layout (the @code{nnspool} back end accesses news via the common +``spool directory'' format, the @code{nnml} back end access mail via a +file format and directory layout that's quite similar). + +Gnus does not handle the underlying media, so to speak---this is all +done by the back ends. A back end is a collection of functions to +access the articles. + +However, sometimes the term ``back end'' is also used where ``server'' +would have been more appropriate. And then there is the term ``select +method'' which can mean either. The Gnus terminology can be quite +confusing. + +@item native +@cindex native +Gnus will always use one method (and back end) as the @dfn{native}, or +default, way of getting news. + +@item foreign +@cindex foreign +You can also have any number of foreign groups active at the same time. +These are groups that use non-native non-secondary back ends for getting +news. + +@item secondary +@cindex secondary +Secondary back ends are somewhere half-way between being native and being +foreign, but they mostly act like they are native. + +@item article +@cindex article +A message that has been posted as news. + +@item mail message +@cindex mail message +A message that has been mailed. + +@item message +@cindex message +A mail message or news article + +@item head +@cindex head +The top part of a message, where administrative information (etc.) is +put. + +@item body +@cindex body +The rest of an article. Everything not in the head is in the +body. + +@item header +@cindex header +A line from the head of an article. + +@item headers +@cindex headers +A collection of such lines, or a collection of heads. Or even a +collection of @acronym{NOV} lines. + +@item @acronym{NOV} +@cindex @acronym{NOV} ++@acronym{NOV} stands for News OverView, which is a type of news server ++header which provide datas containing the condensed header information ++of articles. They are produced by the server itself; in the @code{nntp} ++back end Gnus uses the ones that the @acronym{NNTP} server makes, but ++Gnus makes them by itself for some backends (in particular, @code{nnml}). ++ +When Gnus enters a group, it asks the back end for the headers of all +unread articles in the group. Most servers support the News OverView +format, which is more compact and much faster to read and parse than the +normal @sc{head} format. + ++The @acronym{NOV} data consist of one or more text lines (@pxref{Text ++Lines, ,Motion by Text Lines, elisp, The Emacs Lisp Reference Manual}) ++where each line has the header information of one article. The header ++information is a tab-separated series of the header's contents including ++an article number, a subject, an author, a date, a message-id, ++references, etc. ++ ++Those data enable Gnus to generate summary lines quickly. However, if ++the server does not support @acronym{NOV} or you disable it purposely or ++for some reason, Gnus will try to generate the header information by ++parsing each article's headers one by one. It will take time. ++Therefore, it is not usually a good idea to set nn*-nov-is-evil ++(@pxref{Slow/Expensive Connection}) to a non-@code{nil} value unless you ++know that the server makes wrong @acronym{NOV} data. ++ +@item level +@cindex levels +Each group is subscribed at some @dfn{level} or other (1-9). The ones +that have a lower level are ``more'' subscribed than the groups with a +higher level. In fact, groups on levels 1-5 are considered +@dfn{subscribed}; 6-7 are @dfn{unsubscribed}; 8 are @dfn{zombies}; and 9 +are @dfn{killed}. Commands for listing groups and scanning for new +articles will all use the numeric prefix as @dfn{working level}. + +@item killed groups +@cindex killed groups +No information on killed groups is stored or updated, which makes killed +groups much easier to handle than subscribed groups. + +@item zombie groups +@cindex zombie groups +Just like killed groups, only slightly less dead. + +@item active file +@cindex active file +The news server has to keep track of what articles it carries, and what +groups exist. All this information in stored in the active file, which +is rather large, as you might surmise. + +@item bogus groups +@cindex bogus groups +A group that exists in the @file{.newsrc} file, but isn't known to the +server (i.e., it isn't in the active file), is a @emph{bogus group}. +This means that the group probably doesn't exist (any more). + +@item activating +@cindex activating groups +The act of asking the server for info on a group and computing the +number of unread articles is called @dfn{activating the group}. +Un-activated groups are listed with @samp{*} in the group buffer. + +@item spool +@cindex spool +News servers store their articles locally in one fashion or other. +One old-fashioned storage method is to have just one file per +article. That's called a ``traditional spool''. + +@item server +@cindex server +A machine one can connect to and get news (or mail) from. + +@item select method +@cindex select method +A structure that specifies the back end, the server and the virtual +server settings. + +@item virtual server +@cindex virtual server +A named select method. Since a select method defines all there is to +know about connecting to a (physical) server, taking the thing as a +whole is a virtual server. + +@item washing +@cindex washing +Taking a buffer and running it through a filter of some sort. The +result will (more often than not) be cleaner and more pleasing than the +original. + +@item ephemeral groups +@cindex ephemeral groups +@cindex temporary groups +Most groups store data on what articles you have read. @dfn{Ephemeral} +groups are groups that will have no data stored---when you exit the +group, it'll disappear into the aether. + +@item solid groups +@cindex solid groups +This is the opposite of ephemeral groups. All groups listed in the +group buffer are solid groups. + +@item sparse articles +@cindex sparse articles +These are article placeholders shown in the summary buffer when +@code{gnus-build-sparse-threads} has been switched on. + +@item threading +@cindex threading +To put responses to articles directly after the articles they respond +to---in a hierarchical fashion. + +@item root +@cindex root +@cindex thread root +The first article in a thread is the root. It is the ancestor of all +articles in the thread. + +@item parent +@cindex parent +An article that has responses. + +@item child +@cindex child +An article that responds to a different article---its parent. + +@item digest +@cindex digest +A collection of messages in one file. The most common digest format is +specified by RFC 1153. + +@item splitting +@cindex splitting, terminology +@cindex mail sorting +@cindex mail filtering (splitting) +The action of sorting your emails according to certain rules. Sometimes +incorrectly called mail filtering. + +@end table + + +@page +@node Customization +@section Customization +@cindex general customization + +All variables are properly documented elsewhere in this manual. This +section is designed to give general pointers on how to customize Gnus +for some quite common situations. + +@menu +* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere. +* Slow Terminal Connection:: You run a remote Emacs. +* Little Disk Space:: You feel that having large setup files is icky. +* Slow Machine:: You feel like buying a faster machine. +@end menu + + +@node Slow/Expensive Connection - @subsection Slow/Expensive NNTP Connection ++@subsection Slow/Expensive Connection + +If you run Emacs on a machine locally, and get your news from a machine +over some very thin strings, you want to cut down on the amount of data - Gnus has to get from the @acronym{NNTP} server. ++Gnus has to get from the server. + +@table @code + +@item gnus-read-active-file +Set this to @code{nil}, which will inhibit Gnus from requesting the +entire active file from the server. This file is often very large. You +also have to set @code{gnus-check-new-newsgroups} and +@code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus +doesn't suddenly decide to fetch the active file anyway. + +@item gnus-nov-is-evil - This one has to be @code{nil}. If not, grabbing article headers from - the @acronym{NNTP} server will not be very fast. Not all @acronym{NNTP} servers - support @sc{xover}; Gnus will detect this by itself. ++@vindex gnus-nov-is-evil ++Usually this one must @emph{always} be @code{nil} (which is the ++default). If, for example, you wish to not use @acronym{NOV} ++(@pxref{Terminology}) with the @code{nntp} back end (@pxref{Crosspost ++Handling}), set @code{nntp-nov-is-evil} to a non-@code{nil} value ++instead of setting this. But you normally do not need to set ++@code{nntp-nov-is-evil} since Gnus by itself will detect whether the ++@acronym{NNTP} server supports @acronym{NOV}. Anyway, grabbing article ++headers from the @acronym{NNTP} server will not be very fast if you tell ++Gnus not to use @acronym{NOV}. ++ ++As the variables for the other back ends, there are ++@code{nndiary-nov-is-evil}, @code{nndir-nov-is-evil}, ++@code{nnfolder-nov-is-evil}, @code{nnimap-nov-is-evil}, ++@code{nnml-nov-is-evil}, @code{nnspool-nov-is-evil}, and ++@code{nnwarchive-nov-is-evil}. Note that a non-@code{nil} value for ++@code{gnus-nov-is-evil} overrides all those variables.@footnote{Although ++the back ends @code{nnkiboze}, @code{nnslashdot}, @code{nnultimate}, and ++@code{nnwfm} don't have their own nn*-nov-is-evil.} +@end table + + +@node Slow Terminal Connection +@subsection Slow Terminal Connection + +Let's say you use your home computer for dialing up the system that runs +Emacs and Gnus. If your modem is slow, you want to reduce (as much as +possible) the amount of data sent over the wires. + +@table @code + +@item gnus-auto-center-summary +Set this to @code{nil} to inhibit Gnus from re-centering the summary +buffer all the time. If it is @code{vertical}, do only vertical +re-centering. If it is neither @code{nil} nor @code{vertical}, do both +horizontal and vertical recentering. + +@item gnus-visible-headers +Cut down on the headers included in the articles to the +minimum. You can, in fact, make do without them altogether---most of the +useful data is in the summary buffer, anyway. Set this variable to +@samp{^NEVVVVER} or @samp{From:}, or whatever you feel you need. + +Use the following to enable all the available hiding features: +@lisp +(setq gnus-treat-hide-headers 'head + gnus-treat-hide-signature t + gnus-treat-hide-citation t) +@end lisp + +@item gnus-use-full-window +By setting this to @code{nil}, you can make all the windows smaller. +While this doesn't really cut down much generally, it means that you +have to see smaller portions of articles before deciding that you didn't +want to read them anyway. + +@item gnus-thread-hide-subtree +If this is non-@code{nil}, all threads in the summary buffer will be +hidden initially. + + +@item gnus-updated-mode-lines +If this is @code{nil}, Gnus will not put information in the buffer mode +lines, which might save some time. +@end table + + +@node Little Disk Space +@subsection Little Disk Space +@cindex disk space + +The startup files can get rather large, so you may want to cut their +sizes a bit if you are running out of space. + +@table @code + +@item gnus-save-newsrc-file +If this is @code{nil}, Gnus will never save @file{.newsrc}---it will +only save @file{.newsrc.eld}. This means that you will not be able to +use any other newsreaders than Gnus. This variable is @code{t} by +default. + +@item gnus-read-newsrc-file +If this is @code{nil}, Gnus will never read @file{.newsrc}---it will +only read @file{.newsrc.eld}. This means that you will not be able to +use any other newsreaders than Gnus. This variable is @code{t} by +default. + +@item gnus-save-killed-list +If this is @code{nil}, Gnus will not save the list of dead groups. You +should also set @code{gnus-check-new-newsgroups} to @code{ask-server} +and @code{gnus-check-bogus-newsgroups} to @code{nil} if you set this +variable to @code{nil}. This variable is @code{t} by default. + +@end table + + +@node Slow Machine +@subsection Slow Machine +@cindex slow machine + +If you have a slow machine, or are just really impatient, there are a +few things you can do to make Gnus run faster. + +Set @code{gnus-check-new-newsgroups} and +@code{gnus-check-bogus-newsgroups} to @code{nil} to make startup faster. + +Set @code{gnus-show-threads}, @code{gnus-use-cross-reference} and +@code{gnus-nov-is-evil} to @code{nil} to make entering and exiting the - summary buffer faster. ++summary buffer faster. Also @pxref{Slow/Expensive Connection}. + + +@page +@node Troubleshooting +@section Troubleshooting +@cindex troubleshooting + +Gnus works @emph{so} well straight out of the box---I can't imagine any +problems, really. + +Ahem. + +@enumerate + +@item +Make sure your computer is switched on. + +@item +Make sure that you really load the current Gnus version. If you have +been running @sc{gnus}, you need to exit Emacs and start it up again before +Gnus will work. + +@item +Try doing an @kbd{M-x gnus-version}. If you get something that looks +like @samp{Gnus v5.10.6} you have the right files loaded. Otherwise +you have some old @file{.el} files lying around. Delete these. + +@item +Read the help group (@kbd{G h} in the group buffer) for a +@acronym{FAQ} and a how-to. + +@item +@vindex max-lisp-eval-depth +Gnus works on many recursive structures, and in some extreme (and very +rare) cases Gnus may recurse down ``too deeply'' and Emacs will beep at +you. If this happens to you, set @code{max-lisp-eval-depth} to 500 or +something like that. +@end enumerate + +If all else fails, report the problem as a bug. + +@cindex bugs +@cindex reporting bugs + +@kindex M-x gnus-bug +@findex gnus-bug +If you find a bug in Gnus, you can report it with the @kbd{M-x gnus-bug} +command. @kbd{M-x set-variable RET debug-on-error RET t RET}, and send +me the backtrace. I will fix bugs, but I can only fix them if you send +me a precise description as to how to reproduce the bug. + +You really can never be too detailed in a bug report. Always use the +@kbd{M-x gnus-bug} command when you make bug reports, even if it creates +a 10Kb mail each time you use it, and even if you have sent me your +environment 500 times before. I don't care. I want the full info each +time. + +It is also important to remember that I have no memory whatsoever. If +you send a bug report, and I send you a reply, and then you just send +back ``No, it's not! Moron!'', I will have no idea what you are +insulting me about. Always over-explain everything. It's much easier +for all of us---if I don't have all the information I need, I will just +mail you and ask for more info, and everything takes more time. + +If the problem you're seeing is very visual, and you can't quite explain +it, copy the Emacs window to a file (with @code{xwd}, for instance), put +it somewhere it can be reached, and include the URL of the picture in +the bug report. + +@cindex patches +If you would like to contribute a patch to fix bugs or make +improvements, please produce the patch using @samp{diff -u}. + +@cindex edebug +If you want to debug your problem further before reporting, possibly +in order to solve the problem yourself and send a patch, you can use +edebug. Debugging Lisp code is documented in the Elisp manual +(@pxref{Debugging, , Debugging Lisp Programs, elisp, The GNU Emacs +Lisp Reference Manual}). To get you started with edebug, consider if +you discover some weird behavior when pressing @kbd{c}, the first +step is to do @kbd{C-h k c} and click on the hyperlink (Emacs only) in +the documentation buffer that leads you to the function definition, +then press @kbd{M-x edebug-defun RET} with point inside that function, +return to Gnus and press @kbd{c} to invoke the code. You will be +placed in the lisp buffer and can single step using @kbd{SPC} and +evaluate expressions using @kbd{M-:} or inspect variables using +@kbd{C-h v}, abort execution with @kbd{q}, and resume execution with +@kbd{c} or @kbd{g}. + +@cindex elp +@cindex profile +@cindex slow +Sometimes, a problem do not directly generate an elisp error but +manifests itself by causing Gnus to be very slow. In these cases, you +can use @kbd{M-x toggle-debug-on-quit} and press @kbd{C-g} when things are +slow, and then try to analyze the backtrace (repeating the procedure +helps isolating the real problem areas). + +A fancier approach is to use the elisp profiler, ELP. The profiler is +(or should be) fully documented elsewhere, but to get you started +there are a few steps that need to be followed. First, instrument the +part of Gnus you are interested in for profiling, e.g. @kbd{M-x +elp-instrument-package RET gnus} or @kbd{M-x elp-instrument-package +RET message}. Then perform the operation that is slow and press +@kbd{M-x elp-results}. You will then see which operations that takes +time, and can debug them further. If the entire operation takes much +longer than the time spent in the slowest function in the profiler +output, you probably profiled the wrong part of Gnus. To reset +profiling statistics, use @kbd{M-x elp-reset-all}. @kbd{M-x +elp-restore-all} is supposed to remove profiling, but given the +complexities and dynamic code generation in Gnus, it might not always +work perfectly. + +@cindex gnu.emacs.gnus +@cindex ding mailing list +If you just need help, you are better off asking on +@samp{gnu.emacs.gnus}. I'm not very helpful. You can also ask on +@email{ding@@gnus.org, the ding mailing list}. Write to +@email{ding-request@@gnus.org} to subscribe. + + +@page +@node Gnus Reference Guide +@section Gnus Reference Guide + +It is my hope that other people will figure out smart stuff that Gnus +can do, and that other people will write those smart things as well. To +facilitate that I thought it would be a good idea to describe the inner +workings of Gnus. And some of the not-so-inner workings, while I'm at +it. + +You can never expect the internals of a program not to change, but I +will be defining (in some details) the interface between Gnus and its +back ends (this is written in stone), the format of the score files +(ditto), data structures (some are less likely to change than others) +and general methods of operation. + +@menu +* Gnus Utility Functions:: Common functions and variable to use. +* Back End Interface:: How Gnus communicates with the servers. +* Score File Syntax:: A BNF definition of the score file standard. +* Headers:: How Gnus stores headers internally. +* Ranges:: A handy format for storing mucho numbers. +* Group Info:: The group info format. +* Extended Interactive:: Symbolic prefixes and stuff. +* Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen. +* Various File Formats:: Formats of files that Gnus use. +@end menu + + +@node Gnus Utility Functions +@subsection Gnus Utility Functions +@cindex Gnus utility functions +@cindex utility functions +@cindex functions +@cindex internal variables + +When writing small functions to be run from hooks (and stuff), it's +vital to have access to the Gnus internal functions and variables. +Below is a list of the most common ones. + +@table @code + +@item gnus-newsgroup-name +@vindex gnus-newsgroup-name +This variable holds the name of the current newsgroup. + +@item gnus-find-method-for-group +@findex gnus-find-method-for-group +A function that returns the select method for @var{group}. + +@item gnus-group-real-name +@findex gnus-group-real-name +Takes a full (prefixed) Gnus group name, and returns the unprefixed +name. + +@item gnus-group-prefixed-name +@findex gnus-group-prefixed-name +Takes an unprefixed group name and a select method, and returns the full +(prefixed) Gnus group name. + +@item gnus-get-info +@findex gnus-get-info +Returns the group info list for @var{group}. + +@item gnus-group-unread +@findex gnus-group-unread +The number of unread articles in @var{group}, or @code{t} if that is +unknown. + +@item gnus-active +@findex gnus-active +The active entry for @var{group}. + +@item gnus-set-active +@findex gnus-set-active +Set the active entry for @var{group}. + +@item gnus-add-current-to-buffer-list +@findex gnus-add-current-to-buffer-list +Adds the current buffer to the list of buffers to be killed on Gnus +exit. + +@item gnus-continuum-version +@findex gnus-continuum-version +Takes a Gnus version string as a parameter and returns a floating point +number. Earlier versions will always get a lower number than later +versions. + +@item gnus-group-read-only-p +@findex gnus-group-read-only-p +Says whether @var{group} is read-only or not. + +@item gnus-news-group-p +@findex gnus-news-group-p +Says whether @var{group} came from a news back end. + +@item gnus-ephemeral-group-p +@findex gnus-ephemeral-group-p +Says whether @var{group} is ephemeral or not. + +@item gnus-server-to-method +@findex gnus-server-to-method +Returns the select method corresponding to @var{server}. + +@item gnus-server-equal +@findex gnus-server-equal +Says whether two virtual servers are equal. + +@item gnus-group-native-p +@findex gnus-group-native-p +Says whether @var{group} is native or not. + +@item gnus-group-secondary-p +@findex gnus-group-secondary-p +Says whether @var{group} is secondary or not. + +@item gnus-group-foreign-p +@findex gnus-group-foreign-p +Says whether @var{group} is foreign or not. + +@item gnus-group-find-parameter +@findex gnus-group-find-parameter +Returns the parameter list of @var{group}. If given a second parameter, +returns the value of that parameter for @var{group}. + +@item gnus-group-set-parameter +@findex gnus-group-set-parameter +Takes three parameters; @var{group}, @var{parameter} and @var{value}. + +@item gnus-narrow-to-body +@findex gnus-narrow-to-body +Narrows the current buffer to the body of the article. + +@item gnus-check-backend-function +@findex gnus-check-backend-function +Takes two parameters, @var{function} and @var{group}. If the back end +@var{group} comes from supports @var{function}, return non-@code{nil}. + +@lisp +(gnus-check-backend-function "request-scan" "nnml:misc") +@result{} t +@end lisp + +@item gnus-read-method +@findex gnus-read-method +Prompts the user for a select method. + +@end table + + +@node Back End Interface +@subsection Back End Interface + +Gnus doesn't know anything about @acronym{NNTP}, spools, mail or virtual +groups. It only knows how to talk to @dfn{virtual servers}. A virtual +server is a @dfn{back end} and some @dfn{back end variables}. As examples +of the first, we have @code{nntp}, @code{nnspool} and @code{nnmbox}. As +examples of the latter we have @code{nntp-port-number} and +@code{nnmbox-directory}. + +When Gnus asks for information from a back end---say @code{nntp}---on +something, it will normally include a virtual server name in the +function parameters. (If not, the back end should use the ``current'' +virtual server.) For instance, @code{nntp-request-list} takes a virtual +server as its only (optional) parameter. If this virtual server hasn't +been opened, the function should fail. + +Note that a virtual server name has no relation to some physical server +name. Take this example: + +@lisp +(nntp "odd-one" + (nntp-address "ifi.uio.no") + (nntp-port-number 4324)) +@end lisp + +Here the virtual server name is @samp{odd-one} while the name of +the physical server is @samp{ifi.uio.no}. + +The back ends should be able to switch between several virtual servers. +The standard back ends implement this by keeping an alist of virtual +server environments that they pull down/push up when needed. + +There are two groups of interface functions: @dfn{required functions}, +which must be present, and @dfn{optional functions}, which Gnus will +always check for presence before attempting to call 'em. + +All these functions are expected to return data in the buffer +@code{nntp-server-buffer} (@samp{ *nntpd*}), which is somewhat +unfortunately named, but we'll have to live with it. When I talk about +@dfn{resulting data}, I always refer to the data in that buffer. When I +talk about @dfn{return value}, I talk about the function value returned by +the function call. Functions that fail should return @code{nil} as the +return value. + +Some back ends could be said to be @dfn{server-forming} back ends, and +some might be said not to be. The latter are back ends that generally +only operate on one group at a time, and have no concept of ``server'' +---they have a group, and they deliver info on that group and nothing +more. + +Gnus identifies each message by way of group name and article number. A +few remarks about these article numbers might be useful. First of all, +the numbers are positive integers. Secondly, it is normally not +possible for later articles to ``re-use'' older article numbers without +confusing Gnus. That is, if a group has ever contained a message +numbered 42, then no other message may get that number, or Gnus will get +mightily confused.@footnote{See the function +@code{nnchoke-request-update-info}, @ref{Optional Back End Functions}.} +Third, article numbers must be assigned in order of arrival in the +group; this is not necessarily the same as the date of the message. + +The previous paragraph already mentions all the ``hard'' restrictions that +article numbers must fulfill. But it seems that it might be useful to +assign @emph{consecutive} article numbers, for Gnus gets quite confused +if there are holes in the article numbering sequence. However, due to +the ``no-reuse'' restriction, holes cannot be avoided altogether. It's +also useful for the article numbers to start at 1 to avoid running out +of numbers as long as possible. + +Note that by convention, back ends are named @code{nnsomething}, but +Gnus also comes with some @code{nnnotbackends}, such as +@file{nnheader.el}, @file{nnmail.el} and @file{nnoo.el}. + +In the examples and definitions I will refer to the imaginary back end +@code{nnchoke}. + +@cindex @code{nnchoke} + +@menu +* Required Back End Functions:: Functions that must be implemented. +* Optional Back End Functions:: Functions that need not be implemented. +* Error Messaging:: How to get messages and report errors. +* Writing New Back Ends:: Extending old back ends. +* Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end. +* Mail-like Back Ends:: Some tips on mail back ends. +@end menu + + +@node Required Back End Functions +@subsubsection Required Back End Functions + +@table @code + +@item (nnchoke-retrieve-headers ARTICLES &optional GROUP SERVER FETCH-OLD) + +@var{articles} is either a range of article numbers or a list of +@code{Message-ID}s. Current back ends do not fully support either---only +sequences (lists) of article numbers, and most back ends do not support +retrieval of @code{Message-ID}s. But they should try for both. + +The result data should either be HEADs or @acronym{NOV} lines, and the result +value should either be @code{headers} or @code{nov} to reflect this. +This might later be expanded to @code{various}, which will be a mixture +of HEADs and @acronym{NOV} lines, but this is currently not supported by Gnus. + +If @var{fetch-old} is non-@code{nil} it says to try fetching ``extra +headers'', in some meaning of the word. This is generally done by +fetching (at most) @var{fetch-old} extra headers less than the smallest +article number in @code{articles}, and filling the gaps as well. The +presence of this parameter can be ignored if the back end finds it +cumbersome to follow the request. If this is non-@code{nil} and not a +number, do maximum fetches. + +Here's an example HEAD: + +@example +221 1056 Article retrieved. +Path: ifi.uio.no!sturles +From: sturles@@ifi.uio.no (Sturle Sunde) +Newsgroups: ifi.discussion +Subject: Re: Something very droll +Date: 27 Oct 1994 14:02:57 +0100 +Organization: Dept. of Informatics, University of Oslo, Norway +Lines: 26 +Message-ID: <38o8e1$a0o@@holmenkollen.ifi.uio.no> +References: <38jdmq$4qu@@visbur.ifi.uio.no> +NNTP-Posting-Host: holmenkollen.ifi.uio.no +. +@end example + +So a @code{headers} return value would imply that there's a number of +these in the data buffer. + +Here's a BNF definition of such a buffer: + +@example +headers = *head +head = error / valid-head +error-message = [ "4" / "5" ] 2number " " eol +valid-head = valid-message *header "." eol +valid-message = "221 " " Article retrieved." eol +header = eol +@end example + +@cindex BNF +(The version of BNF used here is the one used in RFC822.) + +If the return value is @code{nov}, the data buffer should contain +@dfn{network overview database} lines. These are basically fields +separated by tabs. + +@example +nov-buffer = *nov-line +nov-line = field 7*8[ field ] eol +field = +@end example + +For a closer look at what should be in those fields, +@pxref{Headers}. + + +@item (nnchoke-open-server SERVER &optional DEFINITIONS) + +@var{server} is here the virtual server name. @var{definitions} is a +list of @code{(VARIABLE VALUE)} pairs that define this virtual server. + +If the server can't be opened, no error should be signaled. The back end +may then choose to refuse further attempts at connecting to this +server. In fact, it should do so. + +If the server is opened already, this function should return a +non-@code{nil} value. There should be no data returned. + + +@item (nnchoke-close-server &optional SERVER) + +Close connection to @var{server} and free all resources connected +to it. Return @code{nil} if the server couldn't be closed for some +reason. + +There should be no data returned. + + +@item (nnchoke-request-close) + +Close connection to all servers and free all resources that the back end +have reserved. All buffers that have been created by that back end +should be killed. (Not the @code{nntp-server-buffer}, though.) This +function is generally only called when Gnus is shutting down. + +There should be no data returned. + + +@item (nnchoke-server-opened &optional SERVER) + +If @var{server} is the current virtual server, and the connection to the +physical server is alive, then this function should return a +non-@code{nil} value. This function should under no circumstances +attempt to reconnect to a server we have lost connection to. + +There should be no data returned. + + +@item (nnchoke-status-message &optional SERVER) + +This function should return the last error message from @var{server}. + +There should be no data returned. + + +@item (nnchoke-request-article ARTICLE &optional GROUP SERVER TO-BUFFER) + +The result data from this function should be the article specified by +@var{article}. This might either be a @code{Message-ID} or a number. +It is optional whether to implement retrieval by @code{Message-ID}, but +it would be nice if that were possible. + +If @var{to-buffer} is non-@code{nil}, the result data should be returned +in this buffer instead of the normal data buffer. This is to make it +possible to avoid copying large amounts of data from one buffer to +another, while Gnus mainly requests articles to be inserted directly +into its article buffer. + +If it is at all possible, this function should return a cons cell where +the @code{car} is the group name the article was fetched from, and the @code{cdr} is +the article number. This will enable Gnus to find out what the real +group and article numbers are when fetching articles by +@code{Message-ID}. If this isn't possible, @code{t} should be returned +on successful article retrieval. + + +@item (nnchoke-request-group GROUP &optional SERVER FAST) + +Get data on @var{group}. This function also has the side effect of +making @var{group} the current group. + +If @var{fast}, don't bother to return useful data, just make @var{group} +the current group. + +Here's an example of some result data and a definition of the same: + +@example +211 56 1000 1059 ifi.discussion +@end example + +The first number is the status, which should be 211. Next is the +total number of articles in the group, the lowest article number, the +highest article number, and finally the group name. Note that the total +number of articles may be less than one might think while just +considering the highest and lowest article numbers, but some articles +may have been canceled. Gnus just discards the total-number, so +whether one should take the bother to generate it properly (if that is a +problem) is left as an exercise to the reader. If the group contains no +articles, the lowest article number should be reported as 1 and the +highest as 0. + +@example +group-status = [ error / info ] eol +error = [ "4" / "5" ] 2 " " +info = "211 " 3* [ " " ] +@end example + + +@item (nnchoke-close-group GROUP &optional SERVER) + +Close @var{group} and free any resources connected to it. This will be +a no-op on most back ends. + +There should be no data returned. + + +@item (nnchoke-request-list &optional SERVER) + +Return a list of all groups available on @var{server}. And that means +@emph{all}. + +Here's an example from a server that only carries two groups: + +@example +ifi.test 0000002200 0000002000 y +ifi.discussion 3324 3300 n +@end example + +On each line we have a group name, then the highest article number in +that group, the lowest article number, and finally a flag. If the group +contains no articles, the lowest article number should be reported as 1 +and the highest as 0. + +@example +active-file = *active-line +active-line = name " " " " " " flags eol +name = +flags = "n" / "y" / "m" / "x" / "j" / "=" name +@end example + +The flag says whether the group is read-only (@samp{n}), is moderated +(@samp{m}), is dead (@samp{x}), is aliased to some other group +(@samp{=other-group}) or none of the above (@samp{y}). + + +@item (nnchoke-request-post &optional SERVER) + +This function should post the current buffer. It might return whether +the posting was successful or not, but that's not required. If, for +instance, the posting is done asynchronously, it has generally not been +completed by the time this function concludes. In that case, this +function should set up some kind of sentinel to beep the user loud and +clear if the posting could not be completed. + +There should be no result data from this function. + +@end table + + +@node Optional Back End Functions +@subsubsection Optional Back End Functions + +@table @code + +@item (nnchoke-retrieve-groups GROUPS &optional SERVER) + +@var{groups} is a list of groups, and this function should request data +on all those groups. How it does it is of no concern to Gnus, but it +should attempt to do this in a speedy fashion. + +The return value of this function can be either @code{active} or +@code{group}, which says what the format of the result data is. The +former is in the same format as the data from +@code{nnchoke-request-list}, while the latter is a buffer full of lines +in the same format as @code{nnchoke-request-group} gives. + +@example +group-buffer = *active-line / *group-status +@end example + + +@item (nnchoke-request-update-info GROUP INFO &optional SERVER) + +A Gnus group info (@pxref{Group Info}) is handed to the back end for +alterations. This comes in handy if the back end really carries all +the information (as is the case with virtual and imap groups). This +function should destructively alter the info to suit its needs, and +should return a non-@code{nil} value. + +There should be no result data from this function. + + +@item (nnchoke-request-type GROUP &optional ARTICLE) + +When the user issues commands for ``sending news'' (@kbd{F} in the +summary buffer, for instance), Gnus has to know whether the article the +user is following up on is news or mail. This function should return +@code{news} if @var{article} in @var{group} is news, @code{mail} if it +is mail and @code{unknown} if the type can't be decided. (The +@var{article} parameter is necessary in @code{nnvirtual} groups which +might very well combine mail groups and news groups.) Both @var{group} +and @var{article} may be @code{nil}. + +There should be no result data from this function. + + +@item (nnchoke-request-set-mark GROUP ACTION &optional SERVER) + +Set/remove/add marks on articles. Normally Gnus handles the article +marks (such as read, ticked, expired etc) internally, and store them in +@file{~/.newsrc.eld}. Some back ends (such as @acronym{IMAP}) however carry +all information about the articles on the server, so Gnus need to +propagate the mark information to the server. + +@var{action} is a list of mark setting requests, having this format: + +@example +(RANGE ACTION MARK) +@end example + +@var{range} is a range of articles you wish to update marks on. +@var{action} is @code{add} or @code{del}, used to add marks or remove +marks (preserving all marks not mentioned). @var{mark} is a list of +marks; where each mark is a symbol. Currently used marks are +@code{read}, @code{tick}, @code{reply}, @code{expire}, @code{killed}, +@code{dormant}, @code{save}, @code{download}, @code{unsend}, +@code{forward} and @code{recent}, but your back end should, if +possible, not limit itself to these. + +Given contradictory actions, the last action in the list should be the +effective one. That is, if your action contains a request to add the +@code{tick} mark on article 1 and, later in the list, a request to +remove the mark on the same article, the mark should in fact be removed. + +An example action list: + +@example +(((5 12 30) 'del '(tick)) + ((10 . 90) 'add '(read expire)) + ((92 94) 'del '(read))) +@end example + +The function should return a range of articles it wasn't able to set the +mark on (currently not used for anything). + +There should be no result data from this function. + +@item (nnchoke-request-update-mark GROUP ARTICLE MARK) + +If the user tries to set a mark that the back end doesn't like, this +function may change the mark. Gnus will use whatever this function +returns as the mark for @var{article} instead of the original +@var{mark}. If the back end doesn't care, it must return the original +@var{mark}, and not @code{nil} or any other type of garbage. + +The only use for this I can see is what @code{nnvirtual} does with +it---if a component group is auto-expirable, marking an article as read +in the virtual group should result in the article being marked as +expirable. + +There should be no result data from this function. + + +@item (nnchoke-request-scan &optional GROUP SERVER) + +This function may be called at any time (by Gnus or anything else) to +request that the back end check for incoming articles, in one way or +another. A mail back end will typically read the spool file or query +the @acronym{POP} server when this function is invoked. The +@var{group} doesn't have to be heeded---if the back end decides that +it is too much work just scanning for a single group, it may do a +total scan of all groups. It would be nice, however, to keep things +local if that's practical. + +There should be no result data from this function. + + +@item (nnchoke-request-group-description GROUP &optional SERVER) + +The result data from this function should be a description of +@var{group}. + +@example +description-line = name description eol +name = +description = +@end example + +@item (nnchoke-request-list-newsgroups &optional SERVER) + +The result data from this function should be the description of all +groups available on the server. + +@example +description-buffer = *description-line +@end example + + +@item (nnchoke-request-newgroups DATE &optional SERVER) + +The result data from this function should be all groups that were +created after @samp{date}, which is in normal human-readable date format +(i.e., the date format used in mail and news headers, and returned by +the function @code{message-make-date} by default). The data should be +in the active buffer format. + +It is okay for this function to return ``too many'' groups; some back ends +might find it cheaper to return the full list of groups, rather than +just the new groups. But don't do this for back ends with many groups. +Normally, if the user creates the groups herself, there won't be too +many groups, so @code{nnml} and the like are probably safe. But for +back ends like @code{nntp}, where the groups have been created by the +server, it is quite likely that there can be many groups. + + +@item (nnchoke-request-create-group GROUP &optional SERVER) + +This function should create an empty group with name @var{group}. + +There should be no return data. + + +@item (nnchoke-request-expire-articles ARTICLES &optional GROUP SERVER FORCE) + +This function should run the expiry process on all articles in the +@var{articles} range (which is currently a simple list of article +numbers.) It is left up to the back end to decide how old articles +should be before they are removed by this function. If @var{force} is +non-@code{nil}, all @var{articles} should be deleted, no matter how new +they are. + +This function should return a list of articles that it did not/was not +able to delete. + +There should be no result data returned. + + +@item (nnchoke-request-move-article ARTICLE GROUP SERVER ACCEPT-FORM &optional LAST) + +This function should move @var{article} (which is a number) from +@var{group} by calling @var{accept-form}. + +This function should ready the article in question for moving by +removing any header lines it has added to the article, and generally +should ``tidy up'' the article. Then it should @code{eval} +@var{accept-form} in the buffer where the ``tidy'' article is. This +will do the actual copying. If this @code{eval} returns a +non-@code{nil} value, the article should be removed. + +If @var{last} is @code{nil}, that means that there is a high likelihood +that there will be more requests issued shortly, so that allows some +optimizations. + +The function should return a cons where the @code{car} is the group name and +the @code{cdr} is the article number that the article was entered as. + +There should be no data returned. + + +@item (nnchoke-request-accept-article GROUP &optional SERVER LAST) + +This function takes the current buffer and inserts it into @var{group}. +If @var{last} in @code{nil}, that means that there will be more calls to +this function in short order. + +The function should return a cons where the @code{car} is the group name and +the @code{cdr} is the article number that the article was entered as. + +The group should exist before the back end is asked to accept the +article for that group. + +There should be no data returned. + + +@item (nnchoke-request-replace-article ARTICLE GROUP BUFFER) + +This function should remove @var{article} (which is a number) from +@var{group} and insert @var{buffer} there instead. + +There should be no data returned. + + +@item (nnchoke-request-delete-group GROUP FORCE &optional SERVER) + +This function should delete @var{group}. If @var{force}, it should +really delete all the articles in the group, and then delete the group +itself. (If there is such a thing as ``the group itself''.) + +There should be no data returned. + + +@item (nnchoke-request-rename-group GROUP NEW-NAME &optional SERVER) + +This function should rename @var{group} into @var{new-name}. All +articles in @var{group} should move to @var{new-name}. + +There should be no data returned. + +@end table + + +@node Error Messaging +@subsubsection Error Messaging + +@findex nnheader-report +@findex nnheader-get-report +The back ends should use the function @code{nnheader-report} to report +error conditions---they should not raise errors when they aren't able to +perform a request. The first argument to this function is the back end +symbol, and the rest are interpreted as arguments to @code{format} if +there are multiple of them, or just a string if there is one of them. +This function must always returns @code{nil}. + +@lisp +(nnheader-report 'nnchoke "You did something totally bogus") + +(nnheader-report 'nnchoke "Could not request group %s" group) +@end lisp + +Gnus, in turn, will call @code{nnheader-get-report} when it gets a +@code{nil} back from a server, and this function returns the most +recently reported message for the back end in question. This function +takes one argument---the server symbol. + +Internally, these functions access @var{back-end}@code{-status-string}, +so the @code{nnchoke} back end will have its error message stored in +@code{nnchoke-status-string}. + + +@node Writing New Back Ends +@subsubsection Writing New Back Ends + +Many back ends are quite similar. @code{nnml} is just like +@code{nnspool}, but it allows you to edit the articles on the server. +@code{nnmh} is just like @code{nnml}, but it doesn't use an active file, +and it doesn't maintain overview databases. @code{nndir} is just like +@code{nnml}, but it has no concept of ``groups'', and it doesn't allow +editing articles. + +It would make sense if it were possible to ``inherit'' functions from +back ends when writing new back ends. And, indeed, you can do that if you +want to. (You don't have to if you don't want to, of course.) + +All the back ends declare their public variables and functions by using a +package called @code{nnoo}. + +To inherit functions from other back ends (and allow other back ends to +inherit functions from the current back end), you should use the +following macros: + +@table @code + +@item nnoo-declare +This macro declares the first parameter to be a child of the subsequent +parameters. For instance: + +@lisp +(nnoo-declare nndir + nnml nnmh) +@end lisp + +@code{nndir} has declared here that it intends to inherit functions from +both @code{nnml} and @code{nnmh}. + +@item defvoo +This macro is equivalent to @code{defvar}, but registers the variable as +a public server variable. Most state-oriented variables should be +declared with @code{defvoo} instead of @code{defvar}. + +In addition to the normal @code{defvar} parameters, it takes a list of +variables in the parent back ends to map the variable to when executing +a function in those back ends. + +@lisp +(defvoo nndir-directory nil + "Where nndir will look for groups." + nnml-current-directory nnmh-current-directory) +@end lisp + +This means that @code{nnml-current-directory} will be set to +@code{nndir-directory} when an @code{nnml} function is called on behalf +of @code{nndir}. (The same with @code{nnmh}.) + +@item nnoo-define-basics +This macro defines some common functions that almost all back ends should +have. + +@lisp +(nnoo-define-basics nndir) +@end lisp + +@item deffoo +This macro is just like @code{defun} and takes the same parameters. In +addition to doing the normal @code{defun} things, it registers the +function as being public so that other back ends can inherit it. + +@item nnoo-map-functions +This macro allows mapping of functions from the current back end to +functions from the parent back ends. + +@lisp +(nnoo-map-functions nndir + (nnml-retrieve-headers 0 nndir-current-group 0 0) + (nnmh-request-article 0 nndir-current-group 0 0)) +@end lisp + +This means that when @code{nndir-retrieve-headers} is called, the first, +third, and fourth parameters will be passed on to +@code{nnml-retrieve-headers}, while the second parameter is set to the +value of @code{nndir-current-group}. + +@item nnoo-import +This macro allows importing functions from back ends. It should be the +last thing in the source file, since it will only define functions that +haven't already been defined. + +@lisp +(nnoo-import nndir + (nnmh + nnmh-request-list + nnmh-request-newgroups) + (nnml)) +@end lisp + +This means that calls to @code{nndir-request-list} should just be passed +on to @code{nnmh-request-list}, while all public functions from +@code{nnml} that haven't been defined in @code{nndir} yet should be +defined now. + +@end table + +Below is a slightly shortened version of the @code{nndir} back end. + +@lisp +;;; @r{nndir.el --- single directory newsgroup access for Gnus} +;; @r{Copyright (C) 1995,96 Free Software Foundation, Inc.} + +;;; @r{Code:} + +(require 'nnheader) +(require 'nnmh) +(require 'nnml) +(require 'nnoo) +(eval-when-compile (require 'cl)) + +(nnoo-declare nndir + nnml nnmh) + +(defvoo nndir-directory nil + "Where nndir will look for groups." + nnml-current-directory nnmh-current-directory) + +(defvoo nndir-nov-is-evil nil + "*Non-nil means that nndir will never retrieve NOV headers." + nnml-nov-is-evil) + +(defvoo nndir-current-group "" + nil + nnml-current-group nnmh-current-group) +(defvoo nndir-top-directory nil nil nnml-directory nnmh-directory) +(defvoo nndir-get-new-mail nil nil nnml-get-new-mail nnmh-get-new-mail) + +(defvoo nndir-status-string "" nil nnmh-status-string) +(defconst nndir-version "nndir 1.0") + +;;; @r{Interface functions.} + +(nnoo-define-basics nndir) + +(deffoo nndir-open-server (server &optional defs) + (setq nndir-directory + (or (cadr (assq 'nndir-directory defs)) + server)) + (unless (assq 'nndir-directory defs) + (push `(nndir-directory ,server) defs)) + (push `(nndir-current-group + ,(file-name-nondirectory + (directory-file-name nndir-directory))) + defs) + (push `(nndir-top-directory + ,(file-name-directory (directory-file-name nndir-directory))) + defs) + (nnoo-change-server 'nndir server defs)) + +(nnoo-map-functions nndir + (nnml-retrieve-headers 0 nndir-current-group 0 0) + (nnmh-request-article 0 nndir-current-group 0 0) + (nnmh-request-group nndir-current-group 0 0) + (nnmh-close-group nndir-current-group 0)) + +(nnoo-import nndir + (nnmh + nnmh-status-message + nnmh-request-list + nnmh-request-newgroups)) + +(provide 'nndir) +@end lisp + + +@node Hooking New Back Ends Into Gnus +@subsubsection Hooking New Back Ends Into Gnus + +@vindex gnus-valid-select-methods +@findex gnus-declare-backend +Having Gnus start using your new back end is rather easy---you just +declare it with the @code{gnus-declare-backend} functions. This will +enter the back end into the @code{gnus-valid-select-methods} variable. + +@code{gnus-declare-backend} takes two parameters---the back end name and +an arbitrary number of @dfn{abilities}. + +Here's an example: + +@lisp +(gnus-declare-backend "nnchoke" 'mail 'respool 'address) +@end lisp + +The above line would then go in the @file{nnchoke.el} file. + +The abilities can be: + +@table @code +@item mail +This is a mailish back end---followups should (probably) go via mail. +@item post +This is a newsish back end---followups should (probably) go via news. +@item post-mail +This back end supports both mail and news. +@item none +This is neither a post nor mail back end---it's something completely +different. +@item respool +It supports respooling---or rather, it is able to modify its source +articles and groups. +@item address +The name of the server should be in the virtual server name. This is +true for almost all back ends. +@item prompt-address +The user should be prompted for an address when doing commands like +@kbd{B} in the group buffer. This is true for back ends like +@code{nntp}, but not @code{nnmbox}, for instance. +@end table + + +@node Mail-like Back Ends +@subsubsection Mail-like Back Ends + +One of the things that separate the mail back ends from the rest of the +back ends is the heavy dependence by most of the mail back ends on +common functions in @file{nnmail.el}. For instance, here's the +definition of @code{nnml-request-scan}: + +@lisp +(deffoo nnml-request-scan (&optional group server) + (setq nnml-article-file-alist nil) + (nnmail-get-new-mail 'nnml 'nnml-save-nov nnml-directory group)) +@end lisp + +It simply calls @code{nnmail-get-new-mail} with a few parameters, +and @code{nnmail} takes care of all the moving and splitting of the +mail. + +This function takes four parameters. + +@table @var +@item method +This should be a symbol to designate which back end is responsible for +the call. + +@item exit-function +This function should be called after the splitting has been performed. + +@item temp-directory +Where the temporary files should be stored. + +@item group +This optional argument should be a group name if the splitting is to be +performed for one group only. +@end table + +@code{nnmail-get-new-mail} will call @var{back-end}@code{-save-mail} to +save each article. @var{back-end}@code{-active-number} will be called to +find the article number assigned to this article. + +The function also uses the following variables: +@var{back-end}@code{-get-new-mail} (to see whether to get new mail for +this back end); and @var{back-end}@code{-group-alist} and +@var{back-end}@code{-active-file} to generate the new active file. +@var{back-end}@code{-group-alist} should be a group-active alist, like +this: + +@example +(("a-group" (1 . 10)) + ("some-group" (34 . 39))) +@end example + + +@node Score File Syntax +@subsection Score File Syntax + +Score files are meant to be easily parseable, but yet extremely +mallable. It was decided that something that had the same read syntax +as an Emacs Lisp list would fit that spec. + +Here's a typical score file: + +@lisp +(("summary" + ("win95" -10000 nil s) + ("Gnus")) + ("from" + ("Lars" -1000)) + (mark -100)) +@end lisp + +BNF definition of a score file: + +@example +score-file = "" / "(" *element ")" +element = rule / atom +rule = string-rule / number-rule / date-rule +string-rule = "(" quote string-header quote space *string-match ")" +number-rule = "(" quote number-header quote space *number-match ")" +date-rule = "(" quote date-header quote space *date-match ")" +quote = +string-header = "subject" / "from" / "references" / "message-id" / + "xref" / "body" / "head" / "all" / "followup" +number-header = "lines" / "chars" +date-header = "date" +string-match = "(" quote quote [ "" / [ space score [ "" / + space date [ "" / [ space string-match-t ] ] ] ] ] ")" +score = "nil" / +date = "nil" / +string-match-t = "nil" / "s" / "substring" / "S" / "Substring" / + "r" / "regex" / "R" / "Regex" / + "e" / "exact" / "E" / "Exact" / + "f" / "fuzzy" / "F" / "Fuzzy" +number-match = "(" [ "" / [ space score [ "" / + space date [ "" / [ space number-match-t ] ] ] ] ] ")" +number-match-t = "nil" / "=" / "<" / ">" / ">=" / "<=" +date-match = "(" quote quote [ "" / [ space score [ "" / + space date [ "" / [ space date-match-t ] ] ] ] ")" +date-match-t = "nil" / "at" / "before" / "after" +atom = "(" [ required-atom / optional-atom ] ")" +required-atom = mark / expunge / mark-and-expunge / files / + exclude-files / read-only / touched +optional-atom = adapt / local / eval +mark = "mark" space nil-or-number +nil-or-number = "nil" / +expunge = "expunge" space nil-or-number +mark-and-expunge = "mark-and-expunge" space nil-or-number +files = "files" *[ space ] +exclude-files = "exclude-files" *[ space ] +read-only = "read-only" [ space "nil" / space "t" ] +adapt = "adapt" [ space "ignore" / space "t" / space adapt-rule ] +adapt-rule = "(" *[ *[ "(" ")" ] ")" +local = "local" *[ space "(" space
")" ] +eval = "eval" space +space = *[ " " / / ] +@end example + +Any unrecognized elements in a score file should be ignored, but not +discarded. + +As you can see, white space is needed, but the type and amount of white +space is irrelevant. This means that formatting of the score file is +left up to the programmer---if it's simpler to just spew it all out on +one looong line, then that's ok. + +The meaning of the various atoms are explained elsewhere in this +manual (@pxref{Score File Format}). + + +@node Headers +@subsection Headers + +Internally Gnus uses a format for storing article headers that +corresponds to the @acronym{NOV} format in a mysterious fashion. One could +almost suspect that the author looked at the @acronym{NOV} specification and +just shamelessly @emph{stole} the entire thing, and one would be right. + +@dfn{Header} is a severely overloaded term. ``Header'' is used in +RFC 1036 to talk about lines in the head of an article (e.g., +@code{From}). It is used by many people as a synonym for +``head''---``the header and the body''. (That should be avoided, in my +opinion.) And Gnus uses a format internally that it calls ``header'', +which is what I'm talking about here. This is a 9-element vector, +basically, with each header (ouch) having one slot. + +These slots are, in order: @code{number}, @code{subject}, @code{from}, +@code{date}, @code{id}, @code{references}, @code{chars}, @code{lines}, +@code{xref}, and @code{extra}. There are macros for accessing and +setting these slots---they all have predictable names beginning with +@code{mail-header-} and @code{mail-header-set-}, respectively. + +All these slots contain strings, except the @code{extra} slot, which +contains an alist of header/value pairs (@pxref{To From Newsgroups}). + + +@node Ranges +@subsection Ranges + +@sc{gnus} introduced a concept that I found so useful that I've started +using it a lot and have elaborated on it greatly. + +The question is simple: If you have a large amount of objects that are +identified by numbers (say, articles, to take a @emph{wild} example) +that you want to qualify as being ``included'', a normal sequence isn't +very useful. (A 200,000 length sequence is a bit long-winded.) + +The solution is as simple as the question: You just collapse the +sequence. + +@example +(1 2 3 4 5 6 10 11 12) +@end example + +is transformed into + +@example +((1 . 6) (10 . 12)) +@end example + +To avoid having those nasty @samp{(13 . 13)} elements to denote a +lonesome object, a @samp{13} is a valid element: + +@example +((1 . 6) 7 (10 . 12)) +@end example + +This means that comparing two ranges to find out whether they are equal +is slightly tricky: + +@example +((1 . 5) 7 8 (10 . 12)) +@end example + +and + +@example +((1 . 5) (7 . 8) (10 . 12)) +@end example + +are equal. In fact, any non-descending list is a range: + +@example +(1 2 3 4 5) +@end example + +is a perfectly valid range, although a pretty long-winded one. This is +also valid: + +@example +(1 . 5) +@end example + +and is equal to the previous range. + +Here's a BNF definition of ranges. Of course, one must remember the +semantic requirement that the numbers are non-descending. (Any number +of repetition of the same number is allowed, but apt to disappear in +range handling.) + +@example +range = simple-range / normal-range +simple-range = "(" number " . " number ")" +normal-range = "(" start-contents ")" +contents = "" / simple-range *[ " " contents ] / + number *[ " " contents ] +@end example + +Gnus currently uses ranges to keep track of read articles and article +marks. I plan on implementing a number of range operators in C if The +Powers That Be are willing to let me. (I haven't asked yet, because I +need to do some more thinking on what operators I need to make life +totally range-based without ever having to convert back to normal +sequences.) + + +@node Group Info +@subsection Group Info + +Gnus stores all permanent info on groups in a @dfn{group info} list. +This list is from three to six elements (or more) long and exhaustively +describes the group. + +Here are two example group infos; one is a very simple group while the +second is a more complex one: + +@example +("no.group" 5 ((1 . 54324))) + +("nnml:my.mail" 3 ((1 . 5) 9 (20 . 55)) + ((tick (15 . 19)) (replied 3 6 (19 . 3))) + (nnml "") + ((auto-expire . t) (to-address . "ding@@gnus.org"))) +@end example + +The first element is the @dfn{group name}---as Gnus knows the group, +anyway. The second element is the @dfn{subscription level}, which +normally is a small integer. (It can also be the @dfn{rank}, which is a +cons cell where the @code{car} is the level and the @code{cdr} is the +score.) The third element is a list of ranges of read articles. The +fourth element is a list of lists of article marks of various kinds. +The fifth element is the select method (or virtual server, if you like). +The sixth element is a list of @dfn{group parameters}, which is what +this section is about. + +Any of the last three elements may be missing if they are not required. +In fact, the vast majority of groups will normally only have the first +three elements, which saves quite a lot of cons cells. + +Here's a BNF definition of the group info format: + +@example +info = "(" group space ralevel space read + [ "" / [ space marks-list [ "" / [ space method [ "" / + space parameters ] ] ] ] ] ")" +group = quote quote +ralevel = rank / level +level = +rank = "(" level "." score ")" +score = +read = range +marks-lists = nil / "(" *marks ")" +marks = "(" range ")" +method = "(" *elisp-forms ")" +parameters = "(" *elisp-forms ")" +@end example + +Actually that @samp{marks} rule is a fib. A @samp{marks} is a +@samp{} consed on to a @samp{range}, but that's a bitch to say +in pseudo-BNF. + +If you have a Gnus info and want to access the elements, Gnus offers a +series of macros for getting/setting these elements. + +@table @code +@item gnus-info-group +@itemx gnus-info-set-group +@findex gnus-info-group +@findex gnus-info-set-group +Get/set the group name. + +@item gnus-info-rank +@itemx gnus-info-set-rank +@findex gnus-info-rank +@findex gnus-info-set-rank +Get/set the group rank (@pxref{Group Score}). + +@item gnus-info-level +@itemx gnus-info-set-level +@findex gnus-info-level +@findex gnus-info-set-level +Get/set the group level. + +@item gnus-info-score +@itemx gnus-info-set-score +@findex gnus-info-score +@findex gnus-info-set-score +Get/set the group score (@pxref{Group Score}). + +@item gnus-info-read +@itemx gnus-info-set-read +@findex gnus-info-read +@findex gnus-info-set-read +Get/set the ranges of read articles. + +@item gnus-info-marks +@itemx gnus-info-set-marks +@findex gnus-info-marks +@findex gnus-info-set-marks +Get/set the lists of ranges of marked articles. + +@item gnus-info-method +@itemx gnus-info-set-method +@findex gnus-info-method +@findex gnus-info-set-method +Get/set the group select method. + +@item gnus-info-params +@itemx gnus-info-set-params +@findex gnus-info-params +@findex gnus-info-set-params +Get/set the group parameters. +@end table + +All the getter functions take one parameter---the info list. The setter +functions take two parameters---the info list and the new value. + +The last three elements in the group info aren't mandatory, so it may be +necessary to extend the group info before setting the element. If this +is necessary, you can just pass on a non-@code{nil} third parameter to +the three final setter functions to have this happen automatically. + + +@node Extended Interactive +@subsection Extended Interactive +@cindex interactive +@findex gnus-interactive + +Gnus extends the standard Emacs @code{interactive} specification +slightly to allow easy use of the symbolic prefix (@pxref{Symbolic +Prefixes}). Here's an example of how this is used: + +@lisp +(defun gnus-summary-increase-score (&optional score symp) + (interactive (gnus-interactive "P\ny")) + ... + ) +@end lisp + +The best thing to do would have been to implement +@code{gnus-interactive} as a macro which would have returned an +@code{interactive} form, but this isn't possible since Emacs checks +whether a function is interactive or not by simply doing an @code{assq} +on the lambda form. So, instead we have @code{gnus-interactive} +function that takes a string and returns values that are usable to +@code{interactive}. + +This function accepts (almost) all normal @code{interactive} specs, but +adds a few more. + +@table @samp +@item y +@vindex gnus-current-prefix-symbol +The current symbolic prefix---the @code{gnus-current-prefix-symbol} +variable. + +@item Y +@vindex gnus-current-prefix-symbols +A list of the current symbolic prefixes---the +@code{gnus-current-prefix-symbol} variable. + +@item A +The current article number---the @code{gnus-summary-article-number} +function. + +@item H +The current article header---the @code{gnus-summary-article-header} +function. + +@item g +The current group name---the @code{gnus-group-group-name} +function. + +@end table + + +@node Emacs/XEmacs Code +@subsection Emacs/XEmacs Code +@cindex XEmacs +@cindex Emacsen + +While Gnus runs under Emacs, XEmacs and Mule, I decided that one of the +platforms must be the primary one. I chose Emacs. Not because I don't +like XEmacs or Mule, but because it comes first alphabetically. + +This means that Gnus will byte-compile under Emacs with nary a warning, +while XEmacs will pump out gigabytes of warnings while byte-compiling. +As I use byte-compilation warnings to help me root out trivial errors in +Gnus, that's very useful. + +I've also consistently used Emacs function interfaces, but have used +Gnusey aliases for the functions. To take an example: Emacs defines a +@code{run-at-time} function while XEmacs defines a @code{start-itimer} +function. I then define a function called @code{gnus-run-at-time} that +takes the same parameters as the Emacs @code{run-at-time}. When running +Gnus under Emacs, the former function is just an alias for the latter. +However, when running under XEmacs, the former is an alias for the +following function: + +@lisp +(defun gnus-xmas-run-at-time (time repeat function &rest args) + (start-itimer + "gnus-run-at-time" + `(lambda () + (,function ,@@args)) + time repeat)) +@end lisp + +This sort of thing has been done for bunches of functions. Gnus does +not redefine any native Emacs functions while running under XEmacs---it +does this @code{defalias} thing with Gnus equivalents instead. Cleaner +all over. + +In the cases where the XEmacs function interface was obviously cleaner, +I used it instead. For example @code{gnus-region-active-p} is an alias +for @code{region-active-p} in XEmacs, whereas in Emacs it is a function. + +Of course, I could have chosen XEmacs as my native platform and done +mapping functions the other way around. But I didn't. The performance +hit these indirections impose on Gnus under XEmacs should be slight. + + +@node Various File Formats +@subsection Various File Formats + +@menu +* Active File Format:: Information on articles and groups available. +* Newsgroups File Format:: Group descriptions. +@end menu + + +@node Active File Format +@subsubsection Active File Format + +The active file lists all groups available on the server in +question. It also lists the highest and lowest current article numbers +in each group. + +Here's an excerpt from a typical active file: + +@example +soc.motss 296030 293865 y +alt.binaries.pictures.fractals 3922 3913 n +comp.sources.unix 1605 1593 m +comp.binaries.ibm.pc 5097 5089 y +no.general 1000 900 y +@end example + +Here's a pseudo-BNF definition of this file: + +@example +active = *group-line +group-line = group spc high-number spc low-number spc flag +group = +spc = " " +high-number = +low-number = +flag = "y" / "n" / "m" / "j" / "x" / "=" group +@end example + +For a full description of this file, see the manual pages for +@samp{innd}, in particular @samp{active(5)}. + + +@node Newsgroups File Format +@subsubsection Newsgroups File Format + +The newsgroups file lists groups along with their descriptions. Not all +groups on the server have to be listed, and not all groups in the file +have to exist on the server. The file is meant purely as information to +the user. + +The format is quite simple; a group name, a tab, and the description. +Here's the definition: + +@example +newsgroups = *line +line = group tab description +group = +tab = +description = +@end example + + +@page +@node Emacs for Heathens +@section Emacs for Heathens + +Believe it or not, but some people who use Gnus haven't really used +Emacs much before they embarked on their journey on the Gnus Love Boat. +If you are one of those unfortunates whom ``@kbd{C-M-a}'', ``kill the +region'', and ``set @code{gnus-flargblossen} to an alist where the key +is a regexp that is used for matching on the group name'' are magical +phrases with little or no meaning, then this appendix is for you. If +you are already familiar with Emacs, just ignore this and go fondle your +cat instead. + +@menu +* Keystrokes:: Entering text and executing commands. +* Emacs Lisp:: The built-in Emacs programming language. +@end menu + + +@node Keystrokes +@subsection Keystrokes + +@itemize @bullet +@item +Q: What is an experienced Emacs user? + +@item +A: A person who wishes that the terminal had pedals. +@end itemize + +Yes, when you use Emacs, you are apt to use the control key, the shift +key and the meta key a lot. This is very annoying to some people +(notably @code{vi}le users), and the rest of us just love the hell out +of it. Just give up and submit. Emacs really does stand for +``Escape-Meta-Alt-Control-Shift'', and not ``Editing Macros'', as you +may have heard from other disreputable sources (like the Emacs author). + +The shift keys are normally located near your pinky fingers, and are +normally used to get capital letters and stuff. You probably use it all +the time. The control key is normally marked ``CTRL'' or something like +that. The meta key is, funnily enough, never marked as such on any +keyboard. The one I'm currently at has a key that's marked ``Alt'', +which is the meta key on this keyboard. It's usually located somewhere +to the left hand side of the keyboard, usually on the bottom row. + +Now, us Emacs people don't say ``press the meta-control-m key'', +because that's just too inconvenient. We say ``press the @kbd{C-M-m} +key''. @kbd{M-} is the prefix that means ``meta'' and ``C-'' is the +prefix that means ``control''. So ``press @kbd{C-k}'' means ``press +down the control key, and hold it down while you press @kbd{k}''. +``Press @kbd{C-M-k}'' means ``press down and hold down the meta key and +the control key and then press @kbd{k}''. Simple, ay? + +This is somewhat complicated by the fact that not all keyboards have a +meta key. In that case you can use the ``escape'' key. Then @kbd{M-k} +means ``press escape, release escape, press @kbd{k}''. That's much more +work than if you have a meta key, so if that's the case, I respectfully +suggest you get a real keyboard with a meta key. You can't live without +it. + + + +@node Emacs Lisp +@subsection Emacs Lisp + +Emacs is the King of Editors because it's really a Lisp interpreter. +Each and every key you tap runs some Emacs Lisp code snippet, and since +Emacs Lisp is an interpreted language, that means that you can configure +any key to run any arbitrary code. You just, like, do it. + +Gnus is written in Emacs Lisp, and is run as a bunch of interpreted +functions. (These are byte-compiled for speed, but it's still +interpreted.) If you decide that you don't like the way Gnus does +certain things, it's trivial to have it do something a different way. +(Well, at least if you know how to write Lisp code.) However, that's +beyond the scope of this manual, so we are simply going to talk about +some common constructs that you normally use in your @file{~/.gnus.el} +file to customize Gnus. (You can also use the @file{~/.emacs} file, but +in order to set things of Gnus up, it is much better to use the +@file{~/.gnus.el} file, @xref{Startup Files}.) + +If you want to set the variable @code{gnus-florgbnize} to four (4), you +write the following: + +@lisp +(setq gnus-florgbnize 4) +@end lisp + +This function (really ``special form'') @code{setq} is the one that can +set a variable to some value. This is really all you need to know. Now +you can go and fill your @file{~/.gnus.el} file with lots of these to +change how Gnus works. + +If you have put that thing in your @file{~/.gnus.el} file, it will be +read and @code{eval}ed (which is Lisp-ese for ``run'') the next time you +start Gnus. If you want to change the variable right away, simply say +@kbd{C-x C-e} after the closing parenthesis. That will @code{eval} the +previous ``form'', which is a simple @code{setq} statement here. + +Go ahead---just try it, if you're located at your Emacs. After you +@kbd{C-x C-e}, you will see @samp{4} appear in the echo area, which +is the return value of the form you @code{eval}ed. + +Some pitfalls: + +If the manual says ``set @code{gnus-read-active-file} to @code{some}'', +that means: + +@lisp +(setq gnus-read-active-file 'some) +@end lisp + +On the other hand, if the manual says ``set @code{gnus-nntp-server} to +@samp{nntp.ifi.uio.no}'', that means: + +@lisp +(setq gnus-nntp-server "nntp.ifi.uio.no") +@end lisp + +So be careful not to mix up strings (the latter) with symbols (the +former). The manual is unambiguous, but it can be confusing. + +@page +@include gnus-faq.texi + +@node GNU Free Documentation License +@chapter GNU Free Documentation License +@include doclicense.texi + +@node Index +@chapter Index +@printindex cp + +@node Key Index +@chapter Key Index +@printindex ky + +@summarycontents +@contents +@bye + +@iftex +@iflatex +\end{document} +@end iflatex +@end iftex + +@c Local Variables: +@c mode: texinfo +@c coding: iso-8859-1 +@c End: + +@ignore + arch-tag: c9fa47e7-78ca-4681-bda9-9fef45d1c819 +@end ignore diff --cc doc/misc/info.texi index 285ef09554e,00000000000..333e331b354 mode 100644,000000..100644 --- a/doc/misc/info.texi +++ b/doc/misc/info.texi @@@ -1,1503 -1,0 +1,1510 @@@ +\input texinfo.tex @c -*-texinfo-*- +@c We must \input texinfo.tex instead of texinfo, otherwise make +@c distcheck in the Texinfo distribution fails, because the texinfo Info +@c file is made first, and texi2dvi must include . first in the path. +@comment %**start of header +@setfilename info.info +@settitle Info +@syncodeindex fn cp +@syncodeindex vr cp +@syncodeindex ky cp +@comment %**end of header + +@copying +This file describes how to use Info, the on-line, menu-driven GNU +documentation system. + +Copyright @copyright{} 1989, 1992, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with the Front-Cover texts being ``A GNU +Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the +license is included in the section entitled ``GNU Free Documentation +License'' in the Emacs manual. + +(a) The FSF's Back-Cover Text is: ``You have freedom to copy and +modify this GNU Manual, like GNU software. Buying copies from GNU +Press supports the FSF in developing GNU and promoting software +freedom.'' + +This document is part of a collection distributed under the GNU Free +Documentation License. If you want to distribute this document +separately from the collection, you can do so by adding a copy of the +license to the document, as described in section 6 of the license. +@end quotation +@end copying + +@dircategory Texinfo documentation system +@direntry +* Info: (info). How to use the documentation browsing system. +@end direntry + +@titlepage +@title Info +@subtitle The online, hyper-text GNU documentation system +@author Brian Fox +@author and the GNU Texinfo community +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage + +@contents + +@ifnottex +@node Top +@top Info: An Introduction + +The GNU Project distributes most of its on-line manuals in the +@dfn{Info format}, which you read using an @dfn{Info reader}. You are +probably using an Info reader to read this now. + +There are two primary Info readers: @code{info}, a stand-alone program +designed just to read Info files, and the @code{info} package in GNU +Emacs, a general-purpose editor. At present, only the Emacs reader +supports using a mouse. + +@ifinfo +If you are new to the Info reader and want to learn how to use it, +type the command @kbd{h} now. It brings you to a programmed +instruction sequence. + +To read about advanced Info commands, type @kbd{n} twice. This +brings you to @cite{Advanced Info Commands}, skipping over the `Getting +Started' chapter. +@end ifinfo +@end ifnottex + +@menu +* Getting Started:: Getting started using an Info reader. +* Advanced:: Advanced Info commands. +* Expert Info:: Info commands for experts. +* Index:: An index of topics, commands, and variables. +@end menu + +@node Getting Started, Advanced, Top, Top +@comment node-name, next, previous, up +@chapter Getting Started + +This first part of this Info manual describes how to get around inside +of Info. The second part of the manual describes various advanced +Info commands. The third part briefly explains how to generate Info +files from Texinfo files, and describes how to write an Info file +by hand. + +@ifnotinfo +This manual is primarily designed for browsing with an Info reader +program on a computer, so that you can try Info commands while reading +about them. Reading it on paper or with an HTML browser is less +effective, since you must take it on faith that the commands described +really do what the manual says. By all means go through this manual +now that you have it; but please try going through the on-line version +as well. + +@cindex Info reader, how to invoke +@cindex entering Info +There are two ways of looking at the online version of this manual: + +@enumerate +@item +Type @code{info} at your shell's command line. This approach uses a +stand-alone program designed just to read Info files. + +@item +Type @code{emacs} at the command line; then type @kbd{C-h i} +(@kbd{Control-h}, followed by @kbd{i}). This approach uses the Info +mode of the Emacs editor. +@end enumerate + +In either case, then type @kbd{mInfo} (just the letters), followed by +@key{RET}---the ``Return'' or ``Enter'' key. At this point, you should +be ready to follow the instructions in this manual as you read them on +the screen. +@c FIXME! (pesch@cygnus.com, 14 dec 1992) +@c Is it worth worrying about what-if the beginner goes to somebody +@c else's Emacs session, which already has an Info running in the middle +@c of something---in which case these simple instructions won't work? +@end ifnotinfo + +@menu +* Help-Small-Screen:: Starting Info on a Small Screen. +* Help:: How to use Info. +* Help-P:: Returning to the Previous node. +* Help-^L:: The Space, DEL, B and ^L commands. +* Help-Inv:: Invisible text in Emacs Info. +* Help-M:: Menus. +* Help-Xref:: Following cross-references. +* Help-Int:: Some intermediate Info commands. +* Help-Q:: Quitting Info. +@end menu + +@node Help-Small-Screen +@section Starting Info on a Small Screen + +@ifnotinfo +(In Info, you only see this section if your terminal has a small +number of lines; most readers pass by it without seeing it.) +@end ifnotinfo + +@cindex small screen, moving around +Since your terminal has a relatively small number of lines on its +screen, it is necessary to give you special advice at the beginning. + +If the entire text you are looking at fits on the screen, the text +@samp{All} will be displayed at the bottom of the screen. In the +stand-alone Info reader, it is displayed at the bottom right corner of +the screen; in Emacs, it is displayed on the modeline. If you see the +text @samp{Top} instead, it means that there is more text below that +does not fit. To move forward through the text and see another screen +full, press @key{SPC}, the Space bar. To move back up, press the key +labeled @samp{Backspace} or @samp{DEL} (on some keyboards, this key +might be labeled @samp{Delete}). + +@ifinfo +Here are 40 lines of junk, so you can try @key{SPC} and @key{DEL} and +see what they do. At the end are instructions of what you should do +next. + +@format +This is line 20 +This is line 21 +This is line 22 +This is line 23 +This is line 24 +This is line 25 +This is line 26 +This is line 27 +This is line 28 +This is line 29 +This is line 30 +This is line 31 +This is line 32 +This is line 33 +This is line 34 +This is line 35 +This is line 36 +This is line 37 +This is line 38 +This is line 39 +This is line 40 +This is line 41 +This is line 42 +This is line 43 +This is line 44 +This is line 45 +This is line 46 +This is line 47 +This is line 48 +This is line 49 +This is line 50 +This is line 51 +This is line 52 +This is line 53 +This is line 54 +This is line 55 +This is line 56 +This is line 57 +This is line 58 +This is line 59 +@end format + +If you have managed to get here, go back to the beginning with +@kbd{DEL} (or @key{BACKSPACE}), and come back here again, then you +understand the about the @samp{Space} and @samp{Backspace} keys. So +now type an @kbd{n}---just one character; don't type the quotes and +don't type the Return key afterward---to get to the normal start of +the course. +@end ifinfo + +@node Help, Help-P, Help-Small-Screen, Getting Started +@comment node-name, next, previous, up +@section How to use Info + +You are talking to the program Info, for reading documentation. + + There are two ways to use Info: from within Emacs or as a +stand-alone reader that you can invoke from a shell using the command +@command{info}. + +@cindex node, in Info documents + Right now you are looking at one @dfn{Node} of Information. +A node contains text describing a specific topic at a specific +level of detail. This node's topic is ``how to use Info''. The mode +line says that this is node @samp{Help} in the file @file{info}. + +@cindex header of Info node + The top line of a node is its @dfn{header}. This node's header +(look at it now) says that the @samp{Next} node after this one is the +node called @samp{Help-P}. An advanced Info command lets you go to +any node whose name you know. In the stand-alone Info reader program, +the header line shows the names of this node and the Info file as +well. In Emacs, the header line is displayed with a special typeface, +and remains at the top of the window all the time even if you scroll +through the node. + + Besides a @samp{Next}, a node can have a @samp{Previous} link, or an +@samp{Up} link, or both. As you can see, this node has all of these +links. + +@kindex n @r{(Info mode)} + Now it is time to move on to the @samp{Next} node, named @samp{Help-P}. + +@format +>> Type @kbd{n} to move there. Type just one character; + do not type the quotes and do not type a @key{RET} afterward. +@end format + +@noindent +@samp{>>} in the margin means it is really time to try a command. + +@format +>> If you are in Emacs and have a mouse, and if you already practiced + typing @kbd{n} to get to the next node, click now with the left + mouse button on the @samp{Next} link to do the same ``the mouse way''. +@end format + +@node Help-P, Help-^L, Help, Getting Started +@comment node-name, next, previous, up +@section Returning to the Previous node + +@kindex p @r{(Info mode)} +This node is called @samp{Help-P}. The @samp{Previous} node, as you see, +is @samp{Help}, which is the one you just came from using the @kbd{n} +command. Another @kbd{n} command now would take you to the next +node, @samp{Help-^L}. + +@format +>> But do not type @kbd{n} yet. First, try the @kbd{p} command, or + (in Emacs) click on the @samp{Prev} link. That takes you to + the @samp{Previous} node. Then use @kbd{n} to return here. +@end format + + If you read this in Emacs, you will see an @samp{Info} item in the +menu bar, close to its right edge. Clicking the mouse on the +@samp{Info} menu-bar item opens a menu of commands which include +@samp{Next} and @samp{Previous} (and also some others which you didn't yet +learn about). + + This all probably seems insultingly simple so far, but @emph{please +don't} start skimming. Things will get complicated soon enough! +Also, please do not try a new command until you are told it is time +to. You could make Info skip past an important warning that was +coming up. + +@format +>> Now do an @kbd{n}, or (in Emacs) click the middle mouse button on + the @samp{Next} link, to get to the node @samp{Help-^L} and learn more. +@end format + +@node Help-^L, Help-Inv, Help-P, Getting Started +@comment node-name, next, previous, up +@section The Space, DEL, B and ^L commands + + This node's mode line tells you that you are now at node +@samp{Help-^L}, and the header line tells you that @kbd{p} would get +you back to @samp{Help-P}. The node's title is highlighted and may be +underlined as well; it says what the node is about. + + This is a big node and it does not all fit on your display screen. +You can tell that there is more that is not visible because you +can see the text @samp{Top} rather than @samp{All} near the bottom of +the screen. + +@kindex SPC @r{(Info mode)} +@kindex DEL @r{(Info mode)} +@kindex BACKSPACE @r{(Info mode)} +@findex Info-scroll-up +@findex Info-scroll-down + The @key{SPC}, @key{BACKSPACE} (or @key{DEL})@footnote{The key which +we call ``Backspace or DEL'' in this manual is labeled differently on +different keyboards. Look for a key which is a little ways above the +@key{ENTER} or @key{RET} key and which you normally use outside Emacs +to erase the character before the cursor, i.e.@: the character you +typed last. It might be labeled @samp{Backspace} or @samp{<-} or +@samp{DEL}, or sometimes @samp{Delete}.} and @kbd{b} commands exist to +allow you to ``move around'' in a node that does not all fit on the +screen at once. @key{SPC} moves forward, to show what was below the +bottom of the screen. @key{DEL} or @key{BACKSPACE} moves backward, to +show what was above the top of the screen (there is not anything above +the top until you have typed some spaces). + +@format +>> Now try typing a @key{SPC} (afterward, type a @key{BACKSPACE} to + return here). +@end format + + When you type the @key{SPC}, the two lines that were at the bottom of +the screen appear at the top, followed by more lines. @key{DEL} or +@key{BACKSPACE} takes the two lines from the top and moves them to the +bottom, @emph{usually}, but if there are not a full screen's worth of +lines above them they may not make it all the way to the bottom. + + If you are reading this in Emacs, note that the header line is +always visible, never scrolling off the display. That way, you can +always see the @samp{Next}, @samp{Prev}, and @samp{Up} links, and you +can conveniently go to one of these links at any time by +clicking the middle mouse button on the link. + +@cindex reading Info documents top to bottom +@cindex Info documents as tutorials + @key{SPC} and @key{DEL} not only move forward and backward through +the current node. They also move between nodes. @key{SPC} at the end +of a node moves to the next node; @key{DEL} (or @key{BACKSPACE}) at +the beginning of a node moves to the previous node. In effect, these +commands scroll through all the nodes in an Info file as a single +logical sequence. You can read an entire manual top to bottom by just +typing @key{SPC}, and move backward through the entire manual from +bottom to top by typing @key{DEL} (or @key{BACKSPACE}). + + In this sequence, a node's subnodes appear following their parent. +If a node has a menu, @key{SPC} takes you into the subnodes listed in +the menu, one by one. Once you reach the end of a node, and have seen +all of its subnodes, @key{SPC} takes you to the next node or to the +parent's next node. + +@kindex PAGEUP @r{(Info mode)} +@kindex PAGEDOWN @r{(Info mode)} + Many keyboards nowadays have two scroll keys labeled @samp{PageUp} +and @samp{PageDown} (or maybe @samp{Prior} and @samp{Next}). If your +keyboard has these keys, you can use them to move forward and backward +through the text of one node, like @key{SPC} and @key{BACKSPACE} (or +@key{DEL}). However, @key{PAGEUP} and @key{PAGEDOWN} keys never +scroll beyond the beginning or the end of the current node. + +@kindex C-l @r{(Info mode)} + If your screen is ever garbaged, you can tell Info to display it +again by typing @kbd{C-l} (@kbd{Control-L}---that is, hold down +@key{CTRL} and type @kbd{L} or @kbd{l}). + +@format +>> Type @kbd{C-l} now. +@end format + +@kindex b @r{(Info mode)} + To move back to the beginning of the node you are on, you can type +the @key{BACKSPACE} key (or @key{DEL}) many times. You can also type +@kbd{b} just once. @kbd{b} stands for ``beginning.'' + +@format +>> Try that now. (We have put in enough verbiage to push this past + the first screenful, but screens are so big nowadays that perhaps it + isn't enough. You may need to shrink your Emacs or Info window.) + Then come back, by typing @key{SPC} one or more times. +@end format + +@kindex ? @r{(Info mode)} +@findex Info-summary + You have just learned a considerable number of commands. If you +want to use one but have trouble remembering which, you should type +@kbd{?}, which displays a brief list of commands. When you are +finished looking at the list, make it go away by typing @key{SPC} +repeatedly. + +@format +>> Type a @key{?} now. Press @key{SPC} to see consecutive screenfuls of + the list until finished. Then type @key{SPC} several times. If + you are using Emacs, the help will then go away automatically. +@end format + + (If you are using the stand-alone Info reader, type @kbd{C-x 0} to +return here, that is---press and hold @key{CTRL}, type an @kbd{x}, +then release @key{CTRL} and @kbd{x}, and press @kbd{0}; that's a zero, +not the letter ``o''.) + + From now on, you will encounter large nodes without warning, and +will be expected to know how to use @key{SPC} and @key{BACKSPACE} to +move around in them without being told. Since not all terminals have +the same size screen, it would be impossible to warn you anyway. + +@format +>> Now type @kbd{n}, or click the middle mouse button on the @samp{Next} link, + to visit the next node. +@end format + +@node Help-Inv, Help-M, Help-^L, Getting Started +@comment node-name, next, previous, up +@section Invisible text in Emacs Info + + Before discussing menus, we need to make some remarks that are only +relevant to users reading Info using Emacs. Users of the stand-alone +version can skip this node by typing @kbd{]} now. + +@cindex invisible text in Emacs + In Emacs, certain text that appears in the stand-alone version is +normally hidden, technically because it has the @samp{invisibility} +property. Invisible text is really a part of the text. It becomes +visible (by default) after killing and yanking, it appears in printed +output, it gets saved to file just like any other text, and so on. +Thus it is useful to know it is there. + +@findex visible-mode +You can make invisible text visible by using the command @kbd{M-x +visible-mode}. Visible mode is a minor mode, so using the command a +second time will make the text invisible again. Watch the effects of +the command on the ``menu'' below and the top line of this node. + +If you prefer to @emph{always} see the invisible text, you can set +@code{Info-hide-note-references} to @code{nil}. Enabling Visible mode +permanently is not a real alternative, because Emacs Info also uses +(although less extensively) another text property that can change the +text being displayed, the @samp{display} property. Only the +invisibility property is affected by Visible mode. When, in this +tutorial, we refer to the @samp{Emacs} behavior, we mean the +@emph{default} Emacs behavior. + +Now type @kbd{]}, to learn about the @kbd{]} and @kbd{[} commands. + +@menu +* ]: Help-]. Node telling about ]. +* stuff: Help-]. Same node. +* Help-]:: Yet again, same node. +@end menu + +@node Help-], , , Help-Inv +@subsection The @kbd{]} and @kbd{[} commands + +If you type @kbd{n} now, you get an error message saying that this +node has no next node. Similarly, if you type @kbd{p}, the error +message tells you that there is no previous node. (The exact message +depends on the Info reader you use.) This is because @kbd{n} and +@kbd{p} carry you to the next and previous node @emph{at the same +level}. The present node is contained in a menu (see next) of the +node you came from, and hence is considered to be at a lower level. +It is the only node in the previous node's menu (even though it was +listed three times). Hence it has no next or previous node that +@kbd{n} or @kbd{p} could move to. + +If you systematically move through a manual by typing @kbd{n}, you run +the risk of skipping many nodes. You do not run this risk if you +systematically use @kbd{@key{SPC}}, because, when you scroll to the +bottom of a node and type another @kbd{@key{SPC}}, then this carries +you to the following node in the manual @emph{regardless of level}. +If you immediately want to go to that node, without having to scroll +to the bottom of the screen first, you can type @kbd{]}. + +Similarly, @kbd{@key{BACKSPACE}} carries you to the preceding node +regardless of level, after you scrolled to the beginning of the +present node. If you want to go to the preceding node immediately, +you can type @kbd{[}. + +For instance, typing this sequence will come back here in three steps: +@kbd{[ n [}. To do the same backward, type @kbd{] p ]}. + +Now type @kbd{]} to go to the next node and learn about menus. + +@node Help-M, Help-Xref, Help-Inv, Getting Started +@comment node-name, next, previous, up +@section Menus and the @kbd{m} command + +@cindex menus in an Info document +@cindex Info menus + With only the @kbd{n} (next), @kbd{p} (previous), @kbd{@key{SPC}}, +@kbd{@key{BACKSPACE}}, @kbd{]} and @kbd{[} commands for moving between +nodes, nodes are restricted to a linear sequence. Menus allow a +branching structure. A menu is a list of other nodes you can move to. +It is actually just part of the text of the node formatted specially +so that Info can interpret it. The beginning of a menu is always +identified by a line which starts with @w{@samp{* Menu:}}. A node +contains a menu if and only if it has a line in it which starts that +way. The only menu you can use at any moment is the one in the node +you are in. To use a menu in any other node, you must move to that +node first. + + After the start of the menu, each line that starts with a @samp{*} +identifies one subtopic. The line usually contains a brief name for +the subtopic (followed by a @samp{:}, normally hidden in Emacs), the +name of the node that talks about that subtopic (again, normally +hidden in Emacs), and optionally some further description of the +subtopic. Lines in the menu that do not start with a @samp{*} have no +special meaning---they are only for the human reader's benefit and do +not define additional subtopics. Here is an example: + +@example +* Foo: Node about FOO. This tells about FOO. +@end example + +The subtopic name is Foo, and the node describing it is @samp{Node +about FOO}. The rest of the line is just for the reader's +Information. [[ But this line is not a real menu item, simply because +there is no line above it which starts with @w{@samp{* Menu:}}. Also, +in a real menu item, the @samp{*} would appear at the very start of +the line. This is why the ``normally hidden'' text in Emacs, namely +@samp{: Node about FOO.}, is actually visible in this example, even +when Visible mode is off.]] + + When you use a menu to go to another node (in a way that will be +described soon), what you specify is the subtopic name, the first +thing in the menu line. Info uses it to find the menu line, extracts +the node name from it, and goes to that node. The reason that there +is both a subtopic name and a node name is that the node name must be +meaningful to the computer and may therefore have to be ugly looking. +The subtopic name can be chosen just to be convenient for the user to +specify. Often the node name is convenient for the user to specify +and so both it and the subtopic name are the same. There is an +abbreviation for this: + +@example +* Foo:: This tells about FOO. +@end example + +@noindent +This means that the subtopic name and node name are the same; they are +both @samp{Foo}. (The @samp{::} is normally hidden in Emacs.) + +@format +>> Now use @key{SPC} to find the menu in this node, then come back to + the front with a @kbd{b} and some @key{SPC}s. As you see, a menu is + actually visible in its node. If you cannot find a menu in a node + by looking at it, then the node does not have a menu and the + @kbd{m} command is not available. +@end format + +If you keep typing @key{SPC} once the menu appears on the screen, it +will move to another node (the first one in the menu). If that +happens, type @key{BACKSPACE} to come back. + +@kindex m @r{(Info mode)} + The command to go to one of the subnodes is @kbd{m}. This is very +different from the commands you have used: it is a command that +prompts you for more input. + + The Info commands you know do not need additional input; when you +type one of them, Info processes it instantly and then is ready for +another command. The @kbd{m} command is different: it needs to know +the @dfn{name of the subtopic}. Once you have typed @kbd{m}, Info +tries to read the subtopic name. + + Now, in the stand-alone Info, look for the line containing many +dashes near the bottom of the screen. (This is the stand-alone +equivalent for the mode line in Emacs.) There is one more line +beneath that one, but usually it is blank. (In Emacs, this is the +echo area.) When it is blank, Info is ready for a command, such as +@kbd{n} or @kbd{b} or @key{SPC} or @kbd{m}. If that line contains +text ending in a colon, it means Info is reading more input for the +last command. You can't type an Info command then, because Info is +trying to read input, not commands. You must either give the input +and finish the command you started, or type @kbd{Control-g} to cancel +the command. When you have done one of those things, the input entry +line becomes blank again. Then you can type Info commands again. + +@findex Info-menu + The command to go to a subnode via a menu is @kbd{m}. After you type +the @kbd{m}, the line at the bottom of the screen says @samp{Menu item: }. +You must then type the name of the subtopic you want, and end it with +a @key{RET}. + +@cindex abbreviating Info subnodes + You can abbreviate the subtopic name. If the abbreviation is not +unique, the first matching subtopic is chosen. Some menus put +the shortest possible abbreviation for each subtopic name in capital +letters, so you can see how much you need to type. It does not +matter whether you use upper case or lower case when you type the +subtopic. You should not put any spaces at the end, or inside of the +item name, except for one space where a space appears in the item in +the menu. + +@cindex completion of Info node names + You can also use the @dfn{completion} feature to help enter the +subtopic name. If you type the @key{TAB} key after entering part of a +name, it will fill in more of the name---as much as Info can deduce +from the part you have entered. + + If you move the cursor to one of the menu subtopic lines, then you do +not need to type the argument: you just type a @key{RET}, and it +stands for the subtopic of the line you are on. You can also click +the middle mouse button directly on the subtopic line to go there. + +Here is a menu to give you a chance to practice. This menu gives you +three ways of going to one place, Help-FOO: + +@menu +* Foo: Help-FOO. A node you can visit for fun. +* Bar: Help-FOO. We have made two ways to get to the same place. +* Help-FOO:: And yet another! +@end menu + +(Turn Visible mode on if you are using Emacs.) + +@format +>> Now type just an @kbd{m} and see what happens: +@end format + + Now you are ``inside'' an @kbd{m} command. Commands cannot be used +now; the next thing you will type must be the name of a subtopic. + + You can change your mind about doing the @kbd{m} by typing +@kbd{Control-g}. + +@format +>> Try that now; notice the bottom line clear. +@end format + +@format +>> Then type another @kbd{m}. +@end format + +@format +>> Now type @kbd{BAR}, the item name. Do not type @key{RET} yet. +@end format + + While you are typing the item name, you can use the @key{DEL} (or +@key{BACKSPACE}) key to cancel one character at a time if you make a +mistake. + +@format +>> Press @key{DEL} to cancel the @samp{R}. You could type another @kbd{R} + to replace it. But you do not have to, since @samp{BA} is a valid + abbreviation. +@end format + +@format +>> Now you are ready to go. Type a @key{RET}. +@end format + + After visiting @samp{Help-FOO}, you should return here. + + Another way to move to the menu subtopic lines and between them is +to type @key{TAB}. Each time you type a @key{TAB}, you move to the +next subtopic line. To move to a previous subtopic line in the +stand-alone reader, type @kbd{M-@key{TAB}}---that is, press and hold +the @key{META} key and then press @key{TAB}. (On some keyboards, the +@key{META} key might be labeled @samp{Alt}.) In Emacs Info, type +@kbd{S-@key{TAB}} to move to a previous subtopic line (press and hold +the @key{Shift} key and then press @key{TAB}). + + Once you move cursor to a subtopic line, press @key{RET} to go to +that subtopic's node. + +@cindex mouse support in Info mode +@kindex Mouse-2 @r{(Info mode)} + If your terminal supports a mouse, you have yet another way of going +to a subtopic. Move your mouse pointer to the subtopic line, +somewhere between the beginning @samp{*} and the colon @samp{:} which +ends the subtopic's brief name. You will see the subtopic's name +change its appearance (usually, its background color will change), and +the shape of the mouse pointer will change if your platform supports +that. After a while, if you leave the mouse on that spot, a small +window will pop up, saying ``Mouse-2: go to that node,'' or the same +message may appear at the bottom of the screen. + + @kbd{Mouse-2} is the second button of your mouse counting from the +left---the middle button on a 3-button mouse. (On a 2-button mouse, +you may have to press both buttons together to ``press the middle +button''.) The message tells you pressing @kbd{Mouse-2} with the +current position of the mouse pointer (on subtopic in the menu) will +go to that subtopic. + +@findex Info-mouse-follow-nearest-node + More generally, @kbd{Mouse-2} in an Info buffer finds the nearest +link to another node and goes there. For example, near a cross +reference it acts like @kbd{f}, in a menu it acts like @kbd{m}, on the +node's header line it acts like @kbd{n}, @kbd{p}, or @kbd{u}, etc. At +end of the node's text @kbd{Mouse-2} moves to the next node, or up if +there's no next node. + +@format +>> Type @kbd{n} to see more commands. +@end format + +@node Help-FOO, , , Help-M +@subsection The @kbd{u} command + + Congratulations! This is the node @samp{Help-FOO}. It has an @samp{Up} +pointer @samp{Help-M}, the node you just came from via the @kbd{m} +command. This is the usual convention---the nodes you reach from a menu +have @samp{Up} nodes that lead back to the menu. Menus move Down in the +tree, and @samp{Up} moves Up. @samp{Previous}, on the other hand, is +usually used to ``stay on the same level but go backwards''. + +@kindex u @r{(Info mode)} +@findex Info-up + You can go back to the node @samp{Help-M} by typing the command +@kbd{u} for ``Up''. This puts you at the menu subtopic line pointing +to the subnode that the @kbd{u} command brought you from. (Some Info +readers may put you at the @emph{front} of the node instead---to get +back to where you were reading, you have to type some @key{SPC}s.) + + Another way to go Up is to click @kbd{Mouse-2} on the @samp{Up} +pointer shown in the header line (provided that you have a mouse). + +@format +>> Now type @kbd{u} to move back up to @samp{Help-M}. +@end format + +@node Help-Xref, Help-Int, Help-M, Getting Started +@comment node-name, next, previous, up +@section Following Cross-References + +@cindex cross references in Info documents + In Info documentation, you will see many @dfn{cross references}. +Cross references look like this: @xref{Help-Cross, Cross}. That text +is a real, live cross reference, whose name is @samp{Cross} and which +points to the node named @samp{Help-Cross}. (The node name is hidden +in Emacs. Do @kbd{M-x visible-mode} to show or hide it.) + +@kindex f @r{(Info mode)} +@findex Info-follow-reference + You can follow a cross reference by moving the cursor to it and +press @key{RET}, just as in a menu. In Emacs, you can also click +@kbd{Mouse-1} on a cross reference to follow it; you can see that the +cross reference is mouse-sensitive by moving the mouse pointer to the +reference and watching how the underlying text and the mouse pointer +change in response. + + Another way to follow a cross reference is to type @kbd{f} and then +specify the name of the cross reference (in this case, @samp{Cross}) +as an argument. For this command, it does not matter where the cursor +was. If the cursor is on or near a cross reference, @kbd{f} suggests +that reference name in parentheses as the default; typing @key{RET} +will follow that reference. However, if you type a different +reference name, @kbd{f} will follow the other reference which has that +name. + +@format +>> Type @kbd{f}, followed by @kbd{Cross}, and then @key{RET}. +@end format + + As you enter the reference name, you can use the @key{DEL} (or +@key{BACKSPACE}) key to edit your input. If you change your mind +about following any reference, you can use @kbd{Control-g} to cancel +the command. Completion is available in the @kbd{f} command; you can +complete among all the cross reference names in the current node by +typing a @key{TAB}. + + To get a list of all the cross references in the current node, you +can type @kbd{?} after an @kbd{f}. The @kbd{f} continues to await a +cross reference name even after displaying the list, so if you don't +actually want to follow a reference, you should type a @kbd{Control-g} +to cancel the @kbd{f}. + +@format +>> Type @kbd{f?} to get a list of the cross references in this node. Then + type a @kbd{Control-g} and see how the @samp{f} gives up. +@end format + + The @key{TAB}, @kbd{M-@key{TAB}} and @kbd{S-@key{TAB}} keys, +which move between menu items in a menu, also move between cross +references outside of menus. + + Sometimes a cross reference (or a node) can lead to another file (in +other words another ``manual''), or, on occasion, even a file on a +remote machine (although Info files distributed with Emacs or the +stand-alone Info avoid using remote links). Such a cross reference +looks like this: @xref{Top,, Overview of Texinfo, texinfo, Texinfo: +The GNU Documentation Format}. (After following this link, type +@kbd{l} to get back to this node.) Here the name @samp{texinfo} +between parentheses refers to the file name. This file name appears +in cross references and node names if it differs from the current +file, so you can always know that you are going to be switching to +another manual and which one. + +However, Emacs normally hides some other text in cross-references. +If you put your mouse over the cross reference, then the information +appearing in a separate box (tool tip) or in the echo area will show +the full cross-reference including the file name and the node name of +the cross reference. If you have a mouse, just leave it over the +cross reference @xref{Top,, Overview of Texinfo, texinfo, Texinfo: +The GNU Documentation Format}, and watch what happens. If you +always like to have that information visible without having to move +your mouse over the cross reference, use @kbd{M-x visible-mode}, or +set @code{Info-hide-note-references} to a value other than @code{t} +(@pxref{Emacs Info Variables}). + +@format +>> Now type @kbd{n} to learn more commands. +@end format + +@node Help-Int, Help-Q, Help-Xref, Getting Started +@comment node-name, next, previous, up +@section Some intermediate Info commands + + The introductory course is almost over; please continue +a little longer to learn some intermediate-level commands. + + Most Info files have an index, which is actually a large node +containing little but a menu. The menu has one menu item for each +topic listed in the index. (As a special feature, menus for indices +may also include the line number within the node of the index entry. +This allows Info readers to go to the exact line of an entry, not just +the start of the containing node.) + + You can get to the index from the main menu of the file with the +@kbd{m} command and the name of the index node; then you can use the +@kbd{m} command again in the index node to go to the node that +describes the topic you want. + + There is also a short-cut Info command, @kbd{i}, which does all of +that for you. It searches the index for a given topic (a string) and +goes to the node which is listed in the index for that topic. +@xref{Search Index}, for a full explanation. + +@kindex l @r{(Info mode)} +@findex Info-history-back +@cindex going back in Info history + If you have been moving around to different nodes and wish to +retrace your steps, the @kbd{l} command (@kbd{l} for @dfn{last}) will +do that, one node-step at a time. As you move from node to node, Info +records the nodes where you have been in a special history list. The +@kbd{l} command revisits nodes in the history list; each successive +@kbd{l} command moves one step back through the history. + +@format +>> Try typing @kbd{p p n} and then three @kbd{l}'s, pausing in between +to see what each @kbd{l} does. You should wind up right back here. +@end format + + Note the difference between @kbd{l} and @kbd{p}: @kbd{l} moves to +where @emph{you} last were, whereas @kbd{p} always moves to the node +which the header says is the @samp{Previous} node (from this node, the +@samp{Prev} link leads to @samp{Help-Xref}). + +@kindex r @r{(Info mode)} +@findex Info-history-forward +@cindex going forward in Info history + You can use the @kbd{r} command (@code{Info-history-forward} in Emacs) +to revisit nodes in the history list in the forward direction, so that +@kbd{r} will return you to the node you came from by typing @kbd{l}. + ++@kindex L @r{(Info mode)} ++@findex Info-history ++@cindex history list of visited nodes ++ The @kbd{L} command (@code{Info-history} in Emacs) creates a virtual ++node that contains a list of all nodes you visited. You can select ++a previously visited node from this menu to revisit it. ++ +@kindex d @r{(Info mode)} +@findex Info-directory +@cindex go to Directory node + The @kbd{d} command (@code{Info-directory} in Emacs) gets you +instantly to the Directory node. This node, which is the first one +you saw when you entered Info, has a menu which leads (directly or +indirectly, through other menus), to all the nodes that exist. The +Directory node lists all the manuals and other Info documents that +are, or could be, installed on your system. + +@format +>> Try doing a @kbd{d}, then do an @kbd{l} to return here (yes, + @emph{do} return). +@end format + +@kindex t @r{(Info mode)} +@findex Info-top-node +@cindex go to Top node + The @kbd{t} command moves to the @samp{Top} node of the manual. +This is useful if you want to browse the manual's main menu, or select +some specific top-level menu item. The Emacs command run by @kbd{t} +is @code{Info-top-node}. + +@format +>> Now type @kbd{n} to see the last node of the course. +@end format + + @xref{Advanced}, for more advanced Info features. + +@c If a menu appears at the end of this node, remove it. +@c It is an accident of the menu updating command. + +@node Help-Q, , Help-Int, Getting Started +@comment node-name, next, previous, up +@section Quitting Info + +@kindex q @r{(Info mode)} +@findex Info-exit +@cindex quitting Info mode + To get out of Info, back to what you were doing before, type @kbd{q} +for @dfn{Quit}. This runs @code{Info-exit} in Emacs. + + This is the end of the basic course on using Info. You have learned +how to move in an Info document, and how to follow menus and cross +references. This makes you ready for reading manuals top to bottom, +as new users should do when they learn a new package. + + Another set of Info commands is useful when you need to find +something quickly in a manual---that is, when you need to use a manual +as a reference rather than as a tutorial. We urge you to learn +these search commands as well. If you want to do that now, follow this +cross reference to @ref{Advanced}. + +Yet another set of commands are meant for experienced users; you can +find them by looking in the Directory node for documentation on Info. +Finding them will be a good exercise in using Info in the usual +manner. + +@format +>> Type @kbd{d} to go to the Info directory node; then type + @kbd{mInfo} and Return, to get to the node about Info and + see what other help is available. +@end format + + +@node Advanced +@chapter Advanced Info Commands + + This chapter describes various advanced Info commands. (If you +are using a stand-alone Info reader, there are additional commands +specific to it, which are documented in several chapters of @ref{Top,, +GNU Info, info-stnd, GNU Info}.) + +@kindex C-q @r{(Info mode)} + One advanced command useful with most of the others described here +is @kbd{C-q}, which ``quotes'' the next character so that it is +entered literally (@pxref{Inserting Text,,,emacs,The GNU Emacs +Manual}). For example, pressing @kbd{?} ordinarily brings up a list +of completion possibilities. If you want to (for example) search for +an actual @samp{?} character, the simplest way is to insert it using +@kbd{C-q ?}. This works the same in Emacs and stand-alone Info. + +@menu +* Search Text:: How to search Info documents. +* Search Index:: How to search the indices for specific subjects. +* Go to node:: How to go to a node by name. +* Choose menu subtopic:: How to choose a menu subtopic by its number. +* Create Info buffer:: How to create a new Info buffer in Emacs. +* Emacs Info Variables:: Variables modifying the behavior of Emacs Info. +@end menu + + +@node Search Text, Search Index, , Advanced +@comment node-name, next, previous, up +@section How to search Info documents + +@cindex searching Info documents +@cindex Info document as a reference + The commands which move between and inside nodes allow you to read +the entire manual or its large portions. But what if you need to find +some information in the manual as fast as you can, and you don't know +or don't remember in what node to look for it? This need arises when +you use a manual as a @dfn{reference}, or when it is impractical to +read the entire manual before you start using the programs it +describes. + + Info has powerful searching facilities that let you find things +quickly. You can search either the manual text or its indices. + +@kindex s @r{(Info mode)} +@findex Info-search + The @kbd{s} command allows you to search a whole Info file for a string. +It switches to the next node if and when that is necessary. You +type @kbd{s} followed by the string to search for, terminated by +@key{RET}. To search for the same string again, just @kbd{s} followed +by @key{RET} will do. The file's nodes are scanned in the order +they are in the file, which has no necessary relationship to the +order that they may be in the tree structure of menus and @samp{next} +pointers. But normally the two orders are not very different. In any +case, you can always look at the mode line to find out what node you have +reached, if the header is not visible (this can happen, because @kbd{s} +puts your cursor at the occurrence of the string, not at the beginning +of the node). + +@kindex M-s @r{(Info mode)} + In Emacs, @kbd{Meta-s} is equivalent to @kbd{s}. That is for +compatibility with other GNU packages that use @kbd{M-s} for a similar +kind of search command. Both @kbd{s} and @kbd{M-s} run in Emacs the +command @code{Info-search}. + +@kindex C-s @r{(Info mode)} +@kindex C-r @r{(Info mode)} +@findex isearch + Instead of using @kbd{s} in Emacs Info and in the stand-alone Info, +you can use an incremental search started with @kbd{C-s} or @kbd{C-r}. +It can search through multiple Info nodes. @xref{Incremental Search,,, +emacs, The GNU Emacs Manual}. In Emacs, you can disable this behavior +by setting the variable @code{Info-isearch-search} to @code{nil} +(@pxref{Emacs Info Variables}). + +@node Search Index, Go to node, Search Text, Advanced +@comment node-name, next, previous, up +@section How to search the indices for specific subjects + +@cindex searching Info indices +@kindex i @r{(Info mode)} +@findex Info-index + Since most topics in the manual should be indexed, you should try +the index search first before the text search. The @kbd{i} command +prompts you for a subject and then looks up that subject in the +indices. If it finds an index entry with the subject you typed, it +goes to the node to which that index entry points. You should browse +through that node to see whether the issue you are looking for is +described there. If it isn't, type @kbd{,} one or more times to go +through additional index entries which match your subject. + + The @kbd{i} command and subsequent @kbd{,} commands find all index +entries which include the string you typed @emph{as a substring}. +For each match, Info shows in the echo area the full index entry it +found. Often, the text of the full index entry already gives you +enough information to decide whether it is relevant to what you are +looking for, so we recommend that you read what Info shows in the echo +area before looking at the node it displays. + + Since @kbd{i} looks for a substring, you can search for subjects even +if you are not sure how they are spelled in the index. For example, +suppose you want to find something that is pertinent to commands which +complete partial input (e.g., when you type @key{TAB}). If you want +to catch index entries that refer to ``complete,'' ``completion,'' and +``completing,'' you could type @kbd{icomplet@key{RET}}. + + Info documents which describe programs should index the commands, +options, and key sequences that the program provides. If you are +looking for a description of a command, an option, or a key, just type +their names when @kbd{i} prompts you for a topic. For example, if you +want to read the description of what the @kbd{C-l} key does, type +@kbd{iC-l@key{RET}} literally. + +@findex info-apropos +@findex index-apropos +If you aren't sure which manual documents the topic you are looking +for, try the @kbd{M-x info-apropos} command in Emacs, or the @kbd{M-x +index-apropos} command in the stand-alone reader. It prompts for +a string and then looks up that string in all the indices of all the +Info documents installed on your system. + +@node Go to node, Choose menu subtopic, Search Index, Advanced +@comment node-name, next, previous, up +@section @kbd{g} goes to a node by name + +@kindex g @r{(Info mode)} +@findex Info-goto-node +@cindex go to a node by name + If you know a node's name, you can go there by typing @kbd{g}, the +name, and @key{RET}. Thus, @kbd{gTop@key{RET}} would go to the node +called @samp{Top} in this file. (This is equivalent to @kbd{t}, see +@ref{Help-Int}.) @kbd{gGo to node@key{RET}} would come back here. + + Unlike @kbd{m}, @kbd{g} does not allow the use of abbreviations. +But it does allow completion, so you can type @key{TAB} to complete a +partial node name. + +@cindex go to another Info file + To go to a node in another file, you can include the file name in the +node name by putting it at the front, in parentheses. Thus, +@kbd{g(dir)Top@key{RET}} would go to the Info Directory node, which is +the node @samp{Top} in the Info file @file{dir}. Likewise, +@kbd{g(emacs)Top@key{RET}} goes to the top node of the Emacs manual. + + The node name @samp{*} specifies the whole file. So you can look at +all of the current file by typing @kbd{g*@key{RET}} or all of any +other file with @kbd{g(@var{filename})*@key{RET}}. + +@node Choose menu subtopic, Create Info buffer, Go to node, Advanced +@comment node-name, next, previous, up +@section @kbd{1}--@kbd{9} choose a menu subtopic by its number + +@kindex 1 @r{through} 9 @r{(Info mode)} +@findex Info-nth-menu-item +@cindex select @var{n}'th menu item + If you begrudge each character of type-in which your system requires, +you might like to use the commands @kbd{1}, @kbd{2}, @kbd{3}, @kbd{4}, +@dots{}, @kbd{9}. They are short for the @kbd{m} command together +with a name of a menu subtopic. @kbd{1} goes through the first item +in the current node's menu; @kbd{2} goes through the second item, etc. +In the stand-alone reader, @kbd{0} goes through the last menu item; +this is so you need not count how many entries are there. + + If your display supports multiple fonts, colors or underlining, and +you are using Emacs' Info mode to read Info files, the third, sixth +and ninth menu items have a @samp{*} that stands out, either in color +or in some other attribute, such as underline; this makes it easy to +see at a glance which number to use for an item. + + Some terminals don't support either multiple fonts, colors or +underlining. If you need to actually count items, it is better to use +@kbd{m} instead, and specify the name, or use @key{TAB} to quickly +move between menu items. + +@node Create Info buffer, Emacs Info Variables, Choose menu subtopic, Advanced +@comment node-name, next, previous, up +@section @kbd{M-n} creates a new independent Info buffer in Emacs + +@kindex M-n @r{(Info mode)} +@findex clone-buffer +@cindex multiple Info buffers + If you are reading Info in Emacs, you can select a new independent +Info buffer in a new Emacs window by typing @kbd{M-n}. The new buffer +starts out as an exact copy of the old one, but you will be able to +move independently between nodes in the two buffers. (In Info mode, +@kbd{M-n} runs the Emacs command @code{clone-buffer}.) + + In Emacs Info, you can also produce new Info buffers by giving a +numeric prefix argument to the @kbd{m} and @kbd{g} commands. @kbd{C-u +m} and @kbd{C-u g} go to a new node in exactly the same way that +@kbd{m} and @kbd{g} do, but they do so in a new Info buffer which they +select in another window. + + Another way to produce new Info buffers in Emacs is to use a numeric +prefix argument for the @kbd{C-h i} command (@code{info}) which +switches to the Info buffer with that number. Thus, @kbd{C-u 2 C-h i} +switches to the buffer @samp{*info*<2>}, creating it if necessary. + +@node Emacs Info Variables, , Create Info buffer, Advanced +@comment node-name, next, previous, up +@section Emacs Info-mode Variables + +The following variables may modify the behavior of Info-mode in Emacs; +you may wish to set one or several of these variables interactively, +or in your init file. @xref{Examining, Examining and Setting +Variables, Examining and Setting Variables, emacs, The GNU Emacs +Manual}. The stand-alone Info reader program has its own set of +variables, described in @ref{Variables,, Manipulating Variables, +info-stnd, GNU Info}. + +@vtable @code +@item Info-directory-list +The list of directories to search for Info files. Each element is a +string (directory name) or @code{nil} (try default directory). If not +initialized Info uses the environment variable @env{INFOPATH} to +initialize it, or @code{Info-default-directory-list} if there is no +@env{INFOPATH} variable in the environment. + +If you wish to customize the Info directory search list for both Emacs +Info and stand-alone Info, it is best to set the @env{INFOPATH} +environment variable, since that applies to both programs. + +@item Info-additional-directory-list +A list of additional directories to search for Info documentation files. +These directories are not searched for merging the @file{dir} file. + +@item Info-mode-hook +Hooks run when @code{Info-mode} is called. By default, it contains +the hook @code{turn-on-font-lock} which enables highlighting of Info +files. You can change how the highlighting looks by customizing the +faces @code{info-node}, @code{info-xref}, @code{info-xref-visited}, +@code{info-header-xref}, @code{info-header-node}, @code{info-menu-header}, +@code{info-menu-star}, and @code{info-title-@var{n}} (where @var{n} +is the level of the section, a number between 1 and 4). To customize +a face, type @kbd{M-x customize-face @key{RET} @var{face} @key{RET}}, +where @var{face} is one of the face names listed here. + +@item Info-fontify-maximum-menu-size +Maximum size of menu to fontify if @code{font-lock-mode} is non-@code{nil}. + +@item Info-fontify-visited-nodes +If non-@code{nil}, menu items and cross-references pointing to visited +nodes are displayed in the @code{info-xref-visited} face. + +@item Info-use-header-line +If non-@code{nil}, Emacs puts in the Info buffer a header line showing +the @samp{Next}, @samp{Prev}, and @samp{Up} links. A header line does +not scroll with the rest of the buffer, making these links always +visible. + +@item Info-hide-note-references +As explained in earlier nodes, the Emacs version of Info normally +hides some text in menus and cross-references. You can completely +disable this feature, by setting this option to @code{nil}. Setting +it to a value that is neither @code{nil} nor @code{t} produces an +intermediate behavior, hiding a limited amount of text, but showing +all text that could potentially be useful. + +@item Info-scroll-prefer-subnodes +If set to a non-@code{nil} value, @key{SPC} and @key{BACKSPACE} (or +@key{DEL}) keys in a menu visit subnodes of the current node before +scrolling to its end or beginning, respectively. For example, if the +node's menu appears on the screen, the next @key{SPC} moves to a +subnode indicated by the following menu item. Setting this option to +@code{nil} results in behavior similar to the stand-alone Info reader +program, which visits the first subnode from the menu only when you +hit the end of the current node. The default is @code{nil}. + +@item Info-isearch-search +If non-@code{nil}, isearch in Info searches through multiple nodes. + +@item Info-enable-active-nodes +When set to a non-@code{nil} value, allows Info to execute Lisp code +associated with nodes. The Lisp code is executed when the node is +selected. The Lisp code to be executed should follow the node +delimiter (the @samp{DEL} character) and an @samp{execute: } tag, like +this: + +@example +^_execute: (message "This is an active node!") +@end example +@end vtable + + +@node Expert Info +@chapter Info for Experts + + This chapter explains how to write an Info file by hand. However, +in most cases, writing a Texinfo file is better, since you can use it +to make a printed manual or produce other formats, such as HTML and +DocBook, as well as for generating Info files. + +The @code{makeinfo} command converts a Texinfo file into an Info file; +@code{texinfo-format-region} and @code{texinfo-format-buffer} are GNU +Emacs functions that do the same. + +@xref{Top,, Overview of Texinfo, texinfo, Texinfo: The GNU +Documentation Format}, for how to write a Texinfo file. + +@xref{Creating an Info File,,, texinfo, Texinfo: The GNU Documentation +Format}, for how to create an Info file from a Texinfo file. + +@xref{Installing an Info File,,, texinfo, Texinfo: The GNU +Documentation Format}, for how to install an Info file after you +have created one. + +However, if you want to edit an Info file manually and install it manually, +here is how. + +@menu +* Add:: Describes how to add new nodes to the hierarchy. + Also tells what nodes look like. +* Menus:: How to add to or create menus in Info nodes. +* Cross-refs:: How to add cross-references to Info nodes. +* Tags:: How to make tags tables for Info files. +* Checking:: Checking an Info File. +@end menu + +@node Add, Menus, , Expert Info +@comment node-name, next, previous, up +@section Adding a new node to Info + +To add a new topic to the list in the Info directory, you must: + +@enumerate +@item +Create some nodes, in some file, to document that topic. +@item +Put that topic in the menu in the directory. @xref{Menus, Menu}. +@end enumerate + +@cindex node delimiters + The new node can live in an existing documentation file, or in a new +one. It must have a @samp{^_} character before it (invisible to the +user; this node has one but you cannot see it), and it ends with either +a @samp{^_}, a @samp{^L} (``formfeed''), or the end of file.@footnote{If +you put in a @samp{^L} to end a new node, be sure that there is a +@samp{^_} after it to start the next one, since @samp{^L} cannot +@emph{start} a node. Also, a nicer way to make a node boundary be a +page boundary as well is to put a @samp{^L} @emph{right after} the +@samp{^_}.} + + The @samp{^_} starting a node must be followed by a newline or a +@samp{^L} newline, after which comes the node's header line. The +header line must give the node's name (by which Info finds it), and +state the names of the @samp{Next}, @samp{Previous}, and @samp{Up} +nodes (if there are any). As you can see, this node's @samp{Up} node +is the node @samp{Expert Info}. The @samp{Next} node is @samp{Menus}. + +@cindex node header line format +@cindex format of node headers + The keywords @dfn{Node}, @dfn{Next}, @dfn{Previous}, and @dfn{Up} +may appear in any order, anywhere in the header line, but the +recommended order is the one in this sentence. Each keyword must be +followed by a colon, spaces and tabs, and then the appropriate name. +The name may be terminated with a tab, a comma, or a newline. A space +does not end it; node names may contain spaces. The case of letters +in the names is insignificant. + +@cindex node name format +@cindex Directory node + A node name has two forms. A node in the current file is named by +what appears after the @samp{Node: } in that node's first line. For +example, this node's name is @samp{Add}. A node in another file is +named by @samp{(@var{filename})@var{node-within-file}}, as in +@samp{(info)Add} for this node. If the file name starts with @samp{./}, +then it is relative to the current directory; otherwise, it is +relative starting from the standard directory for Info files of your +site. The name @samp{(@var{filename})Top} can be abbreviated to just +@samp{(@var{filename})}. By convention, the name @samp{Top} is used +for the ``highest'' node in any single file---the node whose @samp{Up} +points out of the file. The @samp{Directory} node is @file{(dir)}, it +points to a file @file{dir} which holds a large menu listing all the +Info documents installed on your site. The @samp{Top} node of a +document file listed in the @samp{Directory} should have an @samp{Up: +(dir)} in it. + +@cindex unstructured documents + The node name @kbd{*} is special: it refers to the entire file. +Thus, @kbd{g*} shows you the whole current file. The use of the +node @kbd{*} is to make it possible to make old-fashioned, +unstructured files into nodes of the tree. + + The @samp{Node:} name, in which a node states its own name, must not +contain a file name, since when Info searches for a node, it does not +expect a file name to be there. The @samp{Next}, @samp{Previous} and +@samp{Up} names may contain them. In this node, since the @samp{Up} +node is in the same file, it was not necessary to use one. + + Note that the nodes in this file have a file name in the header +line. The file names are ignored by Info, but they serve as comments +to help identify the node for the user. + +@node Menus, Cross-refs, Add, Expert Info +@comment node-name, next, previous, up +@section How to Create Menus + + Any node in the Info hierarchy may have a @dfn{menu}---a list of subnodes. +The @kbd{m} command searches the current node's menu for the topic which it +reads from the terminal. + +@cindex menu and menu entry format + A menu begins with a line starting with @w{@samp{* Menu:}}. The +rest of the line is a comment. After the starting line, every line +that begins with a @samp{* } lists a single topic. The name of the +topic---what the user must type at the @kbd{m}'s command prompt to +select this topic---comes right after the star and space, and is +followed by a colon, spaces and tabs, and the name of the node which +discusses that topic. The node name, like node names following +@samp{Next}, @samp{Previous} and @samp{Up}, may be terminated with a +tab, comma, or newline; it may also be terminated with a period. + + If the node name and topic name are the same, then rather than +giving the name twice, the abbreviation @samp{* @var{name}::} may be +used (and should be used, whenever possible, as it reduces the visual +clutter in the menu). + + It is considerate to choose the topic names so that they differ +from each other very near the beginning---this allows the user to type +short abbreviations. In a long menu, it is a good idea to capitalize +the beginning of each item name which is the minimum acceptable +abbreviation for it (a long menu is more than 5 or so entries). + + The nodes listed in a node's menu are called its ``subnodes,'' and it +is their ``superior''. They should each have an @samp{Up:} pointing at +the superior. It is often useful to arrange all or most of the subnodes +in a sequence of @samp{Next} and @samp{Previous} pointers so that +someone who wants to see them all need not keep revisiting the Menu. + + The Info Directory is simply the menu of the node @samp{(dir)Top}---that +is, node @samp{Top} in file @file{.../info/dir}. You can put new entries +in that menu just like any other menu. The Info Directory is @emph{not} the +same as the file directory called @file{info}. It happens that many of +Info's files live in that file directory, but they do not have to; and +files in that directory are not automatically listed in the Info +Directory node. + + Also, although the Info node graph is claimed to be a ``hierarchy,'' +in fact it can be @emph{any} directed graph. Shared structures and +pointer cycles are perfectly possible, and can be used if they are +appropriate to the meaning to be expressed. There is no need for all +the nodes in a file to form a connected structure. In fact, this file +has two connected components. You are in one of them, which is under +the node @samp{Top}; the other contains the node @samp{Help} which the +@kbd{h} command goes to. In fact, since there is no garbage +collector on the node graph, nothing terrible happens if a substructure +is not pointed to, but such a substructure is rather useless since nobody +can ever find out that it exists. + +@node Cross-refs, Tags, Menus, Expert Info +@comment node-name, next, previous, up +@section Creating Cross References + +@cindex cross reference format + A cross reference can be placed anywhere in the text, unlike a menu +item which must go at the front of a line. A cross reference looks +like a menu item except that it has @samp{*note} instead of @samp{*}. +It @emph{cannot} be terminated by a @samp{)}, because @samp{)}'s are +so often part of node names. If you wish to enclose a cross reference +in parentheses, terminate it with a period first. Here are two +examples of cross references pointers: + +@example +*Note details: commands. (See *note 3: Full Proof.) +@end example + +@noindent +@emph{These are just examples.} The places they ``lead to'' do not +really exist! + +@menu +* Help-Cross:: Target of a cross-reference. +@end menu + + +@node Help-Cross, , , Cross-refs +@subsection The node reached by the cross reference in Info + + This is the node reached by the cross reference named @samp{Cross}. + + While this node is specifically intended to be reached by a cross +reference, most cross references lead to nodes that ``belong'' +someplace else far away in the structure of an Info document. So you +cannot expect this node to have a @samp{Next}, @samp{Previous} or +@samp{Up} links pointing back to where you came from. In general, the +@kbd{l} (el) command is the only way to get back there. + +@format +>> Type @kbd{l} to return to the node where the cross reference was. +@end format + +@node Tags, Checking, Cross-refs, Expert Info +@comment node-name, next, previous, up +@section Tags Tables for Info Files + +@cindex tags tables in Info files + You can speed up the access to nodes of a large Info file by giving +it a tags table. Unlike the tags table for a program, the tags table for +an Info file lives inside the file itself and is used +automatically whenever Info reads in the file. + +@findex Info-tagify + To make a tags table, go to a node in the file using Emacs Info mode and type +@kbd{M-x Info-tagify}. Then you must use @kbd{C-x C-s} to save the +file. Info files produced by the @code{makeinfo} command that is part +of the Texinfo package always have tags tables to begin with. + +@cindex stale tags tables +@cindex update Info tags table + Once the Info file has a tags table, you must make certain it is up +to date. If you edit an Info file directly (as opposed to editing its +Texinfo source), and, as a result of deletion of text, any node moves back +more than a thousand characters in the file from the position +recorded in the tags table, Info will no longer be able to find that +node. To update the tags table, use the @code{Info-tagify} command +again. + + An Info file tags table appears at the end of the file and looks like +this: + +@example +^_^L +Tag Table: +File: info, Node: Cross-refs^?21419 +File: info, Node: Tags^?22145 +^_ +End Tag Table +@end example + +@noindent +Note that it contains one line per node, and this line contains +the beginning of the node's header (ending just after the node name), +a @samp{DEL} character, and the character position in the file of the +beginning of the node. + +@node Checking, , Tags, Expert Info +@section Checking an Info File + +When creating an Info file, it is easy to forget the name of a node when +you are making a pointer to it from another node. If you put in the +wrong name for a node, this is not detected until someone tries to go +through the pointer using Info. Verification of the Info file is an +automatic process which checks all pointers to nodes and reports any +pointers which are invalid. Every @samp{Next}, @samp{Previous}, and +@samp{Up} is checked, as is every menu item and every cross reference. In +addition, any @samp{Next} which does not have a @samp{Previous} pointing +back is reported. Only pointers within the file are checked, because +checking pointers to other files would be terribly slow. But those are +usually few. + +@findex Info-validate +To check an Info file, do @kbd{M-x Info-validate} while looking at any +node of the file with Emacs Info mode. + +@node Index +@unnumbered Index + +This is an alphabetical listing of all the commands, variables, and +topics discussed in this document. + +@printindex cp + +@bye + +@ignore + arch-tag: 965c1638-01d6-4156-9227-b10418b9d8e8 +@end ignore diff --cc etc/ChangeLog index 7024efa1967,b6db44b1e9b..ffdba84db2d --- a/etc/ChangeLog +++ b/etc/ChangeLog @@@ -73,58 -16,6 +73,62 @@@ * PROBLEMS (Mac OS X): Add alternative workaround for QuickTime updater breakage. +2007-08-26 Micha,Ak(Bl Cadilhac + + * NEWS: Say that PDF files are now the default for refcards. + + * fr-drdref.tex, fr-drdref.pdf: Move these to... + * fr-dired-ref.tex, fr-dired-ref.pdf: ... those names. + + * refcards/pdflayout.sty: New. Handle PDF layouts through + \pdfpagewidth and \pdfpageheight. + + * calccard.pdf, cs-dired-ref.pdf, cs-refcard.pdf, de-refcard.pdf: + * dired-ref.pdf, fr-drdref.pdf, fr-refcard.pdf, gnus-booklet.pdf: + * gnus-logo.pdf, gnus-refcard.pdf, orgcard.pdf, pl-refcard.pdf: + * pt-br-refcard.pdf, refcard.pdf, ru-refcard.pdf, sk-dired-ref.pdf: + * sk-refcard.pdf: Add PDF versions of the refcards. + + * calccard.ps, cs-dired-ref.ps, cs-refcard.ps, de-refcard.ps: + * dired-ref.ps, fr-drdref.ps, fr-refcard.ps, gnus-booklet.ps: + * gnus-logo.ps, gnus-refcard.ps, orgcard.ps, pl-refcard.ps: + * pt-br-refcard.ps, refcard.ps, ru-refcard.ps, sk-dired-ref.ps: + * sk-refcard.ps: Remove the PS versions of the refcards. + + * calccard.tex, fr-survival.tex, orgcard.tex, pl-refcard.tex: + * pt-br-refcard.tex, refcard.tex, survival.tex, vipcard.tex: + * viperCard.tex: Specify PDF layout, use a PDF `compile-command' local + variable. + + * cs-dired-ref.tex, cs-refcard.tex, cs-survival.tex, dired-ref.tex: + * fr-drdref.tex, sk-dired-ref.tex, sk-refcard.tex, sk-survival.tex: + Specify PDF layout. + + * fr-refcard.tex: Update copyright notice. Update the examples. Fix a + typo. Remove the `letterpaper' counter, specify PDF layout, use a PDF + `compile-command' local variable. + + * de-refcard.tex: Remove the `letterpaper' counter, specify PDF layout, + use a PDF `compile-command' local variable. + + * ru-refcard.tex: Use a PDF `compile-command' local variable. + + * Makefile: Add rules for creating the refcards in PDF, make them the + default. Change `fr-drdref' to `fr-dired-ref'. + +2007-08-23 Glenn Morris + + * Makefile (mostlyclean, clean, distclean, maintainer-clean): + Delete these targets since nothing uses them. + (SOURCES): Update. + Move comments to e/README. Remove license from now-trivial file. + + * e/README: New file, with most information formerly in Makefile. + ++2007-09-05 Jason Rumney ++ ++ * NEWS.22: Mention focus-follows-mouse change. ++ 2007-08-22 Karl Berry * refcard.tex: Updates for printing. @@@ -168,13 -33,9 +172,13 @@@ * TODO: `iff' item is dealt with. * GNUS-NEWS, NEWS, NEWS.1-17, NEWS.19, NEWS.21: Replace `iff'. +2007-08-01 Glenn Morris + + * NEWS: Add fortran-line-length, plus some more sections. + 2007-07-25 Glenn Morris - * Relicense all FSF files to GPLv3 or later. + * Relicense all FSF files to GPLv3 or later. * COPYING: Switch to GPLv3. diff --cc etc/NEWS.22 index 12b2044f64e,00000000000..2b7c82dd7b6 mode 100644,000000..100644 --- a/etc/NEWS.22 +++ b/etc/NEWS.22 @@@ -1,5476 -1,0 +1,5495 @@@ +GNU Emacs NEWS -- history of user-visible changes. + +Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 + Free Software Foundation, Inc. +See the end of the file for license conditions. + +Please send Emacs bug reports to bug-gnu-emacs@gnu.org. +If possible, use M-x report-emacs-bug. + +This file is about changes in Emacs version 22. + +See files NEWS.21, NEWS.20, NEWS.19, NEWS.18, and NEWS.1-17 for changes +in older Emacs versions. + +You can narrow news to a specific version by calling `view-emacs-news' +with a prefix argument or by typing C-u C-h C-n. + +* About external Lisp packages + +When you upgrade to Emacs 22 from a previous version, some older +versions of external Lisp packages are known to behave badly. +So in general, it is recommended that you upgrade to the latest +versions of any external Lisp packages that you are using. + +You should also be aware that many Lisp packages have been included +with Emacs 22 (see the extensive list below), and you should remove +any older versions of these packages to ensure that the Emacs 22 +version is used. You can use M-x list-load-path-shadows to find such +older packages. + +Some specific packages that are known to cause problems are given +below. Emacs tries to warn you about these through `bad-packages-alist'. + +** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version. + +** cua.el, cua-mode.el: remove old versions. + +* Installation Changes in Emacs 22.2 + +** Emacs is now licensed under the GNU GPL version 3 (or later). + +* Changes in Emacs 22.2 + +** `browse-url-emacs' loads a URL into an Emacs buffer. Handy for *.el URLs. + +** `bad-packages-alist' will warn about external packages that are known +to cause problems in this version of Emacs. + +** The values of `dired-recursive-deletes' and `dired-recursive-copies' +have been changed to `top'. This means that the user is asked once, +before deleting/copying the indicated directory recursively. + +** In Image mode, whenever the displayed image is wider and/or higher +than the window, the usual keys for moving the cursor cause the image +to be scrolled horizontally or vertically instead. + +** Scrollbars follow the system theme on Windows XP and later. +Windows XP introduced themed scrollbars, but applications have to take +special steps to use them. Emacs now has the appropriate resources linked +in to make it use the scrollbars from the system theme. + ++** focus-follows-mouse defaults to nil on MS Windows ++Previously this variable was incorrectly documented as having no effect ++on MS Windows, and the default was inappropriate for the majority of ++Windows installations. Users of software which modifies the behaviour of ++Windows to cause focus to follow the mouse will now need to explicitly set ++this variable. ++ ++** The command gdba has been removed as gdb works now for those cases where it ++was needed. In text command mode, if you have problems before execution has ++started, use M-x gud-gdb. ++ +* New Modes and Packages in Emacs 22.2 + +** bibtex-style-mode helps you write BibTeX's *.bst files. + +** The new package css-mode.el provides a major mode for editing CSS files. + +** The new package vera-mode.el provides a major mode for editing Vera files. + +** The new package socks.el implements the SOCKS v5 protocol. + +** VC + +*** VC backends can provide completion of revision names. + - *** VC has some support for Mercurial (hg). ++*** VC backends can provide extra menu entries to be added to the "Version Control" menu. ++This can be used to add menu entries for backend specific functions. ++ ++*** VC has some support for Mercurial (Hg). ++ ++*** VC has some support for Monotone (Mtn). + +*** VC has some support for Bazaar (Bzr). + +*** VC has some support for Git. + +* Lisp Changes in Emacs 22.2. + ++** The command `repeat' will no more attempt to repeat a command bound ++to an input event. ++ +** The function invisible-p returns non-nil if the character + after a specified position is invisible. + ++++ +** inhibit-modification-hooks is bound to t while running modification hooks. +As a happy consequence, after-change-functions and before-change-functions +are not bound to nil any more while running an (after|before)-change-function. + +** New function `window-full-width-p' returns t if a window is as wide +as its frame. + +** The new function `image-refresh' refreshes all images associated +with a given image specification. + +** The new function `split-string-and-unquote' does (what?) + +** The new function `combine-and-quote-strings' does (what?) + +* Installation Changes in Emacs 22.1 + +** You can build Emacs with Gtk+ widgets by specifying `--with-x-toolkit=gtk' +when you run configure. This requires Gtk+ 2.4 or newer. This port +provides a way to display multilingual text in menus (with some caveats). + +** The Emacs Lisp Reference Manual is now part of the distribution. + +The Emacs Lisp Reference Manual in Info format is built as part of the +Emacs build procedure and installed together with the Emacs User +Manual. A menu item was added to the menu bar to make it easily +accessible (Help->More Manuals->Emacs Lisp Reference). + +** The Introduction to Programming in Emacs Lisp manual is now part of +the distribution. + +This manual is now part of the standard distribution and is installed, +together with the Emacs User Manual, into the Info directory. A menu +item was added to the menu bar to make it easily accessible +(Help->More Manuals->Introduction to Emacs Lisp). + +** Leim is now part of the Emacs distribution. +You no longer need to download a separate tarball in order to build +Emacs with Leim. + +** Support for MacOS X was added. +See the files mac/README and mac/INSTALL for build instructions. + +** Mac OS 9 port now uses the Carbon API by default. You can also +create a non-Carbon build by specifying `NonCarbon' as a target. See +the files mac/README and mac/INSTALL for build instructions. + +** Support for a Cygwin build of Emacs was added. + +** Support for GNU/Linux systems on X86-64 machines was added. + +** Support for GNU/Linux systems on S390 machines was added. + +** Support for GNU/Linux systems on Tensilica Xtensa machines was added. + +** Support for FreeBSD/Alpha has been added. + +** New translations of the Emacs Tutorial are available in the +following languages: Brasilian Portuguese, Bulgarian, Chinese (both +with simplified and traditional characters), French, Russian, and +Italian. Type `C-u C-h t' to choose one of them in case your language +setup doesn't automatically select the right one. + +** New translations of the Emacs reference card are available in the +Brasilian Portuguese and Russian. The corresponding PostScript files +are also included. + +** A French translation of the `Emacs Survival Guide' is available. + +** Emacs now supports new configure options `--program-prefix', +`--program-suffix' and `--program-transform-name' that affect the names of +installed programs. + +** By default, Emacs now uses a setgid helper program to update game +scores. The directory ${localstatedir}/games/emacs is the normal +place for game scores to be stored. You can control this with the +configure option `--with-game-dir'. The specific user that Emacs uses +to own the game scores is controlled by `--with-game-user'. If access +to a game user is not available, then scores will be stored separately +in each user's home directory. + +** Emacs now includes support for loading image libraries on demand. +(Currently this feature is only used on MS Windows.) You can configure +the supported image types and their associated dynamic libraries by +setting the variable `image-library-alist'. + +** Emacs can now be built without sound support. + +** Emacs Lisp source files are compressed by default if `gzip' is available. + +** All images used in Emacs have been consolidated in etc/images and subdirs. +See also the changes to `find-image', documented below. + +** Emacs comes with a new set of icons. +These icons are displayed on the taskbar and/or titlebar when Emacs +runs in a graphical environment. Source files for these icons can be +found in etc/images/icons. (You can't change the icons displayed by +Emacs by changing these files directly. On X, the icon is compiled +into the Emacs executable; see gnu.h in the source tree. On MS +Windows, see nt/icons/emacs.ico.) + +** The `emacsserver' program has been removed, replaced with Lisp code. + +** The `yow' program has been removed. +Use the corresponding Emacs feature instead. + +** The Emacs terminal emulation in term.el uses a different terminfo name. +The Emacs terminal emulation in term.el now uses "eterm-color" as its +terminfo name, since term.el now supports color. + +** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the +contents of buffers from a core dump and save them to files easily, should +Emacs crash. + +** Building with -DENABLE_CHECKING does not automatically build with union +types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. + +** When pure storage overflows while dumping, Emacs now prints how +much pure storage it will approximately need. + + +* Startup Changes in Emacs 22.1 + +** Init file changes +If the init file ~/.emacs does not exist, Emacs will try +~/.emacs.d/init.el or ~/.emacs.d/init.elc. Likewise, if the shell init file +~/.emacs_SHELL is not found, Emacs will try ~/.emacs.d/init_SHELL.sh. + +** Emacs can now be invoked in full-screen mode on a windowed display. +When Emacs is invoked on a window system, the new command-line options +`--fullwidth', `--fullheight', and `--fullscreen' produce a frame +whose width, height, or both width and height take up the entire +screen size. (For now, this does not work with some window managers.) + +** Emacs now displays a splash screen by default even if command-line +arguments were given. The new command-line option --no-splash +disables the splash screen; see also the variable +`inhibit-splash-screen' (which is also aliased as +`inhibit-startup-message'). + +** New user option `inhibit-startup-buffer-menu'. +When loading many files, for instance with `emacs *', Emacs normally +displays a buffer menu. This option turns the buffer menu off. + +** New command line option -nbc or --no-blinking-cursor disables +the blinking cursor on graphical terminals. + +** The option --script FILE runs Emacs in batch mode and loads FILE. +It is useful for writing Emacs Lisp shell script files, because they +can start with this line: + + #!/usr/bin/emacs --script + +** The -f option, used from the command line to call a function, +now reads arguments for the function interactively if it is +an interactively callable function. + +** The option --directory DIR now modifies `load-path' immediately. +Directories are added to the front of `load-path' in the order they +appear on the command line. For example, with this command line: + + emacs -batch -L .. -L /tmp --eval "(require 'foo)" + +Emacs looks for library `foo' in the parent directory, then in /tmp, then +in the other directories in `load-path'. (-L is short for --directory.) + +** When you specify a frame size with --geometry, the size applies to +all frames you create. A position specified with --geometry only +affects the initial frame. + +** Emacs built for MS-Windows now behaves like Emacs on X does, +with respect to its frame position: if you don't specify a position +(in your .emacs init file, in the Registry, or with the --geometry +command-line option), Emacs leaves the frame position to the Windows' +window manager. + +** The command line option --no-windows has been changed to +--no-window-system. The old one still works, but is deprecated. + +** If the environment variable DISPLAY specifies an unreachable X display, +Emacs will now startup as if invoked with the --no-window-system option. + +** Emacs now reads the standard abbrevs file ~/.abbrev_defs +automatically at startup, if it exists. When Emacs offers to save +modified buffers, it saves the abbrevs too if they have changed. It +can do this either silently or asking for confirmation first, +according to the value of `save-abbrevs'. + +** New command line option -Q or --quick. +This is like using -q --no-site-file, but in addition it also disables +the fancy startup screen. + +** New command line option -D or --basic-display. +Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and +the blinking cursor. + +** The default is now to use a bitmap as the icon. +The command-line options --icon-type, -i have been replaced with +options --no-bitmap-icon, -nbi to turn the bitmap icon off. + +** If the environment variable EMAIL is defined, Emacs now uses its value +to compute the default value of `user-mail-address', in preference to +concatenation of `user-login-name' with the name of your host machine. + + +* Incompatible Editing Changes in Emacs 22.1 + +** You can now follow links by clicking Mouse-1 on the link. + +See below for more details. + +** When the undo information of the current command gets really large +(beyond the value of `undo-outer-limit'), Emacs discards it and warns +you about it. + +** When Emacs prompts for file names, SPC no longer completes the file name. +This is so filenames with embedded spaces could be input without the +need to quote the space with a C-q. The underlying changes in the +keymaps that are active in the minibuffer are described below under +"New keymaps for typing file names". + +If you want the old behavior back, put these two key bindings to your +~/.emacs init file: + + (define-key minibuffer-local-filename-completion-map + " " 'minibuffer-complete-word) + (define-key minibuffer-local-must-match-filename-map + " " 'minibuffer-complete-word) + +** The completion commands TAB, SPC and ? in the minibuffer apply only +to the text before point. If there is text in the buffer after point, +it remains unchanged. + +** In incremental search, C-w is changed. M-%, C-M-w and C-M-y are special. + +See below under "incremental search changes". + +** M-g is now a prefix key. +M-g g and M-g M-g run goto-line. +M-g n and M-g M-n run next-error (like C-x `). +M-g p and M-g M-p run previous-error. + +** C-u M-g M-g switches to the most recent previous buffer, +and goes to the specified line in that buffer. + +When goto-line starts to execute, if there's a number in the buffer at +point then it acts as the default argument for the minibuffer. + +** M-o now is the prefix key for setting text properties; +M-o M-o requests refontification. + +** C-x C-f RET (find-file), typing nothing in the minibuffer, is no longer +a special case. + +Since the default input is the current directory, this has the effect +of specifying the current directory. Normally that means to visit the +directory with Dired. + +You can get the old behavior by typing C-x C-f M-n RET, which fetches +the actual file name into the minibuffer. + +** In Dired's ! command (dired-do-shell-command), `*' and `?' now +control substitution of the file names only when they are surrounded +by whitespace. This means you can now use them as shell wildcards +too. If you want to use just plain `*' as a wildcard, type `*""'; the +doublequotes make no difference in the shell, but they prevent +special treatment in `dired-do-shell-command'. + +** The info-search bindings on C-h C-f, C-h C-k and C-h C-i +have been moved to C-h F, C-h K and C-h S. + +** `apply-macro-to-region-lines' now operates on all lines that begin +in the region, rather than on all complete lines in the region. + +** line-move-ignore-invisible now defaults to t. + +** Adaptive filling misfeature removed. +It no longer treats `NNN.' or `(NNN)' as a prefix. + +** The old bindings C-M-delete and C-M-backspace have been deleted, +since there are situations where one or the other will shut down +the operating system or your X server. + +** The register compatibility key bindings (deprecated since Emacs 19) +have been removed: + C-x / point-to-register (Use: C-x r SPC) + C-x j jump-to-register (Use: C-x r j) + C-x x copy-to-register (Use: C-x r s) + C-x g insert-register (Use: C-x r i) + + +* Editing Changes in Emacs 22.1 + +** The max size of buffers and integers has been doubled. +On 32bit machines, it is now 256M (i.e. 268435455). + +** !MEM FULL! at the start of the mode line indicates that Emacs +cannot get any more memory for Lisp data. This often means it could +crash soon if you do things that use more memory. On most systems, +killing buffers will get out of this state. If killing buffers does +not make !MEM FULL! disappear, you should save your work and start +a new Emacs. + +** `undo-only' does an undo which does not redo any previous undo. + +** Yanking text now discards certain text properties that can +be inconvenient when you did not expect them. The variable +`yank-excluded-properties' specifies which ones. Insertion +of register contents and rectangles also discards these properties. + +** New command `kill-whole-line' kills an entire line at once. +By default, it is bound to C-S-. + +** M-SPC (just-one-space) when given a numeric argument N +converts whitespace around point to N spaces. + +** You can now switch buffers in a cyclic order with C-x C-left +(previous-buffer) and C-x C-right (next-buffer). C-x left and +C-x right can be used as well. The functions keep a different buffer +cycle for each frame, using the frame-local buffer list. + +** C-x 5 C-o displays a specified buffer in another frame +but does not switch to that frame. It's the multi-frame +analogue of C-x 4 C-o. + +** `special-display-buffer-names' and `special-display-regexps' now +understand two new boolean pseudo-frame-parameters `same-frame' and +`same-window'. + +** New commands to operate on pairs of open and close characters: +`insert-pair', `delete-pair', `raise-sexp'. + +** M-x setenv now expands environment variable references. + +Substrings of the form `$foo' and `${foo}' in the specified new value +now refer to the value of environment variable foo. To include a `$' +in the value, use `$$'. + +** The default values of paragraph-start and indent-line-function have +been changed to reflect those used in Text mode rather than those used +in Paragraph-Indent Text mode. + +** The default for the paper size (variable ps-paper-type) is taken +from the locale. + +** Help command changes: + +*** Changes in C-h bindings: + +C-h e displays the *Messages* buffer. + +C-h d runs apropos-documentation. + +C-h r visits the Emacs Manual in Info. + +C-h followed by a control character is used for displaying files + that do not change: + +C-h C-f displays the FAQ. +C-h C-e displays the PROBLEMS file. + +The info-search bindings on C-h C-f, C-h C-k and C-h C-i +have been moved to C-h F, C-h K and C-h S. + +C-h c, C-h k, C-h w, and C-h f now handle remapped interactive commands. +- C-h c and C-h k report the actual command (after possible remapping) + run by the key sequence. +- C-h w and C-h f on a command which has been remapped now report the + command it is remapped to, and the keys which can be used to run + that command. + +For example, if C-k is bound to kill-line, and kill-line is remapped +to new-kill-line, these commands now report: +- C-h c and C-h k C-k reports: + C-k runs the command new-kill-line +- C-h w and C-h f kill-line reports: + kill-line is remapped to new-kill-line which is on C-k, +- C-h w and C-h f new-kill-line reports: + new-kill-line is on C-k + +*** The apropos commands now accept a list of words to match. +When more than one word is specified, at least two of those words must +be present for an item to match. Regular expression matching is still +available. + +*** The new option `apropos-sort-by-scores' causes the matching items +to be sorted according to their score. The score for an item is a +number calculated to indicate how well the item matches the words or +regular expression that you entered to the apropos command. The best +match is listed first, and the calculated score is shown for each +matching item. + +*** Help commands `describe-function' and `describe-key' now show function +arguments in lowercase italics on displays that support it. To change the +default, customize face `help-argument-name' or redefine the function +`help-default-arg-highlight'. + +*** C-h v and C-h f commands now include a hyperlink to the C source for +variables and functions defined in C (if the C source is available). + +*** Help mode now only makes hyperlinks for faces when the face name is +preceded or followed by the word `face'. It no longer makes +hyperlinks for variables without variable documentation, unless +preceded by one of the words `variable' or `option'. It now makes +hyperlinks to Info anchors (or nodes) if the anchor (or node) name is +enclosed in single quotes and preceded by `info anchor' or `Info +anchor' (in addition to earlier `info node' and `Info node'). In +addition, it now makes hyperlinks to URLs as well if the URL is +enclosed in single quotes and preceded by `URL'. + +*** The new command `describe-char' (C-u C-x =) pops up a buffer with +description various information about a character, including its +encodings and syntax, its text properties, how to input, overlays, and +widgets at point. You can get more information about some of them, by +clicking on mouse-sensitive areas or moving there and pressing RET. + +*** The command `list-text-properties-at' has been deleted because +C-u C-x = gives the same information and more. + +*** New command `display-local-help' displays any local help at point +in the echo area. It is bound to `C-h .'. It normally displays the +same string that would be displayed on mouse-over using the +`help-echo' property, but, in certain cases, it can display a more +keyboard oriented alternative. + +*** New user option `help-at-pt-display-when-idle' allows you to +automatically show the help provided by `display-local-help' on +point-over, after suitable idle time. The amount of idle time is +determined by the user option `help-at-pt-timer-delay' and defaults +to one second. This feature is turned off by default. + +** Mark command changes: + +*** A prefix argument is no longer required to repeat a jump to a +previous mark if you set `set-mark-command-repeat-pop' to t. I.e. C-u +C-SPC C-SPC C-SPC ... cycles through the mark ring. Use C-u C-u C-SPC +to set the mark immediately after a jump. + +*** Marking commands extend the region when invoked multiple times. + +If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h +(mark-paragraph), or C-M-h (mark-defun) repeatedly, the marked region +extends each time, so you can mark the next two sexps with M-C-SPC +M-C-SPC, for example. This feature also works for +mark-end-of-sentence, if you bind that to a key. It also extends the +region when the mark is active in Transient Mark mode, regardless of +the last command. To start a new region with one of marking commands +in Transient Mark mode, you can deactivate the active region with C-g, +or set the new mark with C-SPC. + +*** Some commands do something special in Transient Mark mode when the +mark is active--for instance, they limit their operation to the +region. Even if you don't normally use Transient Mark mode, you might +want to get this behavior from a particular command. There are two +ways you can enable Transient Mark mode and activate the mark, for one +command only. + +One method is to type C-SPC C-SPC; this enables Transient Mark mode +and sets the mark at point. The other method is to type C-u C-x C-x. +This enables Transient Mark mode temporarily but does not alter the +mark or the region. + +After these commands, Transient Mark mode remains enabled until you +deactivate the mark. That typically happens when you type a command +that alters the buffer, but you can also deactivate the mark by typing +C-g. + +*** Movement commands `beginning-of-buffer', `end-of-buffer', +`beginning-of-defun', `end-of-defun' do not set the mark if the mark +is already active in Transient Mark mode. + +*** M-h (mark-paragraph) now accepts a prefix arg. + +With positive arg, M-h marks the current and the following paragraphs; +if the arg is negative, it marks the current and the preceding +paragraphs. + +** Incremental Search changes: + +*** M-% typed in isearch mode invokes `query-replace' or +`query-replace-regexp' (depending on search mode) with the current +search string used as the string to replace. + +*** C-w in incremental search now grabs either a character or a word, +making the decision in a heuristic way. This new job is done by the +command `isearch-yank-word-or-char'. To restore the old behavior, +bind C-w to `isearch-yank-word' in `isearch-mode-map'. + +*** C-y in incremental search now grabs the next line if point is already +at the end of a line. + +*** C-M-w deletes and C-M-y grabs a character in isearch mode. +Another method to grab a character is to enter the minibuffer by `M-e' +and to type `C-f' at the end of the search string in the minibuffer. + +*** Vertical scrolling is now possible within incremental search. +To enable this feature, customize the new user option +`isearch-allow-scroll'. User written commands which satisfy stringent +constraints can be marked as "scrolling commands". See the Emacs manual +for details. + +*** Isearch no longer adds `isearch-resume' commands to the command +history by default. To enable this feature, customize the new +user option `isearch-resume-in-command-history'. + +** Replace command changes: + +*** When used interactively, the commands `query-replace-regexp' and +`replace-regexp' allow \,expr to be used in a replacement string, +where expr is an arbitrary Lisp expression evaluated at replacement +time. `\#' in a replacement string now refers to the count of +replacements already made by the replacement command. All regular +expression replacement commands now allow `\?' in the replacement +string to specify a position where the replacement string can be +edited for each replacement. `query-replace-regexp-eval' is now +deprecated since it offers no additional functionality. + +*** query-replace uses isearch lazy highlighting when the new user option +`query-replace-lazy-highlight' is non-nil. + +*** The current match in query-replace is highlighted in new face +`query-replace' which by default inherits from isearch face. + +*** New user option `query-replace-skip-read-only': when non-nil, +`query-replace' and related functions simply ignore +a match if part of it has a read-only property. + +** Local variables lists: + +*** If the local variables list contains any variable-value pairs that +are not known to be safe, Emacs shows a prompt asking whether to apply +the local variables list as a whole. In earlier versions, a prompt +was only issued for variables explicitly marked as risky (for the +definition of risky variables, see `risky-local-variable-p'). + +At the prompt, you can choose to save the contents of this local +variables list to `safe-local-variable-values'. This new customizable +option is a list of variable-value pairs that are known to be safe. +Variables can also be marked as safe with the existing +`safe-local-variable' property (see `safe-local-variable-p'). +However, risky variables will not be added to +`safe-local-variable-values' in this way. + +*** The variable `enable-local-variables' controls how local variable +lists are handled. t, the default, specifies the standard querying +behavior. :safe means use only safe values, and ignore the rest. +:all means set all variables, whether or not they are safe. +nil means ignore them all. Anything else means always query. + +*** The variable `safe-local-eval-forms' specifies a list of forms that +are ok to evaluate when they appear in an `eval' local variables +specification. Normally Emacs asks for confirmation before evaluating +such a form, but if the form appears in this list, no confirmation is +needed. + +*** If a function has a non-nil `safe-local-eval-function' property, +that means it is ok to evaluate some calls to that function when it +appears in an `eval' local variables specification. If the property +is t, then any form calling that function with constant arguments is +ok. If the property is a function or list of functions, they are called +with the form as argument, and if any returns t, the form is ok to call. + +If the form is not "ok to call", that means Emacs asks for +confirmation as before. + +*** In processing a local variables list, Emacs strips the prefix and +suffix from every line before processing all the lines. + +*** Text properties in local variables. + +A file local variables list cannot specify a string with text +properties--any specified text properties are discarded. + +** File operation changes: + +*** Unquoted `$' in file names do not signal an error any more when +the corresponding environment variable does not exist. +Instead, the `$ENVVAR' text is left as is, so that `$$' quoting +is only rarely needed. + +*** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case. + +Since the default input is the current directory, this has the effect +of specifying the current directory. Normally that means to visit the +directory with Dired. + +*** C-x s (save-some-buffers) now offers an option `d' to diff a buffer +against its file, so you can see what changes you would be saving. + +*** Auto Compression mode is now enabled by default. + +*** If the user visits a file larger than `large-file-warning-threshold', +Emacs asks for confirmation. + +*** The commands copy-file, rename-file, make-symbolic-link and +add-name-to-file, when given a directory as the "new name" argument, +convert it to a file name by merging in the within-directory part of +the existing file's name. (This is the same convention that shell +commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET +/tmp RET copies ~/foo to /tmp/foo. + +*** require-final-newline now has two new possible values: + +`visit' means add a newline (as an undoable change) if it's needed +when visiting the file. + +`visit-save' means add a newline (as an undoable change) if it's +needed when visiting the file, and also add a newline if it's needed +when saving the file. + +*** The new option mode-require-final-newline controls how certain +major modes enable require-final-newline. Any major mode that's +designed for a kind of file that should normally end in a newline +sets require-final-newline based on mode-require-final-newline. +So you can customize mode-require-final-newline to control what these +modes do. + +*** When you are root, and you visit a file whose modes specify +read-only, the Emacs buffer is now read-only too. Type C-x C-q if you +want to make the buffer writable. (As root, you can in fact alter the +file.) + +*** find-file-read-only visits multiple files in read-only mode, +when the file name contains wildcard characters. + +*** find-alternate-file replaces the current file with multiple files, +when the file name contains wildcard characters. It now asks if you +wish save your changes and not just offer to kill the buffer. + +*** When used interactively, `format-write-file' now asks for confirmation +before overwriting an existing file, unless a prefix argument is +supplied. This behavior is analogous to `write-file'. + +*** The variable `auto-save-file-name-transforms' now has a third element that +controls whether or not the function `make-auto-save-file-name' will +attempt to construct a unique auto-save name (e.g. for remote files). + +*** The new option `write-region-inhibit-fsync' disables calls to fsync +in `write-region'. This can be useful on laptops to avoid spinning up +the hard drive upon each file save. Enabling this variable may result +in data loss, use with care. + +** Minibuffer changes: + +*** The completion commands TAB, SPC and ? in the minibuffer apply only +to the text before point. If there is text in the buffer after point, +it remains unchanged. + +*** The new file-name-shadow-mode is turned ON by default, so that when +entering a file name, any prefix which Emacs will ignore is dimmed. + +*** There's a new face `minibuffer-prompt'. +Emacs adds this face to the list of text properties stored in the +variable `minibuffer-prompt-properties', which is used to display the +prompt string. + +*** Enhanced visual feedback in `*Completions*' buffer. + +Completions lists use faces to highlight what all completions +have in common and where they begin to differ. + +The common prefix shared by all possible completions uses the face +`completions-common-part', while the first character that isn't the +same uses the face `completions-first-difference'. By default, +`completions-common-part' inherits from `default', and +`completions-first-difference' inherits from `bold'. The idea of +`completions-common-part' is that you can use it to make the common +parts less visible than normal, so that the rest of the differing +parts is, by contrast, slightly highlighted. + +Above fontification is always done when listing completions is +triggered at minibuffer. If you want to fontify completions whose +listing is triggered at the other normal buffer, you have to pass +the common prefix of completions to `display-completion-list' as +its second argument. + +*** File-name completion can now ignore specified directories. +If an element of the list in `completion-ignored-extensions' ends in a +slash `/', it indicates a subdirectory that should be ignored when +completing file names. Elements of `completion-ignored-extensions' +which do not end in a slash are never considered when a completion +candidate is a directory. + +*** New user option `history-delete-duplicates'. +If set to t when adding a new history element, all previous identical +elements are deleted from the history list. + +** Redisplay changes: + +*** The new face `mode-line-inactive' is used to display the mode line +of non-selected windows. The `mode-line' face is now used to display +the mode line of the currently selected window. + +The new variable `mode-line-in-non-selected-windows' controls whether +the `mode-line-inactive' face is used. + +*** The mode line position information now comes before the major mode. +When the file is maintained under version control, that information +appears between the position information and the major mode. + +*** You can now customize the use of window fringes. To control this +for all frames, use M-x fringe-mode or the Show/Hide submenu of the +top-level Options menu, or customize the `fringe-mode' variable. To +control this for a specific frame, use the command M-x +set-fringe-style. + +*** Angle icons in the fringes can indicate the buffer boundaries. In +addition, up and down arrow bitmaps in the fringe indicate which ways +the window can be scrolled. + +This behavior is activated by setting the buffer-local variable +`indicate-buffer-boundaries' to a non-nil value. The default value of +this variable is found in `default-indicate-buffer-boundaries'. + +If value is `left' or `right', both angle and arrow bitmaps are +displayed in the left or right fringe, resp. + +The value can also be an alist which specifies the presence and +position of each bitmap individually. + +For example, ((top . left) (t . right)) places the top angle bitmap +in left fringe, the bottom angle bitmap in right fringe, and both +arrow bitmaps in right fringe. To show just the angle bitmaps in the +left fringe, but no arrow bitmaps, use ((top . left) (bottom . left)). + +*** On window systems, lines which are exactly as wide as the window +(not counting the final newline character) are no longer broken into +two lines on the display (with just the newline on the second line). +Instead, the newline now "overflows" into the right fringe, and the +cursor will be displayed in the fringe when positioned on that newline. + +The new user option 'overflow-newline-into-fringe' can be set to nil to +revert to the old behavior of continuing such lines. + +*** A window can now have individual fringe and scroll-bar settings, +in addition to the individual display margin settings. + +Such individual settings are now preserved when windows are split +horizontally or vertically, a saved window configuration is restored, +or when the frame is resized. + +*** When a window has display margin areas, the fringes are now +displayed between the margins and the buffer's text area, rather than +outside those margins. + +*** New face `escape-glyph' highlights control characters and escape glyphs. + +*** Non-breaking space and hyphens are now displayed with a special +face, either nobreak-space or escape-glyph. You can turn this off or +specify a different mode by setting the variable `nobreak-char-display'. + +*** The parameters of automatic hscrolling can now be customized. +The variable `hscroll-margin' determines how many columns away from +the window edge point is allowed to get before automatic hscrolling +will horizontally scroll the window. The default value is 5. + +The variable `hscroll-step' determines how many columns automatic +hscrolling scrolls the window when point gets too close to the +window edge. If its value is zero, the default, Emacs scrolls the +window so as to center point. If its value is an integer, it says how +many columns to scroll. If the value is a floating-point number, it +gives the fraction of the window's width to scroll the window. + +The variable `automatic-hscrolling' was renamed to +`auto-hscroll-mode'. The old name is still available as an alias. + +*** Moving or scrolling through images (and other lines) taller than +the window now works sensibly, by automatically adjusting the window's +vscroll property. + +*** Preemptive redisplay now adapts to current load and bandwidth. + +To avoid preempting redisplay on fast computers, networks, and displays, +the arrival of new input is now performed at regular intervals during +redisplay. The new variable `redisplay-preemption-period' specifies +the period; the default is to check for input every 0.1 seconds. + +*** The %c and %l constructs are now ignored in frame-title-format. +Due to technical limitations in how Emacs interacts with windowing +systems, these constructs often failed to render properly, and could +even cause Emacs to crash. + +*** If value of `auto-resize-tool-bars' is `grow-only', the tool bar +will expand as needed, but not contract automatically. To contract +the tool bar, you must type C-l. + +*** New customize option `overline-margin' controls the space between +overline and text. + +*** New variable `x-underline-at-descent-line' controls the relative +position of the underline. When set, it overrides the +`x-use-underline-position-properties' variables. + +** New faces: + +*** `mode-line-highlight' is the standard face indicating mouse sensitive +elements on mode-line (and header-line) like `highlight' face on text +areas. + +*** `mode-line-buffer-id' is the standard face for buffer identification +parts of the mode line. + +*** `shadow' face defines the appearance of the "shadowed" text, i.e. +the text which should be less noticeable than the surrounding text. +This can be achieved by using shades of grey in contrast with either +black or white default foreground color. This generic shadow face +allows customization of the appearance of shadowed text in one place, +so package-specific faces can inherit from it. + +*** `vertical-border' face is used for the vertical divider between windows. + +** Font-Lock (syntax highlighting) changes: + +*** All modes now support using M-x font-lock-mode to toggle +fontification, even those such as Occur, Info, and comint-derived +modes that do their own fontification in a special way. + +The variable `Info-fontify' is no longer applicable; to disable +fontification in Info, remove `turn-on-font-lock' from +`Info-mode-hook'. + +*** New standard font-lock face `font-lock-comment-delimiter-face'. + +*** New standard font-lock face `font-lock-preprocessor-face'. + +*** Easy to overlook single character negation can now be font-locked. +You can use the new variable `font-lock-negation-char-face' and the face of +the same name to customize this. Currently the cc-modes, sh-script-mode, +cperl-mode and make-mode support this. + +*** Font-Lock mode: in major modes such as Lisp mode, where some Emacs +features assume that an open-paren in column 0 is always outside of +any string or comment, Font-Lock now highlights any such open-paren in +bold-red if it is inside a string or a comment, to indicate that it +can cause trouble. You should rewrite the string or comment so that +the open-paren is not in column 0. + +*** M-o now is the prefix key for setting text properties; +M-o M-o requests refontification. + +*** The default settings for JIT stealth lock parameters are changed. +The default value for the user option jit-lock-stealth-time is now nil +instead of 3. This setting of jit-lock-stealth-time disables stealth +fontification: on today's machines, it may be a bug in font lock +patterns if fontification otherwise noticeably degrades interactivity. +If you find movement in infrequently visited buffers sluggish (and the +major mode maintainer has no better idea), customizing +jit-lock-stealth-time to a non-nil value will let Emacs fontify +buffers in the background when it considers the system to be idle. +jit-lock-stealth-nice is now 0.5 instead of 0.125 which is supposed to +cause less load than the old defaults. + +*** jit-lock can now be delayed with `jit-lock-defer-time'. + +If this variable is non-nil, its value should be the amount of Emacs +idle time in seconds to wait before starting fontification. For +example, if you set `jit-lock-defer-time' to 0.25, fontification will +only happen after 0.25s of idle time. + +*** contextual refontification is now separate from stealth fontification. + +jit-lock-defer-contextually is renamed jit-lock-contextually and +jit-lock-context-time determines the delay after which contextual +refontification takes place. + +*** lazy-lock is considered obsolete. + +The `lazy-lock' package is superseded by `jit-lock' and is considered +obsolete. `jit-lock' is activated by default; if you wish to continue +using `lazy-lock', activate it in your ~/.emacs like this: + (setq font-lock-support-mode 'lazy-lock-mode) + +If you invoke `lazy-lock-mode' directly rather than through +`font-lock-support-mode', it now issues a warning: + "Use font-lock-support-mode rather than calling lazy-lock-mode" + +** Menu support: + +*** A menu item "Show/Hide" was added to the top-level menu "Options". +This menu allows you to turn various display features on and off (such +as the fringes, the tool bar, the speedbar, and the menu bar itself). +You can also move the vertical scroll bar to either side here or turn +it off completely. There is also a menu-item to toggle displaying of +current date and time, current line and column number in the mode-line. + +*** Speedbar has moved from the "Tools" top level menu to "Show/Hide". + +*** The menu item "Open File..." has been split into two items, "New File..." +and "Open File...". "Open File..." now opens only existing files. This is +to support existing GUI file selection dialogs better. + +*** The file selection dialog for Gtk+, Mac, W32 and Motif/LessTif can be +disabled by customizing the variable `use-file-dialog'. + +*** The pop up menus for Lucid now stay up if you do a fast click and can +be navigated with the arrow keys (like Gtk+, Mac and W32). + +*** The menu bar for Motif/LessTif/Lucid/Gtk+ can be navigated with keys. +Pressing F10 shows the first menu in the menu bar. Navigation is done with +the arrow keys, select with the return key and cancel with the escape keys. + +*** The Lucid menus can display multilingual text in your locale. You have +to explicitly specify a fontSet resource for this to work, for example +`-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'. + +*** Dialogs for Lucid/Athena and LessTif/Motif now pop down on pressing +ESC, like they do for Gtk+, Mac and W32. + +*** For the Gtk+ version, you can make Emacs use the old file dialog +by setting the variable `x-gtk-use-old-file-dialog' to t. Default is to use +the new dialog. + +*** You can exit dialog windows and menus by typing C-g. + +** Buffer Menu changes: + +*** The new options `buffers-menu-show-directories' and +`buffers-menu-show-status' let you control how buffers are displayed +in the menu dropped down when you click "Buffers" from the menu bar. + +`buffers-menu-show-directories' controls whether the menu displays +leading directories as part of the file name visited by the buffer. +If its value is `unless-uniquify', the default, directories are +shown unless uniquify-buffer-name-style' is non-nil. The value of nil +and t turn the display of directories off and on, respectively. + +`buffers-menu-show-status' controls whether the Buffers menu includes +the modified and read-only status of the buffers. By default it is +t, and the status is shown. + +Setting these variables directly does not take effect until next time +the Buffers menu is regenerated. + +*** New command `Buffer-menu-toggle-files-only' toggles display of file +buffers only in the Buffer Menu. It is bound to T in Buffer Menu +mode. + +*** `buffer-menu' and `list-buffers' now list buffers whose names begin +with a space, when those buffers are visiting files. Normally buffers +whose names begin with space are omitted. + +** Mouse changes: + +*** You can now follow links by clicking Mouse-1 on the link. + +Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2 +click to follow a link, whereas most other applications use a Mouse-1 +click for both purposes, depending on whether you click outside or +inside a link. Now the behavior of a Mouse-1 click has been changed +to match this context-sensitive dual behavior. (If you prefer the old +behavior, set the user option `mouse-1-click-follows-link' to nil.) + +Depending on the current mode, a Mouse-2 click in Emacs can do much +more than just follow a link, so the new Mouse-1 behavior is only +activated for modes which explicitly mark a clickable text as a "link" +(see the new function `mouse-on-link-p' for details). The Lisp +packages that are included in release 22.1 have been adapted to do +this, but external packages may not yet support this. However, there +is no risk in using such packages, as the worst thing that could +happen is that you get the original Mouse-1 behavior when you click +on a link, which typically means that you set point where you click. + +If you want to get the original Mouse-1 action also inside a link, you +just need to press the Mouse-1 button a little longer than a normal +click (i.e. press and hold the Mouse-1 button for half a second before +you release it). + +Dragging the Mouse-1 inside a link still performs the original +drag-mouse-1 action, typically copy the text. + +You can customize the new Mouse-1 behavior via the new user options +`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'. + +*** If you set the new variable `mouse-autoselect-window' to a non-nil +value, windows are automatically selected as you move the mouse from +one Emacs window to another, even within a frame. A minibuffer window +can be selected only when it is active. + +*** On X, when the window manager requires that you click on a frame to +select it (give it focus), the selected window and cursor position +normally changes according to the mouse click position. If you set +the variable x-mouse-click-focus-ignore-position to t, the selected +window and cursor position do not change when you click on a frame +to give it focus. + +*** Emacs normally highlights mouse sensitive text whenever the mouse +is over the text. By setting the new variable `mouse-highlight', you +can optionally enable mouse highlighting only after you move the +mouse, so that highlighting disappears when you press a key. You can +also disable mouse highlighting. + +*** You can now customize if selecting a region by dragging the mouse +shall not copy the selected text to the kill-ring by setting the new +variable mouse-drag-copy-region to nil. + +*** Under X, mouse-wheel-mode is turned on by default. + +*** Emacs ignores mouse-2 clicks while the mouse wheel is being moved. + +People tend to push the mouse wheel (which counts as a mouse-2 click) +unintentionally while turning the wheel, so these clicks are now +ignored. You can customize this with the mouse-wheel-click-event and +mouse-wheel-inhibit-click-time variables. + +*** mouse-wheels can now scroll a specific fraction of the window +(rather than a fixed number of lines) and the scrolling is `progressive'. + +** Multilingual Environment (Mule) changes: + +*** You can disable character translation for a file using the -*- +construct. Include `enable-character-translation: nil' inside the +-*-...-*- to disable any character translation that may happen by +various global and per-coding-system translation tables. You can also +specify it in a local variable list at the end of the file. For +shortcut, instead of using this long variable name, you can append the +character "!" at the end of coding-system name specified in -*- +construct or in a local variable list. For example, if a file has the +following header, it is decoded by the coding system `iso-latin-1' +without any character translation: +;; -*- coding: iso-latin-1!; -*- + +*** Language environment and various default coding systems are setup +more correctly according to the current locale name. If the locale +name doesn't specify a charset, the default is what glibc defines. +This change can result in using the different coding systems as +default in some locale (e.g. vi_VN). + +*** The keyboard-coding-system is now automatically set based on your +current locale settings if you are not using a window system. This +can mean that the META key doesn't work but generates non-ASCII +characters instead, depending on how the terminal (or terminal +emulator) works. Use `set-keyboard-coding-system' (or customize +keyboard-coding-system) if you prefer META to work (the old default) +or if the locale doesn't describe the character set actually generated +by the keyboard. See Info node `Unibyte Mode'. + +*** The new command `set-file-name-coding-system' (C-x RET F) sets +coding system for encoding and decoding file names. A new menu item +(Options->Mule->Set Coding Systems->For File Name) invokes this +command. + +*** The new command `revert-buffer-with-coding-system' (C-x RET r) +revisits the current file using a coding system that you specify. + +*** New command `recode-region' decodes the region again by a specified +coding system. + +*** The new command `recode-file-name' changes the encoding of the name +of a file. + +*** New command `ucs-insert' inserts a character specified by its +unicode. + +*** New command quail-show-key shows what key (or key sequence) to type +in the current input method to input a character at point. + +*** Limited support for character `unification' has been added. +Emacs now knows how to translate between different representations of +the same characters in various Emacs charsets according to standard +Unicode mappings. This applies mainly to characters in the ISO 8859 +sets plus some other 8-bit sets, but can be extended. For instance, +translation works amongst the Emacs ...-iso8859-... charsets and the +mule-unicode-... ones. + +By default this translation happens automatically on encoding. +Self-inserting characters are translated to make the input conformant +with the encoding of the buffer in which it's being used, where +possible. + +You can force a more complete unification with the user option +unify-8859-on-decoding-mode. That maps all the Latin-N character sets +into Unicode characters (from the latin-iso8859-1 and +mule-unicode-0100-24ff charsets) on decoding. Note that this mode +will often effectively clobber data with an iso-2022 encoding. + +*** New language environments (set up automatically according to the +locale): Belarusian, Bulgarian, Chinese-EUC-TW, Croatian, Esperanto, +French, Georgian, Italian, Latin-7, Latvian, Lithuanian, Malayalam, +Russian, Russian, Slovenian, Swedish, Tajik, Tamil, UTF-8,Ukrainian, +Welsh,Latin-6, Windows-1255. + +*** New input methods: latin-alt-postfix, latin-postfix, latin-prefix, +belarusian, bulgarian-bds, bulgarian-phonetic, chinese-sisheng (for +Chinese Pinyin characters), croatian, dutch, georgian, latvian-keyboard, +lithuanian-numeric, lithuanian-keyboard, malayalam-inscript, rfc1345, +russian-computer, sgml, slovenian, tamil-inscript, ukrainian-computer, +ucs, vietnamese-telex, welsh. + +*** There is support for decoding Greek and Cyrillic characters into +either Unicode (the mule-unicode charsets) or the iso-8859 charsets, +when possible. The latter are more space-efficient. + This is controlled by user option utf-fragment-on-decoding. + +*** Improved Thai support. A new minor mode `thai-word-mode' (which is +automatically activated if you select Thai as a language +environment) changes key bindings of most word-oriented commands to +versions which recognize Thai words. Affected commands are + M-f (forward-word) + M-b (backward-word) + M-d (kill-word) + M-DEL (backward-kill-word) + M-t (transpose-words) + M-q (fill-paragraph) + +*** Indian support has been updated. +The in-is13194 coding system is now Unicode-based. CDAC fonts are +assumed. There is a framework for supporting various Indian scripts, +but currently only Devanagari, Malayalam and Tamil are supported. + +*** The utf-8/16 coding systems have been enhanced. +By default, untranslatable utf-8 sequences are simply composed into +single quasi-characters. User option `utf-translate-cjk-mode' (it is +turned on by default) arranges to translate many utf-8 CJK character +sequences into real Emacs characters in a similar way to the Mule-UCS +system. As this loads a fairly big data on demand, people who are not +interested in CJK characters may want to customize it to nil. +You can augment/amend the CJK translation via hash tables +`ucs-mule-cjk-to-unicode' and `ucs-unicode-to-mule-cjk'. The utf-8 +coding system now also encodes characters from most of Emacs's +one-dimensional internal charsets, specifically the ISO-8859 ones. +The utf-16 coding system is affected similarly. + +*** A UTF-7 coding system is available in the library `utf-7'. + +*** A new coding system `euc-tw' has been added for traditional Chinese +in CNS encoding; it accepts both Big 5 and CNS as input; on saving, +Big 5 is then converted to CNS. + +*** Many new coding systems are available in the `code-pages' library. +These include complete versions of most of those in codepage.el, based +on Unicode mappings. `codepage-setup' is now obsolete and is used +only in the MS-DOS port of Emacs. All coding systems defined in +`code-pages' are auto-loaded. + +*** New variable `utf-translate-cjk-unicode-range' controls which +Unicode characters to translate in `utf-translate-cjk-mode'. + +*** iso-10646-1 (`Unicode') fonts can be used to display any range of +characters encodable by the utf-8 coding system. Just specify the +fontset appropriately. + +** Customize changes: + +*** Custom themes are collections of customize options. Create a +custom theme with M-x customize-create-theme. Use M-x load-theme to +load and enable a theme, and M-x disable-theme to disable it. Use M-x +enable-theme to enable a disabled theme. + +*** The commands M-x customize-face and M-x customize-face-other-window +now look at the character after point. If a face or faces are +specified for that character, the commands by default customize those +faces. + +*** The face-customization widget has been reworked to be less confusing. +In particular, when you enable a face attribute using the corresponding +check-box, there's no longer a redundant `*' option in value selection +for that attribute; the values you can choose are only those which make +sense for the attribute. When an attribute is de-selected by unchecking +its check-box, then the (now ignored, but still present temporarily in +case you re-select the attribute) value is hidden. + +*** When you set or reset a variable's value in a Customize buffer, +the previous value becomes the "backup value" of the variable. +You can go back to that backup value by selecting "Use Backup Value" +under the "[State]" button. + +** Dired mode: + +*** In Dired's ! command (dired-do-shell-command), `*' and `?' now +control substitution of the file names only when they are surrounded +by whitespace. This means you can now use them as shell wildcards +too. If you want to use just plain `*' as a wildcard, type `*""'; the +double quotes make no difference in the shell, but they prevent +special treatment in `dired-do-shell-command'. + +*** The Dired command `dired-goto-file' is now bound to j, not M-g. +This is to avoid hiding the global key binding of M-g. + +*** New faces dired-header, dired-mark, dired-marked, dired-flagged, +dired-ignored, dired-directory, dired-symlink, dired-warning +introduced for Dired mode instead of font-lock faces. + +*** New Dired command `dired-compare-directories' marks files +with different file attributes in two dired buffers. + +*** New Dired command `dired-do-touch' (bound to T) changes timestamps +of marked files with the value entered in the minibuffer. + +*** In Dired, the w command now stores the current line's file name +into the kill ring. With a zero prefix arg, it stores the absolute file name. + +*** In Dired-x, Omitting files is now a minor mode, dired-omit-mode. + +The mode toggling command is bound to M-o. A new command +dired-mark-omitted, bound to * O, marks omitted files. The variable +dired-omit-files-p is obsoleted, use the mode toggling function +instead. + +*** The variables dired-free-space-program and dired-free-space-args +have been renamed to directory-free-space-program and +directory-free-space-args, and they now apply whenever Emacs puts a +directory listing into a buffer. + +** Comint changes: + +*** The new INSIDE_EMACS environment variable is set to "t" in subshells +running inside Emacs. This supersedes the EMACS environment variable, +which will be removed in a future Emacs release. Programs that need +to know whether they are started inside Emacs should check INSIDE_EMACS +instead of EMACS. + +*** The comint prompt can now be made read-only, using the new user +option `comint-prompt-read-only'. This is not enabled by default, +except in IELM buffers. The read-only status of IELM prompts can be +controlled with the new user option `ielm-prompt-read-only', which +overrides `comint-prompt-read-only'. + +The new commands `comint-kill-whole-line' and `comint-kill-region' +support editing comint buffers with read-only prompts. + +`comint-kill-whole-line' is like `kill-whole-line', but ignores both +read-only and field properties. Hence, it always kill entire +lines, including any prompts. + +`comint-kill-region' is like `kill-region', except that it ignores +read-only properties, if it is safe to do so. This means that if any +part of a prompt is deleted, then the entire prompt must be deleted +and that all prompts must stay at the beginning of a line. If this is +not the case, then `comint-kill-region' behaves just like +`kill-region' if read-only properties are involved: it copies the text +to the kill-ring, but does not delete it. + +*** The new command `comint-insert-previous-argument' in comint-derived +modes (shell-mode, etc.) inserts arguments from previous command lines, +like bash's `ESC .' binding. It is bound by default to `C-c .', but +otherwise behaves quite similarly to the bash version. + +*** `comint-use-prompt-regexp-instead-of-fields' has been renamed +`comint-use-prompt-regexp'. The old name has been kept as an alias, +but declared obsolete. + +** M-x Compile changes: + +*** M-x compile has become more robust and reliable + +Quite a few more kinds of messages are recognized. Messages that are +recognized as warnings or informational come in orange or green, instead of +red. Informational messages are by default skipped with `next-error' +(controlled by `compilation-skip-threshold'). + +Location data is collected on the fly as the *compilation* buffer changes. +This means you could modify messages to make them point to different files. +This also means you can not go to locations of messages you may have deleted. + +The variable `compilation-error-regexp-alist' has now become customizable. If +you had added your own regexps to this, you'll probably need to include a +leading `^', otherwise they'll match anywhere on a line. There is now also a +`compilation-mode-font-lock-keywords' and it nicely handles all the checks +that configure outputs and -o options so you see at a glance where you are. + +The new file etc/compilation.txt gives examples of each type of message. + +*** New user option `compilation-environment'. +This option allows you to specify environment variables for inferior +compilation processes without affecting the environment that all +subprocesses inherit. + +*** New user option `compilation-disable-input'. +If this is non-nil, send end-of-file as compilation process input. + +*** New options `next-error-highlight' and `next-error-highlight-no-select' +specify the method of highlighting of the corresponding source line +in new face `next-error'. + +*** A new minor mode `next-error-follow-minor-mode' can be used in +compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the +modes that can use `next-error'). In this mode, cursor motion in the +buffer causes automatic display in another window of the corresponding +matches, compilation errors, etc. This minor mode can be toggled with +C-c C-f. + +*** When the left fringe is displayed, an arrow points to current message in +the compilation buffer. + +*** The new variable `compilation-context-lines' controls lines of leading +context before the current message. If nil and the left fringe is displayed, +it doesn't scroll the compilation output window. If there is no left fringe, +no arrow is displayed and a value of nil means display the message at the top +of the window. + +** Occur mode changes: + +*** The new command `multi-occur' is just like `occur', except it can +search multiple buffers. There is also a new command +`multi-occur-in-matching-buffers' which allows you to specify the +buffers to search by their filenames or buffer names. Internally, +Occur mode has been rewritten, and now uses font-lock, among other +changes. + +*** You can now use next-error (C-x `) and previous-error to advance to +the next/previous matching line found by M-x occur. + +*** In the *Occur* buffer, `o' switches to it in another window, and +C-o displays the current line's occurrence in another window without +switching to it. + +** Grep changes: + +*** Grep has been decoupled from compilation mode setup. + +There's a new separate package grep.el, with its own submenu and +customization group. + +*** `grep-find' is now also available under the name `find-grep' where +people knowing `find-grep-dired' would probably expect it. + +*** New commands `lgrep' (local grep) and `rgrep' (recursive grep) are +more user-friendly versions of `grep' and `grep-find', which prompt +separately for the regular expression to match, the files to search, +and the base directory for the search. Case sensitivity of the +search is controlled by the current value of `case-fold-search'. + +These commands build the shell commands based on the new variables +`grep-template' (lgrep) and `grep-find-template' (rgrep). + +The files to search can use aliases defined in `grep-files-aliases'. + +Subdirectories listed in `grep-find-ignored-directories' such as those +typically used by various version control systems, like CVS and arch, +are automatically skipped by `rgrep'. + +*** The grep commands provide highlighting support. + +Hits are fontified in green, and hits in binary files in orange. Grep buffers +can be saved and automatically revisited. + +*** New option `grep-highlight-matches' highlights matches in *grep* +buffer. It uses a special feature of some grep programs which accept +--color option to output markers around matches. When going to the next +match with `next-error' the exact match is highlighted in the source +buffer. Otherwise, if `grep-highlight-matches' is nil, the whole +source line is highlighted. + +*** New key bindings in grep output window: +SPC and DEL scrolls window up and down. C-n and C-p moves to next and +previous match in the grep window. RET jumps to the source line of +the current match. `n' and `p' shows next and previous match in +other window, but does not switch buffer. `{' and `}' jumps to the +previous or next file in the grep output. TAB also jumps to the next +file. + +*** M-x grep now tries to avoid appending `/dev/null' to the command line +by using GNU grep `-H' option instead. M-x grep automatically +detects whether this is possible or not the first time it is invoked. +When `-H' is used, the grep command line supplied by the user is passed +unchanged to the system to execute, which allows more complicated +command lines to be used than was possible before. + +*** The new variables `grep-window-height' and `grep-scroll-output' override +the corresponding compilation mode settings, for grep commands only. + +** Cursor display changes: + +*** Emacs can produce an underscore-like (horizontal bar) cursor. +The underscore cursor is set by putting `(cursor-type . hbar)' in +default-frame-alist. It supports variable heights, like the `bar' +cursor does. + +*** The variable `cursor-in-non-selected-windows' can now be set to any +of the recognized cursor types. + +*** Display of hollow cursors now obeys the buffer-local value (if any) +of `cursor-in-non-selected-windows' in the buffer that the cursor +appears in. + +*** On text terminals, the variable `visible-cursor' controls whether Emacs +uses the "very visible" cursor (the default) or the normal cursor. + +*** The X resource cursorBlink can be used to turn off cursor blinking. + +*** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is +now controlled by the variable `blink-cursor-alist'. + +** X Windows Support: + +*** Emacs now supports drag and drop for X. Dropping a file on a window +opens it, dropping text inserts the text. Dropping a file on a dired +buffer copies or moves the file to that directory. + +*** Under X11, it is possible to swap Alt and Meta (and Super and Hyper). +The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym', +and `x-super-keysym' can be used to choose which keysyms Emacs should +use for the modifiers. For example, the following two lines swap +Meta and Alt: + (setq x-alt-keysym 'meta) + (setq x-meta-keysym 'alt) + +*** The X resource useXIM can be used to turn off use of XIM, which can +speed up Emacs with slow networking to the X server. + +If the configure option `--without-xim' was used to turn off use of +XIM by default, the X resource useXIM can be used to turn it on. + +*** The new variable `x-select-request-type' controls how Emacs +requests X selection. The default value is nil, which means that +Emacs requests X selection with types COMPOUND_TEXT and UTF8_STRING, +and use the more appropriately result. + +*** The scrollbar under LessTif or Motif has a smoother drag-scrolling. +On the other hand, the size of the thumb does not represent the actual +amount of text shown any more (only a crude approximation of it). + +** Xterm support: + +*** If you enable Xterm Mouse mode, Emacs will respond to mouse clicks +on the mode line, header line and display margin, when run in an xterm. + +*** Improved key bindings support when running in an xterm. +When Emacs is running in an xterm more key bindings are available. +The following should work: +{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}. +These key bindings work on xterm from X.org 6.8 (and later versions), +they might not work on some older versions of xterm, or on some +proprietary versions. +The various keys generated by xterm when the "modifyOtherKeys" +resource is set are also supported. + +** Character terminal color support changes: + +*** The new command-line option --color=MODE lets you specify a standard +mode for a tty color support. It is meant to be used on character +terminals whose capabilities are not set correctly in the terminal +database, or with terminal emulators which support colors, but don't +set the TERM environment variable to a name of a color-capable +terminal. "emacs --color" uses the same color commands as GNU `ls' +when invoked with "ls --color", so if your terminal can support colors +in "ls --color", it will support "emacs --color" as well. See the +user manual for the possible values of the MODE parameter. + +*** Emacs now supports several character terminals which provide more +than 8 colors. For example, for `xterm', 16-color, 88-color, and +256-color modes are supported. Emacs automatically notes at startup +the extended number of colors, and defines the appropriate entries for +all of these colors. + +*** Emacs now uses the full range of available colors for the default +faces when running on a color terminal, including 16-, 88-, and +256-color xterms. This means that when you run "emacs -nw" on an +88-color or 256-color xterm, you will see essentially the same face +colors as on X. + +*** There's a new support for colors on `rxvt' terminal emulator. + +** ebnf2ps changes: + +*** New option `ebnf-arrow-extra-width' which specify extra width for arrow +shape drawing. +The extra width is used to avoid that the arrowhead and the terminal border +overlap. It depends on `ebnf-arrow-shape' and `ebnf-line-width'. + +*** New option `ebnf-arrow-scale' which specify the arrow scale. +Values lower than 1.0, shrink the arrow. +Values greater than 1.0, expand the arrow. + +* New Modes and Packages in Emacs 22.1 + +** CUA mode is now part of the Emacs distribution. + +The new cua package provides CUA-like keybindings using C-x for +cut (kill), C-c for copy, C-v for paste (yank), and C-z for undo. +With cua, the region can be set and extended using shifted movement +keys (like pc-selection-mode) and typed text replaces the active +region (like delete-selection-mode). Do not enable these modes with +cua-mode. Customize the variable `cua-mode' to enable cua. + +The cua-selection-mode enables the CUA keybindings for the region but +does not change the bindings for C-z/C-x/C-c/C-v. It can be used as a +replacement for pc-selection-mode. + +In addition, cua provides unified rectangle support with visible +rectangle highlighting: Use C-return to start a rectangle, extend it +using the movement commands (or mouse-3), and cut or copy it using C-x +or C-c (using C-w and M-w also works). + +Use M-o and M-c to `open' or `close' the rectangle, use M-b or M-f, to +fill it with blanks or another character, use M-u or M-l to upcase or +downcase the rectangle, use M-i to increment the numbers in the +rectangle, use M-n to fill the rectangle with a numeric sequence (such +as 10 20 30...), use M-r to replace a regexp in the rectangle, and use +M-' or M-/ to restrict command on the rectangle to a subset of the +rows. See the commentary in cua-base.el for more rectangle commands. + +Cua also provides unified support for registers: Use a numeric +prefix argument between 0 and 9, i.e. M-0 .. M-9, for C-x, C-c, and +C-v to cut or copy into register 0-9, or paste from register 0-9. + +The last text deleted (not killed) is automatically stored in +register 0. This includes text deleted by typing text. + +Finally, cua provides a global mark which is set using S-C-space. +When the global mark is active, any text which is cut or copied is +automatically inserted at the global mark position. See the +commentary in cua-base.el for more global mark related commands. + +The features of cua also works with the standard Emacs bindings for +kill, copy, yank, and undo. If you want to use cua mode, but don't +want the C-x, C-c, C-v, and C-z bindings, you can customize the +`cua-enable-cua-keys' variable. + +Note: This version of cua mode is not backwards compatible with older +versions of cua.el and cua-mode.el. To ensure proper operation, you +must remove older versions of cua.el or cua-mode.el as well as the +loading and customization of those packages from the .emacs file. + +** Tramp is now part of the distribution. + +This package is similar to Ange-FTP: it allows you to edit remote +files. But whereas Ange-FTP uses FTP to access the remote host, +Tramp uses a shell connection. The shell connection is always used +for filename completion and directory listings and suchlike, but for +the actual file transfer, you can choose between the so-called +`inline' methods (which transfer the files through the shell +connection using base64 or uu encoding) and the `out-of-band' methods +(which invoke an external copying program such as `rcp' or `scp' or +`rsync' to do the copying). + +Shell connections can be acquired via `rsh', `ssh', `telnet' and also +`su' and `sudo'. Ange-FTP is still supported via the `ftp' method. + +If you want to disable Tramp you should set + + (setq tramp-default-method "ftp") + +Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x +tramp-unload-tramp. + +** The image-dired.el package allows you to easily view, tag and in +other ways manipulate image files and their thumbnails, using dired as +the main interface. Image-Dired provides functionality to generate +simple image galleries. + +** Image files are normally visited in Image mode, which lets you toggle +between viewing the image and viewing the text using C-c C-c. + +** The new python.el package is used to edit Python and Jython programs. + +** The URL package (which had been part of W3) is now part of Emacs. + +** Calc is now part of the Emacs distribution. + +Calc is an advanced desk calculator and mathematical tool written in +Emacs Lisp. The prefix for Calc has been changed to `C-x *' and Calc +can be started with `C-x * *'. The Calc manual is separate from the +Emacs manual; within Emacs, type "C-h i m calc RET" to read the +manual. A reference card is available in `etc/calccard.tex' and +`etc/calccard.ps'. + +** Org mode is now part of the Emacs distribution + +Org mode is a mode for keeping notes, maintaining ToDo lists, and +doing project planning with a fast and effective plain-text system. +It also contains a plain-text table editor with spreadsheet-like +capabilities. + +The Org mode table editor can be integrated into any major mode by - activating the minor orgtbl-mode. ++activating the minor mode, Orgtbl mode. + +The documentation for org-mode is in a separate manual; within Emacs, +type "C-h i m org RET" to read that manual. A reference card is +available in `etc/orgcard.tex' and `etc/orgcard.ps'. + +** ERC is now part of the Emacs distribution. + +ERC is a powerful, modular, and extensible IRC client for Emacs. + +To see what modules are available, type +M-x customize-option erc-modules RET. + +To start an IRC session with ERC, type M-x erc, and follow the prompts +for server, port, and nick. + +** Rcirc is now part of the Emacs distribution. + +Rcirc is an Internet relay chat (IRC) client. It supports +simultaneous connections to multiple IRC servers. Each discussion +takes place in its own buffer. For each connection you can join +several channels (many-to-many) and participate in private +(one-to-one) chats. Both channel and private chats are contained in +separate buffers. + +To start an IRC session using the default parameters, type M-x irc. +If you type C-u M-x irc, it prompts you for the server, nick, port and +startup channel parameters before connecting. + +** The new package ibuffer provides a powerful, completely +customizable replacement for buff-menu.el. + +** Newsticker is now part of the Emacs distribution. + +Newsticker asynchronously retrieves headlines (RSS) from a list of news +sites, prepares these headlines for reading, and allows for loading the +corresponding articles in a web browser. Its documentation is in a +separate manual. + +** The wdired.el package allows you to use normal editing commands on Dired +buffers to change filenames, permissions, etc... + +** Ido mode is now part of the Emacs distribution. + +The ido (interactively do) package is an extension of the iswitchb +package to do interactive opening of files and directories in addition +to interactive buffer switching. Ido is a superset of iswitchb (with +a few exceptions), so don't enable both packages. + +** The new global minor mode `file-name-shadow-mode' modifies the way +filenames being entered by the user in the minibuffer are displayed, so +that it's clear when part of the entered filename will be ignored due to +Emacs' filename parsing rules. The ignored portion can be made dim, +invisible, or otherwise less visually noticeable. The display method can +be displayed by customizing the variable `file-name-shadow-properties'. + +** Emacs' keyboard macro facilities have been enhanced by the new +kmacro package. + +Keyboard macros are now defined and executed via the F3 and F4 keys: +F3 starts a macro, F4 ends the macro, and pressing F4 again executes +the last macro. While defining the macro, F3 inserts a counter value +which automatically increments every time the macro is executed. + +There is now a keyboard macro ring which stores the most recently +defined macros. + +The C-x C-k sequence is now a prefix for the kmacro keymap which +defines bindings for moving through the keyboard macro ring, +C-x C-k C-p and C-x C-k C-n, editing the last macro C-x C-k C-e, +manipulating the macro counter and format via C-x C-k C-c, +C-x C-k C-a, and C-x C-k C-f. See the commentary in kmacro.el +for more commands. + +The original macro bindings C-x (, C-x ), and C-x e are still +available, but they now interface to the keyboard macro ring too. + +The C-x e command now automatically terminates the current macro +before calling it, if used while defining a macro. + +In addition, when ending or calling a macro with C-x e, the macro can +be repeated immediately by typing just the `e'. You can customize +this behavior via the variables kmacro-call-repeat-key and +kmacro-call-repeat-with-arg. + +Keyboard macros can now be debugged and edited interactively. +C-x C-k SPC steps through the last keyboard macro one key sequence +at a time, prompting for the actions to take. + +** The new keypad setup package provides several common bindings for +the numeric keypad which is available on most keyboards. The numeric +keypad typically has the digits 0 to 9, a decimal point, keys marked ++, -, /, and *, an Enter key, and a NumLock toggle key. The keypad +package only controls the use of the digit and decimal keys. + +By customizing the variables `keypad-setup', `keypad-shifted-setup', +`keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by +using the function `keypad-setup', you can rebind all digit keys and +the decimal key of the keypad in one step for each of the four +possible combinations of the Shift key state (not pressed/pressed) and +the NumLock toggle state (off/on). + +The choices for the keypad keys in each of the above states are: +`Plain numeric keypad' where the keys generates plain digits, +`Numeric keypad with decimal key' where the character produced by the +decimal key can be customized individually (for internationalization), +`Numeric Prefix Arg' where the keypad keys produce numeric prefix args +for Emacs editing commands, `Cursor keys' and `Shifted Cursor keys' +where the keys work like (shifted) arrow keys, home/end, etc., and +`Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.) +are left unspecified and can be bound individually through the global +or local keymaps. + +** The printing package is now part of the Emacs distribution. + +If you enable the printing package by including (require 'printing) in +the .emacs file, the normal Print item on the File menu is replaced +with a Print sub-menu which allows you to preview output through +ghostview, use ghostscript to print (if you don't have a PostScript +printer) or send directly to printer a PostScript code generated by +`ps-print' package. Use M-x pr-help for more information. + +** The new package longlines.el provides a minor mode for editing text +files composed of long lines, based on the `use-hard-newlines' +mechanism. The long lines are broken up by inserting soft newlines, +which are automatically removed when saving the file to disk or +copying into the kill ring, clipboard, etc. By default, Longlines +mode inserts soft newlines automatically during editing, a behavior +referred to as "soft word wrap" in other text editors. This is +similar to Refill mode, but more reliable. To turn the word wrap +feature off, set `longlines-auto-wrap' to nil. + +** SES mode (ses-mode) is a new major mode for creating and editing +spreadsheet files. Besides the usual Emacs features (intuitive command +letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers +viral immunity and import/export of tab-separated values. + +** The new package table.el implements editable, WYSIWYG, embedded +`text tables' in Emacs buffers. It simulates the effect of putting +these tables in a special major mode. The package emulates WYSIWYG +table editing available in modern word processors. The package also +can generate a table source in typesetting and markup languages such +as latex and html from the visually laid out text table. + +** Filesets are collections of files. You can define a fileset in +various ways, such as based on a directory tree or based on +program files that include other program files. + +Once you have defined a fileset, you can perform various operations on +all the files in it, such as visiting them or searching and replacing +in them. + +** The minor mode Reveal mode makes text visible on the fly as you +move your cursor into hidden regions of the buffer. +It should work with any package that uses overlays to hide parts +of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ... + +There is also Global Reveal mode which affects all buffers. + +** New minor mode, Visible mode, toggles invisibility in the current buffer. +When enabled, it makes all invisible text visible. When disabled, it +restores the previous value of `buffer-invisibility-spec'. + +** The new package flymake.el does on-the-fly syntax checking of program +source files. See the Flymake's Info manual for more details. + +** savehist saves minibuffer histories between sessions. +To use this feature, turn on savehist-mode in your `.emacs' file. + +** The ruler-mode.el library provides a minor mode for displaying an +"active" ruler in the header line. You can use the mouse to visually +change the `fill-column', `window-margins' and `tab-stop-list' +settings. + +** The file t-mouse.el is now part of Emacs and provides access to mouse +events from the console. It still requires gpm to work but has been updated +for Emacs 22. In particular, the mode-line is now position sensitive. + +** The new package scroll-lock.el provides the Scroll Lock minor mode +for pager-like scrolling. Keys which normally move point by line or +paragraph will scroll the buffer by the respective amount of lines +instead and point will be kept vertically fixed relative to window +boundaries during scrolling. + +** The new global minor mode `size-indication-mode' (off by default) +shows the size of accessible part of the buffer on the mode line. + +** The new package conf-mode.el handles thousands of configuration files, with +varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value, +var : value, var value or keyword var value) and sections ([section] or +section { }). Many files under /etc/, or with suffixes like .cf through +.config, .properties (Java), .desktop (KDE/Gnome), .ini and many others are +recognized. + +** GDB-Script-mode is used for files like .gdbinit. + +** The new package dns-mode.el adds syntax highlighting of DNS master files. +It is a modern replacement for zone-mode.el, which is now obsolete. + +** `cfengine-mode' is a major mode for editing GNU Cfengine +configuration files. + +** The TCL package tcl-mode.el was replaced by tcl.el. +This was actually done in Emacs-21.1, and was not documented. + +* Changes in Specialized Modes and Packages in Emacs 22.1: + +** Changes in Dired + +*** Bindings for Image-Dired added. +Several new keybindings, all starting with the C-t prefix, have been +added to Dired. They are all bound to commands in Image-Dired. As a +starting point, mark some image files in a dired buffer and do C-t d +to display thumbnails of them in a separate buffer. + +** Info mode changes + +*** Images in Info pages are supported. + +Info pages show embedded images, in Emacs frames with image support. +Info documentation that includes images, processed with makeinfo +version 4.7 or newer, compiles to Info pages with embedded images. + +*** `Info-index' offers completion. + +*** http and ftp links in Info are now operational: they look like cross +references and following them calls `browse-url'. + +*** isearch in Info uses Info-search and searches through multiple nodes. + +Before leaving the initial Info node isearch fails once with the error +message [initial node], and with subsequent C-s/C-r continues through +other nodes. When isearch fails for the rest of the manual, it wraps +around the whole manual to the top/final node. The user option +`Info-isearch-search' controls whether to use Info-search for isearch, +or the default isearch search function that wraps around the current +Info node. + +*** New search commands: `Info-search-case-sensitively' (bound to S), +`Info-search-backward', and `Info-search-next' which repeats the last +search without prompting for a new search string. + +*** New command `info-apropos' searches the indices of the known +Info files on your system for a string, and builds a menu of the +possible matches. + +*** New command `Info-history-forward' (bound to r and new toolbar icon) +moves forward in history to the node you returned from after using +`Info-history-back' (renamed from `Info-last'). + +*** New command `Info-history' (bound to L) displays a menu of visited nodes. + +*** New command `Info-toc' (bound to T) creates a node with table of contents +from the tree structure of menus of the current Info file. + +*** New command `Info-copy-current-node-name' (bound to w) copies +the current Info node name into the kill ring. With a zero prefix +arg, puts the node name inside the `info' function call. + +*** New face `info-xref-visited' distinguishes visited nodes from unvisited +and a new option `Info-fontify-visited-nodes' to control this. + +*** A numeric prefix argument of `info' selects an Info buffer +with the number appended to the `*info*' buffer name (e.g. "*info*<2>"). + +*** Info now hides node names in menus and cross references by default. + +If you prefer the old behavior, you can set the new user option +`Info-hide-note-references' to nil. + +*** The default value for `Info-scroll-prefer-subnodes' is now nil. + +** Emacs server changes + +*** You can have several Emacs servers on the same machine. + + % emacs --eval '(setq server-name "foo")' -f server-start & + % emacs --eval '(setq server-name "bar")' -f server-start & + % emacsclient -s foo file1 + % emacsclient -s bar file2 + +*** The `emacsclient' command understands the options `--eval' and +`--display' which tell Emacs respectively to evaluate the given Lisp +expression and to use the given display when visiting files. + +*** User option `server-mode' can be used to start a server process. + +** Locate changes + +*** By default, reverting the *Locate* buffer now just runs the last +`locate' command back over again without offering to update the locate +database (which normally only works if you have root privileges). If +you prefer the old behavior, set the new customizable option +`locate-update-when-revert' to t. + +** Desktop package + +*** Desktop saving is now a minor mode, `desktop-save-mode'. + +*** The variable `desktop-enable' is obsolete. + +Customize `desktop-save-mode' to enable desktop saving. + +*** Buffers are saved in the desktop file in the same order as that in the +buffer list. + +*** The desktop package can be customized to restore only some buffers +immediately, remaining buffers are restored lazily (when Emacs is +idle). + +*** New command line option --no-desktop + +*** New commands: + - desktop-revert reverts to the last loaded desktop. + - desktop-change-dir kills current desktop and loads a new. + - desktop-save-in-desktop-dir saves desktop in the directory from which + it was loaded. + - desktop-lazy-complete runs the desktop load to completion. + - desktop-lazy-abort aborts lazy loading of the desktop. + +*** New customizable variables: + - desktop-save. Determines whether the desktop should be saved when it is + killed. + - desktop-file-name-format. Format in which desktop file names should be saved. + - desktop-path. List of directories in which to lookup the desktop file. + - desktop-locals-to-save. List of local variables to save. + - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear. + - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear' + should not delete. + - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are + restored lazily (when Emacs is idle). + - desktop-lazy-verbose. Verbose reporting of lazily created buffers. + - desktop-lazy-idle-delay. Idle delay before starting to create buffers. + +*** New hooks: + - desktop-after-read-hook run after a desktop is loaded. + - desktop-no-desktop-file-hook run when no desktop file is found. + +** Recentf changes + +The recent file list is now automatically cleaned up when recentf mode is +enabled. The new option `recentf-auto-cleanup' controls when to do +automatic cleanup. + +The ten most recent files can be quickly opened by using the shortcut +keys 1 to 9, and 0, when the recent list is displayed in a buffer via +the `recentf-open-files', or `recentf-open-more-files' commands. + +The `recentf-keep' option replaces `recentf-keep-non-readable-files-p' +and provides a more general mechanism to customize which file names to +keep in the recent list. + +With the more advanced option `recentf-filename-handlers', you can +specify functions that successively transform recent file names. For +example, if set to `file-truename' plus `abbreviate-file-name', the +same file will not be in the recent list with different symbolic +links, and the file name will be abbreviated. + +To follow naming convention, `recentf-menu-append-commands-flag' +replaces the misnamed option `recentf-menu-append-commands-p'. The +old name remains available as alias, but has been marked obsolete. + +** Auto-Revert changes + +*** You can now use Auto Revert mode to `tail' a file. + +If point is at the end of a file buffer before reverting, Auto Revert +mode keeps it at the end after reverting. Similarly if point is +displayed at the end of a file buffer in any window, it stays at the end +of the buffer in that window. This allows you to "tail" a file: just +put point at the end of the buffer and it stays there. This rule +applies to file buffers. For non-file buffers, the behavior can be mode +dependent. + +If you are sure that the file will only change by growing at the end, +then you can tail the file more efficiently by using the new minor +mode Auto Revert Tail mode. The function `auto-revert-tail-mode' +toggles this mode. + +*** Auto Revert mode is now more careful to avoid excessive reverts and +other potential problems when deciding which non-file buffers to +revert. This matters especially if Global Auto Revert mode is enabled +and `global-auto-revert-non-file-buffers' is non-nil. Auto Revert +mode only reverts a non-file buffer if the buffer has a non-nil +`revert-buffer-function' and a non-nil `buffer-stale-function', which +decides whether the buffer should be reverted. Currently, this means +that auto reverting works for Dired buffers (although this may not +work properly on all operating systems) and for the Buffer Menu. + +*** If the new user option `auto-revert-check-vc-info' is non-nil, Auto +Revert mode reliably updates version control info (such as the version +control number in the mode line), in all version controlled buffers in +which it is active. If the option is nil, the default, then this info +only gets updated whenever the buffer gets reverted. + +** Changes in Shell Mode + +*** Shell output normally scrolls so that the input line is at the +bottom of the window -- thus showing the maximum possible text. (This +is similar to the way sequential output to a terminal works.) + +** Changes in Hi Lock + +*** hi-lock-mode now only affects a single buffer, and a new function +`global-hi-lock-mode' enables Hi Lock in all buffers. By default, if +hi-lock-mode is used in what appears to be the initialization file, a +warning message suggests to use global-hi-lock-mode instead. However, +if the new variable `hi-lock-archaic-interface-deduce' is non-nil, +using hi-lock-mode in an initialization file will turn on Hi Lock in all +buffers and no warning will be issued (for compatibility with the +behavior in older versions of Emacs). + +** Changes in Allout + +*** Topic cryptography added, enabling easy gpg topic encryption and +decryption. Per-topic basis enables interspersing encrypted-text and +clear-text within a single file to your heart's content, using symmetric +and/or public key modes. Time-limited key caching, user-provided +symmetric key hinting and consistency verification, auto-encryption of +pending topics on save, and more, make it easy to use encryption in +powerful ways. Encryption behavior customization is collected in the +allout-encryption customization group. + +*** Default command prefix was changed to "\C-c " (control-c space), to +avoid intruding on user's keybinding space. Customize the +`allout-command-prefix' variable to your preference. + +*** Some previously rough topic-header format edge cases are reconciled. +Level 1 topics use the mode's comment format, and lines starting with the +asterisk - for instance, the comment close of some languages (eg, c's "*/" +or mathematica's "*)") - at the beginning of line are no longer are +interpreted as level 1 topics in those modes. + +*** Many or most commonly occurring "accidental" topics are disqualified. +Text in item bodies that looks like a low-depth topic is no longer mistaken +for one unless its first offspring (or that of its next sibling with +offspring) is only one level deeper. + +For example, pasting some text with a bunch of leading asterisks into a +topic that's followed by a level 3 or deeper topic will not cause the +pasted text to be mistaken for outline structure. + +The same constraint is applied to any level 2 or 3 topics. + +This settles an old issue where typed or pasted text needed to be carefully +reviewed, and sometimes doctored, to avoid accidentally disrupting the +outline structure. Now that should be generally unnecessary, as the most +prone-to-occur accidents are disqualified. + +*** Allout now refuses to create "containment discontinuities", where a +topic is shifted deeper than the offspring-depth of its container. On the +other hand, allout now operates gracefully with existing containment +discontinuities, revealing excessively contained topics rather than either +leaving them hidden or raising an error. + +*** Navigation within an item is easier. Repeated beginning-of-line and +end-of-line key commands (usually, ^A and ^E) cycle through the +beginning/end-of-line and then beginning/end of topic, etc. See new +customization vars `allout-beginning-of-line-cycles' and +`allout-end-of-line-cycles'. + +*** New or revised allout-mode activity hooks enable creation of +cooperative enhancements to allout mode without changes to the mode, +itself. + +See `allout-exposure-change-hook', `allout-structure-added-hook', +`allout-structure-deleted-hook', and `allout-structure-shifted-hook'. + +`allout-exposure-change-hook' replaces the existing +`allout-view-change-hook', which is being deprecated. Both are still +invoked, but `allout-view-change-hook' will eventually be ignored. +`allout-exposure-change-hook' is called with explicit arguments detailing +the specifics of each change (as are the other new hooks), making it easier +to use than the old version. + +There is a new mode deactivation hook, `allout-mode-deactivate-hook', for +coordinating with deactivation of allout-mode. Both that and the mode +activation hook, `allout-mode-hook' are now run after the `allout-mode' +variable is changed, rather than before. + +*** Allout now uses text overlay's `invisible' property for concealed text, +instead of selective-display. This simplifies the code, in particular +avoiding the need for kludges for isearch dynamic-display, discretionary +handling of edits of concealed text, undo concerns, etc. + +*** There are many other fixes and refinements, including: + + - repaired inhibition of inadvertent edits to concealed text, without + inhibiting undo; we now reveal undo changes within concealed text. + - auto-fill-mode is now left inactive when allout-mode starts, if it + already was inactive. also, `allout-inhibit-auto-fill' custom + configuration variable makes it easy to disable auto fill in allout + outlines in general or on a per-buffer basis. + - allout now tolerates fielded text in outlines without disruption. + - hot-spot navigation now is modularized with a new function, + `allout-hotspot-key-handler', enabling easier use and enhancement of + the functionality in allout addons. + - repaired retention of topic body hanging indent upon topic depth shifts + - bulleting variation is simpler and more accommodating, both in the + default behavior and in ability to vary when creating new topics + - mode deactivation now does cleans up effectively, more properly + restoring affected variables and hooks to former state, removing + overlays, etc. see `allout-add-resumptions' and + `allout-do-resumptions', which replace the old `allout-resumptions'. + - included a few unit-tests for interior functionality. developers can + have them automatically run at the end of module load by customizing + the option `allout-run-unit-tests-on-load'. + - many, many other, more minor tweaks, fixes, and refinements. + - version number incremented to 2.2 + +** Hideshow mode changes + +*** New variable `hs-set-up-overlay' allows customization of the overlay +used to effect hiding for hideshow minor mode. Integration with isearch +handles the overlay property `display' specially, preserving it during +temporary overlay showing in the course of an isearch operation. + +*** New variable `hs-allow-nesting' non-nil means that hiding a block does +not discard the hidden state of any "internal" blocks; when the parent +block is later shown, the internal blocks remain hidden. Default is nil. + +** FFAP changes + +*** New ffap commands and keybindings: + +C-x C-r (`ffap-read-only'), +C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'), +C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'), +C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame'). + +*** FFAP accepts wildcards in a file name by default. + +C-x C-f passes the file name to `find-file' with non-nil WILDCARDS +argument, which visits multiple files, and C-x d passes it to `dired'. + +** Changes in Skeleton + +*** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction. + +`@' has reverted to only setting `skeleton-positions' and no longer +sets `skeleton-point'. Skeletons which used @ to mark +`skeleton-point' independent of `_' should now use `-' instead. The +updated `skeleton-insert' docstring explains these new features along +with other details of skeleton construction. + +*** The variables `skeleton-transformation', `skeleton-filter', and +`skeleton-pair-filter' have been renamed to +`skeleton-transformation-function', `skeleton-filter-function', and +`skeleton-pair-filter-function'. The old names are still available +as aliases. + +** HTML/SGML changes + +*** Emacs now tries to set up buffer coding systems for HTML/XML files +automatically. + +*** SGML mode has indentation and supports XML syntax. +The new variable `sgml-xml-mode' tells SGML mode to use XML syntax. +When this option is enabled, SGML tags are inserted in XML style, +i.e., there is always a closing tag. +By default, its setting is inferred on a buffer-by-buffer basis +from the file name or buffer contents. + +*** The variable `sgml-transformation' has been renamed to +`sgml-transformation-function'. The old name is still available as +alias. + +*** `xml-mode' is now an alias for `sgml-mode', which has XML support. + +** TeX modes + +*** New major mode Doctex mode, for *.dtx files. + +*** C-c C-c prompts for a command to run, and tries to offer a good default. + +*** The user option `tex-start-options-string' has been replaced +by two new user options: `tex-start-options', which should hold +command-line options to feed to TeX, and `tex-start-commands' which should hold +TeX commands to use at startup. + +*** verbatim environments are now highlighted in courier by font-lock +and super/sub-scripts are made into super/sub-scripts. + +** RefTeX mode changes + +*** Changes to RefTeX's table of contents + +The new command keys "<" and ">" in the TOC buffer promote/demote the +section at point or all sections in the current region, with full +support for multifile documents. + +The new command `reftex-toc-recenter' (`C-c -') shows the current +section in the TOC buffer without selecting the TOC window. +Recentering can happen automatically in idle time when the option +`reftex-auto-recenter-toc' is turned on. The highlight in the TOC +buffer stays when the focus moves to a different window. A dedicated +frame can show the TOC with the current section always automatically +highlighted. The frame is created and deleted from the toc buffer +with the `d' key. + +The toc window can be split off horizontally instead of vertically. +See new option `reftex-toc-split-windows-horizontally'. + +Labels can be renamed globally from the table of contents using the +key `M-%'. + +The new command `reftex-goto-label' jumps directly to a label +location. + +*** Changes related to citations and BibTeX database files + +Commands that insert a citation now prompt for optional arguments when +called with a prefix argument. Related new options are +`reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'. + +The new command `reftex-create-bibtex-file' creates a BibTeX database +with all entries referenced in the current document. The keys "e" and +"E" allow to produce a BibTeX database file from entries marked in a +citation selection buffer. + +The command `reftex-citation' uses the word in the buffer before the +cursor as a default search string. + +The support for chapterbib has been improved. Different chapters can +now use BibTeX or an explicit `thebibliography' environment. + +The macros which specify the bibliography file (like \bibliography) +can be configured with the new option `reftex-bibliography-commands'. + +Support for jurabib has been added. + +*** Global index matched may be verified with a user function. + +During global indexing, a user function can verify an index match. +See new option `reftex-index-verify-function'. + +*** Parsing documents with many labels can be sped up. + +Operating in a document with thousands of labels can be sped up +considerably by allowing RefTeX to derive the type of a label directly +from the label prefix like `eq:' or `fig:'. The option +`reftex-trust-label-prefix' needs to be configured in order to enable +this feature. While the speed-up is significant, this may reduce the +quality of the context offered by RefTeX to describe a label. + +*** Miscellaneous changes + +The macros which input a file in LaTeX (like \input, \include) can be +configured in the new option `reftex-include-file-commands'. + +RefTeX supports global incremental search. + +** BibTeX mode + +*** The new command `bibtex-url' browses a URL for the BibTeX entry at +point (bound to C-c C-l and mouse-2, RET on clickable fields). + +*** The new command `bibtex-entry-update' (bound to C-c C-u) updates +an existing BibTeX entry by inserting fields that may occur but are not +present. + +*** New `bibtex-entry-format' option `required-fields', enabled by default. + +*** `bibtex-maintain-sorted-entries' can take values `plain', +`crossref', and `entry-class' which control the sorting scheme used +for BibTeX entries. `bibtex-sort-entry-class' controls the sorting +scheme `entry-class'. TAB completion for reference keys and +automatic detection of duplicates does not require anymore that +`bibtex-maintain-sorted-entries' is non-nil. + +*** The new command `bibtex-complete' completes word fragment before +point according to context (bound to M-tab). + +*** In BibTeX mode the command `fill-paragraph' (M-q) fills +individual fields of a BibTeX entry. + +*** The new variable `bibtex-autofill-types' contains a list of entry +types for which fields are filled automatically (if possible). + +*** The new commands `bibtex-find-entry' and `bibtex-find-crossref' +locate entries and crossref'd entries (bound to C-c C-s and C-c C-x). +Crossref fields are clickable (bound to mouse-2, RET). + +*** The new variables `bibtex-files' and `bibtex-file-path' define a set +of BibTeX files that are searched for entry keys. + +*** The new command `bibtex-validate-globally' checks for duplicate keys +in multiple BibTeX files. + +*** If the new variable `bibtex-autoadd-commas' is non-nil, +automatically add missing commas at end of BibTeX fields. + +*** The new command `bibtex-copy-summary-as-kill' pushes summary +of BibTeX entry to kill ring (bound to C-c C-t). + +*** If the new variable `bibtex-parse-keys-fast' is non-nil, +use fast but simplified algorithm for parsing BibTeX keys. + +*** The new variables bibtex-expand-strings and +bibtex-autokey-expand-strings control the expansion of strings when +extracting the content of a BibTeX field. + +*** The variables `bibtex-autokey-name-case-convert' and +`bibtex-autokey-titleword-case-convert' have been renamed to +`bibtex-autokey-name-case-convert-function' and +`bibtex-autokey-titleword-case-convert-function'. The old names are +still available as aliases. + +** GUD changes + +*** The new package gdb-ui.el provides an enhanced graphical interface to +GDB. You can interact with GDB through the GUD buffer in the usual way, but +there are also further buffers which control the execution and describe the +state of your program. It can separate the input/output of your program from +that of GDB and watches expressions in the speedbar. It also uses features of +Emacs 21/22 such as the toolbar, and bitmaps in the fringe to indicate +breakpoints. + +To use this package just type M-x gdb. See the Emacs manual if you want the +old behaviour. + +*** GUD mode has its own tool bar for controlling execution of the inferior +and other common debugger commands. + +*** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program +counter to the specified source line (the one where point is). + +*** The variable tooltip-gud-tips-p has been removed. GUD tooltips can now be +toggled independently of normal tooltips with the minor mode +`gud-tooltip-mode'. + +*** In graphical mode, with a C program, GUD Tooltips have been extended to +display the #define directive associated with an identifier when program is +not executing. + +*** GUD mode improvements for jdb: + +**** Search for source files using jdb classpath and class information. +Fast startup since there is no need to scan all source files up front. +There is also no need to create and maintain lists of source +directories to scan. Look at `gud-jdb-use-classpath' and +`gud-jdb-classpath' customization variables documentation. + +**** The previous method of searching for source files has been +preserved in case someone still wants/needs to use it. +Set `gud-jdb-use-classpath' to nil. + +**** Supports the standard breakpoint (gud-break, gud-clear) +set/clear operations from Java source files under the classpath, stack +traversal (gud-up, gud-down), and run until current stack finish +(gud-finish). + +**** Supports new jdb (Java 1.2 and later) in addition to oldjdb +(Java 1.1 jdb). + +*** Added jdb Customization Variables + +**** `gud-jdb-command-name'. What command line to use to invoke jdb. + +**** `gud-jdb-use-classpath'. Allows selection of java source file searching +method: set to t for new method, nil to scan `gud-jdb-directories' for +java sources (previous method). + +**** `gud-jdb-directories'. List of directories to scan and search for Java +classes using the original gud-jdb method (if `gud-jdb-use-classpath' +is nil). + +*** Minor Improvements + +**** The STARTTLS wrapper (starttls.el) can now use GNUTLS +instead of the OpenSSL based `starttls' tool. For backwards +compatibility, it prefers `starttls', but you can toggle +`starttls-use-gnutls' to switch to GNUTLS (or simply remove the +`starttls' tool). + +**** Do not allow debugger output history variable to grow without bounds. + +** Lisp mode changes + +*** Lisp mode now uses `font-lock-doc-face' for doc strings. + +*** C-u C-M-q in Emacs Lisp mode pretty-prints the list after point. + +*** New features in evaluation commands + +**** The function `eval-defun' (C-M-x) called on defface reinitializes +the face to the value specified in the defface expression. + +**** Typing C-x C-e twice prints the value of the integer result +in additional formats (octal, hexadecimal, character) specified +by the new function `eval-expression-print-format'. The same +function also defines the result format for `eval-expression' (M-:), +`eval-print-last-sexp' (C-j) and some edebug evaluation functions. + +** Changes to cmuscheme + +*** Emacs now offers to start Scheme if the user tries to +evaluate a Scheme expression but no Scheme subprocess is running. + +*** If the file ~/.emacs_NAME or ~/.emacs.d/init_NAME.scm (where NAME +is the name of the Scheme interpreter) exists, its contents are sent +to the Scheme subprocess upon startup. + +*** There are new commands to instruct the Scheme interpreter to trace +procedure calls (`scheme-trace-procedure') and to expand syntactic forms +(`scheme-expand-current-form'). The commands actually sent to the Scheme +subprocess are controlled by the user options `scheme-trace-command', +`scheme-untrace-command' and `scheme-expand-current-form'. + +** Ewoc changes + +*** The new function `ewoc-delete' deletes specified nodes. + +*** `ewoc-create' now takes optional arg NOSEP, which inhibits insertion of +a newline after each pretty-printed entry and after the header and footer. +This allows you to create multiple-entry ewocs on a single line and to +effect "invisible" nodes by arranging for the pretty-printer to not print +anything for those nodes. + +For example, these two sequences of expressions behave identically: + +;; NOSEP nil +(defun PP (data) (insert (format "%S" data))) +(ewoc-create 'PP "start\n") + +;; NOSEP t +(defun PP (data) (insert (format "%S\n" data))) +(ewoc-create 'PP "start\n\n" "\n" t) + +** CC mode changes + +*** The CC Mode manual has been extensively revised. +The information about using CC Mode has been separated from the larger +and more difficult chapters about configuration. + +*** New Minor Modes +**** Electric Minor Mode toggles the electric action of non-alphabetic keys. +The new command c-toggle-electric-mode is bound to C-c C-l. Turning the +mode off can be helpful for editing chaotically indented code and for +users new to CC Mode, who sometimes find electric indentation +disconcerting. Its current state is displayed in the mode line with an +'l', e.g. "C/al". + +**** Subword Minor Mode makes Emacs recognize word boundaries at upper case +letters in StudlyCapsIdentifiers. You enable this feature by C-c C-w. It can +also be used in non-CC Mode buffers. :-) Contributed by Masatake YAMATO. + +*** Support for the AWK language. +Support for the AWK language has been introduced. The implementation is +based around GNU AWK version 3.1, but it should work pretty well with +any AWK. As yet, not all features of CC Mode have been adapted for AWK. +Here is a summary: + +**** Indentation Engine +The CC Mode indentation engine fully supports AWK mode. + +AWK mode handles code formatted in the conventional AWK fashion: `{'s +which start actions, user-defined functions, or compound statements are +placed on the same line as the associated construct; the matching `}'s +are normally placed under the start of the respective pattern, function +definition, or structured statement. + +The predefined line-up functions haven't yet been adapted for AWK +mode, though some of them may work serendipitously. There shouldn't +be any problems writing custom indentation functions for AWK mode. + +**** Font Locking +There is a single level of font locking in AWK mode, rather than the +three distinct levels the other modes have. There are several +idiosyncrasies in AWK mode's font-locking due to the peculiarities of +the AWK language itself. + +**** Comment and Movement Commands +These commands all work for AWK buffers. The notion of "defun" has +been augmented to include AWK pattern-action pairs - the standard +"defun" commands on key sequences C-M-a, C-M-e, and C-M-h use this +extended definition. + +**** "awk" style, Auto-newline Insertion and Clean-ups +A new style, "awk" has been introduced, and this is now the default +style for AWK code. With auto-newline enabled, the clean-up +c-one-liner-defun (see above) is useful. + +*** Font lock support. +CC Mode now provides font lock support for all its languages. This +supersedes the font lock patterns that have been in the core font lock +package for C, C++, Java and Objective-C. Like indentation, font +locking is done in a uniform way across all languages (except the new +AWK mode - see below). That means that the new font locking will be +different from the old patterns in various details for most languages. + +The main goal of the font locking in CC Mode is accuracy, to provide a +dependable aid in recognizing the various constructs. Some, like +strings and comments, are easy to recognize while others like +declarations and types can be very tricky. CC Mode can go to great +lengths to recognize declarations and casts correctly, especially when +the types aren't recognized by standard patterns. This is a fairly +demanding analysis which can be slow on older hardware, and it can +therefore be disabled by choosing a lower decoration level with the +variable font-lock-maximum-decoration. + +Note that the most demanding font lock level has been tuned with lazy +fontification in mind; Just-In-Time-Lock mode should be enabled for +the highest font lock level (by default, it is). Fontifying a file +with several thousand lines in one go can take the better part of a +minute. + +**** The (c|c++|objc|java|idl|pike)-font-lock-extra-types variables +are now used by CC Mode to recognize identifiers that are certain to +be types. (They are also used in cases that aren't related to font +locking.) At the maximum decoration level, types are often recognized +properly anyway, so these variables should be fairly restrictive and +not contain patterns for uncertain types. + +**** Support for documentation comments. +There is a "plugin" system to fontify documentation comments like +Javadoc and the markup within them. It's independent of the host +language, so it's possible to e.g. turn on Javadoc font locking in C +buffers. See the variable c-doc-comment-style for details. + +Currently three kinds of doc comment styles are recognized: Sun's +Javadoc, Autodoc (which is used in Pike) and GtkDoc (used in C). (The +last was contributed by Masatake YAMATO). This is by no means a +complete list of the most common tools; if your doc comment extractor +of choice is missing then please drop a note to bug-cc-mode@gnu.org. + +**** Better handling of C++ templates. +As a side effect of the more accurate font locking, C++ templates are +now handled much better. The angle brackets that delimit them are +given parenthesis syntax so that they can be navigated like other +parens. + +This also improves indentation of templates, although there still is +work to be done in that area. E.g. it's required that multiline +template clauses are written in full and then refontified to be +recognized, and the indentation of nested templates is a bit odd and +not as configurable as it ought to be. + +**** Improved handling of Objective-C and CORBA IDL. +Especially the support for Objective-C and IDL has gotten an overhaul. +The special "@" declarations in Objective-C are handled correctly. +All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and +handled correctly, also wrt indentation. + +*** Changes in Key Sequences +**** c-toggle-auto-hungry-state is no longer bound to C-c C-t. + +**** c-toggle-hungry-state is no longer bound to C-c C-d. +This binding has been taken over by c-hungry-delete-forwards. + +**** c-toggle-auto-state (C-c C-t) has been renamed to c-toggle-auto-newline. +c-toggle-auto-state remains as an alias. + +**** The new commands c-hungry-backspace and c-hungry-delete-forwards +have key bindings C-c C-DEL (or C-c DEL, for the benefit of TTYs) and +C-c C-d (or C-c C- or C-c ) respectively. These +commands delete entire blocks of whitespace with a single +key-sequence. [N.B. "DEL" is the key.] + +**** The new command c-toggle-electric-mode is bound to C-c C-l. + +**** The new command c-subword-mode is bound to C-c C-w. + +*** C-c C-s (`c-show-syntactic-information') now highlights the anchor +position(s). + +*** New syntactic symbols in IDL mode. +The top level constructs "module" and "composition" (from CIDL) are +now handled like "namespace" in C++: They are given syntactic symbols +module-open, module-close, inmodule, composition-open, +composition-close, and incomposition. + +*** New functions to do hungry delete without enabling hungry delete mode. +The new functions `c-hungry-backspace' and `c-hungry-delete-forward' +provide hungry deletion without having to toggle a mode. They are +bound to C-c C-DEL and C-c C-d (and several variants, for the benefit +of different keyboard setups. See "Changes in key sequences" above). + +*** Better control over `require-final-newline'. + +The variable `c-require-final-newline' specifies which of the modes +implemented by CC mode should insert final newlines. Its value is a +list of modes, and only those modes should do it. By default the list +includes C, C++ and Objective-C modes. + +Whichever modes are in this list will set `require-final-newline' +based on `mode-require-final-newline'. + +*** Format change for syntactic context elements. + +The elements in the syntactic context returned by `c-guess-basic-syntax' +and stored in `c-syntactic-context' has been changed somewhat to allow +attaching more information. They are now lists instead of single cons +cells. E.g. a line that previously had the syntactic analysis + +((inclass . 11) (topmost-intro . 13)) + +is now analyzed as + +((inclass 11) (topmost-intro 13)) + +In some cases there are more than one position given for a syntactic +symbol. + +This change might affect code that calls `c-guess-basic-syntax' +directly, and custom lineup functions if they use +`c-syntactic-context'. However, the argument given to lineup +functions is still a single cons cell with nil or an integer in the +cdr. + +*** API changes for derived modes. + +There have been extensive changes "under the hood" which can affect +derived mode writers. Some of these changes are likely to cause +incompatibilities with existing derived modes, but on the other hand +care has now been taken to make it possible to extend and modify CC +Mode with less risk of such problems in the future. + +**** New language variable system. +These are variables whose values vary between CC Mode's different +languages. See the comment blurb near the top of cc-langs.el. + +**** New initialization functions. +The initialization procedure has been split up into more functions to +give better control: `c-basic-common-init', `c-font-lock-init', and +`c-init-language-vars'. + +*** Changes in analysis of nested syntactic constructs. +The syntactic analysis engine has better handling of cases where +several syntactic constructs appear nested on the same line. They are +now handled as if each construct started on a line of its own. + +This means that CC Mode now indents some cases differently, and +although it's more consistent there might be cases where the old way +gave results that's more to one's liking. So if you find a situation +where you think that the indentation has become worse, please report +it to bug-cc-mode@gnu.org. + +**** New syntactic symbol substatement-label. +This symbol is used when a label is inserted between a statement and +its substatement. E.g: + + if (x) + x_is_true: + do_stuff(); + +*** Better handling of multiline macros. + +**** Syntactic indentation inside macros. +The contents of multiline #define's are now analyzed and indented +syntactically just like other code. This can be disabled by the new +variable `c-syntactic-indentation-in-macros'. A new syntactic symbol +`cpp-define-intro' has been added to control the initial indentation +inside `#define's. + +**** New lineup function `c-lineup-cpp-define'. + +Now used by default to line up macro continuation lines. The behavior +of this function closely mimics the indentation one gets if the macro +is indented while the line continuation backslashes are temporarily +removed. If syntactic indentation in macros is turned off, it works +much line `c-lineup-dont-change', which was used earlier, but handles +empty lines within the macro better. + +**** Automatically inserted newlines continues the macro if used within one. +This applies to the newlines inserted by the auto-newline mode, and to +`c-context-line-break' and `c-context-open-line'. + +**** Better alignment of line continuation backslashes. +`c-backslash-region' tries to adapt to surrounding backslashes. New +variable `c-backslash-max-column' puts a limit on how far out +backslashes can be moved. + +**** Automatic alignment of line continuation backslashes. +This is controlled by the new variable `c-auto-align-backslashes'. It +affects `c-context-line-break', `c-context-open-line' and newlines +inserted in Auto-Newline mode. + +**** Line indentation works better inside macros. +Regardless whether syntactic indentation and syntactic indentation +inside macros are enabled or not, line indentation now ignores the +line continuation backslashes. This is most noticeable when syntactic +indentation is turned off and there are empty lines (save for the +backslash) in the macro. + +*** indent-for-comment is more customizable. +The behavior of M-; (indent-for-comment) is now configurable through +the variable `c-indent-comment-alist'. The indentation behavior is +based on the preceding code on the line, e.g. to get two spaces after +#else and #endif but indentation to `comment-column' in most other +cases (something which was hardcoded earlier). + +*** New function `c-context-open-line'. +It's the open-line equivalent of `c-context-line-break'. + +*** New clean-ups + +**** `comment-close-slash'. +With this clean-up, a block (i.e. c-style) comment can be terminated by +typing a slash at the start of a line. + +**** `c-one-liner-defun' +This clean-up compresses a short enough defun (for example, an AWK +pattern/action pair) onto a single line. "Short enough" is configurable. + +*** New lineup functions + +**** `c-lineup-string-cont' +This lineup function lines up a continued string under the one it +continues. E.g: + +result = prefix + "A message " + "string."; <- c-lineup-string-cont + +**** `c-lineup-cascaded-calls' +Lines up series of calls separated by "->" or ".". + +**** `c-lineup-knr-region-comment' +Gives (what most people think is) better indentation of comments in +the "K&R region" between the function header and its body. + +**** `c-lineup-gcc-asm-reg' +Provides better indentation inside asm blocks. + +**** `c-lineup-argcont' +Lines up continued function arguments after the preceding comma. + +*** Added toggle for syntactic indentation. +The function `c-toggle-syntactic-indentation' can be used to toggle +syntactic indentation. + +*** Better caching of the syntactic context. +CC Mode caches the positions of the opening parentheses (of any kind) +of the lists surrounding the point. Those positions are used in many +places as anchor points for various searches. The cache is now +improved so that it can be reused to a large extent when the point is +moved. The less it moves, the less needs to be recalculated. + +The effect is that CC Mode should be fast most of the time even when +opening parens are hung (i.e. aren't in column zero). It's typically +only the first time after the point is moved far down in a complex +file that it'll take noticeable time to find out the syntactic +context. + +*** Statements are recognized in a more robust way. +Statements are recognized most of the time even when they occur in an +"invalid" context, e.g. in a function argument. In practice that can +happen when macros are involved. + +*** Improved the way `c-indent-exp' chooses the block to indent. +It now indents the block for the closest sexp following the point +whose closing paren ends on a different line. This means that the +point doesn't have to be immediately before the block to indent. +Also, only the block and the closing line is indented; the current +line is left untouched. + +** Changes in Makefile mode + +*** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake. + +The former two couldn't be differentiated before, and the latter three +are new. Font-locking is robust now and offers new customizable +faces. + +*** The variable `makefile-query-one-target-method' has been renamed +to `makefile-query-one-target-method-function'. The old name is still +available as alias. + +** Sql changes + +*** The variable `sql-product' controls the highlighting of different +SQL dialects. This variable can be set globally via Customize, on a +buffer-specific basis via local variable settings, or for the current +session using the new SQL->Product submenu. (This menu replaces the +SQL->Highlighting submenu.) + +The following values are supported: + + ansi ANSI Standard (default) + db2 DB2 + informix Informix + ingres Ingres + interbase Interbase + linter Linter + ms Microsoft + mysql MySQL + oracle Oracle + postgres Postgres + solid Solid + sqlite SQLite + sybase Sybase + +The current product name will be shown on the mode line following the +SQL mode indicator. + +The technique of setting `sql-mode-font-lock-defaults' directly in +your `.emacs' will no longer establish the default highlighting -- Use +`sql-product' to accomplish this. + +ANSI keywords are always highlighted. + +*** The function `sql-add-product-keywords' can be used to add +font-lock rules to the product specific rules. For example, to have +all identifiers ending in `_t' under MS SQLServer treated as a type, +you would use the following line in your .emacs file: + + (sql-add-product-keywords 'ms + '(("\\<\\w+_t\\>" . font-lock-type-face))) + +*** Oracle support includes keyword highlighting for Oracle 9i. + +Most SQL and PL/SQL keywords are implemented. SQL*Plus commands are +highlighted in `font-lock-doc-face'. + +*** Microsoft SQLServer support has been significantly improved. + +Keyword highlighting for SqlServer 2000 is implemented. +sql-interactive-mode defaults to use osql, rather than isql, because +osql flushes its error stream more frequently. Thus error messages +are displayed when they occur rather than when the session is +terminated. + +If the username and password are not provided to `sql-ms', osql is +called with the `-E' command line argument to use the operating system +credentials to authenticate the user. + +*** Postgres support is enhanced. +Keyword highlighting of Postgres 7.3 is implemented. Prompting for +the username and the pgsql `-U' option is added. + +*** MySQL support is enhanced. +Keyword highlighting of MySql 4.0 is implemented. + +*** Imenu support has been enhanced to locate tables, views, indexes, +packages, procedures, functions, triggers, sequences, rules, and +defaults. + +*** Added SQL->Start SQLi Session menu entry which calls the +appropriate `sql-interactive-mode' wrapper for the current setting of +`sql-product'. + +*** sql.el supports the SQLite interpreter--call 'sql-sqlite'. + +** Fortran mode changes + +*** F90 mode and Fortran mode have support for `hs-minor-mode' (hideshow). +It cannot deal with every code format, but ought to handle a sizeable +majority. + +*** F90 mode and Fortran mode have new navigation commands +`f90-end-of-block', `f90-beginning-of-block', `f90-next-block', +`f90-previous-block', `fortran-end-of-block', +`fortran-beginning-of-block'. + +*** Fortran mode does more font-locking by default. Use level 3 +highlighting for the old default. + +*** Fortran mode has a new variable `fortran-directive-re'. +Adapt this to match the format of any compiler directives you use. +Lines that match are never indented, and are given distinctive font-locking. + +*** The new function `f90-backslash-not-special' can be used to change +the syntax of backslashes in F90 buffers. + +** Miscellaneous programming mode changes + +*** In sh-script, a continuation line is only indented if the backslash was +preceded by a SPC or a TAB. + +*** Perl mode has a new variable `perl-indent-continued-arguments'. + +*** The old Octave mode bindings C-c f and C-c i have been changed +to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate +bindings on control characters--thus, C-c C-i C-b is the same as +C-c C-i b, and so on. + +*** Prolog mode has a new variable `prolog-font-lock-keywords' +to support use of font-lock. + +** VC Changes + +*** New backends for Subversion and Meta-CVS. + +*** The new variable `vc-cvs-global-switches' specifies switches that +are passed to any CVS command invoked by VC. + +These switches are used as "global options" for CVS, which means they +are inserted before the command name. For example, this allows you to +specify a compression level using the `-z#' option for CVS. + +*** The key C-x C-q only changes the read-only state of the buffer +(toggle-read-only). It no longer checks files in or out. + +We made this change because we held a poll and found that many users +were unhappy with the previous behavior. If you do prefer this +behavior, you can bind `vc-toggle-read-only' to C-x C-q in your +`.emacs' file: + + (global-set-key "\C-x\C-q" 'vc-toggle-read-only) + +The function `vc-toggle-read-only' will continue to exist. + +*** VC-Annotate mode enhancements + +In VC-Annotate mode, you can now use the following key bindings for +enhanced functionality to browse the annotations of past revisions, or +to view diffs or log entries directly from vc-annotate-mode: + + P: annotates the previous revision + N: annotates the next revision + J: annotates the revision at line + A: annotates the revision previous to line + D: shows the diff of the revision at line with its previous revision + L: shows the log of the revision at line + W: annotates the workfile (most up to date) version + +** pcl-cvs changes + +*** In pcl-cvs mode, there is a new `d y' command to view the diffs +between the local version of the file and yesterday's head revision +in the repository. + +*** In pcl-cvs mode, there is a new `d r' command to view the changes +anyone has committed to the repository since you last executed +`checkout', `update' or `commit'. That means using cvs diff options +-rBASE -rHEAD. + +** Diff changes + +*** M-x diff uses Diff mode instead of Compilation mode. + +*** Diff mode key bindings changed. + +These are the new bindings: + +C-c C-e diff-ediff-patch (old M-A) +C-c C-n diff-restrict-view (old M-r) +C-c C-r diff-reverse-direction (old M-R) +C-c C-u diff-context->unified (old M-U) +C-c C-w diff-refine-hunk (old C-c C-r) + +To convert unified to context format, use C-u C-c C-u. +In addition, C-c C-u now operates on the region +in Transient Mark mode when the mark is active. + +** EDiff changes. + +*** When comparing directories. +Typing D brings up a buffer that lists the differences between the contents of +directories. Now it is possible to use this buffer to copy the missing files +from one directory to another. + +*** When comparing files or buffers. +Typing the = key now offers to perform the word-by-word comparison of the +currently highlighted regions in an inferior Ediff session. If you answer 'n' +then it reverts to the old behavior and asks the user to select regions for +comparison. + +*** The new command `ediff-backup' compares a file with its most recent +backup using `ediff'. If you specify the name of a backup file, +`ediff-backup' compares it with the file of which it is a backup. + +** Etags changes. + +*** New regular expressions features + +**** New syntax for regular expressions, multi-line regular expressions. + +The syntax --ignore-case-regexp=/regex/ is now undocumented and retained +only for backward compatibility. The new equivalent syntax is +--regex=/regex/i. More generally, it is --regex=/TAGREGEX/TAGNAME/MODS, +where `/TAGNAME' is optional, as usual, and MODS is a string of 0 or +more characters among `i' (ignore case), `m' (multi-line) and `s' +(single-line). The `m' and `s' modifiers behave as in Perl regular +expressions: `m' allows regexps to match more than one line, while `s' +(which implies `m') means that `.' matches newlines. The ability to +span newlines allows writing of much more powerful regular expressions +and rapid prototyping for tagging new languages. + +**** Regular expressions can use char escape sequences as in GCC. + +The escaped character sequence \a, \b, \d, \e, \f, \n, \r, \t, \v, +respectively, stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL, +CR, TAB, VT. + +**** Regular expressions can be bound to a given language. + +The syntax --regex={LANGUAGE}REGEX means that REGEX is used to make tags +only for files of language LANGUAGE, and ignored otherwise. This is +particularly useful when storing regexps in a file. + +**** Regular expressions can be read from a file. + +The --regex=@regexfile option means read the regexps from a file, one +per line. Lines beginning with space or tab are ignored. + +*** New language parsing features + +**** New language HTML. + +Tags are generated for `title' as well as `h1', `h2', and `h3'. Also, +when `name=' is used inside an anchor and whenever `id=' is used. + +**** New language PHP. + +Functions, classes and defines are tags. If the --members option is +specified to etags, variables are tags also. + +**** New language Lua. + +All functions are tagged. + +**** The `::' qualifier triggers C++ parsing in C file. + +Previously, only the `template' and `class' keywords had this effect. + +**** The GCC __attribute__ keyword is now recognized and ignored. + +**** In C and derived languages, etags creates tags for #undef + +**** In Makefiles, constants are tagged. + +If you want the old behavior instead, thus avoiding to increase the +size of the tags file, use the --no-globals option. + +**** In Perl, packages are tags. + +Subroutine tags are named from their package. You can jump to sub tags +as you did before, by the sub name, or additionally by looking for +package::sub. + +**** In Prolog, etags creates tags for rules in addition to predicates. + +**** New default keywords for TeX. + +The new keywords are def, newcommand, renewcommand, newenvironment and +renewenvironment. + +*** Honor #line directives. + +When Etags parses an input file that contains C preprocessor's #line +directives, it creates tags using the file name and line number +specified in those directives. This is useful when dealing with code +created from Cweb source files. When Etags tags the generated file, it +writes tags pointing to the source file. + +*** New option --parse-stdin=FILE. + +This option is mostly useful when calling etags from programs. It can +be used (only once) in place of a file name on the command line. Etags +reads from standard input and marks the produced tags as belonging to +the file FILE. + +*** The --members option is now the default. + +Use --no-members if you want the old default behaviour of not tagging +struct members in C, members variables in C++ and variables in PHP. + +** Ctags changes. + +*** Ctags now allows duplicate tags + +** Rmail changes + +*** Support for `movemail' from GNU mailutils was added to Rmail. + +This version of `movemail' allows you to read mail from a wide range of +mailbox formats, including remote POP3 and IMAP4 mailboxes with or +without TLS encryption. If GNU mailutils is installed on the system +and its version of `movemail' can be found in exec-path, it will be +used instead of the native one. + +*** The new commands rmail-end-of-message and rmail-summary end-of-message, +by default bound to `/', go to the end of the current mail message in +Rmail and Rmail summary buffers. + +*** Rmail now displays 5-digit message ids in its summary buffer. + +** Gnus package + +*** Gnus now includes Sieve and PGG + +Sieve is a library for managing Sieve scripts. PGG is a library to handle +PGP/MIME. + +*** There are many news features, bug fixes and improvements. + +See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details. + +** MH-E changes. + +Upgraded to MH-E version 8.0.3. There have been major changes since +version 5.0.2; see MH-E-NEWS for details. + +** Miscellaneous mail changes + +*** The new variable `mail-default-directory' specifies +`default-directory' for mail buffers. This directory is used for +auto-save files of mail buffers. It defaults to "~/". + +*** The mode line can indicate new mail in a directory or file. + +See the documentation of the user option `display-time-mail-directory'. + +** Calendar changes + +*** There is a new calendar package, icalendar.el, that can be used to +convert Emacs diary entries to/from the iCalendar format. + +*** The new package cal-html.el writes HTML files with calendar and +diary entries. + +*** The new functions `diary-from-outlook', `diary-from-outlook-gnus', +and `diary-from-outlook-rmail' can be used to import diary entries +from Outlook-format appointments in mail messages. The variable +`diary-outlook-formats' can be customized to recognize additional +formats. + +*** The procedure for activating appointment reminders has changed: +use the new function `appt-activate'. The new variable +`appt-display-format' controls how reminders are displayed, replacing +`appt-issue-message', `appt-visible', and `appt-msg-window'. + +*** The function `simple-diary-display' now by default sets a header line. +This can be controlled through the variables `diary-header-line-flag' +and `diary-header-line-format'. + +*** Diary sexp entries can have custom marking in the calendar. +Diary sexp functions which only apply to certain days (such as +`diary-block' or `diary-cyclic') now take an optional parameter MARK, +which is the name of a face or a single-character string indicating +how to highlight the day in the calendar display. Specifying a +single-character string as @var{mark} places the character next to the +day in the calendar. Specifying a face highlights the day with that +face. This lets you have different colors or markings for vacations, +appointments, paydays or anything else using a sexp. + +*** The meanings of C-x < and C-x > have been interchanged. +< means to scroll backward in time, and > means to scroll forward. + +*** You can now use < and >, instead of C-x < and C-x >, to scroll +the calendar left or right. + +*** The new function `calendar-goto-day-of-year' (g D) prompts for a +year and day number, and moves to that date. Negative day numbers +count backward from the end of the year. + +*** The new Calendar function `calendar-goto-iso-week' (g w) +prompts for a year and a week number, and moves to the first +day of that ISO week. + +*** The functions `holiday-easter-etc' and `holiday-advent' now take +optional arguments, in order to only report on the specified holiday +rather than all. This makes customization of variables such as +`christian-holidays' simpler. + +*** The new variable `calendar-minimum-window-height' affects the +window generated by the function `generate-calendar-window'. + +** Speedbar changes + +*** Speedbar items can now be selected by clicking mouse-1, based on +the `mouse-1-click-follows-link' mechanism. + +*** The new command `speedbar-toggle-line-expansion', bound to SPC, +contracts or expands the line under the cursor. + +*** New command `speedbar-create-directory', bound to `M'. + +*** The new commands `speedbar-expand-line-descendants' and +`speedbar-contract-line-descendants', bound to `[' and `]' +respectively, expand and contract the line under cursor with all of +its descendents. + +*** The new user option `speedbar-use-tool-tips-flag', if non-nil, +means to display tool-tips for speedbar items. + +*** The new user option `speedbar-query-confirmation-method' controls +how querying is performed for file operations. A value of 'always +means to always query before file operations; 'none-but-delete means +to not query before any file operations, except before a file +deletion. + +*** The new user option `speedbar-select-frame-method' specifies how +to select a frame for displaying a file opened with the speedbar. A +value of 'attached means to use the attached frame (the frame that +speedbar was started from.) A number such as 1 or -1 means to pass +that number to `other-frame'. + +*** SPC and DEL are no longer bound to scroll up/down in the speedbar +keymap. + +*** The frame management code in speedbar.el has been split into a new +`dframe' library. Emacs Lisp code that makes use of the speedbar +should use `dframe-attached-frame' instead of +`speedbar-attached-frame', `dframe-timer' instead of `speedbar-timer', +`dframe-close-frame' instead of `speedbar-close-frame', and +`dframe-activity-change-focus-flag' instead of +`speedbar-activity-change-focus-flag'. The variables +`speedbar-update-speed' and `speedbar-navigating-speed' are also +obsolete; use `dframe-update-speed' instead. + +** battery.el changes + +*** display-battery-mode replaces display-battery. + +*** battery.el now works on recent versions of OS X. + +** Games + +*** The game `mpuz' is enhanced. + +`mpuz' now allows the 2nd factor not to have two identical digits. By +default, all trivial operations involving whole lines are performed +automatically. The game uses faces for better visual feedback. + +** Obsolete and deleted packages + +*** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead. + +*** iso-acc.el is now obsolete. Use one of the latin input methods instead. + +*** zone-mode.el is now obsolete. Use dns-mode.el instead. + +*** cplus-md.el has been deleted. + +** Miscellaneous + +*** The variable `woman-topic-at-point' is renamed +to `woman-use-topic-at-point' and behaves differently: if this +variable is non-nil, the `woman' command uses the word at point +automatically, without asking for a confirmation. Otherwise, the word +at point is suggested as default, but not inserted at the prompt. + +*** You can now customize `fill-nobreak-predicate' to control where +filling can break lines. The value is now normally a list of +functions, but it can also be a single function, for compatibility. + +Emacs provide two predicates, `fill-single-word-nobreak-p' and +`fill-french-nobreak-p', for use as the value of +`fill-nobreak-predicate'. + +*** M-x view-file and commands that use it now avoid interfering +with special modes such as Tar mode. + +*** `global-whitespace-mode' is a new alias for `whitespace-global-mode'. + +*** The saveplace.el package now filters out unreadable files. + +When you exit Emacs, the saved positions in visited files no longer +include files that aren't readable, e.g. files that don't exist. +Customize the new option `save-place-forget-unreadable-files' to nil +to get the old behavior. The new options `save-place-save-skipped' +and `save-place-skip-check-regexp' allow further fine-tuning of this +feature. + +*** Commands `winner-redo' and `winner-undo', from winner.el, are now +bound to C-c and C-c , respectively. This is an +incompatible change. + +*** The type-break package now allows `type-break-file-name' to be nil +and if so, doesn't store any data across sessions. This is handy if +you don't want the `.type-break' file in your home directory or are +annoyed by the need for interaction when you kill Emacs. + +*** `ps-print' can now print characters from the mule-unicode charsets. + +Printing text with characters from the mule-unicode-* sets works with +`ps-print', provided that you have installed the appropriate BDF +fonts. See the file INSTALL for URLs where you can find these fonts. + +*** New command `strokes-global-set-stroke-string'. +This is like `strokes-global-set-stroke', but it allows you to bind +the stroke directly to a string to insert. This is convenient for +using strokes as an input method. + +*** In Outline mode, `hide-body' no longer hides lines at the top +of the file that precede the first header line. + +*** `hide-ifdef-mode' now uses overlays rather than selective-display +to hide its text. This should be mostly transparent but slightly +changes the behavior of motion commands like C-e and C-p. + +*** In Artist mode the variable `artist-text-renderer' has been +renamed to `artist-text-renderer-function'. The old name is still +available as alias. + +*** In Enriched mode, `set-left-margin' and `set-right-margin' are now +by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l' +and `C-c C-r'. + +*** `partial-completion-mode' now handles partial completion on directory names. + +*** You can now disable pc-selection-mode after enabling it. + +M-x pc-selection-mode behaves like a proper minor mode, and with no +argument it toggles the mode. Turning off PC-Selection mode restores +the global key bindings that were replaced by turning on the mode. + +*** `uniquify-strip-common-suffix' tells uniquify to prefer +`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'. + +*** New user option `add-log-always-start-new-record'. + +When this option is enabled, M-x add-change-log-entry always +starts a new record regardless of when the last record is. + +*** M-x compare-windows now can automatically skip non-matching text to +resync points in both windows. + +*** PO translation files are decoded according to their MIME headers +when Emacs visits them. + +*** Telnet now prompts you for a port number with C-u M-x telnet. + +*** calculator.el now has radix grouping mode. + +To enable this, set `calculator-output-radix' non-nil. In this mode a +separator character is used every few digits, making it easier to see +byte boundaries etc. For more info, see the documentation of the +variable `calculator-radix-grouping-mode'. + +*** LDAP support now defaults to ldapsearch from OpenLDAP version 2. + +*** The terminal emulation code in term.el has been improved; it can +run most curses applications now. + +*** Support for `magic cookie' standout modes has been removed. + +Emacs still works on terminals that require magic cookies in order to +use standout mode, but they can no longer display mode-lines in +inverse-video. + + +* Changes in Emacs 22.1 on non-free operating systems + +** The HOME directory defaults to Application Data under the user profile. + +If you used a previous version of Emacs without setting the HOME +environment variable and a `.emacs' was saved, then Emacs will continue +using C:/ as the default HOME. But if you are installing Emacs afresh, +the default location will be the "Application Data" (or similar +localized name) subdirectory of your user profile. A typical location +of this directory is "C:\Documents and Settings\USERNAME\Application Data", +where USERNAME is your user name. + +This change means that users can now have their own `.emacs' files on +shared computers, and the default HOME directory is less likely to be +read-only on computers that are administered by someone else. + +** Images are now supported on MS Windows. + +PBM and XBM images are supported out of the box. Other image formats +depend on external libraries. All of these libraries have been ported +to Windows, and can be found in both source and binary form at +http://gnuwin32.sourceforge.net/. Note that libpng also depends on +zlib, and tiff depends on the version of jpeg that it was compiled +against. For additional information, see nt/INSTALL. + +** Sound is now supported on MS Windows. + +WAV format is supported on all versions of Windows, other formats such +as AU, AIFF and MP3 may be supported in the more recent versions of +Windows, or when other software provides hooks into the system level +sound support for those formats. + +** Tooltips now work on MS Windows. + +See the Emacs 21.1 NEWS entry for tooltips for details. + +** Pointing devices with more than 3 buttons are now supported on MS Windows. + +The new variable `w32-pass-extra-mouse-buttons-to-system' controls +whether Emacs should handle the extra buttons itself (the default), or +pass them to Windows to be handled with system-wide functions. + +** Passing resources on the command line now works on MS Windows. + +You can use --xrm to pass resource settings to Emacs, overriding any +existing values. For example: + + emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20" + +will start up Emacs on an initial frame of 100x20 with red background, +irrespective of geometry or background setting on the Windows registry. + +** Emacs takes note of colors defined in Control Panel on MS-Windows. + +The Control Panel defines some default colors for applications in much +the same way as wildcard X Resources do on X. Emacs now adds these +colors to the colormap prefixed by System (eg SystemMenu for the +default Menu background, SystemMenuText for the foreground), and uses +some of them to initialize some of the default faces. +`list-colors-display' shows the list of System color names, in case +you wish to use them in other faces. + +** Running in a console window in Windows now uses the console size. + +Previous versions of Emacs erred on the side of having a usable Emacs +through telnet, even though that was inconvenient if you use Emacs in +a local console window with a scrollback buffer. The default value of +w32-use-full-screen-buffer is now nil, which favors local console +windows. Recent versions of Windows telnet also work well with this +setting. If you are using an older telnet server then Emacs detects +that the console window dimensions that are reported are not sane, and +defaults to 80x25. If you use such a telnet server regularly at a size +other than 80x25, you can still manually set +w32-use-full-screen-buffer to t. + +** Different shaped mouse pointers are supported on MS Windows. + +The mouse pointer changes shape depending on what is under the pointer. + +** On MS Windows, the "system caret" now follows the cursor. + +This enables Emacs to work better with programs that need to track the +cursor, for example screen magnifiers and text to speech programs. +When such a program is in use, the system caret is made visible +instead of Emacs drawing its own cursor. This seems to be required by +some programs. The new variable w32-use-visible-system-caret allows +the caret visibility to be manually toggled. + +** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations. + +Those systems use Unicode internally, so this allows Emacs to share +multilingual text with other applications. On other versions of +MS Windows, Emacs now uses the appropriate locale coding-system, so +the clipboard should work correctly for your local language without +any customizations. + +** On Mac OS, `keyboard-coding-system' changes based on the keyboard script. + +** The variable `mac-keyboard-text-encoding' and the constants +`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and +`kTextEncodingISOLatin2' are obsolete. + +** The variable `mac-command-key-is-meta' is obsolete. Use +`mac-command-modifier' and `mac-option-modifier' instead. + +* Incompatible Lisp Changes in Emacs 22.1 + +** Mode line display ignores text properties as well as the +:propertize and :eval forms in the value of a variable whose +`risky-local-variable' property is nil. + +The function `comint-send-input' now accepts 3 optional arguments: + + (comint-send-input &optional no-newline artificial) + +Callers sending input not from the user should use bind the 3rd +argument `artificial' to a non-nil value, to prevent Emacs from +deleting the part of subprocess output that matches the input. + +** The `read-file-name' function now returns a null string if the +user just types RET. + +** The variables post-command-idle-hook and post-command-idle-delay have +been removed. Use run-with-idle-timer instead. + +** A hex or octal escape in a string constant forces the string to +be multibyte or unibyte, respectively. + +** The explicit method of creating a display table element by +combining a face number and a character code into a numeric +glyph code is deprecated. + +Instead, the new functions `make-glyph-code', `glyph-char', and +`glyph-face' must be used to create and decode glyph codes in +display tables. + +** `suppress-keymap' now works by remapping `self-insert-command' to +the command `undefined'. (In earlier Emacs versions, it used +`substitute-key-definition' to rebind self inserting characters to +`undefined'.) + +** The third argument of `accept-process-output' is now milliseconds. +It used to be microseconds. + +** The function find-operation-coding-system may be called with a cons +(FILENAME . BUFFER) in the second argument if the first argument +OPERATION is `insert-file-contents', and thus a function registered in +`file-coding-system-alist' is also called with such an argument. + +** When Emacs receives a USR1 or USR2 signal, this generates +input events: sigusr1 or sigusr2. Use special-event-map to +handle these events. + +** The variable `memory-full' now remains t until +there is no longer a shortage of memory. + +** Support for Mocklisp has been removed. + + +* Lisp Changes in Emacs 22.1 + +** General Lisp changes: + +*** New syntax: \s now stands for the SPACE character. + +`?\s' is a new way to write the space character. You must make sure +it is not followed by a dash, since `?\s-...' indicates the "super" +modifier. However, it would be strange to write a character constant +and a following symbol (beginning with `-') with no space between +them. + +`\s' stands for space in strings, too, but it is not really meant for +strings; it is easier and nicer just to write a space. + +*** New syntax: \uXXXX and \UXXXXXXXX specify Unicode code points in hex. + +For instance, you can use "\u0428" to specify a string consisting of +CYRILLIC CAPITAL LETTER SHA, or `"U0001D6E2" to specify one consisting +of MATHEMATICAL ITALIC CAPITAL ALPHA (the latter is greater than +#xFFFF and thus needs the longer syntax). + +This syntax works for both character constants and strings. + +*** New function `unsafep' determines whether a Lisp form is safe. + +It returns nil if the given Lisp form can't possibly do anything +dangerous; otherwise it returns a reason why the form might be unsafe +(calls unknown function, alters global variable, etc.). + +*** The function `eql' is now available without requiring the CL package. + +*** The new function `memql' is like `memq', but uses `eql' for comparison, +that is, floats are compared by value and other elements with `eq'. + +*** New functions `string-or-null-p' and `booleanp'. + +`string-or-null-p' returns non-nil if OBJECT is a string or nil. +`booleanp' returns non-nil if OBJECT is t or nil. + +*** `makehash' is now obsolete. Use `make-hash-table' instead. + +*** Minor change in the function `format'. + +Some flags that were accepted but not implemented (such as "*") are no +longer accepted. + +*** `add-to-list' takes an optional third argument, APPEND. + +If APPEND is non-nil, the new element gets added at the end of the +list instead of at the beginning. This change actually occurred in +Emacs 21.1, but was not documented then. + +*** New function `add-to-ordered-list' is like `add-to-list' but +associates a numeric ordering of each element added to the list. + +*** New function `add-to-history' adds an element to a history list. + +Lisp packages should use this function to add elements to their +history lists. + +If `history-delete-duplicates' is non-nil, it removes duplicates of +the new element from the history list it updates. + +*** New function `copy-tree' makes a copy of a tree. + +It recursively copies through both CARs and CDRs. + +*** New function `delete-dups' deletes `equal' duplicate elements from a list. + +It modifies the list destructively, like `delete'. Of several `equal' +occurrences of an element in the list, the one that's kept is the +first one. + +*** New function `rassq-delete-all'. + +(rassq-delete-all VALUE ALIST) deletes, from ALIST, each element whose +CDR is `eq' to the specified value. + +*** Functions `get' and `plist-get' no longer give errors for bad plists. + +They return nil for a malformed property list or if the list is +cyclic. + +*** New functions `lax-plist-get' and `lax-plist-put'. + +They are like `plist-get' and `plist-put', except that they compare +the property name using `equal' rather than `eq'. + +*** The function `number-sequence' makes a list of equally-separated numbers. + +For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). By +default, the separation is 1, but you can specify a different +separation as the third argument. (number-sequence 1.5 6 2) returns +(1.5 3.5 5.5). + +*** New variables `most-positive-fixnum' and `most-negative-fixnum'. + +They hold the largest and smallest possible integer values. + +*** The function `expt' handles negative exponents differently. +The value for `(expt A B)', if both A and B are integers and B is +negative, is now a float. For example: (expt 2 -2) => 0.25. + +*** The function `atan' now accepts an optional second argument. + +When called with 2 arguments, as in `(atan Y X)', `atan' returns the +angle in radians between the vector [X, Y] and the X axis. (This is +equivalent to the standard C library function `atan2'.) + +*** New macro `with-case-table' + +This executes the body with the case table temporarily set to a given +case table. + +*** New macro `with-local-quit' temporarily allows quitting. + +A quit inside the body of `with-local-quit' is caught by the +`with-local-quit' form itself, but another quit will happen later once +the code that has inhibited quitting exits. + +This is for use around potentially blocking or long-running code +inside timer functions and `post-command-hook' functions. + +*** New macro `define-obsolete-function-alias'. + +This combines `defalias' and `make-obsolete'. + +*** New macro `eval-at-startup' specifies expressions to +evaluate when Emacs starts up. If this is done after startup, +it evaluates those expressions immediately. + +This is useful in packages that can be preloaded. + +*** New function `macroexpand-all' expands all macros in a form. + +It is similar to the Common-Lisp function of the same name. +One difference is that it guarantees to return the original argument +if no expansion is done, which can be tested using `eq'. + +*** A function or macro's doc string can now specify the calling pattern. + +You put this info in the doc string's last line. It should be +formatted so as to match the regexp "\n\n(fn .*)\\'". If you don't +specify this explicitly, Emacs determines it from the actual argument +names. Usually that default is right, but not always. + +*** New variable `print-continuous-numbering'. + +When this is non-nil, successive calls to print functions use a single +numbering scheme for circular structure references. This is only +relevant when `print-circle' is non-nil. + +When you bind `print-continuous-numbering' to t, you should +also bind `print-number-table' to nil. + +*** `list-faces-display' takes an optional argument, REGEXP. + +If it is non-nil, the function lists only faces matching this regexp. + +*** New hook `command-error-function'. + +By setting this variable to a function, you can control +how the editor command loop shows the user an error message. + +*** `debug-on-entry' accepts primitive functions that are not special forms. + +** Lisp code indentation features: + +*** The `defmacro' form can contain indentation and edebug declarations. + +These declarations specify how to indent the macro calls in Lisp mode +and how to debug them with Edebug. You write them like this: + + (defmacro NAME LAMBDA-LIST [DOC-STRING] [DECLARATION ...] ...) + +DECLARATION is a list `(declare DECLARATION-SPECIFIER ...)'. The +possible declaration specifiers are: + +(indent INDENT) + Set NAME's `lisp-indent-function' property to INDENT. + +(edebug DEBUG) + Set NAME's `edebug-form-spec' property to DEBUG. (This is + equivalent to writing a `def-edebug-spec' for the macro, + but this is cleaner.) + +*** cl-indent now allows customization of Indentation of backquoted forms. + +See the new user option `lisp-backquote-indentation'. + +*** cl-indent now handles indentation of simple and extended `loop' forms. + +The new user options `lisp-loop-keyword-indentation', +`lisp-loop-forms-indentation', and `lisp-simple-loop-indentation' can +be used to customize the indentation of keywords and forms in loop +forms. + +** Variable aliases: + +*** New function: defvaralias ALIAS-VAR BASE-VAR [DOCSTRING] + +This function defines the symbol ALIAS-VAR as a variable alias for +symbol BASE-VAR. This means that retrieving the value of ALIAS-VAR +returns the value of BASE-VAR, and changing the value of ALIAS-VAR +changes the value of BASE-VAR. + +DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has +the same documentation as BASE-VAR. + +*** The macro `define-obsolete-variable-alias' combines `defvaralias' and +`make-obsolete-variable'. + +*** New function: indirect-variable VARIABLE + +This function returns the variable at the end of the chain of aliases +of VARIABLE. If VARIABLE is not a symbol, or if VARIABLE is not +defined as an alias, the function returns VARIABLE. + +It might be noteworthy that variables aliases work for all kinds of +variables, including buffer-local and frame-local variables. + +** defcustom changes: + +*** The package-version keyword has been added to provide +`customize-changed-options' functionality to packages in the future. +Developers who make use of this keyword must also update the new +variable `customize-package-emacs-version-alist'. + +*** The new customization type `float' requires a floating point number. + +** String changes: + +*** A hex escape in a string constant forces the string to be multibyte. + +*** An octal escape in a string constant forces the string to be unibyte. + +*** New function `string-to-multibyte' converts a unibyte string to a +multibyte string with the same individual character codes. + +*** `split-string' now includes null substrings in the returned list if +the optional argument SEPARATORS is non-nil and there are matches for +SEPARATORS at the beginning or end of the string. If SEPARATORS is +nil, or if the new optional third argument OMIT-NULLS is non-nil, all +empty matches are omitted from the returned list. + +*** The new function `assoc-string' replaces `assoc-ignore-case' and +`assoc-ignore-representation', which are still available, but have +been declared obsolete. + +*** New function `substring-no-properties' returns a substring without +text properties. + +** Displaying warnings to the user. + +See the functions `warn' and `display-warning', or the Lisp Manual. +If you want to be sure the warning will not be overlooked, this +facility is much better than using `message', since it displays +warnings in a separate window. + +** Progress reporters. + +These provide a simple and uniform way for commands to present +progress messages for the user. + +See the new functions `make-progress-reporter', +`progress-reporter-update', `progress-reporter-force-update', +`progress-reporter-done', and `dotimes-with-progress-reporter'. + +** Buffer positions: + +*** Function `compute-motion' now calculates the usable window +width if the WIDTH argument is nil. If the TOPOS argument is nil, +the usable window height and width is used. + +*** The `line-move', `scroll-up', and `scroll-down' functions will now +modify the window vscroll to scroll through display rows that are +taller that the height of the window, for example in the presence of +large images. To disable this feature, bind the new variable +`auto-window-vscroll' to nil. + +*** The argument to `forward-word', `backward-word' is optional. + +It defaults to 1. + +*** Argument to `forward-to-indentation' and `backward-to-indentation' is optional. + +It defaults to 1. + +*** `field-beginning' and `field-end' take new optional argument, LIMIT. + +This argument tells them not to search beyond LIMIT. Instead they +give up and return LIMIT. + +*** New function `window-line-height' is an efficient way to get +information about a specific text line in a window provided that the +window's display is up-to-date. + +*** New function `line-number-at-pos' returns the line number of a position. + +It an optional buffer position argument that defaults to point. + +*** Function `pos-visible-in-window-p' now returns the pixel coordinates +and partial visibility state of the corresponding row, if the PARTIALLY +arg is non-nil. + +*** New functions `posn-at-point' and `posn-at-x-y' return +click-event-style position information for a given visible buffer +position or for a given window pixel coordinate. + +*** New function `mouse-on-link-p' tests if a position is in a clickable link. + +This is the function used by the new `mouse-1-click-follows-link' +functionality. + +** Text modification: + +*** The new function `buffer-chars-modified-tick' returns a buffer's +tick counter for changes to characters. Each time text in that buffer +is inserted or deleted, the character-change counter is updated to the +tick counter (`buffer-modified-tick'). Text property changes leave it +unchanged. + +*** The new function `insert-for-yank' normally works like `insert', but +removes the text properties in the `yank-excluded-properties' list +and handles the `yank-handler' text property. + +*** The new function `insert-buffer-substring-as-yank' is like +`insert-for-yank' except that it gets the text from another buffer as +in `insert-buffer-substring'. + +*** The new function `insert-buffer-substring-no-properties' is like +`insert-buffer-substring', but removes all text properties from the +inserted substring. + +*** The new function `filter-buffer-substring' extracts a buffer +substring, passes it through a set of filter functions, and returns +the filtered substring. Use it instead of `buffer-substring' or +`delete-and-extract-region' when copying text into a user-accessible +data structure, such as the kill-ring, X clipboard, or a register. + +The list of filter function is specified by the new variable +`buffer-substring-filters'. For example, Longlines mode adds to +`buffer-substring-filters' to remove soft newlines from the copied +text. + +*** Function `translate-region' accepts also a char-table as TABLE +argument. + +*** The new translation table `translation-table-for-input' +is used for customizing self-insertion. The character to +be inserted is translated through it. + +*** Text clones. + +The new function `text-clone-create'. Text clones are chunks of text +that are kept identical by transparently propagating changes from one +clone to the other. + +*** The function `insert-string' is now obsolete. + +** Filling changes. + +*** In determining an adaptive fill prefix, Emacs now tries the function in +`adaptive-fill-function' _before_ matching the buffer line against +`adaptive-fill-regexp' rather than _after_ it. + +** Atomic change groups. + +To perform some changes in the current buffer "atomically" so that +they either all succeed or are all undone, use `atomic-change-group' +around the code that makes changes. For instance: + + (atomic-change-group + (insert foo) + (delete-region x y)) + +If an error (or other nonlocal exit) occurs inside the body of +`atomic-change-group', it unmakes all the changes in that buffer that +were during the execution of the body. The change group has no effect +on any other buffers--any such changes remain. + +If you need something more sophisticated, you can directly call the +lower-level functions that `atomic-change-group' uses. Here is how. + +To set up a change group for one buffer, call `prepare-change-group'. +Specify the buffer as argument; it defaults to the current buffer. +This function returns a "handle" for the change group. You must save +the handle to activate the change group and then finish it. + +Before you change the buffer again, you must activate the change +group. Pass the handle to `activate-change-group' afterward to +do this. + +After you make the changes, you must finish the change group. You can +either accept the changes or cancel them all. Call +`accept-change-group' to accept the changes in the group as final; +call `cancel-change-group' to undo them all. + +You should use `unwind-protect' to make sure the group is always +finished. The call to `activate-change-group' should be inside the +`unwind-protect', in case the user types C-g just after it runs. +(This is one reason why `prepare-change-group' and +`activate-change-group' are separate functions.) Once you finish the +group, don't use the handle again--don't try to finish the same group +twice. + +To make a multibuffer change group, call `prepare-change-group' once +for each buffer you want to cover, then use `nconc' to combine the +returned values, like this: + + (nconc (prepare-change-group buffer-1) + (prepare-change-group buffer-2)) + +You can then activate the multibuffer change group with a single call +to `activate-change-group', and finish it with a single call to +`accept-change-group' or `cancel-change-group'. + +Nested use of several change groups for the same buffer works as you +would expect. Non-nested use of change groups for the same buffer +will lead to undesirable results, so don't let it happen; the first +change group you start for any given buffer should be the last one +finished. + +** Buffer-related changes: + +*** The new function `buffer-local-value' returns the buffer-local +binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not +have a buffer-local binding in buffer BUFFER, it returns the default +value of VARIABLE instead. + +*** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST. + +If it is non-nil, it specifies which buffers to list. + +*** `kill-buffer-hook' is now a permanent local. + +*** The function `frame-or-buffer-changed-p' now lets you maintain +various status records in parallel. + +It takes a variable (a symbol) as argument. If the variable is non-nil, +then its value should be a vector installed previously by +`frame-or-buffer-changed-p'. If the frame names, buffer names, buffer +order, or their read-only or modified flags have changed, since the +time the vector's contents were recorded by a previous call to +`frame-or-buffer-changed-p', then the function returns t. Otherwise +it returns nil. + +On the first call to `frame-or-buffer-changed-p', the variable's +value should be nil. `frame-or-buffer-changed-p' stores a suitable +vector into the variable and returns t. + +If the variable is itself nil, then `frame-or-buffer-changed-p' uses, +for compatibility, an internal variable which exists only for this +purpose. + +*** The function `read-buffer' follows the convention for reading from +the minibuffer with a default value: if DEF is non-nil, the minibuffer +prompt provided in PROMPT is edited to show the default value provided +in DEF before the terminal colon and space. + +** Searching and matching changes: + +*** New function `looking-back' checks whether a regular expression matches +the text before point. Specifying the LIMIT argument bounds how far +back the match can start; this is a way to keep it from taking too long. + +*** The new variable `search-spaces-regexp' controls how to search +for spaces in a regular expression. If it is non-nil, it should be a +regular expression, and any series of spaces stands for that regular +expression. If it is nil, spaces stand for themselves. + +Spaces inside of constructs such as `[..]' and inside loops such as +`*', `+', and `?' are never replaced with `search-spaces-regexp'. + +*** New regular expression operators, `\_<' and `\_>'. + +These match the beginning and end of a symbol. A symbol is a +non-empty sequence of either word or symbol constituent characters, as +specified by the syntax table. + +*** `skip-chars-forward' and `skip-chars-backward' now handle +character classes such as `[:alpha:]', along with individual +characters and ranges. + +*** In `replace-match', the replacement text no longer inherits +properties from surrounding text. + +*** The list returned by `(match-data t)' now has the buffer as a final +element, if the last match was on a buffer. `set-match-data' +accepts such a list for restoring the match state. + +*** Functions `match-data' and `set-match-data' now have an optional +argument `reseat'. When non-nil, all markers in the match data list +passed to these functions will be reseated to point to nowhere. + +*** rx.el has new corresponding `symbol-start' and `symbol-end' elements. + +*** The default value of `sentence-end' is now defined using the new +variable `sentence-end-without-space', which contains such characters +that end a sentence without following spaces. + +The function `sentence-end' should be used to obtain the value of the +variable `sentence-end'. If the variable `sentence-end' is nil, then +this function returns the regexp constructed from the variables +`sentence-end-without-period', `sentence-end-double-space' and +`sentence-end-without-space'. + +** Undo changes: + +*** `buffer-undo-list' allows programmable elements. + +These elements have the form (apply FUNNAME . ARGS), where FUNNAME is +a symbol other than t or nil. That stands for a high-level change +that should be undone by evaluating (apply FUNNAME ARGS). + +These entries can also have the form (apply DELTA BEG END FUNNAME . ARGS) +which indicates that the change which took place was limited to the +range BEG...END and increased the buffer size by DELTA. + +*** If the buffer's undo list for the current command gets longer than +`undo-outer-limit', garbage collection empties it. This is to prevent +it from using up the available memory and choking Emacs. + +** Killing and yanking changes: + +*** New `yank-handler' text property can be used to control how +previously killed text on the kill ring is reinserted. + +The value of the `yank-handler' property must be a list with one to four +elements with the following format: + (FUNCTION PARAM NOEXCLUDE UNDO). + +The `insert-for-yank' function looks for a yank-handler property on +the first character on its string argument (typically the first +element on the kill-ring). If a `yank-handler' property is found, +the normal behavior of `insert-for-yank' is modified in various ways: + + When FUNCTION is present and non-nil, it is called instead of `insert' +to insert the string. FUNCTION takes one argument--the object to insert. + If PARAM is present and non-nil, it replaces STRING as the object +passed to FUNCTION (or `insert'); for example, if FUNCTION is +`yank-rectangle', PARAM should be a list of strings to insert as a +rectangle. + If NOEXCLUDE is present and non-nil, the normal removal of the +`yank-excluded-properties' is not performed; instead FUNCTION is +responsible for removing those properties. This may be necessary +if FUNCTION adjusts point before or after inserting the object. + If UNDO is present and non-nil, it is a function that will be called +by `yank-pop' to undo the insertion of the current object. It is +called with two arguments, the start and end of the current region. +FUNCTION can set `yank-undo-function' to override the UNDO value. + +*** The functions `kill-new', `kill-append', and `kill-region' now have an +optional argument to specify the `yank-handler' text property to put on +the killed text. + +*** The function `yank-pop' will now use a non-nil value of the variable +`yank-undo-function' (instead of `delete-region') to undo the previous +`yank' or `yank-pop' command (or a call to `insert-for-yank'). The function +`insert-for-yank' automatically sets that variable according to the UNDO +element of the string argument's `yank-handler' text property if present. + +*** The function `insert-for-yank' now supports strings where the +`yank-handler' property does not span the first character of the +string. The old behavior is available if you call +`insert-for-yank-1' instead. + +** Syntax table changes: + +*** The new function `syntax-ppss' provides an efficient way to find the +current syntactic context at point. + +*** The new function `syntax-after' returns the syntax code +of the character after a specified buffer position, taking account +of text properties as well as the character code. + +*** `syntax-class' extracts the class of a syntax code (as returned +by `syntax-after'). + +*** The macro `with-syntax-table' no longer copies the syntax table. + +** File operation changes: + +*** New vars `exec-suffixes' and `load-suffixes' used when +searching for an executable or an Emacs Lisp file. + +*** New function `locate-file' searches for a file in a list of directories. +`locate-file' accepts a name of a file to search (a string), and two +lists: a list of directories to search in and a list of suffixes to +try; typical usage might use `exec-path' and `load-path' for the list +of directories, and `exec-suffixes' and `load-suffixes' for the list +of suffixes. The function also accepts a predicate argument to +further filter candidate files. + +One advantage of using this function is that the list of suffixes in +`exec-suffixes' is OS-dependant, so this function will find +executables without polluting Lisp code with OS dependencies. + +*** The new function `file-remote-p' tests a file name and returns +non-nil if it specifies a remote file (one that Emacs accesses using +its own special methods and not directly through the file system). +The value in that case is an identifier for the remote file system. + +*** The new hook `before-save-hook' is invoked by `basic-save-buffer' +before saving buffers. This allows packages to perform various final +tasks. For example, it can be used by the copyright package to make +sure saved files have the current year in any copyright headers. + +*** `file-chase-links' now takes an optional second argument LIMIT which +specifies the maximum number of links to chase through. If after that +many iterations the file name obtained is still a symbolic link, +`file-chase-links' returns it anyway. + +*** Functions `file-name-sans-extension' and `file-name-extension' now +ignore the leading dots in file names, so that file names such as +`.emacs' are treated as extensionless. + +*** If `buffer-save-without-query' is non-nil in some buffer, +`save-some-buffers' will always save that buffer without asking (if +it's modified). + +*** `buffer-auto-save-file-format' is the new name for what was +formerly called `auto-save-file-format'. It is now a permanent local. + +*** `visited-file-modtime' and `calendar-time-from-absolute' now return +a list of two integers, instead of a cons. + +*** The precedence of file name handlers has been changed. + +Instead of choosing the first handler that matches, +`find-file-name-handler' now gives precedence to a file name handler +that matches nearest the end of the file name. More precisely, the +handler whose (match-beginning 0) is the largest is chosen. In case +of ties, the old "first matched" rule applies. + +*** A file name handler can declare which operations it handles. + +You do this by putting an `operation' property on the handler name +symbol. The property value should be a list of the operations that +the handler really handles. It won't be called for any other +operations. + +This is useful for autoloaded handlers, to prevent them from being +autoloaded when not really necessary. + +*** The function `make-auto-save-file-name' is now handled by file +name handlers. This will be exploited for remote files mainly. + +*** The function `file-name-completion' accepts an optional argument +PREDICATE, and rejects completion candidates that don't satisfy PREDICATE. + +*** The new primitive `set-file-times' sets a file's access and +modification times. Magic file name handlers can handle this +operation. + +** Input changes: + +*** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that +display a prompt but don't use the minibuffer, now display the prompt +using the text properties (esp. the face) of the prompt string. + +*** The functions `read-event', `read-char', and `read-char-exclusive' +have a new optional argument SECONDS. If non-nil, this specifies a +maximum time to wait for input, in seconds. If no input arrives after +this time elapses, the functions stop waiting and return nil. + +*** An interactive specification can now use the code letter `U' to get +the up-event that was discarded in case the last key sequence read for a +previous `k' or `K' argument was a down-event; otherwise nil is used. + +*** The new interactive-specification `G' reads a file name +much like `F', but if the input is a directory name (even defaulted), +it returns just the directory name. + +*** (while-no-input BODY...) runs BODY, but only so long as no input +arrives. If the user types or clicks anything, BODY stops as if a +quit had occurred. `while-no-input' returns the value of BODY, if BODY +finishes. It returns nil if BODY was aborted by a quit, and t if +BODY was aborted by arrival of input. + +*** `recent-keys' now returns the last 300 keys. + +** Minibuffer changes: + +*** The new function `minibufferp' returns non-nil if its optional +buffer argument is a minibuffer. If the argument is omitted, it +defaults to the current buffer. + +*** New function `minibuffer-selected-window' returns the window which +was selected when entering the minibuffer. + +*** The `read-file-name' function now takes an additional argument which +specifies a predicate which the file name read must satisfy. The +new variable `read-file-name-predicate' contains the predicate argument +while reading the file name from the minibuffer; the predicate in this +variable is used by read-file-name-internal to filter the completion list. + +*** The new variable `read-file-name-function' can be used by Lisp code +to override the built-in `read-file-name' function. + +*** The new variable `read-file-name-completion-ignore-case' specifies +whether completion ignores case when reading a file name with the +`read-file-name' function. + +*** The new function `read-directory-name' is for reading a directory name. + +It is like `read-file-name' except that the defaulting works better +for directories, and completion inside it shows only directories. + +*** The new variable `history-add-new-input' specifies whether to add new +elements in history. If set to nil, minibuffer reading functions don't +add new elements to the history list, so it is possible to do this +afterwards by calling `add-to-history' explicitly. + +** Completion changes: + +*** The new function `minibuffer-completion-contents' returns the contents +of the minibuffer just before point. That is what completion commands +operate on. + +*** The functions `all-completions' and `try-completion' now accept lists +of strings as well as hash-tables additionally to alists, obarrays +and functions. Furthermore, the function `test-completion' is now +exported to Lisp. The keys in alists and hash tables can be either +strings or symbols, which are automatically converted with to strings. + +*** The new macro `dynamic-completion-table' supports using functions +as a dynamic completion table. + + (dynamic-completion-table FUN) + +FUN is called with one argument, the string for which completion is required, +and it should return an alist containing all the intended possible +completions. This alist can be a full list of possible completions so that FUN +can ignore the value of its argument. If completion is performed in the +minibuffer, FUN will be called in the buffer from which the minibuffer was +entered. `dynamic-completion-table' then computes the completion. + +*** The new macro `lazy-completion-table' initializes a variable +as a lazy completion table. + + (lazy-completion-table VAR FUN) + +If the completion table VAR is used for the first time (e.g., by passing VAR +as an argument to `try-completion'), the function FUN is called with no +arguments. FUN must return the completion table that will be stored in VAR. +If completion is requested in the minibuffer, FUN will be called in the buffer +from which the minibuffer was entered. The return value of +`lazy-completion-table' must be used to initialize the value of VAR. + +** Abbrev changes: + +*** `define-abbrev' now accepts an optional argument SYSTEM-FLAG. + +If non-nil, this marks the abbrev as a "system" abbrev, which means +that it won't be stored in the user's abbrevs file if he saves the +abbrevs. Major modes that predefine some abbrevs should always +specify this flag. + +*** The new function `copy-abbrev-table' copies an abbrev table. + +It returns a new abbrev table that is a copy of a given abbrev table. + +** Enhancements to keymaps. + +*** Cleaner way to enter key sequences. + +You can enter a constant key sequence in a more natural format, the +same one used for saving keyboard macros, using the macro `kbd'. For +example, + +(kbd "C-x C-f") => "\^x\^f" + +Actually, this format has existed since Emacs 20.1. + +*** Interactive commands can be remapped through keymaps. + +This is an alternative to using `defadvice' or `substitute-key-definition' +to modify the behavior of a key binding using the normal keymap +binding and lookup functionality. + +When a key sequence is bound to a command, and that command is +remapped to another command, that command is run instead of the +original command. + +Example: +Suppose that minor mode `my-mode' has defined the commands +`my-kill-line' and `my-kill-word', and it wants C-k (and any other key +bound to `kill-line') to run the command `my-kill-line' instead of +`kill-line', and likewise it wants to run `my-kill-word' instead of +`kill-word'. + +Instead of rebinding C-k and the other keys in the minor mode map, +command remapping allows you to directly map `kill-line' into +`my-kill-line' and `kill-word' into `my-kill-word' using `define-key': + + (define-key my-mode-map [remap kill-line] 'my-kill-line) + (define-key my-mode-map [remap kill-word] 'my-kill-word) + +When `my-mode' is enabled, its minor mode keymap is enabled too. So +when the user types C-k, that runs the command `my-kill-line'. + +Only one level of remapping is supported. In the above example, this +means that if `my-kill-line' is remapped to `other-kill', then C-k still +runs `my-kill-line'. + +The following changes have been made to provide command remapping: + +- Command remappings are defined using `define-key' with a prefix-key + `remap', i.e. `(define-key MAP [remap CMD] DEF)' remaps command CMD + to definition DEF in keymap MAP. The definition is not limited to + another command; it can be anything accepted for a normal binding. + +- The new function `command-remapping' returns the binding for a + remapped command in the current keymaps, or nil if not remapped. + +- `key-binding' now remaps interactive commands unless the optional + third argument NO-REMAP is non-nil. + +- `where-is-internal' now returns nil for a remapped command (e.g. + `kill-line', when `my-mode' is enabled), and the actual key binding for + the command it is remapped to (e.g. C-k for my-kill-line). + It also has a new optional fifth argument, NO-REMAP, which inhibits + remapping if non-nil (e.g. it returns "C-k" for `kill-line', and + "" for `my-kill-line'). + +- The new variable `this-original-command' contains the original + command before remapping. It is equal to `this-command' when the + command was not remapped. + +*** The definition of a key-binding passed to define-key can use XEmacs-style +key-sequences, such as [(control a)]. + +*** New keymaps for typing file names + +Two new keymaps, `minibuffer-local-filename-completion-map' and +`minibuffer-local-must-match-filename-map', apply whenever +Emacs reads a file name in the minibuffer. These key maps override +the usual binding of SPC to `minibuffer-complete-word' (so that file +names with embedded spaces could be typed without the need to quote +the spaces). + +*** New function `current-active-maps' returns a list of currently +active keymaps. + +*** New function `describe-buffer-bindings' inserts the list of all +defined keys and their definitions. + +*** New function `keymap-prompt' returns the prompt string of a keymap. + +*** If text has a `keymap' property, that keymap takes precedence +over minor mode keymaps. + +*** The `keymap' property now also works at the ends of overlays and +text properties, according to their stickiness. This also means that it +works with empty overlays. The same hold for the `local-map' property. + +*** `key-binding' will now look up mouse-specific bindings. The +keymaps consulted by `key-binding' will get adapted if the key +sequence is started with a mouse event. Instead of letting the click +position be determined from the key sequence itself, it is also +possible to specify it with an optional argument explicitly. + +*** `define-key-after' now accepts keys longer than 1. + +*** (map-keymap FUNCTION KEYMAP) applies the function to each binding +in the keymap. + +*** New variable `emulation-mode-map-alists'. + +Lisp packages using many minor mode keymaps can now maintain their own +keymap alist separate from `minor-mode-map-alist' by adding their +keymap alist to this list. + +*** Dense keymaps now handle inheritance correctly. + +Previously a dense keymap would hide all of the simple-char key +bindings of the parent keymap. + +** Enhancements to process support + +*** Adaptive read buffering of subprocess output. + +On some systems, when Emacs reads the output from a subprocess, the +output data is read in very small blocks, potentially resulting in +very poor performance. This behavior can be remedied to some extent +by setting the new variable `process-adaptive-read-buffering' to a +non-nil value (the default), as it will automatically delay reading +from such processes, allowing them to produce more output before +Emacs tries to read it. + +*** Processes now have an associated property list where programs can +maintain process state and other per-process related information. + +Use the new functions `process-get' and `process-put' to access, add, +and modify elements on this property list. Use the new functions +`process-plist' and `set-process-plist' to access and replace the +entire property list of a process. + +*** Function `list-processes' now has an optional argument; if non-nil, +it lists only the processes whose query-on-exit flag is set. + +*** New fns `set-process-query-on-exit-flag' and `process-query-on-exit-flag'. + +These replace the old function `process-kill-without-query'. That +function is still supported, but new code should use the new +functions. + +*** The new function `call-process-shell-command'. + +This executes a shell command synchronously in a separate process. + +*** The new function `process-file' is similar to `call-process', but +obeys file handlers. The file handler is chosen based on +`default-directory'. + +*** Function `signal-process' now accepts a process object or process +name in addition to a process id to identify the signaled process. + +*** Function `accept-process-output' has a new optional fourth arg +JUST-THIS-ONE. If non-nil, only output from the specified process +is handled, suspending output from other processes. If value is an +integer, also inhibit running timers. This feature is generally not +recommended, but may be necessary for specific applications, such as +speech synthesis. + +*** A process filter function gets the output as multibyte string +if the process specifies t for its filter's multibyteness. + +That multibyteness is decided by the value of +`default-enable-multibyte-characters' when the process is created, and +you can change it later with `set-process-filter-multibyte'. + +*** The new function `set-process-filter-multibyte' sets the +multibyteness of the strings passed to the process's filter. + +*** The new function `process-filter-multibyte-p' returns the +multibyteness of the strings passed to the process's filter. + +*** If a process's coding system is `raw-text' or `no-conversion' and its +buffer is multibyte, the output of the process is at first converted +to multibyte by `string-to-multibyte' then inserted in the buffer. +Previously, it was converted to multibyte by `string-as-multibyte', +which was not compatible with the behavior of file reading. + +** Enhanced networking support. + +*** The new `make-network-process' function makes network connections. +It allows opening of stream and datagram connections to a server, as well as +create a stream or datagram server inside Emacs. + +- A server is started using :server t arg. +- Datagram connection is selected using :type 'datagram arg. +- A server can open on a random port using :service t arg. +- Local sockets are supported using :family 'local arg. +- IPv6 is supported (when available). You may explicitly select IPv6 + using :family 'ipv6 arg. +- Non-blocking connect is supported using :nowait t arg. +- The process' property list can be initialized using :plist PLIST arg; + a copy of the server process' property list is automatically inherited + by new client processes created to handle incoming connections. + +To test for the availability of a given feature, use featurep like this: + (featurep 'make-network-process '(:type datagram)) + (featurep 'make-network-process '(:family ipv6)) + +*** The old `open-network-stream' now uses `make-network-process'. + +*** `process-contact' has an optional KEY argument. + +Depending on this argument, you can get the complete list of network +process properties or a specific property. Using :local or :remote as +the KEY, you get the address of the local or remote end-point. + +An Inet address is represented as a 5 element vector, where the first +4 elements contain the IP address and the fifth is the port number. + +*** New functions `stop-process' and `continue-process'. + +These functions stop and restart communication through a network +connection. For a server process, no connections are accepted in the +stopped state. For a client process, no input is received in the +stopped state. + +*** New function `format-network-address'. + +This function reformats the Lisp representation of a network address +to a printable string. For example, an IP address A.B.C.D and port +number P is represented as a five element vector [A B C D P], and the +printable string returned for this vector is "A.B.C.D:P". See the doc +string for other formatting options. + +*** New function `network-interface-list'. + +This function returns a list of network interface names and their +current network addresses. + +*** New function `network-interface-info'. + +This function returns the network address, hardware address, current +status, and other information about a specific network interface. + +*** New functions `process-datagram-address', `set-process-datagram-address'. + +These functions are used with datagram-based network processes to get +and set the current address of the remote partner. + +*** Deleting a network process with `delete-process' calls the sentinel. + +The status message passed to the sentinel for a deleted network +process is "deleted". The message passed to the sentinel when the +connection is closed by the remote peer has been changed to +"connection broken by remote peer". + +** Using window objects: + +*** You can now make a window as short as one line. + +A window that is just one line tall does not display either a mode +line or a header line, even if the variables `mode-line-format' and +`header-line-format' call for them. A window that is two lines tall +cannot display both a mode line and a header line at once; if the +variables call for both, only the mode line actually appears. + +*** The new function `window-inside-edges' returns the edges of the +actual text portion of the window, not including the scroll bar or +divider line, the fringes, the display margins, the header line and +the mode line. + +*** The new functions `window-pixel-edges' and `window-inside-pixel-edges' +return window edges in units of pixels, rather than columns and lines. + +*** New function `window-body-height'. + +This is like `window-height' but does not count the mode line or the +header line. + +*** The new function `adjust-window-trailing-edge' moves the right +or bottom edge of a window. It does not move other window edges. + +*** The new macro `with-selected-window' temporarily switches the +selected window without impacting the order of `buffer-list'. +It saves and restores the current buffer, too. + +*** `select-window' takes an optional second argument NORECORD. + +This is like `switch-to-buffer'. + +*** `save-selected-window' now saves and restores the selected window +of every frame. This way, it restores everything that can be changed +by calling `select-window'. It also saves and restores the current +buffer. + +*** `set-window-buffer' has an optional argument KEEP-MARGINS. + +If non-nil, that says to preserve the window's current margin, fringe, +and scroll-bar settings. + +*** The new function `window-tree' returns a frame's window tree. + +*** The functions `get-lru-window' and `get-largest-window' take an optional +argument `dedicated'. If non-nil, those functions do not ignore +dedicated windows. + +** Customizable fringe bitmaps + +*** There are new display properties, `left-fringe' and `right-fringe', +that can be used to show a specific bitmap in the left or right fringe +bitmap of the display line. + +Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a +symbol identifying a fringe bitmap, either built-in or defined with +`define-fringe-bitmap', and FACE is an optional face name to be used +for displaying the bitmap instead of the default `fringe' face. +When specified, FACE is automatically merged with the `fringe' face. + +*** New buffer-local variables `fringe-indicator-alist' and +`fringe-cursor-alist' maps between logical (internal) fringe indicator +and cursor symbols and the actual fringe bitmaps to be displayed. +This decouples the logical meaning of the fringe indicators from the +physical appearance, as well as allowing different fringe bitmaps to +be used in different windows showing different buffers. + +*** New function `define-fringe-bitmap' can now be used to create new +fringe bitmaps, as well as change the built-in fringe bitmaps. + +*** New function `destroy-fringe-bitmap' deletes a fringe bitmap +or restores a built-in one to its default value. + +*** New function `set-fringe-bitmap-face' specifies the face to be +used for a specific fringe bitmap. The face is automatically merged +with the `fringe' face, so normally, the face should only specify the +foreground color of the bitmap. + +*** New function `fringe-bitmaps-at-pos' returns the current fringe +bitmaps in the display line at a given buffer position. + +** Other window fringe features: + +*** Controlling the default left and right fringe widths. + +The default left and right fringe widths for all windows of a frame +can now be controlled by setting the `left-fringe' and `right-fringe' +frame parameters to an integer value specifying the width in pixels. +Setting the width to 0 effectively removes the corresponding fringe. + +The actual default fringe widths for the frame may deviate from the +specified widths, since the combined fringe widths must match an +integral number of columns. The extra width is distributed evenly +between the left and right fringe. To force a specific fringe width, +specify the width as a negative integer (if both widths are negative, +only the left fringe gets the specified width). + +Setting the width to nil (the default), restores the default fringe +width which is the minimum number of pixels necessary to display any +of the currently defined fringe bitmaps. The width of the built-in +fringe bitmaps is 8 pixels. + +*** Per-window fringe and scrollbar settings + +**** Windows can now have their own individual fringe widths and +position settings. + +To control the fringe widths of a window, either set the buffer-local +variables `left-fringe-width', `right-fringe-width', or call +`set-window-fringes'. + +To control the fringe position in a window, that is, whether fringes +are positioned between the display margins and the window's text area, +or at the edges of the window, either set the buffer-local variable +`fringes-outside-margins' or call `set-window-fringes'. + +The function `window-fringes' can be used to obtain the current +settings. To make `left-fringe-width', `right-fringe-width', and +`fringes-outside-margins' take effect, you must set them before +displaying the buffer in a window, or use `set-window-buffer' to force +an update of the display margins. + +**** Windows can now have their own individual scroll-bar settings +controlling the width and position of scroll-bars. + +To control the scroll-bar of a window, either set the buffer-local +variables `scroll-bar-mode' and `scroll-bar-width', or call +`set-window-scroll-bars'. The function `window-scroll-bars' can be +used to obtain the current settings. To make `scroll-bar-mode' and +`scroll-bar-width' take effect, you must set them before displaying +the buffer in a window, or use `set-window-buffer' to force an update +of the display margins. + +** Redisplay features: + +*** `sit-for' can now be called with args (SECONDS &optional NODISP). + +*** Iconifying or deiconifying a frame no longer makes sit-for return. + +*** New function `redisplay' causes an immediate redisplay if no input is +available, equivalent to (sit-for 0). The call (redisplay t) forces +an immediate redisplay even if input is pending. + +*** New function `force-window-update' can initiate a full redisplay of +one or all windows. Normally, this is not needed as changes in window +contents are detected automatically. However, certain implicit +changes to mode lines, header lines, or display properties may require +forcing an explicit window update. + +*** (char-displayable-p CHAR) returns non-nil if Emacs ought to be able +to display CHAR. More precisely, if the selected frame's fontset has +a font to display the character set that CHAR belongs to. + +Fontsets can specify a font on a per-character basis; when the fontset +does that, this value cannot be accurate. + +*** You can define multiple overlay arrows via the new +variable `overlay-arrow-variable-list'. + +It contains a list of variables which contain overlay arrow position +markers, including the original `overlay-arrow-position' variable. + +Each variable on this list can have individual `overlay-arrow-string' +and `overlay-arrow-bitmap' properties that specify an overlay arrow +string (for non-window terminals) or fringe bitmap (for window +systems) to display at the corresponding overlay arrow position. +If either property is not set, the default `overlay-arrow-string' or +'overlay-arrow-fringe-bitmap' will be used. + +*** New `line-height' and `line-spacing' properties for newline characters + +A newline can now have `line-height' and `line-spacing' text or overlay +properties that control the height of the corresponding display row. + +If the `line-height' property value is t, the newline does not +contribute to the height of the display row; instead the height of the +newline glyph is reduced. Also, a `line-spacing' property on this +newline is ignored. This can be used to tile small images or image +slices without adding blank areas between the images. + +If the `line-height' property value is a positive integer, the value +specifies the minimum line height in pixels. If necessary, the line +height it increased by increasing the line's ascent. + +If the `line-height' property value is a float, the minimum line +height is calculated by multiplying the default frame line height by +the given value. + +If the `line-height' property value is a cons (FACE . RATIO), the +minimum line height is calculated as RATIO * height of named FACE. +RATIO is int or float. If FACE is t, it specifies the current face. + +If the `line-height' property value is a cons (nil . RATIO), the line +height is calculated as RATIO * actual height of the line's contents. + +If the `line-height' value is a cons (HEIGHT . TOTAL), HEIGHT specifies +the line height as described above, while TOTAL is any of the forms +described above and specifies the total height of the line, causing a +varying number of pixels to be inserted after the line to make it line +exactly that many pixels high. + +If the `line-spacing' property value is an positive integer, the value +is used as additional pixels to insert after the display line; this +overrides the default frame `line-spacing' and any buffer local value of +the `line-spacing' variable. + +If the `line-spacing' property is a float or cons, the line spacing +is calculated as specified above for the `line-height' property. + +*** The buffer local `line-spacing' variable can now have a float value, +which is used as a height relative to the default frame line height. + +*** Enhancements to stretch display properties + +The display property stretch specification form `(space PROPS)', where +PROPS is a property list, now allows pixel based width and height +specifications, as well as enhanced horizontal text alignment. + +The value of these properties can now be a (primitive) expression +which is evaluated during redisplay. The following expressions +are supported: + +EXPR ::= NUM | (NUM) | UNIT | ELEM | POS | IMAGE | FORM +NUM ::= INTEGER | FLOAT | SYMBOL +UNIT ::= in | mm | cm | width | height +ELEM ::= left-fringe | right-fringe | left-margin | right-margin + | scroll-bar | text +POS ::= left | center | right +FORM ::= (NUM . EXPR) | (OP EXPR ...) +OP ::= + | - + +The form `NUM' specifies a fractional width or height of the default +frame font size. The form `(NUM)' specifies an absolute number of +pixels. If a symbol is specified, its buffer-local variable binding +is used. The `in', `mm', and `cm' units specifies the number of +pixels per inch, milli-meter, and centi-meter, resp. The `width' and +`height' units correspond to the width and height of the current face +font. An image specification corresponds to the width or height of +the image. + +The `left-fringe', `right-fringe', `left-margin', `right-margin', +`scroll-bar', and `text' elements specify to the width of the +corresponding area of the window. + +The `left', `center', and `right' positions can be used with :align-to +to specify a position relative to the left edge, center, or right edge +of the text area. One of the above window elements (except `text') +can also be used with :align-to to specify that the position is +relative to the left edge of the given area. Once the base offset for +a relative position has been set (by the first occurrence of one of +these symbols), further occurrences of these symbols are interpreted as +the width of the area. + +For example, to align to the center of the left-margin, use + :align-to (+ left-margin (0.5 . left-margin)) + +If no specific base offset is set for alignment, it is always relative +to the left edge of the text area. For example, :align-to 0 in a +header line aligns with the first text column in the text area. + +The value of the form `(NUM . EXPR)' is the value of NUM multiplied by +the value of the expression EXPR. For example, (2 . in) specifies a +width of 2 inches, while (0.5 . IMAGE) specifies half the width (or +height) of the specified image. + +The form `(+ EXPR ...)' adds up the value of the expressions. +The form `(- EXPR ...)' negates or subtracts the value of the expressions. + +*** Normally, the cursor is displayed at the end of any overlay and +text property string that may be present at the current window +position. The cursor can now be placed on any character of such +strings by giving that character a non-nil `cursor' text property. + +*** The display space :width and :align-to text properties are now +supported on text terminals. + +*** Support for displaying image slices + +**** New display property (slice X Y WIDTH HEIGHT) can be used with +an image property to display only a specific slice of the image. + +**** Function `insert-image' has new optional fourth arg to +specify image slice (X Y WIDTH HEIGHT). + +**** New function `insert-sliced-image' inserts a given image as a +specified number of evenly sized slices (rows x columns). + +*** Images can now have an associated image map via the :map property. + +An image map is an alist where each element has the format (AREA ID PLIST). +An AREA is specified as either a rectangle, a circle, or a polygon: +A rectangle is a cons (rect . ((X0 . Y0) . (X1 . Y1))) specifying the +pixel coordinates of the upper left and bottom right corners. +A circle is a cons (circle . ((X0 . Y0) . R)) specifying the center +and the radius of the circle; R can be a float or integer. +A polygon is a cons (poly . [X0 Y0 X1 Y1 ...]) where each pair in the +vector describes one corner in the polygon. + +When the mouse pointer is above a hot-spot area of an image, the +PLIST of that hot-spot is consulted; if it contains a `help-echo' +property it defines a tool-tip for the hot-spot, and if it contains +a `pointer' property, it defines the shape of the mouse cursor when +it is over the hot-spot. See the variable `void-area-text-pointer' +for possible pointer shapes. + +When you click the mouse when the mouse pointer is over a hot-spot, +an event is composed by combining the ID of the hot-spot with the +mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'. + +*** The function `find-image' now searches in etc/images/ and etc/. +The new variable `image-load-path' is a list of locations in which to +search for image files. The default is to search in etc/images, then +in etc/, and finally in the directories specified by `load-path'. +Subdirectories of etc/ and etc/images are not recursively searched; if +you put an image file in a subdirectory, you have to specify it +explicitly; for example, if an image is put in etc/images/foo/bar.xpm: + + (defimage foo-image '((:type xpm :file "foo/bar.xpm"))) + +Note that all images formerly located in the lisp directory have been +moved to etc/images. + +*** New function `image-load-path-for-library' returns a suitable +search path for images relative to library. This function is useful in +external packages to save users from having to update +`image-load-path'. + +*** The new variable `max-image-size' defines the maximum size of +images that Emacs will load and display. + +*** The new variable `display-mm-dimensions-alist' can be used to +override incorrect graphical display dimensions returned by functions +`display-mm-height' and `display-mm-width'. + +** Mouse pointer features: + +*** The mouse pointer shape in void text areas (i.e. after the end of a +line or below the last line in the buffer) of the text window is now +controlled by the new variable `void-text-area-pointer'. The default +is to use the `arrow' (non-text) pointer. Other choices are `text' +(or nil), `hand', `vdrag', `hdrag', `modeline', and `hourglass'. + +*** The mouse pointer shape over an image can now be controlled by the +:pointer image property. + +*** The mouse pointer shape over ordinary text or images can now be +controlled/overridden via the `pointer' text property. + +** Mouse event enhancements: + +*** All mouse events now include a buffer position regardless of where +you clicked. For mouse clicks in window margins and fringes, this is +a sensible buffer position corresponding to the surrounding text. + +*** Mouse events for clicks on window fringes now specify `left-fringe' +or `right-fringe' as the area. + +*** Mouse events include actual glyph column and row for all event types +and all areas. + +*** Mouse events can now indicate an image object clicked on. + +*** Mouse events include relative X and Y pixel coordinates relative to +the top left corner of the object (image or character) clicked on. + +*** Mouse events include the pixel width and height of the object +(image or character) clicked on. + +*** Function `mouse-set-point' now works for events outside text area. + +*** `posn-point' now returns buffer position for non-text area events. + +*** New function `posn-area' returns window area clicked on (nil means +text area). + +*** New function `posn-actual-col-row' returns the actual glyph coordinates +of the mouse event position. + +*** New functions 'posn-object', 'posn-object-x-y', 'posn-object-width-height'. + +These return the image or string object of a mouse click, the X and Y +pixel coordinates relative to the top left corner of that object, and +the total width and height of that object. + +** Text property and overlay changes: + +*** Arguments for `remove-overlays' are now optional, so that you can +remove all overlays in the buffer with just (remove-overlays). + +*** New variable `char-property-alias-alist'. + +This variable allows you to create alternative names for text +properties. It works at the same level as `default-text-properties', +although it applies to overlays as well. This variable was introduced +to implement the `font-lock-face' property. + +*** New function `get-char-property-and-overlay' accepts the same +arguments as `get-char-property' and returns a cons whose car is the +return value of `get-char-property' called with those arguments and +whose cdr is the overlay in which the property was found, or nil if +it was found as a text property or not found at all. + +*** The new function `remove-list-of-text-properties'. + +It is like `remove-text-properties' except that it takes a list of +property names as argument rather than a property list. + +** Face changes + +*** The variable `facemenu-unlisted-faces' has been removed. +Emacs has a lot more faces than in the past, and nearly all of them +needed to be excluded. The new variable `facemenu-listed-faces' lists +the faces to include in the face menu. + +*** The new face attribute condition `min-colors' can be used to tailor +the face color to the number of colors supported by a display, and +define the foreground and background colors accordingly so that they +look best on a terminal that supports at least this many colors. This +is now the preferred method for defining default faces in a way that +makes a good use of the capabilities of the display. + +*** New function `display-supports-face-attributes-p' can be used to test +whether a given set of face attributes is actually displayable. + +A new predicate `supports' has also been added to the `defface' face +specification language, which can be used to do this test for faces +defined with `defface'. + +*** The special treatment of faces whose names are of the form `fg:COLOR' +or `bg:COLOR' has been removed. Lisp programs should use the +`defface' facility for defining faces with specific colors, or use +the feature of specifying the face attributes :foreground and :background +directly in the `face' property instead of using a named face. + +*** The first face specification element in a defface can specify +`default' instead of frame classification. Then its attributes act as +defaults that apply to all the subsequent cases (and can be overridden +by them). + +*** The function `face-differs-from-default-p' now truly checks +whether the given face displays differently from the default face or +not (previously it did only a very cursory check). + +*** `face-attribute', `face-foreground', `face-background', `face-stipple'. + +These now accept a new optional argument, INHERIT, which controls how +face inheritance is used when determining the value of a face +attribute. + +*** New functions `face-attribute-relative-p' and `merge-face-attribute' +help with handling relative face attributes. + +*** The priority of faces in an :inherit attribute face list is reversed. + +If a face contains an :inherit attribute with a list of faces, earlier +faces in the list override later faces in the list; in previous +releases of Emacs, the order was the opposite. This change was made +so that :inherit face lists operate identically to face lists in text +`face' properties. + +*** The variable `face-font-rescale-alist' specifies how much larger +(or smaller) font we should use. For instance, if the value is +'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10 +point, we actually use a font of 13 point if the font matches +SOME-FONTNAME-PATTERN. + +*** On terminals, faces with the :inverse-video attribute are displayed +with swapped foreground and background colors even when one of them is +not specified. In previous releases of Emacs, if either foreground +or background color was unspecified, colors were not swapped. This +was inconsistent with the face behavior under X. + +*** `set-fontset-font', `fontset-info', `fontset-font' now operate on +the default fontset if the argument NAME is nil.. + +** Font-Lock changes: + +*** New special text property `font-lock-face'. + +This property acts like the `face' property, but it is controlled by +M-x font-lock-mode. It is not, strictly speaking, a builtin text +property. Instead, it is implemented inside font-core.el, using the +new variable `char-property-alias-alist'. + +*** font-lock can manage arbitrary text-properties beside `face'. + +**** the FACENAME returned in `font-lock-keywords' can be a list of the +form (face FACE PROP1 VAL1 PROP2 VAL2 ...) so you can set other +properties than `face'. + +**** `font-lock-extra-managed-props' can be set to make sure those +extra properties are automatically cleaned up by font-lock. + +*** jit-lock obeys a new text-property `jit-lock-defer-multiline'. + +If a piece of text with that property gets contextually refontified +(see `jit-lock-defer-contextually'), then all of that text will +be refontified. This is useful when the syntax of a textual element +depends on text several lines further down (and when `font-lock-multiline' +is not appropriate to solve that problem). For example in Perl: + + s{ + foo + }{ + bar + }e + +Adding/removing the last `e' changes the `bar' from being a piece of +text to being a piece of code, so you'd put a `jit-lock-defer-multiline' +property over the second half of the command to force (deferred) +refontification of `bar' whenever the `e' is added/removed. + +*** `font-lock-extend-region-functions' makes it possible to alter the way +the fontification region is chosen. This can be used to prevent rounding +up to whole lines, or to extend the region to include all related lines +of multiline constructs so that such constructs get properly recognized. + +** Major mode mechanism changes: + +*** New variable `magic-mode-alist' determines major mode for a file by +looking at the file contents. It takes precedence over `auto-mode-alist'. + +*** New variable `magic-fallback-mode-alist' determines major mode for a file by +looking at the file contents. It is handled after `auto-mode-alist', +only if `auto-mode-alist' (and `magic-mode-alist') says nothing about the file. + +*** XML or SGML major mode is selected when file starts with an ` ) + (if (boundp 'foo) form +won't produce a warning if it's not defined as a function, and in the +second case, using `foo' as a variable won't produce a warning if it's +unbound. The test must be in exactly one of the above forms (after +macro expansion), but such tests can be nested. Note that `when' and +`unless' expand to `if', but `cond' doesn't. + +*** `(featurep 'xemacs)' is treated by the compiler as nil. This +helps to avoid noisy compiler warnings in code meant to run under both +Emacs and XEmacs and can sometimes make the result significantly more +efficient. Since byte code from recent versions of XEmacs won't +generally run in Emacs and vice versa, this optimization doesn't lose +you anything. + +*** The local variable `no-byte-compile' in Lisp files is now obeyed. + +*** When a Lisp file uses CL functions at run-time, compiling the file +now issues warnings about these calls, unless the file performs +(require 'cl) when loaded. + +** Frame operations: + +*** New functions `frame-current-scroll-bars' and `window-current-scroll-bars'. + +These functions return the current locations of the vertical and +horizontal scroll bars in a frame or window. + +*** The new function `modify-all-frames-parameters' modifies parameters +for all (existing and future) frames. + +*** The new frame parameter `tty-color-mode' specifies the mode to use +for color support on character terminal frames. Its value can be a +number of colors to support, or a symbol. See the Emacs Lisp +Reference manual for more detailed documentation. + +*** When using non-toolkit scroll bars with the default width, +the `scroll-bar-width' frame parameter value is nil. + +** Mode line changes: + +*** New function `format-mode-line'. + +This returns the mode line or header line of the selected (or a +specified) window as a string with or without text properties. + +*** The new mode-line construct `(:propertize ELT PROPS...)' can be +used to add text properties to mode-line elements. + +*** The new `%i' and `%I' constructs for `mode-line-format' can be used +to display the size of the accessible part of the buffer on the mode +line. + +*** Mouse-face on mode-line (and header-line) is now supported. + +** Menu manipulation changes: + +*** To manipulate the File menu using easy-menu, you must specify the +proper name "file". In previous Emacs versions, you had to specify +"files", even though the menu item itself was changed to say "File" +several versions ago. + +*** The dummy function keys made by easy-menu are now always lower case. +If you specify the menu item name "Ada", for instance, it uses `ada' +as the "key" bound by that key binding. + +This is relevant only if Lisp code looks for the bindings that were +made with easy-menu. + +*** `easy-menu-define' now allows you to use nil for the symbol name +if you don't need to give the menu a name. If you install the menu +into other keymaps right away (MAPS is non-nil), it usually doesn't +need to have a name. + +** Mule changes: + +*** Already true in Emacs 21.1, but not emphasized clearly enough: + +Multibyte buffers can now faithfully record all 256 character codes +from 0 to 255. As a result, most of the past reasons to use unibyte +buffers no longer exist. We only know of three reasons to use them +now: + +1. If you prefer to use unibyte text all of the time. + +2. For reading files into temporary buffers, when you want to avoid +the time it takes to convert the format. + +3. For binary files where format conversion would be pointless and +wasteful. + +*** The new variable `auto-coding-functions' lets you specify functions +to examine a file being visited and deduce the proper coding system +for it. (If the coding system is detected incorrectly for a specific +file, you can put a `coding:' tags to override it.) + +*** The new variable `ascii-case-table' stores the case table for the +ascii character set. Language environments (such as Turkish) may +alter the case correspondences of ASCII characters. This variable +saves the original ASCII case table before any such changes. + +*** The new function `merge-coding-systems' fills in unspecified aspects +of one coding system from another coding system. + +*** New coding system property `mime-text-unsuitable' indicates that +the coding system's `mime-charset' is not suitable for MIME text +parts, e.g. utf-16. + +*** New function `decode-coding-inserted-region' decodes a region as if +it is read from a file without decoding. + +*** New CCL functions `lookup-character' and `lookup-integer' access +hash tables defined by the Lisp function `define-translation-hash-table'. + +*** New function `quail-find-key' returns a list of keys to type in the +current input method to input a character. + +*** `set-buffer-file-coding-system' now takes an additional argument, +NOMODIFY. If it is non-nil, it means don't mark the buffer modified. + +** Operating system access: + +*** The new primitive `get-internal-run-time' returns the processor +run time used by Emacs since start-up. + +*** Functions `user-uid' and `user-real-uid' now return floats if the +user UID doesn't fit in a Lisp integer. Function `user-full-name' +accepts a float as UID parameter. + +*** New function `locale-info' accesses locale information. + +*** On MS Windows, locale-coding-system is used to interact with the OS. +The Windows specific variable w32-system-coding-system, which was +formerly used for that purpose is now an alias for locale-coding-system. + +*** New function `redirect-debugging-output' can be used to redirect +debugging output on the stderr file handle to a file. + +** GC changes: + +*** New variable `gc-cons-percentage' automatically grows the GC cons threshold +as the heap size increases. + +*** New variables `gc-elapsed' and `gcs-done' provide extra information +on garbage collection. + +*** The normal hook `post-gc-hook' is run at the end of garbage collection. + +The hook is run with GC inhibited, so use it with care. + +** Miscellaneous: + +*** A number of hooks have been renamed to better follow the conventions: + +`find-file-hooks' to `find-file-hook', +`find-file-not-found-hooks' to `find-file-not-found-functions', +`write-file-hooks' to `write-file-functions', +`write-contents-hooks' to `write-contents-functions', +`x-lost-selection-hooks' to `x-lost-selection-functions', +`x-sent-selection-hooks' to `x-sent-selection-functions', +`delete-frame-hook' to `delete-frame-functions'. + +In each case the old name remains as an alias for the moment. + +*** Variable `local-write-file-hooks' is marked obsolete. + +Use the LOCAL arg of `add-hook'. + +*** New function `x-send-client-message' sends a client message when +running under X. + +* New Packages for Lisp Programming in Emacs 22.1 + +** The new library button.el implements simple and fast `clickable +buttons' in Emacs buffers. Buttons are much lighter-weight than the +`widgets' implemented by widget.el, and can be used by lisp code that +doesn't require the full power of widgets. Emacs uses buttons for +such things as help and apropos buffers. + +** The new library tree-widget.el provides a widget to display a set +of hierarchical data as an outline. For example, the tree-widget is +well suited to display a hierarchy of directories and files. + +** The new library bindat.el provides functions to unpack and pack +binary data structures, such as network packets, to and from Lisp +data structures. + +** master-mode.el implements a minor mode for scrolling a slave +buffer without leaving your current buffer, the master buffer. + +It can be used by sql.el, for example: the SQL buffer is the master +and its SQLi buffer is the slave. This allows you to scroll the SQLi +buffer containing the output from the SQL buffer containing the +commands. + +This is how to use sql.el and master.el together: the variable +sql-buffer contains the slave buffer. It is a local variable in the +SQL buffer. + +(add-hook 'sql-mode-hook + (function (lambda () + (master-mode t) + (master-set-slave sql-buffer)))) +(add-hook 'sql-set-sqli-hook + (function (lambda () + (master-set-slave sql-buffer)))) + +** The new library benchmark.el does timing measurements on Lisp code. + +This includes measuring garbage collection time. + +** The new library testcover.el does test coverage checking. + +This is so you can tell whether you've tested all paths in your Lisp +code. It works with edebug. + +The function `testcover-start' instruments all functions in a given +file. Then test your code. The function `testcover-mark-all' adds +overlay "splotches" to the Lisp file's buffer to show where coverage +is lacking. The command `testcover-next-mark' (bind it to a key!) +will move point forward to the next spot that has a splotch. + +Normally, a red splotch indicates the form was never completely +evaluated; a brown splotch means it always evaluated to the same +value. The red splotches are skipped for forms that can't possibly +complete their evaluation, such as `error'. The brown splotches are +skipped for forms that are expected to always evaluate to the same +value, such as (setq x 14). + +For difficult cases, you can add do-nothing macros to your code to +help out the test coverage tool. The macro `noreturn' suppresses a +red splotch. It is an error if the argument to `noreturn' does +return. The macro `1value' suppresses a brown splotch for its argument. +This macro is a no-op except during test-coverage -- then it signals +an error if the argument actually returns differing values. + + + +---------------------------------------------------------------------- +This file is part of GNU Emacs. + +GNU Emacs is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. + + +Local variables: +mode: outline +paragraph-separate: "[ ]*$" +end: + +arch-tag: 1aca9dfa-2ac4-4d14-bebf-0007cee12793 diff --cc lib-src/ChangeLog index c5f999666a6,a09ba2c078c..bec78315e45 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@@ -1,92 -1,9 +1,98 @@@ + 2007-09-27 Jason Rumney + + * makefile.w32-in (emacsclient, emacsclientw): Link to COMCTL32. + + * emacsclient.c (w32_window_app): Init common controls when windowed. + +2007-09-21 Glenn Morris + + * emacstool.c: Remove file. + * Makefile.in (emacstool, nemacstool, xvetool, xveterm): + Delete targets built from emacstool. + +2007-09-21 Stefan Monnier + + * emacsclient.c (decode_options): -t implies -c. + +2007-09-20 Stefan Monnier + + * emacsclient.c (DIRECTORY_SEP, IS_DIRECTORY_SEP, IS_DEVICE_SEP) + (IS_ANY_SEP): Only define if !defined(HAVE_GET_CURRENT_DIR_NAME). + (main_argc): Remove. + (strprefix): Use strncmp. + +2007-09-20 Jason Rumney + + * emacsclient.c (main) [SIGSTOP]: Change conditional from WINDOWSNT. + +2007-09-20 Stefan Monnier + + * emacsclient.c (current_frame): Change the default. + (longopts): Replace --current-frame by --create-frame. + (decode_options): Reverse the meaning of -c. + (print_help_and_exit): Update help text accordingly. + (main): Remove the -version and -good-version messages. + +2007-09-12 Glenn Morris + + * Makefile.in (SOURCES, unlock, relock): Delete. + +2007-08-29 Glenn Morris + + * makefile.w32-in (VERSION): Increase to 23.0.50. + +2007-08-29 Dan Nicolaescu + + * emacsclient.c (w32_execvp): Move definition before use. + (decode_options): Don't use a tty on mac carbon or windows. + +2007-08-29 Jason Rumney + + * emacsclient.c (SEND_STRING, SEND_QUOTED): Remove obfuscation macros. + (quote_argument, set_tcp_socket, handle_sigcont, handle_sigtstp): + (main): Expand removed macros inline. + (main) [WINDOWSNT]: Don't call ttyname. Don't recognize -suspend + option. + (main) [NO_SOCKETS_IN_FILE_SYSTEM]: Don't call init_signals. + +2007-08-29 Karoly Lorentey + + * emacsclient.c (signal.h): New include. + (sys/stat.h, errno.h): Always include, even on WINDOWSNT. + (DIRECTORY_SEP, IS_DIRECTORY_SEP, IS_DEVICE_SEP, IS_ANY_SEP): + Copy definitions here from src/lisp.h. + (main_argc, main_argv, current_frame, window_system, tty): New vars. + (longopts): Add tty, current-frame. + (xmalloc, xstrdup): New functions. + (get_current_dir_name): New function, copied from src/sysdep.c. + (decode_options): Set display from environment. Add tty and + current_frame options. Make --no-wait imply --current-frame, + except when it is the only option given. Make sure no frame is + opened when --current-frame is set. + (print_help_and_exit): Document tty and current-frame options. + (fail): Change arguments to void. + (main): When sockets are not defined, set main_argc, main_argv, + and call fail() with no arguments. + (emacs_socket): New variable (moved out from main `s'). + (quote_file_name): Rename to quote_argument. + (quote_argument): New name for old quote_file_name. + (unquote_argument, strprefix, pass_signal_to_emacs) + (handle_sigcont, handle_sigtstp, init_signals): New functions. + (set_local_socket): Initialize saved_errno to 0. If socket-name + is too long, call `fail' rather than `exit'. + (main): Doc update. Set main_argc, main_argv. New var `str'. + Don't need a filename or argument if tty or window_system set. + Call fail with no arguments. Use get_current_dir_name to send + over the current directory. Send version number to Emacs for + verification. If tty is set, check TERM, and pass name and type + to Emacs. Pass window_system to Emacs. Move sending of eval to + optind loop. Send -position, -file to Emacs. Call fsync after + fflush. Check for a client/server version match. + Handle -emacs-pid, -window-system-unsupported, -print, -error, and + -suspend commands. Don't exit prematurely on --no-wait, let Emacs + close the connection for us. When creating a new frame, send + environment and pwd to Emacs. Send current-frame to Emacs. + 2007-08-25 Eli Zaretskii * Makefile.in (rcs2log, rcs-checkin, grep-changelog, vcdiff): diff --cc lisp/ChangeLog index a43da3785a1,ed0a9ed25e8..3950ae51b0e --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@@ -1,6499 -1,35422 +1,6778 @@@ -2007-10-09 Juanma Barranquero - - * follow.el (follow-mode-hook, follow-mode): Doc fixes. - (follow-mode-off-hook): Mark as obsolete. - -2007-10-08 Richard Stallman - - * emacs-lisp/edebug.el (edebug-install-custom-print-funcs) - (edebug-install-custom-print, edebug-reset-print-funcs) - (edebug-uninstall-custom-print, edebug-uninstall-custom-print-funcs): - Functions deleted. - (edebug-prin1, edebug-print, edebug-prin1-to-string) - (edebug-format, edebug-message): Define directly as aliases. - -2007-10-08 Juanma Barranquero - - * follow.el (follow-mode): Don't run hooks twice. Use `when'. - -2007-10-07 Glenn Morris - - * simple.el (bad-packages-alist): Clarify Semantic and CEDET - version numbers. - -2007-10-06 Michael Albinus - - * net/tramp.el (tramp-completion-mode): Extend doc-string. - (tramp-completion-mode-p): Revert change from 2007-09-24. - Checking for `return' etc as last character is not sufficient, for - example in dired-mode when entering (revert-buffer) or - (dired-sort). - -2007-10-06 Martin Rudalics ++2007-10-08 Martin Rudalics + + * window.el (mouse-autoselect-window-cancel): Don't cancel for + select-window or select-frame events. + (handle-select-window): When autoselecting window set input + focus. Restructure. + + * frame.el (focus-follows-mouse): Moved to frame.c. + * cus-start.el (all): Add focus-follows-mouse. + -2007-10-05 Chris Moore - - * server.el (server-kill-new-buffers): Doc fix. - -2007-10-05 Juanma Barranquero ++2007-10-08 Juanma Barranquero + + * bs.el (bs-mode): Make sure global-font-lock-mode doesn't + activate font-locking in the *buffer-selection* buffer. + (bs-show-sorted): Doc fix. + + * bs.el (bs--get-marked-string, bs--get-modified-string) + (bs--get-readonly-string, bs--get-size-string, bs--get-name) + (bs--get-mode-name, bs-mode): Fix typos in docstrings. + (bs--format-aux): Doc fix. + -2007-10-04 Juanma Barranquero - - * image-dired.el (image-dired-image-at-point-p): Fix typo in docstring. - -2007-10-04 Micha,Ak(Bl Cadilhac ++2007-10-08 Micha,Ak(Bl Cadilhac + + * progmodes/gud.el (gud-gud-gdb-command-name): Fix typo in docstring. + -2007-10-04 Nick Roberts ++2007-10-08 Nick Roberts + + * progmodes/gud.el (gud-gud-gdb-command-name): New option. + (gud-gdb): New function for old M-x gdb (text command mode). + (gud-gdb-command-name, gdb): Move to... + + * progmodes/gdb-ui.el: ...here and adapt doc string. + (gud-gdba-command-name, gdba): Delete. + -2007-10-03 Juanma Barranquero ++2007-10-08 Juanma Barranquero + + * bs.el: Don't defvar `font-lock-verbose'. + (bs-config-clear, bs-kill, bs-string-show-normally, bs-sort-functions) + (bs--get-file-name): Fix typos in docstrings. + (bs--show-header): Use `dolist' instead of `mapcar'. + (bs-mode): Set `show-trailing-whitespace' to nil. + (bs-buffer-sort-function, bs-mouse-select-other-frame) + (bs-visits-non-file, bs-sort-buffer-interns-are-last, bs-show): + Doc fixes. + -2007-10-02 Adam Hupp (tiny change) ++2007-10-08 Adam Hupp (tiny change) + + * progmodes/gdb-ui.el (pdb): Specify file for gud-break. + -2007-10-02 Nick Roberts ++2007-10-08 Nick Roberts + + * progmodes/gud.el (gdb): Make graphical mode the default and + switch to text command mode if appropriate, i.e., reverse previous + arrangement. + (gud-gdb-marker-filter): Adapt for above change. + + * progmodes/gdb-ui.el (gdb-init-1): Don't set the values + gud-minor-mode and gud-marker-filter. + (gdb-fullname-regexp): New variable. + (gud-gdba-marker-filter): Use it to switch to text command + mode if appropriate. + -2007-10-02 Richard Stallman - - * frame.el (cursor-in-non-selected-windows): Doc fix. - -2007-10-01 Nick Roberts ++2007-10-08 Nick Roberts + + * progmodes/gud.el (gud-display-line): Find source buffer even when + GUD buffer has its own frame. + -2007-10-01 Jan Dj,Ad(Brv ++2007-10-08 Jan Dj,Ad(Brv + + * term/x-win.el (icon-map-list): Set to nil for 22.1 compatibility. + -2007-09-29 Jan Dj,Ad(Brv ++2007-10-08 Jan Dj,Ad(Brv + + * term/x-win.el (x-gtk-stock-map): Version is 22.2. + -2007-09-29 Martin Rudalics ++2007-10-08 Martin Rudalics + + * allout.el (allout-before-change-handler): Replace got-char by + goto-char. + -2007-09-28 Stefan Monnier ++2007-10-08 Stefan Monnier + + * vc-svn.el (vc-svn-resolve-when-done, vc-svn-find-file-hook): New funs. + Used to try and automatically enabled smerge-mode in the presence of + conflicts and to call `svn resolved' when the conflicts are gone. + (vc-svn-parse-status): Remember the svn-specific status. + - * newcomment.el (comment-choose-indent): New function extracted - from comment-indent. Improve the alignment algorithm. - (comment-indent): Use it. - -2007-09-27 Juanma Barranquero - - * emacs-lisp/eldoc.el (eldoc-message-commands-table-size) - (eldoc-message-commands, eldoc-current-idle-delay): - Fix typos in docstrings. - - * progmodes/python.el (python-eldoc-function): Doc fix. - -2007-09-26 Eli Zaretskii ++2007-10-08 Eli Zaretskii + + * menu-bar.el (menu-bar-search-documentation-menu): Rename from + menu-bar-apropos-menu. All users changed. + (menu-bar-help-menu): Change menu symbols to better match the text + displayed by the menu. + -2007-09-25 Glenn Morris - - * view.el (view-search-no-match-lines): Add a doc string. - Rewrite to simplify and work better. - -2007-09-24 Michael Albinus - - * net/tramp.el (tramp-completion-mode-p): Rename from - `tramp-completion-mode'. Revert logic, check `return', `newline' - and such alike. Packages like Icicles tend to use other completion - characters but `tab' and `space' only. - (top): Require cl.el, when `copy-tree' is not available otherwise. - - * net/tramp-vc.el (tramp-vc-user-login-name): Get argument by - `ad-get-arg'. - -2007-09-24 Ville Skytt,Ad(B (tiny change) - - * net/tramp-vc.el (tramp-vc-user-login-name): - Use `vc-find-version' instead of `process-file' to check whether we - have a new enough vc that doesn't need the defadvice. - -2007-09-23 Dan Nicolaescu ++2007-10-08 Dan Nicolaescu + + * files.el (file-name-sans-versions): Use [:alnum:] and also allow + #, @, : and ^. + -2007-09-23 Glenn Morris - - * ses.el (ses-calculate-cell): Don't evaluate unsafe formulae. - -2007-09-22 Dan Nicolaescu ++2007-10-08 Dan Nicolaescu + + * pcvs-defs.el (cvs-mode-map): Bind TAB and backtab. + + * log-view.el (log-view-mode-map): Likewise. + + * diff-mode.el (diff-mode-shared-map): Likewise. + -2007-09-21 Francesco Potort,Al(B - - * progmodes/octave-inf.el (inferior-octave-mode): Use add-hook to - add inferior-octave-directory-tracker to the buffer-local value - of comint-input-filter-functions. - -2007-09-22 Dan Nicolaescu ++2007-10-08 Dan Nicolaescu + + * files.el (file-name-sans-versions): Also allow `A-Z'. + + * vc.el: Mention all supported VC backends. + -2007-09-22 Richard Stallman ++2007-10-08 Richard Stallman + + * wid-edit.el (widget-specify-button): Don't merge mouse-face with + neighbouring buttons. + -2007-09-22 Andreas Schwab ++2007-10-08 Andreas Schwab + + * files.el (file-name-sans-versions): Also allow `_'. + -2007-09-22 Glenn Morris - - * eshell/esh-mode.el (eshell-output-filter-functions): - Add eshell-postoutput-scroll-to-bottom. - -2007-09-21 Dan Nicolaescu ++2007-10-08 Dan Nicolaescu + + * files.el (file-name-sans-versions): Allow - and a-z in version names. + + * log-view.el (log-view-mode-map, log-view-mode-menu): + Bind log-view-annotate-version. + (log-view-beginning-of-defun, log-view-end-of-defun) + (log-view-annotate-version): New functions. + (log-view-mode): Use log-view-beginning-of-defun and + log-view-end-of-defun. + -2007-09-21 Stefan Monnier ++2007-10-08 Stefan Monnier + + * emacs-lisp/easy-mmode.el (define-minor-mode): Fix staging. + -2007-09-21 Kevin Ryde - - * international/mule.el (sgml-html-meta-auto-coding-function): - Bind `case-fold-search' to t. - -2007-09-20 Stefan Monnier ++2007-10-08 Stefan Monnier + + * wid-edit.el (widget-image-insert): Don't merge mouse-face with + neighbouring buttons. + + * progmodes/compile.el (compilation-error-regexp-alist-alist): + Recognize gcc's use of "note" for informational messages. + -2007-09-20 Glenn Morris - - * textmodes/tex-mode.el (tex-validate-buffer): Use paragraph - motion functions, rather than hard-coding "\n\n". - (tex-validate-region): Check for eobp, to speed up. - (tex-next-unmatched-end): Doc fix. - -2007-09-19 Glenn Morris - - * textmodes/tex-mode.el (tex-terminate-paragraph): - Use backward-paragraph. - -2007-09-18 Stefan Monnier ++2007-10-08 Stefan Monnier + + * textmodes/css-mode.el (css-electric-keys): electrick->electric. + (css-mode): Update correspondingly. + -2007-09-18 Stefan Monnier - - * vc-arch.el (vc-arch-extra-menu-map): New var and fun. - - * vc-hooks.el (vc-menu-entry): New var. - (vc-mode-line-map): Use it so that this menu also uses the extra-menu. - (menu-bar-tools-menu): Add the VC menu here rather than in menu-bar.el. - (vc-menu-map): Declare and initialize in one step. - - * menu-bar.el (vc-menu-map): Don't setup any more. - Instead, just create the proper spot in the menu. - -2007-09-18 Dan Nicolaescu - Stefan Monnier - - * vc.el: Document new VC operation `extra-menu'. - - * vc-hooks.el (vc-default-extra-menu, vc-menu-map-filter): New fun. - -2007-09-17 Dan Nicolaescu ++2007-10-08 Dan Nicolaescu + + * vc-git.el (vc-git-log-view-mode): Add font-lock patterns for + Signed-off-by, Acked-by and Merge. + -2007-09-17 Glenn Morris - - * textmodes/tex-mode.el (tex-compilation-parse-errors): Prefer the - filename from `--file-line-error', if it is available. - -2007-09-17 Joe Wells (tiny change) - - * textmodes/tex-mode.el (tex-compilation-parse-errors): Also match - TeX `--file-line-error' format. - -2007-09-17 Glenn Morris - - * textmodes/tex-mode.el (tex-region): Simplify previous change, - handling the case where the region is not in `tex-main-file'. - (tex-region-1): Delete. - (tex-region-header): New function, doing the header part of the - old tex-region-1. - -2007-09-16 Stefan Monnier ++2007-10-08 Stefan Monnier + + * ediff-init.el (ediff-verbose-p): This var is not a constant. + -2007-09-16 Drew Adams - - * cus-edit (custom-face-edit-activate): Doc fix. - -2007-09-16 Glenn Morris - - * textmodes/tex-mode.el (tex-region): Handle the case where the - region is not in `tex-main-file'. Move the old code that applies - to both cases... - (tex-region-1): ...to this new function. - -2007-09-15 Martin Rudalics - - * simple.el (blink-matching-open): Don't display message when no - paren is found within blink-matching-paren-distance characters. - Don't search prompt in blink-matching-paren-distance nil case. - -2007-09-14 Dan Nicolaescu - - * term/xterm.el (terminal-init-xterm): Add C-M- bindings. - -2007-09-14 Stefan Monnier ++2007-10-08 Stefan Monnier + + * vc-mtn.el: New file. + + * vc-hooks.el (vc-handled-backends): Add Mtn. + -2007-09-13 Eli Zaretskii ++2007-10-08 Eli Zaretskii + + * files.el (find-file, find-file-other-window) + (find-file-other-frame, find-file-existing, find-file-read-only) + (find-file-read-only-other-window) + (find-file-read-only-other-frame) + (find-alternate-file-other-window, find-alternate-file): Doc fixes. + -2007-09-13 Jari Aalto - - * man.el (Man-default-man-entry): At end of line, continue looking - to the next line for possible end of hyphenated command. - -2007-09-13 Chris Moore - - * shell.el (shell-resync-dirs): Don't move the cursor relative to - the command being edited. - -2007-09-13 Nick Roberts ++2007-10-08 Nick Roberts + + * progmodes/gud.el (gdb-ready): New variable. + (gdb): Set it to nil. Set gud-running to nil here... + (gud-common-init): ...instead of here. + + * progmodes/gdb-ui.el (gdba, gdb-send, gdb-source-info): + Use gdb-ready. Discard input until GDB is ready to accept it. + -2007-09-12 Dan Nicolaescu - - * term/xterm.el (terminal-init-xterm): Add bindings for M-S- and - C-M-S- keys. - -2007-09-12 Martin Rudalics ++2007-10-08 Martin Rudalics + + * dired.el (dired-warning): Inherit from font-lock-warning-face to + make it show up with eight colors. + -2007-09-12 Stefan Monnier ++2007-10-08 Stefan Monnier + + * diff-mode.el (diff-sanity-check-hunk): Fix up the case when unified + diffs are concatenated with no intervening line. + -2007-09-10 Dave Love ++2007-10-08 Dave Love + + * progmodes/python.el: Merge changes from Dave Love's v2007-Sep-10. + (python-font-lock-keywords): Update to the 2.5 version of the language. + (python-quote-syntax): Let-bind font-lock-syntactic-keywords to nil. + (python-backspace): Only behave funny in code. + (python-compilation-regexp-alist): Add PDB stack trace regexp. + (inferior-python-mode): Add PDB prompt regexp. + (python-fill-paragraph): Refine the fenced-string regexp. + (python-find-imports): Handle imports spanning several lines. + (python-mode): Add `class' to hideshow support. + -2007-09-08 Stefan Monnier ++2007-10-08 Stefan Monnier + + * pcvs.el (cvs-mode-add-change-log-entry-other-window): Use + add-log-buffer-file-name-function rather than bind buffer-file-name, + so we dont end up calling change-log-mode in *cvs* when `fi' is the + ChangeLog file itself. + + * outline.el (outline-flag-region): Use front-advance. + -2007-09-07 Ilya Zakharevich ++2007-10-08 Ilya Zakharevich + + * progmodes/cperl-mode.el: Merge upstream 5.23. + (cperl-where-am-i): Remove function. + (cperl-backward-to-noncomment): Don't go too far when skipping POD/HEREs + (cperl-sniff-for-indent): De-invert [string] and [comment]. + When looking for label, skip s:m:y:tr. + (cperl-indent-line): Likewise. + (cperl-mode): Don't assume `font-lock-multiline' is auto-local. + (cperl-windowed-init): Wrong `ps-print' handling. + Both thanks to Chong Yidong. + (cperl-look-at-leading-count): Could fail with unfinished RExen. + (cperl-find-pods-heres): If the second part of s()[] is missing, + don't try to highlight delimiters... + -2007-09-07 Stefan Monnier ++2007-10-08 Stefan Monnier + + * progmodes/compile.el (compilation-get-file-structure): Complete last + change by also using spec-directory in the puthash. + -2007-09-07 Riccardo Murri ++2007-10-08 Riccardo Murri + - * vc-bzr.el (vc-bzr-admin-lastrev): New constant. - (vc-bzr-file-name-relative): Use 'when' instead of 'and'. ++ * vc-bzr.el (vc-bzr-file-name-relative): Use 'when' instead of 'and'. + (vc-bzr-status): Fix shadowing of variable 'status'. + (vc-bzr-workfile-version): Use correct path to 'last-revision' file. + Use `expand-file-name' instead of `concat'. + (vc-bzr-annotate-command): Use option name '--long' instead of '-l'. + Update annotation line regexp. Fixes launchpad.net [Bug 137435]. + -2007-09-05 Jason Rumney ++2007-10-08 Jason Rumney + + * frame.el (focus-follows-mouse): Doc-fix. Change default on w32. + -2007-09-02 Richard Stallman ++2007-10-08 Richard Stallman + + * emacs-lisp/lisp-mode.el (lisp-indent-offset): Make defcustom. + Add `safe-local-variable' property. + (lisp-body-indent): Likewise. + -2007-09-02 Jan Dj,Ad(Brv - - * info.el (info-tool-bar-map): Add :rtl keyword to right/left-arrow and - prev/next-node. - - * term/x-win.el (x-gtk-stock-map, icon-map-list): New variables. - (x-gtk-map-stock): New function. - -2007-09-02 Glenn Morris - - * comint.el (comint-mode): Don't set scroll-conservatively. - - * eshell/em-unix.el (eshell/time): Stringify and flatten the - non-command arguments. - -2007-09-01 Thien-Thi Nguyen - - * emacs-lisp/bytecomp.el (byte-recompile-directory): - Fix bug: Don't expand top-level file name more than once. - Reported by Dmitry Antipov . - -2007-09-01 Richard Stallman ++2007-10-08 Richard Stallman + + * files.el (hack-local-variables-confirm): Rename arg VARS to ALL-VARS. + Add doc string. + -2007-08-30 Richard Stallman - - * speedbar.el (speedbar-frame-reposition-smartly) - (speedbar-set-mode-line-format, speedbar-reconfigure-keymaps) - (speedbar-check-vc): Don't use dframe-xemacsp. - -2007-08-30 Martin Rudalics ++2007-10-08 Martin Rudalics + + * files.el (backup-buffer-copy): Try to overwrite old backup first. + -2007-08-29 Martin Rudalics ++2007-10-08 Martin Rudalics + + * repeat.el (repeat): Use last-repeatable-command instead of + real-last-command. Run pre- and post-command hooks for + self-insertion. Update doc-string. + -2007-08-28 Glenn Morris - - * progmodes/cc-langs.el (c-constant-kwds): Add java: true, false, null. - -2007-08-27 Alexandre Julliard ++2007-10-08 Alexandre Julliard + + * vc-git.el (vc-git-state): Call git-add --refresh to update the + state of the file. + (vc-git-workfile-unchanged-p): Delegate implementation to vc-git-state. + (vc-git-create-repo): Fix invalid command. + -2007-08-27 Richard Stallman ++2007-10-08 Richard Stallman + + * textmodes/flyspell.el (flyspell-mode): + Catch errors in flyspell-mode-on. + -2007-08-27 Thien-Thi Nguyen +2007-10-09 Juanma Barranquero - * progmodes/modula2.el (m2-definition, m2-module): - Don't use previous-line. Reported by T. V. Raman. + * term/x-win.el (x-alternatives-map): Remove spurious parenthesis. -2007-08-27 YAMAMOTO Mitsuharu +2007-10-09 Stefan Monnier - * term/mac-win.el (mac-handle-toolbar-switch-mode): Add explicit - argument to tool-bar-mode call. + * international/encoded-kb.el (encoded-kbd-setup-display): + Use input-decode-map rather than local-key-translation-map. -2007-08-27 Glenn Morris + * term/rxvt.el (rxvt-alternatives-map): New map. + (terminal-init-rxvt): Use it. + Bind rxvt-function-map in input-decode-map. - * diff-mode.el (diff-find-file-name): Only accept regular files, - to rule out /dev/null, directories, etc. + * term/xterm.el (xterm-alternatives-map): New map. + (terminal-init-xterm): Use it. + Bind xterm-function-map in input-decode-map. -2007-08-25 Dan Nicolaescu + * term/x-win.el (x-alternatives-map): New var. + (x-setup-function-keys): Use it. - * progmodes/cperl-mode.el (cperl-indent-level): Autoload the - safe-local-variable setting. - * progmodes/perl-mode.el (perl-indent-level): Likewise. + * help-fns.el (describe-variable): Slightly change the layout of + meta-info to separate it better from the docstring. + Standardize insertion of extra empty lines in various circumstances. -2007-08-25 Stefan Monnier + * diff-mode.el (diff-hunk-style): New fun. + (diff-end-of-hunk): Use it. + (diff-context->unified): Use the new `apply' undo element, + if applicable, so as to save undo-log space. + (diff-fine-change): New face. + (diff-fine-highlight-preproc): New function. + (diff-fine-highlight): New command. + (diff-mode-map, diff-mode-menu): Add diff-fine-highlight. - * uniquify.el (uniquify-rationalize-file-buffer-names): Check liveness - of buffers in uniquify-managed. + * smerge-mode.el (smerge-refine-chopup-region): Add `preproc' argument. + (smerge-refine-highlight-change): Add `props' argument. + (smerge-refine-subst): New function holding most of smerge-refine. + (smerge-refine): Use it. - * simple.el (invisible-p): Rename from text-invisible-p. - Update callers. +2007-10-08 Eric S. Raymond -2007-08-25 Alan Mackenzie + * vc.el (vc-default-wash-log): Remove unused code, the + log washers all live in the backends now. + (vc-default-comment-history): Correct for the fact + that wash-log is argumentless in the new API. - * progmodes/cc-langs.el (c-other-decl-block-key-in-symbols-alist): - new language variable. +2007-10-08 Michael Albinus - * progmodes/cc-engine.el (c-brace-anchor-point): New function. - (c-add-stmt-syntax): Give accurate anchor points for "namespace", - "extern" etc., rather than BOI. Fix addition of spurious - syntactic-symbol 'defun-block-intro, replacing it with - 'innamespace, etc. + * net/tramp.el (tramp-find-foreign-file-name-handler): Check also host. + (tramp-maybe-send-script): Apply `member' but `memq'. + (tramp-advice-file-expand-wildcards): Simplify implementation. -2007-08-25 Reiner Steib +2007-10-08 Juanma Barranquero - * pcvs.el (cvs-query-directory): Only prompt when prefix is given. - Don't behave differently when executed via M-x. Add doc string. + * follow.el (follow-mode): Don't run hooks twice. Use `when'. -2007-08-24 Ulrich Mueller (tiny change) + * mb-depth.el (minibuf-depth-indicator-function): New variable. + (minibuf-depth-setup-minibuffer): Use it. - * files.el (backup-buffer-copy): Don't wrap delete in - condition-case, only try to delete if file exists. +2007-10-07 Glenn Morris -2007-08-24 Glenn Morris + * simple.el (bad-packages-alist): Clarify Semantic and CEDET + version numbers. - * files.el (backup-buffer-copy): Revert 2007-08-22 change. +2007-10-06 Juri Linkov -2007-08-23 Stefan Monnier + * textmodes/fill.el (fill-paragraph-or-region): New function. - * progmodes/cperl-mode.el (defcustom, x-color-defined-p, cperl-is-face) - (cperl-is-face, cperl-force-face, cperl-etags-snarf-tag, cperl-mode) - (cperl-etags-snarf-tag, cperl-etags-goto-tag-location, cperl-init-faces) - (cperl-etags-goto-tag-location): Use new style backquotes. + * bindings.el (esc-map): Bind M-q to fill-paragraph-or-region + instead of fill-paragraph. - * subr.el (complete-with-action): Backport from trunk (for vc-arch.el). - (dynamic-completion-table): Use it it. + * tutorial.el (tutorial--default-keys): Replace fill-paragraph + with fill-paragraph-or-region. Suspend command is now the same + `suspend-frame' on window systems and on tty. - * net/browse-url.el: Remove spurious * in custom docstrings. - (browse-url-filename-alist): Use new-style backquote. + * image.el (image-type): Check if image-types is bound to not fail + on tty. - * emacs-lisp/backquote.el (backquote-unquote-symbol) - (backquote-splice-symbol): Clarify they're not new-style unquotes. + * delsel.el (delete-selection-pre-hook): + * emulation/cua-base.el (cua-paste): Check if mouse-region-match + is fbound to not fail on mouseless tty. - * emacs-lisp/edebug.el (edebug-list-form, edebug-match-symbol, \,) - (\,@): Backslash the , and ,@ which are not new-style unquotes. +2007-10-06 Michael Albinus - * textmodes/texinfmt.el (\,): Clarify it's not a new-style unquote. + * net/tramp.el (top): Move loading of tramp-util.el and + tramp-vc.el to tramp-compat.el. + (tramp-make-tramp-temp-file): Complete rewrite. Create remote + temporary file if possible, in order to avoid a security hole. + (tramp-do-copy-or-rename-file-out-of-band) + (tramp-maybe-open-connection): Call `tramp-make-tramp-temp-file' + with DONT-CREATE, because the connection is not setup yet. + (tramp-handle-process-file): Rewrite temporary file handling. + (tramp-completion-mode): New defvar. + (tramp-completion-mode-p): Use it. - * net/socks.el (socks-username/password-auth-filter): - Remove unused vars `state' and `desired-len'. - (socks-parse-services, socks-nslookup-host): Use with-current-buffer. - (socks-wait-for-state-change): Use new-style backquotes. + * net/tramp-compat.el (top): Load tramp-util.el and tramp-vc.el. - * pcvs.el (cvs-mode-status): Fix long-standing typo. + * net/tramp-fish.el (tramp-fish-handle-process-file): + Rewrite temporary file handling. - * emacs-lisp/bytecomp.el (byte-compile-from-buffer): Check old-style - backquotes after each `read' rather than once per buffer. +2007-10-06 Eric S. Raymond - * dframe.el: Remove spurious * in custom docstrings. - (dframe-xemacsp): Remove, use (featurep 'xemacs) instead. - (dframe-xemacs20p): Remove, inline at the sole use point. - (defface): Don't defvar the face, don't use old-style backquote. - (defcustom): Don't use old-style backquote. - (dframe-frame-parameter, dframe-mouse-event-p): - Make it obvious that it's always defined. - (dframe-popup-kludge): New function to replace - dframe-xemacs-popup-kludge and dframe-xemacs-popup-kludge. - (dframe-frame-mode, dframe-set-timer-internal) - (dframe-mouse-set-point): Remove use of with-no-warnings from - XEmacs-specific code. - (dframe-set-timer-internal): Fix very old bug with - post-command-idle-hook. - - * emacs-lisp/byte-opt.el (byte-optimize-featurep): Handle `sxemacs'. - -2007-08-22 Chong Yidong - - * image-mode.el (image-minor-mode): Use image-mode-text-map. - -2007-08-22 Reiner Steib - - * sort.el (sort-fold-case, sort-numeric-base): Mark as - safe-local-variable. - -2007-08-22 Johan Bockg,Ae(Brd - - * net/browse-url.el (browse-url-emacs): New function. - -2007-08-22 Stefan Monnier - - * emacs-lisp/bytecomp.el (byte-compile-from-buffer): Display a big fat - warning if the file uses old style backquotes. - - * emacs-lisp/bytecomp.el (byte-compile-log-file) - (byte-recompile-directory, byte-compile-file) - (byte-compile-from-buffer): Use with-current-buffer. - - * simple.el (text-invisible-p): Rename from line-move-invisible-p. - (line-move-invisible-p): Keep as an obsolete alias, just to be safe. - (line-move-1, line-move-finish, line-move-to-column) - (move-end-of-line, move-beginning-of-line): Use new name. - -2007-08-22 Glenn Morris - - * files.el (backup-buffer-copy): Check backup directory is - writable, to avoid infloop deleting old backup. - - * mail/rmail.el (rmail-movemail-variant-p): Call on load to set - movemail related variables. - (rmail-insert-inbox-text): Use only rmail-movemail-program, which - will now be set before this is called. - -2007-08-21 Stefan Monnier - - * emacs-lisp/backquote.el (backquote-delay-process): Fix last change. - - * progmodes/ada-mode.el: Fix up comment style in header. - (ada-check-emacs-version): Remove. - (ada-mode): Set parse-sexp-* even if they don't exist: can't hurt. - (ada-region-selected): Use (featurep 'xemacs) rather than contortions - to try and quieten the byte-compiler. - (ada-create-keymap): Use [(..)] keys, which work on both (X)Emacs. - - * vc.el (vc-annotate-warp-version): Don't use previous-line. - -2007-08-20 Johannes Weiner (tiny change) - - * emacs-lisp/lisp-mode.el (preceding-sexp): New fun, the code was - extracted from `eval-last-sexp-1'. - (eval-last-sexp-1): Call `preceding-sexp'. - -2007-08-19 Glenn Morris - - * Makefile.in (custom-deps, finder-data, autoloads, recompile) - (progmodes/cc-mode.elc, mh-e/mh-loaddefs.el): Use $(emacs) rather - than $(EMACS), so that EMACSLOADPATH is set. Prevents any system - shadow files messing up the compilation. - -2007-08-18 Glenn Morris - - * progmodes/scheme.el (scheme-mode-variables): - Set font-lock-comment-start-skip. - -2007-08-18 Martin Rudalics - - * progmodes/ada-mode.el (ada-create-syntax-table): - Move set-syntax-table from here to ... - (ada-mode): ... here. Don't change global value of comment-multi-line. - Call new function ada-initialize-syntax-table-properties. - Add ada-handle-syntax-table-properties to font-lock-mode-hook. - (ada-deactivate-properties, ada-initialize-properties): - Replace by new functions ... - (ada-handle-syntax-table-properties, ada-set-syntax-table-properties) - (ada-initialize-syntax-table-properties): ... to set up syntax-table - properties uniformly, independently from whether font-lock-mode - is enabled or not. Handle read-only buffers and do not change - undo-list when setting syntax-table properties. - (ada-after-change-function): Use ada-set-syntax-table-properties. - -2007-08-17 Bob Rogers (tiny change) - - * progmode/cperl-mode.el (cperl-look-at-leading-count) - (cperl-find-pods-heres): Fix an error when typing expressions like - `s{a}{b}'. - -2007-08-17 Glenn Morris - - * progmodes/compile.el (compilation-get-file-structure): Make use - of the directory part when checking for an existing entry, to - handle files with same basename in different directories. - -2007-08-16 Vinicius Jose Latorre - - * ps-print.el (ps-header-font-size, ps-header-title-font-size) - (ps-footer-font-size, ps-line-number-font-size, ps-line-spacing) - (ps-paragraph-spacing): Docstring fix. - -2007-08-16 Stefan Monnier - - * smerge-mode.el (smerge-resolve): New arg `safe'. - (smerge-resolve-all, smerge-batch-resolve): New function. - (smerge-refine): Make sure `diff' returns the expected result. - (smerge-parsep-re): New const. - (smerge-mode): Use it to adjust paragraph-separate. - - * progmodes/perl-mode.el (perl-font-lock-syntactic-keywords): - Correctly match / regexp matchers as first char on a line when - fontifying only that line. - - * emacs-lisp/cl-macs.el (cl-transform-lambda): Preserve the match-data. - -2007-08-16 Glenn Morris - - * ps-print.el (ps-font-size): Doc fix. - -2007-08-15 Stefan Monnier - - * vc-bzr.el: Don't fiddle with vc-handled-backend. - (vc-bzr-registered): Don't redundantly protect against - file-error. Actually use the format-specific code. - (vc-bzr-buffer-nonblank-p): Remove. - (vc-bzr-status): Change `kindchange' -> `kindchanged'. - -2007-08-15 Glenn Morris - - * mail/undigest.el (rmail-digest-parse-rfc1153sloppy): Be even - sloppier, for the sake of GNU Mailman. - (rmail-digest-rfc1153): Initialize `result' correctly. - -2007-08-14 Glenn Morris - - * simple.el (bad-packages-alist): New constant. - (bad-package-check): New function. Together, these two add - elements to `after-load-alist' to check for problematic external - packages. - * emulation/cua-base.el: Move CUA-mode check to `bad-packages-alist'. - -2007-08-13 Stephen Leake - - * pcvs-parse.el (cvs-parse-table): Handle additional instance of - optional quotes around files in NEED-UPDATE . REMOVED case. - - * progmodes/ada-xref.el (ada-gnatls-args): Fix docstring. - (ada-treat-cmd-string): Improve error message. - (ada-do-file-completion): Call `ada-require-project-file', so - project variables are set properly. - (ada-prj-find-prj-file): Delete Emacs 20.2 support. - (ada-gnatfind-buffer-name): New constant. - (ada-find-any-references): Use new constant. Set buffer name - properly in compilation-start. Toggle read-only properly. - (ada-find-in-src-path): Fix spelling error in docstring. - - * progmodes/vhdl-mode.el (vhdl-update-progress-info): Avoid divide - by zero error. - -2007-08-13 Nick Roberts - - * progmodes/gdb-ui.el (gdb-send): Handle CTRL-D more carefully. - -2007-08-12 Richard Stallman - - * pcvs.el (cvs-reread-cvsrc, cvs-checkout, cvs-mode-checkout) - (cvs-execute-single-file): Use new name split-string-and-unquote. - (cvs-header-msg): Use new name combine-and-quote-strings. - - * emulation/vi.el (vi-next-line): Ignore return value of line-move. - - * progmodes/gud.el (gud-common-init): Use new name - split-string-and-unquote. - - * progmodes/flymake.el (flymake-err-line-patterns): Fix infloop - in javac regexp. - - * pcvs-util.el (cvs-qtypedesc-strings): Use new names - combine-and-quote-strings and split-string-and-unquote. - - * subr.el (combine-and-quote-strings): Rename from strings->string. - (split-string-and-unquote): Rename from string->strings. - -2007-08-10 Stefan Monnier - - * log-view.el (log-view-font-lock-keywords): Use `eval' so as to adapt - to buffer-local settings. - - * emacs-lisp/backquote.el (backquote-delay-process): New function. - (backquote-process): Add internal arg `level'. Use the two to - correctly handle nested backquotes. - -2007-08-09 Riccardo Murri - - * vc-bzr.el (vc-bzr-registered): Use \0 instead of literal NULs. - (vc-bzr-state-words): Add "kind changed" state word. - (vc-bzr-status): New function. Return Bzr idea of file status, - which is different from VC's. - (vc-bzr-state): Use vc-bzr-status. - (vc-workfile-unchanged-p): Use vc-bzr-status. - (vc-bzr-revert): Use synchronous process; expect exitcode 0. - (vc-dired-state): Process "kind changed" state word. - -2007-08-09 Stefan Monnier - - * vc-hooks.el (vc-default-find-file-not-found-hook): Do nothing. - - * vc-rcs.el (vc-rcs-find-file-not-found-hook): - Move from vc-default-find-file-not-found-hook. - -2007-08-09 Edward O'Connor (tiny change) - - * url/url-auth.el (url-basic-auth): When prompting for username - and password, default to the username and password in the URL. - -2007-08-08 Stefan Monnier - - * man.el: Remove spurious * in docstrings. - Merge defvars and toplevel setq-defaults. - (Man-highlight-references0): Limit=nil rather than point-max. - (Man-mode-map): Move initialization into the declaration. - (Man-strip-page-headers, Man-unindent): Use dolist & inhibit-read-only. - (Man-view-header-file): Use expand-file-name rather than concat. - (Man-notify-when-ready, Man-bgproc-sentinel): Use with-current-buffer. - - * man.el (Man-next-section): Make sure we do not move backward. - -2007-08-08 Vinicius Jose Latorre - - * ps-print.el (ps-default-fg, ps-default-bg): Docstring fix. - (ps-begin-job): Use ps-default-fg and ps-default-bg only when - ps-print-color-p is neither nil nor black-white. Reported by Christian - Schlauer . - -2007-08-08 Stefan Monnier - - * files.el (auto-mode-alist): Use the purecopied text (duh!). - -2007-08-08 Andreas Schwab - - * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook): Check for - self-insert-command, not self-insert. - -2007-08-08 Glenn Morris - - * emacs-lisp/checkdoc.el (checkdoc-ispell-lisp-words): Remove `iff'. - - * Replace `iff' in doc-strings and comments. - - * help-mode.el (help-make-xrefs): Search for symbol constituents, - rather than just `-'. - -2007-08-08 Martin Rudalics - - * dired.el (dired-pop-to-buffer): - * mouse-drag.el (mouse-drag-should-do-col-scrolling): - * calendar/calendar.el (generate-calendar-window): - * progmodes/compile.el (compilation-set-window-height): - * textmodes/two-column.el (2C-two-columns, 2C-merge): - Use window-full-width-p instead of comparing frame-width and - window-width. - - * progmodes/compile.el (compilation-find-buffer): Remove extra - argument in call to compilation-buffer-internal-p. - -2007-08-07 Michael Albinus - - * net/tramp.el (tramp-handle-file-remote-p): Handle optional - parameters IDENTIFICATION and CONNECTED. - (tramp-handle-insert-file-contents): VISIT must be handled after - insertion of the local copy. Reported by Peter Gordon - . - (tramp-file-name-handler): No special handling for - `expand-file-name'. But for `file-name-as-directory'. - (tramp-find-shell, tramp-open-connection-telnet) - (tramp-open-connection-rsh, tramp-open-connection-su) - (tramp-open-connection-multi) - (tramp-open-connection-setup-interactive-shell): Guard against - $PROMPT_COMMAND shell var. Reported by Steve Youngs - . - (tramp-append-tramp-buffers): Replace "sensible" by "sensitive" in - the hint. - - * net/trampver.el: Update release number. - -2007-08-07 Tom Tromey - - * progmodes/tcl.el (tcl-indent-level, tcl-continued-indent-level): - Add safe-local-variable property. - -2007-08-07 Chong Yidong - - * image-mode.el (image-toggle-display): Use image-refresh. - - * longlines.el (longlines-decoded): New variable. - (longlines-mode): Avoid encoding or decoding the buffer twice. - -2007-08-07 Riccardo Murri - - * vc-bzr.el: Remove comments about vc-bzr.el being a modified - unofficial version. - (vc-bzr-command): Remove redundant setting of process-connection-type. - (vc-bzr-admin-checkout-format-file): Add autoload. - (vc-bzr-root-dir): Remove in favor of vc-bzr-root. - (vc-bzr-root): Switch to implementation of vc-bzr-root-dir. - (vc-bzr-registered): Compare dirstate format tag with known good - value, abort parsing if match fails. Warn user in docstring. - (vc-bzr-workfile-version): Case for different Bzr branch formats. - See bzrlib/branch.py in Bzr sources. - (vc-bzr-diff): First argument FILES may be a string rather than a list. - (vc-bzr-shell-command): Remove in favor of - vc-bzr-command-discarding-stderr. - (vc-bzr-command-discarding-stderr): New function. - -2007-08-06 Riccardo Murri - - * vc-bzr.el (vc-bzr-registered): Gracefully handle missing "bzr" - program, and return nil - (vc-bzr-state): Gracefully handle missing "bzr" program, and return nil. - (vc-bzr-state): Look for path names relative to the repository - root after status keyword. - (vc-bzr-file-name-relative): New function. - (vc-bzr-admin-dirname): Reinstate, as other vc-bzr-admin-... paths - depend on it. - (vc-bzr-admin-dirname, ...-checkout-format-file) - (...-branch-format-file, ...-revhistory): Paths to some Bzr internal - files that we now parse directly for speed. - (vc-bzr-root-dir): Use `vc-bzr-admin-checkout-format-file' as witness. - (vc-bzr-registered): Only parse vc-bzr-admin-dirstate file if it exists. - (vc-bzr-state): "bzr status" successful only if exitcode is 0 - (vc-bzr-root): Use `vc-bzr-shell-command'. Stderr may contain - Bzr warnings, so we must discard it. - (vc-bzr-workfile-version): Speedup counting lines from - `vc-bzr-admin-revhistory' file, but fallback to spawning "bzr revno" - if that file doesn't exist. - (vc-bzr-responsible-p): Use `vc-bzr-root' instead of - `vc-bzr-root-dir' for speed. Add `vc-bzr-admin-dirname' - (not ".bzr"!) to `vc-directory-exclusion-list' - (vc-bzr-shell-command): New function. - -2007-08-06 Tom Tromey - - * diff-mode.el (diff-unified->context, diff-reverse-direction) - (diff-fixup-modifs): Typo in docstring. - -2007-08-06 Stefan Monnier - - * emulation/tpu-edt.el (tpu-current-line): Use posn-at-point and - count-screen-lines. - (tpu-edt-off): Disable relevant pieces of advice. - - * emulation/tpu-extras.el (tpu-before-save-hook): Rename from - tpu-write-file-hook. Activate it with add-hook on buffer-save-hook. - (newline, newline-and-indent, do-auto-fill): Use advice instead of - redefining the function. - (tpu-set-scroll-margins): Activate the pieces of advice. - -2007-08-06 Michael Albinus - - * net/ange-ftp.el (ange-ftp-hook-function): Catch also errors in - process-filter. - -2007-08-06 Martin Rudalics - - * help.el (resize-temp-buffer-window): Use window-full-width-p - instead of comparing frame-width and window-width. - -2007-08-05 Peter Povinec yahoo.com> (tiny change) - - * term.el: Honor term-default-fg-color and term-default-bg-color - settings when modifying term-current-face. - (term-default-fg-color, term-default-bg-color): Initialize from - default term-current-face. - (term-mode, term-reset-terminal): Set term-current-face with - term-default-fg-color and term-default-bg-color. - (term-handle-colors-array): term-current-face has term-default-fg-color - and term-default-bg-color after reset escape sequence. - (term-handle-colors-array): Set term-current-color with - term-default-fg/bg-color instead of ansi-term-color-vector when the - index (term-ansi-current-color or term-ansi-current-bg-color) is zero. - -2007-08-05 Michael Albinus - - * files.el (set-auto-mode): Handle also remote files wrt - `auto-mode-alist'. - - * net/tramp.el (tramp-handle-file-remote-p): Return a string as - remote identification. - -2007-08-04 Glenn Morris - - * autorevert.el (auto-revert-tail-mode): auto-revert-tail-pos is - zero, not nil, when the library is first loaded. Check for a file - that has been modified on disk. - - * progmodes/cperl-mode.el (cperl-compilation-error-regexp-alist): - Remove duplicate defvar preventing initialization. - (cperl-mode): Fix compilation-error-regexp-alist-alist setting. - -2007-08-03 Miles Bader - - * vc-hooks.el (vc-handled-backends): Change capitalization of VC - backend names for new backends to `Git', `Hg', and `Bzr'. - * vc-hg.el (vc-hg-dired-state-info): Use `Hg' as VC backend name, - not `HG'. - * vc-git.el (vc-git-dired-state-info): Use `Git' as VC backend - name, not `GIT'. - * vc-bzr.el (vc-bzr-dir-state, vc-bzr-dired-state-info) - (vc-bzr-unload-hook): Use `Bzr' as VC backend name, not `BZR'. - -2007-08-03 Glenn Morris - - * net/telnet.el (telnet-mode): Set comint-use-prompt-regexp to t. - -2007-08-02 Richard Stallman - - * mail/rmailsum.el (rmail-make-summary-line): Find end of msg number - to update deleted flag. - - * cus-edit.el (customize-apropos, customize-apropos-options) - (customize-apropos-faces, customize-apropos-groups): Improve prompt. - - * menu-bar.el (menu-bar-help-menu): Add "About GNU" menu item. - - * startup.el (fancy-splash-head, startup-echo-area-message): - Change message text. - - * emulation/tpu-edt.el (next-line-internal): Setting deleted. - All callers use line-move. - - * progmodes/compile.el (compilation-find-buffer): Return current - buffer immediately if suitable. - (compile, compilation-buffer-name, compilation-start): Doc fixes. - -2007-08-02 Stefan Monnier - - * vc-bzr.el (vc-bzr-admin-dirstate): Rename from `...-dirname'. - Make it more discriminating and more useful. - (vc-bzr-root-dir): Use new name. - (vc-bzr-registered): Use new name and look at the dirstate file to - determine if it's registered or not without running `bzr'. - -2007-08-01 Eric Hanchrow (tiny change) - - * ibuf-ext.el (ibuffer-mark-old-buffers): Docstring fix. - -2007-07-31 Drew Adams - - * cus-edit.el (custom-group-value-create, custom-goto-parent): - Fix parent groups link. - -2007-07-31 Daiki Ueno - - * faces.el (face-normalize-spec): New function. - (frame-set-background-mode): Normalize face-spec before calling - face-spec-match-p. - -2007-07-31 Stefan Monnier - - * vc-bzr.el: New file (copied from the trunk). - - * vc-hooks.el (vc-handled-backends): Add BZR. - (vc-find-file-hook): Failsafe if the backend's `registered' - function burps. - - * server.el (server-window): Add switch-to-buffer-other-frame option. - -2007-07-30 Dan Nicolaescu - - * vc-git.el (vc-directory-exclusion-list, vc-handled-backends): Remove. - (vc-git-revision-completion-table): Enable. - - * vc-hooks.el (vc-handled-backends): Add GIT and HG. - - * vc.el (vc-directory-exclusion-list): Add .git and .hg. - - * vc-hg.el (vc-hg-revision-completion-table): Re-enable. - (vc-hg-registered): Set the vc-state property. - - * diff-mode.el (diff-mode-menu): New entries. - -2007-06-30 Stefan Monnier - - * diff-mode.el (diff-beginning-of-file-and-junk): New function. - (diff-file-kill): Use it. - (diff-beginning-of-hunk): Add arg `try-harder' using it. - (diff-restrict-view, diff-find-source-location, diff-refine-hunk): - Use it so they find the hunk even when we're in the file header. - - * vc.el: Add new VC operation `revision-completion-table'. - (vc-default-revision-completion-table): New function. - (vc-version-diff, vc-version-other-window): Use it to provide - completion of revision names if the backend provides it. - - * vc-arch.el (vc-arch--version-completion-table) - (vc-arch-revision-completion-table): New functions to provide - completion of revision names. - - * vc-cvs.el: Require CL. - (vc-cvs-revision-table, vc-cvs-revision-completion-table): - New functions to provide completion of revision names. - -2007-07-29 Kimit Yada (tiny change) - - * emacs-lisp/copyright.el (copyright-update-year, copyright-update) - (copyright-fix-years, copyright): Correctly handle the case where - copyright-limit is nil. - -2007-07-28 Konstantin Novitsky (tiny change) - - * progmodes/python.el (run-python): Fix path separator under w32. - -2007-07-28 Dan Nicolaescu - - * vc-git.el: New File. - -2007-07-28 Alan Mackenzie - - Fix problem with modes derived from CC Mode: - * progmodes/cc-mode.el (c-make-emacs-variables-local): Move this - macro to cc-langs. - (c-init-language-vars-for): Remove call to above macro. - * progmodes/cc-langs.el (c-make-emacs-variables-local): Macro has - been moved to here. - (c-make-init-lang-vars-fun): Call c-make-emacs-variables-local. - -2007-07-28 Eli Zaretskii - - * net/trampver.el: Fix the `coding' cookie. - -2007-07-25 Nick Roberts - - * add-log.el (change-log-redate): Remove (not needed anymore and - doesn't appear to work). - -2007-07-25 Glenn Morris - - * Relicense all FSF files to GPLv3 or later. - - * COPYING: Switch to GPLv3. - -2007-07-25 Stefan Monnier - - * pcvs.el (cvs-temp-buffer): Undo last ill-conceived change. - Replace it with another one which disables undo before calling - erase-buffer and then turns it back on if needed. - -2007-07-24 Vinicius Jose Latorre - - * ps-print.el: Problem with foreground and background color when - printing a buffer with and without faces. Reported by Christian - Schlauer . - (ps-print-version): New version 6.7.5. - (ps-default-fg): Change default value to nil, so black color is used - when a face does not specify a foreground color. - (ps-default-bg): Change default value to nil, so white color is used - for background color. - (ps-begin-job): Fix code. - -2007-07-24 Dan Nicolaescu - - * vc-hg.el (vc-hg-revision-completion-table): Temporarily comment out. - -2007-07-24 Alan Mackenzie - - * emacs-lisp/bytecomp.el (byte-compile-from-buffer): - Initialise byte-compile-unresolved-functions before rather than - after a compilation. - (byte-compile-unresolved-functions): Amplify doc string. - -2007-07-24 Glenn Morris - - * calendar/cal-tex.el (cal-tex-holidays, cal-tex-diary) - (cal-tex-rules, cal-tex-buffer, cal-tex-24) - (cal-tex-cursor-month-landscape, cal-tex-cursor-month) - (cal-tex-cursor-week, cal-tex-cursor-week2) - (cal-tex-cursor-week-iso, cal-tex-week-hours) - (cal-tex-cursor-week-monday, cal-tex-weekly4-box) - (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week) - (cal-tex-cursor-filofax-daily, cal-tex-daily-page): Doc fix. - -2007-07-24 Stefan Monnier - - * pcvs.el (cvs-temp-buffer): Disable undo in temp buffers. - -2007-07-23 Stefan Monnier - - * ses.el (ses-cleanup): Prevent Emacs from spuriously checking if the - underlying file is uptodate. - -2007-07-23 Richard Stallman - - * progmodes/octave-inf.el (inferior-octave-prompt): Accept .exe. - -2007-07-23 Stefan Monnier - - * progmodes/sh-script.el (sh-font-lock-backslash-quote) - (sh-font-lock-flush-syntax-ppss-cache): New funs. - (sh-font-lock-syntactic-keywords): Use them to distinguish the - different possible cases for \'. - (sh-font-lock-paren): Mark the relevant text with font-lock-multiline. - - * vc-hooks.el (vc-find-root): Walk up the tree to find an existing - `file' from which to start the search and fix case where `file' is the - current directory and the root as well. - - * pcvs.el (cvs-mode-add-change-log-entry-other-window): Use a directory - name for buffer-file-name if it refers to a directory. - -2007-07-22 Jason Rumney - - * w32-fns.el (set-default-process-coding-system): Use dos line ends - for input to cmdproxy on all versions of Windows. - Use dos line ends for input to plink. - - * comint.el (comint-simple-send): Concat newline before sending. - (comint-password-prompt-regexp): Recognize plink's passphrase prompt. - -2007-07-22 Juri Linkov - - * isearch.el (isearch-edit-string): Save old point and - isearch-other-end to old-point and old-other-end before reading - the search string from minibuffer. After exiting minibuffer set - point to old-other-end if point and the search direction is the - same as before reading the search string. - (isearch-del-char): Don't set isearch-yank-flag to t. Put point - to isearch-other-end. Instead of isearch-search-and-update call - three functions isearch-search, isearch-push-state and isearch-update. - -2007-07-22 Ralf Angeli - - * textmodes/reftex.el (reftex-access-parse-file): Do not risk - destroying an existing buffer. - -2007-07-22 Jan Dj,Ad(Brv - - * startup.el (command-line-x-option-alist): Use x-handle-no-bitmap-icon. - - * term/x-win.el (x-handle-no-bitmap-icon): New function. - -2007-07-22 Ralf Angeli - - * textmodes/reftex.el (reftex-access-parse-file): Create parse - file in a way that does not interfere with recentf. - -2007-07-21 Thien-Thi Nguyen - - * image-dired.el (image-dired-sane-db-file): New func. - (image-dired-write-tags, image-dired-remove-tag) - (image-dired-list-tags, image-dired-write-comments) - (image-dired-get-comment, image-dired-mark-tagged-files) - (image-dired-create-gallery-lists): Call new func. - Reported by Dieter Wilhelm . - -2007-07-21 Dan Nicolaescu - - * vc-hg.el (vc-hg-diff): Use vc-hg-command. - (vc-hg-dir-state): Fix loop. - (vc-hg-print-log): Fix expected return value for vc-hg-command. - (vc-hg-next-version, vc-hg-delete-file, vc-hg-rename-file) - (vc-hg-register, vc-hg-create-repo, vc-hg-checkin) - (vc-hg-revert): Likewise. - (vc-hg-revision-table, vc-hg-revision-completion-table): New functions. - -2007-07-21 Thien-Thi Nguyen - - * emacs-lisp/lisp-mode.el (calculate-lisp-indent): In the - case of alignment under a constant symbol, find and consider - the sexp actually at indentation to be the "last sexp". - -2007-07-20 Eli Zaretskii - - * makefile.w32-in (install-lisp-SH, install-lisp-CMD): New targets. - (install): Use them to copy all *.el files before *.elc. - (clean): Don't delete *~. - -2007-07-20 Dan Nicolaescu - - * vc-hg.el (vc-hg-workfile-unchanged-p): New function. - -2007-07-19 Dan Nicolaescu - - * vc-hg.el (vc-hg-registered): Replace if with when. - (vc-hg-state): Deal with nonexistent files. - -2007-07-18 Juanma Barranquero - - * follow.el (follow-mode-hook, follow-mode-off-hook, follow-mode) - (follow-delete-other-windows-and-split, follow-recenter) - (follow-windows-aligned-p, follow-point-visible-all-windows-p) - (follow-redisplay, follow-estimate-first-window-start) - (follow-xemacs-scrollbar-support, follow-intercept-process-output): - Fix typos in docstrings. - -2007-07-17 Thien-Thi Nguyen - - * bookmark.el (bookmark-show-all-annotations): - Make sure each inserted annotation ends with newline. - - (bookmark-maybe-sort-alist): Don't modify - bookmark-alist. Instead, if not sorting, simply return it. - (bookmark-bmenu-list): Call bookmark-maybe-sort-alist - for its return value, not for its side effect. - -2007-07-17 Dan Nicolaescu - - * vc.el: Add more info about the vc-registered function. - -2007-07-16 David Kastrup - - * emacs-lisp/advice.el (defadvice): Doc fix. - -2007-07-16 Juanma Barranquero - - * subr.el (when, unless): Doc fix. - -2007-07-16 Dan Nicolaescu - - * vc-hg.el (vc-hg-state): Handle removed files. - (vc-hg-dir-state, vc-hg-dired-state-info): New functions. - (vc-hg-checkout): Re-enable. - -2007-07-15 Richard Stallman - - * kmacro.el (kmacro-bind-to-key): Avoid comparisons on function keys. - - * tutorial.el (tutorial--find-changed-keys): - Handle C-x specially like ESC. - -2007-07-15 Roland McGrath - - * add-log.el (add-change-log-entry): Check add-log-full-name - and add-log-mailing-address later, after change-log-mode-hook. - -2007-07-15 Richard Stallman - - * isearch.el (isearch-mode, isearch-done): - Delete unintended code in previous change. - - * ps-print.el (ps-default-bg): Change to White. - -2007-07-15 Aaron Hawley - - * tar-mode.el (tar-get-descriptor): No error for zero-length file. - -2007-07-15 Martin Rudalics - - * mouse.el (mouse-drag-track): Reset transient-mark-mode to nil - when handling the terminating event. - -2007-07-15 Jeff Miller (tiny change) - - * calendar/calendar.el (calendar-goto-bahai-date): Autoload it. - -2007-07-13 Eli Zaretskii - - * makefile.w32-in (install-lisp-SH, install-lisp-CMD): New targets. - (install): Use them to copy all *.el files before *.elc. - -2007-07-13 Dan Nicolaescu - - * replace.el (match): Use yellow1 instead of yellow. - - * progmodes/gdb-ui.el (breakpoint-enabled): Use red1 instead of red. - - * pcvs-info.el (cvs-unknown): Likewise. - -2007-07-12 Davis Herring - - * desktop.el (desktop-buffer-info, desktop-save): - Use `desktop-dirname' instead of `dirname'. - -2007-07-10 Jim Meyering (tiny change) - - * emacs-lisp/copyright.el (copyright-current-gpl-version): Set to 3. - - * autoinsert.el (auto-insert-alist): s/2/3/ in the generated comment. - -2007-07-10 Richard Stallman - - * emacs-lisp/lisp-mode.el (eval-defun): - Explain special handling of `defface'. - -2007-07-09 Richard Stallman - - * isearch.el (isearch-edit-string): Call to isearch-push-state - after the search. - -2007-07-08 Katsumi Yamaoka - - * cus-start.el (file-coding-system-alist): Fix custom type. - -2007-07-08 Chong Yidong - - * longlines.el (longlines-wrap-region): Avoid marking buffer as - modified. - (longlines-auto-wrap, longlines-window-change-function): - Remove unnecessary calls to set-buffer-modified-p. - -2007-06-20 Stefan Monnier - - * vc.el (vc-default-log-view-mode): New function. - (vc-print-log): Add new `log-view-mode' VC operation. - -2007-07-08 Nick Roberts - - * pcvs-util.el (cvs-strings->string, cvs-string->strings): - Rename and move to... - - * subr.el (strings->string, string->strings): ...here. - - * pcvs.el (cvs-reread-cvsrc, cvs-header-msg, cvs-checkout) - (cvs-mode-checkout, cvs-execute-single-file): Use new function names. - - * progmodes/gud.el (gud-common-init): Call string->strings instead - of split-string. - -2007-07-07 Eli Zaretskii - - * term/w32-win.el (menu-bar-open): New function. - Bind to it. - -2007-07-07 Dan Nicolaescu - - * log-view.el (log-view-mode-menu): New menu. - -2007-07-06 Dan Nicolaescu - - * vc-hg.el: New file. - -2007-07-06 Andreas Schwab - - * emacs-lisp/lisp-mode.el (eval-last-sexp): Avoid introducing any - dynamic bindings around the evaluation of the expression. - Reported by Jay Belanger . - -2007-07-03 Dan Nicolaescu - - * progmodes/gud.el (auto-mode-alist): Match more valid gdb init - file names. - -2007-07-02 Martin Rudalics - - * help-mode.el (help-make-xrefs): Skip spaces too when skipping tabs. - - * mouse.el (mouse-drag-mode-line-1): Quit mouse tracking when - event is not a cons cell. Do not unread drag-mouse-1 events. - Select right window in check whether space was stolen from - window above. - -2007-07-01 Richard Stallman - - * files.el (find-file-visit-truename): Fix safe-local-variable value. - -2007-06-29 Juanma Barranquero - - * generic-x.el (generic-define-mswindows-modes) - (generic-define-unix-modes, apache-log-generic-mode) - (bat-generic-mode-keymap, java-manifest-generic-mode) - (show-tabs-generic-mode): Fix typos in docstrings. - -2007-06-28 Jan Dj,Ad(Brv - - * dnd.el (dnd-get-local-file-name): Set fixcase to t in call to - replace-regexp-in-string. - -2007-06-28 Andreas Schwab - - * Makefile.in ($(lisp)/mh-e/mh-loaddefs.el): Depend on - $(lisp)/subdirs.el. - -2007-06-28 Juanma Barranquero - - * speedbar.el (speedbar-handle-delete-frame): Don't try to delete - the speedbar frame if nil; that deletes the current frame or - causes an error if it is the only frame. - Reported by Angelo Graziosi . - -2007-06-24 Juanma Barranquero - - * desktop.el (desktop-read): Run `desktop-not-loaded-hook' in the - directory where the desktop file was found, as the docstring says. - (desktop-kill): Use `read-directory-name'. - - * desktop.el (desktop-load-locked-desktop): New option. - (desktop-read): Use it. - (desktop-truncate, desktop-outvar, desktop-restore-file-buffer): - Use `when'. - -2007-06-24 Davis Herring - - * desktop.el (desktop-save-mode-off): New function. - (desktop-base-lock-name, desktop-not-loaded-hook): New variables. - (desktop-full-lock-name, desktop-file-modtime, desktop-owner) - (desktop-claim-lock, desktop-release-lock): New functions. - (desktop-kill): Tell `desktop-save' that this is the last save. - Release the lock afterwards. - (desktop-buffer-info): New function. - (desktop-save): Use it. Run `desktop-save-hook' where the doc - says to. Detect conflicts, and manage the lock. - (desktop-read): Detect conflicts. Manage the lock. - -2007-06-23 Eli Zaretskii - - * ls-lisp.el (insert-directory): If an invalid regexp error is - thrown, try using FILE as a literal file name, not a wildcard. - Check for FILE as an existing file, not just a directory. - -2007-06-23 Juanma Barranquero - - * ruler-mode.el (ruler-mode): Prevent clobbering the original - `header-line-format' when reentering ruler mode. - -2007-06-23 Eli Zaretskii - - * ls-lisp.el (insert-directory): Don't treat FILE as a wildcard if - FILE exists as a directory. - -2007-06-21 Stefan Monnier - - * vera-mode.el (vera-mode): Fix `commend-end-skip' setting. - (vera-font-lock-match-item): Fix doc string. - (vera-in-comment-p): Remove unused function. - (vera-skip-forward-literal, vera-skip-backward-literal): Improve code, - use `syntax-ppss'. - (vera-forward-syntactic-ws): Fix argument order. - (vera-prepare-search): Use `with-syntax-table'. - (vera-indent-line): Fix doc string. - (vera-electric-tab): Fix doc string. - (vera-expand-abbrev): Define alias instead of using `fset'. - (vera-comment-uncomment-region): Use `comment-start-skip'. - -2007-06-20 Reto Zimmermann - - * progmodes/vera-mode.el: New file. - -2007-06-20 Juanma Barranquero - - * ido.el (ido-find-file-in-dir): Don't signal an error for - empty directories. - -2007-06-18 Alan Mackenzie - - * progmodes/cc-mode.el (c-remove-any-local-eval-or-mode-variables): - When removing lines, also remove the \n. Correction of patch of - 2007-04-21. - -2007-06-17 Glenn Morris - - * lpr.el (lpr-page-header-switches): Move %s to separate element - for correct quoting. Doc fix. - -2007-06-13 Johan Bockg,Ae(Brd - - * term/xterm.el (terminal-init-xterm): Escape parens in character - constants. - -2007-06-12 Ralf Angeli - - * scroll-lock.el (scroll-lock-mode): Doc fix. - -2007-06-11 Stefan Monnier - - * font-lock.el (font-lock-add-keywords): In case font-lock was only - half-activated, forcefully activate it completely. - -2007-06-11 Richard Stallman - - * cus-edit.el (custom-variable-type): Doc fix. - -2007-06-09 Alfred M. Szmidt (tiny change) - - * mail/rmail.el (rmail-movemail-variant-in-use): Fix doc typo. - -2007-06-09 Davis Herring - - * desktop.el (desktop-minor-mode-table): Doc fix. - -2007-06-08 Chong Yidong - - * image-mode.el (image-forward-hscroll, image-backward-hscroll) - (image-next-line, image-previous-line, image-scroll-up) - (image-scroll-down, image-bol, image-eol, image-bob, image-eob): - New functions. - (image-mode-map): Remap motion commands. - (image-mode-text-map): New keymap for viewing images as text. - (image-mode): Use image-mode-map. - (image-toggle-display): Toggle auto-hscroll-mode and mode keymaps. - -2007-06-07 Michael Albinus - - Sync with Tramp 2.0.56. - - * net/tramp.el: - * net/tramp-ftp.el: - * net/tramp-smb.el: - * net/tramp-util.el: - * net/tramp-vc.el: - Don't load cl.el, because that pollutes the namespace. Replace cl - macros by their implementations where necessary. Requested by - Richard Stallman . - - * net/tramp.el (top): Make `set-buffer-multibyte' an alias if it - doesn't exist. - (with-parsed-tramp-file-name): Protect debug spec during compilation. - (tramp-handle-insert-directory): Check (featurep 'ls-lisp). - (tramp-file-name-p, tramp-file-name-multi-method) - (tramp-file-name-method, tramp-file-name-user) - (tramp-file-name-host, tramp-file-name-localname): New defuns, - replacing defstruct `tramp-file-name'. - (tramp-handle-file-remote-p, tramp-completion-dissect-file-name1) - (tramp-dissect-file-name, tramp-dissect-multi-file-name): - Apply `vector' instead of `make-tramp-file-name'. - (tramp-handle-make-auto-save-file-name): - Apply `tramp-temporary-file-directory' for compatibility reasons. - (tramp-completion-mode): Use `natnump' instead of `wholenump' - because of XEmacs. - (tramp-completion-mode): `last-input-event' is nil when XEmacs is - started. - -2007-06-07 David Kastrup - - * dired.el (dired-recursive-deletes, dired-recursive-copies): - Change default to `top'. - -2007-06-07 Chong Yidong - - * dired.el (dired-mode-map): Remove spurious separator. - -2007-06-07 Juanma Barranquero - - * progmodes/ebrowse.el (ebrowse-draw-file-member-info): Doc fix. - - * progmodes/mixal-mode.el (mixal-operation-codes-alist): - * progmodes/idlwave.el (idlwave-one-key-select): Fix typo in docstring. - -2007-06-07 Alfred M. Szmidt (tiny change) - - * mail/rmailsum.el (rmail-summary-save-buffer): New command. - (rmail-summary-mode-map): Add rmail-summary-save-buffer. - -2007-06-07 Juanma Barranquero - - * progmodes/ebrowse.el (ebrowse-member-table): - * textmodes/org.el (org-export-ascii-bullets): Fix typos in docstrings. - -2007-06-06 Juanma Barranquero - - * pgg.el (pgg-sign-region, pgg-sign): - * ses.el (ses-call-printer): - * calendar/icalendar.el (icalendar--diarytime-to-isotime): - * textmodes/org.el (org-cycle): Fix typos in docstrings. - -2007-06-06 Eli Zaretskii - - * tar-mode.el (tar-header-block-summarize, tar-summarize-buffer) - (tar-get-descriptor): Handle type 55, an extended pax header. - -2007-06-06 Stefan Monnier - - * textmodes/css-mode.el: New file. - -2007-06-06 Michael Albinus - - * net/socks.el: New file, taken from w3 repository. - (top): Update Copyright. Don't load cl.el. - (all): Replace `case' by `cond', `string-to-int' by - `string-to-number', and `process-kill-without-query' by - `set-process-query-on-exit-flag'. - (socks-char-int): Remove defalias and all occurrences. - -2007-06-06 Juanma Barranquero - - * international/mule-cmds.el (toggle-enable-multibyte-characters) - (sort-coding-systems, search-unencodable-char): Doc fixes. - (coding-system-change-eol-conversion, set-default-coding-systems) - (prefer-coding-system, find-multibyte-characters, princ-list) - (leim-list-entry-regexp, set-input-method, locale-language-names) - (input-method-exit-on-first-char, exit-language-environment-hook) - (locale-charset-language-names): Fix typos in docstrings. - -2007-06-05 Juanma Barranquero - - * bs.el (bs-cycle-previous): Don't modify the cycle list until - `switch-to-buffer' has returned succesfully. - (bs-cycle-next): Ditto. Also, don't bury the buffer when the - window is dedicated (it could iconify the frame). - -2007-06-05 Glenn Morris - - * files.el (auto-mode-alist): Open `.asd' files in lisp-mode. - -2007-06-05 Chong Yidong - - * files.el (auto-mode-alist): Add lower-priority match for names - like ChangeLog.old. - -2007-06-04 Andreas Schwab - - * emacs-lisp/sregex.el (sregexq): Fix doc string quoting. - -2007-06-04 Davis Herring - - * calendar/timeclock.el: Update version number. - (timeclock-modeline-display): Mention timeclock-use-display-time - in explanatory message. - (timeclock-log): Suppress warnings when finding the log. - Don't check for a nil project twice. Run hooks after killing the - buffer (if applicable). - (timeclock-geometric-mean): Rename to `timeclock-mean' (it never - was geometric). All uses changed. - (timeclock-generate-report): Support prefix argument. - -2007-06-04 Micha,Ak(Bl Cadilhac - - * man.el (Man-next-section): Don't consider the last line of the - page as being part of any section. - -2007-06-04 Martin Rudalics - - * hilit-chg.el (highlight-changes-rotate-faces): Don't set - modified flag of buffer. Use `inhibit-modification-hooks'. - -2007-06-04 Katsumi Yamaoka - - * mail/mail-extr.el (mail-extract-address-components): - Recognize non-ASCII characters except for NBSP as words. - -2007-06-04 Ryan Yeske - - * net/webjump.el (webjump-sample-sites): Add Wikipedia query. - -2007-06-04 Michael Olson - - * emacs-lisp/tq.el (tq-queue-pop): Stifle error when a process has - died and we are trying to send a signal to it. - -2007-06-04 Juanma Barranquero - - * emacs-lisp/easy-mmode.el (define-minor-mode) - (easy-mmode-define-navigation): Fix typos in docstrings. - - * progmodes/compile.el (compilation-find-file, compilation-handle-exit): - Fix typos in docstrings. - (compilation-search-path, compilation-buffer-name-function): Doc fixes. - (compilation-finish-function): Fix typo in obsolescence declaration. - - * progmodes/idlwave.el (idlwave-routines): Fix typo in docstring. - -2007-06-04 Chong Yidong - - * files.el (magic-mode-alist): Remove image-type-auto-detected-p. - (magic-fallback-mode-alist): Add image-type-auto-detected-p. - - * image.el (image-type-auto-detected-p): Don't scan auto-mode-alist. - - * longlines.el (longlines-mode): Make longlines-auto-wrap - buffer-local. Add hooks unconditionally. - (longlines-auto-wrap): Toggle wrapping. - (longlines-after-change-function) - (longlines-post-command-function): Check longlines-auto-wrap. - -2007-06-02 Chong Yidong - - * Version 22.1 released. - -2007-06-01 Chong Yidong - - * paren.el (show-paren-function): Undo 2007-04-19 and 2007-04-20 - changes. - -2007-05-31 Richard Stallman - - * dired.el (dired-do-delete, dired-do-flagged-delete): Doc fixes. - -2007-05-29 Martin Rudalics - - * textmodes/table.el (table--point-entered-cell-function) - (table--point-left-cell-function): - Bind `inhibit-point-motion-hooks' to t. - -2007-05-29 Nikolaj Schumacher (tiny change) - - * emacs-lisp/rx.el (rx): Doc fix. - -2007-05-28 Chong Yidong - - * textmodes/sgml-mode.el (sgml-point-entered): Use condition-case. - -2007-05-27 Tetsurou Okazaki (tiny change) - - * log-edit.el (log-edit-changelog-paragraph): Return point-max - as the end of the ChangeLog paragraph when it ends without a line - termination. - -2007-05-25 Stefan Monnier - - * textmodes/fill.el (canonically-space-region): Make the second arg - a marker if it's not already the case. - - * xt-mouse.el (xterm-mouse-truncate-wrap): New function. - (xterm-mouse-event): Use it. - -2007-05-25 Miles Bader - - * vc-hooks.el (vc-find-root): Fix file attribute test. - -2007-05-24 Richard Stallman - - * textmodes/flyspell.el (flyspell-correct-word-before-point): - Don't let opoint be nil. - (flyspell-emacs-popup): Explicit error if no dialogs. - -2007-05-23 Eli Zaretskii - - * tar-mode.el (tar-file-name-handler): New function. - (tar-extract): Bind file-name-handler-alist to it to force - find-buffer-file-type-coding-system behave as if the file being - extracted existed. Use last-coding-system-used to force - buffer-file-coding-system to what decode-coding-region actually - used to decode the file. - -2007-05-23 Nikolaj Schumacher (tiny change) - - * progmodes/compile.el (compilation-handle-exit): - `compilation-finish-function' may change the current buffer. - -2007-05-22 Richard Stallman - - * files.el (set-auto-mode): Doc fix. - -2007-05-22 Eli Zaretskii - - * dos-w32.el (find-buffer-file-type-coding-system): Doc fix. - -2007-05-21 Trent Buck (tiny change) - - * net/rcirc.el (rcirc-fill-column): Allow `window-width'. - (rcirc-print): Handle `window-width'. - (rcirc-buffer-maximum-lines): Doc fix. - -2007-05-19 Kevin Ryde - - * info.el (Info-fontify-node): Match https also. - -2007-05-18 Richard Stallman - - * simple.el (push-mark): Doc fix. - -2007-05-18 Rob Riepel - - * emulation/tpu-edt.el (CSI-map, SS3-map): Move from global-map to - tpu-global-map. - (tpu-original-global-map): Delete variable. - (tpu-control-keys-map): New keymap variable. - (tpu-set-control-keys): Use tpu-reset-control-keys rather than - setting keymapping directly. - (tpu-reset-control-keys): Use tpu-control-keys-map instead of - tpu-global-map. - (tpu-edt-on): Activate the tpu-global-map. - (tpu-edt-off): Deactivate the tpu-global-map. - -2007-05-18 Ryan Yeske - - * textmodes/ispell.el (ispell-get-word): Return markers - for start and end positions. - (ispell-word): Assume END is a marker. - -2007-05-17 Vinicius Jose Latorre - - * ps-print.el: Use default color when foreground or background color - are unspecified. Reported by Leo . - (ps-print-version): New version 6.7.4. - (ps-rgb-color): New argument. Use default color when color is - unspecified. - (ps-begin-job): Fix code. - -2007-05-17 Martin Rudalics - - * textmodes/ispell.el (ispell-start-process): Defend against bad - default-directory. - -2007-05-17 Stefan Monnier - - * vc-hooks.el (vc-find-root): Stop searching when the user changes. - -2007-05-16 Richard Stallman - - * buff-menu.el (Buffer-menu-sort-column): Doc fix. - -2007-05-16 Stefan Monnier - - * files.el (magic-mode-alist, magic-fallback-mode-alist): - Move the *ml, Postscript, and XmCD entries to the fallback part. - - * files.el (magic-fallback-mode-alist): - Rename from file-start-mode-alist. - -2007-05-16 Nikolaj Schumacher (tiny change) - - * progmodes/compile.el (compilation-handle-exit): Quote first - argument of `run-hook-with-args'. - -2007-05-16 Juanma Barranquero - - * buff-menu.el (Buffer-menu-sort-column): - * dabbrev.el (dabbrev-upcase-means-case-search): - * dired.el (dired-recursive-deletes, dired-recursive-copies): - * info.el (Info-current-subfile): - * ls-lisp.el (ls-lisp-verbosity): - * msb.el (msb-menu-cond): - * pcvs.el (cvs-dired-use-hook): - * simple.el (set-mark-command-repeat-pop): - * time.el (display-time-24hr-format, display-time-mail-file): - Doc fixes. - - * tutorial.el (get-lang-string, tutorial--find-changed-keys): - * printing.el (pr-ps-fast-fire): Fix typos in docstrings. - - * view.el (view-inhibit-help-message): Fix typo in docstring. - (view-scroll-auto-exit, view-try-extend-at-buffer-end): Doc fixes. - -2007-05-14 Eli Zaretskii - - * mail/rmail.el (rmail-convert-to-babyl-format): - Check content-transfer-encoding _last_, because we need its position - in base64-header-field-end. - -2007-05-14 Juanma Barranquero - - * files.el (mode-require-final-newline, require-final-newline) - (enable-local-variables, enable-local-eval): Doc fixes. - -2007-05-10 Edward O'Connor (tiny change) - - * progmodes/python.el (python-font-lock-keywords) - (python-open-block-statement-p, python-mode): Add support for the new - "with" keyword. - -2007-05-10 Richard Stallman - - * international/iso-cvt.el (iso-cvt-read-only): Ignore arguments. - (iso-cvt-write-only): Likewise. - - * emacs-lisp/easy-mmode.el (define-minor-mode): - Fix generated doc string. - - * startup.el (fancy-splash-text): Add URL of guided tour. - Adjust horizontal and vertical whitespace. - - * progmodes/compile.el (compilation-handle-exit): - Use run-hook-with-args to run compilation-finish-functions. - - * files.el (file-start-mode-alist): New variable. - (magic-mode-regexp-match-limit): Doc fix. - (set-auto-mode): Handle file-start-mode-alist. - A little cleanup of structure. - -2007-05-10 Davis Herring - - * calendar/timeclock.el (timeclock-in): Fix non-interactive - workday specifications. - (timeclock-log): Don't kill the log buffer if it already existed. - -2007-05-08 Richard Stallman - - * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook): - Don't include non-self-insert commands in the exception for `-'. - -2007-05-08 David Reitter - - * progmodes/python.el (python-guess-indent): Check non-nullness - before comparing indent against the 2..8 interval. - -2007-05-07 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-ts-unicode-for-key-event): Check if text is - available. - -2007-05-06 Richard Stallman - - * emacs-lisp/eldoc.el (turn-on-eldoc-mode): Doc fix. - -2007-05-03 Ryan Yeske - - * net/rcirc.el (rcirc-timeout-seconds): Increase to prevent unwanted - disconnections. - -2007-05-01 Romain Francoise - - * dired-x.el: Revert 2007-04-06 change. - -2007-04-30 Nick Roberts - - * progmodes/gud.el (gud-menu-map): Pdb can't handle SIGINT so - don't put stop on toolbar. - -2007-04-29 Stephen Berman - - * find-dired.el (find-dired-filter): Propertize all text down to eob. - -2007-04-29 Richard Stallman - - * international/mule.el (auto-coding-alist): Add pdf => no-conversion. - -2007-04-28 Stefan Monnier - - * progmodes/cc-mode.el (c-before-change): Use point-min rather - than 1. - -2007-04-28 Richard Stallman - - * progmodes/sh-script.el (sh-mode): Recognize .profile as sh style. - -2007-04-28 Stefan Monnier - - * vc-hooks.el (vc-ignore-dir-regexp): Add /.../ for the DFS filesystem. - -2007-04-28 Eli Zaretskii - - * makefile.w32-in ($(lisp)/mh-e/mh-loaddefs.el): Use ./mh-e - instead of $(lisp)/mh-e. - - * textmodes/fill.el (fill-paragraph): Doc fix. - -2007-04-28 Glenn Morris - - * image-dired.el (image-dired-cmd-create-thumbnail-options) - (image-dired-cmd-create-temp-image-options): Replace option - +profile "*" with -strip. - -2007-04-27 Chong Yidong - - * textmodes/flyspell.el (flyspell-auto-correct-previous-word): - Use window-start and window-end. - -2007-04-26 Glenn Morris - - * progmodes/python.el: Restore file pending consideration of legal - status. - -2007-04-26 Luc Teirlinck - - * locate.el (locate-in-alternate-database): Doc fix. - -2007-04-26 Glenn Morris - - * button.el (button): Use underline if supported, else fall back - to color. - -2007-04-25 Richard Stallman - - * hi-lock.el (hi-lock-file-patterns-policy): Default to `ask'. - -2007-04-25 J.D. Smith - - * progmodes/idlwave.el (idlwave-beginning-of-subprogram) - (idlwave-end-of-subprogram): Take optional NOMARK arg to prevent - pushing mark. - (idlwave-current-routine): Don't push mark. - -2007-04-25 Mathias Dahl - - * image-dired.el (image-dired-display-image): Derive image-type from - filename rather than assuming jpeg, in case no resizing was needed. - -2007-04-25 Johan Bockg,Ae(Brd - - * custom.el (defface): Doc fix. - -2007-04-24 Chong Yidong - - * progmodes/python.el: Remove due to unclear legal issues. - -2007-04-24 J.D. Smith - - * progmodes/idlw-shell.el (idlwave-shell-clear-all-bp): - Don't re-query for each cleared BP. - (idlwave-shell-clear-bp): Optionally skip BP query. - (idlwave-shell-update-bp-overlays): Use set-window-margins instead - of set-window-buffer, which incorrectly moves displayed region. - -2007-04-23 Jay Belanger - - * calc/calc.el (calc-bug-address): Update maintainer's address. - * calc/*: Update maintainer's address. - -2007-04-23 Richard Stallman - - * simple.el (set-mark-command-repeat-pop): Doc fix. - Put in `editing-basics' group. - -2007-04-23 Chong Yidong - - * info.el (Info-mouse-scroll-up, Info-mouse-scroll-down): - New functions. - (Info-mode-line-node-keymap): Bind mouse commands to - Info-mouse-scroll-up/down instead of Info-scroll-up/down. - -2007-04-23 Luc Teirlinck - - * locate.el (locate-local-prompt): New var. - (locate-prompt-for-command): Doc fix. - (locate-prompt-for-search-string): New function. - (locate): New optional arg. Make locate-local-prompt - buffer-local. Use locate-prompt-for-search-string. - (locate-with-filter): New optional arg. - Use locate-prompt-for-search-string. - (locate-update): Bind locate-prompt-for-command. - -2007-04-23 Glenn Morris - - * files.el (magic-mode-alist): ` - - * button.el (button): Inherit from link face on a tty. - -2007-04-23 Glenn Morris - - * button.el (button): Use color for this face on a tty. - - * files.el (magic-mode-alist): Allow for carriage-returns in - html-mode and sgml-mode entries. - -2007-04-22 Richard Stallman - - * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): - Improve doc string of generated command. - - * subr.el (read-number): Catch errors. - - * hi-lock.el (hi-lock-file-patterns-policy): Doc fix. - -2007-04-22 Chong Yidong - - * image-dired.el: Rename from thumbnails.el. All instances of - "thumbnails" replaced with "image-dired". - - * dired.el (dired-mode-map): Rename "thumbnails" again, to - "image-dired". - -2007-04-22 Kim F. Storm - - * ido.el (ido-kill-buffer-at-head, ido-delete-file-at-head): - Don't use kill-line. - -2007-04-22 Nick Roberts - - * t-mouse.el (t-mouse-make-event): Pass on mev's more informative - error message. - -2007-04-22 Chong Yidong - - * dired.el: Rename "tumme" to "thumbnails". - - * thumbnails.el: Rename from tumme.el. All instances of "tumme" - replaced with "thumbnails". - -2007-04-22 Glenn Morris - - * hi-lock.el (hi-lock-file-patterns-policy): Make it a defcustom, - and give it the risky-local-variable property. - - * textmodes/flyspell.el (flyspell-define-abbrev): Downcase abbrev - before defining it. - -2007-04-21 Martin Rudalics - - * progmodes/cc-mode.el (c-remove-any-local-eval-or-mode-variables): - Use delete-region instead of kill-line. - -2007-04-21 Alan Mackenzie - - * progmodes/cc-cmds.el (c-electric-slash): Replace wrong use of - `kill-region' by `delete-region'. - -2007-04-21 Chong Yidong - - * progmodes/perl-mode.el (perl-indent-command): Use delete-region - instead of kill-region. - - * progmodes/mantemp.el (mantemp-make-mantemps-region) - (mantemp-insert-cxx-syntax, mantemp-sort-and-unique-lines) - (mantemp-remove-memfuncs): Use delete-region instead of kill-word - and kill-line. - - * progmodes/vhdl-mode.el (vhdl-template-type) - (vhdl-template-record, vhdl-template-nature) - (vhdl-template-configuration-spec, vhdl-template-component-inst) - (vhdl-template-break, vhdl-regress-line, vhdl-electric-tab): - Use delete-region instead of kill-word and kill-line. - -2007-04-21 Johan Bockg,Ae(Brd - - * dired-x.el (dired-virtual-mode): Doc fix. - -2007-04-21 Richard Stallman - - * font-lock.el (font-lock-keywords-alist): Mark as risky. - - * subr.el (read-number): Doc fix. - - * simple.el (pop-to-mark-command): Display message "mark popped" - if point does not move. - (set-mark-command): Doc fix. - -2007-04-21 Luc Teirlinck - - * locate.el: Revert 2006-09-09 and 2007-04-20 changes. - (locate-local-filter, locate-local-search): New vars. - (locate): Make variables local. - (locate-update): Bind locate-buffer-name. Call locate using - locate-local-filter and locate-local-search. - -2007-04-20 David Koppelman - - * hi-lock.el (hi-lock-file-patterns-policy): New var. - (hi-lock-find-patterns): Use hi-lock-file-patterns-policy. - (hi-lock-mode): Update docstring. - -2007-04-20 Stefan Monnier - - * textmodes/fill.el (fill-move-to-break-point): Don't inhibit - fill-nobreak-predicate when the break is past fill-column. - -2007-04-20 Francesco Potort,Al(B - - * locate.el (locate): Output from shell-command should go in the - current buffer rather than *Shell Command Output*. - -2007-04-20 Chong Yidong - - * paren.el (show-paren-function): Fix last fix. - -2007-04-19 Kevin Ryde - - * arc-mode.el (archive-find-type): lzh-exe for lzh self-extracting exe. - (archive-lzh-summarize): Add optional start arg for where to start - looking at the archive. - (archive-lzh-exe-summarize, archive-lzh-exe-extract): New functions. - - * international/mule.el (auto-coding-alist): no-conversion for .exe - and .EXE. - -2007-04-19 Alan Mackenzie - - * progmodes/cc-cmds.el (c-in-function-trailer-p): Fix this: when a - function return type contains "struct", "union", etc. - c-end-of-defun goes too far forward. - -2007-04-19 Chong Yidong - - * paren.el (show-paren-function): Reset window-start to avoid - recentering. - -2007-04-19 Glenn Morris - - * calendar/todo-mode.el: Fix typo: "threshhold" -> "threshold". - -2007-04-18 Glenn Morris - - * calendar/diary-lib.el (diary-header-line-format): Add a custom - :set function. - (diary-list-entries): Only switch to diary-mode from - default-major-mode (reverts 2007-03-21 change). Otherwise, if in - diary-mode set header-line-format, in case of any customization. - -2007-04-18 Levin Du (tiny change) - - * calendar/parse-time.el (parse-time-string-chars): Check if CHAR - is less than the length of parse-time-syntax. - -2007-04-17 David Kastrup - - * replace.el (query-replace-regexp-eval): Deprecate. - -2007-04-17 Alan Mackenzie - - * progmodes/cc-cmds.el (c-beginning-of-defun): With -ve arg and - point too close to EOB, leave point at EOB rather than last `}'. - -2007-04-17 Roland Winkler - - * textmodes/bibtex.el (bibtex-include-OPTkey) - (bibtex-user-optional-fields, bibtex-entry-field-alist): - Fix defcustom. - -2007-04-17 Glenn Morris - - * calendar/cal-dst.el (calendar-dst-find-startend): If YEAR cannot - be encoded, fall back to current year. - -2007-04-14 Kevin Ryde - - * arc-mode.el (archive-lzh-summarize): Only apply the "downcase if - all upcase" rule to OS-ID 0 "generic". Always downcase for OS-ID - M "MSDOS". - -2007-04-16 Chong Yidong - - * progmodes/python.el (python-end-of-block): Avoid looping forever - if python-next-statement fails. - -2007-04-16 Roland Winkler - - * textmodes/bibtex.el (bibtex-entry-field-alist): Use defcustom. - -2007-04-16 Dan Nicolaescu - - * progmodes/perl-mode.el (perl-indent-level): Mark as safe local var. - * progmodes/cperl-mode.el (cperl-indent-level): Likewise. - -2007-04-15 Jay Belanger - - * calc/calc.el (calc-version): New function. - (calc-trail-mode): Shorten the title. - -2007-04-15 Chong Yidong - - * mail/footnote.el (footnote-style): Clarify docstring to state - that customizing this only applies to future footnotes. - -2007-04-15 Roland Winkler - - * textmodes/bibtex.el (bibtex-field-list): Use functionp. - (bibtex-make-field): Check that INIT is a string. Use functionp. - -2007-04-14 Glenn Morris - - * complete.el (PC-goto-end): New buffer-local variable. - (PC-do-completion-end): Make buffer-local. - (partial-completion-mode) : - Do not go to the end of the minibuffer if PC-goto-end is non-nil. - (PC-do-completion): New optional fourth argument GOTO-END. Add a - doc string. Set PC-goto-end for choose-completion. - (PC-lisp-complete-symbol): Pass non-nil GOTO-END arg to - PC-do-completion. - - * textmodes/bibtex.el (bibtex-insert-kill): Pass non-nil NODELIM - arg to bibtex-make-field. - (bibtex-make-field): Add optional fourth arg NODELIM. - Insert delimiters around INIT unless this arg is non-nil. - -2007-04-14 Nick Roberts - - * tmm.el (tmm-get-keybind): Use copy-sequence to ensure that the - global map isn't modified. - -2007-04-14 Glenn Morris - - * calendar/appt.el (appt-disp-window): Do not split small windows. - Suggested by Jeff Miller . - -2007-04-13 Chong Yidong - - * progmodes/compile.el (compilation-start): Revert 2007-03-25 change. - - * files.el: Ditto. - -2007-04-13 Juanma Barranquero - - * cus-edit.el (minibuffer, auto-save): Fix typos in docstrings. - - * term.el (term-buffer-maximum-size, term-exec, term-escape-char) - (term-set-escape-char, term-termcap-format, term-get-old-input-default) - (term-skip-prompt, term-send-string, term-send-region, term-pager-page) - (term-pager-help): Fix typos in docstrings. - - * wid-edit.el (widget-documentation): Fix typo in docstring. - - * progmodes/ebnf2ps.el (ebnf-insert-style, ebnf-merge-style): - Fix typos in error messages. - -2007-04-13 Martin Rudalics - - * emacs-lisp/edebug.el (edebug-pop-to-buffer): Don't select - window marked as dedicated. - - * mail/footnote.el (footnote-latin-string): New variable. - (footnote-latin-regexp): Redefine as regexp alternative. - (Footnote-latin): Use footnote-latin-string instead of - footnote-latin-regexp. - -2007-04-13 Glenn Morris - - * tmm.el (tmm-get-keybind): Use car-safe to avoid errors with - inherited keymaps. - -2007-04-12 Chong Yidong - - * outline.el (outline-get-next-sibling): Clarify docstring. - (outline-get-last-sibling): Handle case where we are at the first - heading. Clarify docstring. - -2007-04-12 Nick Roberts - - * progmodes/gud.el (gud-minor-mode-map): Make go button same - length as stop button to lessen flicker. - (jdb): Add gud-print. - (gud-find-expr): Jdb prints the expression with the value, so - don't insert it in the output. - -2007-04-11 Jason Rumney - - * dnd.el (dnd-get-local-file-name): Decode both upper and lower - case hex. Do not try to decode non-hex letters. - -2007-04-11 Markus Triska - - * emacs-lisp/byte-opt.el (byte-optimize-backward-char) - (byte-optimize-backward-word): Remove (move to bytecomp.el). - (byte-optimize-form-code-walker): Evaluate pure function calls if - possible. - (byte-optimize-all-constp): New function. - - * emacs-lisp/bytecomp.el (byte-compile-char-before): - Improve numeric argument case. - (byte-compile-backward-char, byte-compile-backward-word): - New functions, performing rewriting previously done in byte-opt.el. - Fix their "Fixme" item (restriction to numeric arguments). - -2007-04-11 Stefan Monnier - - * desktop.el (desktop-save, desktop-create-buffer): Replace mapcar - with dolist. - (after-init-hook): Don't quote lambda. - (desktop-first-buffer): Don't wrap it in eval-when-compile. - (desktop-internal-v2s): Remove unused var `el'. - (desktop-buffer-major-mode, desktop-buffer-locals): Move out of - desktop-restore-file-buffer. - (desktop-buffer-ok-count, desktop-buffer-fail-count): Move out of - desktop-create-buffer. - -2007-04-10 Chong Yidong - - * woman.el (woman-decode-buffer): Postpone macro-set check... - (woman-decode-region): ...to here. - -2007-04-10 Thien-Thi Nguyen - - * startup.el (tty-handle-args): Use %S to log ARGS. - -2007-04-10 Glenn Morris - - * dframe.el (dframe-frame-mode): Do not set auto-show-mode, since - it is obsolete and has no effect. - - * dos-w32.el (default-buffer-file-type): Add defvar to quieten - byte-compiler. - - * progmodes/cperl-mode.el (cperl-mode): Remove unnecessary call to - obsolete function make-local-hook. - - * progmodes/dcl-mode.el (top-level): Move (require 'tempo) to - start to quieten byte-compiler. - -2007-04-10 Markus Triska - - * emacs-lisp/byte-opt.el (byte-optimize-char-before): Remove (move - to bytecomp.el as byte-compile-char-before). - * emacs-lisp/bytecomp.el (byte-compile-char-before): - New function (modified replacement for byte-optimize-char-before in - byte-opt.el). - -2007-04-09 Alan Mackenzie - - * startup.el (inhibit-splash-screen): Emphatically state that it - can't be set in site-start.el. - -2007-04-09 Masatake YAMATO - - * progmodes/cc-subword.el (c-capitalize-subword): More closely - mimic the behavior of `capitalize-word'. Do not move point with a - negative argument. Based on tiny change by Paul Curry. - -2007-04-09 Paul Curry (tiny change) - - * progmodes/cc-subword.el (c-downcase-subword, c-upcase-subword): - Don't move point if ARG is negative. - -2007-04-09 Alan Mackenzie - - Changes to make `narrow-to-defun' and `mark-defun' work properly - in CC Mode: - - * progmodes/cc-defs.el (c-beginning-of-defun-1): - * progmodes/cc-cmds.el (c-beginning-of-defun, c-end-of-defun): - Bind beginning/end-of-defun-function to nil around calls to - beginning/end-of-defun. - - * progmodes/cc-langs.el (beginning-of-defun-function) - (end-of-defun-function): New c-lang-setvar's. - - * progmodes/cc-awk.el (c-awk-beginning-of-defun): Add "(or arg - (setq arg 1))" to enable non-interactive call. - -2007-04-09 Eli Zaretskii - - * simple.el (set-mark-command): Doc fix. - -2007-04-09 Nick Roberts - - * progmodes/gud.el (gdb): Restore existing session if user - tries to start a second one in graphical mode. - -2007-04-08 Martin Rudalics - - * cus-start.el : Add choices. - -2007-04-08 Johan Bockg,Ae(Brd - - * term/xterm.el (terminal-init-xterm): Fix key definitions. - Add binding for C-M-SPC. - -2007-04-08 Richard Stallman - - * pcomplete.el (pcomplete-read-event): One single definition, - and not a defsubst. - -2007-04-08 Chong Yidong - - * progmodes/cc-cmds.el (c-end-of-defun): Tidy up, to eliminate - byte-compiler warning "value unused". - -2007-04-08 Andreas Schwab - - * term/xterm.el (terminal-init-xterm): Add bindings for keypad keys. - -2007-04-07 Glenn Morris - - * calendar/calendar.el (diary-font-lock-keywords, diary-live-p): - Autoload these functions. - (diary-date-forms): Add a custom :set form. - - * calendar/diary-lib.el (diary-set-maybe-redraw): Move definition - before first use. - (diary-font-lock-keywords): New function with old code for - initialization of variable of same name. - -2007-04-07 David Hansen (tiny change) - - * progmodes/cc-cmds.el (c-electric-paren): Fix space-before-funcall - clean-up: only insert space when on identifier, etc. - -2007-04-07 Chong Yidong - - * progmodes/grep.el (grep-find-use-xargs): Rewrite docstring. - - * net/tls.el (open-tls-stream): Properly handle case where there - is no associated buffer. - -2007-04-07 Glenn Morris - - * ffap.el (ffap-file-at-point): Lower the priority of the - ffap-ftp-sans-slash-regexp check. - -2007-04-06 Alan Mackenzie - - Fix fontification of labels, and other things with ":". - - * progmodes/cc-engine.el (c-forward-label): The function now - returns 'goto-target, 'qt-2kwds-colon, 'qt-1kwd-colon, as well as - the former t. - - * progmodes/cc-fonts.el (c-font-lock-declarations): Interpret the - new return code from c-forward-label, fontifying tokens properly. - Add some general comments throughout the file. - -2007-04-06 Chong Yidong - - * textmodes/flyspell.el (flyspell-duplicate, flyspell-incorrect): - Revert 2006-01-27 change. - - * diff-mode.el (diff-mode): Revert 2007-03-04 change. - - * menu-bar.el (menu-bar-tools-menu): Revert 2003-07-25 change. - - * desktop.el (desktop-create-buffer, desktop-save): - Revert 2004-11-12 change for lack of copyright papers. - - * dired-x.el (dired-guess-shell-case-fold-search): Delete var. - (dired-guess-default): Respect case. - - * isearch.el (isearch-forward): Revert 1998-08-26 doc change. - - * emacs-lisp/byte-opt.el (byte-optimize-pure-func): Remove function; - was originally checked in as byte-optimize-concat on 1997-11-02. - - * mail/sendmail.el (mail-text, mail-mode): Revert extant pieces of - 1995-05-19 doc changes. - -2007-04-06 Kim F. Storm - - * loadhist.el (read-feature): Reimplement. New optional arg LOADED-P. - (unload-feature): Update interactive spec accordingly. - - * progmodes/grep.el (grep-program): Remove commentary about zgrep. - -2007-04-06 John Paul Wallington - - * subr.el (with-case-table): Use `make-symbol' to avoid variable - capture. Restore the table in the same buffer. - - * font-lock.el (lisp-font-lock-keywords-2): Add `with-case-table'. - -2007-04-05 Chong Yidong - - * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): - Print entire form. - -2007-04-05 Nick Roberts - - * progmodes/gdb-ui.el (breakpoint-disabled): Tweak face (again) - for low-color displays. - -2007-04-05 Glenn Morris - - * play/5x5.el, play/animate.el, play/dissociate.el, play/doctor.el, - * play/gomoku.el, play/landmark.el, play/tetris.el, play/zone.el: - Seed random number generator on loading. - - * emacs-lisp/authors.el (top-level): Provide self. - - * play/animate.el (top-level): Provide self. - -2007-04-04 Alan Mackenzie - - * progmodes/cc-vars.el (c-special-indent-hook): Amend doc-string - to mention c-syntactic-indentation. - -2007-04-04 Chong Yidong - - * subr.el (with-case-table): New macro. - - * international/mule.el (ascii-case-table): New var. - - * mail/smtpmail.el (smtpmail-via-smtp): Use ascii-case-table when - downcasing. - -2007-04-03 Nick Roberts - - * progmodes/gud.el (gud-minor-mode-map): Simplify. - - * t-mouse.el (t-mouse-make-event-element): Don't use the left edge - of the window if we're outside it e.g menu-bar. - - * xt-mouse.el (xterm-mouse-event): Don't use the left edge of the - window if we're outside it e.g menu-bar. - -2007-04-03 Eli Zaretskii - - * mail/rmail.el (rmail-convert-to-babyl-format): Don't try to - decode base-64 encoded body if its content-type is something other - than text/* or message/*. - -2007-04-03 Juanma Barranquero - - * simple.el (activate-mark-hook): Fix typo in docstring. - -2007-04-03 Nick Roberts - - * tmm.el (tmm-c-prompt): Initialize. - (tmm-menubar): Deal with extended menu-items at top level. - (tmm-get-keybind): Handle bindings redefined/undefined locally. - (tmm-prompt): Handle visibility of top level menu-items. - - * progmodes/gud.el (gud-menu-map): Simplify. - (gud-minor-mode-map): Add tool-bar like bindings to the text mode - menubar. - -2007-04-02 Chong Yidong - - * mail/smtpmail.el (smtpmail-via-smtp): Revert last change. - - * comint.el (comint-send-input): Widen the buffer first. - - * info.el (Info-fontify-maximum-menu-size): Revert to 100000. - -2007-04-01 Stefan Monnier - - * emacs-lisp/lisp-mode.el (lisp-fill-paragraph): Only obey - emacs-lisp-docstring-fill-column in emacs-lisp-mode. - - * newcomment.el (comment-search-forward): Discard comment starters - before point. - -2007-04-01 Guanpeng Xu - - * mouse.el (mouse-set-secondary): Update mouse-secondary-overlay. - -2007-04-01 Chong Yidong - - * mail/smtpmail.el (smtpmail-via-smtp): Use standard case table - when downcasing. - - * button.el (previous-button): Rewrite to account for adjacent buttons. - -2007-04-01 J.D. Smith - - * progmodes/idlwave.el (idlwave-auto-fill): - Revert paragraph-separate change. - - * progmodes/idlw-shell.el (idlwave-shell-break-in): - Simplify module calc. - (idlwave-shell-set-bp-in-module): Compute module. - -2007-03-31 Glenn Morris - - * emacs-lisp/timer.el (run-at-time): Doc fix. - - * emacs-lisp/warnings.el (display-warning): If we create the - buffer displaying the warning, disable undo there. - -2007-03-31 Michael Albinus - - * net/tramp.el (tramp-register-file-name-handler) - (tramp-register-completion-file-name-handler): New defsubst, - derived from `tramp-register-file-name-handlers'. The split is - necessary because Tramp's file name handlers must be registered at - different startup places. - -2007-03-31 Chong Yidong - - * progmodes/hideshow.el (turn-off-hideshow): New function. - (hs-minor-mode): Use it instead of a lambda expression in - change-major-mode-hook. - -2007-03-31 David Kastrup - - * woman.el (woman-Cyg-to-Win): Don't convert cons cells - corresponding to MANPATH_MAP entries. - (woman-man.conf-path, woman-parse-man.conf): Doc fix. - (woman-parse-man.conf): Use more discriminating man.conf name. - (woman-parse-man.conf): Parse MANPATH_MAP entries. - (woman-manpath): Doc fix and type fix. - (woman-cached-data): Check for MANPATH_MAP entries. - (woman-expand-directory-path): Treat MANPATH_MAP entries. - -2007-03-31 Stuart Herring - - * emacs-lisp/sregex.el (sregexq): Doc fix. - -2007-03-31 Markus Triska - - * flymake.el (flymake-err-line-patterns): Doc fix. - -2007-03-30 Reiner Steib - - * info.el (info-tool-bar-map): Use "exit" for Info-exit. - Move to the right. - -2007-03-30 Alan Mackenzie - - * progmodes/cc-cmds.el (c-forward-to-nth-EOF-}): Fix EOB bug. - -2007-03-30 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc--insert-new-node): Take additional arg DLL. - Use it, passed in explicitly, instead of from the dynamic binding. - (ewoc-create, ewoc-enter-before): Update to use new call sequence. - -2007-03-30 Juanma Barranquero - - * simple.el (blink-matching-open): When in minibuffer, don't - search for a match inside the prompt. - -2007-03-30 Nick Roberts - - * tmm.el (tmm-menubar): Select the right menu item with the mouse. - (tmm-prompt): Don't make the mouse user select the first menu - item twice. - -2007-03-30 Chong Yidong - - * eshell/esh-proc.el (eshell/kill): Tweak regexp to recognize - SIGUSR1 and SIGUSR2. - -2007-03-29 Kim F. Storm - - * ido.el (ido-read-internal): When reading file or dir, only override - minibuffer-local-filename-completion-map, otherwise only override - minibuffer-local-completion-map. - -2007-03-29 Glenn Morris - - * complete.el (partial-completion-mode): Set PC-do-completion-end - to nil after use. - (PC-lisp-complete-symbol): Create and use a marker at `end', - rather than using point-marker. - -2007-03-28 Chong Yidong - - * simple.el (next-error-highlight): Doc fix. - (compose-mail): Revert 2007-03-19 change. - -2007-03-28 Richard Stallman - - * emacs-lisp/edebug.el (edebug-display): Don't go to - edebug-outside-buffer if it is dead. - -2007-03-28 Juanma Barranquero - - * view.el (view-mode): Fix typos in docstring. - -2007-03-28 Stephen Berman - - * recentf.el (recentf-save-file): Add a custom :set function. - -2007-03-28 Glenn Morris - - * complete.el (PC-do-completion-end): New variable. - (partial-completion-mode) : - Use PC-do-completion-end in the non-minibuffer case to replace the - correct amount of text. - (PC-do-completion): Set PC-do-completion-end for c-c-s-f. - (PC-lisp-complete-symbol): Give marker the after-insertion type, - to deal with improvements inserted after point. - -2007-03-28 Stefan Monnier - - * button.el (make-text-button): Add explicit `button' property. - (default-button): Don't put a `button' property on it. - - * progmodes/python.el (python-mode): Skip comments when parsing. - - * vc-arch.el (vc-with-current-file-buffer): New macro. - (vc-arch-file-source-p): Use it to avoid infloop. - -2007-03-28 David Hansen (tiny change) - - * emacs-lisp/lisp.el (lisp-complete-symbol): - Fix call to get-buffer-window to find windows in other frames. - -2007-03-28 Stefan Monnier - - * comint.el (comint-proc-query, comint-dynamic-list-completions): - Fix calls to get-buffer-window to find windows in other frames. - Reported by David Hansen . - -2007-03-27 Kevin Ryde - - * info.el (Info-display-images-node): On a text-only terminal, - show the "text" or "alt" parts of the image blobs. - -2007-03-27 Glenn Morris - - * complete.el (PC-do-completion): Compute completion-base-size in - the non-filename case, rather than setting to nil. - (PC-lisp-complete-end): New variable. - (PC-lisp-complete-symbol): Use PC-lisp-complete-end to store the - original end in a series of consecutive invocations. - - * calendar/calendar.el (calendar-mode-hook): Declare it. - - * calendar/diary-lib.el (diary-live-p): Do not check for - diary-selective-display. - -2007-03-26 Stefan Monnier - - * replace.el (occur-next-error): *Occur* might not be displayed in the - selected frame. Reported by David Hansen . - -2007-03-26 Richard Stallman - - * textmodes/flyspell.el (flyspell-large-region): - Use ispell-call-process-region. - -2007-03-26 Johan Bockg,Ae(Brd - - * emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble): - Use prin1 instead of princ. - -2007-03-25 Chong Yidong - - * faces.el (face-set-after-frame-default): Revert 2007-03-10 change. - Merge in X resources before global face. - - * progmodes/compile.el (compilation-start): Save compilation-directory - rather than default-directory as local var. - (compilation-directory): Mark as safe local var. - - * files.el: Don't mark default-directory as a safe local var. - -2007-03-25 Alan Mackenzie - - * progmodes/cc-mode.el (c-before-change): Fix BOB bug. - * progmodes/cc-engine.el: Fix typo. - -2007-03-25 Juri Linkov - - * compare-w.el (compare-windows): Rename customization group - `compare-w' to `compare-windows'. - (compare-windows-whitespace, compare-ignore-whitespace) - (compare-ignore-case, compare-windows-sync) - (compare-windows-sync-string-size, compare-windows-recenter) - (compare-windows-highlight, compare-windows): Change group name in - the `group' tag from `compare-w' to `compare-windows'. - (compare-windows-sync): Add option `nil' for no sync. Doc fix. - -2007-03-24 Markus Triska - - * expand.el: Change example to always enable abbrev-mode, - and remove redundant `function'. - (expand-abbrev-hook): Add autoload cookie. - -2007-03-24 Ryan Yeske - - * emacs-lisp/testcover.el (testcover-start, testcover-end) - (testcover-mark-all, testcover-unmark-all): Add prompts to - interactive specs. - -2007-03-24 Jason Rumney - - * autorevert.el (find-file-hook, auto-revert-tail-mode): - Use file size in bytes for auto-revert-tail-pos not characters. - -2007-03-24 Thien-Thi Nguyen - - * vc-rcs.el (vc-rcs-annotate-command): - Set text property :vc-annotate-prefix on the annotation text. - (vc-rcs-annotate-time): Instead of searching for ": ", - search for end of text propertized with :vc-annotate-prefix. - -2007-03-24 Martin Rudalics - - * whitespace.el (top level): Remove calls putting - permanent-local nil property since these are no-ops. - - * man.el (Man-support-local-filenames): Assure that - default-directory exists when doing call-process. - -2007-03-23 David Vazquez (tiny change) - - * progmodes/m4-mode.el (m4-m4-buffer, m4-m4-region): - Fix omission bug: Use m4-program-options to construct shell command. - -2007-03-23 David Kastrup - - * progmodes/cc-mode.el (c-make-emacs-variables-local): - Use `mapcar' rather than `mapcan' to silence compiler warning. - -2007-03-22 Ralf Angeli - - * textmodes/reftex.el, textmodes/reftex-vars.el, - * textmodes/reftex-toc.el, textmodes/reftex-sel.el, - * textmodes/reftex-ref.el, textmodes/reftex-parse.el, - * textmodes/reftex-index.el, textmodes/reftex-global.el, - * textmodes/reftex-dcr.el, textmodes/reftex-cite.el, - * textmodes/reftex-auc.el: Add maintainer address. - -2007-03-22 Carsten Dominik - - * textmodes/org.el (org-agenda-mode, org-table-edit-formulas): - Make sure that `global-font-lock-mode' does not turn on font-lock - in these buffers. - -2007-03-21 Kim F. Storm - - * xt-mouse.el (xt-mouse-epoch): New variable. - (xterm-mouse-event): Use float-time. - -2007-03-21 Nick Roberts - - * xt-mouse.el (xterm-mouse-event): Compute a timestamp using - current-time. - -2007-03-21 Stefan Monnier - - * complete.el (read-file-name-internal): Don't add the final > if the - completion is not finished (re-application of this patch, which was - accidentally undone by Eli). - -2007-03-21 Chong Yidong - - * emulation/viper.el (viper-non-hook-settings): Handle mouse - clicks in describe-key and describe-key-briefly advice a little better. - -2007-03-21 Juanma Barranquero - - * server.el (server-process-filter): Cancel any pending isearch. - -2007-03-21 Ulf Jasper - - * calendar/icalendar.el (icalendar-version): Increase to 0.15. - (icalendar--get-unfolded-buffer): Define actual arguments rather - than just using &rest. Check replace-in-string is fbound. - (icalendar-import-buffer): Doc fix. - (icalendar--convert-ical-to-diary): Set diary-file. - Check diary-file before inserting final newline. - (icalendar--add-diary-entry): Return diary-file. - -2007-03-21 Glenn Morris - - * calendar/calendar.el (diary-set-maybe-redraw): Autoload it. - (diary-display-hook): Add custom :set function. - - * calendar/diary-lib.el (diary-header-line-flag): Doc fix. - Add custom :set function. - (diary-header-line-format): Doc fix. - (diary-set-maybe-redraw): New function. - (number-of-diary-entries): Change :set to use diary-set-maybe-redraw. - (diary-list-entries): Always run diary-mode. - -2007-03-20 Kenichi Handa - - * international/quail.el (quail-setup-completion-buf): Make the - completion buffer read-only. - (quail-completion): Adjusted for the above change. Leave the - modified flag nil. - -2007-03-20 David Kastrup - - * files.el (magic-mode-alist): Require literal "%!PS" string for - magic postscript file detection. - -2007-03-20 Richard Stallman - - * textmodes/ispell.el (ispell-call-process): New function. - Defends against bad `default-directory.' - (ispell-check-version, ispell-find-aspell-dictionaries) - (ispell-get-aspell-config-value, lookup-words): Call it. - (ispell-call-process-region): New function. - (ispell-send-string): Call it. - -2007-03-20 Andreas Schwab - - * Makefile.in (custom-deps): Depend on $(lisp)/subdirs.el. - (finder-data): Likewise. - (autoloads): Likewise. - -2007-03-20 Martin Rudalics - - * files.el (basic-save-buffer): Do not set visited filename when - the corresponding directory does not exist or the specified - filename is that of an existing directory. - -2007-03-20 Glenn Morris - - * calendar/diary-lib.el (diary-live-p): New function. - (number-of-diary-entries): Add a :set function to redisplay diary - when necessary. - -2007-03-19 Nick Roberts - - * t-mouse.el (t-mouse-make-event-element): Use timestamp output - from client program, mev, to compute mouse event. - -2007-03-19 Chong Yidong - - * faces.el (momentary): Face removed; unused due to reversion of - 2007-01-04 changes by Kevin Rodgers. - - * mouse.el (mouse-drag-track): Remove spurious input-pending-p test. - Suggested by Johan Bockg,Ae(Brd. - -2007-03-19 Martin Rudalics - - * font-lock.el (lisp-font-lock-keywords-1): - Highlight define-globalized-minor-mode as a keyword. - -2007-03-19 Kim F. Storm - - * calc/calc-forms.el (math-std-daylight-savings) - (math-std-daylight-savings-old): Doc fix. - -2007-03-19 Juanma Barranquero - - * progmodes/python.el (python-default-template): Doc fix. - (python-buffer): Fix typo in docstring. - - * isearchb.el (isearchb-follow-char): - * subr.el (def-edebug-spec): Fix typo in docstring. - -2007-03-19 Richard Stallman - - * files.el (default-directory): Mark safe. - (basic-save-buffer-2): Put proper dir name in error message. - - * simple.el (compose-mail): Run switch-function after - setting up the mail buffer. - - * startup.el (inhibit-splash-screen, initial-major-mode): Doc fixes. - -2007-03-18 Jay Belanger - - * calc/calc-forms.el (math-parse-date): Fix a regular expression. - (math-std-daylight-savings-new): Rename from - `math-std-daylight-savings'. - (math-std-daylight-savings-old): Rename from old value of - `math-std-daylight-savings'. - (math-std-daylight-savings): Use `math-std-daylight-savings-new' or - `math-std-daylight-savings-old' depending on the year. - -2007-03-18 Detlev Zundel - - * emacs-lisp/re-builder.el (reb-update-overlays): Do not mark - zero-width regexps as invalid but rather at least count them correctly. - -2007-03-18 Thien-Thi Nguyen - - * net/tls.el (open-tls-stream): In handshake-waiting loop, - don't wait more if there is output available to process. - -2007-03-18 Nick Roberts - - * progmodes/compile.el (compilation-find-file): Revert change - from 2006-07-18 to allow completion of directory names. - Reported by John Carter . - -2007-03-18 Kim F. Storm - - * subr.el (when, unless): Doc fix. - -2007-03-17 Thien-Thi Nguyen - - * net/tls.el (tls-program): Doc fix. - -2007-03-17 Denis Bueno (tiny change) - - * autorevert.el (auto-revert-tail-handler): - Call after-revert-hook. - -2007-03-17 Ryan Yeske - - * simple.el (switch-to-completions): No error if search for \n\n fails. - -2007-03-17 Chong Yidong - - * simple.el (line-move-1): - Respect `inhibit-line-move-field-capture' property. - -2007-03-13 Chong Yidong - - * comint.el (comint-arguments): Mark backslash-escaped chars. - (comint-delim-arg): Don't treat them as delimiters. - -2007-03-12 Kim F. Storm - * ido.el (ido-init-completion-maps): Remap delete-backward-char. - -2007-03-12 Lawrence Mitchell (tiny change) - - * tempo.el (tempo-insert): Deal with 'r> if it appears - specified with a prompt argument. - -2007-03-12 Carsten Dominik - - * textmodes/org.el (org-set-font-lock-defaults): - Handle narrow table columns correctly. - -2007-03-12 Mark A. Hershberger - - * xml.el (xml-parse-tag, xml-parse-string, xml-parse-attlist) - (xml-parse-dtd, xml-parse-elem-type, xml-substitute-special): - Return to use of the -no-properties variants. There was - consensus on emacs-devel that the speed of these variants was - prefered since we are usually parsing files (from the internet - or on disk) instead of XML created in Emacs. - - * eshell/esh-mode.el (eshell-handle-ansi-color): New function. - Add customize option. - -2007-03-12 Glenn Morris - - * calc/calc-forms.el (math-std-daylight-savings): Switch to new - North American rule. Replace "daylight savings" with "daylight - saving" in doc. - - * calendar/cal-china.el, cal-dst.el, calendar.el, diary-lib.el: - * calendar/lunar.el, solar.el: Replace "daylight savings" with - "daylight saving" in text. - - * woman.el (woman-change-fonts): Tweak previous change by using - woman-request-regexp rather than "^\\.". - - * startup.el (command-line-1): Make insertion of - initial-scratch-message not depend on scratch being selected. - -2007-03-11 Juri Linkov - - * replace.el (match): Use yellow background on light-bg terminals. - -2007-03-11 Richard Stallman - - * emacs-lisp/bytecomp.el (byte-compile-warning-prefix): - Correctly compute line number. - -2007-03-11 Guanpeng Xu - - * type-break.el (type-break-get-previous-count): - Repeat previous change here. - -2007-03-11 Dan Nicolaescu - - * progmodes/grep.el (grep-find-ignored-directories): - Add .git and .bzr to list. - -2007-03-11 Andreas Schwab - - * diff-mode.el (diff-apply-hunk): Use proper format string for error. - -2007-03-11 Stefan Monnier - - * mail/emacsbug.el (report-emacs-bug): Don't hard code the "X" name. - -2007-03-10 Chong Yidong - - * faces.el (face-set-after-frame-default): Recalculate face - customizations after applying X resources. - -2007-03-10 Ryan Yeske - - * net/rcirc.el (rcirc-timeout-seconds): New variable. - (rcirc-keepalive-seconds): Remove variable. - (rcirc-server-name, rcirc-timeout-timer, rcirc-connecting) - (rcirc-process, rcirc-user-disconnect): New variables. - (rcirc-connect): Initalize new variables. - (rcirc-keepalive): Don't send keepalive pings before connection - is completed. - (rcirc-sentinel): Do mark all channels with activity when - connection is dropped. Run hook with process buffer local. - (rcirc-reschedule-timeout, rcirc-delete-process): New functions. - (rcirc-buffer-process): Return value of rcirc-process if - rcirc-server-buffer is nil. - (rcirc-server-name): Return the reported server name. - (rcirc-update-prompt): Simplify computation of the server name. - (rcirc-format-response-string): Likewise. - (rcirc-handler-001): Mark server as connected, record the reported - server name, and schedule a timeout. - (rcirc-track-nick): Add a spec for the tty class. - (rcirc-user-non-nick): Remove function. - (rcirc-nick-prefix-chars): Add variable. - (rcirc-user-nick): Use above variable. - -2007-03-10 Johan Bockg,Ae(Brd - - * icomplete.el (icomplete-tidy, icomplete-exhibit): - Bind deactivate-mark to nil. - -2007-03-10 Martin Rudalics - - * complete.el (PC-do-completion): Bind dirlength to nil to avoid - that buffer contents get erased during completion. - -2007-03-10 Glenn Morris - - * woman.el (woman-change-fonts): Add a hack to deal with - font-escape followed by "." at start of a line. - (woman2-IP): Add a hack to deal with consecutive requests. - (woman2-tagged-paragraph): Extend existing hack to handle "sp". - -2007-03-10 Alan Mackenzie - - * progmodes/cc-mode.el (c-before-change): Wrap in save-match-data. - -2007-03-09 Richard Stallman - - * abbrev.el (abbrev): Add `provide'. - -2007-03-09 Thien-Thi Nguyen - - * net/ange-ftp.el (ange-ftp-try-passive-mode): Doc fix. - -2007-03-09 Martin Rudalics - - * complete.el (PC-try-completion): New function. - (PC-do-completion, read-file-name-internal): Use it instead of - try-completion. - -2007-03-08 Alan Mackenzie - - Remove stale tokens from `c-found-types' cache. - - * progmodes/cc-mode.el (c-unfind-enclosing-token) - (c-unfind-coalesced-tokens, c-before-change): New functions. - (c-maybe-stale-found-type): New variable. - - * progmodes/cc-engine.el (c-partial-ws-p, c-unfind-type) - (c-trim-found-types): New functions. - -2007-03-08 Stefan Monnier - - * smerge-mode.el (smerge-remove-props): Don't mark the buffer modified. - (debug-ignored-errors): Add entry from smerge-match-conflict. - -2007-03-08 J.D. Smith - - * progmodes/idlw-help.el (idlwave-do-context-help1): Don't visit - special help topics for keywords. - (idlwave-help-assistant-command): Include ".exe" for ms-dos - etc. Assistant command. - -2007-03-08 Chong Yidong - - * replace.el (occur-engine): Move buffer-undo-list binding... - (occur-1): ...to here. - - * complete.el (PC-bindings): Rebind M-TAB in read-expression-map. - - * simple.el (minibuffer-completing-symbol): New var. - (eval-expression): Use it. - (completion-setup-function): Don't bind completion-base-size when - completing a symbol in the minibuffer. - -2007-03-08 Nick Roberts - - * progmodes/gud.el (gdb): Pop up current GUD buffer if user - tries to start a second session in graphical mode. - -2007-03-07 Miles Bader - - * international/isearch-x.el - (isearch-process-search-multibyte-characters): - Strip text-properties from PROMPT to avoid an error from read-string. - -2007-03-07 Kim F. Storm - - * complete.el (PC-bindings): Remap lisp-complete-symbol to - PC-lisp-complete-symbol instead of binding M-TAB in global-map. - -2007-03-07 Micha,Ak(Bl Cadilhac - - * complete.el (PC-do-completion): Delete duplicates in the list of - possible completions. - -2007-03-07 Glenn Morris - - * ses.el (ses-mode): Doc fix. - -2007-03-06 Kim F. Storm - - * isearch.el (isearch-message-prefix): Undo 2007-03-01 change. - -2007-03-06 Kenichi Handa - - * term/x-win.el (x-select-utf8-or-ctext): Improve the strategy. - -2007-03-06 Stefan Monnier - - * simple.el (completion-setup-function): Improve last fix so it doesn't - set it to a relative directory name either. - -2007-03-05 Vinicius Jose Latorre - - * ps-print.el: Replace some (defvar VAR) by (defvar VAR nil). - -2007-03-05 Richard Stallman - - * emacs-lisp/re-builder.el (reb-re-syntax): Fix custom type. - - * files.el (find-file-noselect): No error if file no longer exists. - Display a message and avoid other questions. - -2007-03-05 Stefan Monnier - - * pcomplete.el (pcomplete-show-completions): Improve last change, so - as not to use an invisible window and to create a window if none exist. - - * progmodes/python.el (python-send-command): Restart proc if necessary. - (python-proc): Simplify. - -2007-03-05 David Hansen (tiny change) - - * pcomplete.el (pcomplete-show-completions): Search all frames for - completions buffer. - -2007-03-05 Chong Yidong - - * cus-edit.el (customize-save-variable): Clear customized-value - property (saved values are now put in theme-value property). - (customize-set-variable): Doc fix. - - * complete.el (PC-do-completion): If completion-ignore-case is - non-nil, replace field with completion string before exiting. - -2007-03-05 Michael Albinus - - * net/tramp.el (tramp-make-temp-file): New parameter FILENAME. - Append its extension to the resulting temporary file name. - (tramp-handle-file-local-copy, tramp-handle-write-region): Apply it. - - * net/tramp-smb.el (tramp-smb-handle-file-local-copy) - (tramp-smb-handle-write-region): Apply it. - -2007-03-05 Alin C. Soare (tiny change) - - * emacs-lisp/lisp-mode.el (calculate-lisp-indent): - Redo previous change. - -2007-03-04 Kevin Rodgers (tiny change) - - * diff-mode.el (diff-mode): Doc fix. - -2007-03-05 Kenichi Handa - - * international/characters.el: Set category `l' (latin) - for more characters. - -2007-03-04 Kim F. Storm - - * emacs-lisp/authors.el (authors-aliases): Add alias. - -2007-03-04 Glenn Morris - - * progmodes/hideshow.el (hs-minor-mode): Turn mode off and show - all when switching major mode. - (hs-minor-mode, hs-c-start-regexp, hs-block-start-regexp) - (hs-block-start-mdata-select, hs-block-end-regexp) - (hs-forward-sexp-func, hs-adjust-block-beginning): - Do not make these variables permanent-local. - -2007-03-04 Richard Stallman - - * progmodes/cperl-mode.el (cperl-mode): - Modify cperl-compilation-error-regexp-alist by appending. - - * emacs-lisp/edebug.el (edebug-kill-buffer): New function. - (edebug-mode): Add the hook. - (edebug-recursive-edit): Remove the hook on exiting. - - * type-break.el (type-break-get-previous-time): - Handle end-of-file errors specially - so they don't get reported wrong in .emacs. - - * startup.el (fancy-splash-text): Clarify text. - - * simple.el (beginning-of-buffer, end-of-buffer): - Avoid treating plain C-u like numeric arg. - - * simple.el (completion-setup-function): Don't set - default-directory to nil. - - * shell.el (shell-dirstack-query): Doc fix. - - * mouse.el (mouse-drag-mode-line-1, mouse-drag-vertical-line): - Don't select the window -- pass it to primitives instead. - - * faces.el (minibuffer-prompt): Use medium blue by default. - -2007-03-04 David Kastrup - - * jit-lock.el (jit-lock-stealth-time): Change default to nil. - Preserve 16 as default value for "seconds" when customizing. - -2007-03-04 Carsten Dominik - - * textmodes/org.el (org-self-insert-command) - (orgtbl-self-insert-command, org-delete-char) - (org-delete-backward-char): Set the `flyspell-delayed' property. - -2007-03-03 Chong Yidong - - * international/mule.el (find-auto-coding): Don't search for - line-ending characters past the end of the tail. - -2007-03-03 Christopher Allan Webber (tiny change) - - * play/gamegrid.el (gamegrid-add-score-with-update-game-score-1): - Jump to the line where new score has been uploaded. - - * play/tetris.el (tetris-move-bottom, tetris-move-left) - (tetris-move-right, tetris-rotate-prev, tetris-rotate-next): - Do nothing when the game is paused. - -2007-03-03 Carsten Dominik - - * textmodes/org.el (org-set-tags): Prevent slipping of point - during completion. - -2007-03-01 Lennart Borgman - - * isearch.el (isearch-message-prefix): - Use minibuffer-prompt-properties. - -2007-03-01 Vinicius Jose Latorre - - * ps-print.el: Replace (defvar VAR nil) by (defvar VAR). - (ps-setup): Print which Emacsen is running ps-print package. - -2007-03-01 Stuart Herring - - * files.el (set-auto-mode-0): Use `indirect-function'. - (hack-one-local-variable): Don't reapply current major mode. - -2007-03-01 Stefan Monnier - - * progmodes/python.el (python-quote-syntax): Don't bother with - syntax-ppss-context. - (python-fill-paragraph): Make sure that fenced-string delimiters that - stand on their own line stay there. - -2007-03-01 Lennart Borgman - - * replace.el (perform-replace): Propertize message. - -2007-03-01 Carsten Dominik - - * textmodes/org.el (org-prepare-agenda-buffers): Also check for - invisible heading. - -2007-02-28 Chong Yidong - - * net/tramp.el (tramp-file-name-handler): Revert last change. - -2007-02-28 Nick Roberts - - * progmodes/gdb-ui.el (gdb-mouse-until, gdb-mouse-jump): - Correct doc strings. - -2007-02-28 Chong Yidong - - * replace.el (perform-replace): Undo forward-char immediately if - non-adjacent search fails. - -2007-02-28 Stefan Monnier - - * version.el (emacs-major-version, emacs-minor-version): - string-to-int -> string-to-number. - -2007-02-28 Juanma Barranquero - - * help.el (where-is): Fail gracefully when not passed a command. - -2007-02-28 Stuart Herring - - * find-lisp.el (find-lisp-default-directory-predicate): - Fix bug: Do symlink check on expanded filename. - -2007-02-28 Carsten Dominik - - * textmodes/org.el (org-set-tags, org-table-get-field): Avoid case - changes during replacement. - (org-agenda-mode-map): Add default binding for `org-agenda-archive'. - -2007-02-28 Lars Hansen - - * desktop.el: Delete header line listing me as maintainer. - -2007-02-28 Glenn Morris - - * tutorial.el (tutorial--describe-nonstandard-key): Tweak text in - the menus case. - -2007-02-28 Chong Yidong - - * net/tramp.el (tramp-file-name-handler): Inhibit modification - hooks to avoid confusion when combining after-change calls. - -2007-02-27 Ken Manheimer - - * allout.el (allout-encrypt-string): Remove inhibition of gpg-agent, - now that pgg-gpg-process-region correctly honors passed-in passphrase. - (allout-distinctive-bullets-string): Add info about bullet conventions. - (allout-mode): Add info about distinctive vs plain bullets. - -2007-02-27 Carsten Dominik - - * textmodes/org.el (org-archive-subtree): Quote variable name. - (org-agenda-get-todos): Make sure skip properties are checked correctly. - -2007-02-26 Nick Roberts - - * progmodes/gud.el (gud-bashdb-history, gud-bashdb-marker-filter) - (gud-bashdb-command-name, bashdb): Remove. - (gud, gud-menu-map): Remove references to bash/bashdb. - -2007-02-26 Andrey Zhdanov (tiny change) - - * progmodes/gud.el (gud-pdb-marker-regexp): Add optional - keyword for Python 2.5. - -2007-02-26 Romain Francoise - - * net/net-utils.el (whois-server-tld): Update server for .org. - (whois-server-list): Add whois.publicinterestregistry.net. - (whois-guess-server): Fix formatting in docstring. - -2007-02-26 Kim F. Storm - - * mouse.el (mouse-show-mark): Run hooks and perform command - remapping for mouse-region-delete-keys. - -2007-02-26 Johan Bockg,Ae(Brd - - * font-core.el (font-lock-mode): Doc fix. - -2007-02-25 Kim F. Storm - - * ido.el (ido-buffer-internal): Set this-command to fallback command. - Add selected buffer to buffer-name-history. - (ido-file-internal): Set this-command to fallback command. - Add file names to file-name-history. - - * emacs-lisp/map-ynp.el (map-y-or-n-p): - Apply minibuffer-prompt-properties. - -2007-02-25 Andreas Schwab - - * files.el (hack-one-local-variable-eval-safep): Correct handling - of edebug-form-spec property value. Reported by Johan Bockg,Ae(Brd. - -2007-02-25 Carsten Dominik - - * textmodes/org.el (org-table-overlay-coordinates) - (org-table-toggle-coordinate-overlays): New functions. - (org-table-overlay-coordinates, org-table-coordinate-overlays): - New variables. - (org-startup-with-deadline-check): Remove option. - (org-mode): Remove deadline check on startup. - (org-table-limit-column-width): Remove option. - (org-table-formula-numbers-only): Remove option. - (org-link-style, org-link-format): Remove options. - (org-select-agenda-window, org-fit-agenda-window): Remove options. - (org-export-ascii-show-new-buffer) - (org-export-html-show-new-buffer): Remove options. - (org-activate-links): Remove camel option. - (org-file-link-context-use-camel-case): Remove option. - (org-camel-regexp): Remove variable. - (org-activate-camels): Remove function. - (org-store-link): Remove Camel stuff. - (org-make-org-heading-camel): Remove function. - (org-open-at-point): Remove camel stuff. - (org-link-search): Remove camel stuff. - (org-camel-to-words): Function removed. - (org-get-agenda-file-buffer): Make sure we prepare the base - buffers, not any indirect buffers. - (org-sort-entries): Sort top-level when not on a headline, and no - active region. - (org-in-regexp): New function. - (org-search-not-self): Rename from `org-search-not-link'. - (org-open-link-marker): New variable. - (org-open-at-point): Set `org-open-link-marker'. - (org-print-icalendar-entries): Fixe bug with excluding DONE - entries from the exported list. - (org-edit-formula-lisp-indent): New command. - (orgtbl-to-texinfo, orgtbl-to-html): New functions. - (orgtbl-to-latex, orgtbl-insert-radio-table) - (orgtbl-toggle-comment, orgtbl-send-table): New functions. - (orgtbl-radio-table-templates): New option. - (org-store-link-props): - (org-remember-templates): More possibilities to insert info - into templates. - (org-remember-apply-template): Make use of the extended - template capabilities. - (org-remember-redo-template): New command. - (org-upgrade-old-links) - (org-table-modify-formulas, org-table-replace-in-formulas) - (org-table-find-dataline) - (org-table-get-vertical-vector): Remove functions. - (org-table-remove-rectangle-highlight) - (org-time-stamp-format, org-toggle-log-option) - (org-table-highlight-rectangle) - (org-table-iterate, org-table-make-reference): - (org-translate-time, org-tree-to-indirect-buffer) - (org-table-field-info, org-table-fix-formulas) - (org-table-force-dataline, org-table-get-descriptor-line) - (org-table-get-range) - (org-skip-comments, org-sort) - (org-sort-entries, org-sublist, org-table-add-rectangle-overlay) - (org-table-current-dline, org-table-current-field-formula) - (org-table-edit-backward-field) - (org-table-edit-formulas-post-command) - (org-table-edit-line-down, org-table-edit-line-up) - (org-agenda-archive) - (org-agenda-clock-cancel) - (org-agenda-clock-out, org-agenda-list-stuck-projects) - (org-agenda-open-link, org-agenda-show-new-time) - (org-agenda-skip-subtree-when-regexp-matches) - (org-agenda-tree-to-indirect-buffer, org-agenda-undo) - (org-at-regexp-p, org-auto-repeat-maybe, org-check-log-option) - (org-do-sort, org-file-image-p, org-find-overlays) - (org-find-row-type, org-get-indirect-buffer, org-get-repeat) - (org-highlight-until-next-command, org-isearch-end) - (org-match-any-p, org-next-link, org-previous-link): - (org-remove-subtree-entries-from-agenda, org-replace-escapes) - (org-rewrite-old-row-references) - (org-isearch-post-command) - (org-table-edit-move, org-table-edit-next-field) - (org-table-edit-scroll, org-table-edit-scroll-down) - (org-set-frame-title, org-show-reference) - (org-unhighlight-once, org-verify-change-for-undo): New functions. - (org-show-variable): Remove command. - (org-add-log-maybe): New arguments STATE, FINDPOS - (org-table-sort-lines): Rewrite from scratch. - (org-link-search): New argument AVOID-POS. - (org-print-icalendar-entries): Remove argument CATEGORY. - (org-run-agenda-series): Remove argument WONDOW. - (org-next-link, org-previous-link): New commands. - (org-agenda-date-format): New option. - (org-table-iterate): New command. - (org-table-modify-formulas) - (org-table-replace-in-formulas): Remove functions. - (org-table-fix-formulas): New function. - (org-table-insert-column, org-table-delete-column) - (org-table-move-column): Use `org-table-fix-formulas'. - (org-follow-gnus-link): Patch from Bastien/Leo. - (org-table-current-field-formula): New function. - (org-file-image-p): New function. - (org-agenda-show-new-time): New function. - (org-agenda-date-later): Call `org-agenda-show-new-time'. - (org-with-remote-undo): New macro. - (org-agenda-undo): New command. - (org-verify-change-for-undo): New function. - (org-time-stamp-format): New function. - (org-agenda-get-timestamps): Skip scheduled if DONE and requested - by user. - (org-match-any-p): New function. - (org-make-tags-matcher): Handle regular expressions for tag and - todo matches. - (org-read-date): Accept "+N" as input for a date relative to the - current date. - (org-remove-subtree-entries-from-agenda): New function. - (org-agenda-archive, org-agenda-kill): - Use `org-remove-subtree-entries-from-agenda'. - (org-do-sort, org-sort-entries): New functions. - (org-sort): New command. - (org-table-sort-lines): Use `org-do-sort'. - (org-fix-decoded-time): New function. - (org-table-number-regexp): Require 0x... to identify as number - in tables. - (org-startup-options): New keywords for note taking. - (org-upgrade-old-links): Remove function. - (org-get-repeat): New function. - (org-show-context): Also show siblings on current level. - (org-show-siblings): New function. - (org-isearch-end, org-isearch-post-command): New functions. - (org-show-siblings): New option. - (org-show-context): Use `org-show-siblings'. - (org-table-maybe-recalculate-line): No longer require `calc-eval' - to be bound, because user may just use elisp. - -2007-02-24 Kim F. Storm - - * emulation/cua-base.el (cua-paste): Handle x-clipboard-yank. - (cua--init-keymaps): Remap x-clipboard-yank to cua-paste. - -2007-02-24 Dan Nicolaescu - - * startup.el (command-line): Also check if the abbrev file is readable. - -2007-02-24 John Paul Wallington - - * net/tls.el (tls-certtool-program): Fix custom type. - - * mail/feedmail.el (feedmail-message-id-generator) - (feedmail-date-generator): Fix custom types. - - * mail/rmail.el (rmail-message-filter): Fix custom type. - -2007-02-24 Eli Zaretskii - - * startup.el (command-line): If simple.el cannot be found, proceed - with a warning message. - -2007-02-24 Kenichi Handa - - * international/utf-8.el (utf-8-pre-write-conversion): Handle the - case that BEG is a string. - -2007-02-24 Chris Moore - - * pgg-pgp5.el (pgg-pgp5-encrypt-region): - * pgg-pgp.el (pgg-pgp-encrypt-region): - * pgg-gpg.el (pgg-gpg-encrypt-region): - Check pgg-encrypt-for-me if no other recipients. - -2007-02-23 Eli Zaretskii - - * mail/rmailedit.el (rmail-cease-edit): Restore the Rmail toolbar. - - * textmodes/sgml-mode.el (sgml-validate): Quote the file name with - shell-quote-argument. - -2007-02-23 Andreas Seltenreich - - * comint.el (comint-read-input-ring): Use comint-input-ring-size - from the comint buffer instead of the temporary one. - -2007-02-23 David Reitter - - * cus-edit.el (custom-save-all): Canonicalize custom-file before - storing it in recentf-exclude. - -2007-02-23 Chong Yidong - - * startup.el (fancy-splash-screens): Make cursor-type buffer-local - in splash screen. - -2007-02-22 J.D. Smith - - * progmodes/idlw-shell.el (idlwave-shell-mode): Clean up pending - commands, for restart. - (idlwave-shell-current-module): Fix handling of module name by type. - (idlwave-shell-break-in): Update type handling. - (idlwave-shell-bp-get): Encode type in BP structure. - (idlwave-shell-set-bp): Fix setting condition/count on disabled BPs. - (idlwave-shell-module-source-query): Query routine info based on type. - Fix path parsing for non-compiled files. - (idlwave-shell-module-source-filter): Don't signal error in filter - if no source found. - (idlwave-shell-set-bp-in-module): Use fallback source to prevent - filter race. - -2007-02-22 Kim F. Storm - - * wid-edit.el (widget-default-create): Undo 2007-02-04 change. - (editable-field): Document need to put some text before the %v - escape in :format string. - -2007-02-19 Stefan Monnier - - * vc-svn.el: Remove the code inherited from CVSREAD and `cvs edit'. - (vc-svn-use-edit): Remove unused config var. - (vc-svn-update, vc-svn-revert): Checkout is always implicit. - - * outline.el (hide-sublevels): Keep empty last line, if available. - - * buff-menu.el (list-buffers-noselect): Use explicit unicode code - rather than the corresponding unicode char, to make the code - more readable. - -2007-02-19 Juanma Barranquero - - * speedbar.el (speedbar-frame-mode, speedbar-frame-width) - (speedbar-show-unknown-files, speedbar-item-info-file-helper) - (speedbar-item-info-tag-helper): Doc fixes. - -2007-02-19 Kenichi Handa - - * international/mule-cmds.el (locale-language-names): - Map "eo" to "Esperanto". - - * language/european.el ("Esperanto"): New language environment. - -2007-02-17 Sven Joachim (tiny change) - - * simple.el (kill-line): Doc fix. - -2007-02-17 Kim F. Storm - - * emacs-lisp/bindat.el (bindat--unpack-u*): Optimize. - (bindat--unpack-item, bindat--length-group, bindat--pack-item) - (bindat--unpack-group, bindat--pack-group): - Handle vectors with optional element type. - -2007-02-17 Daiki Ueno - - * pgg-gpg.el (pgg-gpg-process-region): Make USE-AGENT nil - if PASSPHRASE is given. - -2007-02-17 Chris Moore - - * jka-cmpr-hook.el (jka-compr-compression-info-list): - Recognize backups of bz2 compressed files. - -2007-02-17 Eli Zaretskii - - * info-look.el (info-lookup): Bind Info-fontify-maximum-menu-size - to nil to speed up lookup of the symbol in index nodes. - -2007-02-17 Alin C. Soare (tiny change) - - * emacs-lisp/lisp-mode.el (calculate-lisp-indent): - Add indentation for the constants of Lisp. - -2007-02-16 Stefan Monnier - - * ps-print.el: Use (defvar ) where applicable. - (ps-print-emacs-type): Remove. - (ps-x-frame-property, ps-e-frame-parameter): Remove. - (ps-frame-parameter): Align its call-convention with frame-parameter. - (ps-begin-job): Adjust calls to it appropriately. - (ps-setup): Don't print ps-print-emacs-type. - (ps-e-find-composition, ps-mark-active-p, ps-color-device): - Define in such a way that it's obvious that it's defined. - (ps-prsc, ps-c-prsc, ps-s-prsc): Remove. - (ps-rmail-mode-hook, ps-vm-mode-hook, ps-gnus-summary-setup) - (ps-jts-ps-setup): Use flavor-neutral syntax instead. - -2007-02-15 Alan Mackenzie - - * progmodes/cc-cmds.el (c-indent-new-comment-line): When splitting - an empty one-line C-style comment, post-position point properly. - -2007-02-15 Chris Moore - - * isearch.el (isearch-lazy-highlight-space-regexp): New variable. - (isearch-lazy-highlight-new-loop): Bind it. - (isearch-lazy-highlight-search): Use it. - - * replace.el (replace-highlight): Bind search-whitespace-regexp to nil. - -2007-02-15 Stefan Monnier - - * font-lock.el (font-lock-extend-region-wholelines): - Only return non-nil if the region has really been changed. - Reported by David Hansen - -2007-02-15 Juanma Barranquero - - * play/5x5.el (5x5-crack-xor-mutate): Doc fix. - (5x5-draw-grid-end, 5x5-make-xor-with-mutation, 5x5-mode, 5x5-crack) - (5x5-play-solution, 5x5-y-or-n-p): Fix typos in docstrings. - -2007-02-14 Juanma Barranquero - - * faces.el (color-values): Revert changes to docstring from - 2007-01-31 and 2000-09-07. - - * textmodes/ispell.el (ispell-keep-choices-win, ispell-word) - (ispell-begin-skip-region-regexp): Fix typos in docstrings. - (ispell-dictionary-alist, ispell-process-line): Doc fixes. - (ispell-help): Fix typos in docstring and output message. - -2007-02-14 Kim F. Storm - - * progmodes/grep.el (grep-files-aliases): Add tex and texi aliases. - (lgrep): Add DIR arg to start grep in specific directory, like rgrep. - (grep): Fix lgrep reference. - - * disp-table.el (make-glyph-code, glyph-char, glyph-face): New defuns. - (standard-display-underline): Use make-glyph-code. - - * descr-text.el (describe-char): Use glyph-char and glyph-face. - - * international/latin1-disp.el (latin1-display-char): - Use make-glyph-code. - -2007-02-13 Juanma Barranquero - - * ehelp.el (with-electric-help, electric-help-exit) - (electric-help-retain): Doc fixes. - - * emacs-lisp/bytecomp.el (byte-compile-dest-file) - (byte-compile-file): Doc fixes. - -2007-02-13 YAMAMOTO Mitsuharu - - * term/mac-win.el: Change all uses of - mac-set-font-panel-visibility to mac-set-font-panel-visible-p. - (mac-ae-number): Return integer 0 if coerced result is float 0.0. - (mac-ae-get-url): Call select-frame-set-input-focus. - (mac-dnd-handle-drag-n-drop-event): Don't call - select-frame-set-input-focus. - -2007-02-13 Kenichi Handa - - * international/characters.el: Fix documentation of category `a'. - -2007-02-11 Dan Nicolaescu - - * progmodes/grep.el (grep): Mention lgrep and rgrep in the docstring. - -2007-02-12 Michael Albinus - - * net/tramp.el (tramp-get-ls-command, tramp-get-file-exists-command) - (tramp-get-remote-ln): Handle error case. - Reported by Chris Moore . - -2007-02-11 Kim F. Storm - - * bindings.el (ctl-x-map): Remove register compatibility bindings - C-x /, C-x j, C-x x, and C-x g (deprecated since Emacs 19). - -2007-02-11 Richard Stallman - - * loadhist.el (unload-feature): Handle (t . SYMBOL) entries - in load history. - - * emacs-lisp/lisp-mode.el (indent-sexp): Clean up termination - condition -- don't fail to stop at endpos. - -2007-02-11 Carsten Dominik - - * textmodes/org.el (org-agenda-get-todos) - (org-agenda-get-timestamps, org-agenda-get-closed) - (org-agenda-get-deadlines, org-agenda-get-scheduled) - (org-agenda-get-blocks, org-format-agenda-item) - (org-agenda-change-all-lines, org-scan-tags): Rename text property - from `category' to `org-category'. - -2007-02-11 Kenichi Handa - - * international/titdic-cnv.el (titdic-convert): Force files be written - with Unix-like eol format. Read files under CXTERM-DIC by raw-text. - (miscdic-convert): Force files be written with Unix-like eol format. - -2007-02-11 Juanma Barranquero - - * files.el (change-major-mode-with-file-name): Fix typo in docstring. - - * calculator.el (calculator-prompt): Doc fix. - (calculator-mode-map): Fix typo in menu entry. - -2007-02-10 Jay Belanger - - * calculator.el (calculator): Do more extensive checking for when - 3 lines should be used for the calculator. - -2007-02-10 Eli Zaretskii - - * info-look.el (info-lookup-make-completions): - Bind Info-fontify-maximum-menu-size to nil to speed up lookup of - index nodes. - - * info.el (Info-fontify-maximum-menu-size): Document the effect - of a nil value. - (Info-fontify-node): Make sure Info-fontify-maximum-menu-size is - non-nil before using it as size. - -2007-02-09 Chong Yidong - - * subr.el (insert-for-yank-1): Prevent read-only properties from - interfering with text property operations. - - * image-mode.el (image-mode): Revert 2007-01-30 changes. - - * image.el (image-type-auto-detectable): Don't autodetect x[pb]m. - (image-type-auto-detected-p): Fail if another match is found in - auto-mode-alist. - - * files.el (magic-mode-alist): Call image-mode instead of - image-mode-maybe for autodetected images. - -2007-02-09 Juanma Barranquero - - * mail/smtpmail.el (smtpmail-smtp-service, smtpmail-queue-index-file): - Fix typos in docstrings. - (smtpmail-local-domain, smtpmail-queue-mail): Doc fixes. - -2007-02-09 Kim F. Storm - - * emacs-lisp/float-sup.el: Remove obsolete comment. - -2007-02-08 Stefan Monnier - - * diff-mode.el (diff-sanity-check-hunk): Fix last fix. - -2007-02-08 Karl Fogel - - * simple.el: Revert previous change, at request of RMS: - (fundamental-mode-hook): Remove. - (fundamental-mode): Run after-change-major-mode-hooks manually, - and don't run the now-nonexistent fundamental-mode-hook. - -2007-02-08 Karl Fogel - - * simple.el (fundamental-mode-hook): Declare new hook. - (fundamental-mode): Run the new dedicated hook, and don't run - after-change-major-mode-hooks manually anymore. - -2007-02-07 Stefan Monnier - - * vc-svn.el (vc-svn-merge-news): Understand the new format with two - added columns of chars. Remove support for the "no-meta-info" format. - Prompted by Romain Francoise . - -2007-02-07 Nick Roberts - - * progmodes/gdb-ui.el (gdb-if-arrow): New macro. - (gdb-mouse-until, gdb-mouse-jump): Use it. - -2007-02-07 Nick Roberts - - * progmodes/gdb-ui.el (gdb-mouse-until, gdb-mouse-jump): Make them - work when there is just an assembler buffer (no source buffer). - -2007-02-07 Per Cederqvist (tiny change) - - * diff-mode.el (diff-sanity-check-hunk): Don't reject the hunk - just because the diff was produced using "-p" (--show-c-function). - -2007-02-07 Juanma Barranquero - - * faces.el (frame-set-background-mode): Use `color-values' and - `display-color-p', not `x-color-values' and `x-display-color-p'. - (face-valid-attribute-values): Use `defined-colors' instead of - `x-defined-colors'. - -2007-02-07 Vinicius Jose Latorre - - * ps-print.ps: The ps-print commands without face printing should not - print background color. Reported by Leo . - (ps-print-version): New version 6.7.3. - (ps-begin-job): New arg. Fix ps-default-background and - ps-default-foreground initialization. - (ps-face-attributes): Fix doc string. - (ps-face-background, ps-generate-postscript, ps-generate): Fix code. - - * printing.el: Fix ps-print link. - -2007-02-06 Chong Yidong - - * faces.el (face-set-after-frame-default): Compile attributes to - be set by frame parameters before merging in X resources. - -2007-02-06 Juanma Barranquero - - * simple.el (blink-matching-paren-dont-ignore-comments): - (blink-matching-paren-on-screen): Doc fixes. - -2007-02-06 Nick Roberts - - * progmodes/gdb-ui.el (gdb-frames-mode): Truncate lines in stack buffer. - -2007-02-05 Juanma Barranquero - - * loadhist.el (unload-feature): Silently ignore `load-history' entries - of the form `(defface . SYMBOL)', and treat `(autoload . SYMBOL)' - entries like `defun'. Return nil. - -2007-02-05 Kim F. Storm - - * ido.el: Doc fixes. - -2007-02-04 David Kastrup - - * play/mpuz.el (mpuz-random-puzzle): Fix potential lockup when - `mpuz-allow-double-multiplicator' is non-zero, and correct - calculation of `min'. - -2007-02-04 Per Abrahamsen - - * wid-edit.el (widget-default-create): Insert new text at the - :from marker _after_ the marker, not before it. - -2007-02-04 Alan Mackenzie - - * progmodes/cc-cmds.el (c-indent-line): Don't erase ^L when a line - containing it is re-indented. - -2007-02-03 Chong Yidong - - * net/newsticker.el (newsticker--insert-image): Update docstring, - and insert the image directly. - (newsticker--buffer-redraw): Update docstring. - - * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): - Rename from define-global-minor-mode. - - * progmodes/cwarn.el (global-cwarn-mode): - * emacs-lisp/autoload.el (make-autoload): - * hi-lock.el (global-hi-lock-mode): - * font-core.el (global-font-lock-mode): All callers changed. - -2007-02-03 Eli Zaretskii - - * textmodes/texnfo-upd.el (texinfo-menu-copy-old-description): - Don't copy @ignore lines into menu descriptions. - (texinfo-multi-file-update): Goto the @node line before attempting - to pluck the node name. - (texinfo-multiple-files-update): Reverse the optional arguments' - order, as per the doc string and the `interactive' form. - -2007-02-03 Chong Yidong - - * image-mode.el: Use autoload to avoid overriding disabled setting - applied in .emacs. - -2007-02-03 Alan Mackenzie - - * progmodes/cc-engine.el (c-in-knr-argdecl): Slight correction - for, e.g. "void (*hdone)();" in a k&r list. (No WS between - adjacent paren groups). - -2007-02-02 Vinicius Jose Latorre - - * progmodes/ebnf2ps.el: Doc fixes. - (ebnf-eps-buffer, ebnf-eps-region, ebnf-syntax-alist): Doc fixes. - -2007-02-02 Eli Zaretskii - - * dired-x.el (dired-do-relsymlink): Add reference to - dired-do-symlink. Add an autoload cookie. - - * dired-aux.el (dired-do-symlink): Add reference to - dired-do-relsymlink. - -2007-02-02 Doug Maxey (tiny change) - - * mouse.el : - : New bindings. - -2007-02-02 Ulf Jasper - - * newsticker.el (newsticker-version): Changed to "1.10". - (newsticker--set-customvar): Doc string. - (newsticker-new-item-face): Doc string. - (newsticker-mode): Initialize `invisibility-spec' with t. - (newsticker-mode-map): Added - `newsticker-mark-all-items-at-point-as-read'. - (newsticker-menu): Added narrow-to-item and narrow-to-feed. - (newsticker-w3m-show-inline-images): Do not call - `w3m-remove-image'. - (newsticker--buffer-after-w3m-insert-image): New advice for - w3m-insert-image to cache images. - (newsticker-next-item-same-feed): New. - (newsticker-mark-all-items-at-point-as-read-and-redraw): New. - (newsticker-mark-all-items-of-feed-as-read): New. - (newsticker-mark-all-items-at-point-as-read): Use new functions. - (newsticker-mark-item-at-point-as-read): Doc string. - (newsticker-mark-item-at-point-as-read): Use new functions. - (newsticker--do-mark-item-at-point-as-read): New, extracted from - `newsticker-mark-item-at-point-as-read'. - (newsticker-hide-entry): Use (t) instead of t for invisibility. - (newsticker--sentinel): Yet another xml-parser workaround. - (newsticker--decode-iso8601-date): Bugfix for datestrings without - days. - (newsticker--buffer-do-insert-text): Fix. - (newsticker--buffer-insert-enclosure): Fix. length might be missing. - (newsticker--buffer-make-item-completely-visible): - `switch-to-buffer' not necessary. - -2007-02-02 Eli Zaretskii - - * progmodes/ebnf2ps.el (ebnf-eps-buffer, ebnf-eps-region) - (ebnf-syntax-directory, ebnf-syntax-file, ebnf-syntax-region) - (ebnf-style-database, ebnf-apply-style, ebnf-reset-style) - (ebnf-push-style, ebnf-pop-style, ebnf-eps-production-list) - (ebnf-directory, ebnf-file, ebnf-syntax-alist): Doc fixes. - -2007-02-02 Kenichi Handa - - * international/quail.el (quail-show-key): Fix an error message. - -2007-02-01 Juanma Barranquero - - * faces.el (set-face-underline-p, modify-face): Rename arg - UNDERLINE-P to UNDERLINE (it is not a flag). - -2007-02-01 Nick Roberts - - * progmodes/gdb-ui.el (gdb-speedbar-update): Avoid duplication - when adding gdb-speedbar-update to gdb-input-queue. - -2007-02-01 Kenichi Handa - - * international/quail.el (quail-show-key): Signal an error if the - current input method is not using Quail. - -2007-02-01 J.D. Smith - - * progmodes/idlwave.el (idlwave-xml-create-sysvar-alist): - Trim leading whitespace in sysvar names. - -2007-02-01 Juanma Barranquero - - * faces.el (internal-find-face, internal-get-face): Doc fixes. - -2007-01-31 Juanma Barranquero - - * ido.el (ido-set-common-completion): Use `let', not `let*'. - -2007-01-31 Romain Francoise - - * comint.el: Delete extra copy of `comint-copy-old-input' added in - previous change to this file. - -2007-01-31 Jason Rumney - - * files.el (magic-mode-alist): Use image-mode-maybe rather than - image-mode. - - * image-mode.el (image-mode-maybe): Prevent magic-mode-alist from - interfering with attempt to set major mode from modified - auto-mode-alist. - -2007-01-31 Juanma Barranquero - - * faces.el (color-values): Doc fix. - (face-differs-from-default-p): Don't check :foreground twice. - -2007-01-31 J.D. Smith - - * comint.el (comint-mode): Prevent non-keyword fontification by default. - -2007-01-31 Kenichi Handa - - * international/quail.el (quail-store-decode-map-key): Store a - translated character too. - (quail-char-equal-p): New function. - (quail-find-key1): Check character equality by quail-char-equal-p. - (quail-decode-map-generated): New variable. - (quail-find-key): Check quail-decode-map-generated and re-generate - a decode map if necessary. - -2007-01-30 Richard Stallman - - * tutorial.el (tutorial--detailed-help): Make the list of - changed keys look nicer. - -2007-01-30 Nick Roberts - - * progmodes/gdb-ui.el (gdb-var-delete-1): New function. - (gdb-var-delete): Use it. - (gdb-var-update-handler-1): Handle value "invalid" for MI field - `in_scope'. - -2007-01-30 Michael Albinus - - * files.el (get-free-disk-space): Return nil for remote directories. - - * net/ange-ftp.el (ange-ftp-ls): In case of wildcards, use "ls" - instead of "dir". - -2007-01-30 Chong Yidong - - * type-break.el (type-break-catch-up-event): New function. - (type-break-demo-hanoi, type-break-demo-life) - (type-break-demo-boring): Use it. - - * image-mode.el (image-mode): Don't automatically view as image. - (image-toggle-display): Add `disabled' property. - -2007-01-29 Juanma Barranquero - - * isearchb.el (isearchb-iswitchb): - * ps-print.el (ps-build-face-reference): - * emacs-lisp/shadow.el (list-load-path-shadows): - * eshell/esh-cmd.el (eshell-rewrite-for-command): - * international/mule.el (find-auto-coding): - * mail/supercite.el (sc-attrib-selection-list): - * progmodes/cc-defs.el (c-emacs-features): - * progmodes/cc-vars.el (c-offsets-alist): - * progmodes/flymake.el - (flymake-init-create-temp-source-and-master-buffer-copy): - Fix typos in docstrings (some suggested by Chris Moore). - - * progmodes/vhdl-mode.el (vhdl-components-package-name) - (vhdl-get-library-unit, vhdl-corresponding-begin) - (vhdl-skip-case-alternative, vhdl-backward-skip-label) - (vhdl-align-region-2, vhdl-electric-dash, vhdl-case-word) - (vhdl-hooked-abbrev, vhdl-hs-forward-sexp-func) - (vhdl-font-lock-match-item): Fix typos in docstrings. - (vhdl-get-library-unit, vhdl-get-block-state, vhdl-sort-alist) - (vhdl-set-offset, vhdl-fix-case-region-1, vhdl-scan-directory-contents) - (vhdl-speedbar-insert-project-hierarchy): - Improve argument/docstring consistency. - -2007-01-29 Kenichi Handa - - * international/titdic-cnv.el (py-converter): Fix previous change. - -2007-01-29 Chong Yidong - - * jka-compr.el (jka-compr-partial-uncompress) - (jka-compr-call-process): Rebind default-directory if it is - invalid. Suggested by Chris Moore. - - * comint.el (comint-insert-input): Handle situation where the - selected buffer is not the clicked buffer. - -2007-01-29 Kenichi Handa - - * international/ja-dic-cnv.el (skkdic-convert): - Add byte-compile-disable-print-circle:t at the head. - - * international/titdic-cnv.el (tit-process-header): - Add byte-compile-disable-print-circle:t at the head. - (miscdic-convert): Likewise. - (py-converter): Skip the header comments. - - * emacs-lisp/bytecomp.el (byte-compile-disable-print-circle): - New variable. - (byte-compile-output-file-form): Bing print-circle to nil if - byte-compile-output-file-form is not nil. - (byte-compile-output-docform): Likewise. - -2007-01-28 Kim F. Storm - - * emulation/cua-base.el (cua-global-keymap, cua--region-keymap): - Declare earlier to avoid byte compiler warnings. - -2007-01-28 Markus Triska - - * speedbar.el (speedbar-make-specialized-keymap): Doc fix. - -2007-01-28 Chong Yidong - - * play/gamegrid.el (gamegrid-kill-timer): Cancel timer directly. - (gamegrid-add-score-with-update-game-score-1): Allow local quits - when calling update-game-score program. Remove unnecessary - save-excursion. - - * play/tetris.el (tetris-new-shape): Stop drawing if game is over. - -2007-01-28 Nick Roberts - - * progmodes/gdb-ui.el (gdb-breakpoint-regexp): Declare earlier to - avoid compiler warning. - (gdb-var-update-handler-1): Consider that the MI field `in_scope' - might have values other than "true" or "false". - -2007-01-28 Richard Stallman - - * textmodes/fill.el (fill-paragraph-function): Doc fix. - (fill-paragraph): Bind fill-paragraph-function to t to avoid recursion. - - * emacs-lisp/pp.el (pp-eval-last-sexp): Don't eval here. - - * image.el (image-type-header-regexps): Make GIF regex more specific. - - * tutorial.el (tutorial--default-keys): Check M-DEL, not `M-backspace'. - Don't check `backspace'. - (tutorial--find-changed-keys): Look up bindings in a temp buffer - in Fundamental mode. - - * startup.el (fancy-splash-text, normal-splash-screen): - Mention C-g. - - * simple.el (eval-expression): Don't use eval-last-sexp-print-value - when inserting in buffer. - - * vc-arch.el (vc-arch-file-id): Move with-current-buffer - inside the if. - -2007-01-27 Richard Stallman - - * obsolete/awk-mode.el (awk-font-lock-keywords): Add "do". - -2007-01-27 Guanpeng Xu - - * add-log.el (add-log-current-defun): Skip the semicolon ``;'' for - enum/union/struct/class definition. - Revert change to call `forward-sexp' multiple times. - -2007-01-27 Chong Yidong - - * files.el (hack-local-variables-confirm): Don't keep trying to - read an event from an empty kbd macro. - -2007-01-27 Eli Zaretskii - - * server.el (server-start): Mention LEAVE-DEAD arg in the doc string. - -2007-01-27 Ben North - - * outline.el (outline-promote, outline-demote): Doc fix. Rename - the arg CHILDREN -> WHICH. - -2007-01-27 Michael Albinus - - * net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Set - default-directory to a sane value when calling start-process. - -2007-01-27 Eli Zaretskii - - * ls-lisp.el (ls-lisp-use-localized-time-format): New defcustom. - (ls-lisp-format-time-list): Doc fix. Mention - ls-lisp-use-localized-time-format. - (ls-lisp-format-time): Use ls-lisp-format-time-list if - ls-lisp-use-localized-time-format is non-nil, even if a valid - locale is defined. - -2007-01-27 Juanma Barranquero - - * jka-compr.el (jka-compr-shell): Doc fix. - - * jka-cmpr-hook.el (jka-compr-compression-info-list): Doc fix. - -2007-01-26 Vinicius Jose Latorre - - * ps-print.ps: Fix background height. - (ps-print-version): New version 6.7.2. - -2007-01-26 Eli Zaretskii - - * makefile.w32-in (finder-data, custom-deps): Depend on - $(lisp)/loaddefs.el. - -2007-01-24 Dan Nicolaescu - - * Makefile.in (custom-deps, finder-data): Add dependency to loaddefs.el. - -2007-01-24 Miles Bader - - * emacs-lisp/bytecomp.el (byte-compile-output-file-form) - (byte-compile-output-docform): Bind `print-circle' to t. - -2007-01-24 Kenichi Handa - - * international/ja-dic-cnv.el (skkdic-convert): Insert a related - file name of the original SKK dictionary file. - -2007-01-24 Kim F. Storm - - * ido.el (ido-initial-position): New variable. - (ido-read-internal): Set it if default item is specified. - (ido-minibuffer-setup): Position cursor accordingly if set. - (ido-edit-input): C-e moves to end of input if not already there. - (ido-magic-backward-char): C-b does like M-b if prev char is /. - Don't switch to buffer mode if repeating C-b at start of input. - (ido-toggle-ignore): C-a only toggles ignore at start or end of - input; else it moves to start of input. - (ido-kill-buffer-at-head, ido-delete-file-at-head): If cursor is - not at end of input, delete rest of input, rather than normal op. - -2007-01-23 Michael Kifer - - * viper-keym.el (viper-insert-basic-map): Delete binding for S-TAB. - - * ediff-util.el (ediff-clone-buffer-for-region-comparison): Change text - of message. Activate mark. - (ediff-activate-mark): Set transient-mark-mode to t. - - * ediff.el (ediff-regions-wordwise, ediff-regions-linewise): Doc fix. - -2007-01-23 Martin Rudalics - - * help-fns.el (describe-variable): Don't suppress display of - buffer local value when the value is "large". - -2007-01-22 Kim F. Storm - - * ido.el (ido-active): Add XEmacs test from ido-minibuffer-setup. - (ido-initiate-auto-merge, ido-exhibit, ido-minibuffer-setup) - (ido-tidy): Use ido-active. - -2007-01-22 Chris Moore - - * hexl.el (hexl-mode-exit): Add missing quote. - -2007-01-22 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-keyboard-modifier-mask-alist): New constant. - (mac-ae-keyboard-modifiers): New function. - (mac-handle-toolbar-switch-mode): Use it. - (mac-dnd-handle-drag-n-drop-event): Likewise. Set action to `copy' - if keyboard modifiers on drop contain option key. - (mac-dnd-drop-data): Add optional argument `action'. - (special-event-map): Remove binding for M-drag-n-drop. - -2007-01-21 Guanpeng Xu - - * add-log.el (add-log-current-defun): Use CC Mode functions to - find the beginning and end of a defun. - -2007-01-21 Nick Roberts - - * progmodes/gdb-ui.el (gdb-var-create-regexp) - (gdb-var-create-handler): Handle value field in GDB output of - -var-create. - (gdb-max-frames): New variable. - (gdb-stack-buffer, gdb-frames-select): Use it. - (gdb-info-stack-custom): Help user customize gdb-max-frames, - if necessary. - (gdb-get-frame-number): Simplify. - -2007-01-21 Glenn Morris - - * net/tramp.el (tramp-perl-encode, tramp-perl-decode): - Update copyrights. - -2007-01-21 Alan Mackenzie - - * progmodes/cc-cmds.el (c-where-wrt-brace-construct): Correct the - handling of K&R stuff. - -2007-01-21 Roland Winkler - - * textmodes/bibtex.el (bibtex-files): Fix customization type. - -2007-01-21 Vinicius Jose Latorre - - * ps-print.el: Handle frame parameters (background and/or foreground - colors) changing dynamically. Reported by Leo . - (ps-print-version): New version 6.7.1. - (ps-x-frame-property, ps-e-frame-parameter): New aliases. - (ps-frame-parameter): New fun. - (ps-default-fg, ps-default-bg): New default value ('frame-parameter). - Fix doc and customization. - (ps-begin-job): Get frame parameters (background and/or foreground - colors). - (ps-do-despool): Ensure ps-printer-name has a valid value. - -2007-01-21 Nick Roberts - - * progmodes/gdb-ui.el (gdb-debug-log): Rename from gdb-debug-ring. - (gdb-debug-log-max): Rename from gdb-debug-ring-max. - (gud-gdba-marker-filter): Make a value of nil for gdb-debug-ring-max - mean unlimited. - -2007-01-20 Alan Mackenzie - - * progmodes/cc-engine.el (c-in-knr-argdecl): Reformulate to do - much more rigorous analysis of putative K&R regions. - -2007-01-20 Alan Mackenzie - - * progmodes/cc-defs.el (c-go-list-forward, c-go-list-backward): - New functions. - -2007-01-20 Alan Mackenzie - - * progmodes/cc-align.el, progmodes/cc-cmds.el, - * progmodes/cc-defs.el, progmodes/cc-engine.el, - * progmodes/cc-langs.el, progmodes/cc-styles.el, - * progmodes/cc-vars.el: Add my name. - -2007-01-20 Chong Yidong - - * files.el (find-alternate-file): Revert query message to Emacs 21 - version. - -2007-01-20 Eric Hanchrow (tiny change) - - * progmodes/cperl-mode.el (cperl-electric-keywords): Document in - the doc string how to use personal abbrevs without electric - keywords. - -2007-01-20 Alin C. Soare (tiny change) - - * lisp/emacs-lisp/lisp-mode.el (last-sexp-toggle-display): - Fixed cursor position when toggle abbreviated display. - -2007-01-20 Nick Roberts - - * t-mouse.el: Update copyright following assignment by - Alessandro Rubini. - -2007-01-20 Chong Yidong - - * type-break.el (type-break-demo-hanoi, type-break-demo-life) - (type-break-demo-boring): Call read-event instead of read-char. - -2007-01-19 Daniel Pfeiffer (tiny change) - - * progmodes/compile.el: Add handling for makepplog. - -2007-01-19 Reiner Steib - - * textmodes/ispell.el (ispell-change-dictionary): Ensure that - aspell dictionaries are initialized when called non-interactively. - -2007-01-19 Chong Yidong - - * progmodes/compile.el (compilation-loop): New arg limit. - Handle case where the first error is at point-min. - (compilation-next-error): New arg to compilation-loop call. - -2007-01-18 Bruno Haible (tiny change) - - * info.el (Info-default-dirs): Change default info dir to - share/info. - - * paths.el (Info-default-directory-list): Ditto. - -2007-01-18 Chris Moore - - * hexl.el (hexl-before-revert-hook): New function. - (hexl-mode): Use it. - (hexl-after-revert-hook): Just call hexl-mode. - (hexl-mode-exit): Remove before-revert-hook. - -2007-01-17 Stefan Monnier - - * isearch.el (isearch-no-upper-case-p): Look for [:upper:] as well. - -2007-01-16 Martin Rudalics - - * textmodes/ispell.el (ispell-dictionary-alist-3): Replace "---" - by "-" in francais7 otherchars entry. - (ispell-dictionary-alist-5): Replace "." by "[.]" for polish - otherchars entry. - -2007-01-15 Karl Fogel - - * bookmark.el (bookmark-buffer-file-name): Abbreviate the bookmark - path. Rewrite function in `cond' style for readability. - - Suggested by: Stephen Eglen . - (The path shortening, that is, not the rearrarangement.) - -2007-01-15 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-ae-quit-application): New function. - (mac-apple-event-map): Bind "quit application" Apple event to it. - -2007-01-14 Stefan Monnier - - * vc-svn.el (vc-svn-parse-status): Trust the filename argument more - than the program's output. - -2007-01-14 Juanma Barranquero - - * kmacro.el (kmacro-insert-counter, kmacro-set-counter) - (kmacro-start-macro-or-insert-counter) - (kmacro-step-edit-prefix-commands): Fix typos in docstrings. - (kmacro-call-ring-2nd, kmacro-call-ring-2nd-repeat): Doc fixes. - - * longlines.el (longlines-show-hard-newlines): - * ruler-mode.el (ruler-mode-ruler): - * emulation/keypad.el (keypad-setup): - * progmodes/antlr-mode.el (antlr-indent-at-bol-alist): - Fix typo in docstring. - -2007-01-13 Mathias Dahl - - * tumme.el (tumme-cmd-rotate-original-options): Add -outfile option. - Remove redirect character ">". - -2007-01-13 Juanma Barranquero - - * replace.el (perform-replace): Remove leftover code. - -2007-01-12 Richard Stallman - - * replace.el (perform-replace): Don't clear NODENT when computing - the replacement string. - -2007-01-11 Michael Albinus - - * net/tramp.el (tramp-handle-file-local-copy): - Set `enable-multibyte-characters' to nil. Reported by Chris Moore - . - -2007-01-11 Stefan Monnier - - * diff-mode.el (diff-sanity-check-context-hunk-half) - (diff-sanity-check-hunk): New functions. - (diff-find-source-location): Use'em to check the hunks are well-formed. - - * hexl.el (hexlify-buffer, dehexlify-buffer): Don't complain and don't - activate undo when undo is not active. - Reported by Chris Moore . - -2007-01-10 Stefan Monnier - - * ffap.el (ffap-next-regexp, ffap-machine-p, ffap-newsgroup-regexp) - (ffap-newsgroup-p, ffap-alist, ffap-string-at-point-mode-alist) - (ffap-url-at-point): Use char-classes rather than "a-z". - -2007-01-10 Juanma Barranquero - - * ediff-init.el (ediff-autostore-merges): - * textmodes/fill.el (fill-region): Doc fix. - -2007-01-10 Stefan Monnier - - * server.el (server-ensure-safe-dir): UIDs may be floats. - -2007-01-10 Richard Stallman - - * battery.el (battery-linux-proc-acpi): Use ignore-errors - around calls to directory-files. - - * subr.el (momentary-string-display): Use save-excursion. - - * emacs-lisp/pp.el (pp-eval-expression): Once again eval the - argument, but read it as `X' does. - -2007-01-09 Juri Linkov - - * info.el (Info-fontify-node): Don't hide node names of index entries. - - * faces.el (momentary): Change :group to basic-faces where all - basic faces belong to. Add :version. - -2007-01-09 Lennart Borgman - - * tutorial.el (tutorial--display-changes): Show M-x sequence if no - keybinding is found. - (tutorial--find-changed-keys): Never treat null keybinding as a - remapping. - -2007-01-09 Martin Rudalics - - * wdired.el (wdired-xcase-word): Skip non-word read-only characters. - -2007-01-09 Kenichi Handa - - * international/mule-cmds.el - (select-safe-coding-system-interactively): Fix message. - -2007-01-09 Michael Albinus - - * net/tramp.el (tramp-process-one-action): Remove `with-timeout'. - (tramp-process-actions): Add optional parameter TIMEOUT. - (tramp-open-connection-telnet, tramp-open-connection-rsh) - (tramp-open-connection-su): Add timeout of 60". - -2007-01-09 Richard Stallman - - * progmodes/compile.el (compile): Doc fix. - -2007-01-09 Markus Triska - - * tumme.el (tumme-display-thumb): Doc fix. - -2007-01-08 Juanma Barranquero - - * battery.el (battery-search-for-one-match-in-files): - * bindings.el (mode-line-minor-mode-help): - * x-dnd.el (x-dnd-types-alist): - * calendar/icalendar.el (icalendar-import-buffer): - * term/mac-win.el (mac-dnd-types-alist): Fix typo in docstring. - - * progmodes/vhdl-mode.el (vhdl-save-caches): Fix typo in error message. - -2007-01-07 Chris Moore - - * replace.el (replace-regexp): Fix typo in docstring. - -2007-01-07 Alan Mackenzie - - * progmodes/cc-langs.el (c-operators, c-filter-ops): - Amend doc-string and comments. - -2007-01-06 Eli Zaretskii - - * files.el (abbreviate-file-name): Doc fix. - -2007-01-06 Markus Triska - - * subr.el (split-string): Remove spurious ")" from doc string. - -2007-01-05 Takaaki Ota - - * textmodes/table.el (table--warn-incompatibility): - Use display-warning instead of momentary-string-display. - -2007-01-05 Richard Stallman - - * image.el (image-type-header-regexps): Recognize xbm more strictly. - - * simple.el (backward-kill-word): Doc fix. - -2007-01-05 Romain Francoise - - * international/mule.el (sgml-html-meta-auto-coding-function): - Ensure that the buffer contains a HTML document. - -2007-01-05 Dan Nicolaescu - - * faces.el (momentary): Move here ... - * subr.el (momentary): ... from here. - -2007-01-05 Nick Roberts - - * progmodes/gdb-ui.el (gdb-max-children): New customizable variable. - (gdb-speedbar-expand-node): Ask user for confirmation before expanding - large structures/arrays. - -2007-01-04 Juanma Barranquero - - * files.el (find-file-noselect-1, set-visited-file-name): - Allow backup-enable-predicate to be nil. - -2007-01-04 Andreas Schwab - - * progmodes/ebrowse.el (ebrowse-global-prefix-key): Fix typo in - last change. - -2007-01-03 Richard Stallman - - * woman.el (woman-decode-buffer): Clarify error message. - -2007-01-03 Alan Mackenzie - - * progmode/cc-cmds.el (c-mask-paragraph): Fix yesterday's buggy patch. - -2007-01-03 Chris Moore - - * tutorial.el (tutorial--describe-nonstandard-key): Fix typo. - -2007-01-03 Stefan Monnier - - * iswitchb.el (iswitchb-global-map): Use command-remapping if available. - -2007-01-02 Juanma Barranquero - - * emulation/viper.el (viper-custom-file-name, viper-mode): - Fix typos in docstrings. - - * subr.el (momentary-string-display): After moving point, set POS - variable to it to avoid later errors once the buffer is modified. - Doc fix. - -2007-01-02 Alan Mackenzie - - * progmodes/cc-cmds.el (c-mask-paragraph): In a block comment, - check that the "*/" is present before trying to manipulate it. - -2007-01-02 Richard Stallman - - * wid-edit.el (widget-choose): Avoid ugly error for function keys. - - * progmodes/cfengine.el (cfengine-font-lock-syntactic-keywords): - Fix format of value. - - * cus-edit.el (customize-unsaved): Rename from customize-customized. - Change messages accordingly. - (customize-customized): Now alias. - -2007-01-02 Juanma Barranquero - - * files.el (version-control): Doc fix. - -2007-01-01 Alan Mackenzie - - * progmodes/cc-engine.el (c-guess-basic-syntax, case 5N): - Check the format of c-state-cache is valid for an optimisation before - using it. - - * progmodes/cc-engine.el (c-guess-basic-syntax): New case 5Q "we - are at a statement within a macro". Other changes so that only - the first continuation line in a macro gets the symbol - `cpp-define-intro', the others getting `statement', or whatever. - - * progmodes/cc-cmds.el (c-context-line-break): When invoked within - a string, preserve whitespace. Add a backslash only when also in - a macro. - - * progmodes/cc-defs.el: Correct typos. - - * progmodes/cc-cmds.el (c-context-line-break): Don't indent the - new line after an escaped EOL in a string. - - * progmodes/cc-engine.el (c-forward-label): Recognise "foo:" as a - label when it directly follows "else", "do", .... - - * progmodes/cc-engine.el (c-backward-<>-arglist): Tolerate empty - angle brackets (as seen in "explicit specialisations" of C++ - templates). - - * progmodes/cc-vars.el (c-indentation-style): Mention c-file-style - in the doc-string. - - * progmodes/cc-cmds.el (c-mask-paragraph): Fix for C comments, - when the comment ender looks like "=========*/" and is alone on - its line. - - * progmodes/cc-langs.el, progmodes/cc-engine.el: Correct the - spelling of c-opt-op-identiTier-prefix, t -> f. Leave an alias - for the old name. - - * progmodes/cc-mode.el: Bind C-M-a and C-M-e to - c-\(beginning\|end\)-of-defun by default. - - * progmodes/cc-align.el (c-lineup-gnu-DEFUN-intro-cont): - New line-up function, for the DEFUN macro in the Emacs C sources. - Only used in "gnu" style. - - * progmodes/cc-styles.el (c-style-alist): Use this new function in - the "gnu" style. - - * progmodes/cc-cmds.el (c-electric-slash): Extend the handling of - clean-up comment-close-slash also to work when there's a comment - terminator on the line. - (c-beginning-of-defun, c-end-of-defun): Refactor and optimise - these for large arg - only take account of top level {..}, except - for initial and final adjustments. M-- C-M-[ae] now go to the - right defuns when the starting point is between defuns. They use - the four new functions: - (c-in-function-trailer-p, c-where-wrt-brace-construct) - (c-backward-to-nth-BOF-{, c-forward-to-nth-EOF-}): New functions to - support c-\(beginning\|end\)-of-defun. - - * progmodes/cc-engine.el (c-forward-label): Analyze ":" - expressions more rigorously, to exclude bit-field specifiers from - being classed as labels. - (c-forward-label): When analyzing a ":" within a macro, be careful - about using c-forward-syntactic-ws at the macro beginning. - (c-beginning-of-decl-1): Whilst searching for "=" as evidence of a - stmt boundary, check for "operator=", etc. - - * progmodes/cc-mode.el (c-postprocess-file-styles): - Bind inhibit-read-only to t, around the call to - c-remove-any-local-eval-or-mode-variables, so that it works on a - RO file. - - * progmodes/cc-defs.el (c-version): Update the version number to - "5.31.4". - -2007-01-01 Richard Stallman - - * isearch.el (isearch-done): Use FOUND-POINT or FOUND-START - only if we restored isearch-window-configuration. - -2006-12-31 Romain Francoise - - * net/tramp.el (tramp-default-method): Don't use `symbol-function'. - -2006-12-31 Kim F. Storm - - * files.el (auto-mode-case-fold): New defcustom. - (set-auto-mode): If non-nil, perform second case-sensitive pass - through auto-mode-alist if first pass failed. - -2006-12-30 Richard Stallman - - * emacs-lisp/easy-mmode.el (define-global-minor-mode): Doc fix. - -2006-12-30 Ken Manheimer - - * allout.el (allout-encrypt-string): Handle symmetric-key - passphrase caching but leave keypair caching to pgg. - -2006-12-30 Michael Albinus - - Sync with Tramp 2.0.55. - - * net/tramp.el (tramp-completion-mode): Use `wholenump' instead of - `integerp'. `char-equal' could fail else in case of negative - numbers. Reported by Toby Speight . - (top): Check for `font-lock-add-keywords' before calling; it - doesn't exist under XEmacs. - (tramp-yn-prompt-regexp): Fix regexp. Add question from plink. - (tramp-completion-mode): Remove clause (not - tramp-unified-filenames), because the function is called in other - context too, where this check results in wrong results in the - XEmacs case on Windows. - (tramp-touch): UTC handling is not possible for XEmacs. - -2006-12-30 Jan Dj,Ad(Brv - - * scroll-bar.el (previous-scroll-bar-mode): New variable - (set-scroll-bar-mode): Set previous-scroll-bar-mode. - (scroll-bar-mode): Use previous-scroll-bar-mode if set. - - * term/x-win.el: Set scroll bar mode to right if set by X resources. - -2006-12-30 Richard Stallman - - * files.el (make-backup-file-name-1): Precompute abs name - but don't lose the relative name. - - * international/mule-cmds.el (select-safe-coding-system-interactively): - Fix message. - -2006-12-30 Kevin Rodgers (tiny change) - - * files.el (backup-buffer): Show entire backup file name in msg. - -2006-12-30 Juanma Barranquero - - * image.el (image-type-header-regexps, image-type-from-data) - (image-type-from-buffer, image-type-from-file-header): - Revert changes from 2006-12-26. - (image-type-auto-detectable): New variable. - (image-type-auto-detected-p): New function. - - * files.el (magic-mode-alist): Detect image files with - `image-type-auto-detected-p' instead of `image-type-from-buffer'. - -2006-12-29 Nick Roberts - - * dired.el (dired-sort-other): Move test for dired-mode... - (dired-sort-set-modeline): ...to here. - -2006-12-29 Micha,Ak(Bl Cadilhac - - * textmodes/fill.el (fill-comment-paragraph): Document 2006-12-24 - change. Suggested by Stefan Monnier. - -2006-12-29 Kim F. Storm - - * emacs-lisp/bindat.el (bindat--unpack-group, bindat--length-group) - (bindat--pack-group): Let-bind COUNT during repeat block evaluation. - -2006-12-27 Kim F. Storm - - * emacs-lisp/authors.el (authors-aliases): Anchor FSF alias regexp, - so it doesn't accidentally match an fsf.org mail address. - (authors-renamed-files-alist): Add tcover-*.el. - -2006-12-27 Stefan Monnier - - * vc-arch.el (vc-arch-find-version): New function. - - * vc-hooks.el (vc-version-backup-file-name): Revision names may be - composed of arbitrary characters (even /) in some systems. - -2006-12-27 Eli Zaretskii - - * international/mule-cmds.el (select-safe-coding-system-interactively): - Improve the message in the *Warning* buffer. - -2006-12-27 Kim F. Storm - - * ido.el (ido-set-matches-1): Fix last change. If default item is - current buffer, it is ok to be first. - -2006-12-27 Kenichi Handa - - * international/mule-cmds.el (select-safe-coding-system-interactively): - Use face `link' for problematic chars. - -2006-12-27 Kenichi Handa - - * international/mule-cmds.el (select-safe-coding-system-interactively): - Improve the message in *Warning* buffer. - -2006-12-27 Kim F. Storm - - * ido.el (ido-set-matches-1): Never put current buffer first if - there are other matches. - -2006-12-26 Nick Roberts - - * progmodes/gdb-ui.el (gud-watch): Allow duplicate names for watch - expressions. - (gdb-var-delete): Handle duplicate names. Print message for non - root expressions. - (gdb-partial-output-name): Start buffer name with a space. - (gdb-info-breakpoints-custom, gdb-reset): Handle space in above - buffer name. - -2006-12-26 Micha,Ak(Bl Cadilhac - - * mail/footnote.el (Footnote-insert-footnote): Fix the search of the - last footnote when `footnote-spaced-footnotes' is nil. - -2006-12-26 Richard Stallman - - * cus-edit.el (custom-browse-sort-alphabetically) - (custom-buffer-sort-alphabetically) - (custom-menu-sort-alphabetically): Doc fixes. Add autoloads. - - * image.el (image-type-header-regexps): Change element format - to include third item NOT-ALWAYS. - (image-type-from-data): Handle new format. - (image-type-from-buffer): Handle new format. New arg INCLUDE-MAYBES. - (image-type-from-file-header): Pass t for INCLUDE-MAYBES. - -2006-12-26 Guanpeng Xu - - * add-log.el (add-log-current-defun): Call `forward-sexp' - multiple times to pick a member function name defined as - part of nested classes/namespaces. - -2006-12-26 Vinicius Jose Latorre - - * emacs-lisp/easymenu.el (easy-menu-change): New arg MAP to indicate - which keymap should be used to change menu. It does not affect any - existent code. - -2006-12-26 Richard Stallman - - * textmodes/fill.el (fill-paragraph): Check for a minibuffer - rather than for being in a minibuffer window. - -2006-12-25 Daiki Ueno - - * pgg-def.el (pgg-passphrase-coding-system): Default to nil instead of - locale-coding-system. - * pgg-gpg.el (pgg-gpg-process-region): Encode passphrase with eol-type - LF. - -2006-12-25 Michael R. Mauger - - * progmodes/sql.el (sql-mode-abbrev-table): Correct initialization. - (sql-mode-syntax-table): Disable double quoted strings. - (sql-mode-font-lock-object-name): Add TYPE and TYPE BODY. - -2006-12-25 YAMAMOTO Mitsuharu - - * startup.el (fancy-splash-last-input-event): New variable. - (fancy-splash-special-event-action): New function. - (fancy-splash-screens): Temporarily bind special events to it. - Execute command for saved special event before exiting from - recursive editing. - - * term/mac-win.el (mac-keyboard-translate-char, mac-unread-string): - New functions. - (mac-ts-update-active-input-area, mac-ts-unicode-for-key-event): - Use mac-unread-string. - -2006-12-24 Micha,Ak(Bl Cadilhac - - * textmodes/fill.el (fill-comment-paragraph): Prevent the use of - an optimized comment regexp if `comment-start-skip' uses a ^. - * bs.el (bs--up): Remove interactive spec. - -2006-12-24 Chong Yidong - - * woman.el (woman-decode-buffer): Signal error for alien macro sets. - Suggested by James Cloos. - -2006-12-24 Kevin Ryde - - * calendar/cal-dst.el (calendar-dst-starts): Default to second Sunday - in March. - (calendar-dst-ends): Default to first Sunday in November. - -2006-12-24 Ken Manheimer - - * allout.el (allout-encrypt-string): Inhibit use of agent within - body of let form where encryption happens. Acknowledge non-use of - gpg-agent in docstring. - (allout-toggle-subtree-encryption): Acknowledge non-use of - gpg-agent in docstring. - -2006-12-24 Chong Yidong - - * custom.el (custom-add-frequent-value): Alias for custom-add-option. - -2006-12-23 Michael Kifer - - * ediff-diff.el (ediff-diff-options): Clarify docstring. - (ediff-setup-diff-regions): Disallow -u in ediff-diff-options. - - * viper-cmd.el (viper-post-command-sentinel): Protect against errors - in hooks. - (viper-add-newline-at-eob-if-necessary): Add newline only if we - actually modify buffer; ignore errors if occur. - -2006-12-23 Chong Yidong - - * calendar/calendar.el (calendar-mode-map): Switch < and >. - (calendar-mode-line-format): Use mouse-1 bindings, and tweak - formatting. - -2006-12-23 Richard Stallman - - * simple.el (delete-horizontal-space): Doc fix. - -2006-12-23 Eli Zaretskii - - * makefile.w32-in (bootstrap-clean): Run bootstrap-clean-$(SHELLTYPE) - explicitly in a recursive Make, not implicitly through prerequisites, - since the latter is wrong under parallel builds. - -2006-12-22 Eli Zaretskii - - * w32-fns.el (convert-standard-filename): Wrap in save-match-data. - -2006-12-22 Kevin Rodgers (tiny change) - - * progmodes/sh-script.el (sh-make-vars-local): Fix a typo in - message string. - -2006-12-22 Ben North (tiny change) - - * outline.el (outline-next-visible-heading): Fix the case with a - header at end-of-file with no final newline. - -2006-12-22 Robert Thorpe (tiny change) - - * indent.el (tab-always-indent): Doc fix. - -2006-12-22 Chong Yidong - - * info.el (Info-fontify-maximum-menu-size): Bump to 1000000. - (Info-fontify-node): Do fontify indices. - - * tutorial.el (tutorial--detailed-help): Remove unnecessary link - to the Emacs Lisp reference manual. - (tutorial--tab-map): Remove. All callers changed. - (tutorial--find-changed-keys): New elt QUIET, used to... - (tutorial--display-changes): ...ensure that warning messages are - only issued once per changed key. - (tutorial--remove-remarks): Delete unused code-path. - (lang-strings): Remove extraneous formatting. - (tutorial--save-tutorial): Prompt before saving tutorial state. - -2006-12-21 Chong Yidong - - * tutorial.el: Remove `cl' requirement. Clean up whitespace. - Replace '?\ ' by '?\s' throughout. - (tutorial-warning-face): Inherit font-lock-warning-face. Move to - `help' custom group. - (tutorial--key-description): New function. - (tutorial--display-changes): Remove redundant arg. Scan for all - key sequences to avoid false matches. Cleanup. - (tutorial--saved-dir): Save to a subdirectory in .emacs.d to - reduce homedir pollution. - (help-with-tutorial): Call tutorial--display-changes with no arg. - -2006-12-21 Carsten Dominik - - * textmodes/org.el (org-mode-map): Bind org-complete also to M-\t. - -2006-12-20 Michael Albinus - - * net/tramp.el (tramp-default-method): We still need to check for - `executable-find', because it is not bound under Emacs 20. - (tramp-handle-file-name-completion) - (tramp-completion-handle-file-name-completion): Handle optional - parameter PREDICATE. - (tramp-find-default-method): Add code for default values. - -2006-12-20 Nick Roberts - - * progmodes/gdb-ui.el (gdb-stopped): After attaching to a process - make gud-go send "continue". - -2006-12-19 Juanma Barranquero - - * image.el (image-type-header-regexps): Be more specific detecting `pbm' - and `png' files. Use non-capturing parenthesis for `tiff' regexp. - -2006-12-19 Kim F. Storm - - * bindings.el: Bind sigusr1 and sigusr2 in special-event-map - instead of global-map. - - * files.el (magic-mode-alist): Allow matching file type by - calling a function at bob. Check for image types by calling - image-type-from-buffer. Suggested by Juanma Barranquero. - (set-auto-mode): Do it. - -2006-12-19 Michael Albinus - - * net/tramp.el (tramp-methods): Introduce new method `scpc'. - Remove "ControlMaster" option from the other `scp*' methods. - (tramp-default-method): Check for ssh-agent before setting to `scp'. - -2006-12-18 Carsten Dominik - - * textmodes/org.el (org-mode): Show context after isearch. - (org-show-siblings): New function. - (org-show-context): Use `org-show-siblings'. - -2006-12-18 Stefan Monnier - - * emacs-lisp/syntax.el (syntax-ppss-flush-cache, syntax-ppss): - Use syntax-ppss-toplevel-pos. - -2006-12-18 Carsten Dominik - - * textmodes/org.el (org-current-line): Make sure that lines are - counted from beginning of buffer. - (org-table-copy-region, org-table-paste-rectangle): Make sure that - lines are counted from beginning of buffer. - -2006-12-17 Chong Yidong - - * info.el (Info-build-node-completions): Signal error if tag-table - marker is not found. - - * pgg-gpg.el (pgg-gpg-use-agent): Default to t. - -2006-12-17 Alan Mackenzie - - * emacs-lisp/lisp.el (beginning-of-defun-raw): Optimise (for - speed) the case when open-paren-in-column-0-is-defun-start is nil. - Based on code by Martin Rudalics. - - * progmodes/cc-mode.el (c-basic-common-init): Don't set - open-paren-in-column-0-is-defun-start to nil any more. - -2006-12-17 Richard Stallman - - * simple.el (delete-horizontal-space): Use prefix arg. - - * help-fns.el (describe-variable): Improve blank separator lines. - - * files.el (magic-mode-alist): Mark as risky. - - * files.el (make-backup-file-name-1): - Expand backup-directory explicitly. - -2006-12-17 Michael Albinus - - * net/tramp.el (tramp-default-method): Before setting to "pscp", - check whether package password.el is loaded, or Pageant is running. - -2006-12-17 Ulf Jasper - - * calendar/icalendar.el (icalendar-version): Increase to "0.14". - (icalendar--rris): First try Emacs, then XEmacs. - (icalendar--convert-ical-to-diary): Doc fix. - Insert newline at end of target file. - -2006-12-17 Kim F. Storm - - * outline.el (outline-isearch-open-invisible-function): New defvar. - (outline-flag-region): Use it if non-nil for isearch-open-invisible - overlay property instead of outline-isearch-open-invisible. - -2006-12-16 Kim F. Storm - - * ido.el (ido-completion-help): Build ido-cur-list and ido-matches - if ido-directory-too-big is set on entry. - (ido-toggle-ignore, ido-completion-help): Print message while - reading big directory. - -2006-12-15 Richard Stallman - - * shell.el (shell): Doc fix. - -2006-12-15 Kevin Gallagher - - * emulation/edt.el (edt-xserver): - * emulation/edt-mapper.el (edt-xserver): Replace `/' with a `-', - to fix a problem on Cygwin. - - * emulation/edt.el - * emulation/edt-mapper.el - * emulation/edt-lk201.el - * emulation/edt-pc.el - * emulation/edt-vt100.el: Update maintainer's email address. - -2006-12-15 Simon Marshall - - * progmodes/cc-fonts.el (c-font-lock-declarations): Fix previous change. - -2006-12-15 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-atsu-font-table): Remove defvar. - (mac-handle-font-selection): Use mac-atsu-font-face-attributes - instead of mac-atsu-font-table. - (fontset-default): Specify argument MAXIMUM in x-list-fonts calls. - -2006-12-14 Stephen Leake - - * align.el (align-match-tex-pattern): Fix a rare bug which - hanged Emacs. - -2006-12-14 Richard Stallman - - * startup.el (use-fancy-splash-screens-p): Use frame-height - instead of window-height. Pass frame to image-size. - -2006-12-13 Kenichi Handa - - * international/mule-cmds.el (set-locale-environment): - Set default-sendmail-coding-system too. - -2006-12-12 J.D. Smith - - * progmodes/idlw-help.el: Fix copyright notice. - -2006-12-12 Stefan Monnier - - * emacs-lisp/syntax.el (syntax-ppss-toplevel-pos): New fun. - -2006-12-11 Juanma Barranquero - - * subr.el (unread-command-char): Reformat obsolescence info. - -2006-12-11 Richard Stallman - - * emacs-lisp/cl-macs.el (defstruct): Suppress warnings - about calls to cl-struct-setf-expander. - -2006-12-11 Juanma Barranquero - - * ediff-merg.el (ediff-show-clashes-only): Doc fix. - (ediff-combination-pattern): Fix typo in docstring. - - * textmodes/refer.el (refer-find-entry): Doc fix. - (refer-bib-files-regexp, refer-bib-directory, refer-bib-files) - (refer-cache-bib-files, refer-find-next-entry, refer-yank-key): - Fix tipos in docstrings. - - * progmodes/idlwave.el (idlwave-library-path): Fix typos in docstring. - -2006-12-10 Kim F. Storm - - * ido.el (ido-init-completion-maps): Remap backward-kill-word - instead of binding M-backspace. - -2006-12-10 Juanma Barranquero - - * replace.el (replace-match-data, replace-match-maybe-edit): - * calc/calc-aent.el (calc-eval-error): - * emulation/vi.el (vi-char-argument): - * progmodes/cc-langs.el (c-at-vsemi-p-fn) - (c-vsemi-status-unknown-p-fn): Doc fixes. - -2006-12-10 Chong Yidong - - * menu-bar.el (menu-bar-showhide-menu, menu-bar-tools-menu) - (menu-bar-help-menu): Tooltip fixes. Suggested by Francis Wright. - -2006-12-10 Masatake YAMATO - - * progmodes/ld-script.el (ld-script-keywords): Fix a typo. - -2006-12-09 Chong Yidong - - * mouse-sel.el (mouse-sel-mode): Register mouse-2 as a click type. - - * man.el (Man-xref-button-action): New function. If the - `Man-target-string' button property is a function, assume it - accepts a position argument. - (Man-abstract-xref-man-page): Use it. - (Man-default-man-entry): New optional arg POS. - - * wdired.el (wdired-preprocess-symlinks): Make the spaces after - symlink arrows read-only and non-rear-sticky. - -2006-12-09 Martin Rudalics - - * wdired.el (wdired-change-to-wdired-mode, wdired-finish-edit) - (wdired-search-and-rename): Simplify code. - (wdired-preprocess-files, wdired-preprocess-perms): Make - read-only property of preceding character rear-nonsticky to - avoid that it can be modified. Put old-name and old-link - properties on character preceding name and replace - put-text-property by add-text-properties. - (wdired-get-filename, wdired-get-previous-link): Get old-name - and old-link properties from character preceding name and - simplify code. - (wdired-preprocess-perms, wdired-set-bit, wdired-toggle-bit) - (wdired-perms-to-number): Make local-map property - rear-nonsticky to avoid that text following permissions may be - modified. Use add-text-properties instead of put-text-property - when changing a permission bit. - (wdired-change-to-dired-mode): Remove stickiness properties. - -2006-12-09 Juanma Barranquero - - * international/mule-cmds.el (register-input-method): Doc fix. - -2006-12-09 Masayuki Ataka (tiny change) - - * cmuscheme.el (scheme-start-file): Use `let*', not `let'. - -2006-12-09 Micha,Ak(Bl Cadilhac - - * textmodes/flyspell.el (flyspell-hack-local-variables-hook): New. - Force buffer local defs evaluation on local variables loading. - (flyspell-mode-on, flyspell-mode-off): Use it in - `hack-local-variables-hook'. - -2006-12-09 Eli Zaretskii - - * emacs-lisp/find-func.el (find-variable): Doc fix. - - * help-fns.el (variable-at-point): Doc fix. - - * w32-fns.el (w32-append-code-lines): New function. - -2006-12-09 Romain Francoise - - * comint.el (comint-insert-input): Delete obsolete comment. - -2006-12-08 Stefan Monnier - - * net/browse-url.el (browse-url): Set DISPLAY to the one of the - current frame, in case we're connected to several displays. - -2006-12-08 Juanma Barranquero - - * frame.el (other-frame): Doc fix. - (set-frame-parameter): Fix typo in docstring. - -2006-12-07 Kim F. Storm - - * info.el (Info-index): Strip leading colon from topic. - -2006-12-07 Nick Roberts - - * progmodes/gud.el (gud-speedbar-buttons): Deal with references - to pointers. - -2006-12-05 J.D. Smith - - * progmodes/idlwave.el (idlwave-xml-create-class-method-lists): - Trim out spurious class inheritance "None" entries. - -2006-12-05 Kim F. Storm - - * emulation/cua-base.el (cua-paste-pop-rotate-temporarily): Doc fix. - (cua-paste-pop): Rework last change for - cua-paste-pop-rotate-temporarily, so first M-y and C-y works alike, - pasting the head of the kill-ring, and prefix arg C-u M-y inserts the - text inserted by the last M-y command. - -2006-12-05 Micha,Ak(Bl Cadilhac - - * cmuscheme.el (run-scheme, scheme-start-file): Search the start - file in ~/.emacs.d as `init_SCHEMENAME.scm' instead. - - * shell.el (shell): Search the start file in ~/.emacs.d as - `init_SHELLNAME.sh' instead. - -2006-12-05 Glenn Morris - - * progmodes/cperl-mode.el (cperl-mode) - * progmodes/f90.el (f90-mode-abbrev-table) - * progmodes/fortran.el (fortran-mode-abbrev-table) - * progmodes/octave-mod.el (octave-abbrev-table) - * progmodes/sql.el (sql-mode-abbrev-table): Define abbrevs even - if abbrev-table is non-nil (saved user abbrevs may have been restored). - - * progmodes/vhdl-mode.el (vhdl-mode-abbrev-table-init): Do not - clear abbrev table, else saved abbrevs will not be restored. - -2006-12-04 Juanma Barranquero - - * facemenu.el (facemenu-unlisted-faces): Put obsolescence info in - the call to `make-obsolete-variable', not in the docstring. - -2006-12-04 Chong Yidong - - * facemenu.el (facemenu-unlisted-faces): Define as obsolete variable. - -2006-12-04 Vinicius Jose Latorre - - * progmodes/ebnf-abn.el: - * progmodes/ebnf-bnf.el: - * progmodes/ebnf-dtd.el: - * progmodes/ebnf-ebx.el: - * progmodes/ebnf-iso.el: - * progmodes/ebnf-otz.el: - * progmodes/ebnf-yac.el: - * progmodes/ebnf2ps.el: - * delim-col.el: - * printing.el: - * ps-bdf.el: - * ps-mule.el: - * ps-print.el: Remove 'Time-stamp' comment mark. - - * printing.el (pr-menu-bind): Replace 'easy-menu-change' by - 'easy-menu-add-item' when called in Emacs 21 or higher. - -2006-12-04 Stephen Leake - - * progmodes/ada-xref.el (ada-check-current): Doc fix. - (ada-make-body-gnatstub): Doc fix. Remove redundant `progn'. - -2006-12-04 Kim F. Storm - - * bindings.el (global-map): Bind [signal t] to ignore, to have - user signals ignored by default. - -2006-12-04 Juanma Barranquero - - * descr-text.el (describe-char-unicode-data): Use a hidden buffer for - Unicode data file pointed to by `describe-char-unicodedata-file'. - -2006-12-04 Stefan Monnier - - * textmodes/sgml-mode.el (sgml-font-lock-keywords-1): Fix pathological - O(n^2) regexp-search by anchoring the search. - -2006-12-04 Dan Nicolaescu - - * whitespace.el (whitespace-cleanup-internal): Use current - argument for recursive call. - -2006-12-04 Michael Albinus - - * net/tramp.el (tramp-methods): Add "ControlPath" and - "ControlMaster" to scp, scp1 and scp2 methods. Suggested by - Andreas Schwab . - (tramp-do-copy-or-rename-file-out-of-band) - (tramp-open-connection-rsh): Compute format spec for ?t. - (tramp-process-actions): Trace command parameters. - -2006-12-04 Nick Roberts - - * simple.el (toggle-truncate-lines): Clarify doc string. - - * progmodes/gdb-ui.el (gdb-var-delete-children): New function. - (gdb-speedbar-expand-node): Use it. - -2006-12-04 Richard Stallman - - * progmodes/python.el (python-indent): Add safe-local-variable prop. - - * dired.el (dired-revert): Turn off dired-after-readin-hook - around call to dired-readin. - - * menu-bar.el (menu-bar-make-toggle): Add "globally" - to echo area messages. - : - Add "globally" to Help string. - : MESSAGE arg need not say "globally". - (menu-bar-edit-menu ): Rename from select-and-paste. - -2006-12-03 Liam Healy (tiny change) - - * outline.el (outline-end-of-subtree): Don't leave an empty - line hidden as we would a real next heading. - -2006-12-03 Ken Manheimer - - * allout.el (allout-ascend): Add an optional argument to preserve - original position of point when unsuccessful. Also, fix a - docstring error. - (allout-yank-processing): Fix depth shift of multiple-topic so yanks - work again, using allout-ascend's new option. - (allout-setup-mode-map): Extract from allout-mode to initialize - allout-mode-map. Call it on file load, so the mode docstring - substitutions work even if allout mode has not yet been invoked. - (allout-mode): Use new allout-setup-mode-map to track any keybinding - customizations since the map was last processed. Also, refine the - docstring so it's ship-shape for release. - (allout-default-layout, allout-beginning-of-line-cycles) - (allout-distinctive-bullets-string, allout-use-mode-specific-leader) - (allout-encrypt-unencrypted-on-saves, allout-inhibit-auto-fill) - (allout-version, allout-layout, allout-infer-body-reindent) - (allout-infer-header-lead-and-primary-bullet, allout-view-change-hook) - (allout-init, allout-mode, allout-next-heading, allout-chart-subtree) - (allout-previous-heading, allout-goto-prefix-doublechecked) - (allout-current-bullet-pos, allout-next-sibling-leap) - (allout-pre-command-business, allout-encrypted-type-prefix) - (allout-make-topic-prefix, allout-open-topic, allout-rebullet-heading) - (allout-rebullet-topic, allout-rebullet-topic-grunt) - (allout-flag-region, allout-expose-topic, allout-expose-topic) - (allout-old-expose-topic, allout-listify-exposed) - (allout-process-exposed, allout-latex-verb-quote) - (allout-latex-verbatim-quote-curr-line, allout-adjust-file-variable) - (allout-toggle-current-subtree-encryption) - (allout-toggle-subtree-encryption, allout-bullet-isearch): - Remove extraneous open-paren and close paren string escapes. - -2006-12-03 Juanma Barranquero - - * progmodes/ada-xref.el (is-windows, ada-find-in-src-path): Doc fixes. - (ada-xref-pos-ring-max, ada-xref-project-files, ada-xref-initialize) - (ada-prj-default-comp-cmd, ada-quote-cmd, ada-compile-current): - Fix typos in docstrings. - -2006-12-03 Glenn Morris - - * progmodes/cc-align.el - * progmodes/cc-awk.el - * progmodes/cc-cmds.el - * progmodes/cc-compat.el - * progmodes/cc-defs.el - * progmodes/cc-engine.el - * progmodes/cc-langs.el - * progmodes/cc-menus.el - * progmodes/cc-mode.el - * progmodes/cc-styles.el - * progmodes/cc-vars.el - * progmodes/vhdl-mode.el: Fix Copyright format. - -2006-12-02 Chong Yidong - - * mouse.el (mouse-drag-track): Suppress automatic hscrolling for - initial down event. - -2006-12-02 Kim F. Storm - - * emulation/cua-base.el (cua-toggle-set-mark): Doc fix. - (cua-repeat-replace-region): Make M-v more robust. - (cua-paste-pop-rotate-temporarily): New defcustom. - (cua-paste-pop): Use it. - (cua-auto-mark-last-change): New defcustom. - (cua-pop-to-last-change): New helper function. - (cua-set-mark): Use them. - -2006-12-01 Nick Roberts - - * menu-bar.el (toggle-case-fold-search): Clarify doc/help string and - mini-buffer message. - -2006-12-01 Juanma Barranquero - - * descr-text.el (describe-char-unicodedata-file): Fix typo in docstring. - -2006-12-01 Ben North - - * paren.el: Fix the highlight overlay extension when the user types a - sequence of char very fast just before the open parenthesis. - -2006-12-01 Vinicius Jose Latorre - - * ps-mule.el: Eliminate Emacs 20 compatibility. - - * ps-print.el: Eliminate Emacs 20 & 21 compatibility. - (ps-print-version): New version 6.7. - (ps-print-quote): Replace '?\ ' by '?\s'. - -2006-11-30 Juanma Barranquero - - * hexl.el (hexl-goto-address, hexl-forward-char, hexl-forward-short) - (hexl-forward-word, hexl-previous-line, hexl-beginning-of-1k-page) - (hexl-end-of-1k-page): Doc fixes. - (hexl-address-region, hexl-ascii-region, hexl-highlight-line-range): - Fix typos in docstrings. - -2006-11-30 Micha,Ak(Bl Cadilhac - - * ido.el (ido-local-file-exists-p): New. Tell if a file exists - locally, i.e. without using file name handlers. - (ido-read-internal): Allow mono letter host names, avoiding the - `c:' problem by testing if the file exists locally. - (ido-complete, ido-make-file-list, ido-exhibit): Ditto. - -2006-11-30 Masatake YAMATO - - * hexl.el (hl-line-range-function, hl-line-face): Declare variables - to avoid bytecomp warnings. - (hexl-mode-old-ruler-function): New variable. - (hexl-follow-line): Bind `hexl-mode-old-hl-line-range-function' - and `hl-line-range-function' after `require' hl-line. - Then bind `hl-line-range-function' and `hl-line-face'. - Don't require frame. Don't use `with-no-warnings'. - (hexl-activate-ruler): Store the original value of - `ruler-mode-ruler-function' to `hexl-mode-old-ruler-function'. - (hexl-mode-exit): Restore the original value of - `ruler-mode-ruler-function'. - -2006-11-30 Alin C. Soare (tiny change) - - * hexl.el (hexl-mode-old-hl-line-range-function): New variable. - (hexl-mode-old-hl-line-face): New variable. - (hexl-mode, hexl-mode-exit): Fix the highlighting of the current - line when exit from the hexl-mode. - -2006-11-30 Juanma Barranquero - - * emacs-lisp/bytecomp.el (byte-optimize, byte-compile-warnings): - Doc fixes. - - * international/fontset.el (create-fontset-from-ascii-font) - (create-fontset-from-fontset-spec, x-compose-font-name): Doc fixes. - (fontset-name-p): Fix typo in docstring. - - * progmodes/cc-cmds.el (c-indent-exp): Fix typo in docstring. - -2006-11-30 Vinicius Jose Latorre - - * ps-bdf.el: Fix maintainer email. - - * ps-mule.el: Fix maintainer email. Define functions for Emacs 20 - compatibility. - - * ps-print.el: Fix maintainer email. Define functions for Emacs 20 & - 21 compatibility. - (ps-print-quote): Replace '?\s' by '?\ ' to keep compatibility with - Emacs 20 & 21. - -2006-11-29 J.D. Smith - - * progmodes/idlwave.el (idlwave-auto-fill): - Remove paragraph-start let to prevent auto-fill giving up. - -2006-11-28 Juanma Barranquero - - * vt100-led.el (led-state): Fix typo in previous change. - -2006-11-27 Andreas Seltenreich - - * emacs-lisp/easy-mmode.el (easy-mmode-define-navigation): - Fix interactive spec of the functions getting defined to make them - work as documented. - -2006-11-28 Chong Yidong - - * startup.el (fancy-splash-screens): Hide initial splash buffer. - -2006-11-28 Kim F. Storm - - * icomplete.el (icomplete-tidy, icomplete-exhibit): Check that - icomplete-mode is enabled. - -2006-11-28 Carsten Dominik - - * textmodes/org.el (require): Require gnus-sum during compilation - to avoid problem with a macro call. - -2006-11-28 Glenn Morris - - * emacs-lisp/authors.el (authors-aliases): Add new alias. - - * progmodes/fortran.el (fortran-font-lock-keywords-4): Add `min'. - (fortran-window-create-momentarily): Do not need string-to-char. - -2006-11-28 Richard Stallman - - * emacs-lisp/bytecomp.el (byte-compile-get-constant): - Replace incorrect use of assoc-default with a loop. - - * term.el (term-exec-1): Set envvar INSIDE_EMACS. - - * simple.el (next-error-find-buffer): Improve messages. - - * files.el (revert-buffer): Special error message if file - is now not readable. - - * facemenu.el (facemenu-add-new-face): Improve doc strings of - constructed commands. - - * comint.el (comint-exec-1): Provide Emacs version and `comint' - in INSIDE_EMACS. - -2006-11-27 Stefan Monnier - - * diff-mode.el (diff-mode-map): Add a binding for unified->context. - - * server.el: Remove spurious * in docstrings. - (server-process-filter): Exit from recursive editing before processing - a new request. - -2006-11-27 J.D. Smith - - * progmodes/hideshow.el (hs-already-hidden-p): Move to end of - line so hidden blocks will be correctly identified. - -2006-11-27 Juanma Barranquero - - * ledit.el (ledit-save-defun, ledit-mode): - * resume.el (resume-emacs-args-buffer): - * rot13.el (rot13-display-table, rot13-translate-table, rot13) - (rot13-string, rot13-region, rot13-other-window, toggle-rot13-mode): - * vmsproc.el (subprocess-input, start-subprocess, subprocess-command) - (command-send-input, command-kill-line): - * vt100-led.el (led-state, led-on): Fix typos in docstrings. - - * autoarg.el (autoarg-kp-mode): Doc fix. - - * emacs-lock.el (toggle-emacs-lock): Doc fix. Simplify. - (emacs-lock-check-buffer-lock): Doc fix. Use `when'. - (check-emacs-lock): Doc fix. Simplify. - - * iimage.el (iimage-mode-image-regex-alist): Doc fix. - (iimage-mode-buffer): Fix typos in docstring. - - * misc.el (zap-up-to-char): Doc fix. - - * time-stamp.el: Fix comment and obsolescence string for old - functions. Use `dolist' instead of `while'. - - * userlock.el (ask-user-about-lock-help): Fix typos in output message. - - * disp-table.el (standard-display-8bit, standard-display-default): - * ebuff-menu.el (electric-buffer-list): - * ehelp.el (electric-help-command-loop): - * font-core.el (font-lock-mode): - * help-macro.el (make-help-screen): - * help.el (describe-minor-mode-completion-table-for-indicator) - (lookup-minor-mode-from-indicator): - * indent.el (tab-to-tab-stop, move-to-tab-stop): - * info-look.el (info-lookup-guess-custom-symbol): - * locate.el (locate-main-listing-line-p, locate-mode, locate-do-setup): - * longlines.el (longlines-wrap-line): - * macros.el (insert-kbd-macro): - * menu-bar.el (menu-bar-update-buffers): - * misc.el (copy-from-above-command): - * mouse.el (mouse-popup-menubar, mouse-buffer-menu-alist): - * newcomment.el (comment-indent): - * novice.el (disabled-command-function): - * sort.el (sort-fields-syntax-table): - * subr.el (momentary-string-display): - * tar-mode.el (tar-header-block-summarize) - (tar-clear-modification-flags): - * terminal.el (terminal-cease-edit, te-more-break-unwind, te-newline) - (te-clear-rest-of-line, te-clear-rest-of-screen, te-clear-screen) - (te-insert-lines, te-delete-lines, te-delete, te-insert-spaces) - (te-delete-char, te-down-vertically-or-scroll): - * time-stamp.el (time-stamp-string-preprocess): - * tmm.el (tmm-add-one-shortcut): "?\ " -> "?\s". - -2006-11-26 Nick Roberts - - * speedbar.el (speedbar-timer-fn): Revert to old behaviour when not - in GUD mode. - - * progmodes/gud.el (gud-install-speedbar-variables): Remove bindings: - speedbar-expand-line-descendants, speedbar-contract-line-descendants. - -2006-11-26 Jan Dj,Ad(Brv - - * progmodes/cc-vars.el (c-backslash-column): Add . at end of sentence. - -2006-11-26 Stephen Leake - - * progmodes/ada-mode.el (ada-which-compiler): Fix typo in docstring. - (ada-compile-goto-error): Adapt to new argument profile of - compilation-goto-locus in Emacs 22. Don't check if the various - compile functions are defined; we already do "(require 'compile)". - -2006-11-26 Kim F. Storm - - * kmacro.el: Fix commentary. - -2006-11-26 Nick Roberts - - * progmodes/gud.el (gdb): Explain how to run in text command mode - more clearly. Say in error message that multiple debugging - requires restarting GDB. - -2006-11-25 Juanma Barranquero - - * international/fontset.el (create-fontset-from-fontset-spec): Doc fix. - -2006-11-25 Pavel Kobiakov - - * progmodes/flymake.el (flymake-posn-at-point-as-event): New function. - (flymake-popup-menu): Use it instead of posn-at-point. - -2006-11-25 Jan Dj,Ad(Brv - - * progmodes/cc-vars.el (c-backslash-column): - Mention c-backslash-max-column in documentation for c-backslash-column. - -2006-11-24 Lars Hansen - - * net/tramp.el (tramp-default-method): Under Windows, change from - plink to pscp. - (tramp-copy-failed-regexp, tramp-action-copy-failed): Add. - (tramp-actions-copy-out-of-band): - Add pair (tramp-copy-failed-regexp tramp-action-copy-failed). - (tramp-action-out-of-band): Move "Permission denied" handling to - tramp-action-copy-failed. - (tramp-do-copy-or-rename-file-out-of-band): unwind-protect killing of - process buffer. - -2006-11-24 Stefan Monnier - - * pgg-pgp.el (pgg-pgp-process-region): Change `args' from a list of - strings to a single string. Quote `errors-file-name'. - (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region, pgg-pgp-sign-region) - (pgg-pgp-verify-region, pgg-pgp-insert-key, pgg-pgp-snarf-keys-region): - Adjust calls. Use `shell-quote-argument'. - - * international/mule.el (load-with-code-conversion) - (with-category-table): Use with-current-buffer. - (after-insert-file-set-coding): Use restore-buffer-modified-p. - -2006-11-24 Eli Zaretskii - - * mail/smtpmail.el (smtpmail-send-it): - Copy buffer-file-coding-system from the mail buffer. Possibly add a - MIME header for the message encoding. - Bind coding-system-for-write around the call to mail-do-fcc. - Use smtpmail-code-conv-from to encode queued mail messages. - -2006-11-24 Juanma Barranquero - - * tabify.el (tabify-regexp): Doc fix. - - * net/rcirc.el (rcirc-buffer-maximum-lines): - * progmodes/gud.el (jdb): Fix space/tab mixup in docstrings. - - * play/gomoku.el (gomoku-terminate-game, gomoku-human-takes-back) - (gomoku-prompt-for-move, gomoku-human-plays, gomoku-offer-a-draw): - Fix typos in output messages. - (gomoku-vector-length, gomoku-init-board): Fix typos in docstrings. - -2006-11-23 Stefan Monnier - - * hexl.el (hexl-mode): Don't try to guess the max-address: get it from - the horse's mouth. - (hexlify-buffer): Don't re-encode an arg that's already encoded. - -2006-11-23 Michael Kifer - - * ediff-diff.el (ediff-exec-process, ediff-same-file-contents): - Remove condition-case. - -2006-11-23 Glenn Morris - - * progmodes/f90.el (f90-comment-indent): Do not move point in - default case. - -2006-11-21 Romain Francoise - - * emacs-lisp/find-func.el (find-library-name): Don't strip ".el" - from library name (reverts change of 2005-10-25). - -2006-11-21 Lennart Borgman - - * tutorial.el (tutorial--default-keys): Add newline and - delete-backward-char bindings. - (tutorial--detailed-help): Save excursion when finding keys. - Correct warning string for M-x FOO case. - (tutorial--display-changes): Print special keys in tutorial style. - Tweak search regexp for changed keys. - -2006-11-21 Bob Rogers (tiny change) - - * thingatpt.el (thing-at-point-url-at-point): Don't add a - redundant scheme. - -2006-11-21 Diane Murray (tiny change) - - * thingatpt.el (thing-at-point-uri-schemes): Add schemes that - are new to the list at IANA. Also added irc, mms, mmsh. - -2006-11-20 J.D. Smith - - * progmodes/idlw-help.el (idlwave-html-help-location): - Fail gracefully for missing help packages. - (idlwave-help-assistant-open-link): Open full links. - (idlwave-help-assistant-help-with-topic): Direct help link. - - * progmodes/idlwave.el (idlwave-mode): - Set add-log-current-defun-function. - (idlwave-current-routine-fullname): Add, to support add-log. - (idlwave-convert-xml-system-routine-info): Simplify XML parsing - to reflect improvements to xml-parse-file. - (idlwave-mode-menu-def): New binding for help-with-topic. - - * progmodes/idlw-shell.el (idlwave-shell-filter-directory): - Handle extra newlines and spaces. - (idlwave-shell-mode-map): Add help-with-topic. - -2006-11-20 Chong Yidong - - * tutorial.el (tutorial-warning-face): New face. - (tutorial--detailed-help, tutorial--display-changes): Use it. - (tutorial--find-changed-keys): Check ESC-prefix binding specially. - Improve search pattern for occurrences of changed keys. - -2006-11-20 Jan Dj,Ad(Brv - - * term/x-win.el (x-last-cut-buffer-coding): New variable. - (x-select-text): Set it. - (x-cut-buffer-or-selection-value): Check also x-last-cut-buffer-coding - when checking for newness. - -2006-11-19 Juanma Barranquero - - * subr.el (posn-image): - * progmodes/ebnf2ps.el (ebnf-stop-on-error): Fix typos in docstrings. - - * emacs-lisp/regexp-opt.el (regexp-opt): Doc fix. - -2006-11-19 Micha,Ak(Bl Cadilhac - - * progmodes/glasses.el (glasses-separate-parentheses-exceptions): New. - Exceptions to the rule "add a space between an identifier and an - opening parenthesis". Defaulted to the `#define' problem of cpp. - (glasses-parenthesis-exception-p): New. Check if the region is an - exception regarding to that. - (glasses-make-readable): Use it. - (glasses-convert-to-unreadable): Ditto. Modify the file also if - `glasses-convert-on-write-p' and `glasses-separate-parentheses-p' are t. - -2006-11-19 Chong Yidong - - * emacs-lisp/bytecomp.el (byte-compile-if): Revert last change. - -2006-11-19 Stephen Leake - - * progmodes/ada-mode.el (ada-make-body): Fix typo. - - * progmodes/ada-xref.el (ada-make-body-gnatstub): Fix typo. - (ada-xref-initialize): Fix typo. Use add-hook and remove-hook. - -2006-11-18 Chong Yidong - - * emacs-lisp/bytecomp.el (byte-compile-maybe-guarded): Check `and' - conditions for function or variable bindings. - - * comint.el (comint-exec-1): Set EMACS and INSIDE_EMACS to t. - - * progmodes/compile.el (compilation-start): Ditto. - -2006-11-18 Michael Albinus - - * net/tramp.el (top): cl and custom are always required. - -2006-11-18 Jan Dj,Ad(Brv - - * term/x-win.el (x-cut-buffer-or-selection-value): Decode text from - cut-buffers with next-selection-coding-system if not nil. - -2006-11-17 Carsten Dominik - - * textmodes/org.el (org-fix-decoded-time): New function. - (org-display-custom-time): Use `org-fix-decoded-time'. - -2006-11-17 Chong Yidong - - * menu-bar.el (menu-bar-games-menu): Remove yow. - -2006-11-17 Carsten Dominik - - * textmodes/org.el (org-scan-tags): Re-align code fixed. - (org-detach-overlay): Rename from `org-detatch-overlay'. - (org-table-convert-region): Insert space after column separator. - (org-agenda-kill): New command. - (org-metaleft): Call `org-outdent-item' on bullets. - (org-metaright): Call `org-indent-item' on bullets. - (org-timestamp-change): Set `org-last-changed-timestamp'. - (org-current-line): Make sure (bolp) returns correct result. - (org-agenda-change-all-lines): Make sure TODO are highlighted. - -2006-11-17 Stefan Monnier - - * pcvs.el (cvs-retrieve-revision): Set buffer-file-coding-system. - -2006-11-16 Chong Yidong - - * mouse.el (global-map): Change 2006-08-16 fix to call - mouse-yank-at-click explicitly, since mouse events are not carried - over into keyboard macros. - -2006-11-16 Kim F. Storm - - * ido.el (ido-file-internal): Use current buffer's file name as default - choice for ido-find-alternate-file. Suggested by Matt Hodges. - -2006-11-15 Ken Manheimer - - * allout.el (allout-doublecheck-at-and-shallower): Clarify docstring. - (allout-inhibit-aberrance-doublecheck): Rename from - allout-during-yank-processing. All callers changed. - (allout-ascend): Provide for unusual case where some topic after - the first in file is at lower depth than the first. - (allout-shift-in): Ensure the offspring of the new containing - topic are exposed. - (allout-encrypt-string): Preserve the coding-system of the text, - according to that of the containing buffer. - (allout-toggle-subtree-encryption): When the text being encrypted - requires a different coding system, offer to preserve the coding - system using a file local var. - -2006-11-15 Simon Marshall - - * progmodes/cc-fonts.el (c-font-lock-declarators): Use c-at-toplevel-p - to recognise "T t()" as a function declaration, rather than a - variable instantiation, iff at the top-level or inside a class - declaration. Suggested by Feng Li . - -2006-11-14 Stephen Leake - - * progmodes/ada-xref.el (ada-parse-prj-file): - Don't delete project buffer; user may want to edit it. - (ada-xref-set-project-field, ada-xref-current-project-file) - (ada-xref-current-project, ada-show-current-project) - (ada-set-main-compile-application): New functions. - (ada-xref-get-project-field, ada-require-project-file): - Normalize use of ada-prj-default-project-file. - (ada-gdb-application, ada-get-ada-file-name, ada-make-body-gnatstub): - Normalize use of ada-require-project-file. - (ada-prj-find-prj-file): Improve doc string, comments. - - * progmodes/ada-mode.el (ada-mode-version): Bump version. - (ada-create-keymap): Add \C-c\C-m 'ada-set-main-compile-application. - (ada-create-menu): Add ada-set-main-compile-application, - ada-show-current-main, ada-show-current-project. - -2006-11-14 Stefan Monnier - - * progmodes/python.el (inferior-python-mode-syntax-table): New var. - (inferior-python-mode): Use it. - -2006-11-14 Andreas Schwab - - * term/xterm.el (terminal-init-xterm): Add more key bindings. - -2006-11-13 Kim F. Storm - - * ido.el (ido-copy-current-word): C-o copies region if active. - -2006-11-13 Carsten Dominik - - * textmodes/org.el (org-emph-face): Fix typo in variable name. - -2006-11-13 Juanma Barranquero - - * ediff.el (ediff-revision): - * files.el (set-visited-file-name): - * mail/rmailout.el (rmail-output-body-to-file): - Use `format', not `message', in `y-or-n-p' call. - -2006-11-13 Carsten Dominik - - * textmodes/org.el (org-metaleft): Call `org-outdent-item' on bullets. - (org-metaright): Call `org-indent-item' on bullets. - (org-timestamp-change): Set `org-last-changed-timestamp'. - (org-current-line): Make sure (bolp) returns correct result. - (org-agenda-change-all-lines): Make sure highlighting TODO always works. - -2006-11-12 Richard Stallman - - * language/european.el (turkish-case-conversion-enable) - (turkish-case-conversion-disable): New functions. - ("Turkish" lang env): Use them. - - * international/characters.el (case table): - Do nothing special for i and I. - - * subr.el (remove-overlays): Fix last change. - - * cus-edit.el (custom-save-all): Use find-file-visit-truename - for visiting the custom file. - -2006-11-12 Markus Triska - - * play/handwrite.el (handwrite): Also process lines not ending - with newline. Replace some position-fiddling with different - logic. Improve performance. - -2006-11-12 Stephen Leake - - * progmodes/ada-xref.el (ada-prj-default-check-cmd): New variable, - replacing deleted variable `ada-check-switch'. - (ada-project-file-extension): Rename to `ada-prj-file-extension'. - (ada-xref-project-files): Improve doc string. - (ada-find-executable): New function. - (ada-initialize-runtime-library): Use `ada-find-executable'. - (ada-xref-set-default-prj-values): In compile commands, don't need - `ada-cd-command'; `compile' does that more portably. - Use ada-prj-default-check-cmd. - (ada-parse-prj-file): Don't set 'debug_post_cmd, 'debug_pre_cmd - properties if not specified in project file. - (ada-goto-declaration): Display useful message for new error - 'error-file-not-found. - (ada-get-ada-file-name, ada-find-in-src-path): Signal new error - 'error-file-not-found. - (ada-get-all-references): Match latest ali syntax. Signal new - error 'error-file-not-found. - (ada-find-in-ali): Match latest ali syntax. - (ada-make-filename-from-adaname): Handle different semantics of - gnatkr in GNAT 3.15p vs later. - - * progmodes/ada-stmt.el (ada-func-or-proc-name): Match changes to - ada-procedure-start-regexp. - (ada-or-accept, ada-or-delay, ada-or-terminate): Improve doc string. - - * progmodes/ada-mode.el: Replace conditional (require 'ispell) - with defvar. - (ada-language-version): Rename ada05 -> ada2005. - (ada-align-region-separate): Add `eval-when-compile'. - (ada-name-regexp): Remove unneeded escapes in regexp character - alternative. - (ada-compile-goto-error-file-linenr-re): New constant. - (ada-matching-start-re): Handle additional cases `declare', - `procedure', `function'. - (ada-compile-goto-error): Handle "... at line nn". - (ada-mode): Clearer syntax, comments for ff-special-constructs. - Delete support for old versions of `align'. - (ada-search-prev-end-stmt): Handle additional keyword `private'. - (ada-check-defun-name): Simplify handling of `declare'. - (ada-goto-matching-start): Handle nested `begin ... end'. - Handle `declare', `protected', `procedure', `function'. - (ada-create-menu): Presence of arm95 is not conditional on using - GNAT compiler. - -2006-11-12 Juanma Barranquero - - * emacs-lisp/re-builder.el (reb-mode): Set `blink-matching-paren' to - nil in the *RE-Builder* buffer (it causes spurious error messages). - - * server.el (server-visit-files): If `minibuffer-auto-raise' has - been set to t, respect it. - -2006-11-11 Stephen Leake - - * progmodes/ada-mode.el: Delete `eval-and-compile' around `require'. - Delete commented out code for old Emacs versions. Autoloading of - "ada-xref", "ada-prj" is useful even if compiler is not GNAT. - (ada-mode-version): Bump version number. - (ada-95-string-keywords, ada-2005-string-keywords) - (ada-2005-keywords, ada-name-regexp): New constant. - (ada-language-version, ada-procedure-start-regexp, ada-mode) - (ada-font-lock-keywords): Add support for Ada 2005 keywords. - (ada-package-start-regexp): Support private packages, include package - name (for ada-set-point-accordingly). - (ada-next-procedure, ada-previous-procedure) - (ada-which-function-are-we-in): Match changes to - ada-procedure-start-regexp. - (ada-make-body): Make non-interactive; not a user function. - (ada-make-subprogram-body): Improve doc string. - -2006-11-11 Romain Francoise - - * progmodes/cperl-mode.el (cperl-mode): Before adding to it, make - `compilation-error-regexp-alist' buffer-local, since we changed - `compilation-error-regexp-alist-alist' locally. - -2006-11-11 Juanma Barranquero - - * server.el (server-visit-files): Bind `minibuffer-auto-raise' - to the value of `server-raise-frame'. - -2006-11-11 Glenn Morris - - * ido.el (ido-enable-prefix) - * ses.el (ses-call-printer-return) - * net/tramp.el (tramp-unified-filenames) - * progmodes/cc-align.el (c-lineup-string-cont) - * progmodes/compile.el (compilation-directory-matcher) - * progmodes/ebnf2ps.el (ebnf-stop-on-error) - * progmodes/vhdl-mode.el (vhdl-reset-active-high) - (vhdl-clock-rising-edge) - * textmodes/org.el (org-export-with-timestamps) - (org-export-remove-timestamps-from-toc) - (org-export-with-tags): Improve previous doc fixes. - -2006-11-11 Richard Stallman - - * textmodes/flyspell.el (flyspell-mode-map): - Bind C-c $ instead of M-RET. - -2006-11-10 Simon Marshall - - * progmodes/cc-fonts.el (c-font-lock-declarations): Don't overwrite - fontification for "case" and "default" keywords. - -2006-11-10 Andreas Schwab - - * calendar/cal-dst.el (calendar-dst-check-each-year-flag): - Avoid starting sentence with "nil". - -2006-11-10 Juanma Barranquero - - * server.el (server-raise-frame): New option. - (server-switch-buffer): Use it. - -2006-11-10 Nick Roberts - - * progmodes/gdb-ui.el (gdb-many-windows): Start doc string - with a capital. - -2006-11-10 Carsten Dominik - - * textmodes/org.el (org-show-hierarchy-above) - (org-show-following-heading): Fix typo in default value. - (org-scan-tags): Make the search case-sensitive. - (org-tags-sparse-tree): Don't overrule - `org-show-following-heading' and `org-show-hierarchy-above'. - (org-reveal): New command. - (org-show-context): Rename from `org-show-hierarchy-above'. - (org-fast-tag-selection-single-key): New option. - (org-fast-tag-show-exit, org-set-current-tags-overlay): New functions. - (org-tags-overlay): New variable. - (org-agenda-todo-ignore-deadlines): New option. - ("session"): Add circular data structure `org-mark-ring' to - exceptions list in session.el. - (org-agenda-window-setup, org-agenda-restore-windows-after-quit): - New options. - (org-agenda-quit): Use `org-agenda-restore-windows-after-quit'. - (org-prepare-agenda, org-agenda-quit): Use `org-agenda-window-setup'. - (org-pre-agenda-window-conf, org-blank-before-new-entry): New vars. - (org-finalize-agenda): Activate bracket links in agenda. - (org-at-timestamp-p, org-at-date-range-p): Additional argument - INACTIVE-OK. - (org-show-hierarchy-above, org-show-following-heading): - List values allowed for fine-tuned configuration. - (org-show-hierarchy-above): New argument CONTEXT, use the - fine-tuned settings in `org-show-hierarchy-above' and - `org-show-following-heading'. - (org-display-custom-time): New function. - (org-toggle-time-stamp-overlays, org-insert-time-stamp): New function. - (org-display-custom-times, org-time-stamp-custom-formats): - (org-maybe-intangible): New macro. - (org-activate-bracket-links, org-hide-wide-columns): - Use `org-maybe-intangible'. - (org-open-file): Use `shell-quote-argument'. - (org-display-internal-link-with-indirect-buffer): New option. - (org-file-remote-p): Get regexp from list. - (org-link-expand-abbrev): New function. - (org-link-abbrev-alist): New option. - (org-open-at-point, org-cleaned-string-for-export): - Call `org-link-expand-abbrev'. - (org-timeline, org-agenda-list, org-todo-list) - (org-tags-view): Remove the KEEP-MODES argument. - (org-finalize-agenda-hook): New hook. - (org-get-alist-option): New function. - (org-follow-timestamp-link): New function. - (org-open-at-point): Call `org-follow-timestamp-link'. - (org-log-note-marker, org-log-note-purpose) - (org-log-note-window-configuration): New variables. - (org-add-log-maybe, org-add-log-note, org-store-log-note): New funs. - (org-log-note-headings): New option. - (org-dblock-write:clocktable): Bug fix, removed infinite loop. - (org-store-link): Support for dired-mode. - (org-open-file): Substitute environment variables into filename. - (org-last): New defsubst. - (org-agenda-re-align-tags): New function. - (org-agenda-align-tags-to-column): New option. - (org-agenda-timeline): Group removed. - (org-prepare-agenda, org-prepare-agenda-buffers) - (org-run-agenda-series, org-timeline, org-agenda-list) - (org-todo-list, org-tags-view): Call `org-agenda-prepare' and set - the text property inticating the agenda type. - (org-agenda-post-command-hook): Get agenda type from text property - at point. - (org-agenda): Handle command sets. Set `org-agenda-last-arguments' - and obey `org-agenda-overriding-arguments'. - (org-agenda-overriding-arguments, org-agenda-last-arguments): New vars. - (org-agenda-goto-today, org-agenda-later, org-agenda-earlier) - (org-agenda-week-view, org-agenda-day-view): - Use `org-agenda-overriding-arguments' to make updating work with - multi-block agendas. - (org-agenda-prefix-format): Allow different formats for the - different agenda entry types. - (org-timeline-prefix-format): Option removed, use - `org-agenda-prefix-format' instead. - (org-prepare-agenda): New function. - (org-select-timeline-window): Option removed, use - `org-select-agenda-window' instead. - (org-respect-restriction): Variable removed. - (org-cmp-tag): New function. - (org-agenda-sorting-strategy, org-entries-lessp): - Implement sorting by last tag. - (org-complete): Better completion in in-buffer option lines. - (org-in-item-p): New function. - (org-org-menu): Add entries for checkboxes. - (org-cycle): Extra brouping in outline-regexp, because it is used - in a search with "^" prepended. - (org-provide-checkbox-statistics): New option. - (org-set-font-lock-defaults): Highlight checkbox statistics. - (org-update-checkbox-count-maybe) - (org-get-checkbox-statistics-face): New functions. - (org-update-checkbox-count): New command. - (org-insert-item, org-toggle-checkbox): - Call `org-update-checkbox-count-maybe'. - (org-export-as-html): XEmacs compatibility for coding system. - (org-force-cycle-archived): New command. - (org-cycle-hide-archived-subtrees): Display message when ARCHIVE - overrules cycling. - (org-fix-position-after-promote): If the line contains only a todo - keyword, add a final space. - (org-promote-subtree, org-demote-subtree): - Call `org-fix-position-after-promote'. - -2006-11-10 Glenn Morris - - * calendar/cal-dst.el: Do not assume DST starts/ends on the same - date in every year. - (calendar-dst-check-each-year-flag): New customizable variable. - (calendar-dst-find-data): New function, extracted from - calendar-current-time-zone. - (calendar-current-time-zone): Use calendar-dst-find-data. - (calendar-dst-transition-cache): New variable. - (calendar-dst-find-startend, calendar-dst-starts) - (calendar-dst-ends): New functions. - (calendar-daylight-savings-starts) - (calendar-daylight-savings-ends): Change value to use - calendar-dst-starts, calendar-dst-ends; respectively. - - * progmodes/f90.el (f90-indent-region): Bind case-fold-search to t. - - * ido.el (ido-enable-prefix) - * ses.el (ses-call-printer-return) - * net/tramp.el (tramp-unified-filenames) - * progmodes/cc-align.el (c-lineup-string-cont) - * progmodes/compile.el (compilation-directory-matcher) - * progmodes/ebnf2ps.el (ebnf-stop-on-error) - * progmodes/gdb-ui.el (gdb-many-windows) - * progmodes/vhdl-mode.el (vhdl-reset-active-high) - (vhdl-clock-rising-edge) - * textmodes/org.el (org-export-with-timestamps) - (org-export-remove-timestamps-from-toc, org-export-with-tags) - (org-read-date): Doc fix (Nil -> nil). - -2006-11-10 Jan Dj,Ad(Brv - - * term/x-win.el (x-select-text, x-cut-buffer-or-selection-value): - Encode/decode text to/from cut buffers to/from iso-latin-1 only. - -2006-11-10 Juanma Barranquero - - * bs.el (bs--window-for-buffer): Remove. - (bs--show-with-configuration): Use `get-window-with-predicate' - instead of `bs--window-for-buffer'. - -2006-11-10 Kenichi Handa - - * files.el (revert-buffer): Fix previous change. - -2006-11-09 Juanma Barranquero - - * bs.el (bs--redisplay): Fix typo in docstring. - (bs--window-config-coming-from): Make frame-local. - (bs--restore-window-config): New function. - (bs-kill, bs-select, bs-select-other-window) - (bs-select-other-frame): Use it. - (bs--window-for-buffer): Return as soon as a matching buffer is found. - (bs--show-with-configuration): Save the window configuration as a - frame local var, and only if *buffer-selection* is not already - visible on this frame. - -2006-11-08 Chong Yidong - - * vc-svn.el (vc-svn-admin-directory): New var. - (vc-svn-registered, vc-svn-responsible-p) - (vc-svn-repository-hostname): Use it. - Suggested by arit93@yahoo.com. - -2006-11-08 Juanma Barranquero - - * ldefs-boot.el: Regenerate. - -2006-11-08 Alan Mackenzie - - * emacs-lisp/lisp.el (beginning-of-defun-raw): Code up the - case (eq open-paren-in-column-0-is-defun-start nil) by searching - for least nested open-paren. - -2006-11-08 Romain Francoise - - * subr.el (remove-overlays): Fix typo in last change. - -2006-11-08 Richard Stallman - - * subr.el (remove-overlays): Call overlay-recenter. - -2006-11-08 Vinicius Jose Latorre - - * printing.el (pr-alist-custom-set, pr-ps-utility-custom-set) - (pr-ps-name-custom-set, pr-txt-name-custom-set): Return back the old - behaviour. - (pr-menu-bind): Act on global-map instead of menu-bar-file-menu - directly. - -2006-11-08 Juanma Barranquero - - * ido.el (ido-ignore-extensions, ido-show-dot-for-dired) - (ido-max-dir-file-cache, ido-decorations) - (ido-rewrite-file-prompt-functions, ido-use-mycompletion-depth) - (ido-magic-backward-char, ido-enter-dired) - (ido-enter-insert-buffer, ido-enter-insert-file, ido-dired) - (ido-list-directory, ido-first-match, ido-only-match) - (ido-subdir, ido-indicator): Fix typos in docstrings. - (ido-buffer-internal, ido-completion-help): Fix typos in messages. - (ido-read-internal): Fix typo in error message. - -2006-11-08 Kenichi Handa - - * international/mule-cmds.el (set-default-coding-systems): - Always set default-file-name-coding-system to utf-8 for Mac Darwin. - -2006-11-08 Juanma Barranquero - - * makefile.w32-in (setwins): Remove. - (WINS_ALMOST): New macro. - (WINS): Use it. - (autoloads): Don't extract autoloads from files in obsolete/. - -2006-11-07 Chong Yidong - - * whitespace.el (whitespace-buffer): Call remove-overlays after - overlay-recenter for performance. Suggested by Martin Rudalics. - -2006-11-07 Michael Albinus - - * net/tramp.el (tramp-default-method): scp is the default method. - -2006-11-07 Juanma Barranquero - - * server.el (server-start): Save also the Emacs pid in the server file. - -2006-11-07 Carsten Dominik - - * textmodes/reftex-cite.el (reftex-pop-to-bibtex-entry): Preserve - point when displaying a bibtex cross reference in the echo area. - -2006-11-06 Juanma Barranquero - - * international/mule.el (make-char): Fix typo in docstring. - (load-with-code-conversion, charsetp): Doc fixes. - - * international/ja-dic-cnv.el (skkdic-convert): - * cus-edit.el (hook): Fix typo in docstring. - -2006-11-06 Chong Yidong - - * cus-edit.el (custom-mode-map): Move defvar above code using it. - (custom-mode-link-map): New variable. - (custom-group-link, custom-manual): Use follow-link. - -2006-11-06 Roland Winkler - - * textmodes/bibtex.el: Fix typo in name of author of bibtex.el, - "Mark Shapiro" -> "Marc Shapiro". Update his email address. - -2006-11-06 Richard Stallman - - * textmodes/flyspell.el (flyspell-correct-word-before-point): - New function broken out of flyspell-correct-word. - (flyspell-mode-map): Bind it to M-RET. - (flyspell-correct-word): Call it. - - * textmodes/fill.el (fill-minibuffer-function): New function. - (fill-paragraph): Bind fill-paragraph-function to - fill-minibuffer-function. - - * ruler-mode.el (ruler-mode-map): Add bindings for up-events - so that they aren't undefined. - - * dired.el (dired-readin): Locally bind file-name-coding-system. - - * bindings.el: Shorten and clarify usual mode line mouse help string. - - * Makefile.in (autoloads): Don't include `obsolete'. - -2006-11-06 Chong Yidong - - * printing.el (pr-alist-custom-set, pr-ps-utility-custom-set) - (pr-ps-name-custom-set, pr-txt-name-custom-set): Don't update the - Printing menu if it's not initialized. - (pr-menu-bind): Act on menu-bar-file-menu directly. - -2006-11-06 Juanma Barranquero - - * help.el (view-emacs-news): Fix typo in error message. - - * menu-bar.el (menu-bar-update-buffers): Fix typo in menu entry. - - * shadowfile.el (shadow-define-regexp-group) - (shadow-literal-groups, shadow-insert-var): Doc fixes. - (shadow-read-files): Fix typo in message. - (shadow-inhibit-overload, shadow-find, shadow-suffix) - (shadow-site-match, shadow-write-todo-file, shadow-insert-var) - (shadow-suffix, shadow-site-match, shadow-expand-file-name) - (shadow-file-match): Fix typos in docstrings. - - * terminal.el (terminal-emulator): Fix typo in message. - - * emacs-lisp/authors.el (authors-fixed-entries): Fix typo. - - * emacs-lisp/lselect.el (x-kill-primary-selection) - (x-delete-primary-selection, x-copy-primary-selection): - Fix typos in error messages. - - * emulation/edt-mapper.el: Fix typo in interactive message. - - * mail/emacsbug.el (report-emacs-bug): Fix typos in output message. - - * textmodes/ispell.el (ispell, ispell-local-dictionary-alist) - (ispell-help): Fix typos in docstrings. - (ispell-help): Fix typo in output message. - - * allout.el (allout-adjust-file-variable) - (allout-passphrase-verifier-string) - (allout-passphrase-hint-string) - (allout-toggle-current-subtree-encryption): - * apropos.el (apropos-synonyms): - * cus-edit.el (hook): - * emacs-lock.el (emacs-lock-from-exiting): - * follow.el (follow-avoid-tail-recenter-p): - * hexl.el (hexl-mode): - * mouse-copy.el (mouse-copy-work-around-drag-bug): - * mouse.el (mouse-set-font): - * resume.el (resume-emacs-args-file): - * rfn-eshadow.el (file-name-shadow-tty-properties): - * t-mouse.el (t-mouse-process, t-mouse-mode): - * emacs-lisp/cust-print.el (custom-print-install) - (custom-print-uninstall, custom-format): - * emacs-lisp/shadow.el (list-load-path-shadows): - * emulation/tpu-edt.el (tpu-help-text) - (tpu-save-all-buffers-kill-emacs, tpu-emacs-replace) - (tpu-reset-control-keys): - * emulation/vip.el (vip-emacs-local-map) - (vip-change-mode-to-emacs): - * emulation/viper.el (viper-mode, viper-set-hooks) - (viper-major-mode-modifier-list): - * emulation/viper-init.el (viper-emacs-state-cursor-color): - * emulation/viper-keym.el (viper-emacs-kbd-map) - (viper-toggle-key): - * mail/feedmail.el (feedmail-queue-reminder) - (feedmail-queue-reminder-alist, feedmail-confirm-outgoing) - (feedmail-confirm-outgoing-timeout, feedmail-nuke-bcc) - (feedmail-nuke-resent-bcc, feedmail-fill-to-cc-fill-column) - (feedmail-sender-line, feedmail-force-binary-write) - (feedmail-from-line, feedmail-deduce-envelope-from) - (feedmail-x-mailer-line, feedmail-message-id-generator) - (feedmail-date-generator, feedmail-fiddle-plex-user-list) - (feedmail-enable-spray, feedmail-spray-this-address) - (feedmail-spray-address-fiddle-plex-list, feedmail-enable-queue) - (feedmail-queue-runner-confirm-global) - (feedmail-ask-before-queue-prompt) - (feedmail-ask-before-queue-reprompt) - (feedmail-prompt-before-queue-standard-alist) - (feedmail-prompt-before-queue-user-alist) - (feedmail-prompt-before-queue-help-supplement) - (feedmail-queue-use-send-time-for-message-id) - (feedmail-queue-default-file-slug, feedmail-queue-fqm-suffix) - (feedmail-mail-send-hook-splitter, feedmail-mail-send-hook) - (feedmail-mail-send-hook-queued) - (feedmail-confirm-addresses-hook-example) - (feedmail-last-chance-hook, feedmail-before-fcc-hook) - (feedmail-queue-runner-mode-setter) - (feedmail-queue-alternative-mail-header-separator) - (feedmail-queue-runner-message-sender) - (feedmail-buffer-eating-function, feedmail-binmail-template) - (feedmail-run-the-queue-no-prompts) - (feedmail-run-the-queue-global-prompt) - (feedmail-queue-subject-slug-maker, feedmail-fiddle-header) - (feedmail-envelope-deducer, feedmail-fiddle-date) - (feedmail-default-message-id-generator) - (feedmail-fiddle-message-id, feedmail-fiddle-x-mailer) - (feedmail-fiddle-spray-address, feedmail-deduce-address-list): - * mail/vms-pmail.el (vms-pmail-save-and-exit, vms-pmail-abort) - (vms-pmail-setup): - * play/dunnet.el (dun-help): - * play/handwrite.el (handwrite): - * play/hanoi.el (hanoi-unix-64): - * progmodes/idlwave.el (idlwave-rescan-asynchronously): - * textmodes/enriched.el (fixed): - * textmodes/org.el (org-file-apps) - (org-emphasis-regexp-components, org-emphasis-alist): - * textmodes/texinfmt.el (batch-texinfo-format): - Fix typos in docstrings. - -2006-11-05 Juanma Barranquero - - * loadhist.el (read-feature): Don't complete features not loaded - from a file (which make `unload-feature' to fail). - -2006-11-05 Reiner Steib - - * add-log.el (add-log-time-zone-rule): Mark as safe-local-variable. - -2006-11-05 Chong Yidong - - * startup.el (command-line-1): Kill emacs if the last frame is - deleted while evaluating the command-line arguments. - -2006-11-05 Richard Stallman - - * startup.el (init-file-had-error): Add doc string. - (fancy-splash-text, fancy-splash-head, fancy-splash-tail): - Use fixed-width font for keyboard key descriptions. - - * cus-edit.el (custom-save-all): Error if saving in .emacs - and it had an error when loaded. - - * dired-aux.el (dired-copy-file-recursive): Catch errors - from recursive copies in the loop, around the recursive call. - -2006-11-05 Micha,Ak(Bl Cadilhac - - * battery.el (battery-linux-proc-acpi): Search an ac_adapter in - `/proc/acpi/ac_adapter/*'. Ditto for the thermometers in - `/proc/acpi/thermal_zone/*'. - (battery-search-for-one-match-in-files): New. Search a regexp in - the content of some files. - -2006-11-05 Martin Rudalics - - * window.el (mouse-autoselect-window-now): Remove variable. - (mouse-autoselect-window-state): New variable. - (mouse-autoselect-window-start, mouse-autoselect-window-cancel) - (mouse-autoselect-window-select, handle-select-window): - Rewritten to make mouse-autoselect-window-timer a one-shot timer. - Suspend delayed autoselection during menu or popup dialog. - - * info-look.el (info-lookup-guess-custom-symbol): New function - for retrieving symbol at point in custom buffers. - (top level) : Add backquote and - comma to ignored characters in regexps of help specifications - for emacs-lisp-mode and lisp-interaction-mode. This permits - looking up symbols in `...' and after a comma. Add help - specifications for custom-mode and help-mode. - -2006-11-04 Eli Zaretskii - - * mail/rmail.el (rmail-redecode-body): New optional argument RAW. - Don't encode body if RAW is non-nil, or if the old encoding is - identical to the new encoding, or if the body contains only - eight-bit-* characters. - -2006-11-04 Yoni Rabkin Katzenell (tiny change) - - * faces.el (faces-sample-overlay, describe-face): Revert last changes. - (faces-sample-overlay): Remove variable. - (describe-face): Insert sample text in the face being described. - -2006-11-04 Martin Rudalics - - * whitespace.el (whitespace-indent-regexp): Make this match any - multiples of eight spaces near the beginning of a line. - (whitespace-buffer): Use `remove-overlays' instead of - `whitespace-unhighlight-the-space' and `overlay-recenter' to - speed up overlay handling. - (whitespace-buffer-leading, whitespace-buffer-trailing): - Make these functions highlight the text removed by - `whitespace-buffer-leading-cleanup' and - `whitespace-buffer-trailing-cleanup' respectively. - (whitespace-buffer-search): Use `with-local-quit'. - Move `format' out of loop to speed up scanning larger buffers. - (whitespace-unhighlight-the-space): Remove `remove-hook' since - that function is never added to a hook. - (whitespace-spacetab-regexp, whitespace-ateol-regexp) - (whitespace-buffer-leading-cleanup) - (whitespace-refresh-rescan-list): Fix docstrings. - -2006-11-03 Ken Manheimer - - * allout.el (allout-during-yank-processing): Cue for inhibiting - aberrance processing during yanks. - (allout-doublecheck-at-and-shallower): Reduce the limit to reduce - the amount of yanked topics that can be aberrant. - (allout-do-doublecheck): Encapsulate this multiply-used recipe in - a function, and supplement with inihibition of doublechecking - during yanks. - (allout-beginning-of-line, allout-next-heading) - (allout-previous-heading, allout-goto-prefix-doublechecked) - (allout-back-to-current-heading, allout-next-visible-heading) - (allout-next-sibling): Use new allout-do-doublecheck function. - (allout-next-sibling): Ensure we made progress when returning - other than nil. - (allout-rebullet-heading): Preserve text property annotations - indicating the text was hidden, if it was. - (allout-kill-line): Remove any added was-hidden annotations. - (allout-kill-topic): Remove any added was-hidden annotations. - (allout-annotate-hidden): Inhibit adding was-hidden text - properties to the undo list. - (allout-deannotate-hidden): New function to remove was-hidden - annotation. - (allout-hide-by-annotation): Use new allout-deannotate-hidden. - (allout-remove-exposure-annotation): Replace by - allout-deannotate-hidden. - (allout-yank-processing): Signal that yank processing is happening - with allout-during-yank-processing. Also, wrap - allout-unprotected's closer to the text changes, for easier - debugging. We need to inhibit-field-text-motion explicitly, in - lieu of the encompassing allout-unprotected. - (outlineify-sticky): Adjust criteria for triggering new outline - decorations to presence or absence of any topics, not just a topic - at the beginning of the buffer. - -2006-11-03 Juanma Barranquero - - * bs.el (bs--show-all, bs--redisplay): - * cus-edit.el (custom-unlispify-menu-entries) - (custom-unlispify-tag-names, custom-prompt-variable): - * expand.el (expand-pos): - * speedbar.el (speedbar-generic-list-tag-p): - * wid-edit.el (widget-image-enable): - * emacs-lisp/checkdoc.el (checkdoc-rogue-space-check-engine): - * emacs-lisp/find-func.el (find-function-noselect) - (find-function, find-variable-noselect, find-variable) - (find-definition-noselect, find-face-definition): - * mail/rmail-spam-filter.el (rsf-scanning-messages-now): - * net/eudc-vars.el (eudc-expansion-overwrites-query): - * progmodes/ada-xref.el (ada-find-in-ali): - * textmodes/flyspell.el (flyspell-check-tex-math-command): - * textmodes/org.el (org-copy-subtree): - * textmodes/table.el (table--row-column-insertion-point-p): - Use "non-nil" in docstrings. - -2006-11-03 Mark Davies - - * sort.el (sort-columns): Set the field separator to tab; on - NetBSD, sort complains if "\n" is used as field separator. - -2006-11-03 NIIMI Satoshi - - * emacs-lisp/pp.el (pp-eval-last-sexp): Evaluate target sexp. - -2006-11-02 Stefan Monnier - - * server.el (server-auth-key): Remove. Replace by a process-property. - (server-start): Don't remove the file of the previous process, but - instead clear out the place for the new file. - (server-start): Set the :auth-key property. - (server-process-filter): Use the :auth-key property. - -2006-11-02 Carsten Dominik - - * textmodes/org.el (org-mode-map): No longer copy - `outline-mode-map' explicitly - this is already done by - `define-derived-mode'. - -2006-11-02 Juanma Barranquero - - * server.el (server-visit-files): Use `when'. - (server-process-filter): When authentication fails, send error - message to client. Wrap `process-send-region' in `ignore-errors' - instead of `condition-case', and remove misleading comment. - -2006-11-01 Juri Linkov - - * simple.el (yank): Doc fix. - -2006-11-01 Stefan Monnier - - * server.el: Try and fit within 80 columns. - (server-start): Make the auth file unreadable by other users. - -2006-10-31 Andreas Seltenreich - - * battery.el (battery-linux-proc-acpi): Prevent range error when - `full-capacity' is 0. - -2006-10-31 Yoni Rabkin Katzenell (tiny change) - - * faces.el (faces-sample-overlay): New defvar. - (faces-sample-overlay): New function to show face sample text. - (describe-face): Use it. - -2006-10-31 Stephen Leake - - * progmodes/ada-stmt.el: Change maintainer, apply - whitespace-cleanup, checkdoc. - (ada-func-or-proc-name): Add doc string. - - * progmodes/ada-prj.el (ada-prj-new): Change maintainer, apply - whitespace-cleanup, checkdoc. Minor improvements to many doc - strings and comments. - (ada-prj-display-page): Change buffer name to more accurately - reflect function. - - * progmodes/ada-xref.el: Change maintainer, apply - whitespace-cleanup, checkdoc. Minor improvements to many doc - strings and comments. Don't look for `gvd' or `ddd' debuggers. - (ada-compile-current): Don't add newlines to commands. - -2006-10-31 Juanma Barranquero - - * server.el: Add support for TCP sockets. - (server-use-tcp, server-host, server-auth-dir): New options. - (server-auth-key): New variable. - (server-ensure-safe-dir): Create nonexistent parent dirs. - Ignore Unix-style file modes on Windows. - (server-start): Crete a TCP or Unix socket according to the value - of `server-use-tcp'. For TCP sockets, create the id/auth file in - `server-auth-dir' directory. - (server-process-filter): Delete process if authentication - fails (which never happens for Unix sockets). - -2006-10-30 David Kastrup - - * subr.el (add-to-list): Don't continue checking if a match has - been found. - -2006-10-30 Chong Yidong - - * tutorial.el: Move defvars to avoid bytecomp warnings. - (tutorial--find-changed-keys): Check if viper-current-state is - bound before using it. - (help-with-tutorial): Check if viper-tutorial is defined before - using it. - -2006-10-30 Lennart Borgman - - * help-fns.el (help-with-tutorial): Move to tutorial.el. - - * tutorial.el: New file. - (help-with-tutorial): Move here from help-fns.el. Added help for - rebound keys. Fixed resume of tutorial. - (tutorial--describe-nonstandard-key, tutorial--sort-keys) - (tutorial--find-changed-keys, tutorial--display-changes) - (tutorial--saved-dir, tutorial--saved-file) - (tutorial--save-tutorial): New functions to support the changes in - help-with-tutorial. - -2006-10-30 Kenichi Handa - - * files.el (revert-buffer): If a unibyte buffer is being reverted - with a coding system for multibyte, set buffer multibyte before - calling insert-file-contents. - -2006-10-30 Stefan Monnier - - * server.el (server-select-display): Use a dummy buffer to detect when - the frame is later used. - (server-select-display): New function. - (server-process-filter): Use it to detect unused temp frames. - -2006-10-29 Stephen Leake - - * progmodes/ada-mode.el: Change maintainer, apply - whitespace-clean, checkdoc. Minor improvements to many doc strings. - (ada-mode-version): New function. - (ada-create-menu): Menu operations are available for all supported - compilers. - -2006-10-29 Lars Hansen - - * net/tramp.el (with-parsed-tramp-file-name): Correct debug spec. - Highlight as keyword. - (tramp-do-copy-or-rename-file): Correct data for 'file-already-exists. - Don't call tramp-method-out-of-band-p for local files. - (tramp-touch): Quote file name. - -2006-10-28 Glenn Morris - - * calendar/calendar.el (cal-html-cursor-month) - (cal-html-cursor-year): Add autoloads for this new package. - (calendar-mode-map): Bind cal-html-cursor-month, cal-html-cursor-year. - -2006-10-28 Anna M. Bigatti - - * calendar/cal-html.el: New file. - -2006-10-28 Chong Yidong - - * emacs-lisp/authors.el (authors-aliases): Update. - -2006-10-27 Chong Yidong - - * version.el (emacs-version): Bump version number to 22.0.90. - -2006-10-26 John W. Eaton - - * progmodes/octave-inf.el (inferior-octave-has-built-in-variables): - New defvar. - (inferior-octave-resync-dirs): Check to see whether Octave has - built-in variables and set inferior-octave-has-built-in-variables. - Check inferior-octave-has-built-in-variables to decide whether to - send commands that set built-in variables or call functions to - change Octave's behavior. - Send "disp (pwd ())" to Octave instead of just "pwd". - (inferior-octave-startup): Send "more off" to Octave instead of - "page_screen_output = 0". - -2006-10-26 Chong Yidong - - * emacs-lisp/cl-indent.el (lisp-indent-259): Indent nil's in the - pattern normally. - -2006-10-26 Nick Roberts - - * bindings.el (mode-line-mode-menu): Remove bindings for global - minor modes (line/column number) as they are on the menubar. - -2006-10-25 Juanma Barranquero - - * term/w32-win.el (x-handle-name-switch): Doc fix. - (w32-standard-fontset-spec): Fix typo in docstring. - - * midnight.el (midnight-buffer-display-time): Doc fix. - (clean-buffer-list-kill-never-buffer-names): Add "*server*". - -2006-10-23 Michael Kifer - - * viper-cmd.el (viper-prefix-arg-com): Define gg as G0. - - * viper-ex.el (ex-read): Quote file argument. - - * ediff-diff.el (ediff-same-file-contents): Expand file names. - - * ediff-mult.el (ediff-append-custom-diff): Quote shell file arguments. - -2006-10-22 Martin Rudalics - - * textmodes/flyspell.el (flyspell-check-region-doublons): - Fix last fix. - -2006-10-23 Nick Roberts - - * bindings.el (mode-line-mode-menu): List global minor modes - before local ones. - -2006-10-23 Kim F. Storm - - * subr.el (add-to-list): Optimize if compare-fn is `eq' or `eql'. - (sit-for): If last command was a prefix arg, add the read-ahead - event to unread-command-events as (t . EVENT) so it will be added - to this-command-keys by read-key-sequence. - -2006-10-22 Martin Rudalics - - * textmodes/flyspell.el (flyspell-word): Skip past all previous - whitespace when checking doublons. - (flyspell-check-region-doublons): Fix doublon regexp. - (flyspell-highlight-incorrect-region): Highlight doublons using - flyspell-duplicate face. - - * progmodes/cperl-mode.el (cperl-invalid-face): Fix defcustom. - -2006-10-22 John Wiegley - - * progmodes/python.el (python-use-skeletons): python-mode was - auto-inserting templates (for those with abbrev-mode on), not only - by default -- *but without a configuration variable to disable - it*. This rendered python-mode completely useless for me, so I - have added `python-use-skeletons', which is now off by default. - -2006-10-22 Chong Yidong - - * progmodes/cperl-mode.el (cperl-mode): Don't assume - font-lock-multiline is auto-local (it's not). - (cperl-windowed-init): Ensure that cperl-font-lock-multiline is - initialized before calling cperl-init-faces. - -2006-10-22 Nick Roberts - - * progmodes/gdb-ui.el (gdb-info-stack-custom): Don't try to give - gdb-stack-position a value when there is no fringe. - - * bindings.el (mode-line-mode-menu): Disable auto-revert-tail-mode - indicator if not visiting a file. - -2006-10-20 David Kastrup - - * window.el (kill-buffer-and-window): Fix a bug where an aborted - operation would still cause some window to collapse later. - -2006-10-20 Stefan Monnier - - * vc.el (vc-switch-backend): Try to be more careful with unwanted - side-effect due to mixing various backends's file properties. - - * vc-svn.el (vc-svn-parse-status): Remove unused arg `localp'. - Add arg `filename' instead. Don't set vc-backend if `filename' is set. - Return `filename's status if applicable. Update callers. - -2006-10-19 Kenichi Handa - - * international/kkc.el (kkc-region): When a key sequence is not - defined, append (this-single-command-raw-keys) to - unread-input-method-events. - -2006-10-19 Juanma Barranquero - - * progmodes/ada-mode.el (ada-in-string-p): Doc fix. - -2006-10-19 YAMAMOTO Mitsuharu - - * version.el (emacs-version): Use mac-carbon-version-string. - - * term/macterm.el (res-geometry): Apply 2006-10-18 change for x-win.el. - -2006-10-19 Jan Dj,Ad(Brv - - * select.el (ccl-check-utf-8, string-utf-8-p): New functions (by - Kenichi Handa). - (xselect-convert-to-string): Decline requests for UTF8_STRING if - the selection is not UTF-8. - -2006-10-18 Juanma Barranquero - - * progmodes/ada-mode.el (ada-83-string-keywords) - (ada-last-which-function-line ada-no-auto-case, ada-indent-region) - (ada-which-compiler, ada-align-modes, ada-adjust-case-buffer) - (ada-looking-at-semi-private, ada-get-body-name): - Fix typos in docstrings. - (ada-create-case-exception, ada-create-case-exception-substring): - Fix typos in error messages. - (ada-goto-matching-end, ada-narrow-to-defun): Doc fixes. - -2006-10-18 Jan Dj,Ad(Brv - - * term/x-win.el (res-geometry): Don't set geometry from Xresources - to default-frame-alist if default-frame-alist already contains - width/height. - -2006-10-18 Richard Stallman - - * emacs-lisp/pp.el (pp-eval-expression): Use `X' to read value. - Non-interactive arg is the value, not the expression. - - * simple.el (read-expression-map): Just set it, no defvar. - - * subr.el (insert-for-yank-1): If last inserted char has - properties, mark them as rear-nonsticky. - - * recentf.el (recentf-mode): Doc fix. - - * facemenu.el (facemenu-add-new-face): Defend against symbol - that isn't a face name. - - * dired-aux.el (dired-do-copy): Doc fix. - -2006-10-18 Chong Yidong - - * simple.el (line-move-1): Ignore fields when moving to the - beginning of line to avoid getting point stuck. - -2006-10-18 Martin Rudalics - - * textmodes/flyspell.el (flyspell-word-search-backward): - Set inhibit-point-motion-hooks to avoid looping due to intangibile - text. - -2006-10-16 Richard Stallman - - * help-fns.el (describe-function-1): Special case optimization - for self-insert-command. - -2006-10-16 Kim F. Storm - - * ido.el (ido-reread-directory): Work in `dir' mode too. - -2006-10-15 Martin Rudalics - - * textmodes/table.el: Require 'regexp-opt. - -2006-10-15 Lennart Borgman - - * progmodes/flymake.el (flymake-get-project-include-dirs-imp): - Use shell-quote-argument. - - * shell.el (explicit-bash-args): Likewise. - - * progmodes/ada-xref.el (ada-find-in-src-path): Likewise. - Use grep -E rather than egrep. - -2006-10-15 Micha,Ak(Bl Cadilhac - - * ido.el (ido-exhibit): Allow `-', `_', and trailing `$' in user id. - -2006-10-15 Kim F. Storm - - * filesets.el (filesets-run-cmd--repl-fn): Use shell-quote-argument. - -2006-10-14 Lennart Borgman - - * filesets.el (filesets-cmd-shell-command): Quote buffer-file-name - to protect whitespace and metacharacters from the shell. - -2006-10-13 Giorgos Keramidas (tiny change) - - * apropos.el (apropos-pattern-quoted): Fix a typo in a doc string. - -2006-10-13 Eli Zaretskii - - * subr.el (start-process-shell-command): Doc fix. - -2006-10-13 Andrea Russo (tiny change) - - * info-look.el : Allow [0-9] in - the regexp for Maxima symbols. - -2006-10-13 Stefan Monnier - - * vc-hooks.el (vc-ignore-dir-regexp): Make it into a defcustom. - (vc-find-root): Don't walk higher up than ~. - -2006-10-12 Chong Yidong - - * international/utf-8.el (utf-translate-cjk-load-tables): - Avoid clobbering last-coding-system-used during load. - -2006-10-12 Carsten Dominik - - * textmodes/reftex-global.el (reftex-create-tags-file): - Quote file arguments. - -2006-10-12 Richard Stallman - - * files.el (file-name-history): Add defvar. - (save-some-buffers-action-alist): Improve description strings. - -2006-10-12 Andreas Schwab - - * files.el (auto-mode-alist): Match change log file name also with - a dash before a numeric extension. - -2006-10-11 Ilya Zakharevich - - * progmodes/cperl-mode.el: Merge from upstream, upto version 5.22. - After 5.0: - (cperl-add-tags-recurse-noxs-fullpath): New function (for -batch mode). - - After 5.1: Major edit. Summary of most visible changes: - - - Multiple <. - Copyright message updated. - (cperl-init-faces): Work around a bug in `font-lock'. May slow - facification down a bit. - Misprint for my|our|local for old `font-lock' - "our" was not fontified same as "my|local". - Highlight variables after "my" etc even in - a middle of an expression. - Do not facify multiple variables after my etc - unless parentheses are present. - - After 5.5, 5.6 - (cperl-fontify-syntaxically): after-change hook could reset. - (cperl-syntax-done-to) to a middle of line; unwind to BOL. - - After 5.7: - (cperl-init-faces): Allow highlighting of local ($/). - (cperl-problems-old-emaxen): New variable (for the use of DOCSTRING). - (cperl-problems): Remove fixed problems. - (cperl-find-pods-heres): Recognize #-comments in m##x too. - Recognize charclasses (unless delimiter is \). - (cperl-fontify-syntaxically): Unwinding to safe was done in wrong order. - (cperl-regexp-scan): Update docs. - (cperl-beautify-regexp-piece): Use information got from regexp scan. - - After 5.8: - Major user visible changes: - Recognition and fontification of character classes in RExen. - Variable indentation of RExen according to groups. - - (cperl-find-pods-heres): Recognize POSIX classes in REx charclasses. - Fontify REx charclasses in variable-name face. - Fontify POSIX charclasses in "type" face. - Fontify unmatched "]" in function-name face. - Mark first-char of HERE-doc as `front-sticky'. - Reset `front-sticky' property when needed. - (cperl-calculate-indent): Indents //x -RExen accordning to parens level. - (cperl-to-comment-or-eol): Recognize ends of `syntax-type' constructs. - (cperl-backward-to-noncomment): Recognize stringy `syntax-type' - constructs. Support `narrow'ed buffers. - (cperl-praise): Remove a reservation. - (cperl-make-indent): New function. - (cperl-indent-for-comment): Use `cperl-make-indent'. - (cperl-indent-line): Likewise. - (cperl-lineup): Likewise. - (cperl-beautify-regexp-piece): Likewise. - (cperl-contract-level): Likewise. - (cperl-toggle-set-debug-unwind): New function. - New menu entry for this. - (fill-paragraph-function): Use when `boundp'. - (cperl-calculate-indent): Take into account groups when indenting RExen. - (cperl-to-comment-or-eol): Recognize # which end a string. - (cperl-modify-syntax-type): Make only syntax-table property non-sticky. - (cperl-fill-paragraph): Return t: needed for `fill-paragraph-function'. - (cperl-fontify-syntaxically): More clear debugging message. - (cperl-pod2man-build-command): Check (XEmacs) `Man-filter-list'. - (cperl-init-faces): More complicated highlight even on XEmacs (new). - Merge cosmetic changes from XEmacs. - - After 5.9: - (cperl-1+): Move to before the first use. - (cperl-1-): Likewise. - - After 5.10: - - This code may lock Emacs hard!!! Use at your own risk! - - (cperl-font-locking): New internal variable. - (cperl-beginning-of-property): New function. - (cperl-calculate-indent): Use `cperl-beginning-of-property' - instead of `previous-single-property-change'. - (cperl-unwind-to-safe): Likewise. - (cperl-after-expr-p): Likewise. - (cperl-get-here-doc-region): Likewise. - (cperl-font-lock-fontify-region-function): Likewise. - (cperl-to-comment-or-eol): Do not call `cperl-update-syntaxification' - recursively. - Bound `next-single-property-change' via `point-max'. - (cperl-unwind-to-safe): Bound likewise - (cperl-font-lock-fontify-region-function): Likewise. - (cperl-find-pods-heres): Mark as recursive for `cperl-to-comment-or-eol' - Initialization of `cperl-font-lock-multiline-start' could be - missed if the "main" fontification did not run due to the - keyword being already fontified. - (cperl-pod-spell): Return t from do-one-chunk function. - (cperl-map-pods-heres): Stop when the worker returns nil. - Call `cperl-update-syntaxification'. - (cperl-get-here-doc-region): Call `cperl-update-syntaxification'. - (cperl-get-here-doc-delim): Remove unused function. - - After 5.11: - - The possible lockup of Emacs (introduced in 5.10) fixed. - - (cperl-unwind-to-safe): `cperl-beginning-of-property' won't return nil. - (cperl-syntaxify-for-menu): New customization variable. - (cperl-select-this-pod-or-here-doc): New function. - (cperl-get-here-doc-region): Extra argument. - Do not adjust pos by 1. - - New menu entries - (Perl/Tools): Selection of current POD or HERE-DOC section. - (Debugging CPerl:) backtrace on fontification. - - After 5.12: - (cperl-cached-syntax-table): Use `car-safe'. - (cperl-forward-re): Remove spurious argument SET-ST. - Add documentation. - (cperl-forward-group-in-re): New function. - (cperl-find-pods-heres): Find and highlight (?{}) blocks in RExen - (XXXX Temporary (?) hack is to syntax-mark them as comment). - - After 5.13: - (cperl-string-syntax-table): Make { and } not-grouping - (Sometimes they ARE grouping in RExen, but matching them would only - confuse in many situations when they are not) - (beginning-of-buffer): Replace two occurrences with goto-char... - (cperl-calculate-indent): `char-after' could be nil... - (cperl-find-pods-heres): REx can start after "[" too. - Hightlight (??{}) in RExen too. - (cperl-maybe-white-and-comment-rex): New constant - (cperl-white-and-comment-rex): Likewise. - XXXX Not very efficient, but hard to make - better while keeping 1 group. - - After 5.13: - (cperl-find-pods-heres): $foo << identifier() is not a HERE-DOC. - Likewise for 1 << identifier. - - After 5.14: - (cperl-find-pods-heres): Different logic for $foo .= < - - * dnd.el (dnd-handle-one-url): Fix typo in doc-string. - * help-at-pt.el (scan-buf-move-to-region): Likewise. - * longlines.el (longlines-window-change-function): Likewise. - * simple.el (undo-ask-before-discard): Likewise. - * wid-edit.el (widget-field-prompt-internal) - (widget-documentation-link-p): Likewise. - -2006-10-10 Stefan Monnier - - * progmodes/sh-script.el (sh-get-kw): | is not among the allowed chars - for a keyword. - -2006-10-09 Stefan Monnier - - * newcomment.el (comment-valid-prefix-p): Make the check - more thorough. From an idea by Martin Rudalics . - (comment-indent-new-line): Adjust call. - -2006-10-09 Ken Manheimer - - * allout.el (allout-back-to-current-heading): Base on lower-level - routines to get proper disqualification of aberrant topics. - -2006-10-09 Richard Stallman - - * textmodes/two-column.el (2C-two-columns): Doc fix. - -2006-10-09 Kim F. Storm - - * shell.el (explicit-csh-args, explicit-bash-args): Add comment - about implicit use. - -2006-10-08 Richard Stallman - - * textmodes/two-column.el (2C-two-columns): Doc fix. - -2006-10-08 Reiner Steib - - * files.el: Mark `buffer-read-only' as safe-local-variable. - -2006-10-08 Nick Roberts - - * progmodes/gdb-ui.el (gdb-speedbar-expand-node): - Burp if GUD buffer has been killed. - -2006-10-07 Stefan Monnier - - * completion.el (add-completions-from-c-buffer): - Don't presume an error's second element is a string. - Use looking-at rather than buffer-substring + member. - -2006-10-07 Eli Zaretskii - - * mail/rmail.el (rmail-redecode-body): If the old encoding is - `undecided', call find-coding-systems-region to find a proper - non-trivial encoding. - (rmail-mime-charset-pattern): Allow a TAB between "Content-Type" - and "text/plain". - -2006-10-07 Kevin Ryde - - * textmodes/reftex-vars.el (defgroup reftex): Update home page - url-link. - - * strokes.el (defgroup strokes): Remove invalid url-link. - -2006-10-07 Magnus Henoch - - * autoinsert.el (auto-insert-alist): Doc fix. - -2006-10-07 Johan Bockg,Ae(Brd - - * mouse-sel.el (mouse-insert-selection-internal): - Use insert-for-yank, so that yank handlers are run. - -2006-10-07 Kim F. Storm - - * ido.el (ido-file-extension-aux): Fix comparison. - -2006-10-06 Kim F. Storm - - * ido.el (ido-wide-find-dirs-or-files): Use shell-quote-argument. - -2006-10-05 Juanma Barranquero - - * emacs-lisp/advice.el (ad-remove-advice, ad-parse-arglist) - (ad-make-mapped-call): Use `let', not `let*'. - -2006-10-05 Chong Yidong - - * international/mule-cmds.el (coding-system-change-eol-conversion): - Ensure the coding system is initialized before calling - coding-system-eol-type. - -2006-10-04 Carsten Dominik - - * textmodes/org.el (org-rm-props, org-activate-plain-links) - (org-activate-angle-links, org-activate-dates) - (org-activate-target-links, org-activate-camels) - (org-activate-tags): Add `rear-nonsticky' text property to avoid - textproperty keymaps from being active beyond the end of a line. - (org-unfontify-region): Also remove `rear-nonsticky' property. - -2006-10-04 Kenichi Handa - - * international/code-pages.el (next): Table fixed. - -2006-10-04 Stefan Monnier - - * progmodes/sh-script.el (sh-prev-thing): Remove (forward-char 1) now - that it's been made unnecessary by removing narrowing. - -2006-10-03 Stefan Monnier - - * progmodes/sh-script.el (sh-prev-thing): Massage to untangle the - control flow a bit, simplify another bit, and add comments. - -2006-10-03 David Kastrup - - * help.el (describe-mode): For clicks on mode-line, use "@" - interactive argument to get the major mode of the click instead of - the current buffer. - - * isearch.el (isearch-mouse-2): Use new semantics of `key-binding' - in order to better redirect mouse-2 clicks. Also allow default - bindings to apply. - -2006-10-03 Kim F. Storm - - * emacs-lisp/cl.el (pushnew-internal): Remove defvar. - (pushnew): Fix last change. - -2006-10-03 Denis St,A|(Bnkel (tiny change) - - * ibuf-ext.el (eval, view-and-eval) : - Use the interactive spec of `eval-expression'. - -2006-10-02 Michael Welsh Duggan - - * progmodes/sh-script.el (sh-prev-thing): Fix last change. - -2006-10-02 MIYOSHI Masanori (tiny change) - - * mail/smtpmail.el (smtpmail-try-auth-methods): Fix typo in - 2006-09-28 commit. - -2006-10-02 Kenichi Handa - - * international/code-pages.el (iso-8859-6): Table fixed. - -2006-10-01 Chris Moore - - * dired.el (dired-build-subdir-alist): Fix previous change. - -2006-10-01 Johan Bockg,Ae(Brd - - * simple.el (undo-elt-crosses-region): Fix the inequalities. - -2006-10-01 Stefan Monnier - - * emacs-lisp/find-func.el (find-function-regexp): Don't match - "define-button-type". - - * pcvs.el (cvs-update-header): Fix handling of extra newlines so that - they don't keep accumulating. - -2006-10-01 Bob Rogers (tiny change) - - * ffap.el (ffap-rfc-path): Change the address of the RFC - repository to ftp.rfc-editor.org, as ds.internic.net seems to be gone. - -2006-10-01 Stephen Berman - - * allout.el (allout-expose-topic): Rectify implementation of "+" - spec, so that bodies are not exposed with headlines. - -2006-10-01 Ken Manheimer - - * allout.el (allout-current-depth): Do aberrent check only at or - below doublecheck depth. - (allout-chart-subtree): Make it explicit that LEVELS being nil - means unlimited depth. Drop undocumented support for LEVELS value - t meaning unlimited depth. (This is consistent with - allout-chart-to-reveal, but contrary to allout-show-children, - which needs to use nil to default to depth of 1.) - (allout-goto-prefix-doublechecked): Wrap long docstring line. - (allout-chart-to-reveal): Be explicit in docstring about meaning - of nil LEVELS, and drop support for LEVELS value t. - (allout-show-children): Translate the level spec used by this - routine to that used by allout-chart-subtree and - allout-chart-to-reveal. - (allout-show-to-offshoot): Retry once when stuck, after opening - subtree - improvements in discontinuity handling likely will - enable progress. - -2006-09-30 Chong Yidong - - * wid-edit.el (widget-button-click-moves-point): New variable. - (widget-button-click): If widget-button-click-moves-point is - non-nil, set point after performing the button action. - - * cus-edit.el (custom-mode): Set widget-button-click-moves-point. - -2006-09-30 Martin Rudalics - - * files.el (find-file-existing): Modify to not allow wildcards. - -2006-09-30 Johan Bockg,Ae(Brd - - * simple.el (undo-more): When undo information for the region is - exhausted, say "No further undo information FOR REGION". - -2006-09-30 Michael Welsh Duggan - - * progmodes/sh-script.el (sh-prev-thing): - Take `sh-leading-keywords' into account. - -2006-09-29 Glenn Morris - - * custom.el (defcustom): Doc fix. - - * calendar/calendar.el (european-calendar-style): - Call european-calendar or american-calendar as needed when set. - (diary-view-entries, list-calendar-holidays): Move autoloads - before use. - -2006-09-29 Juri Linkov - - * progmodes/cperl-mode.el (cperl-after-expr-p): Don't move point - to nil if there is no previous property change. - -2006-09-29 Micha,Ak(Bl Cadilhac - - * cus-edit.el (custom-save-all): Switch to emacs-lisp mode before - saving anything to be sure that `forward-sexp' behaves correctly. - -2006-09-29 Chong Yidong - - * simple.el (line-move-finish): Ignore field boundaries if the - initial and final points have the same `field' property. - -2006-09-29 Kim F. Storm - - * ido.el (ido-file-internal): Only bind minibuffer-completing-file-name - to t while calling ido-read-internal. - -2006-09-29 Carsten Dominik - - * textmodes/org.el (org-file-remote-p): Get regexp from list. - (org-archive-subtree): Remove erraneous `]' from character list. - -2006-09-28 Jonathan Yavner - - * ses.el (ses-in-print-area, ses-goto-data, ses-load) - (ses-reconstruct-all): Make undo of "insert row" work by keeping - markers for data-area and parameters-area. - -2006-09-28 Stefan Monnier - - * progmodes/make-mode.el (makefile-mode): Don't disable jit-lock. - - * font-lock.el (font-lock-after-change-function): Refontify next line - as well if end is at BOL. - (font-lock-extend-jit-lock-region-after-change): Be more careful to - only extend the region as much as needed. - -2006-09-28 Richard Stallman - - * comint.el (comint-mode): Bind font-lock-defaults non-nil. - - * subr.el (insert-for-yank-1): Handle `font-lock-face' specially. - - * international/mule.el (after-insert-file-set-coding): - If VISIT, don't let set-buffer-multibyte make undo info. - -2006-09-28 Osamu Yamane (tiny change) - - * mail/smtpmail.el (smtpmail-try-auth-methods): Do not break long - lines in base64-encoded authentication response. - -2006-09-26 Vinicius Jose Latorre - - * progmode/ebnf2ps.el: Doc fix. Implement arrow spacing and scaling. - (ebnf-version): New version 4.3. - (ebnf-arrow-extra-width, ebnf-arrow-scale): New options. - (ebnf-prologue): Adjust PostScript programming. - (ebnf-begin-file, ebnf-insert-ebnf-prologue, ebnf-terminal-dimension1) - (ebnf-repeat-dimension, ebnf-except-dimension): Adjust code. - -2006-09-26 Stefan Monnier - - * jit-lock.el (jit-lock-force-redisplay): Rename from - jit-lock-fontify-again, and undo the mistaken change I've just done. - - * jit-lock.el (jit-lock-fontify-now): Don't fontify the empty text. - (jit-lock-fontify-again): Don't refontify text that's not displayed. - -2006-09-26 Kenichi Handa - - * startup.el (display-splash-screen): Allow a prefix argument. - -2006-09-25 Jason Rumney - - * subr.el (shell-quote-argument): Use DOS logic for Windows - shells with DOS semantics. - -2006-09-24 Richard Stallman - - * progmodes/compile.el (compilation-goto-locus-delete-o): New fn. - (compilation-goto-locus): Use compilation-goto-locus-delete-o - to delete the overlay. Put it on pre-command-hook. - - * emacs-lisp/timer.el (timer-max-repeats): Doc fix. - - * startup.el (fancy-splash-screens, normal-splash-screen): - Call the splash buffer *About GNU Emacs*. - - * simple.el (next-error-highlight, next-error-highlight-no-select): - Default to 0.5. - (yank-excluded-properties): Add `fontified'. - - * font-lock.el (font-lock-compile-keywords): Allow value of - syntax-begin-function to enable paren-column-0 highlighting. - -2006-09-24 Chris Moore - - * dired.el (dired-build-subdir-alist): When file ends in colon, - don't exit the loop, just disregard that file. - -2006-09-24 Chong Yidong - - * simple.el (line-move-finish): Handle corner case for fields in - continued lines. - (line-move-1): Remove flawed test for that case. - -2006-09-24 Ken Manheimer - - * icomplete.el (icomplete-simple-completing-p): Use the correct - name for the new variable, `icomplete-with-completion-tables'. - (file local variables): Remove superfluous setting. - -2006-09-23 Jeff Miller (tiny change) - - * calendar/appt.el (appt-check): Fix typo for appointments just - after midnight. - -2006-09-23 Chong Yidong - - * help.el (describe-key-briefly, describe-key): Don't expect an - extra up event if a down-event is generated by a popup menu. - -2006-09-23 Michal Nazarewicz (tiny change) - - * textmodes/ispell.el (ispell-change-dictionary): Don't check the - local dictionary when changing the global dictionary. - -2006-09-23 Ken Manheimer - - * icomplete.el (icomplete-with-completion-tables): List of - specialized completion tables with which icomplete should - operate. Include the new `internal-complete-buffer', so icomplete - works with interactive buffer-selection. - (icomplete-simple-completing-p): Add acceptance of specialized - completion tables listed in icomplete-with-completion-tables. - -2006-09-23 YAMAMOTO Mitsuharu - - * frame.el (focus-follows-mouse): Set default to nil on Mac. - - * startup.el (command-line): Use `custom-reevaluate-setting' for - `focus-follows-mouse'. - -2006-09-22 Richard Stallman - - * cus-edit.el (custom-buffer-create-internal): In `emacs -q', - explain why Save is not available. - -2006-09-22 Juanma Barranquero - - * woman.el (woman0-so): Use `let*', not `let'. - (woman-horizontal-line): Remove unbalanced parenthesis. - -2006-09-22 Stefan Monnier - - * woman.el: Make sure all the end-of-region markers we use have - a non-nil insertion-type. - (woman0-so): Move things around so we can use copy-marker. - (woman0-roff-buffer, woman2-process-escapes-to-eol, woman2-roff-buffer): - Adjust marker type. - (woman2-process-escapes): Check marker type. - (woman-horizontal-line): Dispense with the use of a marker. - -2006-09-22 Jay Belanger - - * calc/calc-lang.el: Add Greek letters to math-variable-table - property of tex. - -2006-09-22 Chong Yidong - - * files.el (save-some-buffers-action-alist): Display diff in view-mode. - -2006-09-22 Masatake YAMATO - - * add-log.el (add-log-current-defun): Use `forward-sexp' - instead of `forward-word' to pick c++::symbol. - Reported by Guanpeng Xu . - -2006-09-22 Kenichi Handa - - * bindings.el: Fix setting self-insert-command for multibyte - characters in global-map. - -2006-09-21 David Kastrup - - * mouse.el (mouse-posn-property): Fix typo for `event-start' in - doc string. - -2006-09-21 Kenichi Handa - - * language/european.el ("Latin-1"): Add windows-1252 to - coding-priority. - ("German"): Likewise. - -2006-09-21 Kim F. Storm - - * emacs-lisp/cl-macs.el (member*): Use memql instead of complex code. - Suggested by Miles Bader. - - * emacs-lisp/cl.el (pushnew): Rework 2006-09-10 change. Use memql - instead of add-to-list in the simple case. - -2006-09-20 Kenichi Handa - - * isearch.el (isearch-process-search-char): Cancel the previous change. - (isearch-search-string): New function. - (isearch-search): Use isearch-search-string. - (isearch-lazy-highlight-search): Likewise. - -2006-09-20 Vinicius Jose Latorre - - * lpr.el (lpr-page-header-switches): Insert `*' at beginning of doc - string to become an option. - -2006-09-20 Stefan Monnier - - * files.el (find-buffer-visiting): Don't get fooled by a nil inode. - -2006-09-20 Kim F. Storm - - * simple.el (line-move-partial): Call pos-visible-in-window-p with - position t instead of trying both window-end and window-end - 1. - -2006-09-20 Carsten Dominik - - * textmodes/org.el (org-scan-tags): Find end of subtrees also in - hidden trees. - -2006-09-20 David Kastrup - - * mouse.el (mouse-posn-property): Improve doc string. - (mouse-on-link-p): Change buffers for function calls on links. - - * menu-bar.el (clipboard-yank): Bomb out in interactive use if - buffer is read-only. - -2006-09-20 Ken Manheimer - - * allout.el (allout-unprotected): Let inhibit-read-only only when - buffer-read-only isn't set. - (allout-annotate-hidden): Enable topic annotation during copies even - when the buffer is read-only, eg for topic copies. Ensure that the loop - advances, even when the span extends beyond the deletion region. - (allout-toggle-subtree-encryption): Use allout-structure-added-hook - rather than allout-exposure-changed-hook, as a stronger assertion. - (allout-keybindings-list): Add bindings for - allout-copy-line-as-kill and allout-copy-topic-as-kill. - (allout-copy-line-as-kill, allout-copy-topic-as-kill): - Copy wrappers for allout-kill-line and allout-kill-topic. - (allout-listify-exposed): Position correctly to accumulate lines. - -2006-09-19 Chong Yidong - - * simple.el (line-move-1): Escape field boundaries occurring - exactly at point. Update goal column if constrained to a field. - (line-move-finish): Escape field boundaries occurring exactly at point. - -2006-09-19 Stefan Monnier - - * mouse.el (mouse-on-link-p): Tentatively fix last change. - (mouse-drag-vertical-line): Remove unused var `wconfig'. - -2006-09-19 Kim F. Storm - - * help.el (describe-key-briefly, describe-key): Simplify printing - of descriptions by using format and %S. Fix "is undefined" - messages to say "at that spot" for mouse events. - - * simple.el (line-move-partial): Optimize. Try window-line-height - before posn-at-point to get vpos of current line. - -2006-09-18 Michael Kifer - - * viper.el: Bump up version/date of update to reflect the substantial - changes done in August 2006. - - * viper-cmd (viper-next-line-at-bol): Make sure button-at, push-button - are defined. - - * ediff-util.el (ediff-add-to-history): New function. - - * ediff.el: Use ediff-add-to-history instead of add-to-history. - -2006-09-18 Wolfgang Jenkner (tiny change) - - * textmodes/conf-mode.el (conf-space-mode): Doc fix. - Delete duplicate make-local-variable form. - (conf-space-keywords): Add autoload cookie. - Fix typo (`keywords', not `keyword'). - -2006-09-18 Jan Dj,Ad(Brv - - * cus-start.el (all): Rename x-gtk-show-chooser-help-text to - x-gtk-file-dialog-help-text. Rename x-use-old-gtk-file-dialog - to x-gtk-use-old-file-dialog. - -2006-09-18 Richard Stallman - - * wid-edit.el (widget-button-click): Handle non-mouse-motion events - that might come in during mouse tracking. - -2006-09-18 Kim F. Storm - - * simple.el (line-move-partial): Rework 2006-09-15 change to use - new window-line-height function. Further optimize by not calling - pos-visible-in-window-p for window-end when window-line-height - returns useful information. - -2006-09-16 Richard Stallman - - * textmodes/conf-mode.el (conf-mode-map): Use conf-space-keywords cmd. - (conf-space-mode): Don't handle prefix arg. - Delete conf-space-keywords-override code. - Use add-hook. - (conf-space-keywords): New command. - (conf-space-mode-internal): Be careful with imenu-generic-expression. - Delete conf-space-keywords-override code. - (conf-space-keywords-alist): Doc fix. - (conf-space-font-lock-keywords): Doc fix. - (conf-space-keywords-override): Var deleted. - -2006-09-16 Chong Yidong - - * startup.el (fancy-splash-screens): Don't switch to the scratch - buffer; it may not be the next buffer. - -2006-09-16 Romain Francoise - - * saveplace.el (load-save-place-alist-from-file): Use expanded name - in both messages. - -2006-09-16 Slawomir Nowaczyk - - * progmodes/python.el (python-preoutput-filter): - Fix arg order to string-match. - -2006-09-16 Richard Stallman - - * obsolete/fast-lock.el (fast-lock-cache-data): Provide 2nd arg to - font-lock-compile-keywords. - - * font-lock.el (font-lock-compile-keywords): Rename optional arg - to SYNTACTIC-KEYWORDS and reverse the sense. All callers changed. - -2006-09-16 Jan Dj,Ad(Brv - - * cus-start.el (all): Add x-gtk-show-chooser-help-text. - - * select.el (xselect-convert-to-string): If UTF8_STRING is requested - and the data doesn't look like UTF8, send STRING instead. - -2006-09-16 Agust,Am(Bn Mart,Am(Bn - - * textmodes/flyspell.el (flyspell-check-region-doublons): - New function to detect duplicated words. - (flyspell-large-region): Use it. - -2006-09-16 Chong Yidong - - * simple.el (line-move-to-column): Revert 2006-08-03 change. - -2006-09-16 Eli Zaretskii - - * help.el (describe-prefix-bindings): Use let, not let*. - -2006-09-16 Ken Manheimer - - * allout.el (allout-regexp, allout-line-boundary-regexp) - (allout-bob-regexp): Correct grouping and boundaries to fix - backwards traversal. - (allout-depth-specific-regexp, allout-depth-one-regexp): - New versions that exploit \\{M\\} regexp syntax, to avoid geometric or - worse time in allout-ascend. - (allout-doublecheck-at-and-shallower): Identify depth threshold - below which topics are checked for and disqualified by containment - discontinuities. - (allout-hotspot-key-handler): Correctly handle multiple-key - strokes. Remove some unused variables. - (allout-mode-leaders): Clarify that mode-specific comment-start - will be used. - (set-allout-regexp): Correctly regexp-quote allout regexps to - properly accept alternative header-leads and primary bullets with - regexp-specific characters (eg, C "/*", mathematica "(*"). - Include new regular expressions among those configured. - (allout-infer-header-lead-and-primary-bullet): - Rename allout-infer-header-lead. - (allout-recent-depth): Manifest as a variable as well as a function. - (allout-prefix-data): Simplify into an inline instead of a macro, - assuming current match data rather than being explicitly passed - it. Establish allout-recent-depth value as well as - allout-recent-prefix-beginning and allout-recent-prefix-end. - (allout-aberrant-container-p): True when an item's immediate - offspring discontinuously contained. Useful for disqualifying - unintended topic prefixes, likely at low depths. - (allout-goto-prefix-doublechecked): Elaborate version of - allout-goto-prefix which disqualifies aberrant pseudo-items. - (allout-pre-next-prefix): Layer on top of lower-level routines, to - get disqualification of aberrant containers. - (allout-end-of-prefix, allout-end-of-subtree): Disqualify aberrant - containers. - (allout-beginning-of-current-entry): Position at start of buffer - when in container (depth 0) entry. - (nullify-allout-prefix-data): Invalidate allout-recent-* prefix data. - (allout-current-bullet): Strip text properties. - (allout-get-prefix-bullet): Use right match groups. - (allout-beginning-of-line, allout-next-heading): - Disqualify aberrant containers. - (allout-previous-heading): Disqualify aberrant containers, and - change to regular (rather than inline) function, to allow - self-recursion. - (allout-get-invisibility-overlay): Increment so progress is made - when the first overlay is not the sought one. - (allout-end-of-prefix): Disqualify aberrant containers. - (allout-end-of-line): Cycle something like allout-beginning-of-line. - (allout-mode): Make allout-old-style-prefixes (ie, enabling use with - outline.el outlines) functional again. Change the primary bullet - along with the header-lead - level 1 new-style bullets now work. - Engage allout-before-change-handler in mainline Emacs, not just - XEmacs, to do undo handling. - (allout-before-change-handler): Expose undo changes occurring in - hidden regions. Use allout-get-invisibility-overlay instead of - reimplementing it inline. - (allout-chart-subtree): Use start rather than end of prefix in - charts. Use allout-recent-depth variable. - (allout-chart-siblings): Disqualify aberrant topics. - (allout-beginning-of-current-entry): Position correctly. - (allout-ascend): Use new allout-depth-specific-regexp and - allout-depth-one-regexp for linear instead of O(N^2) or worse - behavior. - (allout-ascend-to-depth): Depend on allout-ascend, rather than - reimplementing an algorithm. - (allout-up-current-level): Depend on allout-ascend, rather than - reimplementing an algorithm. Return to start-point if we fail. - (allout-descend-to-depth): Use allout-recent-depth variable - instead of function. - (allout-next-sibling): On traversal of numerous intervening - topics, resort to economical allout-next-sibling-leap. - (allout-next-sibling-leap): Specialized version of - allout-next-sibling that uses allout-ascend cleverly, to depend on - a regexp search to leap large numbers of contained topics, rather - than arbitrarily many one-by-one traversals. - (allout-next-visible-heading): Disqualify aberrant topics. - (allout-previous-visible-heading): Position consistently when - interactive. - (allout-forward-current-level): Base on allout-previous-sibling - rather than (differently) reimplmenting the algorithm. Remove some - unused variables. - (allout-solicit-alternate-bullet): Present default choice stripped - of text properties. - (allout-rebullet-heading): Use bullet stripped of text properties. - Register changes using allout-exposure-change-hook. - Disregard aberrant topics. - (allout-shift-in): With universal-argument, make topic a peer of - it's former offspring. Simplify the code by separating out - allout-shift-out functionality. - (allout-shift-out): With universal-argument, make offspring peers - of their former container, and its siblings. Implement the - functionality here, rather than inappropriately muddling the - implementation of allout-shift-in. - (allout-rebullet-topic): Respect additional argument for new - parent-child separation function. - (allout-yank-processing): Use allout-ascend directly. - (allout-show-entry): Disqualify aberrant topics. - (allout-show-children): Handle discontinuous children gracefully, - extending the depth being revealed to expose them and posting a - message indicating the situation. - (allout-show-to-offshoot): Remove obsolete and incorrect comment. - Leave cursor in correct position. - (allout-hide-current-subtree): Use allout-ascend directly. - Disqualify aberrant topics. - (allout-kill-line, allout-kill-topic): Preserve exposure layout in - a way that the yanks can restore it, as used to happen. - (allout-yank-processing): Restore exposure layout as recorded by - allout-kill-*, as used to happen. - (allout-annotate-hidden, allout-hide-by-annotation): New routines - for preseving and restoring exposure layout across kills. - (allout-toggle-subtree-encryption): Run allout-exposure-change-hook. - (allout-encrypt-string): Strip text properties. - Rearranged order and outline-headings for some of the - miscellaneous functions. - (allout-resolve-xref): No need to quote the error name in the - condition-case handler section. - (allout-flatten): Classic recursive (and recursively intensive, - without tail-recursion) list-flattener, needed by allout-shift-out - when confronted with discontinuous children. - -2006-09-16 Jason Rumney - - * dnd.el (dnd-open-remote-file-function): Use dnd-open-local-file - on ms-windows. - (dnd-open-unc-file): Remove. - (dnd-open-local-file): Mention in doc string that it also handles - remote files if the system natively supports unc file-names. - -2006-09-15 Kim F. Storm - - * help.el (describe-key): Handle C-h k in *Help* buffer; collect - all necessary information about the event before erasing *Help*. - - * simple.el (line-move-partial): Use window-line-visiblity to - quickly check whether last line is partially visible, and only do - the hard (and slow) part in that case. - -2006-09-15 Jay Belanger - - * COPYING: Replace "Library Public License" by "Lesser Public - License" throughout. - -2006-09-15 Jan Dj,Ad(Brv - - * term/x-win.el (x-menu-bar-open): New function for F10. - -2006-09-15 Chong Yidong - - * progmodes/compile.el (compilation-error-regexp-alist-alist): - Disallow filenames containing " -" to avoid confusion with libtool - compilation messages. Suggested by Stefan Monnier. - -2006-09-15 David Kastrup - - * mouse-sel.el (mouse-sel-follow-link-p): Use event position - instead of buffer position for `mouse-on-link-p'. - - * mouse.el (mouse-posn-property): New function looking up the - properties at a click position in overlays and text properties in - either buffer or strings. - (mouse-on-link-p): Use `mouse-posn-property' to streamline lookup - of both `follow-link' as well as `mouse-face' properties. - (mouse-drag-track): Check `mouse-on-link-p' on event position, not - buffer position. - - * help.el (describe-key-briefly): When reading a down-event on - mode lines or scroll bar, swallow the following up event, too. - Use the new mouse sensitity of `key-binding' for lookup. - (describe-key): The same here. - -2006-09-15 Juanma Barranquero - - * play/life.el (life-patterns): Add a few more interesting patterns. - (life-setup): Force `show-trailing-whitespace' to nil. - -2006-09-14 Richard Stallman - - * startup.el (fancy-splash-text): Change text to improve alignment. - (fancy-splash-screens): Don't set non-standard tab width. - Bind cursor-type temporarily, and make it easy to patch to - preserve the splash buffer. - (normal-splash-screen, fancy-splash-tail): Spell out "Meta-x". - (fancy-splash-screens): Display echo-area message explicitly. - Don't set fancy-splash-help-echo. - - * simple.el (line-number-mode): Group mode-line instead of - editing-basics. - (column-number-mode, size-indication-mode): Likewise. - - * faces.el (mode-line-faces): Group mode-line instead of modeline. - - * time.el (display-time): Group mode-line instead of modeline. - - * cus-edit.el (mode-line): Rename from modeline. All uses changed. - -2006-09-14 Chong Yidong - - * startup.el (fancy-splash-text): Move editing instructions to - fancy-splash-head. - (fancy-splash-head): Issue editing instructions. - (fancy-splash-screens): Fixup whitespace. - -2006-09-14 Stefan Monnier - - * bindings.el (mode-line-buffer-identification-keymap): - Remove duplicate line. - -2006-09-14 Micha,Ak(Bl Cadilhac - - * ido.el (ido-ignore-item-p): Allow any kind of functions in - ignore lists. - -2006-09-14 Kim F. Storm - - * jit-lock.el (jit-lock-fontify-again): New function. - (jit-lock-fontify-now): Use it instead of lambda form. - -2006-09-13 Agustin Martin - - * textmodes/flyspell.el (flyspell-word, flyspell-correct-word) - (flyspell-auto-correct-word): Make ispell-filter local to these - functions. Check that ispell-filter has new stuff before calling - ispell-parse-output. - -2006-09-13 Kim F. Storm - - * simple.el (line-move-partial): Optimize. - -2006-09-13 Richard Stallman - - * thingatpt.el (thing-at-point-bounds-of-url-at-point): - Delete spurious backquote. - -2006-09-07 Ryan Yeske - - * net/rcirc.el (rcirc-print): Fix last change. - -2006-09-12 Jay Belanger - - * calc/calc.el (calc-dispatch): Remove unnecessary `sit-for'. - -2006-09-07 Ryan Yeske - - * net/rcirc.el (rcirc-scroll-show-maximum-output): Rename from - rcirc-show-maximum-output. - (rcirc-mode): Remove window-scroll-function hook. - (rcirc-scroll-to-bottom): Remove function. - (rcirc-print): Recenter so point stays at the bottom of the window - if point was already there. - -2006-09-12 Paul Eggert - - * comint.el (comint-exec-1): Set EMACS to the full name of Emacs, - not to "t". - * progmodes/compile.el (compilation-start): Likewise. - * progmodes/idlwave.el (idlwave-rescan-asynchronously): - Don't use expand-file-name on invocation-directory, since this - might mishandle special characters in invocation-directory. - -2006-09-12 Stefan Monnier - - * pcvs-defs.el: Remove * in defcustom's docstrings. - -2006-09-12 Nick Roberts - - * progmodes/compile.el (compilation-directory-properties): - Doc fix for help-echo. - -2006-09-12 Lars Hansen - - * desktop.el (desktop-read): Add comment. - -2006-09-12 Kim F. Storm - - * simple.el (next-error-highlight, next-error-highlight-no-select): - Fix spelling error. - - * subr.el (sit-for): Rework to use input-pending-p and cond. - Return nil input is pending on entry also for SECONDS <= 0. - (while-no-input): Use input-pending-p instead of sit-for. - -2006-09-11 Richard Stallman - - * simple.el (next-error-highlight, next-error-highlight-no-select): - Fix custom type and doc strings. - -2006-09-11 Stefan Monnier - - * diff-mode.el (diff-apply-hunk-to-backup-file): New var. - (diff-apply-hunk): Use it to ask for confirmation. - -2006-09-11 Reiner Steib - - * emacs-lisp/cl.el (pushnew): Add missing `,'. - -2006-09-11 David Kastrup - - * help.el (string-key-binding, describe-key-briefly) - (describe-key): Remove `string-key-binding' and its callers since - `key-binding' already caters for the proper lookup now. - -2006-09-11 Stefan Monnier - - * progmodes/cfengine.el (cfengine-font-lock-syntactic-keywords): Newvar. - (cfengine-mode): Use it. Fix \ syntax to be like /. - - * bindings.el (mode-line-buffer-identification-keymap): - Move initialization into declaration. - -2006-09-10 Kim F. Storm - - * ido.el (ido-edit-input, ido-complete, ido-take-first-match) - (ido-push-dir-first, ido-kill-buffer-at-head, ido-exhibit) - (ido-delete-file-at-head): Pass head of ido-matches through ido-name - in case of merged directories. Reported by Micha,Ak(Bl Cadilhac. - -2006-09-10 Richard Stallman - - * dired-aux.el: Handle errors in recursive copy usefully. - (dired-create-files-failures): New variable. - (dired-copy-file): Remove condition-case. - (dired-copy-file-recursive): Check for errors on all file - operations, and add them to dired-create-files-failures. - Check file file-date-erorr here too. - (dired-create-files): Check dired-create-files-failures - and report those errors too. - - * emacs-lisp/cl.el (pushnew): Use add-to-list when convenient. - - * subr.el (add-to-list): New argument COMPARE-FN. - -2006-09-10 Reiner Steib - - * filecache.el (file-cache-add-directory) - (file-cache-add-directory-list, file-cache-add-file) - (file-cache-add-directory-using-find) - (file-cache-add-directory-using-locate) - (file-cache-add-directory-recursively): Add autoloads. - -2006-09-09 Richard Stallman - - * textmodes/conf-mode.el (conf-space-mode): - Use hack-local-variables-hook instead of calling hack-local-variables. - (conf-space-keywords-override): New variable. - (conf-space-mode-internal): New subroutine. Reinit Font Lock mode. - (conf-space-mode): Always make conf-space-keywords and - conf-space-keywords-override local. - Call conf-space-mode-internal directly as well as via hook. - -2006-09-09 Slawomir Nowaczyk (tiny change) - - * progmodes/python.el (python-font-lock-keywords): Add `self' and other - quasi-keywords. - -2006-09-09 Stefan Monnier - - * progmodes/python.el: Quieten the compiler about hippie-expand vars. - (python-send-string): Be slightly more careful about adding \n. - - * startup.el (normal-splash-screen): Don't display the buffer if we'll - kill it right away anyway. - -2006-09-09 Eli Zaretskii - - * international/codepage.el (cp850-decode-table): Fix a few codes. - (cp858-decode-table): New variable. - -2006-09-09 Toby Allsopp (tiny change) - - * net/ldap.el (ldap-search-internal): Doc fix. - -2006-09-09 Micha,Ak(Bl Cadilhac - - * play/life.el (life-display-generation): Test for input manually if - `sleeptime' is negative or null. - - * lpr.el (lpr-page-header-switches): Page title switch is one of them. - (print-region-1): Substitute `%s' with the page title. - -2006-09-09 Matt Hodges - - * locate.el (locate-current-search): New variable. - (locate): Set buffer local value. Use current buffer if it is - in Locate mode. - (locate-mode): Disable undo here. - (locate-do-setup): Use locate-current-filter from buffer to be killed. - (locate-update): Use locate-current-search and locate-current-filter. - -2006-09-08 David Kastrup - - * desktop.el (desktop-read): When loading a desktop, disable - saving it while the load progresses, and switch off a pending lazy - load by calling `desktop-lazy-abort'. - -2006-08-27 Martin Rudalics - - * window.el (mouse-autoselect-window-timer) - (mouse-autoselect-window-position) - (mouse-autoselect-window-window) - (mouse-autoselect-window-now): New vars. - (mouse-autoselect-window-cancel) - (mouse-autoselect-window-select) - (mouse-autoselect-window-start): New functions. - (handle-select-window): Call `mouse-autoselect-window-start' when - delayed window autoselection is enabled. - - * cus-start.el (mouse-autoselect-window): Handle delayed window - autoselection. - - * emacs-lisp/eldoc.el: Add `handle-select-window' to the set of - commands after which it is allowed to print in the echo area. - -2006-09-08 Richard Stallman - - * textmodes/fill.el (adaptive-fill-regexp): Don't match `(1)' or `1.' - - * mail/rmail.el (rmail-get-new-mail): Say whether all msgs are spam. - (rmail-convert-to-babyl-format): Don't record undo, leave list empty. - - * emacs-lisp/timer.el (timer-create, timer-activate): Doc fixes. - (cancel-timer-internal): Add doc string. - (cancel-function-timers): Doc fix. - (with-timeout-handler, timer-event-last*): Add doc strings. - - * emacs-lisp/bindat.el (bindat-unpack): Doc fix. - - * files.el (risky-local-variable-p): Match ...-bindat-spec. - - * dired.el (dired-log-summary): Add doc string. - - * cus-edit.el (custom-menu-create): Bind deactivate-mark here. - (custom-group-menu-create): Not here. - -2006-09-08 Carsten Dominik - - * textmodes/org.el (org-dblock-write:clocktable): Avoid infinite loop. - -2006-09-08 YAMAMOTO Mitsuharu - - * term/mac-win.el (show-hide-font-panel): New HI command ID symbol. - (mac-apple-event-map): Define its handler. - -2006-09-07 Toby Allsopp (tiny change) - - * net/ldap.el (ldap-search-internal): Handle `auth' key. - -2006-09-07 Magnus Henoch - - * net/rcirc.el (rcirc-activity-string): Don't quote value in case - clause. - -2006-09-07 Micha,Ak(Bl Cadilhac - - * info.el (Info-index): Bind completion-ignore-case. - -2006-09-07 Stefan Monnier - - * progmodes/prolog.el (inferior-prolog-flavor): New var left out of - previous commit. - (inferior-prolog-guess-flavor): New fun left out of previous commit. - (prolog-consult-region-and-go): Don't hard code "*prolog*" and don't - burp in dedicated windows. - (inferior-prolog-self-insert-command): New command. - (inferior-prolog-mode-map): Use it. - -2006-09-07 Reiner Steib - - * international/latexenc.el (latex-inputenc-coding-alist): Add cp858. - - * international/code-pages.el: Add cp858. - -2006-09-07 Jan Dj,Ad(Brv - - * dnd.el: Fix bootstrapping. - -2006-09-07 Jan Dj,Ad(Brv - - * dnd.el (dnd-protocol-alist): Add what url-handler-mode can handle. - (dnd-open-remote-url): New function. - (dnd-open-remote-file-function): Set to dnd-open-remote-url if - not windows-nt. - -2006-09-07 Jason Rumney - - * dnd.el (dnd-open-remote-file-function): New variable. - (dnd-open-unc-file): New function. - (dnd-open-file): Call dnd-open-remote-file-function if set. - -2006-09-06 Daiki Ueno - - * pgg-gpg.el (pgg-gpg-process-region): Encode passphrase with - pgg-passphrase-coding-system rather than locale-coding-system. - * pgg-def.el (pgg-passphrase-coding-system): New user option. - -2006-09-06 Stefan Monnier - - * progmodes/prolog.el: Remove * in docstrings. - (prolog-program-name): Add SWI prolog. - (prolog-mode-menu): New menu. - (prolog-mode): Set comment-add. - (prolog-indent-line): Simplify. Use indent-line-to. - (inferior-prolog-buffer): New var. - (inferior-prolog-run, inferior-prolog-process): New funs. - (run-prolog, switch-to-prolog): Rewrite, using them. - (prolog-consult-region): Use inferior-prolog-buffer. - (inferior-prolog-load-file): New function. - (prolog-mode-map): Add bindings for load-file and switch-to-prolog. - - * textmodes/fill.el (fill-single-word-nobreak-p): Allow breaking before - last word, if it's not the end of the paragraph. - - * files.el (abbreviate-file-name): Don't mistakenly match newlines in - file name. - -2006-09-06 Ralf Angeli - - * frame.el (display-mm-dimensions-alist): New defcustom. - (display-mm-height, display-mm-width): Use it. - -2006-09-06 Simon Josefsson - - * mail/smtpmail.el (smtpmail-starttls-credentials): Doc fix. - -2006-09-06 Nick Roberts - - * progmodes/gdb-ui.el (gdb-var-list-children-regexp) - (gdb-var-list-children-regexp-1): Tweak regexps to catch full - string values. - -2006-09-06 Kim F. Storm - - * simple.el (line-move-partial): New function to do vscrolling for - partially visible images / tall lines. Rewrite based on code - previously in line-move. Simplify backwards vscrolling. - (line-move): Use it. Simplify. - -2006-09-05 Kim F. Storm - - * emulation/cua-base.el (cua--pre-command-handler-1): Rewrite. - -2006-09-05 Chong Yidong - - * progmodes/compile.el (compilation-error-regexp-alist-alist): - Process the `gcc-include' after the `gnu' rule. - -2006-09-05 Kim F. Storm - - * ido.el (ido-visit-buffer): Use buffer name if buffer arg is a buffer. - -2006-09-05 Daiki Ueno - - * pgg.el (pgg-clear-string): Alias to clear-string for backward - compatibility. - - * pgg-gpg.el (pgg-gpg-process-region): Avoid display blinking with - inhibit-redisplay; encode passphrase with locale-coding-system. - -2006-09-04 Dan Nicolaescu - - * term/xterm.el (terminal-init-xterm): Add more C-M- bindings. - -2006-09-05 Nick Roberts - - * progmodes/gdb-ui.el (gdb-var-list-children-regexp) - (gdb-var-list-children-regexp): Make type field optional. - - * progmodes/gud.el (gud-speedbar-buttons): Allow for no type - e.g public, protected in C++. - -2006-09-04 John Paul Wallington - - * simple.el (completion-show-help): New defcustom. - (completion-setup-function): Heed it. - -2006-09-04 Dan Nicolaescu - - * term/xterm.el (terminal-init-xterm): Add C-M- bindings. - -2006-09-04 Richard Stallman - - * mail/rmail-spam-filter.el (rsf-scanning-messages-now): Doc fix. - (rsf-min-region-to-spam-list): Doc fix. - (rsf-add-content-type-field): Doc fix. - - * simple.el (kill-region): Explicitly test there is a region. - -2006-09-04 Chong Yidong - - * mail/feedmail.el (feedmail-buffer-to-sendmail): Look for - sendmail in several common directories. - - * mail/sendmail.el (sendmail-program): Moved here from paths.el. - - * paths.el (sendmail-program): Removed. - -2006-09-04 Daiki Ueno - - * pgg-gpg.el (pgg-gpg-process-region): Revert two patches from Satyaki - Das. http://article.gmane.org/gmane.emacs.gnus.general/49947 - http://article.gmane.org/gmane.emacs.gnus.general/50457 - -2006-09-03 Chong Yidong - - * cus-edit.el (custom-group-menu-create): Avoid deactivating the - mark after running the menu filter. - -2006-09-03 Juri Linkov - - * international/quail.el (quail-defrule-internal): Add a check - if a key is a vector. - -2006-09-02 Juri Linkov - - * man.el (Man-topic-history): New variable. - (man): Use it. - - * woman.el (woman-topic-history): Change defvar to defvaralias - for symbol `Man-topic-history'. - - * shell.el (shell-filter-ctrl-a-ctrl-b): Check if - `comint-last-output-start' is a marker by using `markerp' and - check if it has a position by using `marker-position', and use - this position for `goto-char'. - - * international/quail.el (quail-defrule-internal): Add missing - `error' call for null key. - -2006-09-02 Ryan Yeske - - * rcirc.el (rcirc-keywords): New variable. - (rcirc-bright-nicks, rcirc-dim-nicks): New variables. - (rcirc-bright-nick-regexp, rcirc-dim-nick-regexp): Remove - variables. - (rcirc-responses-no-activity): New function. - (rcirc-handler-generic): Check for responses in above. - (rcirc-process-command): Add ?: character to arguments of raw - server commands. - (rcirc-format-response-string): Use `rcirc-bright-nicks' and - `rcirc-dim-nicks'. - (rcirc-gray-toggle): Remove unused variable. - (rcirc-print): Remove some tracking logic, which is moved into - markup functions. - (rcirc-activity-types): Was `rcirc-activity-type', now a list of - types. - (rcirc-activity-string): Look for 'keyword in activity-types. - (rcirc-window-configuration-change): Don't erase overlay-arrow - unnecessarily. - (rcirc-add-or-remove): New function. - (rcirc-cmd-ignore): Use it. - (rcirc-message-leader): Remove unused function. - (rcicr-cmd-bright, rcirc-cmd-dim, rcirc-cmd-keyword): New commands. - (rcirc-add-face): New function. - (rcirc-facify): Use rcirc-add-face. - (rcirc-url-regexp): Add parens. - (rcirc-map-regexp): Remove function. - (rcirc-mangle-regexp): Remove function. - (rcirc-markup-text-functions): New variable. - (rcirc-markup-text): New function (replaces `rcirc-mangle-text'). - (rcirc-markup-body-text, rcirc-markup-attributes) - (rcirc-markup-my-nick, rcirc-markup-urls, rcirc-markup-keywords) - (rcirc-markup-bright-nicks): New markup handler functions. - (rcirc-nick-in-message-full-line): New face. - (rcirc-track-nick): Rename from `rcirc-mode-line-nick'. - (rcirc-track-keyword, rcirc-url, rcirc-keyword): New faces. - -2006-09-02 Martin Rudalics - - * cus-start.el (hscroll-margin, hscroll-step) - (mode-line-in-non-selected-windows, mouse-autoselect-window) - (x-use-underline-position-properties): Change version to "22.1" - since they will appear there for the first time. - -2006-09-01 Chong Yidong - - * imenu.el (imenu-update-menubar): Use buffer-chars-modified-tick. - -2006-08-31 Richard Stallman - - * cus-edit.el (custom-save-variables): Slight cleanup. - (Custom-no-edit): Renamed from custom-no-edit. - (Custom-newline): Renamed from custom-newline. - (custom-mode-map): Use new names. - - * emacs-lisp/easy-mmode.el (define-minor-mode): Reference manual - about customization, rather than M-x customize, in the doc string - made for the defcustom. - - * emacs-lisp/trace.el (trace-function-background): Doc fix. - -2006-08-31 Romain Francoise - - * dired-x.el (dired-guess-shell-alist-default): Update. - -2006-08-31 Michael Mauger - - * custom.el (custom-theme-set-variables): Autoload packages before - sorting the variables. - -2006-08-30 Michael Kifer - - * viper-cmd.el (viper-special-read-and-insert-char): Convert events to - chars if XEmacs. - (viper-after-change-undo-hook): Check if undo-in-progress is bound. - -2006-08-30 Stefan Monnier - - * progmodes/python.el (python-eldoc-function): Re-enable quit while - waiting for process. - -2006-08-30 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-string-to-utxt): If adjustment for MacJapanese - results in ASCII-only string, encode original one directly. - -2006-08-29 Romain Francoise - - * startup.el (normal-splash-screen, fancy-splash-screens): - Make buffer read-only and arrange to enter view mode if necessary. - -2006-08-29 Chong Yidong - - * hl-line.el (hl-line): New face. - (hl-line-face): Use it. - - * image-mode.el (image-mode): Fix last fix. - Suggested by Kim F. Storm. - -2006-08-29 Michael Albinus - - Sync with Tramp 2.0.54. - - * net/tramp.el (tramp-convert-file-attributes): Call `eql' instead - of `=', because `tramp-get-remote-gid' might not always return an - integer when expected. - (tramp-register-file-name-handlers): `partial-completion-mode' is - unknown to XEmacs. - (tramp-time-diff): Don't use `floor', it might fail for large - differences. - (tramp-handle-make-auto-save-file-name): For Emacs 21, set - `tramp-auto-save-directory' if unset in order to guarantee unique - auto-save file names. - -2006-08-28 Chong Yidong - - * image-mode.el (image-mode): Display image as text on a terminal. - -2006-08-28 Stefan Monnier - - * progmodes/python.el (python-send-command): Simplify. - (run-python): Don't generate a new buffer unless `new' was specified. - Make sure we send `import emacs' to the proper process. - - * progmodes/python.el (python-send-command): Don't wait for the command - to terminate. Don't fiddle with compilation-parsing-end. - -2006-08-28 Chong Yidong - - * emacs-lisp/checkdoc.el (checkdoc-file-comments-engine): - Insert commentary after first line summary. - - * woman.el (woman-follow): New function, based on `man-follow'. - (woman-mode-map): Use it. - - * ibuffer.el (ibuffer-do-sort-by-recency): Perform full update - since ibuffer-do-sort-by-recency does not define a sorter. - -2006-08-28 Kim F. Storm - - * find-dired.el (find-dired): Use shell-quote-argument to properly - escape ( and ) args. Also use it on {} and ; args in default - value of find-ls-option string. - (find-grep-dired): Use shell-quote-argument on {} and ; args. - -2006-08-27 Michael Olson - - * emacs-lisp/tq.el: Small grammar fix in comments. - (tq-enqueue): Check for existence of queue rather than the - head queue item's question, which was a no-op. - (tq-filter, tq-process-buffer): Make sure the process buffer - exists before making it the current buffer. - -2006-08-27 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-apple-event-map): Rename hicommand to hi-command. - (mac-dnd-drop-data): Apply 2006-08-22 change for x-dnd-drop-data. - (special-event-map): Apply 2006-08-16 change for x-win.el. - -2006-08-26 Stefan Monnier - - * progmodes/python.el (python-send-receive): Wait in the - process's buffer so as to check the right buffer-local variables. - -2006-08-25 Stefan Monnier - - * emacs-lisp/checkdoc.el: Remove * in defcustoms. - (defgroup checkdoc): Move to beginning. - - * progmodes/python.el (python-preoutput-skip-next-prompt): New var. - (python-preoutput-continuation): Remove. - (python-preoutput-filter): Simplify correspondingly. - Remove handling of _emacs_ok. Make sure we skip _emacs_out's prompts. - Loop around to catch embedded _emacs_out output. - (run-python): Send the import&print command on a single line. - (python-send-command): Send command&print on a single line. - (python-send-string): Only add double \n if needed. - (python-send-receive): Loop until the result comes. - (python-mode-running): Defvar it. - (python-setup-brm): Remove unused var `menu'. - Only bind py-mode-map and `features' around brm-init. - (python-calculate-indentation): Remove unused var `point'. - (python-beginning-of-defun): Remove unused var `def-line'. - -2006-08-25 Richard Stallman - - * kmacro.el (kmacro-repeat-on-last-key): Doc fix. - -2006-08-25 Michael Kifer - - * viper.el (viper-set-hooks): Use frame bindings for - viper-vi-state-cursor-color. - (viper-non-hook-settings): Don't set default - mode-line-buffer-identification. - - * viper-util.el (viper-set-cursor-color-according-to-state): New fun. - (viper-set-cursor-color-according-to-state) - (viper-get-saved-cursor-color-in-replace-mode) - (viper-get-saved-cursor-color-in-insert-mode): Make conditional on - viper-emacs-state-cursor-color. - - * viper-cmd.el (viper-envelop-ESC-key): Bug fix. - (viper-undo): Use point if undo-beg-posn is nil. - (viper-insert-state-post-command-sentinel, viper-change-state-to-emacs) - (viper-after-change-undo-hook): Don't use - viper-emacs-state-cursor-color by default. - (viper-undo): More sensible positioning after undo. - - * viper-ex.el (ex-splice-args-in-1-letr-cmd): Get rid of caddr. - (viper-emacs-state-cursor-color): Default to nil, since this feature - doesn't work well yet. - - * ediff-mult.el (ediff-intersect-directories) - (ediff-get-directory-files-under-revision, ediff-dir-diff-copy-file): - always expand filenames. - -2006-08-24 Stefan Monnier - - * tumme.el: Remove * in defcustoms's docstrings. - -2006-08-24 Chong Yidong - - * emacs-lisp/timer.el (timer-set-idle-time, run-with-idle-timer): - Accept internal time format for SECS arg. - (timer-relative-time): Doc fix. - - * jit-lock.el: "Stealth fontification by requeuing timers" patch, - adapted from Martin Rudalics. - (jit-lock-stealth-repeat-timer, jit-lock-stealth-buffers): New vars. - (jit-lock-mode): Create jit-lock-stealth-repeat-timer. - (jit-lock-stealth-fontify): Reschedule as a idle timer instead of - using sit-for. - -2006-08-24 Francesc Rocher - - * cus-start.el (all): Add `overline-margin' and - `x-underline-at-descent-line'. - -2006-08-24 Kim F. Storm - - * progmodes/grep.el (grep-find-use-xargs): Use explicit value `exec' - to mean "use find -exec"; nil now unambiguously means auto-detect. - (grep-compute-defaults): Set grep-find-use-xargs to `exec' if not `gnu'. - Use shell-quote-argument to build grep-find-command and - grep-find-template. - (rgrep): Use shell-quote-argument to properly quote arguments to find. - Reported by Tom Seddon. - -2006-08-23 Chong Yidong - - * startup.el (fancy-splash-head): Give instructions for dismissing - the splash screen for default startup too. - (display-startup-echo-area-message, fancy-splash-screens) - (use-fancy-splash-screens-p): New arg hide-on-input. If nil, show - all splash text at once and keep the splash buffer around. - (command-line-1): Give display-startup-echo-area-message a t arg. - -2006-08-23 Carsten Dominik - - * textmodes/org.el (org-follow-gnus-link): Make sure the dedicated - gnus frame is selected. - -2006-08-23 Nick Roberts - - * progmodes/gdb-ui.el (gdb-starting): Reset gdb-signalled to nil. - -2006-08-22 Kim F. Storm - - * ido.el (ido-set-matches-1): Fix full matching for subdirs. - Add suffix matching for subdirs. - -2006-08-22 Jorgen Schaefer (tiny change) - - * x-dnd.el (x-dnd-drop-data): Don't call goto-char if - mouse-yank-at-point is non-nil. - -2006-08-22 Nick Roberts - - * progmodes/gdb-ui.el (gdb-frame-memory-buffer): Make frame - a bit wider and remove fringes to fit initial output on line. - -2006-08-21 Stefan Monnier - - * frame.el (blink-cursor-end): Only ignore the error we care about. - (blink-cursor-mode): Use blink-cursor-end to simplify the code. - -2006-08-21 Richard Stallman - - * whitespace.el (whitespace-cleanup): Doc fix. - -2006-08-20 Ryan Yeske - - * net/rcirc.el (rcirc-show-maximum-output): New var. - (rcirc-buffer-process): If no buffer argument is supplied, use - current-buffer. - (rcirc-complete-nick): Complete to the last completed nick first. - (rcirc-mode): Preserve the value of `rcirc-urls' across - connections. Setup scroll function. - (rcirc-scroll-to-bottom): New function. - (rcirc-print): Use nick syntax around regexp work. - Notice dim-nicks speaking only if they say our nick. - (rcirc-update-activity-string): Do not show the modeline indicator - if there are no live rcirc processes. - (rcirc-cmd-ignore): Ignore case. - (rcirc-browse-url-at-point): Fix off-by-one error. - -2006-08-20 Stefan Monnier - - * progmodes/python.el: Remove * in defcustom docstrings. - (run-python, python-proc, python-try-complete): Use derived-mode-p. - (python-mode): Set tab-width and indent-tabs-mode. - -2006-08-20 Dave Love - - * progmodes/python.el: Update to Dave Love's latest version. - (python-font-lock-keywords, python-mode): Don't use - font-lock-syntax-table, but match symbol elements explicitly instead. - (python-mode-map): Add help, and a few more key bindings. - (python-skip-comments/blanks): Move out of comments as well. - (python-continuation-line-p): Behave better with unbalanced parens. - (python-blank-line-p): New fun. - (python-open-block-statement-p): Don't use a heuristic. - (python-outdent-p): Better handle blocks-in-the-same-line. - (python-calculate-indentation): Misc improvements. - (python-comment-indent): Remove. - (python-block-pairs): New var. - (python-first-word): New fun. - (python-indentation-levels): Handle more common cases. - (python-indent-line-1): Add `leave' argument. - (python-indent-region): New fun. - (python-skip-out): New fun. - (python-beginning-of-statement, python-end-of-statement): Use it. - (python-next-statement): Return correct count even at eob. - (python-end-of-block): Fix paren-typo. - (python-imenu-create-index): Add module variables. - (run-python): Add `new' arg. - Check we're at a prompt before returning. - (python-send-command): Move to end of buffer. - Wait for prompt to return. - (python-set-proc): New fun. - (python-imports): New var. - (python-describe-symbol): Use it. Adjust to new interface of `ehelp'. - (python-eldoc-function): Try to move out of arg list. - (python-outline-level): Offset by 1. - (python-find-imports): New fun. - (python-symbol-completions): Use python-imports. - (python-module-path, ffap-alist): Add support for ffap. - (python-skeletons, python-mode-abbrev-table, def-python-skeleton) - (python-insert-*, python-default-template, python-expand-template): - Add templates/skeletons. - (python-setup-brm): Support for Bicycle Repair Man. - (python-abbrev-syntax-table): New var. - (python-abbrev-pc-hook, python-pea-hook): New funs. - -2006-08-20 Chong Yidong - - * frame.el (blink-cursor-start): Set timer first. - (blink-cursor-end): Ignore timer cancelling errors. - Suggested by Ken Manheimer. - -2006-08-20 Juanma Barranquero - - * newcomment.el (comment-box): Call `comment-normalize-vars'. - Add autoload cookie. - -2006-08-20 Richard Stallman - - * simple.el (line-number-at-pos): Doc fix. - - * emacs-lisp/timer.el (run-with-idle-timer): Pass t to - timer-activate-when-idle, so timer can run before Emacs becomes - non-idle again. - -2006-08-18 Yoni Rabkin Katzenell (tiny change) - - * whitespace.el (whitespace-cleanup-internal): New optional arg - REGION-ONLY. If it's non-nil, modify the message to the user - accordingly. - (whitespace-cleanup-region): Call whitespace-cleanup-internal with - a non-nil argument. - -2006-08-18 Gustav H,Ae(Bllberg (tiny change) - - * rect.el (spaces-string): Simplify and add doc string. - -2006-08-17 Romain Francoise - - * progmodes/gdb-ui.el (gdb-edit-locals-value): Balance parens. - -2006-08-17 Richard Stallman - - * compare-w.el (compare-windows): lambda's take an arg and pass - it to compare-windows-skip-whitespace. - -2006-08-17 Martin Rudalics - - * jit-lock.el (jit-lock-fontify-now): Protect the modified status of - the right buffer. - -2006-08-17 Stefan Monnier - - * pcvs-parse.el (cvs-parse-table): Accept the new `...' format for - removed files. - -2006-08-17 Nick Roberts - - * progmodes/gdb-ui.el (gdb-locals-watch-map) - (gdb-locals-watch-map-1): Suppress keymap first. - (gdb-edit-locals-map-1): New variable. - (gdb-edit-locals-value): New function. - (gdb-stack-list-locals-handler): Use them. - -2006-08-16 Stefan Monnier - - * mouse.el (global-map): Allow yanking with mouse-2 at a spot whose - cursor would normally be drawn in the fringe. - - * font-lock.el (font-lock-extend-region-wholelines): Fix up typo. - Reported by Martin Rudalics . - -2006-08-16 Richard Stallman - - * term/x-win.el (x-clipboard-yank): Specify * in interactive spec. - (special-event-map): Process drag-n-drop events this way. - - * simple.el (move-beginning-of-line): Test whether fields - would prevent motion back to line's first visible character. - If so, stop where the fields would stop the motion. - - * newcomment.el (comment-indent): Fully update INDENT - before checking to see if it will change the text. - - * cus-edit.el (custom-newline): New function. - (custom-mode-map): Bind newline to custom-newline. - - * compare-w.el (compare-windows): Factor compare-ignore-whitespace - into ignore-whitespace. - Check each buffer for its skip-function. - Handle compare-windows-skip-whitespace special-case test - by returning t from default skip function. - -2006-08-15 Carsten Dominik - - * textmodes/org.el (org-clock-special-range) - (org-clock-update-time-maybe): New functions. - (org-stamp-time-of-day-regexp): Allow weekday to be of word chars, - not only a-z. - (org-agenda-get-blocks): Allow multiple blocks per headline. - (org-timestamp-change): Call `org-clock-update-time-maybe'. - (org-export-html-title-format) - (org-export-html-toplevel-hlevel): New options. - (org-export-language-setup): Add support for Czech. - (org-mode, org-insert-todo-heading, org-find-visible) - (org-find-invisible, org-invisible-p, org-invisible-p2) - (org-back-to-heading, org-on-heading-p, org-up-heading-all) - (org-show-subtree, org-show-entry, org-make-options-regexp): - Remove compatibility support for old outline-mode. - (org-check-occur-regexp): Funtion removed. - (org-on-heading-p, org-back-to-heading): Made defalias. - (org-set-local): New defsubst. - (org-set-regexps-and-options, org-mode) - (org-set-font-lock-defaults, org-edit-agenda-file-list) - (org-timeline, org-agenda-list, org-todo-list, org-tags-view) - (org-remember-apply-template, org-table-edit-field) - (org-table-edit-formulas, orgtbl-mode, org-export-as-ascii) - (org-set-autofill-regexps): Use `org-set-local'. - (org-table-eval-formula): Fix bug with parsing of display flags. - -2006-08-15 Nick Roberts - - * progmodes/gdb-ui.el (gdb-info-stack-custom): Indicate selected - frame with fringe arrow. Suggested by Simon Marshall - . - (gdb-stack-position): New variable. - (gdb-starting, gdb-exited): Reset gdb-stack-position to nil. - (gdb-frames-mode): Set gdb-stack-position to nil. - Add to overlay-arrow-variable-list - (gdb-reset): Delete gdb-stack-position from above list. - -2006-08-14 Jan Dj,Ad(Brv - - * term/x-win.el (menu-bar-edit-menu): Disable paste if buffer is - read only. - -2006-08-13 Romain Francoise - - * cus-theme.el (customize-create-theme) - (custom-theme-visit-theme): End `y-or-n-p' prompt with a space. - - * filesets.el (filesets-add-buffer): Ditto. - - * pcvs.el (cvs-change-cvsroot): Ditto. - -2006-08-13 Nick Roberts - - * progmodes/gdb-ui.el (gdb-frame-separate-io-buffer) - (gdb-use-separate-io-buffer, menu): Avoid using `inferior' in text. - (gdb-memory-mode, gdb-locals-watch-map): Don't quote lambda - expressions. - (gdb-info-breakpoints-custom): Use gdb-breakpoint-regexp. - Only search till end of line. - Add face to function names in case of no filename. - Add face to variable names of watchpoints. - -2006-08-12 Robert Thorpe (tiny change) - - * cus-start.el : Move to the `indent' - customization group. - -2006-08-12 Ken Manheimer - - * allout.el (allout-prior-bindings, allout-added-bindings): - Remove, after long deprecation. - (allout-beginning-of-line-cycles, allout-end-of-line-cycles): - Add customization vars controlling allout-beginning-of-line and - allout-end-of-line conveniences. - (allout-header-prefix, allout-use-mode-specific-leader) - (allout-use-mode-specific-leader, allout-mode-leaders): - Revise docstrings. - (allout-infer-header-lead): Change to be an alias for - allout-infer-header-lead-and-primary-bullet. - (allout-infer-header-lead-and-primary-bullet): New version of - allout-infer-header-lead which assigns the primary bullet to the - same as the header lead, when its being changed. - (allout-infer-body-reindent): Apply regexp-quote instead of - unconditionally prepending "\\", so that all literal - allout-header-prefix and allout-primary-bullet strings are - properly handled. - (allout-add-resumptions): Add optional qualifier for extending or - appending to existing values, rather than replacing them. - (allout-view-change-hook): Clarify docstring. - (allout-exposure-change-hook): Take explicit arguments, via - run-hook-with-args. - (allout-structure-added-hook) - (allout-structure-deleted-hook) - (allout-structure-shifted-hook): New hooks analogous to - allout-exposure-change-hook for other kinds of structural outline - edits. - (allout-encryption-plaintext-sanitization-regexps): New encryption - customization variable, by which cooperating modes can provde - massage of the plaintext without actually being passed it. - (allout-encryption-ciphertext-rejection-regexps) - (allout-encryption-ciphertext-rejection-ceiling): New encryption - customization variables, by which cooperating modes can prohibit - rare but possible ciphertext patterns from fouling their - operation, with actually being passed the ciphertext. - (allout-mode): Run activation and deactivation hooks after the - minor-mode variable has been toggled, to clarify the mode - disposition. The new encryption ciphertext rejection variable is - used to ensure that the ciphertext does not contain text that - would be recognized as outline structural elements by allout. - Substite allout-beginning-of-line and allout-end-of-line for - conventionall beginning-of-line and end-of-line bindings. - If allout-old-style-prefixes is non-nil, don't nullify it on mode - activation! - (allout-beginning-of-line): Respect `allout-beginning-of-line-cycles'. - (allout-end-of-line): Respect `allout-end-of-line-cycles'. - (allout-chart-subtree): Implement new mode, charting only the - visible items in the subtree, when new 'visible' parameter is non-nil. - (allout-end-of-subtree): Properly handle the last item in the buffer. - (allout-pre-command-business, allout-command-counter): - Increment an advertised counter so that cooperating enhancements can - track revisions of items. - (allout-open-topic): Run allout-structure-added-hook with suitable - arguments. - (allout-shift-in): Run allout-structure-shifted-hook with suitable - arguments. - (allout-shift-out): Fix doubling for negative args and ensure call - of allout-structure-shifted-hook by solely using allout-shift-in. - (allout-kill-line, allout-kill-topic): - Run allout-structure-deleted-hook with suitable arguments. - (allout-yank-processing): Run allout-structure-added-hook with - proper arguments. - (allout-yank): Enclose activity in allout-unprotected. - (allout-flag-region): Run allout-exposure-change-hook with - suitable arguments, instead of making the callee infer the arguments. - (allout-encrypt-string): - Support allout-encryption-plaintext-sanitization-regexps, - allout-encryption-ciphertext-rejection-regexps, and - allout-encryption-ciphertext-rejection-ceiling. Indicate correct - en/de cryption mode in symmetric encryption failure message. - (allout-obtain-passphrase): Use copy-sequence to get a distinct - copy of the passphrase, and don't zero it or we'll corrupt the - stashed copy. - (allout-create-encryption-passphrase-verifier) - (allout-verify-passphrase): Respect the new signature for - allout-encrypt-string. - (allout-get-configvar-values): Convenience for getting a - configuration variable value and handling its absence gracefully. - -2006-08-11 Romain Francoise - - * obsolete/zone-mode.el: Delete. - -2006-08-11 Stefan Monnier - - * textmodes/dns-mode.el (dns-mode): Use before-save-hook. - -2006-08-11 Thien-Thi Nguyen - - * emacs-lisp/bindat.el (bindat-ip-to-string): - Use `format-network-address' if possible. - -2006-08-11 Jan Dj,Ad(Brv - - * x-dnd.el (x-dnd-init-frame): Call x-register-dnd-atom. - -2006-08-10 Chong Yidong - - * emacs-lisp/edebug.el (edebug-recursive-edit): Don't save and - restore unread-command-events here. - (edebug-display): Do it here, to detect sit-for interruptions. - -2006-08-10 Romain Francoise - - * textmodes/dns-mode.el: Alias `zone-mode' to `dns-mode'. - (dns-mode-soa-auto-increment-serial): New user option. - (dns-mode-soa-maybe-increment-serial): New function. - (dns-mode): Add the latter to `write-contents-functions'. - - * obsolete/zone-mode.el: Move to obsolete/ from net/. - Delete autoload cookies. - -2006-08-10 John Wiegley - - * eshell/em-glob.el (eshell-glob-chars-list) - (eshell-glob-translate-alist): Add support for [^g] in character globs. - -2006-08-10 Richard Stallman - - * facemenu.el (facemenu-add-face): Pass frame to facemenu-active-faces. - (facemenu-set-face): Doc fix. - (facemenu-listed-faces): Doc fix. - -2006-08-09 Chong Yidong - - * avoid.el (mouse-avoidance-animating-pointer): New var. - (mouse-avoidance-nudge-mouse): Use it. - (mouse-avoidance-banish): Rename from mouse-avoidance-banish-hook. - (mouse-avoidance-exile): Rename from mouse-avoidance-exile-hook - (mouse-avoidance-fancy): Rename from mouse-avoidance-fancy-hook. - Don't activate if currently animating. All callers changed. - -2006-08-09 John Wiegley - - * calendar/timeclock.el (timeclock-use-elapsed): Added a new - variable, which causes timeclock to report elapsed time worked, - instead of just work remaining. - -2006-08-09 Kenichi Handa - - * international/latexenc.el (latexenc-find-file-coding-system): - Fix for the case that the 2nd element of arg-list is a cons. - -2006-08-08 Chong Yidong - - * info.el (Info-fontify-node): Handle preceding `in' for note - reference hiding rules. - -2006-08-08 Stefan Monnier - - * progmodes/sh-script.el (sh-quoted-subshell): Make sure we don't - mistake a closing " for an opening one. - -2006-08-07 Dan Nicolaescu - - * term/xterm.el (terminal-init-xterm): Add more key bindings. - -2006-08-07 Stefan Monnier - - * complete.el (PC-do-completion): Filter out completions matching - completion-ignored-extensions before checking whether there are - multiple completions. - Don't use `list' unnecessarily when building completion tables. - -2006-08-06 Richard Stallman - - * help.el (describe-mode): Make minor mode list more concise. - -2006-08-05 Chong Yidong - - * bindings.el: Give mode-line-format, mode-line-modes, and - mode-line-position `standard-value' properties. - -2006-08-05 Eli Zaretskii - - * buff-menu.el (list-buffers-noselect): For Info buffers, use - "(file)node" instead of the file name. - -2006-08-05 Richard Stallman - - * faces.el (escape-glyph): Doc fix. - -2006-08-04 Kenichi Handa - - * international/mule-diag.el (describe-font): Improve docstring - and error message. Use frame-parameter (not frame-parameters). - -2006-08-03 Stefan Monnier - - * progmodes/gud.el (gdb-script-font-lock-syntactic-keywords): - Correctly mark the end-of-docstring char. - -2006-08-03 Chong Yidong - - * simple.el (line-move-to-column): Constrain move-to-column to - current field. - -2006-08-03 Stefan Monnier - - * font-lock.el (font-lock-beg, font-lock-end) - (font-lock-extend-region-functions): New vars. - (font-lock-extend-region-multiline) - (font-lock-extend-region-wholelines): New functions. - (font-lock-default-fontify-region): Use them. - (font-lock-extend-jit-lock-region-after-change): Only round up - if font-lock-default-fontify-region will do it as well. - - * font-lock.el (font-lock-extend-after-change-region-function): - Rename from font-lock-extend-region-function. - (font-lock-extend-region): Remove by inlining at call sites. - (font-lock-after-change-function): Don't needlessly round up to a whole - number of lines. - (font-lock-extend-jit-lock-region-after-change): Be more careful about - the boundary conditions and the interactions between the various ways - to extend the region. - -2006-08-02 Stefan Monnier - - * jit-lock.el (jit-lock-fontify-now): Preserve the buffer's - modification status when forcing the second redisplay. - -2006-08-03 Kim F. Storm - - * edmacro.el (edmacro-fix-menu-commands): Ignore switch-frame. - -2006-08-02 Stefan Monnier - - * pcvs-util.el (cvs-get-buffer-create): Obey `noreuse' even if `name' - doesn't look like a file name. - - * complete.el (PC-expand-many-files): Avoid signalling an error when - the current directory doesn't exist. Reported by Micha,Ak(Bl Cadilhac. - -2006-08-02 Andreas Schwab - - * bindings.el (mode-line-format): Simplify reference to vc-mode. - -2006-08-02 Nick Roberts - - * bindings.el (map): Make mode-line-buffer-identification-keymap - before defining propertized-buffer-identification. - -2006-08-01 Richard Stallman - - * bindings.el (mode-line-format): Adjust spacing around vc-mode. - -2006-08-02 Nick Roberts - - * progmodes/gdb-ui.el (gdb-find-source-frame): Make nil the - default value. - (gdb-find-source-frame): New function. - (menu): Add to menu bar. - -2006-08-01 Stefan Monnier - - * font-core.el (font-lock-extend-region-function) - (font-lock-extend-region): Move to font-lock.el. - - * font-lock.el (font-lock-extend-region-function) - (font-lock-extend-region): Move from font-core.el. Simplify. - - * jit-lock.el (jit-lock-fontify-now): Cause a second redisplay - if needed. - (jit-lock-start, jit-lock-end): New dynamic scoped vars. - (jit-lock-after-change-extend-region-functions): New hook. - (jit-lock-after-change): Use it instead of hard-coding font-lock code. - - * font-lock.el (font-lock-extend-jit-lock-region-after-change): New fun. - (font-lock-turn-on-thing-lock): Use it. - - * longlines.el (longlines-show-region): Make it work on read-only - buffers as well. - -2006-08-01 Nick Roberts - - * progmodes/gdb-ui.el (gdb-set-hollow): Check for gud-last-last-frame. - -2006-07-31 Richard Stallman - - * progmodes/vhdl-mode.el (vhdl-speedbar-display-directory) - (vhdl-speedbar-display-projects): Update old obsolete - speedbar variable names. - -2006-07-31 Nick Roberts - - * progmodes/gdb-ui.el (gdb-find-source-frame): New option. - (gdb-stopped): Use it. - - * t-mouse.el (t-mouse-mode): Use set-process-query-on-exit-flag. - -2006-07-29 Chong Yidong - - * loadhist.el (unload-feature): Handle new `(t . SYMBOL)' format - for load-history elements. - -2006-07-29 Eli Zaretskii - - * files.el (convert-standard-filename): For Cygwin, replace - characters not allowed in Windows file names. - (make-auto-save-file-name): Add Cygwin to the list of systems - where the auto-save file name needs to be run through - convert-standard-filename. - -2006-07-29 Lennart Borgman - - * window.el (bw-get-tree): Don't integerp subtree if it's nil. - -2006-07-28 Richard Stallman - - * bindings.el (mode-line-frame-identification) - (propertized-buffer-identification): Centralize the code - to initialize the variable. - - * progmodes/grep.el (grep-default-command): Catch errors from - wildcard-to-regexp. - -2006-07-29 Kim F. Storm - - * progmodes/grep.el (grep-tag-default): New function. - (grep-default-command, grep-read-regexp): Use it. - (grep-read-files): Use car of grep-files-history or grep-files-aliases - as default if nothing else applies. - -2006-07-28 Bill Atkins (tiny change) - - * wdired.el (wdired-change-to-wdired-mode, wdired-change-to-dired-mode): - Throw error if buffer is not in Dired and Wdired mode, respectively. - -2006-07-28 Chong Yidong - - * cus-edit.el (custom-no-edit): Revert 2006-07-27 change, so that - self-insert-command keys don't activate buttons. - (custom-mode-map): Just don't bind "\C-m" to `custom-no-edit'. - -2006-07-29 Nick Roberts - - * progmodes/gdb-ui.el (gdb-info-breakpoints-custom): Use different - faces for enable character. - -2006-07-28 Nick Roberts - - * Makefile.in (recompile): Update comment to reflect change - on 2004-04-21. - -2006-07-27 Richard Stallman - - * cus-edit.el (customize-package-emacs-version-alist): Doc fix. - (customize-package-emacs-version): Change msg when pkg has no entry. - (custom-no-edit): On a button, do like widget-button-press. - -2006-07-27 Dan Nicolaescu - - * term/xterm.el (terminal-init-xterm): Fix bindings for C-tab, - S-tab and C-S-tab. - -2006-07-28 Nick Roberts - - * progmodes/which-func.el (which-function): Fix documentation/ - comment typo. - -2006-07-26 Richard Stallman - - * textmodes/ispell.el (ispell-word): If we replace the word, - move point to the end. Insert before deleting. - -2006-07-26 Chong Yidong - - * subr.el (sit-for): Use new SECONDS arg of read-event instead of - a timer. - -2006-07-26 Mathias Dahl - - * tumme.el (tumme-backward-image): Add prefix argument. Add error - when at first image. - (tumme-forward-image): Add prefix argument. Add error when at last - image. - -2006-07-25 Stefan Monnier - - * tabify.el (tabify-regexp): Use more specific regexps. - (tabify): Avoid modifying the buffer unnecessarily. - -2006-07-25 Mathias Dahl - - * tumme.el (tumme-track-original-file): Add `buffer-live-p' check. - (tumme-format-properties-string): Handle empty `buf'. - (tumme-get-comment): Change variable names inside `let'. - Add missing `let' variable that cause font-lock problems. - (tumme-write-comments): Change variable names inside `let'. - Add missing `let' variable that cause font-lock problems. - (tumme-forward-image): Rename from `tumme-forward-char'. - (tumme-backward-image): Rename from `tumme-backward-char'. - -2006-07-25 Masatake YAMATO - - * progmodes/ld-script.el (ld-script-keywords) - (ld-script-font-lock-keywords, ld-script-builtins): Update keywords - and add comments. - -2006-07-25 Nick Roberts - - * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers) - (gdb-resync, gdb-prompt, gdb-starting, gdb-exited, gdb-stopped) - (gdb-set-gud-minor-mode-existing-buffers-1): Use different faces - for status indicator. - -2006-07-24 Richard Stallman - - * xml.el (xml-parse-file): Clean up, and use with-temp-buffer. - - * subr.el (dolist, dotimes): Use interned symbols for locals. - (--dotimes-limit--, --dolist-tail--): New defvars. - (looking-back): Doc fix. - - * replace.el (replace-match-string-symbols): Handle dotted lists. - -2006-07-24 Mathias Dahl - - * tumme.el (tumme-write-tags): Add. - (tumme-write-comments): Add. - (tumme-tag-files): Change to use `tumme-write-tags'. - (tumme-tag-thumbnail): Change to use `tumme-write-tags'. - (tumme-dired-comment-files): Change to use `tumme-write-comments'. - (tumme-save-information-from-widgets): Change to use - `tumme-write-comments' and `tumme-write-tags'. - (tumme-comment-thumbnail): Change to use `tumme-write-comments'. - (tumme-write-tag): Remove. - (tumme-write-comment): Remove. - (tumme-display-previous-thumbnail-original): Remove empty line. - (tumme-widget-list): Add punctuation. - -2006-07-24 Mathias Dahl - - * tumme.el (tumme-line-up): Add an extra check for end of buffer. - -2006-07-24 Daiki Ueno - - * pgg-def.el (pgg-truncate-key-identifier): Truncate the key ID to 8 - letters from the end. Thanks to "David Smith" - and andreas@altroot.de (Andreas V,Av(Bgele). - -2006-07-23 Thien-Thi Nguyen - - * mouse.el (mouse-on-link-p): Doc fix. - -2006-07-23 Nick Roberts - - * emacs-lisp/find-func.el (find-function-search-for-symbol): - Handle "C-h f `". - -2006-07-22 Dan Nicolaescu - - * ibuffer.el (ibuffer-formats): Use left alignment for the mode - column. - -2006-07-22 Matt Hodges - - * textmodes/table.el: Add move-beginning-of-line and - move-end-of-line to Point Motion Only Group. - -2006-07-22 Eric Hanchrow (tiny change) - - * progmodes/delphi.el (delphi-fill-comment): Use save-restriction. - -2006-07-22 Micha,Ak(Bl Cadilhac - - * startup.el (user-mail-address): Initialize from the `EMAIL' - environment variable first. Document this. - (command-line): Ditto. - -2006-07-22 Nick Roberts - - * help-mode.el (help-function-def, help-variable-def) - (help-face-def): Print a message in the minibuffer. - -2006-07-21 Dan Nicolaescu - - * term/xterm.el (terminal-init-xterm): Fix key bindings - syntax. Bind S-return, C-M-., C-TAB, S-TAB and C-S-TAB. - -2006-07-21 Eli Zaretskii - - * dos-w32.el (find-buffer-file-type-coding-system): Support calls - where `(nth 1 command)' is a cons cell. Doc fix. - - * textmodes/po.el (po-find-charset): Doc fix. - -2006-07-21 Ken Manheimer - - * allout.el (allout-unprotected, allout-e-o-prefix-p) - (allout-beginning-of-current-line, allout-end-of-current-line) - (allout-next-visible-heading, allout-open-topic) - (allout-kill-topic, allout-yank-processing, allout-resolve-xref) - (allout-flag-current-subtree, allout-show-to-offshoot) - (allout-hide-current-entry, allout-show-current-branches) - (allout-hide-region-body, allout-old-expose-topic) - (allout-listify-exposed, allout-latex-verbatim-quote-curr-line) - (allout-mark-topic, allout-adjust-file-variable): Enclose scopes - containing `beginning-of-line' and `end-of-line' with - `inhibit-field-text-motion' t. - -2006-07-21 Eli Zaretskii - - * frame.el (focus-follows-mouse): Document that it doesn't have - any effect on MS-Windows. - -2006-07-20 Stefan Monnier - - * progmodes/sh-script.el (sh-quoted-subshell): Further fix last change. - -2006-07-20 Jay Belanger - - * calc.el (calc-previous-alg-entry): Remove variable. - - * calc-aent.el (calc-alg-entry-history, calc-quick-calc-history): - New variables. - (calc-alg-entry): Use `calc-alg-entry-history'. - (calc-do-quick-calc): Use `calc-quick-calc-history'. - Remove reference to `calc-previous-alg-entry'. - (calcAlg-edit, calcAlg-enter): Remove reference to - `calc-previous-alg-entry'. - (calcAlg-previous): Use `previous-history-element' instead of - `calc-previous-alg-entry'. - (calc-do-alg-entry): Use history when calling `read-from-minibuffer'. - Change keybinding for `calcAlg-plus-minus', add keybindings for - `previous-history-element' and `next-history-element'. - - * calc-rewr.el (calc-match): Remove reference to - `calc-previous-alg-entry'. - - * calc-sel.el (calc-selection-history): New variable. - (calc-enter-selection, calc-sel-mult-both-sides) - (calc-sel-add-both-sides): Use `calc-selection-history'. - - * calc-map.el (calc-get-operator-history): New variable. - (calc-get-operator): Use `calc-get-operator-history'. - - * calcalg3.el (calc-curve-fit-history): New variable. - (calc-curve-fit): Use `calc-curve-fit-history'. - -2006-07-20 Kenichi Handa - - * international/mule-cmds.el (select-safe-coding-system): Fix the - way of deciding eol-type of the coding system. - -2006-07-20 Alan Mackenzie - - * progmodes/cc-langs.el (c-emacs-variable-inits): New variable. - (c-lang-setvar): New macro. - (c-make-init-lang-vars-fun): Use the initialization forms in - c-emacs-variable-inits in addition to those in c-lang-variable-inits. - (comment-start, comment-end, comment-start-skip): Change these from - c-lang-defvar's to c-lang-setvar's. - - * progmodes/cc-mode.el (c-make-emacs-variables-local): New macro, - which calls make-local-variable on the elements of - c-emacs-variable-inits. - (c-init-language-vars-for): Call this new macro. - -2006-07-19 Stefan Monnier - - * progmodes/compile.el (compilation-error-regexp-alist-alist) : - Try to rule out false positives due to time stamps. - (compilation-mode-font-lock-keywords): Remove rules made redundant - because of the above change. Add `segmentation fault' to the known and - highlighted compilation termination messages. - -2006-07-19 Kim F. Storm - - * progmodes/grep.el (grep-find-ignored-directories): - Add .svn and _darcs to list. - -2006-07-19 Mathias Dahl - - * dired.el (dired-mode-map): Add key binding `C-te' for - `tumme-dired-edit-comment-and-tags'. - - * tumme.el (tumme-display-thumbnail-original-image): Make sure - image display buffer is displayed before call to - `tumme-display-image. - (tumme-dired-display-image): Make sure image display buffer is - displayed before call to `tumme-display-image. - (tumme-mouse-display-image): Make sure image display buffer is - displayed before call to `tumme-display-image. - (tumme-widget-list): Add. - (tumme-dired-edit-comment-and-tags): Add. - (tumme-save-information-from-widgets): Add. - -2006-07-19 Stefan Monnier - - * progmodes/sh-script.el (sh-quoted-subshell): Fix last change. - -2006-07-18 Stefan Monnier - - * progmodes/sh-script.el (sh-font-lock-keywords-1): - Revert inadvertently installed patch hunk. - - * progmodes/compile.el (compilation-find-file): Handle the - cases where the user selects a non-existent file. - -2006-07-18 Stefan Monnier - - * bindings.el (minibuffer-local-map): Rebind TAB so it inserts a \t. - -2006-07-17 Chong Yidong - - * subr.el (sit-for): Just sleep-for if noninteractive. - -2006-07-17 Stefan Monnier - - * emacs-lisp/autoload.el (make-autoload): Use new arg. - - * custom.el (custom-autoload): Add `noset' argument. - (custom-push-theme): Don't autoload the variable, let callers do it. - (custom-theme-set-variables): Autoload the variable if necessary. - - * cus-edit.el (custom-variable-state-set): If the variable was - originally set outside custom, but to the same value as the default, - consider it to be standard. - - * Makefile.in (mh-loaddefs.el): Finish setting up the default empty - file *before* telling Emacs to add the autoloads, in case it fails. - - * progmodes/sh-script.el (sh-quoted-subshell): Don't match escaped `. - Use `cond', push', and `dolist'. - -2006-07-17 Richard Stallman - - * image-mode.el (tar-superior-buffer, archive-superior-buffer): - Add defvars to silence warnings. - -2006-07-17 Chong Yidong - - * progmodes/compile.el (compilation-mode-font-lock-keywords): - Don't highlight "Compiling file" messages as error. - - * dired-aux.el (dired-compress-file): Confirm again if gzipped - file already exists. - -2006-07-16 Thien-Thi Nguyen - - * find-file.el (ff-special-constructs): Doc fix. Also, for C/C++ - entry, don't assign to free var; simply return the extracted filename. - (ff-treat-as-special): Incorporate common preamble from callers. - (ff-other-file-name, ff-find-the-other-file): - Update call to ff-treat-as-special. - - * progmodes/ada-mode.el (ada-mode): Rewrite ff-special-constructs init. - -2006-07-16 Mathias Dahl - - * tumme.el (tumme-get-comment): Fix bug. - -2006-07-16 Stefan Monnier - - * files.el: Remove spurious * in docstrings. - -2006-07-14 Ken Manheimer - - * allout.el (allout-run-unit-tests-on-load): Rectify docstring - grammar. - (allout-beginning-of-current-line): Beware beginning of buffer. - Also, a comment is simplified. - (allout-hotspot-key-handler): Only set allout-post-goto-bullet - when appropriate. (This fix enables use for other than - bullet-hotspot operation.) - (allout-hide-current-subtree): While escalating to sibling-close, - make sure to situate on a topic. - -2006-07-14 Kim F. Storm - - * emulation/cua-base.el (cua-delete-selection) - (cua-toggle-set-mark): New defcustoms. - (cua-rectangle-modifier-key): Add `alt' modifier. - (cua-replace-region): Don't delete if cua-delete-selection is nil. - (cua-set-mark): Don't clear mark if cua-toggle-set-mark is nil. - Suggested by Klaus Zeitler . - - * emulation/cua-rect.el (cua-help-for-rectangle): Add `alt' modifier. - -2006-07-14 Ken Manheimer - - * allout.el: Require 'cl during byte-compilation/interactive load, - for the `assert' macro. - (allout-mode-deactivate-hook): New hook, run when allout mode - deactivates. - (allout-developer): New allout customization subgroup. - (allout-run-unit-tests-on-load): New allout-developer - customization variable, when true allout unit tests are run towards - end of file load/eval. - (allout-inhibit-auto-fill): Disable auto-fill activity even during - auto-fill-mode. - (allout-resumptions): Remove, to be replaced by... - (allout-add-resumptions): Register variable settings to be - reinstated by `allout-do-resumptions'. The settings are made - buffer-local, but the locality/globality of the suspended setting - is restored on resumption. - (allout-do-resumptions): Reinstate all settings suspended using - `allout-add-resumptions'. - (allout-test-resumptions): Unit tests (and intermediate variables) - for resumptions. - (allout-tests-globally-unbound, allout-tests-globally-true) - (allout-tests-locally-true): Intermediate variables for - resumptions unit tests. - (allout-overlay-preparations): Replaces `allout-set-overlay-category'. - (allout-exposure-category): Replaces 'allout-overlay-category variable. - (allout-mode): Use `allout-add-resumptions' and `allout-do-resumptions' - instead of retired `allout-resumptions'. For hook functions, use - `local' parameter so hook settings are created and removed as - buffer-local settings. Revise (resumptions) setting - auto-fill-function so it is set only if already active. (The - related fill-function settings are all made in either case, so - that activating auto-fill-mode activity will have the custom - allout-mode behaviors (hanging indent on topics, if configured for it). - Remove all allout-exposure-category overlays on mode deactivation. - (allout-hotspot-key-handler): New function extracted from - `allout-pre-command-business', so the functionality can be used - for other purposes, eg as a binding in an overlay. - (allout-pre-command-business): Use new `allout-hotspot-key-handler'. - (allout-auto-fill): Respect new `allout-inhibit-auto-fill' - customization variable. - (allout-run-unit-tests): Run the (currently quite small) - repertoire of unit tests. Called just before the provide iff user - has customized `allout-run-unit-tests-on-load' non-nil. - -2006-07-14 K,Aa(Broly L$,1 q(Brentey - - * emacs-lisp/authors.el (authors-aliases): Update. - -2006-07-14 Nick Roberts - - * progmodes/gdb-ui.el (gdb-display-buffer): Check for - gdb-source-window. Add dedicated argument. - (gdb-display-separate-io-buffer, gdb-append-to-inferior-io) - (gdb-display-breakpoints-buffer, gdb-display-stack-buffer) - (gdb-display-threads-buffer, gdb-display-memory-buffer) - (gdb-display-locals-buffer): Use it. - - * progmodes/gud.el (gud-display-line): Use gdb-display-buffer. - Set gdb-source-window. - -2006-07-13 Stefan Monnier - - * emacs-lisp/autoload.el (make-autoload): Remove special handling of - minor modes, redundant with the custom-autoload line above. - -2006-07-12 Chong Yidong - - * longlines.el (longlines-post-command-function): Handle open-line too. - -2006-07-12 Richard Stallman - - * progmodes/grep.el (grep-last-buffer): Doc fix. - - * info.el (Info-try-follow-nearest-node): Doc fix. - - * emacs-lisp/edebug.el (edebug-instrument-function): - Err if find-function-noselect gives no position. - - * emacs-lisp/find-func.el (find-function-search-for-symbol): - If can't find definition, return nil for position. - (find-function-do-it): Handle new return value - of find-definition-noselect. - (find-definition-noselect, find-variable-noselect): Doc fix. - (find-function-noselect): Doc fix. - - * help-mode.el (help-variable-def): Handle find-variable-noselect - returning no position. - (help-function-def): Likewise for find-function-search-for-symbol. - (help-face-def): Likewise. - - * help-fns.el (describe-variable): Handle find-variable-noselect - returning no position. - - * files.el (locate-file-completion): Avoid duplicates in result. - - * cus-edit.el (custom-no-edit): New command. - (custom-mode-map): Remap to custom-no-edit instead of - using suppress-keymap. - -2006-07-12 Nick Roberts - - * tumme.el (tumme-create-thumb, tumme-thumbnail-display-external) - (tumme-display-image, tumme-rotate-thumbnail, tumme-rotate-original) - (tumme-set-exif-data, tumme-get-exif-data): Use shell-command-switch. - - * thumbs.el (thumbs-call-convert): Use shell-command-switch. - -2006-07-11 Kim F. Storm - - * ido.el (ido-copy-current-file-name): Use buffer-name if - buffer-file-name is nil. - -2006-07-11 Chong Yidong - - * simple.el (undo-ask-before-discard): Set to nil. - - * vc.el (vc-exec-after): Don't delete process manually. - (vc-print-log): Run log-view-mode in process sentinel inside - inhibit-read-only. Don't shrink window due to timing issues. - - * progmodes/ebrowse.el (ebrowse-display-member-buffer): - Avoid using with-output-to-temp-buffer, which clobbers local vars. - -2006-07-11 Stefan Monnier - - * progmodes/compile.el (compilation-error-regexp-alist-alist): - Fix ambiguity introduced by last change. - (compilation-find-file): Move save-excursion to where it may - make sense. Fix a left over `find-file'. - -2006-07-11 Robert J. Chassell - - * textmodes/texinfmt.el (texinfo-format-separate-node): - Insert a string before point, which fits documentation, not after. - (texinfo-multitable-item): In a multitable row, insert any - additional needed @tabs and spaces. - -2006-07-11 Nick Roberts - - * tumme.el (tumme-create-thumb, tumme-thumbnail-display-external) - (tumme-display-image, tumme-rotate-thumbnail, tumme-rotate-original) - (tumme-set-exif-data, tumme-get-exif-data): Use call-process - instead of shell-command. - (tumme-create-thumbnail-buffer, tumme-create-display-image-buffer) - (tumme-display-thumbs, tumme-modify-mark-on-thumb-original-file) - (tumme-display-image, tumme-get-exif-data): Use with-current-buffer. - (tumme-display-properties-format, tumme-dired-insert-marked-thumbs) - (tumme-thumbnail-set-image-description, tumme-gallery-generate) - (tumme-rotate-original, tumme-get-exif-file-name): Fit to 80 columns. - -2006-07-11 Kim F. Storm - - * subr.el (sit-for): Doc fix. Specify normal arg list using fn-form. - Remove special case for seconds < 0. Use (redisplay t) instead. - -2006-07-10 Chong Yidong - - * progmodes/cc-awk.el (c-awk-escaped-nls*): Use eval-and-compile to - avoid compilation error. - - * subr.el (sit-for): New function. - - * play/hanoi.el (hanoi-sit-for): Check sit-for return value. - -2006-07-10 Richard Stallman - - * ldefs-boot.el (edebug): Update page. - -2006-07-10 Kim F. Storm - - * emacs-lisp/authors.el (authors-ignored-files): Ignore changes - to FOR-RELEASE and TODO. - -2006-07-10 Romain Francoise - - * emacs-lisp/authors.el (authors-aliases): Update. - -2006-07-10 Alan Mackenzie - - * progmodes/cc-awk.el, cc-defs.el, cc-fonts.el, cc-langs.el: - * cc-mode.el: Changes to eradicate eval-after-load. - -2006-07-09 Chong Yidong - - * emacs-lisp/helper.el (Helper-help-scroller): Don't signal error - on non-char events. - -2006-07-09 Romain Francoise - - * progmodes/compile.el (compilation-mode-font-lock-keywords): - Don't highlight start/end markers as compilation messages. - - * isearch.el (isearch-yank-line): Let-bind `inhibit-field-text-motion' - to t. - -2006-07-09 Stefan Monnier - - * textmodes/fill.el (fill-region-as-paragraph): Refine last change. - -2006-07-08 Richard Stallman - - * term/x-win.el (x-handle-display): Add doc string. - - * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix. - - * subr.el (def-edebug-spec): Move here. - * emacs-lisp/edebug.el (def-edebug-spec): Move to subr.el. - - * imenu.el (imenu-choose-buffer-index): Doc fix. - -2006-07-08 Romain Francoise - - * term/x-win.el (x-display-name): Fix typo. - -2006-07-08 Eli Zaretskii - - * hexl.el (hexl-find-file): Doc fix. - - * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix. - -2006-07-07 Chong Yidong - - * term/x-win.el (x-display-name): Doc fix. - -2006-07-07 Stefan Monnier - - * textmodes/fill.el (fill-delete-prefix): Don't ignore excessively - long prefixes. - (fill-region-as-paragraph): Don't round up to a whole line. - (fill-comment-paragraph): Don't include the code-before-the-comment - when calling fill-region-as-paragraph. - - * international/mule.el (make-char): Remove redundancy. - - * emacs-lisp/bytecomp.el (byte-compile-form): The `byte-compile' - property may contain an anonymous function rather than a symbol. - - * pcvs-defs.el (cvs-temp-buffer-name): Fix non-hiddenness. - - * progmodes/compile.el (compilation-error-regexp-alist-alist) : - Use shy regexp. Fix incorrect backref to potentially unmatched group. - - * dirtrack.el (dirtrack-default-directory-function): Remove. - (dirtrack-directory-function): Use file-name-as-directory. - (dirtrack-windows-directory-function): Simplify. - (dirtrack-forward-slash, dirtrack-backward-slash) - (dirtrack-replace-slash): Remove. - (dirtrack-toggle): Adjust comint-preoutput-filter-functions as well. - (dirtrack): Fix wrong parenthesizing; use match-string. - - * progmodes/octave-inf.el: Remove spurious * in docstrings. - (inferior-octave-mode): Only change the buffer-local value of - comint-dynamic-complete-functions. - (inferior-octave-mode-map, inferior-octave-mode-syntax-table): - Move the initialization to the declaration. - (inferior-octave-complete): Remove unused var `filter'. - - * shell.el (shell-mode): Only change the buffer-local value of - comint-dynamic-complete-functions. - -2006-07-07 Carsten Dominik - - * textmodes/org.el (org-agenda-get-todos): Skip subtree also if - entry is skipped because it has been scheduled. - (org-prepare-agenda-buffers): Don't mark buffers as modified when - changing `:org-archived' and `:org-comment' properties. - -2006-07-06 Chong Yidong - - * server.el (server-select-display): Don't make the temp frame - minibuffer-only, in case it's not a temp frame. - (server-process-filter): Don't delete the temp frame if it's the - only one we have on that display. - - * files.el (find-alternate-file): Doc fix. - -2006-07-05 Richard Stallman - - * files.el (abbreviate-file-name): Add save-match-data. - -2006-07-03 Richard Stallman - - * faces.el (read-face-name): Doc fix. - -2006-07-05 Chong Yidong - - * net/goto-addr.el (goto-address): Mark as safe for local evals. - -2006-07-05 Andre Spiegel - - * vc.el (vc-diff-internal): Fix prev change. - -2006-07-05 Thien-Thi Nguyen - - * emacs-lisp/lisp-mode.el (emacs-lisp-mode-map): Use eval-buffer. - * play/dunnet.el (dun-load-d, dun-eval): Likewise. - -2006-07-04 Stefan Monnier - - * thingatpt.el (symbol-at-point): Don't use `form-at-point' which - fails if the symbol contains chars like ( or '. - (bounds-of-thing-at-point): Remove unused vars `end' and `beg'. - (thing-at-point-bounds-of-url-at-point): Remove unused vars `url' and - `short'. - -2006-07-04 Kenichi Handa - - * international/mule-cmds.el (set-language-info): If LANG-ENV is - the current one, don't call set-language-environment, but call one - of set-language-environment-XXX to make INFO effective now. - (set-language-environment): Call set-language-environment-XXX - functions instead of doing the various setups directly. - (set-language-environment-coding-systems): Delete argument eol-type. - (set-language-environment-input-method) - (set-language-environment-nonascii-translation) - (set-language-environment-charset) - (set-language-environment-fontset) - (set-language-environment-unibyte): New functions. - -2006-07-03 Luc Teirlinck - - * locate.el (locate-update-when-revert): New option. - (locate-update-path): New option (suggested by Michael Albinus). - (locate-prompt-for-command): Whitespace change. - (locate-update): No longer offer to update the locate database by - default. Implement the two new options. - -2006-07-04 Nick Roberts - - * tooltip.el: Move comment about track-mouse... - - * progmodes/gud.el: ...to here. - -2006-07-03 Chong Yidong - - * facemenu.el (facemenu-listed-faces): New var. - (facemenu-unlisted-faces): Variable deleted. - (facemenu-add-new-face): Use facemenu-listed-faces. - - * emulation/viper-init.el, calendar/calendar.el: - * progmodes/make-mode.el: Delete calls to facemenu-unlisted-faces. - -2006-07-03 Carsten Dominik - - * textmodes/org.el (org-mode): Remove no invalid settings for - calc embedded mode. - (org-mode-p): New defsubst. - (org-save-all-org-buffers): New function. - (org-first-headline-recenter): Enclose outline-regexp in group - delimiters. - (org-set-tags): Keep single space after stars. - -2006-07-02 Stefan Monnier - - * window.el (set-window-text-height): Only set window-min-height to - 1 if that's the requested size. - - * diff-mode.el (diff-find-file-name): Obey cvs-pcl-cvs-dirchange-re. - (diff-unified->context, diff-context->unified) - (diff-reverse-direction): Make sure the end marker stays at the end. - (diff-mode): Add the keymap table at the end of docstring. - Use lexical-let rather than constructing a closure manually. - - * files.el (find-file-noselect-1): Remove unused var assignment. - (hack-local-variables-confirm): Print lists of strings as lists of - strings rather than lists of symbols. - (abbreviate-file-name, hack-local-variables-prop-line): - Use match-string. - (hack-one-local-variable): Move `make-local-variable' nearer its use. - (recover-session-finish): Use line-end-position. - -2006-07-02 Michael Albinus - - * net/tramp.el (tramp-handle-shell-command): Preserve current-buffer. - -2006-07-02 Daniel Pfeiffer - - * progmodes/make-mode.el (makefile-macroassign-regex): - Accept preceding keyword. - (makefile-gmake-statements): Reorganize, now that makepp has - "override" and also handle forgotten "override define". - (makefile-makepp-statements): Add new "global", "override export" - and "override global". - -2006-06-30 Juanma Barranquero - - * progmodes/ada-mode.el (ada-which-compiler, ada-mode-menu) - (ada-compile-mouse-goto-error, ada-deactivate-properties) - (ada-no-auto-case): Fix typos in docstrings. - -2006-06-30 Nick Roberts - - * info.el (Info-find-node-2): Search for makeinfo version more - carefully. - -2006-06-29 Carsten Dominik - - * textmodes/org.el (org-prepare-agenda-buffers): - Use `invisible-OK' argument for `org-end-of-subtree'. - (org-export-cleanup-toc-line): Rename from `org-html-cleanup-toc-line'. - (org-beginning-of-item): Fix bug in regular expression for white line. - (org-export-as-html): Enforce space after bullet in plain list items. - (org-set-autofill-regexps): Require space after plain list bullet - for paragraph-start. - (org-ts-regexp3): New constant. - (org-at-timestamp-p): New optional argument ALSO-INACTIVE. - (org-timestamp-up-day, org-timestamp-down-day) - (org-timestamp-change): Work with inactive timestamps. - (org-ts-regexp1): Don't allow brackets in time stamps. - -2006-06-29 Nick Roberts - - * help-mode.el (help-xref-symbol-regexp): Add property as a keyword - for ignoring links. - - * faces.el (read-face-name): Use it. - -2006-06-28 Juri Linkov - - * buff-menu.el (list-buffers-noselect): Compare Info file - with the string "dir" to detect Info directory. - - * complete.el (partial-completion-mode): In lambda for - `choose-completion-string-functions' use full function signature - with 4 args, and move point to the end of the minibuffer only if arg - `mini-p' is non-nil. - -2006-06-28 John Paul Wallington - - * ibuffer.el (ibuffer-mode): Doc fix. - -2006-06-28 Carsten Dominik - - * textmodes/org.el (org-context): New contexts :item-bullet, - :latex-fragment, :latex-preview. - (org-overlays-at, org-overlay-start, org-overlay-end): - New compatibility functions. - (org-inside-LaTeX-fragment-p): More accurate matching, using the - exact regexp that will be used during export. - (org-latex-regexps): New variable. - (org-cdlatex-mode): Improve advice for `texmathp'. - (turn-on-org-cdlatex): New function. - -2006-06-28 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-handle-font-selection): Change keys of - mac-atsu-font-table from strings to numbers. - (mac-ts-caret-position): Use also when cursor-type is nil. - (mac-ts-update-active-input-area): Add Mac OS Classic support. - Relax condition for using overlay strings. - Use mac-ts-caret-position face when cursor-type is nil. - -2006-06-26 Kim F. Storm - - * help.el (view-emacs-news): Declare `res' in the right let* form. - -2006-06-25 Michael Albinus - - * net/rcompile.el (remote-compile): Replace ange-ftp based - implementation by Tramp functions. - Suggested by Marc Abramowitz . - - * net/tramp.el (tramp-unload-tramp): Provide a doc string. - -2006-06-24 Yoshinori Koseki - - * international/fontset.el (setup-default-fontset): Fix a typo in - the "Oriya-Akruti" registry name. - -2006-06-23 Lars Hansen - - * desktop.el (desktop-full-file-name): New function. - (desktop-kill, desktop-save, desktop-remove, desktop-read) - (desktop-revert): Use it. - (desktop-clear, desktop-save, desktop-remove): Add autoload cookie. - (desktop-after-read-hook): Add option list-buffers. - (desktop-locals-to-save): Add tab-width. - (desktop-save-mode, desktop-no-desktop-file-hook, desktop-save-hook): - Fix docstring. - -2006-06-23 Carsten Dominik - - * textmodes/org.el (org-cdlatex-mode-map) - (org-cdlatex-texmathp-advice-is-done): New variables. - (org-cdlatex-mode): New minor mode. - (org-inside-LaTeX-fragment-p, org-try-cdlatex-tab): New functions. - (org-cdlatex-underscore-caret, org-cdlatex-math-modify): New commands. - (org-export-with-archived-trees): New option. - (org-open-file): Remove the call to `convert-standard-filename'. - (org-archive-tag, org-agenda-skip-archived-trees) - (org-cycle-open-archived-trees) - (org-sparse-tree-open-archived-trees): New options. - (org-cycle-hide-archived-subtrees, org-hide-archived-subtrees) - (org-toggle-tag, org-prepare-agenda-buffers, org-agenda-skip): - New functions. - (org-agenda-toggle-archive-tag, org-toggle-archive-tag): New commands. - (org-agenda-mode-map): Add binding of `org-agenda-toggle-archive-tag'. - (org-mode-map): Add binding for `org-toggle-archive-tag'. - (org-timeline, org-agenda-list, org-todo-list, org-tags-view): - Call `org-prepare-agenda-buffers'. - (org-occur, org-scan-tags): Call `org-hide-archived-subtrees'. - (org-file-apps, org-file-apps-defaults-gnu) - (org-file-apps-defaults-macosx, org-file-apps-defaults-windowsnt): - Handle remote files by forcing them to be opened in Emacs. - -2006-06-23 Andre Spiegel - - * vc.el (vc-diff-knows-L): New variable. - (vc-diff-internal): Use it to handle "diff" programs that don't - understand -L. This works automatically, no user action is necessary. - -2006-06-23 Daniel Brockman - - * net/rcirc.el (rcirc-default-user-full-name): Default to - `rcirc-default-user-name' instead of `rcirc-user-name' (which no - longer exists). - (rcirc-process-list): Check `buffer-live-p' before attempting to - switch to a buffer. - -2006-06-23 Ryan Yeske - - * net/rcirc.el (rcirc-mode): Fix initialization of coding systems - based on rcirc-coding-system-alist. - -2006-06-23 Martin Rudalics - - * cus-edit.el (customize-apropos): A better error message. - (top level) : Extend and update the list of - ignored error messages. - -2006-06-23 Michael Ernst - - * complete.el (PC-do-completion): Retain capitalization of user - input, when possible, even if completion-ignore-case is set. - -2006-06-23 Eli Zaretskii - - * generic-x.el (bat-generic-mode): Support .cmd files. - - * dos-w32.el (top level): Use find-file-not-found-functions - instead of the obsolete find-file-not-found-hooks. - -2006-06-22 Kim F. Storm - - * progmodes/grep.el (grep-mode-font-lock-keywords): Correct regexps - to recognize mode name containing submodes, such as Grep/lw. - -2006-06-21 Kim F. Storm - - * simple.el (line-move-1): Check for move-end-of-line instead of - end-of-line when setting temporary-goal-column. - -2006-06-21 Miles Bader - - * play/cookie1.el (cookie): Work properly when there's only one entry. - -2006-06-21 Nick Roberts - - * progmodes/gdb-ui.el (gdb-exited): Ensure overlay arrow gets killed. - (gdb-frame-handler): Generalize frame regexp for templates. - -2006-06-20 Glenn Morris - - * calendar/appt.el (appt-display-format): Default value must be - one of the customize options. - -2006-06-20 Dan Nicolaescu - - * term/xterm.el (terminal-init-xterm): Update key availability info. - Bind C-return. - - * term.el (term-delete-lines, term-insert-lines): Clarify comments. - -2006-06-20 Chong Yidong - - * files.el (hack-local-variables): Run `hack-local-variables-hook' - whether or not a local variables list is defined. - - * msb.el (msb): Move `sit-for' hack here to handle both - "mouse-down and drag" and "mouse-up and select" situations. - (mouse-select-buffer): Move `sit-for' hack to `msb'. - -2006-06-20 Kenichi Handa - - * international/characters.el (word-combining-categories): - Add entries for 2-byte Han characters. - -2006-06-19 Richard Stallman - - * bindings.el (mode-line-format): Save some mode line space. - - * files.el (find-file-noselect): Improve the question wording. - (basic-save-buffer-2): Mask UMASK against 666. - - * mouse.el (mouse-drag-vertical-line-rightward-window): New function. - (mouse-drag-vertical-line): Call it. - - * cus-edit.el (customize-option, customize-option-other-window): - Error if SYMBOL is nil. - -2006-06-19 Carsten Dominik - - * textmodes/org.el: Require noutline, also on XEmacs. - (org-end-of-subtree): Return point. - (org-dblock-start-re, org-dblock-end-re): New constants. - (org-create-dblock, org-prepare-dblock, org-map-dblocks) - (org-dblock-update, org-update-dblock, org-beginning-of-dblock) - (org-update-all-dblocks, org-find-dblock): New functions. - (org-collect-clock-time-entries): New function. - (org-html-handle-time-stamps): Never export CLOCK timeranges. - (org-fixup-indentation): Modify to deal correctly with lines - starting with TAB. Only one argument DIFF now. - (org-demote, org-promote): Call `org-fixup-indentation' with just - one argument, DIFF. - (org-mode): Don't mark buffer as modified when aligning tables. - (org-clock-sum): Don't mark buffer modified when adding time sum - properties. - (org-export-as-html): Add support for a link validation function. - (org-archive-all-done): New function. - (org-archive-subtree): New prefix argument. When set, archive all - done subtrees in this buffer. - (org-remove-clock-overlays) - (org-remove-occur-highlights): Use `org-inhibit-highlight-removal'. - (org-inhibit-highlight-removal): New variable, for dynamic scoping. - (org-put-clock-overlay): Don't swallow last headline character - when displaying overlay. - (org-store-link): Link to `image-mode' with just the file name. - -2006-06-18 Michael Kifer - - * viper-cmd.el (viper-special-read-and-insert-char): - Use read-key-sequence. - (viper-after-change-undo-hook): Misc enhancements. - (viper-after-change-undo-hook): New hook. - (viper-undo): Use viper-after-change-undo-hook. - (viper-add-newline-at-eob-if-necessary): Widen before making changes. - (viper-next-line-at-bol): If point is on a widget or a button, simulate - clicking on that widget/button. - - * viper.el (viper-mode): Allow a separate cursor color in Emacs state. - - * ediff-diff (ediff-test-patch-utility): Catch errors. - (ediff-actual-diff-options, ediff-actual-diff3-options): New variables. - (ediff-set-actual-diff-options): New function. - (ediff-reset-diff-options, ediff-toggle-ignore-case): - Use ediff-set-actual-diff-options. - (ediff-extract-diffs): Catch errors. - (ediff-whitespace): Add non-breakable space. - (ediff-same-file-contents): Catch errors. - - * ediff-mult.el (ediff-collect-custom-diffs): - Save coding-system-for-read. - - * ediff-vers.el (ediff-keep-tmp-versions): New variable. - (ediff-vc-internal, ediff-vc-merge-internal): - Use ediff-delete-version-file. - (ediff-delete-version-file): New function. - - * ediff-wind.el (ediff-control-frame-parameters): Set frame fringes. - - * ediff.el (ediff-directories, ediff-directory-revisions) - (ediff-merge-directories, ediff-merge-directories-with-ancestor) - (ediff-directories-internal, ediff-merge-directory-revisions) - (ediff-merge-directory-revisions-with-ancestor) - (ediff-directories3): Use read-directory-name. - -2006-06-18 Ralf Angeli - - * textmodes/tex-mode.el (tex-font-lock-match-suscript): - Remove superfluous part of regexp for brace matching which is handled - by `scan-lists' call. - -2006-06-16 Richard Stallman - - * obsolete/options.el (list-options): Put "obsolete" msg in buffer. - - * files.el (basic-save-buffer-2): For a new precious file, - use the default modes in the return value. - - * facemenu.el (facemenu-color-alist): Doc fix. - - * cus-edit.el (custom-guess-name-alist): Recognize `-flag'. - -2006-06-16 YAMAMOTO Mitsuharu - - * cus-start.el (all): Add mac-ts-script-language-on-focus. - - * term/mac-win.el (mac-text-encoding-ascii): New constant. - (mac-utxt-to-string): Use it. - (mac-ts-update-active-input-area): Use mac-ae-number. - -2006-06-15 Dan Nicolaescu - - * term.el (term-handle-scroll, term-delete-lines) - (term-insert-lines): Fix off by one errors. - -2006-06-15 Katsumi Yamaoka - - * net/tramp.el (tramp-touch): Use UTC to express time. - -2006-06-15 Chong Yidong - - * mail/sendmail.el (mail-send): Search explicitly for - mail-header-separator when checking for corrupted header lines. - -2006-06-15 Nick Roberts - - * progmodes/gdb-ui.el (gdb-same-frame): New option. - (gud-old-arrow, gdb-frame-begin, gdb-printing): New variables. - (gdb-init-1): Initialise them. - (gdb-starting): Reset gdb-printing - (gdb-starting): Save value of gud-overlay-arrow-position. - (gdb-frame-begin): Set gdb-frame-begin, gdb-printing. - (gdb-stopped): Don't look for source if calling procedure e.g "p a ()". - Use gdb-*-gdb-buffer conditionally on gdb-same-frame. - (gdb-frame-gdb-buffer): Keep menu bar, tool bar for GUD buffer. - -2006-06-14 Stefan Monnier - - * pcvs.el (cvs-retrieve-revision): Use decode-coding-inserted-region. - -2006-06-13 Martin J. Reed (tiny change) - - * net/ldap.el (ldap-ldapsearch-args): Default to SASL search. - (ldap-search-internal): Keep error messages, and a regexp fix. - -2006-06-12 Thien-Thi Nguyen - - * files.el (hack-local-variables-confirm): - Display string value using its printed representation. - -2006-06-11 Chong Yidong - - * server.el (server-edit): No-op if no server buffers exist. - -2006-06-11 Robert J. Chassell - - * textmodes/page-ext.el (pages-directory-for-addresses): - Including `pages-directory-address-mode' in the function results - in the message "Buffer in which pages were found is deleted". - -2006-06-10 Carsten Dominik - - * textmodes/org.el (org-agenda-mode-map): Add bindings for - clocking functions. - - (org-agenda-clock-in, org-check-running-clock) - (org-clock-out-if-current, org-remove-clock-overlays) - (org-put-clock-overlay): New functions. - (org-clock-marker, org-clock-file-total-minutes) - (org-clock-overlays): New variables. - (org-clock-display, org-clock-sum, org-clock-cancel) - (org-clock-out, org-clock-in): New commands. - (org-export): New function. - (org-emph-re): New constant. - (org-set-emph-re, org-do-emphasis-faces): New functions. - (org-emphasis-regexp-components, org-emphasis-alist): New options. - (org-set-font-lock-defaults): Call `org-do-emphasis-faces'. - (org-export-html-convert-emphasize): Use the configurable emphasis. - (org-cleaned-string-for-export): Make multiline emphasis visible - to the exporter. New optional argument PARAMETERS. - (org-export-as-html): Specify :emph-multiline parameter to - `org-cleaned-string-for-export'. - -2006-06-10 Richard Stallman - - * help.el (help-for-help-internal): Clean up help text. - -2006-06-10 Andreas Schwab - - * language/ethio-util.el (ethio-fidel-to-java-buffer): Fix quoting - in doc string. - - * progmodes/cperl-mode.el (cperl-short-docs): Likewise. - -2006-06-09 Karl Chen - - * progmodes/make-mode.el (makefile-fill-paragraph): Don't remove - spaces after the comment start. - -2006-06-09 Micha,Ak(Bl Cadilhac - - * play/pong.el (pong-init-buffer): - Fill buffer with spaces instead of ^A. - - * textmodes/ispell.el (ispell-kill-ispell): If ispell has been - launched asynchronously, delete its process instead of being cool. - (ispell-async-processp): Check for `delete-process' existence - instead of `kill-process' one for consistency. - -2006-06-09 Nick Roberts - - * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers-1) - (gdb-prompt, gdb-set-gud-minor-mode-existing-buffers): Show status - in mode line at startup. - -2006-06-08 Kim F. Storm - - * ido.el (ido-take-first-match, ido-push-dir-first): New commands. - (ido-init-completion-maps): Bind them to M-SPC and M-v. - (ido-copy-current-file-name): Repeating C-w inserts whole file name. - (ido-file-internal): Pass full file name to write-file. - (ido-read-internal): Only pop stack elements automatically if they - actually match an existing directory or file name. - -2006-06-07 Kenichi Handa - - * international/mule.el (find-auto-coding): Don't handle the short - name `char-trans'. - - * files.el (hack-local-variables-prop-line) - (hack-local-variables): Cancel the previous change. - -2006-06-06 Jesper Harder - - * ediff-diff.el (ediff-test-utility): Protect against file-error. - -2006-06-06 Chong Yidong - - * diff-mode.el (diff-mode): Set buffer-read-only to t when - diff-default-read-only is non-nil. - (diff-hunk-kill, diff-file-kill, diff-split-hunk) - (diff-refine-hunk): Set inhibit-read-only to t. - - * diff.el (diff-sentinel, diff): Set inhibit-read-only to t when - modifying the *Diff* buffer. - (diff-process-filter): New filter function for diff process that - sets inhibit-read-only to t when modifying the *Diff* buffer. - -2006-06-06 Carsten Dominik - - * textmodes/org.el (org-archive-subtree): Use end-of-subtree as - insertion point and control the number of empty lines. - (org-paste-subtree): Limit the number of empty lines at the end of - the inserted tree. - (org-agenda): Use buffer name of current file for narrowing. - (org-export-as-xml): Command removed. - (org-export-xml-type): Option removed. - (org-mode-map): Call `org-export-as-xoxo' directly. - (org-get-indentation): New optional argument LINE. - (org-fix-indentation, org-remove-tabs): New functions. - (org-export-as-ascii, org-ascii-level-start): Determine and apply - correct indentation for headlines that are converted it items. - (org-skip-comments): Remove table lines that contain narrowing - cookies but no other non-empty fields. - (org-set-tags): Allow groups of mutually exclusive tags. - (org-cmp-time): Sort 24:21 before items without time. - (org-get-time-of-day): Fix the interpretation of 12pm and 12am. - (org-open-at-point): Require double colon also for numbers. - -2006-06-06 Kim F. Storm - - * ido.el (ido-default-file-method, ido-default-buffer-method): - Make choice values consistent with corresponding command names. - (ido-visit-buffer): Update accordingly. Default to selected-window. - -2006-06-06 Nick Roberts - - * progmodes/gud.el (gud-running): Fix doc string. - (gud-menu-map): Use :visible instead fo :enable for debugger test. - (gud-tooltip-modes): Add python-mode. - (gud-tooltip-print-command): Add pdb. Remove perldb. - -2006-06-05 Eli Zaretskii - - * makefile.w32-in (bootstrap, $(lisp)/mh-e/mh-loaddefs.el): - Quote $(EMACS). - -2006-06-05 Richard Stallman - - * faces.el (defined-colors): Doc fix. - -2006-06-05 Thien-Thi Nguyen - - * vc.el (vc-process-filter): Inhibit undo info collection around - call to insert. - (vc-setup-buffer): Likewise for call to erase-buffer. - (vc-do-command): Likewise for call to process-file. - -2006-06-05 Nick Roberts - - * progmodes/gud.el (gud-menu-map): Use a conditional help echo - for gud-go. - (gud-common-init): Other debuggers may trigger error. - -2006-06-05 Kenichi Handa - - * international/mule.el (find-auto-coding): - Handle enable-character-translation in file header. - -2006-06-04 Kim F. Storm - - * emacs-lisp/authors.el (authors-aliases): Add mode aliases. - (authors-fixed-entries): Fix spelling. - (authors-canonical-file-name): Don't report error for wildcards. - - * help.el (view-emacs-news): Rewrite to support new NEWS, - NEWS.major, and NEWS.1-17 file naming. Add more intelligence, - e.g. version 10 matches 1.10, and don't be confused by version 1.1 - being a prefix of 1.12 (etc). A numeric prefix arg also works. - -2006-06-03 Vivek Dasmohapatra - - * progmodes/sh-script.el (sh-quoted-exec): New face for quoted - exec constructs like `foo bar`. - (sh-quoted-subshell): New helper function to search for a possibly - nested subshell (like `` or $()) within a "" quoted string. - (sh-font-lock-keywords-var): Add sh-quoted-exec for Bash. - (sh-apply-quoted-subshell): Flag quote characters inside a - subshell, which is itself already in a quoted region, as - punctuation, since this is the closest to what they actually are. - (sh-font-lock-syntactic-keywords): Add sh-quoted-subshell and - sh-apply-quoted-subshell. - (sh-font-lock-syntactic-face-function): Apply the new face for - text inside `` instead of the old font-lock-string-face. - -2006-06-03 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-ts-active-input-overlay): Add defvar. - (mac-ae-number, mac-ae-frame, mac-ae-script-language) - (mac-bytes-to-text-range, mac-ae-text-range-array) - (mac-ts-update-active-input-buf, mac-split-string-by-property-change) - (mac-replace-untranslated-utf-8-chars, mac-ts-update-active-input-area) - (mac-ts-unicode-for-key-event): New functions. - (mac-handle-toolbar-switch-mode): Use mac-ae-frame. - (mac-handle-font-selection): Use mac-ae-number. - (mac-ts-active-input-buf, mac-ts-update-active-input-area-seqno): - New variables. - (mac-ts-caret-position, mac-ts-raw-text, mac-ts-selected-raw-text) - (mac-ts-converted-text, mac-ts-selected-converted-text) - (mac-ts-block-fill-text, mac-ts-outline-text) - (mac-ts-selected-text, mac-ts-no-hilite): New faces. - (mac-ts-hilite-style-faces): New constant. - (mac-apple-event-map): Bind text input events. - (mac-dispatch-apple-event): Use command-execute instead of - call-interactively. - (global-map): Don't bind mac-apple-event. - (special-event-map): Bind mac-apple-event. - -2006-06-02 Eli Zaretskii - - * makefile.w32-in (EMACS): Remove quotes from the Emacs executable - file name. - (emacs): Enclose the value of $(EMACS) in quotes. - -2006-06-02 Juri Linkov - - * international/mule.el (sgml-html-meta-auto-coding-function): - Remove the condition `(search-forward " - - * files.el (hack-local-variables-prop-line): Ignore `char-trans' - as well as `coding'. - (hack-local-variables): Likewise. - - * international/mule.el (enable-character-translation): - Put permanent-local and safe-local-variable properties. - (find-auto-coding): Handle char-trans: tag. - -2006-06-02 Juri Linkov - - * international/mule.el (sgml-html-meta-auto-coding-function): - Limit the search by the end of the HTML header (if any). - -2006-06-01 Richard Stallman - - * subr.el (with-current-buffer): Doc fix. - -2006-06-02 Masatake YAMATO - - * progmodes/compile.el (compilation-error-regexp-alist-alist::gcov-*): - Almost rewrite. Underlines over all lines of gcov output are too - uncomfortable to read. Suggested by Dan Nicolaescu. - -2006-06-01 Luc Teirlinck - - * progmodes/inf-lisp.el (inferior-lisp-mode): Doc fixes. - - * shell.el (shell-mode): Use shell-mode-map in docstring. - - * comint.el (comint-send-input): Do not add help-echo and - mouse-face to input if `comint-use-prompt-regexp' is non-nil. - -2006-06-01 Jan Dj,Ad(Brv - - * term/x-win.el: Change x-menu-bar-start to menu-bar-open. - -2006-06-01 Nick Roberts - - * progmodes/gdb-ui.el (gdb-look-up-stack): New variable. - (gdb-stopped, gdb-info-stack-custom): If there is no source info - look up the stack and pop up GUD buffer if necessary. - (gdb-frames-select): Remove redundant call to gud-display-frame. - (gdb-info-threads-custom): Keep point at start of buffer. - (gdb-find-file-hook): Make it work for pre-GDB 6.4. - -2006-05-31 Juri Linkov - - * replace.el (query-replace-read-from, query-replace-read-to): - Bind `history-add-new-input' to nil. Call `add-to-history'. - -2006-05-31 Takaaki Ota - - * textmodes/table.el: Convert all HTML tags to lower case for - XHTML compatibility. - -2006-05-31 Masatake YAMATO - - * progmodes/compile.el: - (compilation-error-regexp-alist-alist::gcov-called-line): - Don't put face on `-' lines in gcov file. Suggested by Dan Nicolaescu. - -2006-05-31 Nick Roberts - - * progmodes/gud.el (gud-query-cmdline, gud-common-init): - Revert inadvertent changes made with last commit. - -2006-05-30 Reiner Steib - - * textmodes/flyspell.el (turn-on-flyspell, turn-off-flyspell): - New functions. - - * textmodes/text-mode.el (text-mode-hook): Use turn-on-flyspell. - -2006-05-30 Carsten Dominik - - * textmodes/org.el (org-agenda-highlight-todo): Make sure regexp - only matches in the right place. - (org-upcoming-deadline): New face. - (org-agenda-get-deadlines): Use new face `org-upcoming-deadline'. - (org-export-ascii-underline): Rename constant `org-ascii-underline' - and make it an option. - (org-export-ascii-bullets): New option. - (org-export-as-html): Many changes to emit valid XHTML. - (org-par-open): New variable. - (org-open-par, org-close-par-maybe, org-close-li-maybe): New functions. - (org-html-do-expand, org-section-number): Fix case in `replace-match'. - (org-timeline): Pass `org-timeline-show-empty-dates' to - `org-get-all-dates'. Interpret empty dates returned by - `org-get-all-dates'. - (org-get-all-dates): New argument EMPTY. Add dates without - entries to the list, mark large ranges of empty dates. - (org-point-in-group, org-context): New functions. - -2006-05-30 Nick Roberts - - * progmodes/gud.el (gud-stop-subjob): Make it work in all buffers. - - * progmodes/gdb-ui.el: Move gdb-mouse-toggle-breakpoint-* to - C-mouse-1. Move gdb-mouse-until to mouse-3, gdb-mouse-jump - to C-mouse-3 (for 2 button mice). - (gdb-send): Do the right thing for C-d. - - * speedbar.el (speedbar-detach): Delete. - (speedbar-easymenu-definition-trailer): Remove speedbar-detach as - it breaks things. - (speedbar-reconfigure-keymaps): Always add extra items to pop up menu. - -2006-05-30 Daniel Pfeiffer - - * files.el (auto-mode-alist): Add makepp suffix and optional mk on - Makeppfile. - - * progmodes/compile.el (compilation-error-regexp-alist-alist): - Add makepp diagnostic. - -2006-05-29 Richard Stallman - - * window.el (fit-window-to-buffer): Doc fix. - - * help.el (temp-buffer-max-height): Doc fix. - - * subr.el (with-current-buffer): Doc fix. - -2006-05-29 Jan Dj,Ad(Brv - - * term/x-win.el: Bind F10 to menu-bar-start if available. - -2006-05-28 Dan Nicolaescu - - * term.el (term-if-xemacs, term-ifnot-xemacs): Delete, replace - uses with a simple test. - (term-set-escape-char, term-mode, term-check-kill-echo-list) - (term-send-raw-string, term-send-raw, term-mouse-paste) - (term-char-mode, term-line-mode, term-exec, term-sentinel) - (term-handle-exit, term-read-input-ring) - (term-previous-matching-input-string) - (term-previous-matching-input-string-position) - (term-previous-matching-input-from-input) - (term-replace-by-expanded-history, term-send-input) - (term-skip-prompt, term-bol, term-send-invisible) - (term-kill-input, term-delchar-or-maybe-eof) - (term-backward-matching-input, term-check-source) - (term-proc-query, term-emulate-terminal) - (term-handle-colors-array, term-process-pager, term-pager-line) - (term-pager-bob, term-unwrap-line, term-word) - (term-dynamic-complete-filename) - (term-dynamic-complete-as-filename) - (term-dynamic-simple-complete): Replace one arm ifs with whens or - unlesses. - -2006-05-29 Stefan Monnier - - * files.el (hack-one-local-variable-eval-safep): Don't burp if used - during bootstrapping. - - * emacs-lisp/ewoc.el (ewoc--current-dll): Remove. - Basically undo the change of 2006-05-26: use extra arguments instead of - dynamic scoping. - (ewoc-locate): Remove unused var `footer'. - -2006-05-28 Stefan Monnier - - * emacs-lisp/ewoc.el (ewoc--insert-new-node): Use ewoc--refresh-node. - - * emacs-lisp/autoload.el (no-update-autoloads): Declare. - (generate-file-autoloads): Obey it. Return whether autoloads were - added at point or not. - (update-file-autoloads): Use this new return value. - Remove redundant test for the presence of an autoload cookie. - - * emacs-lisp/autoload.el (autoload-find-file): New fun. - This one calls hack-local-variables. - (generate-file-autoloads, update-file-autoloads): Use it. - - * textmodes/bibtex.el (bibtex-autokey-name-case-convert-function) - (bibtex-sort-entry-class): Add safe-local-variable predicate. - (bibtex-sort-entry-class-alist): Don't set the global value. - (bibtex-init-sort-entry-class-alist): New fun. - (bibtex-sort-buffer, bibtex-prepare-new-entry): Call it to compute - bibtex-init-sort-entry-class-alist from the buffer-local value (if any) - of bibtex-init-sort-entry-class. - -2006-05-28 Richard Stallman - - * subr.el (load-history-regexp): If FILE is relative, insist - entire last name component must match it. - (load-history-filename-element, load-history-regexp): Doc fixes. - -2006-05-29 Kim F. Storm - - * emacs-lisp/bindat.el (bindat-idx, bindat-raw): Rename dynamic vars - `pos' and `raw-data' for clarity, as eval forms may access these. - -2006-05-28 Kim F. Storm - - * emacs-lisp/bindat.el (bindat--unpack-u8): Use aref also for strings. - -2006-05-28 Stefan Monnier - - * progmodes/make-mode.el (makefile-browser-map) - (makefile-mode-syntax-table): Move initialization inside declaration. - (makefile-fill-paragraph): Use the default comment-filling code. - -2006-05-28 Chong Yidong - - * replace.el (query-replace-defaults): New variable. - (query-replace-read-from): Use `query-replace-defaults' for - default value, instead of history list. - (query-replace-read-to): Update `query-replace-defaults'. - -2006-05-27 Chong Yidong - - * msb.el (mouse-select-buffer): Minor fix to make popup menu work - with no X toolkit. - -2006-05-28 Nick Roberts - - * tumme.el (tumme-show-all-from-dir-max-files): Fix typo. - (tumme-show-all-from-dir): Add autoload. - -2006-05-27 Mathias Dahl - - * tumme.el: Change a lot of `(if .. (progn ..)' to `(when ..)'. - (tumme-remove-tag): Fix bug. - -2006-05-27 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc--create): No longer take HEADER and - FOOTER args. Update unique caller. - (ewoc-delete): Compute last node once before looping. - (ewoc--node-branch): Merge into unique caller. - (ewoc--node): Don't define constructor make-ewoc--node for this - structure. - (ewoc): Add member `hf-pp' to this structure. - (ewoc--wrap): New func. - (ewoc-create): Take additional arg NOSEP. If nil, wrap node and - header/footer pretty-printers. Save header/footer pretty-printer. - (ewoc-set-hf): Use ewoc's header/footer pretty-printer. - - * pcvs.el (cvs-make-cvs-buffer): Specify NOSEP to `ewoc-create'. - -2006-05-27 Mathias Dahl - - * dired.el (dired-mode-map): Change `tumme-tag-remove' to - `tumme-delete-tag'. Rename `Remove Image Tag' to `Delete Image - Tag'. Change "Compare directories..." to "Change Directories...". - Move tumme commands to Operate, Regexp and Immediate menus. - Change "Add Comment" to "Add Image Comment". Change "Add Image - Tag" to "Add Image Tags". - - * tumme.el (tumme-delete-tag): Rename from `tumme-tag-remove'. - (tumme-setup-dired-keybindings): Change `tumme-add-remove' to - `tumme-delete-tag'. - -2006-05-26 Luc Teirlinck - - * shell.el (shell-mode): Call shell-dirtrack-mode after - list-buffers-directory is made a local variable, to avoid setting - the default value. - -2006-05-26 Kevin Ryde - - * info.el (Info-index-next): Use where-is-internal to report - actual binding of Info-index-next, rather than hard-coded `,'. - -2006-05-26 Eli Zaretskii - - * menu-bar.el (menu-bar-apropos-menu): Move "Find Key in Manual" - and "Find Command in Manual" to here. - - * buff-menu.el (list-buffers-noselect): For Info buffers, use - Info-current-file as the file name. - -2006-05-26 Jonathan Yavner - - * ses.el (defadvice undo-more): Delete this defadvice. The undo - overrides will now be done a different way. - (ses-set-parameter): Reapply this function for undo. - (ses-set-header-row): Reconstruct header row during undo. - (ses-widen): New function. - (ses-goto-data, ses-reconstruct-all): Use new function. - (ses-command-hook): Widen buffer during undo, before unupdating - the cells. - (ses-insert-row, ses-delete-row): Widen buffer during undo. - (ses-load, ses-header-row): Permit empty (zero-row) spreadsheets. - (ses-read-cell): Avoid stupid warning for RET RET on a cell whose - formula hasn't been executed yet. - -2006-05-26 Reiner Steib - - * comint.el (comint-kill-whole-line): Rename arg to count. - Fix doc string. - -2006-05-26 Chong Yidong - - * files.el (backup-buffer-copy): Remove deleted MUSTBENEW argument - to copy-file. - -2006-05-26 Reiner Steib - - * simple.el (toggle-truncate-lines): Make arg optional for - backward compatibility. - -2006-05-26 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc--current-dll): New var. - (ewoc--node-next, ewoc--node-prev, ewoc--node-nth): Don't take - DLL arg. Instead, use ewoc--current-dll. Update all callers. - (ewoc--set-buffer-bind-dll-let*): Bind ewoc--current-dll, not `dll'. - (ewoc--adjust): Use ewoc--current-dll. - (ewoc-next, ewoc-prev, ewoc-nth): Bind ewoc--current-dll. - -2006-05-26 Carsten Dominik - - * textmodes/org.el (org-next-item, org-previous-item): Emit more - compact error message. - (org-tags-view): Refresh category table in each file. - (org-table-justify-field-maybe): Remove superfluous arguments to - `format'. - (org-export-as-html): Insert "

" before postamble. - (org-paste-subtree, org-kill-is-subtree-p): Check for empty kill ring. - -2006-05-26 Kenichi Handa - - * textmodes/po.el (po-find-charset): Pay attention to the case - FILENAME is a cons (NAME . BUFFER). - (po-find-file-coding-system-guts): Likewise. - - * arc-mode.el (archive-set-buffer-as-visiting-file): - Call find-operation-coding-system with (FILENAME . BUFFER). - - * tar-mode.el (tar-extract): Call find-operation-coding-system - with (FILENAME . BUFFER). - - * international/mule.el (decode-coding-inserted-region): - Call find-operation-coding-system with (FILENAME . BUFFER). - -2006-05-25 Chong Yidong - - * image-mode.el (image-toggle-display): Use buffer contents to - generate image for a remote file. - -2006-05-25 Juri Linkov - - * replace.el (query-replace-read-from, query-replace-read-to): - Remove 8th arg KEEP-ALL in read-from-minibuffer. - -2006-05-25 Rajesh Vaidheeswarran - - * whitespace.el (whitespace-cleanup): Change to cleanup - region if one is active. - * whitespace.el (whitespace-cleanup-internal): New internal method. - -2006-05-25 Mathias Dahl - - * dired.el (dired-mode-map): Add help-echo strings to tumme - commands. Bind `tumme-dired-display-image' to C-t i. - - * tumme.el (tumme-display-image): Change documentation string slightly. - (tumme-dired-display-image): Add call to `display-buffer'. - -2006-05-25 Thien-Thi Nguyen - - * emacs-lisp/bindat.el (bindat-unpack, bindat-pack): - Signal error if RAW-DATA is a multibyte string. - -2006-05-24 Richard Stallman - - * subr.el (with-local-quit): When handling `quit' signal, - make a chance for quit-flag to cause a quit. - - * emacs-lisp/advice.el (ad-enable-advice, ad-activate) - (ad-disable-advice): Add autoloads. - - * subr.el (read-passwd): Copy PROMPT before changing its properties. - -2006-05-25 Mathias Dahl - - * dired.el (dired-mode-map): Change menu items for tumme as per - suggestions in emacs-devel. - -2006-05-25 Nick Roberts - - * dired.el (dired-mode-map): Fix breakage. - -2006-05-25 Mathias Dahl - - * tumme.el (tumme-display-dired-image): Rename to... - (tumme-dired-display-image): ...this. - (tumme-track-movement): Change default value to t. - (tumme-display-thumbs): Add new optional parameter DO-NOT-POP, - used from `tumme-next-line-and-display' and similar commands. - - * dired.el (dired-mode-map): Add Thumbnail submenu under the - Immediate menu. Add some tumme commands there. - -2006-05-24 Luc Teirlinck - - * loadup.el ("jka-cmpr-hook"): Load it before it is needed. - -2006-05-24 Chong Yidong - - * menu-bar.el, international/mule-cmds.el: Remove tooltips for - menu entries that open submenus. - -2006-05-24 Alan Mackenzie - - * startup.el (command-line): For names of preloaded files, don't - append ".elc" (now done in Fload), and call file-truename on the - lisp directory. - - * subr.el (eval-after-load): Fix the doc-string. Allow FILE to - match ANY loaded file with the right name, not just those in - load-path. Put a regexp matching the file name into - after-load-alist, rather than the name itself. - - * subr.el (load-history-regexp, load-history-filename-element) - (do-after-load-evaluation): New functions. - - * international/mule.el (load-with-code-conversion): Do the - eval-after-load stuff by calling do-after-load-evaluation. - -2006-05-25 Nick Roberts - - * progmodes/gud.el (gud-sentinel): Condition on GUD buffer if it - has not been killed. - -2006-05-24 YAMAMOTO Mitsuharu - - * term/mac-win.el: Set idle timer to clean up expired Apple events. - (mac-ae-get-url): Redispatch Apple event on unknown scheme. - (mac-dispatch-apple-event): Resume Apple event if it is suspended. - Optionally set error message in reply. - -2006-05-24 Carsten Dominik - - * textmodes/org.el (org-open-at-point): Use renamed variable - `org-confirm-shell-link-function'. - (org-confirm-shell-link-function): Rename from - `org-confirm-shell-links'. - (org-export-directory): New function. - (org-export-as-ascii, org-export-as-html, org-export-as-xoxo) - (org-export-icalendar): Use `org-export-directory'. - (org-indent-item): Keep cursor position. - (org-link-file-path-type): New option. - (org-export-as-html): Fix bug with plain lists starting in - column 0. - (org-export-as-html): Remove deadline formatting, this happens - now already in `org-html-handle-time-stamps'. - (org-export-html-style): Deadline class removed. - (org-insert-labeled-timestamps-at-point): New option. - (org-cycle, org-occur, org-scan-tags): Use `org-overview' instead - of `hide-sublevels 1', in case the first headline is not level 1. - (org-overview, org-content): New fuction. - (org-cycle-global-status, org-cycle-subtree-status): Make these - variables buffer-local. - (org-global-cycle): New command. - (org-shifttab): Use `org-global-cycle'. - (org-insert-heading, org-insert-item): Go to end of new - headline/item after creating it. - (org-export-visible): Rename from `org-export-copy-visible'. - Now creates a temporary org-file and applies an exporting command - to it. - (org-table-eval-formula): Support for lisp forms. - (org-agenda-todo-ignore-scheduled): New option. - (org-agenda-get-todos): Use new option - `org-agenda-todo-ignore-scheduled'. - (org-export-html-inline-images): New value `maybe'. - (org-export-as-html): Inlining of images dependent on link description. - (org-archive-subtree): Check for end-of-buffer before trying - `kill-line'. - (org-agenda-follow-mode): New option. - (org-export-with-tags, org-export-with-timestamps): New options. - (org-html-handle-time-stamps): New function. - (org-keyword-time-regexp): New variable. - (org-agenda-get-todos): Use `org-agenda-todo-list-sublevels'. - (org-agenda-todo-list-sublevels): New option. - (org-html-level-start): When TITLE is nil, just close all levels. - (org-parse-key-lines, org-parse-export-options): Remove functions, - replaced by `org-infile-export-plist'. - (org-combine-plists, org-infile-export-plist) - (org-default-export-plist): New functions. - (org-export-html-preamble, org-export-html-postamble) - (org-export-html-auto-preamble, org-export-html-auto-postamble): - New variables. - (org-export-publishing-directory): New option. - (org-export-as-html, org-export-as-ascii): Use the new property - lists for settings. - (org-export-copy-visible, org-export-as-xoxo): - Respect `org-export-publishing-directory'. - (org-link-search, org-store-link, org-file-apps): Support for - links to BibTeX database entries.. - (org-get-current-options, org-set-regexps-and-options): - Implement logging as a startup option. - (org-store-link): Make sure context string is never empty - (org-insert-link): Use relative path when possible. - (org-at-item-checklet-p): New function. - (org-shifttab, org-shiftmetaleft, org-shiftmetaright) - (org-shiftmetaup, org-shiftmetadown, org-metaleft) - (org-metaright, org-metaup, org-metadown, org-shiftup) - (org-shiftdown, org-shiftright, org-shiftleft) - (org-ctrl-c-ctrl-c, org-cycle, org-return, org-meta-return): - Dispatch using `call-interactively'. - (org-call-with-arg): New defsubst. - (org-tag-alist, org-use-fast-tag-selection): New options. - (org-complete): Use `org-tag-alist'. - (org-fast-tag-insert, org-fast-tag-selection): New functions. - (org-next-item, org-previous-item): New commands. - (org-beginning-of-item, org-end-of-item): Add (interactive) to - make command. - (org-shiftup, org-shiftdown): Accommodate the item-navigation commands. - -2006-05-23 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc-delete): New function. - (ewoc-filter): Use `ewoc-delete'. - - * emacs-lisp/bindat.el (bindat-pack): Doc fix. - -2006-05-22 Stefan Monnier - - * textmodes/bibtex.el (bibtex-format-entry, bibtex-clean-entry): - Signal more user-friendly error messages. - - * complete.el (PC-do-completion): Undo the addition of implicit - wildcards if they did not lead to finding any match. - (read-file-name-internal): Don't add the final > if the completion is - not finished. - -2006-05-22 Reiner Steib - - * textmodes/bibtex.el (bibtex-maintain-sorted-entries): - Quote safe-local-variable predicate. - -2006-05-22 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc-set-data): New function. - -2006-05-21 Roland Winkler - - * textmodes/bibtex.el (bibtex-maintain-sorted-entries): Mark as safe. - - * progmodes/make-mode.el (makefile-special-targets-list) - (makefile-macro-table, makefile-target-table): Mark as risky. - (makefile-query-one-target-method): Make this the alias for the - following variable. - (makefile-query-one-target-method-function): Make this the real name. - - * textmodes/artist.el (artist-text-renderer): Make this the alias - for the following variable. - (artist-text-renderer-function): Make this the real name. - - * textmodes/flyspell.el (flyspell-generic-check-word-p): Make this - the alias for the following variable. - (flyspell-generic-check-word-predicate): Make this the real name. - - * textmodes/ispell.el (ispell-format-word): Make this the alias - for the following variable. - (ispell-format-word-function): Make this the real name. - (ispell-message-text-end): Mark as risky. - - * skeleton.el (skeleton-transformation, skeleton-filter) - (skeleton-pair-filter): Make these the aliases for the following - variables. - (skeleton-transformation-function, skeleton-filter-function) - (skeleton-pair-filter-function): Make these the real names. - - * progmodes/sh-script.el (sh-mode): Use skeleton-filter-function - and skeleton-pair-filter-function. - - * textmodes/sgml-mode.el (sgml-transformation): Make this the - alias for the following variable. - (sgml-transformation-function): Make this the real name. - (sgml-tag-alist): Mark as risky. - -2006-05-21 Richard Stallman - - * simple.el (kill-region): Interactively, pass point, then mark. - -2006-05-22 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc-create): Add autoload cookie. - -2006-05-21 Romain Francoise - - * dired-x.el (dired-mode-map): Don't bind M-g. - -2006-05-20 Richard Stallman - - * dired.el (dired-mode-map): Put dired-goto-file on j, not M-g. - (dired-goto-file): Doc fix. - -2006-05-21 Kim F. Storm - - * emulation/cua-base.el: Mention customizing cua-mode as alternative - way to enable built-in cua-mode if user loads older CUA-mode package. - - * ido.el (ido-read-file-name): Bind ido-show-dot-for-dired to nil - if default-filename is specified. - -2006-05-20 Eli Zaretskii - - * menu-bar.el (menu-bar-manuals-menu) : New menu item. - - * info.el (info-apropos): Make sure current-file and current-node - have non-nil values. Speed up by using add-to-list instead of - manual consing. - -2006-05-20 Micha,Ak(Bl Cadilhac - - * progmodes/make-mode.el (makefile-mode): Doc fix. - -2006-05-20 Eli Zaretskii - - * dired-aux.el (dired-do-shell-command): Doc fix. - -2006-05-20 Kevin Ryde - - * info-xref.el (info-xref-check-all-custom): Skip :tag part of - ``(custom-manual :tag "Foo" "(foo)Node")''. - -2006-05-20 Karl Chen - - * progmodes/cc-vars.el (c-backslash-column): Mark as safe if its - value is an integer. - -2006-05-20 Eli Zaretskii - - * mail/rmail.el (rmail-mime-charset-pattern): Add "?:" before - "format". - (rmail-convert-to-babyl-format): Undo the change from 2006-04-19. - -2006-05-20 Martin Rudalics - - * progmodes/hideif.el (show-ifdef-block): Fix bug where parts of - a hidden block remained hidden if `hide-ifdef-lines' is non-nil. - -2006-05-20 Stefan Monnier - - * progmodes/gud.el (gdb-script-font-lock-keywords): Use a stricter - regexp for keywords. - -2006-05-20 Masayuki FUJII (tiny change) - - * dnd.el (dnd-get-local-file-name): Specify LITERAL in - replace-regexp-in-string. - - * term/w32-win.el (w32-drag-n-drop): Substitute '/' for '\', - encode, and escape file name on conversion to URL. - -2006-05-20 YAMAMOTO Mitsuharu - - * dnd.el (dnd-handle-one-url): Change 3rd arg ARG to URL. - Don't unescape URL. - (dnd-get-local-file-name): Unescape URL on conversion to file name. - - * x-dnd.el (x-dnd-handle-file-name): Encode and escape file names - on conversion to URLs. - - * net/browse-url.el (browse-url-file-url): Encode file name on - conversion to URL. - - * term/mac-win.el (mac-ae-open-documents): Escape file name on - conversion to URL. - -2006-05-19 Eli Zaretskii - - * progmodes/cc-styles.el (c-style-alist): Doc fix. - -2006-05-19 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-bytes-to-digits): Remove function. - (mac-handle-toolbar-switch-mode): Use coercion instead of it. - -2006-05-19 Glenn Morris - - * calendar/diary-lib.el (diary-bahai-date) - (list-bahai-diary-entries, mark-bahai-diary-entries) - (mark-bahai-calendar-date-pattern): Not interactive. - (add-to-diary-list): New optional arg LITERAL. Doc fix. - (diary-entries-list): Change format of 4th element in each entry. - (diary-list-entries): Use add-to-diary-list. - (diary-goto-entry): Handle the case where the buffer visiting the - diary has been killed. - (fancy-diary-display): Add 'locator to button rather than 'marker. - Only generate temp-face when there are marks to apply. - (list-sexp-diary-entries): Pass literal to add-to-diary-list. - (diary-fancy-date-pattern): New variable. - (diary-time-regexp): Doc fix. - (diary-anniversary, diary-time): New faces. - (fancy-diary-font-lock-keywords): Use diary-fancy-date-pattern and - diary-time-regexp. Add font-lock-multiline property where needed. - Use new faces diary-anniversary and diary-time. - (diary-fancy-font-lock-fontify-region-function): New function, to - handle multiline font-lock pattern in fancy diary. - (fancy-diary-display-mode): Set font-lock-fontify-region-function. - (diary-font-lock-keywords): Tweak time regexp. Use new face - diary-time. - -2006-05-19 Alexander Shopov (tiny change) - - * international/code-pages.el (mik): Table corrected. - -2006-05-18 Kim F. Storm - - * progmodes/grep.el (grep-find): Don't check grep-find-command - before running command (breaks non-interactive usage). - -2006-05-18 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc--adjust): New func. - (ewoc--insert-new-node): Don't insert trailing newline. - Instead, adjust successor nodes's start markers. - (ewoc--refresh-node): Delete all text from current node's start - marker to the next one's; adjust successor nodes's start markers. - (ewoc--create): Doc fixes. - (ewoc--refresh): Don't insert newline. - (ewoc--set-hf): Use `ewoc--set-buffer-bind-dll-let*'. - * pcvs.el (cvs-make-cvs-buffer): - Specify extra newline for ewoc's header and footer. - (cvs-update-header): Update initial header recognition. - Append newline to final header and footer values. - * pcvs-info.el (cvs-fileinfo-pp): Insert trailing newline. - -2006-05-17 Richard Stallman - - * files.el (file-name-extension): Doc fix. - -2006-05-17 Stefan Monnier - - * shell.el (shell-dirtrack-mode): Make it into a proper minor mode, so - we can explicitly enable/disable rather than toggle. - (shell-mode): Use it. - (shell-cd): Don't try to reproduce what `cd' does. - -2006-05-17 Kim F. Storm - - * ido.el (ido-read-internal): Use only nondirectory part of - default item. - -2006-05-17 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc-data): Add docstring. - (ewoc-nth): Doc fix. - - (ewoc-map, ewoc-invalidate): Compute PP before looping. - -2006-05-16 Eli Zaretskii - - * international/mule.el (auto-coding-alist): Add .lha to files - read with no-conversion. - - * files.el (auto-mode-alist): Add .lha files to archive file - extensions. - - * arc-mode.el (archive-arc-summarize, archive-lzh-summarize): - Convert csize to integer when computing offsets within the - compressed archive file. - -2006-05-16 Kim F. Storm - - * subr.el (add-to-history): Add KEEP-ALL arg and align functionality - with read-from-minibuffer. - -2006-05-16 Reiner Steib - - * emacs-lisp/bytecomp.el (byte-compile-warnings-safe-p): New function. - (byte-compile-warnings): Fix safe-local-variable property. - -2006-05-16 Ken Manheimer - - * allout.el (allout-show-bodies, allout-old-style-prefixes) - (allout-stylish-prefixes, allout-numbered-bullet) - (allout-file-xref-bullet, allout-use-hanging-indents): Use simple - predicates to qualify `safe-local-variable' property, when - available, else use equivalent lambda. - (allout-current-topic-collapsed-p): Do the right thing regarding - trailing blank lines. - -2006-05-16 Stefan Monnier - - * server.el (server-start): Only create a directory if needed. - (server-edit, server-unload-hook): server-start => server-mode. - (kill-emacs-hook): Cleanup upon exit. - -2006-05-15 Stefan Monnier - - * hexl.el (hexlify-buffer): Encode process arguments manually. - -2006-05-16 Nick Roberts - - * progmodes/gud.el (gud-tooltip-tips): Add missing argument to - call to gdb-tooltip-print. - -2006-05-15 Romain Francoise - - * dired-x.el (dired-guess-shell-gnutar): On GNU and GNU/Linux - systems, default to "tar" since those systems probably have GNU tar. - -2006-05-14 Lars Hansen - - * desktop.el (desktop-missing-file-warning): Fix docstring. - (desktop-restore-file-buffer): Correct question asked on missing file. - -2006-05-14 Kim F. Storm - - * progmodes/cc-subword.el (c-forward-subword, c-backward-subword): - Add CUA move property. - -2006-05-13 Chong Yidong - - * custom.el (custom-push-theme): Load the variable before checking - its `standard-value'. - -2006-05-13 Lars Hansen - - * desktop.el (desktop-save): Use with-temp-buffer. - -2006-05-12 Glenn Morris - - * calendar/cal-menu.el (calendar-mode-map, calendar-mouse-3-map): - * calendar/calendar.el (calendar-mode-map): - * calendar/diary-lib.el (include-other-diary-files, diary-mail-entries): - * calendar/appt.el (appt-check, appt-make-list): Refer to - diary-view-entries, diary-list-entries, diary-show-all-entries - rather than obsolete aliases. - -2006-05-12 Chong Yidong - - * simple.el (line-move-finish): Avoid calling point motion hooks - while processing intangibility. - -2006-05-12 Dan Nicolaescu - - * term/xterm.el (terminal-init-xterm): Fix typo. - -2006-05-12 Ken Manheimer - - * allout.el (allout-view-change-hook): Mark as being deprecated, - to be replaced by `allout-exposure-change-hook'. - (allout-exposure-change-hook): New, replacing - `allout-view-change-hook'. - (allout-flag-region): Run new hook `allout-exposure-change-hook', - in addition to `allout-view-change-hook'. - (allout-show-bodies, allout-old-style-prefixes) - (allout-stylish-prefixes, allout-use-hanging-indents): Quote the - lambda forms to prevent their showing up in variable help - presentations as inscrutable byte-compiled code. - (allout-numbered-bullet, allout-file-xref-bullet, allout-layout): - Use string-or-null-p to qualify safe-local-variable values. - (allout-reindent-bodies): Use memq to qualify matches against - valid safe-local-variable values. Also, quote the lambda as above. - (allout-use-mode-specific-leader): Add missing candidate-value - symbols, use memq, and quote the lambda. - (allout-overlay-interior-modification-handler): Remove unused - variables `msg' and 'opened'. - (allout-hidden-p): Constrain invisibility consideration to allout's - invisibility spec, disregarding invisibility for other reasons. - -2006-05-12 Reiner Steib - - * files.el (version-control): Correct safe values. - -2006-05-12 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc-refresh): Compute PP once before looping. - - (ewoc--node-enter-before, ewoc--create-node): Delete funcs. - (ewoc--insert-new-node): New func. - Update callers of deleted funcs to use it, instead. - -2006-05-11 Glenn Morris - - * calendar/calendar.el (diary-show-all-entries): Do not refer to - obsolete alias `show-all-diary-entries'. - (make-diary-entry): Not interactive. - (cal-tex-cursor-month, cal-tex-cursor-month-landscape) - (cal-tex-cursor-day, cal-tex-cursor-week, cal-tex-cursor-week2) - (cal-tex-cursor-week-iso, cal-tex-cursor-week-monday) - (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week) - (cal-tex-cursor-year-landscape, cal-tex-cursor-filofax-year) - (cal-tex-cursor-filofax-daily, cal-tex-cursor-year): Interactive. - -2006-05-11 Johan Bockg,Ae(Brd - - * calendar/calendar.el (calendar-french-date-string) - (calendar-mayan-date-string, calendar-chinese-date-string) - (calendar-astro-date-string, calendar-iso-date-string) - (calendar-islamic-date-string, calendar-bahai-date-string) - (calendar-hebrew-date-string, calendar-coptic-date-string) - (calendar-ethiopic-date-string, calendar-persian-date-string): - These functions are not interactive. - -2006-05-11 Luc Teirlinck - - * files.el: Balance parentheses. - -2006-05-11 Reiner Steib - - * files.el, newcomment.el, outline.el, simple.el, - * emacs-lisp/bytecomp.el, progmodes/cc-compat.el, - * progmodes/cc-vars.el, progmodes/compile.el: - Move `safe-local-variable' declarations to the respective files. - - * help-fns.el (describe-variable): Don't print safe-var if it is - byte-code. Improve wording as suggested by Luc Teirlinck. - -2006-05-11 Nick Roberts - - * progmodes/gdb-ui.el (gdb-reset): Update speedbar if necessary. - (gdb-var-evaluate-expression-handler, gdb-var-update-handler): - Use a token for pending-triggers to ensure gdb-var-update - gets called once per user input again for pre-GDB 6.4. - (gdb-var-delete): Match on more complex expressions. - (gdb-var-list-children-handler, gdb-var-create-handler): - Use a token for consistency. - -2006-05-11 Carsten Dominik - - * textmodes/org.el (org-read-date, org-goto-calendar) - (org-agenda-goto-calendar): - Bind `view-calendar-holidays-initially' to nil. - -2006-05-11 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc--refresh-node): No longer save-excursion. - Update all callers to do it there, instead. - -2006-05-10 Glenn Morris - - * calendar/calendar.el (calendar-basic-setup): Set day to 1 in - prefix arg case, to avoid view-diary-entries-initially error. - Reported by Stephen Berman . - (calendar-date-is-legal-p): Handle dates with no day part. - -2006-05-11 Nick Roberts - - * comint.el (comint-insert-input): Just make it when - comint-use-prompt regexp is nil (default) and with the mouse. - (comint-copy-old-input): Reinstate from 2004-06-23. - (comint-mode-map): Bind C-c C-m to it. - -2006-05-10 J.D. Smith - - * progmodes/idlw-shell.el (idlwave-shell-move-or-history): - Remove spurious move to point-max (new comint behavior fixes). - - * progmodes/idlwave.el (idlwave-push-mark): Removed obsolete - compatibility function (Emacs 18/19). - (idlwave-is-continuation-line): Always return point at start of - previous non-blank continuation line. - (keyword-parameters): Fix continued comment font-lock matcher. - (idlwave-font-lock-fontify-region): Written, use as - font-lock-fontify-region-function, to fix continued keyword - fontification issues. - -2006-05-10 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-font-panel-mode): Doc fix. - (mac-service-selection, mac-service-open-file) - (mac-service-open-selection, mac-service-mail-selection) - (mac-service-mail-to, mac-service-insert-text): Rename from - mac-services-*. All uses changed. - (mac-apple-event-map): Rename event symbol `services' to `service'. - -2006-05-10 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc--dll-create, ewoc--node-delete) - (ewoc--node-enter-first, ewoc--node-enter-last) - (ewoc--delete-node-internal): Merge funcs into unique callers. - -2006-05-09 Chong Yidong - - * emacs-lisp/crm.el (completing-read-multiple): Properly handle - return value of read-from-minibuffer for empty input. - -2006-05-09 Miles Bader - - * comint.el (comint-insert-input): Remove redundant calls to setq - and goto-char. - -2006-05-10 Nick Roberts - - * comint.el (comint-insert-input): Make it work when - comint-use-prompt-regexp is t. - -2006-05-10 Miles Bader - - * subr.el (field-at-pos): New function. - - * comint.el (comint-insert-input): Use it. - -2006-05-09 Juri Linkov - - * battery.el (battery-linux-proc-acpi): Also try - `/proc/acpi/thermal_zone/THR2/temperature'. - - * files.el : Remove `eval' and `let' binding - for now unused lambda `string-or-null'. - - * add-log.el (change-log-default-name): Put `string-or-null-p' - instead of lambda on `safe-local-variable' property. - - * diff-mode.el (diff-context->unified): Use `region-beginning' and - `region-end' instead of `mark' and `point'. - (diff-unified->context, diff-reverse-direction, diff-fixup-modifs): - Operate on region in Transient Mark mode when the mark is active. - Use `region-beginning' and `region-end' instead of `mark' and - `point'. - (diff-hunk-text, diff-goto-source): Doc fix. - - * startup.el (fancy-splash-screens, normal-splash-screen): Use - face `mode-line-buffer-id' for mode-line buffer face instead of - hard-coded `(:weight bold)'. - - * arc-mode.el (archive-set-buffer-as-visiting-file): Bind - buffer-undo-list to t (undo-ask is reproducible by visiting - nested archives). - -2006-05-09 Kim F. Storm - - * progmodes/grep.el (rgrep): Set default directory of *grep* - buffer if we start M-x rgrep in the *grep* buffer and choose - a different base directory. - -2006-05-09 Michael Albinus - - * net/tramp.el (tramp-register-file-name-handlers): Enable Tramp - completion also when ido is loaded. - -2006-05-09 Masatake YAMATO - - * font-lock.el (cpp-font-lock-keywords-source-directives): Addded - "warning" and "import". - (cpp-font-lock-keywords): Added "warning". - -2006-05-08 Dan Nicolaescu - - * term/xterm.el (terminal-init-xterm): Add more key bindings. - -2006-05-08 Stefan Monnier - - * mwheel.el (mwheel-scroll): Make sure that when scrolling multiple - pages at a time, if we signal the end, we should indeed reach that end. - -2006-05-08 David Reitter - - * emacs-lisp/easy-mmode.el (define-minor-mode): Only preserve messages - output during execution of the body. - -2006-05-08 Kim F. Storm - - * progmodes/grep.el (lgrep, rgrep): Doc fixes. - -2006-05-08 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc--set-buffer-bind-dll-let*): - Use with-current-buffer. - -2006-05-07 Kim F. Storm - - * subr.el (add-to-history): Remove keep-dups arg. - - * kmacro.el (kmacro-push-ring): Let-bind history-delete-duplicates - to nil around call to add-to-history. - -2006-05-07 Stefan Monnier - - * emacs-lisp/syntax.el (syntax-ppss): Flush the cache before rather - than after a buffer modification. - -2006-05-08 Nick Roberts - - * progmodes/gdb-ui.el (gdb-var-create-handler): Move speedbar - call to... - (gud-watch): ...here so speedbar is raised for already watched - expressions. - (gdb-speedbar-refresh): Delete function. - (gdb-speedbar-update, gdb-speedbar-timer-fn): New functions. - Use speedbar-timer-fn instead of speedbar-refresh (reverting - earlier change). - (gdb-var-evaluate-expression-handler) - (gdb-var-list-children-handler-1, gdb-var-update-handler-1): Use it. - - * speedbar.el (speedbar-timer-fn): Remove save-window-excursion. - Update localized contents for all buffers except ignored modes. - -2006-05-07 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-utxt-to-string): Use `eq' instead of `='. - (mac-atsu-font-table, mac-font-panel-mode): Add defvars. - (mac-bytes-to-digits, mac-handle-toolbar-switch-mode) - (mac-handle-font-panel-closed, mac-handle-font-selection): - New functions. - (mac-font-panel-mode): New minor mode. - (mac-apple-event-map): Add bindings for toolbar toggle button and - font panel. - (menu-bar-showhide-menu): Add mac-font-panel-mode. - -2006-05-07 John Paul Wallington - - * ibuffer.el (ibuffer-compressed-file-name-regexp): - Avoid `regexp-opt'; simplify regexp for readability. - -2006-05-06 Eli Zaretskii - - * ldefs-boot.el (dired-do-redisplay, dired-maybe-insert-subdir): - * files.el (buffer-stale-function): - * dired-aux.el (dired-do-redisplay, dired-maybe-insert-subdir): - * autorevert.el (global-auto-revert-non-file-buffers): Point Info - links to the main manual, not to emacs-xtra. - -2006-05-06 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-utxt-to-string): Don't make adjustment for - MacJapanese if text is ASCII-only. - -2006-05-06 Nick Roberts - - * progmodes/gdb-ui.el (gdb-goto-breakpoint): Use or instead of - unless so nil isn't returned. - (gdb-setup-windows, gdb-restore-windows): Reset gdb-source-window. - -2006-05-06 Kim F. Storm - - * subr.el (add-to-history): New function. - - * ediff.el (ediff-files, ediff-files3, ediff-merge-files) - (ediff-merge-files-with-ancestor): - * env.el (setenv): - * isearch.el (isearch-update-ring): - * server.el (server-visit-files): - * progmodes/grep.el (lgrep, rgrep): - * progmodes/vhdl-mode.el (vhdl-generate-makefile-1): - * progmodes/xscheme.el (xscheme-insert-expression): - Use add-to-history. - - * kmacro.el (kmacro-push-ring): Use add-to-history. - (kmacro-ring-length): Remove unused defun. - (kmacro-start-macro): Use kmacro-push-ring. - -2006-05-06 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el (ewoc-create, ewoc-set-hf): Use `insert' - directly instead of a lambda expression that calls it. - -2006-05-06 Kim F. Storm - - * avoid.el (mouse-avoidance-point-position): Use posn-at-point - instead of compute-motion. - -2006-05-05 Dan Nicolaescu - - * ibuffer.el (ibuffer-compressed-file-name-regexp): Undo previous - change. - -2006-05-05 Reiner Steib - - * startup.el (command-line-1): Refer to "Pure Storage" on - pure-space-overflow. - -2006-05-05 Martin Rudalics - - * emacs-lisp/re-builder.el (reb-update-overlays): Cycle through - provided faces once they all have been used up. - -2006-05-05 Eli Zaretskii - - * startup.el (normal-splash-screen, fancy-splash-screens-1): Add a - reference to the Lisp manual to the warning about pure space - overflow. - -2006-05-05 Micha,Ak(Bl Cadilhac - - * textmodes/ispell.el (ispell-buffer-local-dict): Add a `no-reload' - argument to avoid the call to `ispell-internal-change-dictionary' - when not needed. - (ispell-change-dictionary): Use this argument and call - `ispell-internal-change-dictionary' after the possible change - to `ispell-local-dictionary'. - (ispell-internal-change-dictionary): Check for a change in - personal dictionary use too. - -2006-05-05 Eli Zaretskii - - * startup.el (command-line): On MS-Windows, probe "~", not - "~USER", for warning about non-existent home directory. - - * arc-mode.el (archive-l-e): New optional argument `float' means - generate a float value. - (archive-arc-summarize, archive-lzh-summarize) - (archive-zip-summarize, archive-zoo-summarize): Invoke archive-l-e - with 3rd argument non-nil when file's size is being computed. - Format the file sizes with %8.0f instead of %8d. - -2006-05-05 YAMAMOTO Mitsuharu - - * cus-start.el (all): Add mac-dnd-known-types. - - * term/mac-win.el (mac-utxt-to-string, mac-string-to-utxt) - (mac-TEXT-to-string, mac-string-to-TEXT, mac-furl-to-string) - (mac-TIFF-to-string): New functions. - (x-get-selection, x-selection-value) - (mac-select-convert-to-string): Use them. - (mac-text-encoding-mac-japanese-basic-variant): New constant. - (mac-dnd-types-alist): New customization variable. - (mac-dnd-handle-furl, mac-dnd-handle-hfs, mac-dnd-insert-utxt) - (mac-dnd-insert-TEXT, mac-dnd-insert-TIFF, mac-dnd-drop-data) - (mac-dnd-handle-drag-n-drop-event): New functions. - (mac-drag-n-drop): Remove function. - (global-map): Bind drag-n-drop and M-drag-n-drop to - mac-dnd-handle-drag-n-drop-event. - -2006-05-04 Karl Chen - - * progmodes/perl-mode.el (perl-beginning-of-function): - Skip anonymous subs. - -2006-05-04 Dan Nicolaescu - - * ibuffer.el (ibuffer-compressed-file-name-regexp): Avoid loading - regexp-opt at run time. - - * term.el (term-handle-ansi-escape): Fix off by one error. - -2006-05-04 Nick Roberts - - * progmodes/gdb-ui.el (gdb-force-update): Delete variable... - (gdb-init-1, gdb-post-prompt): ...and references to it. - (gdb-frame-handler): Strip directory name from filename if present. - - * progmodes/gud.el (gdb-force-update): Delete defvar - (gud-speedbar-buttons): ...and references to it. Use window-start - to try to keep positon in watch expression. - -2006-05-03 Richard Stallman - - * simple.el (next-history-element, previous-history-element): Doc fix. - - * isearch.el (isearch-update-ring): Doc fix. - -2006-05-03 Dan Nicolaescu - - * isearch.el (isearch-update-ring): Take history-delete-duplicates - into consideration. Replace one arm ifs with whens. - -2006-05-03 Nick Roberts - - * progmodes/gdb-ui.el (gud-watch): Let user select an expression. - (menu): Fix typo. - -2006-05-02 Miles Bader - - * replace.el (occur-engine): Bind `inhibit-field-text-motion' to t. - -2006-05-02 Jay Belanger - - * calc/calc-embed.el (calc-override-minor-modes-map) - (calc-override-minor-modes): New variables. - (calc-do-embedded): Make sure that Calc keystrokes aren't - overwritten by minor modes. - -2006-05-02 Chong Yidong - - * msb.el (msb): If EVENT is a down event, read and discard the up event. - -2006-05-02 Reiner Steib - - * startup.el (command-line-1): Refer to Lisp manual when - pure-space-overflow occurs. - - * files.el (byte-compile-dynamic, byte-compile-dynamic-docstrings) - (byte-compile-warnings, find-file-visit-truename, indent-tabs-mode) - (left-margin, no-byte-compile, no-update-autoloads, truncate-lines) - (version-control): Don't use `t' for safe-local-variable declarations. - -2006-05-01 Richard Stallman - - * diff-mode.el (diff-mode-shared-map): Don't bind M-W, M-U, M-C, - M-r, M-R, M-A, M-SPC or M-DEL. - (diff-mode-map): diff-refine-hunk now on C-c C-w - (diff-mode-map): Bind C-c C-e, C-c C-n, C-c C-r, C-c C-u. - - * help-mode.el (help-mode): view-exit-action calls delete-window - only when it is safe and possible. - - * simple.el (undo-outer-limit-truncate): Put quotes around buffer name - in messages. - - * emacs-lisp/warnings.el (display-warning, lwarn): Doc fixes. - - * tool-bar.el (tool-bar-setup): Put Help and Preferences items - in the default tool-bar-map. - -2006-05-01 Michael Albinus - - * net/tramp.el (tramp-completion-file-name-handler-alist) - (tramp-run-real-handler, tramp-completion-run-real-handler) - (tramp-completion-handle-file-name-all-completions) - (tramp-completion-handle-file-name-completion): Autoload them. - (tramp-completion-handle-file-exists-p) - (tramp-completion-handle-file-name-directory) - (tramp-completion-handle-file-name-nondirectory) - (tramp-completion-handle-expand-file-name): Remove them. - (tramp-handle-file-name-directory): Return the real directory name. - Returning "/" only doesn't need to be necessary any longer. - (tramp-file-name-handler): Make special attention when in hostname - completion mode. - (tramp-completion-file-name-handler): Revert patch from 2006-04-28. - (tramp-register-file-name-handlers): - Register `tramp-completion-file-name-handler' only when - `partial-completion-mode' is enabled. - (tramp-completion-handle-file-name-all-completions): - Delete directory part from results. - (tramp-get-completion-methods, tramp-get-completion-user-host): - Discard deleting "/", it doesn't work after the change of - `tramp-handle-file-name-directory' above. - -2006-05-01 Kim F. Storm - - * progmodes/grep.el (grep-expand-template): Use save-match-data - and symbol-value. - -2006-05-01 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-ae-open-documents, mac-drag-n-drop): - Use select-frame-set-input-focus instead of raise-frame. - (global-map): Bind M-drag-n-drop to mac-drag-n-drop. - -2006-05-01 Nick Roberts - - * progmodes/gud.el (gud-def): Add %c case. - (gud-speedbar-buttons): Don't bind case-fold-search unnecessarily. - (gud-format-command): Make match case sensitive. Match on %F. - -2006-04-30 Glenn Morris - - * calendar/cal-tex.el (cal-tex-preamble-extra): New variable. - (cal-tex-preamble): Use cal-tex-preamble-extra. - (cal-tex-list-diary-entries): Refer to `diary-list-entries' rather - than alias `list-diary-entries'. - -2006-04-29 Dan Nicolaescu - - * help-fns.el (describe-variable): Add info about safe local variables. - -2006-04-29 Richard Stallman - - * bindings.el (mode-line-format): help-echo doc fixes. - - * net/tramp.el (tramp-file-name-handler-alist): Delete - expand-file-name and other operations that can cause spurious loading. - -2006-04-29 Stefan Monnier - - * files.el (safe-local-variable-p): Remove support for the special - value t. - - * textmodes/paragraphs.el (sentence-end-without-space): - Fix safety predicate. - (sentence-end-double-space, sentence-end-without-period) - (paragraph-ignore-fill-prefix): - * textmodes/fill.el (colon-double-space): - * abbrev.el (abbrev-mode): Tighten the safety predicate. - - * subr.el (booleanp): New fun. - - * textmodes/reftex-vars.el (reftex-guess-label-type): - Tighten the safety predicate. - -2006-04-28 Kim F. Storm - - * progmodes/grep.el (defgroup grep): Doc fix. - (grep-auto-highlight): Remove. - (grep-template): New defcustom. - (grep-find-template): Rename from grep-tree-template. - (grep-files-aliases): Rename from grep-tree-files-aliases. - Remove "all" alias, add "l" alias. - (grep-tree-ignore-case, grep-tree-ignore-CVS-directories): Remove. - (grep-find-ignored-directories): New defcustom to replace - grep-tree-ignore-CVS-directories, to facilitate ignoring - subdirectories for multiple version control systems. - (grep-mode-map): Add Recursive grep item to GREP menu. - (grep-regexp-history, grep-files-history): New defvars. - (grep-probe): New helper function. - (grep-compute-defaults): Use it to simplify code. - Adapt to name changes. - Use `.' as base in grep-find-template rather than . - (grep): Remove superfluous highlight-regexp arg. Fix doc. - Call grep-compute-defaults unconditionally. - (grep-expand-keywords): New defconst. - (grep-expand-template): Rename from grep-expand-command-macros. - Simplify via grep-expand-keywords. Look at case-fold-search instead - of grep-tree-ignore-case to add -i option. - Bind case-fold-search to nil while matching keywords. - (grep-tree-last-regexp, grep-tree-last-files): Remove. - (grep-read-regexp, grep-read-files): New helper functions. - (rgrep): Rename from grep-tree. Rework to use proper histories. - Adapt to changes in defcustoms and functions above. - (lgrep): New command, as grep, but using same interactive UI as rgrep. - -2006-04-28 Michael Albinus - - * net/tramp.el (tramp-completion-file-name-handler): - Disable Tramp's functionality while loading Tramp itself. - (tramp-register-file-name-handlers): That's a defsubst now. - Code from `tramp-repair-jka-compr' moved here. Apply it via - `after-init-hook'. - (tramp-repair-jka-compr): Remove. - -2006-04-27 Jay Belanger - - * calc-embed.el (calc-embedded-make-info): Use `math-read-expr' to - read expression when `math-read-big-expr' doesn't work. - -2006-04-27 Reiner Steib - - * startup.el (command-line-1): Display warning when - pure-space-overflow is non-nil. - -2006-04-26 Roland Winkler - - * textmodes/bibtex.el (bibtex-user-optional-fields): Mark as - risky. - -2006-04-26 Roland Winkler - - * textmodes/bibtex.el (bibtex-url): New optional arg no-browse. - Return the URL or nil if none can be generated. - -2006-04-27 Nick Roberts - - * progmodes/gud.el (gud-comint-buffer): Move forward to stop - byte compiler warnings. - (gud-basic-call, gud-find-expr): Let user select an expression - for printing. Print expression as well as value in GUD buffer. - -2006-04-17 Ken Manheimer - - * allout.el: Remove local autoload declaration for - pgg-gpg-symmetric-key-p, since that's now done in pgg-gpg.el. - (allout-show-bodies, allout-header-prefix, allout-primary-bullet) - (allout-plain-bullets-string, allout-distinctive-bullets-string) - (allout-use-mode-specific-leader, allout-old-style-prefixes) - (allout-stylish-prefixes, allout-numbered-bullet) - (allout-file-xref-bullet, allout-presentation-padding) - (allout-use-hanging-indents, allout-reindent-bodies): Mark as - safe-local-variable with suitable value spec, and add autoload - cookie for loaddefs inclusion. We now use an explicit spec everywhere. - (move-beginning-of-line, move-end-of-line): Repair so these compat - functions now actually resituate the point, when appropriate. - -2006-04-26 Stefan Monnier - - * progmodes/cc-subword.el (c-subword-mode-map): Use command remapping. - - * add-log.el (add-log-iso8601-time-zone): Make parameter optional. - (add-log-iso8601-time-string): Fix call to format-time-string. - -2006-04-26 Kim F. Storm - - * subr.el (posn-string, posn-image, posn-object): Doc fix. - -2006-04-26 Masatake YAMATO - - * progmodes/asm-mode.el (asm-mode, asm-mode-syntax-table): - Add support for "//" style comments. Remove `b' flag - from ?* in `asm-mode-syntax-table'. - -2006-04-26 Stefan Monnier - - * follow.el: Use (featurep 'xemacs) everywhere. - (follow-mode): Use define-minor-mode. - (follow-mode-map): Move initialization into the declaration. - Use command remapping. - (follow-emacs-version-xemacs-p): Remove. - (follow-submit-feedback): Remove. - - * allout.el (allout-layout, allout-passphrase-verifier-string) - (allout-passphrase-hint-string): Tighten up a bit the safety predicate. - - * textmodes/reftex-vars.el (reftex-vref-is-default) - (reftex-fref-is-default, reftex-guess-label-type): - Tighten up a bit the safety predicate. - - * textmodes/paragraphs.el (sentence-end-double-space) - (sentence-end-without-period, sentence-end-without-space) - (page-delimiter, paragraph-ignore-fill-prefix): - Tighten up a bit the safety predicate. - - * textmodes/fill.el (colon-double-space): Tighten up the safety pred. - - * progmodes/python.el (python-continuation-line-p) - (python-beginning-of-statement): syntax-ppss may return - a negative depth. - (python-mode): Don't forcefully enable font-lock. - - * time-stamp.el (time-stamp-start, time-stamp-end) - (time-stamp-inserts-lines): Tighten up a bit the safety predicate. - - * add-log.el: Remove spurious * in docstrings. - (add-log-time-zone-rule): Rename from change-log-time-zone-rule. - (add-change-log-entry): Use it here, since it's not specific - to iso8601. - (add-log-iso8601-time-string): Don't use it here any more. - (change-log-indent-text, change-log-indent): Rename from add-log-*. - - * abbrev.el (abbrev-mode): Tighten up a bit the safety predicate. - -2006-04-25 Ryan Yeske - - * net/rcirc.el (rcirc-print): Revert last change with ignored nicks. - (rcirc-toggle-low-priority): Doc fix. - (rcirc-handler-NOTICE): Remove beginning of line anchor in - ChanServ regexp. - (rcirc-startup-channels-alist): Connect to #rcirc by default, not - #emacs. - (rcirc-bright-nick-regexp, rcirc-dim-nick-regexp): Add variables. - (rcirc-decode-coding-system): Use utf-8 as the default. - (rcirc-multiline-minor-mode): Set the fill-column. - (rcirc-format-response-string): Display bright and dim nicks. - (rcirc-browse-url): Update interactive spec to fill ARG. - (rcirc-bright-nick, rcirc-dim-nick): Add faces. - (rcirc-print): Ignore dim-nick messages wrt modeline-activity. - -2006-04-24 J.D. Smith - - * textmodes/bibtex.el (bibtex-find-entry): Don't demand matching - case for @Article, etc. - -2006-04-23 Michael Albinus - - * net/tramp.el (tramp-register-file-name-handlers): New defun. - Added with autoload cookie. - (tramp-unload-file-name-handlers): Rename from - `tramp-unload-file-name-handler-alist'. - -2006-04-23 Romain Francoise - - * comint.el (comint-match-partial-filename): Doc fix. - -2006-04-21 Glenn Morris - - * calendar/cal-menu.el (calendar-mode-map): Refer to - `diary-view-entries' rather than alias `view-diary-entries'. - * calendar/diary-lib.el (view-other-diary-entries): Ditto. - -2006-04-21 Luc Teirlinck - - * progmodes/antlr-mode.el (antlr-default): - * cus-edit.el (custom-documentation): - * faces.el (scroll-bar, border, cursor, mouse): Avoid nil spec - in defface. - -2006-04-21 Kim F. Storm - - * image.el (image-type): New defun split out of create-image. - (create-image): Use it. - -2006-04-21 Carsten Dominik - - * textmodes/org.el (org-mode-map): Catch conflict with old allout.el. - (org-open-at-point): Remove the "...done" message to keep output - in the echo area visible. - (org-export-as-xoxo): Fix call to `indent-region'. - -2006-04-21 Kevin Ryde - - * international/mule.el (keyboard-coding-system): defcustom - info-link fixes: "Specify Coding" has been split, keyboard now in - "Terminal Coding", and "Single-Byte Character Support" is now - "Unibyte Mode". - -2006-04-21 Nick Roberts - - * progmodes/gdb-ui.el (gdb-data-list-register-values-handler): - Use font-lock-warning-face for any errors e.g. no stack. - (gdb-stack-list-locals-handler): Display any errors e.g. no stack. - -2006-04-20 Dan Nicolaescu - - * progmodes/sh-script.el (sh-shell): Mark as safe. - - * newcomment.el (comment-start, comment-start-skip) - (comment-end-skip, comment-end): Mark as safe. - -2006-04-20 Carsten Dominik - - * textmodes/org.el (org-deadline-announce): Face removed. - (org-level-faces, org-n-levels): Convert to constant. - (org-compatible-face): New function. - (org-hide, org-level-1, org-level-2, org-level-3, org-level-4) - (org-level-5, org-level-6, org-level-7, org-level-8) - (org-special-keyword, org-warning, org-headline-done, org-link) - (org-date, org-tag, org-todo, org-done, org-table, org-formula) - (org-scheduled-today, org-scheduled-previously, org-time-grid): - Face definition revised for better color tty support. - (org-bold-re, org-italic-re, org-underline-re): New constants. - (org-set-font-lock-defaults): Use the new constants. - (org-agenda-highlight-todo): New function. - (org-agenda-todo): Fix bug with point at end of line. - (org-agenda-change-all-lines, org-finalize-agenda-entries): - Fontify TODO keywords. - (org-insert-link): Preserve relative path in ../ links. - (org-export-as-html): Convert links pointing to .org files into - links that will work beteen the exported HTML files. - (org-todo-list): Fix bug when arg=0. - (org-insert-heading): More fine-tuning. - -2006-04-19 Romain Francoise - - * mail/rmail.el (rmail-convert-to-babyl-format): Use second group - from `rmail-mime-charset-pattern'. - -2006-04-18 Dan Nicolaescu - - * progmodes/python.el (python-mode): Fix typo. - -2006-04-18 J.D. Smith - - * comint.el (comint-previous-input): Don't clobber input line - when moving off either end of the input history ring. - (comint-delete-input): New function, used by - `comint-previous-input' and others. - (comint-previous-matching-input): - Use `coming-delete-input'. Save the partial input if leaving the - edit line. Goto point-max before deleting input to avoid - partial input fragments hanging around. - (comint-restore-input): New function, used by `comint-previous-input'. - -2006-04-18 Luc Teirlinck - - * imenu.el (imenu--index-alist): Balance parentheses. - -2006-04-18 Dan Nicolaescu - - * progmodes/python.el (python-mode): Add support for hs-minor-mode. - -2006-04-19 Reiner Steib - - * abbrev.el (read-abbrev-file): Use abbrev-file-name if optional - file is nil. - -2006-04-18 Richard Stallman - - * tooltip.el (tooltip-mode, tooltip-use-echo-area): Doc fixes. - - * imenu.el (imenu-create-index-function, imenu--index-alist) - (imenu--last-menubar-index-alist, imenu--make-index-alist) - (imenu-default-create-index-function, imenu--generic-function): - Doc fixes. - - * image-mode.el (image-toggle-display): Handle tar and arc subfiles. - - * help-mode.el (help-mode): Set view-exit-action to delete window. - - * env.el (setenv): Get rid of arg UNSET. Interactive unsetting - now works by passing nil as arg. - - * apropos.el (apropos-print): Don't do where-is on self-insert-command. - - * abbrev.el (edit-abbrevs-redefine): Temporarily widen. - (read-abbrev-file): Provide default when reading filename. - - * files.el (enable-local-variables): Allow :all as value. - (hack-local-variables): Implement that value. - (safe-local-variable-values, safe-local-eval-forms) - (enable-local-variables): Mark as risky. - (find-file-visit-truename, kept-old-versions): Mark safe. - - * time-stamp.el (time-stamp-format, time-stamp-line-limit) - (time-stamp-start, time-stamp-end, time-stamp-inserts-lines) - (time-stamp-count, time-stamp-pattern): Add safe-local-variable prop. - -2006-04-18 Stefan Monnier - - * progmodes/tcl.el (tcl-send-string, tcl-send-region): - Use forward-line so as to get to BOL even in the presence of fields. - (tcl-eval-region): Strip surrounding space to avoid multiple prompts - in return. - (inferior-tcl): Tell tclsh to work in interactive mode. - - * complete.el (partial-completion-mode): - Use 'choose-completion-string-functions to make sure that - choose-completion fills the minibuffer properly. - - * complete.el (PC-old-read-file-name-internal): Remove. - (PC-read-include-file-name-internal): Remove. Turn it into an advice - of read-file-name-internal. - (partial-completion-mode): Enable/disable this advice. - -2006-04-18 Juanma Barranquero - - * net/tramp.el (tramp-completion-file-name-handler): Revert change - of 2006-04-17. - -2006-04-18 Carsten Dominik - - * textmodes/org.el (org-insert-heading): Insert heading before - current if at beginning of line. - (org-todo, org-date): New faces. - (org-table-align): Make sure tooltip window contains full text. - (org-no-properties): New defsubst. - (org-set-font-lock-defaults): Use new faces. - -2006-04-18 Nick Roberts - - * progmodes/gud.el (gud-speedbar-item-info): Display frame address - for root variables. - - * progmodes/gdb-ui.el (gdb-pc-address): Rename from gdb-frame-address. - (gdb-frame-address): Re-use to identify frame for watch expression. - (gdb-var-list, gdb-var-create-handler): Add frame address for root - variables. - (gdb-init-1, gdb-source, gdb-post-prompt) - (gdb-assembler-custom, gdb-invalidate-assembler): Use gdb-pc-address. - (gdb-frame-handler): Get gdb-frame-address. - -2006-04-17 Michael Albinus - - Sync with Tramp 2.0.53. - - * net/tramp.el (tramp-completion-mode): ?\t has event-modifier - 'control. Reported by Matthias F,Av(Brste . - (tramp-completion-file-name-handler): Add autoload cookie for - adding to `file-name-handler-alist'. - - * net/tramp-smb.el (tramp-smb-wait-for-output): Wait always for - the prompt. If it returns earlier (when detecting an error - message), the rest of the output will merge accidently with the - output of the next command. Reported by M Jared Finder - . - - * net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test - for `process-file', in order to let it work for older Emacsen too. - -2006-04-17 Ralf Angeli - - * textmodes/tex-mode.el (tex-font-lock-match-suscript): New function. - (tex-font-lock-keywords-3): Use it. - -2006-04-16 Stefan Monnier - - * newcomment.el (comment-add): New function. - (comment-region-default, comment-dwim): Use it. - -2006-04-15 Michael Olson - - * emacs-lisp/tq.el: Improve comments. - (tq-queue-head-question): New accessor function. - (tq-queue-head-regexp, tq-queue-head-closure, tq-queue-head-fn): - Update for modified queue structure. - (tq-queue-add): Accept `question' argument. - (tq-queue-pop): If a question is pending, send it. - (tq-enqueue): Accept new optional argument `delay-question'. - If this is non-nil, and at least one other question is pending a - response, queue the question rather than sending it immediately. - -2006-04-15 Roland Winkler - - * calendar/appt.el (appt-add): Check whether an appointment is - already present in appt-time-msg-list. Simplify code. - -2006-04-14 Stefan Monnier - - * progmodes/cc-langs.el (c-mode-menu): - Don't presume c-subword-mode is bound. - -2006-04-13 Bill Wohler - - * cus-edit.el (customize-package-emacs-version-alist): Update docstring. - (customize-package-emacs-version): Use cdr instead of cadr now - that alists use dotted pairs. - - * custom.el (defcustom): Fix docstring for :package-version. - -2006-04-13 Michael Albinus - - * net/tramp.el (tramp-display-shell-command-buffer): New defvar. - (tramp-handle-shell-command): Display output buffer only when - `tramp-display-shell-command-buffer' is true. - (tramp-handle-process-file): Set `tramp-display-shell-command-buffer'. - -2006-04-13 Carsten Dominik - - * textmodes/org.el (org-set-autofill-regexps): Set only the local - values of `adaptive-fill-regexp' and `adaptive-fill-function'. - -2006-04-13 Romain Francoise - - * pcvs-parse.el (cvs-parse-table): Use `with-temp-buffer' to avoid - leaving temporary .cvsignore buffers behind. - -2006-04-13 Carsten Dominik - - * textmodes/org.el (org-set-regexps-and-options) - (org-get-current-options): Better names for the startup folding - options. - -2006-04-13 Thien-Thi Nguyen - - * vc.el (vc-annotate): Arrange for point to end up at the same - line number as in the original, but only when using a new buffer. - -2006-04-12 Stuart Herring (tiny change) - - * files.el (hack-one-local-variable-eval-safep): - Recognize `edebug-form-spec' for `put', but only if it passes - `edebug-basic-spec'. Generalize `put' handling. - - * emacs-lisp/edebug.el (edebug-basic-spec): New function for - vetting file-local form specs. - - * allout.el (allout-layout): Autoload its `safe-local-variable' - property. - -2006-04-13 Carsten Dominik - - * textmodes/org.el (org-ctrl-c-ctrl-c): Improve documentation string. - (org-agenda-mouse-1-follows-link) - (org-mouse-1-follows-link): New options. - (org-format-agenda-item): Fix bug if TAGS is nil. - (org-agenda-get-scheduled): Quote `priority' symbol in plist. - -2006-04-13 Nick Roberts - - * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers): - GDB 6.1+ gives full filename for "info sources" so use - file-name-nondirectory. - -2006-04-12 Romain Francoise - - * subr.el (read-passwd): Bind `message-log-max' to nil. - -2006-04-12 Stefan Monnier - - * progmodes/perl-mode.el (perl-indent-new-calculate): - Recompute parse-start after jumping backward by a whole sexp. - -2006-04-11 Stefan Monnier - - * vc.el (vc-ensure-vc-buffer): Only change current-buffer, not the - window configuration. - (vc-annotate-display-select): Select the buffer so that current-buffer - (and selected-window) is the output buffer at the end of vc-annotate. - -2006-04-11 J.D. Smith - - * vc.el (vc-annotate-color-map): Add custom TTY color map for - 8-color terminals, to use all of the colors in a sensible order. - 256-color terminals work well with the standard map. - (vc-annotate-lines): Only strip the first color character if it - is "#", to allow for terminal-style named colors. - (vc-annotate-warp-version): Pass buf to `goto-line' to ensure - the correct buffer is scrolled. - -2006-04-11 Richard Stallman - - * emacs-lisp/bytecomp.el (byte-compile-file): - Bind enable-local-variables to :safe, and make normal-mode obey it. - - * files.el (enable-local-variables): Allow value :safe. - (normal-mode): Doc fix. - (hack-local-variables): Implement enable-local-variables = :safe. - (hack-local-variables-confirm): Don't prevent quitting. - -2006-04-11 Stefan Monnier - - * loadhist.el (unload-feature): A bit of sanity check of - load-history entries. Cancel timer-vars before unbinding them. - - * hexl.el (hexl-isearch-search-function): Fix regexp-building code to - quote special chars, and make the trick work on the hex part of the - buffer as well. - (hexl-mode, hexl-save-buffer, hexl-mode-exit) - (hexl-maybe-dehexlify-buffer): Use restore-buffer-modified-p. - - * startup.el (normal-splash-screen): Fix last change so we don't wait - 2 minutes if we don't show the splash screen. - -2006-04-11 Carsten Dominik - - * textmodes/org.el (org-export-plain-list-max-depth) - (org-table-spaces-around-separators) - (org-radio-targets, org-activate-camels) - (org-table-spaces-around-invisible-separators): Options removed. - (org-time-stamp-rounding-minutes, org-remember-templates) - (org-ellipsis, org-activate-links, org-descriptive-links): - New options. - (org-remember-apply-template, org-current-time) - (org-finish-edit-table-field) - (org-link-unescape, org-link-escape) - (org-string-width, org-table-clean-line, org-html-do-expand) - (org-edit-agenda-file-list, org-store-new-agenda-file-list) - (org-read-agenda-file-list): New functions. - (org-table-edit-field) - (org-table-create-or-convert-from-region): New commands - (org-table-toggle-vline-visibility): Command removed. - (org-table-convert-region): Made a command. - (orgtbl-deleta-backward-char, orgtbl-delete-char): Remove commands. - Replace with the normal org- functions. - (org-self-insert-command): Don't trigger realign unnecessarily - when blanking a field that is not full. - (org-mode): `Set buffer-invisibility-spec' for links. - (org-activate-links2): Hide link part and only show descriptive - part of the link. - (org-insert-link): Modify for new linking system. - (org-store-link): Store description separately, for use by - `org-insert-link'. - (org-table-align): Use `org-string-width'. - (defgroup): Completely new group structure for custom variables. - (org-agenda-files): Option: Single file name allowed. Function: - Optional argument unrestrited means ignore any restricitons. - (org-install-agenda-files-menu): Find a buffer in Org-mode before - trying to modify the menu. Use generalized access to - `org-agenda-files.' - (org-agenda-list, org-todo-list, org-cycle-agenda-files) - (org-agenda-file-to-front, org-remove-file, org-diary) - (org-tags-view, org-export-icalendar-all-agenda-files) - (org-export-icalendar-combine-agenda-files): Use generalized - access to `org-agenda-files'. - (org-remember-handler): Correctly preserve heading if present. - (org-table-insert-row, org-table-insert-hline): Deal with - invisible characters. - -2006-04-10 J.D. Smith - - * vc.el (vc-annotate-display-mode): Made default 'fullscale. - (vc-annotate-color-map): New 18 element constant - value/saturation, rotating hue colormap, from red->blue. - (vc-annotate-mode-menu): "Default" -> "By Color Map Range". - (vc-annotate-display-select): Switch to annotate-mode elsewhere. - (vc-annotate): To avoid killing the required local variables, - set them before the end of `with-output-to-temp-buffer', and - after first switching to annotate-mode. - (vc-annotate-warp-version): Add buffer argument in goto-line to - ensure annotation, not source, is scrolled. - -2006-04-10 Bill Wohler - - * custom.el (defcustom, custom-handle-keyword): - Add :package-version keyword. - (custom-add-package-version): New function. Sets value of new - property 'custom-package-version from :package-version keyword. - (defcustom): Create Common Keywords section in docstring. - (defface, defgroup): Replace definitions of a select few keywords - with a reference to the Common Keywords in defcustom. - (defcustom, defface, defgroup): Replace reference to Customization - chapter in manual with hyperlink. - - * cus-edit.el (customize-package-emacs-version-alist): New variable. - (customize-changed-options): Add check for custom-package-version. - (customize-package-emacs-version): New function to look up Emacs - version corresponding to the given package version. - - * emacs-lisp/find-func.el (find-function-regexp): Allow dashes in - defun name, in similar fashion to find-variable-regexp. - -2006-04-10 Eli Zaretskii - - * international/mule-cmds.el (set-locale-environment): Fix last - change for when the locale's preferences don't specify any encoding. - -2006-04-10 Stefan Monnier - - * emacs-lisp/find-func.el (find-function-search-for-symbol): Fix regexp - so the defined var/fun doesn't need to be quoted. - -2006-04-10 Richard Stallman - - * finder.el (finder-mode-map): Add n and p bindings. - -2006-04-10 Nick Roberts - - * progmodes/gdb-ui.el (gdb-init-1): Re-initialise gdb-main-file to nil. - (gdb-get-version): Make it work for pre "interpreter mi" (GDB 5.3?). - (gdb-setup-windows): Put something in source window if we can't find - the source file. - (gdb-frame-handler): Make it work again with just assembly. - (gdb-data-list-register-values-handler): Make it work when there is - no stack. - -2006-04-09 Richard Stallman - - * mail/rmail.el (rmail-mime-charset-pattern): Ignore format and delsp - specs while looking for charset. - - * textmodes/picture.el (picture-mode-exit): Run picture-mode-exit-hook. - - * play/landmark.el (lm-font-lock-face-O, lm-font-lock-face-X): - Make them faces. - (lm-font-lock-keywords): Update appropriately. - -2006-04-10 Kim F. Storm - - * simple.el (filter-buffer-substring): Add NOPROPS arg, so - it can also replace buffer-substring-no-properties. - - * emulation/cua-base.el (cua-delete-region, cua-paste) - (cua-repeat-replace-region): Use filter-buffer-substring. - - * emulation/cua-gmrk.el (cua-copy-region-to-global-mark) - (cua-cut-region-to-global-mark): Likewise. - - * emulation/cua-rect.el (cua--extract-rectangle) - (cua-incr-rectangle, cua--rectangle-aux-replace): Likewise. - -2006-04-09 Roland Winkler - - * textmodes/bibtex.el (bibtex-entry-update): New optional arg - entry-type. Add field delimiters to numerical fields if they are - not present. - -2006-04-09 Roland Winkler - - * textmodes/bibtex.el (bibtex-find-text-internal): Add new element - string-const to return value. - (bibtex-remove-delimiters): Use it. - -2006-04-08 Stefan Monnier - - * emacs-lisp/bytecomp.el (byte-compile-form): Don't call - cl-byte-compile-compiler-macro unless it exists. - -2006-04-08 Eli Zaretskii - - * files.el (hack-local-variables-confirm) : - Clarify message text. Suggested by Ralf Angeli. - -2006-04-08 Micha,Ak(Bl Cadilhac - - * rect.el (kill-rectangle): Don't barf if `kill-read-only-ok' is set. - (delete-extract-rectangle-line): Use `filter-buffer-substring' - instead of `buffer-substring' and `delete-region'. (Most of the - code actually copied from `kill-region'.) - -2006-04-08 Ryan Yeske - - * rcirc.el (rcirc-default-server): Rename from rcirc-server. - (rcirc-default-port): Rename from rcirc-port. - (rcirc-default-nick): Rename from rcirc-nick. - (rcirc-default-user-name): Rename from rcirc-user-name. - (rcirc-default-user-full-name): Rename from rcirc-user-full-name. - (rcirc-low-priority-flag): New variable. - (rcirc-decode-coding-system): New defcustom. - (rcirc-encode-coding-system): New defcustom. - (rcirc-coding-system-alist): New defcustom. - (rcirc-multiline-major-mode): New defcustom. - (rcirc-nick): New internal variable. - (rcirc-process): Remove variable. - (rcirc-server-buffer): New variable. - (rcirc): Update to use rcirc-default-* variables above. - (rcirc-connect): Do not add window-configuration-hook-here. - (rcirc-server): New internal variable. - (rcirc-connect): Do not send keepalive pings if - rcirc-keepalive-seconds is nil. - (with-rcirc-server-buffer): New macro. - (rcirc-send-string): Encode with rcirc-encode-coding-system. - (rcirc-server-name): Rename from rcirc-server. - (rcirc-buffer-process): New function. - (rcirc-buffer-nick): New function. - (rcirc-buffer-target): Remove function. - (set-rcirc-decode-coding-system, set-rcirc-encode-coding-system): - New commands. - (rcirc-mode-map): Change binding of C-c C-l to - rcirc-toggle-low-priority. - (rcirc-mode): Initialize coding system based on - rcirc-coding-system-alist. New change-major-mode-hook to part the - channel on a mode change. Make kill-buffer-hook buffer-local. - (rcirc-change-major-mode-hook): New function. - (rcirc-clean-up-buffer): Rename from rcirc-kill-buffer-hook-1. - (rcirc-last-post-time): New variable. - (rcirc-process-message): Store the last time user posted a message - to this target. - (rcirc-multiline-minor-mode): New mode. - (rcirc-multiline-minor-mode-map): New mode map. - (rcirc-edit-multiline): Put multiline-edit buffer in - rcirc-multiline-major-mode along with rcirc-multiline-minor-mode. - (rcirc-print): Ignore any line starting with an ignored nick. - (rcirc-print): Decode using rcirc-decode-coding-system. - (rcirc-track-minor-mode): Update global-mode-string when disabling - this mode. - (minor-mode-alist): Add LowPri indicator. - (rcirc-toggle-low-priority): New function. - (rcirc-last-non-irc-buffer): Prefix arg now no means switch to - next lowpriority buffer with activity. - (rcirc-record-activity): Sort buffers in rcirc-activity by the - last time the user posted a message in to the target. - (rcirc-update-activity-string): New formatting for low priority - buffers. - (rcirc-split-activity): New function. - (rcirc-handler-PART, rcirc-handler-KICK) - (rcirc-handler-PART-or-KICK): Kick responses are printed properly. - (rcirc-nick-away-alist): New variable. - (rcirc-handler-301): New handler. Away messages are printed once - per change. - -2006-04-08 Eli Zaretskii - - * info.el (Info-follow-nearest-node): Doc fix. - - * international/mule-cmds.el (set-locale-environment): Make sure - the coding-system preferred by the locale's language has the same - EOL conversion type as the original buffer-file-coding-system. - (locale-language-names): Add a few MS Windows language codes. - -2006-04-07 Richard Stallman - - * simple.el (eval-expression): Doc fix. - - * emacs-lisp/lisp-mode.el (eval-print-last-sexp, eval-last-sexp) - (eval-defun): Doc fixes. - -2006-04-07 Reiner Steib - - * pgg-gpg.el: Revert to revision 1.8 to allow the use of gpg-agent. - -2006-04-07 Nick Roberts - - * progmodes/gdb-ui.el (gdb-init-2): Set current filename using - GDB list command without argument for greater generality. - -2006-04-06 Reiner Steib - - * subr.el (string-or-null-p): New function. - - * textmodes/paragraphs.el (sentence-end): Use string-or-null-p. - - * textmodes/ispell.el (ispell-local-dictionary): Use string-or-null-p. - - * files.el: Update comment about safe-local-variable declarations. - -2006-04-06 J.D. Smith - - * progmodes/idlwave.el: Updated to IDLWAVE version 6.0. - See idlwave.org. - - * progmodes/idlw-shell.el: Updated to IDLWAVE version 6.0. - See idlwave.org. Includes code to obsolete idlw-rinfo.el. - - * progmodes/idlw-help.el: Updated to IDLWAVE version 6.0. - See idlwave.org. - - * progmodes/idlw-complete-structtag.el: Updated to IDLWAVE - version 6.0 (minimal changes). See idlwave.org. - - * progmodes/idlw-toolbar.el: Updated to IDLWAVE version - 6.0 (minimal changes). See idlwave.org. - - * progmodes/idlw-rinfo.el: File obsoleted and removed. - -2006-04-06 Romain Francoise - - * pgg-gpg.el: Sync back with Gnus 5.10, reverting changes that add - symmetric encryption features and a new asynchronous interface to - GnuPG. This new version is version 1.4, plus whitespace changes. - -2006-04-06 Reiner Steib - - * files.el: Move some `safe-local-variable' declarations to the - respective files. - - * textmodes/ispell.el (ispell-check-comments) - (ispell-local-dictionary): Mark as safe. - - * abbrev.el (abbrev-mode): Mark as safe. - - * add-log.el (change-log-default-name): Mark as safe. - - * textmodes/reftex-vars.el (reftex-vref-is-default) - (reftex-fref-is-default, reftex-level-indent) - (reftex-guess-label-type): Mark as safe. - - * textmodes/fill.el (colon-double-space): Mark as safe. - - * textmodes/paragraphs.el (paragraph-start, paragraph-separate) - (sentence-end-double-space, sentence-end-without-period) - (sentence-end-without-space, sentence-end, sentence-end-base) - (page-delimiter, paragraph-ignore-fill-prefix): Mark as safe. - -2006-04-06 Kim F. Storm - - * ido.el (ido-mode): Remove ido-ignore-unc-host-regexps from - the :set-after list. - (ido-downcase-unc-hosts): New user option. Default on. - (ido-ignore-unc-host-regexps): Don't reset ido-unc-hosts-cache - when it is set, as regexps are now applied on the fly. - (ido-unc-hosts): Keep all known hosts in ido-unc-hosts-cache. - Make C-a DTRT--filter hosts through ido-ignore-unc-host-regexps - on the fly, but only when ido-process-ignore-lists is set. - Do case insensitive filtering if ido-downcase-unc-hosts is set. - Only downcase names if ido-downcase-unc-hosts is set. - -2006-04-06 Juanma Barranquero - - * ido.el (ido-unc-hosts-cache): Fix typo in docstring. - - * woman.el (WoMan-xref-man-page): Fix call to `substring'. - -2006-04-05 Kim F. Storm - - * ido.el (ido-mode): Set after ido-unc-hosts and - ido-ignore-unc-host-regexps. - (ido-save-history): Save ido-unc-hosts-cache. - (ido-load-history): Load ido-unc-hosts-cache. - (ido-reread-directory): Refresh unc hosts cache in // dir. - - * startup.el (fancy-splash-screens): Set emulation-mode-map-alists - to nil while displaying slash screen. - -2006-04-05 Daiki Ueno - - * pgg-gpg.el (pgg-gpg-encrypt-region, pgg-gpg-sign-region): - Wait for BEGIN_SIGNING too, new in GnuPG 1.4.3. - -2006-04-05 Kenichi Handa - - * international/characters.el: Setup cases of Latin, Greek, and - Cyrillic characters in CJK charsets. - -2006-03-29 Daiki Ueno - - * pgg-gpg.el (pgg-gpg-start-process): Don't bind - default-enable-multibyte-characters. This reverts the change from - revision 6.17 which is no longer necessary because the passphrase - is sent separately now. GnuPG messages are unreadable under - multibyte locales with default-enable-multibyte-characters set to nil. - -2006-04-04 Andreas Schwab - - * files.el: Mark `left-margin', `byte-compile-dynamic-docstrings' - and `byte-compile-warnings' as `safe-local-variable'. - -2006-04-04 Dan Nicolaescu - - * man.el (Man-mode-map): Restore the \r binding. - (Man-abstract-xref-man-page): If Man-target-string is a function, - call it. - (Man-highlight-references): Use Man-default-man-entry to get the - target. Deal with xrefs too. - (Man-highlight-references0): Don't call the target function. - - * woman.el (WoMan-xref-man-page): Strip the section number, woman - cannot deal with it. - -2006-04-04 Daiki Ueno - - * pgg-gpg.el: Clean up process buffers every time gpg processes - complete. - -2006-04-04 Kenichi Handa - - * sort.el (sort-build-lists): Don't bind inhibit-field-text-motion - here. - (sort-lines, sort-numeric-fields, sort-fields, sort-columns): - Temporarily bind inhibit-field-text-motion to t. - -2006-04-03 Stefan Monnier - - * startup.el (normal-splash-screen): Only set mode-line-format in the - splash buffer, so as not to interfere when debugging the code. - Ignore errors when switching buffer. - -2006-04-03 Romain Francoise - - * dired.el (dired-dnd-protocol-alist): Fix typo. - -2006-04-03 Reiner Steib - - * savehist.el (savehist): Add :version. - (savehist-ignored-variables): New variable. - (savehist-minibuffer-hook): Don't save variables listed in - `savehist-ignored-variables'. - - * dired.el (dired-dnd-protocol-alist): Mention that change does - only apply to new buffers in doc string. - -2006-04-03 Lennart Borgman (tiny change) - - * recentf.el (recentf-open-files-item): Include newline in button - field, so opening a file will work, when the point is at the end - of the file name. Allow, for example, to [i]search a file by - extension and just push RET to open it. - -2006-04-03 Daiki Ueno - - * pgg-gpg.el (pgg-gpg-process-filter) - (pgg-gpg-wait-for-completion): Check if buffer is alive. - - * pgg-gpg.el (pgg-gpg-process-sentinel): Don't remove GNUPG: - lines, temporary fix. - -2006-04-02 Dan Nicolaescu - - * ibuf-macs.el (define-ibuffer-column): Document the new parameter. - -2006-04-02 Richard Stallman - - * progmodes/compile.el (compilation-message-face): Make it defcustom. - -2006-04-02 Dan Nicolaescu - - * ibuf-macs.el (define-ibuffer-column): Add a new key: - header-mouse-map. - - * ibuffer.el (ibuffer-name-header-map, ibuffer-size-header-map) - (ibuffer-mode-header-map): New keymaps. - (ibuffer-update-title-and-summary): Enable mouse face highlighting - and keybindings for column headers. - (name, size, mode) : Add a header-mouse-map - property. - -2006-04-02 Drew Adams - - * speedbar.el (speedbar-after-create-hook): Doc fix. - -2006-04-02 Michael Ernst - - * shell.el (shell-directory-tracker) - (shell-dynamic-complete-command): Doc fixes. - -2006-04-01 Matt Hodges - - * pcomplete.el (pcomplete-show-completions): Recognize TAB on text - terminals. - -2006-04-01 Kim F. Storm - - * ido.el (ido-unc-hosts-cache): New defvar. - (ido-unc-hosts): If value of defcustom is a function, call it to - get list of UNC hosts. Add function-item choices to specify - ido-unc-hosts-net-view or user function. - (ido-ignore-unc-host-regexps): New defcustom. - (ido-unc-hosts-net-view, ido-unc-hosts): New functions. - (ido-is-unc-root, ido-is-unc-host, ido-file-name-all-completions) - (ido-exhibit): Call ido-unc-hosts to get list of UNC hosts. - -2006-03-13 Stefan Monnier - - * pcvs-util.el (cvs-insert-strings): Fix bug with strings longer than - wwidth. - -2006-03-31 Juanma Barranquero - - * ido.el (ido-cache-unc-host-shares-time, ido-report-no-match) - (ido-max-work-file-list, ido-switch-buffer) - (ido-read-file-name-as-directory-commands): - Fix typos in docstrings. - -2006-03-30 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-system-coding-system): Define and use after - Mac-specific coding systems are ready. - -2006-03-27 Romain Francoise - - * net/rcirc.el (rcirc-connect): Add autoload cookie. - - * ldefs-boot.el: Update. - -2006-03-27 Daiki Ueno - - * pgg-gpg.el: Invoke gpg asynchronous, to avoid querying for - passphrases when it is not needed. - (pgg-gpg-use-agent): Add, to hard code that pgg shouldn't wait for - passphrase stuff from gpg, should only be necessary when you use - gpg with a smartcard. - -2006-03-27 Nick Roberts - - * comint.el (comint-dynamic-list-completions): Allow user to - select *Completions* buffer. - -2006-03-27 Carsten Dominik - - * textmodes/org.el (org-get-level-face): Fix bug with level counting. - -2006-03-26 Andreas Schwab - - * progmodes/gud.el (gdb): Only complain about multiple debugging - when the gdb process is still running. - -2006-03-25 Eli Zaretskii - - * mail/rmail.el (tool-bar-map): Defvar it. - (rmail-tool-bar-map): Tool-bar buttons for Rmail. - (rmail-perm-variables): Make rmail-tool-bar-map a local variable. - -2006-03-25 Sven Joachim (tiny change) - - * help.el (print-help-return-message): Suggest to use - display-buffer instead of switch-to-buffer-other-window to restore - the previous window without selecting it. - -2006-03-25 YAMAMOTO Mitsuharu - - * frame.el (select-frame-by-name): Call x-focus-frame also when - window-system is mac. - - * term/mac-win.el: Adjust Courier font specifications in - x-fixed-font-alist. - (mac-select-convert-to-string): Use utf-16be-mac or utf-16le-mac - when directly encoding to UTF-16 in native byte order, no BOM. - -2006-03-25 Kim F. Storm - - * emulation/cua-base.el (cua-rectangle-mark-key): New defcustom. - (cua--init-keymaps): Use it instead of fixed C-return. - (cua-mode): Set after it. - - * emulation/cua-rect.el (cua--init-rectangles): - Use cua-rectangle-mark-key instead of fixed C-return. - -2006-03-25 Nick Roberts - - * progmodes/gdb-ui.el (gdba): Revert 2006-03-10 change for case of - "run" in .gdbinit. - (gdb-var-create-regexp): Remove "^done" prefix for gdb-mi.el. - -2006-03-24 Romain Francoise - - * files.el (ctl-x-5-map): Really bind C-x 5 C-o to - `display-buffer-other-frame'. - -2006-03-24 Kim F. Storm - - * apropos.el (apropos-synonyms): Add selection => region. - -2006-03-24 Nick Roberts - - * progmodes/gdb-ui.el (gdb-var-create-regexp) - (gdb-var-list-children-regexp, gdb-var-update-regexp) - (gdb-var-list-children-regexp-1, gdb-var-update-regexp-1) - (gdb-data-list-register-values-regexp) - (gdb-stack-list-locals-regexp, gdb-stack-list-locals-handler): - Future proof against new fields being added to MI output. - (gdb-send): Don't treat backslashes for program input as - continuations. - (gdb-assembler-handler): Don't use window-start for this handler. - (gdb-frame-handler): Don't change to hollow arrow if overlay - arrow doesn't move to new frame. - -2006-03-24 Nick Roberts - - * progmodes/gdb-ui.el (gdb-continuation): Declare earlier to - prevent compiler warnings. - (gdb-stopped): Check for gud-last-last-frame (case: signal). - (breakpoint-disabled): Make lighter for contrast with overlay arrow. - (gdb-assembler-custom): Use hollow-right-triangle for assembler - buffer too. - -2006-03-23 Reiner Steib - - * pgg-gpg.el (pgg-gpg-update-agent): Check for - make-network-process, so we can use the same code in Gnus v5-10 - too and have this file fully synchronized with that release. - -2006-03-23 Romain Francoise - - * ibuf-ext.el (ibuffer-read-filter-group-name): - Use `ibuffer-generate-filter-groups' to make completion list match - the filter groups that are really displayed in the Ibuffer buffer. - (ibuffer-generate-filter-groups): Add new args noempty, nodefault. - -2006-03-23 Kenichi Handa - - * international/mule-cmds.el (sort-coding-systems): Describe that - the argument is modified in docstring. - -2006-03-22 Sascha Wilde - - * pgg-gpg.el (pgg-gpg-use-agent): Disable by default. - (pgg-gpg-update-agent): New function. - (pgg-gpg-use-agent-p): New function. - (pgg-gpg-process-region, pgg-gpg-encrypt-region) - (pgg-gpg-encrypt-symmetric-region, pgg-gpg-decrypt-region) - (pgg-gpg-sign-region): Use it. - -2006-03-21 Chong Yidong - - * cus-edit.el (custom-face-set): Call custom-push-theme before - face-spec set so that `changed' theme is correctly saved. - (custom-face-reset-standard): Reset to recalculated face rather - than defface spec. - - * custom.el (custom-push-theme): Only save `changed' theme if the - current face does not match the defface specs. - -2006-03-21 Simon Josefsson - - * pgg-gpg.el: Ideas below based on patch from Sascha Wilde - . - (pgg-gpg-use-agent): New variable. - (pgg-gpg-process-region): Use it. - (pgg-gpg-encrypt-region): Likewise. - (pgg-gpg-encrypt-symmetric-region): Likewise. - (pgg-gpg-decrypt-region): Likewise. - (pgg-gpg-sign-region): Likewise. - (pgg-gpg-possibly-cache-passphrase): Don't cache a nil password. - -2006-03-21 Carsten Dominik - - * textmodes/org.el (org-open-at-point): Fix bug in wiki-style - bracket links. - -2006-03-21 Kim F. Storm - - * progmodes/gdb-ui.el (gdb-reset): Set buffer local value of - fringe-indicator-alist instead of modifying global value. - (gdb-frame-handler): Likewise. - -2006-03-21 Nick Roberts - - * diff-mode.el (diff-function): Make it inherit from diff-header - instead of diff-context. - - * progmodes/gdb-ui.el (hollow-right-triangle): Define as fringe - bitmap. - (gdb-info-stack-custom): Rename from gdb-info-frames-custom and - change names in macro above for consistency. - (gdb-frame-handler): Use hollow-right-triangle for all selected - frames which except the innermost (where execution has stopped). - (gdb-reset): Reset buffer-local values of overlay-arrow. - -2006-03-20 Richard Stallman - - * simple.el (set-mark-command): Doc fix. - - * files.el (display-buffer-other-frame): New command. - (ctl-x-4-map): Bind C-x 5 C-o to it. - -2006-03-20 Stefan Monnier - - * jit-lock.el (jit-lock-function): Check for the actual defer-timer - rather than just defer-time, in case defer-time has been changed but - the timer isn't running yet. - (jit-lock-deferred-fontify): Correspondingly let-bind defer-timer. - -2006-03-19 Luc Teirlinck - - * help-mode.el (help-follow-symbol): New function. - Essentially identical to the old `help-follow', but do not let - `push-button' do the work when on an xref. - (help-mode-map): Bind `help-follow-symbol' to "C-c C-c". - -2006-03-19 Richard Stallman - - * help-mode.el (help-xref-symbol-regexp): Make no xref for symbol - preceded by the word `program'. - (help-follow-mouse, help-follow): Throw error if not on xref. - Delete no longer used args. - -2006-03-20 Nick Roberts - - * progmodes/gdb-ui.el (gdb-stopped): Even when there is no source - annotation ensure gud-overlay-arrow-position is redisplayed. - -2006-03-19 Roland Winkler - - * textmodes/bibtex.el (bibtex-include-OPTkey) - (bibtex-entry-field-alist, bibtex-generate-url-list): Mark as risky. - (bibtex-autokey-name-case-convert) - (bibtex-autokey-titleword-case-convert): Make these the aliases - for the following two variables. - (bibtex-autokey-name-case-convert-function) - (bibtex-autokey-titleword-case-convert-function): Make these the - real names. - (bibtex-font-lock-keywords): Make bibtex-font-lock-url and - bibtex-font-lock-crossref sublists. - (bibtex-mode): Revert 2005-12-30 change (which made - completion-ignore-case buffer-local). - (bibtex-url): Simplify. - -2006-03-19 Kim F. Storm - - * emulation/cua-rect.el (cua--highlight-rectangle): Set overlay - cursor property value to 2 (to align with C level change). - -2006-03-19 Bill Wohler - - * image.el (image-load-path-for-library): Shorten first line in - docstring. - -2006-03-18 Richard Stallman - - * mail/rmail.el (rmail-reply-regexp): Undo previous change. - -2006-03-18 Ben North (tiny change) - - * isearch.el (isearch-other-meta-char): Handle user bindings for - shifted control characters. - -2006-03-18 Agustin Martin - - * textmodes/ispell.el (ispell-skip-region-alist): Add "_+" to the - part that matches email addresses, file names, etc. - -2006-03-18 Eli Zaretskii - - * term/w32-win.el (mouse-set-font): - Mention w32-list-proportional-fonts in the doc string. - -2006-03-18 Kim F. Storm - - * ido.el (ido-cache-ftp-work-directory-time): Doc fix. - (ido-unc-hosts): New user option to explicitly define list of know - UNC-style hosts for completion. - (ido-cache-unc-host-shares-time): New user option. - (ido-is-unc-root, ido-is-unc-host, ido-cache-unc-valid): - New helper functions for UNC file-name support. - (ido-may-cache-directory): Check for UNC host. Simplify. - (ido-wash-history): Clean out old UNC hosts. - (ido-nonreadable-directory-p): UNC hosts are always readable. - (ido-directory-too-big-p): UNC hosts are never too big. - (ido-set-current-directory): Handle UNC root path. - (ido-file-name-all-completions): Complete UNC host names from - ido-unc-hosts list. Cache UNC host shares. - (ido-make-file-list-1): Don't filter UNC root. - (ido-exhibit): Check for // in root directory, and switch to UNC - mode by setting ido-current-directory to //. - -2006-03-17 Luc Teirlinck - - * cus-edit.el (customize-changed-options): Mention explicit - version number as default in prompt. - -2006-03-17 Bill Wohler - - * image.el (image-load-path-for-library): Minor docstring fix. - -2006-03-17 Carsten Dominik - - * textmodes/org.el (org-read-date): Include subgroup 5 into - replacement text. - (org-popup-calendar-for-date-prompt): Fix customization type. - -2006-03-17 Nick Roberts - - * progmodes/gdb-ui.el (gud-watch): Provide completion. - (gdb-continuation): New variable. - (gdb-send): Deal with continuation lines. - - * progmodes/gud.el (gud-gdb-complete-command) - (gud-gdb-run-command-fetch-lines): Adapt for use with watch - expressions. - (gud-tooltip-mode): Use buffer-local value. - -2006-03-16 Kim F. Storm - - * ido.el (ido-edit-input): Use selected match, if any. - -2006-03-16 Bill Wohler - - * image.el (image-load-path-for-library): Prefer user's images in - image-load-path. - -2006-03-16 Martin Rudalics - - * mouse.el (mouse-drag-vertical-line): Use window-inside-edges - when checking for attempt to drag leftmost or rightmost scrollbar. - -2006-03-16 Nick Roberts - - * progmodes/gdb-ui.el (gdb-inferior-status): New variable. - (gdb-force-mode-line-update): New function. - (gdb-resync, gdb-starting, gdb-signal, gdb-exited, gdb-stopped) - (gdb-exited): Use them. - (gdb-signal): New function. - (gdb-annotation-rules): Provide a rule for it. - -2006-03-16 Kenichi Handa - - * international/mule.el (auto-coding-regexp-alist): Add entries - for Unicode BOM. - - * sort.el (sort-build-lists): Temporarily bind - inhibit-field-text-motion to t. - -2006-03-15 Luc Teirlinck - - * locate.el (locate-command, locate-make-command-line) - (locate-fcodes-file, locate-update-command) - (locate-prompt-for-command, locate, locate-with-filter) - (locate-get-file-positions): Doc fixes. - (locate-buffer-name, locate-header-face): Remove leading `*' in - defcustom. - (locate-filter-output): Use `keep-lines' instead of its alias - `delete-non-matching-lines'. - (locate-get-filename, locate-get-dirname): Add introductory comment. - (locate-find-directory-other-window): Give appropriate error - message if used outside main listing. - -2006-03-15 Stefan Monnier - - * font-lock.el (font-lock-lines-before): Delete variable, subsumed by - the new extend-region feature. - (font-lock-after-change-function): Update correspondingly. - * jit-lock.el (jit-lock-after-change): Update correspondingly. - * progmodes/grep.el (font-lock-lines-before): Don't disable. - -2006-03-15 Bill Wohler - - * image.el (image-load-path-for-library): Fix example by not - recommending that one binds image-load-path. Just defvar it to - placate compiler and only use it if previously defined. - -2006-03-15 Carsten Dominik - - * textmodes/org.el (org-insert-centered): Use `string-width' to - make underlining work for wide characters. - (org-goto-map, org-agenda-mode-map, org-mode-map): Explicitly bind - TAB to `org-cycle', to make sure that no binding in - `outline-mode-map' can supercede it. - -2006-03-14 Ken Manheimer - - * allout.el: Increment version to 2.2.1 in file commentary. - - (allout-version): Increment to 2.2.1. - - (allout-default-layout): New customization variable, used when the - file lacks a specific allout-layout. Uses allout-layout-type for - recursively nested definition. - - (allout-layout-type): Widget defining allout layouts, necessary for - self-recursive definition. - - (allout-mode): Incorporate allout-default-layout as fallback for - allout-layout. - - (allout-layout): Mark as 'safe-local-variable', and refer mention - fallback to `allout-default-layout' in absence of a specified value. - (allout-passphrase-verifier-string) - (allout-passphrase-hint-string): Mark as 'safe-local-variable'. - - (allout-file-passphrase-verifier-string): Obsolete variable, removed. - - (allout-get-encryption-passphrase-verifier): Use correct name of - passphrase verifier in docstring. - -2006-03-15 Nick Roberts - - * progmodes/gdb-ui.el (gdb-var-list): Change order of first two - elements. - (gdb-find-watch-expression): Make it work for arrays too. - Follow change to gdb-var-list. - (gud-watch): Allow the user to enter variable name with a prexix - arg. Create keybindings. - (gdb-var-create-handler, gdb-var-evaluate-expression-handler) - (gdb-var-list-children-handler, gdb-var-update-handler) - (gdb-var-delete, gdb-edit-value, gdb-speedbar-expand-node) - (gdb-var-list-children-handler-1, gdb-var-update-handler-1): - Follow change to gdb-var-list. - (gdb-starting): Don't show the overlay arrows when program is running. - - * progmodes/gud.el (gud-speedbar-buttons): Follow change to - gdb-var-list. - -2006-03-14 Bill Wohler - - * image.el (image-load-path-for-library): Pass value of path - rather than symbol. Always return list of directories. - Guarantee that image directory comes first. - -2006-03-14 Alan Mackenzie - - * font-core.el (font-lock-extend-region\(-function\)?.): - New function/variable. - - * font-lock.el (font-lock-after-change-function): - Call font-lock-extend-region. Obey font-lock-lines-before. - (font-lock-default-fontify-region): Remove reference to - font-lock-lines-before. - - * jit-lock.el (jit-lock-after-change): - Call font-lock-extend-region. Obey font-lock-lines-before. - -2006-03-14 David Ponce - - * tree-widget.el (tree-widget-themes-load-path) - (tree-widget-themes-directory, tree-widget-theme): Doc fix. - -2006-03-13 Ryan Yeske - - * net/rcirc.el (rcirc) : Add link to manual. - (rcirc-print): Mark the start of text at the end of the prompt. - (rcirc-track-minor-mode): Add autoload cookie. - (rcirc-update-activity-string): Add space to front of mode-line - indicator. - -2006-03-13 Miles Bader - - * net/rcirc.el (rcirc-nick-abbrevs): Remove variable. - (rcirc-abbrev-nick): Remove function. - (rcirc-format-response-string): Don't call `rcirc-abbrev-nick'. - -2006-03-13 David Ponce - - * tree-widget.el: Handle themes across all occurrences of the main - themes sub-directory found in tree-widget-themes-load-path. - (tree-widget-themes-directory, tree-widget-theme): Doc fix. - (tree-widget--locate-sub-directory): Return all occurrences. - (tree-widget-themes-path): New function. - Replace tree-widget-themes-directory, and return a list of directories. - (tree-widget-set-parent-theme) - (tree-widget-lookup-image): Use it. - -2006-03-13 Carsten Dominik - - * textmodes/org.el (org-link-search): Avoid self-matching of - links, allow target text to be distributed over several lines. - (org-search-not-link): New function. - (org-set-regexps-and-options, org-get-current-options): - New startup options. - (org-export-as-html): Take odd-level setting from local variable. - (org-fontify-emphasized-text): New option. - (org-set-font-lock-defaults): Include emphasized text. - (org-follow-mhe-link): Allow folder-only links, fix folder name. - (org-font-lock): Customize group renamed from `org-faces'. - -2006-03-13 John Paul Wallington - - * ibuf-ext.el (ibuffer-never-show-predicates): Add `require' - keyword; require `ibuf-ext' feature. Thanks to Zhang Wei. - -2006-03-12 Luc Teirlinck - - * cus-start.el (all): Delete :version keyword for members of the - fringe group, since the entire group is new in 22.1. - -2006-03-13 Nick Roberts - - * progmodes/gdb-ui.el (gdb-stack-list-locals-handler): Add local - map if value is hexadecimal (an address). - (gud-watch): Only search roots for existing watch expressions. - (gdb-speedbar-refresh): Bind speedbar-shown-directories to nil to - prevent caching problems with speedbar-update-directory-contents. - -2006-03-12 Juri Linkov - - * battery.el (battery-linux-proc-acpi): Check `capacity' for non-nil - before comparing with `low' and `warn'. - - * info.el (Info-dir-remove-duplicates): Move point to the - beginning of the current line after deleting the entries from - redundant heading. Use marker for `limit' and compare it with - point before calling `re-search-forward'. - -2006-03-11 Luc Teirlinck - - * simple.el (yank): Fix typo in docstring. - -2006-03-11 Ryan Yeske - - * mail/rmailsum.el (rmail-summary-next-msg): Skip deleted - messages, where "D" is the 6th character. - -2006-03-11 Eli Zaretskii - - * simple.el (yank): Fix last change. - -2006-03-11 David Ponce - - * ispell.el (ispell-find-aspell-dictionaries): Add aliases before - merging elements from the standard ispell-dictionary-alist. - (ispell-aspell-add-aliases): Add aliases to the passed dictionary - alist, and return the new alist. - -2006-03-11 Richard Stallman - - * mail/rmail.el (rmail-ignored-headers): Discard DomainKey-Signature. - - * eshell/eshell.el (eshell-prefer-to-shell): Variable deleted; - the way it is implemented is too unclean. - - * simple.el (kill-region, yank): Doc fix. - - * battery.el (battery-echo-area-format): Doc fix. - (battery-mode-line-format): Likewise. - (battery-linux-proc-apm, battery-linux-proc-acpi): Likewise. - (battery-linux-proc-acpi): Ignore batteries that say "charged". - -2006-03-11 Kurt Hornik - - * progmodes/octave-mod.el (octave-indent-for-comment): - Behave according to do string. - -2006-03-11 Agustin Martin - - * textmodes/ispell.el (ispell-menu-map-needed) [ispell-message]: - Be visible only if major mode is Mail Mode. - - * textmodes/flyspell.el (flyspell-external-point-words) - (flyspell-process-localwords): Fix last changes. - -2006-03-11 Eli Zaretskii - - * calendar/holidays.el (list-holidays): Doc fix. - - * international/mule.el (auto-coding-alist): Add .odt - (OpenOffice's open document) files. - - * files.el (auto-mode-alist): Add .odt (OpenOffice's open - document) files. Mention in the doc string the need to sync with - auto-coding-alist. - -2006-03-10 Chong Yidong - - * files.el (hack-local-variables-confirm): Don't prompt for ! if - enable-local-variables is set to always query, or there is no - savable variable. - -2006-03-10 Bill Wohler - - * image.el (image-load-path-for-library): Merge at least three - functions from Gnus and MH-E into this one function that can now - be shared. - -2006-03-11 Nick Roberts - - * progmodes/gdb-ui.el (gdb-remove-text-properties): Rename from - gdb-remove-mouse-face and remove help-echo too. - (gdb-enqueue-input): Correct conditional clause. - -2006-03-10 Glenn Morris - - * calendar/calendar.el (calendar-holidays): Doc fix. - * calendar/holidays.el (list-holidays): Doc fix. - -2006-03-10 Nick Roberts - - * progmodes/gdb-ui.el (gdba): Don't call gdb-init-1 explicitly as - it gets called in gdb-prompt anyway. - (gdb-use-separate-io-buffer): Only restore window arrangement for - gdb-many-windows. - (gdb-enqueue-input): Make it harder to send GDB input when program - is running. - (gdb-buffer-list): New variable. - (gdb-remove-mouse-face): New function. - (gdb-starting): Use it when GDB input won't get sent. - -2006-03-08 Juanma Barranquero - - * help.el (view-lossage): Remove trailing whitespace before - inserting "\n". - -2006-03-07 Chong Yidong - - * files.el (hack-local-variables-confirm): - Set coding-system-for-read to nil before writing to .emacs. - - * arc-mode.el (archive-extract): Check if an existing buffer name - comes from a different archive. - - * help.el (describe-key-briefly): If KEY is a down event, read and - discard the up event. - -2006-03-07 Nick Roberts - - * progmodes/gud.el (gud-speedbar-buttons): Allow pointers to - be edited and use font-lock-warning-face for any changes. - - * progmodes/gdb-ui.el (gdb-edit-value-handler): New function. - (gdb-edit-value): Use it to report any errors. - -2006-03-07 Juanma Barranquero - - * help.el (describe-key): Remove leftover test code. - -2006-03-07 Carsten Dominik - - * textmodes/org.el: Move defvars out of eval-when-compile. - Use buffer-file-name variable. - (org-agenda-file-to-end, org-agenda-file-to-front): Remove unused - arg `file'. - (org-level-faces): Remove startup dependency. - (org-cycle, org-map-tree, org-scan-tags) - (org-remember-handler): Don't call `outline-level' directly. - (org-mhe-search-all-folders): New option. - (org-mhe-get-message-folder-from-index) - (org-mhe-get-message-folder): Fix indexing search. - (org-format-agenda-item): Handle nil TAGS argument. - (org-cleaned-string-for-export, org-activate-target-links) - (org-make-target-link-regexp): Deal with empty radio target list. - (org-tag): New face. - (org-get-level-face): New function. - (org-set-font-lock-defaults): Simplify setup for headlines. - (org-complete): Pass common substring to `display-completion-list'. - -2006-03-06 David Ponce - - * tree-widget.el: Update Commentary header. - (tree-widget-theme-name): Ignore parent themes. - (tree-widget-set-parent-theme): New function. - (tree-widget-set-theme): Use it. - (tree-widget-set-image-properties): Move definition. Does nothing - if image properties have already been set. - (tree-widget-image-properties): Move definition. Receive an image - name. Set the :pointer property. - (tree-widget-lookup-image): Doc fix. Search in parent themes. - Don't set the :pointer image property. - (tree-widget-convert-widget): New function. Handle :dynargs - compatibility here. - (tree-widget): Use it to :convert-widget. Add the :expander-p - predicate to control when the :expander function is entered. - Thanks to Ken Manheimer for the idea. - (tree-widget-value-create): Handle :expander-p. widget-apply - :expander. - (tree-widget-expander-p): New function. Default value of the - :expander-p property. - -2006-03-06 Chong Yidong - - * help.el (describe-key): Properly handle the return value of - read-key-sequence when grabbing an up-event. Cleanup mouse-1 - remaps. Handle string and vector `follow-link' values. - -2006-03-06 Stefan Monnier - - * complete.el (PC-expand-many-files): Try be more careful when parsing - the shell's output. - -2006-03-05 Stefan Monnier - - * outline.el (hide-sublevels): Provide better interactive default. - -2006-03-06 Kenichi Handa - - * international/fontset.el (create-fontset-from-fontset-spec): - Fix regexp for paring FONTSET-SPEC (allow spaces after `:'). - -2006-03-05 Luc Teirlinck - - * progmodes/gud.el (gud-jdb-marker-filter): Quote `[' with two - backslashes instead of one in regexp. - (gud-tooltip-dereference): Add missing optional argument. - -2006-03-04 John Paul Wallington - - * wdired.el (toplevel): Require `cl' at compile-time. - -2006-03-04 Andreas Schwab - - * server.el (server-process-filter): Handle errors during - evaluation of the argument. - -2006-03-03 John Paul Wallington - - * t-mouse.el (t-mouse-drag-start, t-mouse-swap-alt-keys): Doc fix; - escape parentheses at beginning of line. - (t-mouse-tty, t-mouse-make-event): Doc fix; use imperative. - (t-mouse-mode): Remove period from end of error message. - -2006-03-03 Agustin Martin - - * textmodes/flyspell.el (flyspell-process-localwords): - Be case-sensitive. - -2006-03-03 Martin Rudalics - - * cus-edit.el (custom-quote): Remove function, since it has been - moved to custom.el. - - * font-lock.el (lisp-font-lock-keywords-2) - * emacs-lisp/rx.el (rx-check-any, rx-check-not) - * generic-x.el (reg-generic-mode): Quote "]"s in regexps when - they have no special meaning. - - * midnight.el (clean-buffer-list): Handle case where base-buffer of - indirect buffer gets killed before indirect buffer. Use dolist. - -2006-03-03 Ken Manheimer - - * emacs-lisp/edebug.el (edebug-display): Use `edebug-sit-for-seconds' - value instead of a literal constant (1) on more pauses. - -2006-03-03 Slawomir Nowaczyk (tiny change) - - * textmodes/flyspell.el (flyspell-external-point-words): - Be case-sensitive. - -2006-03-03 Ryan Yeske - - * net/rcirc.el (rcirc-url-regexp): Match entire url when it starts - with "www". - -2006-03-03 Ken Manheimer - - * allout.el: Restablish intermediate missing comment header to - preserve outline structure. - (allout-beginning-of-current-entry): Skip invisible text. - (allout-open-topic): Fix opening a topic at end-of-buffer. - (allout-minor-mode): Move nearer to allout-mode function. - -2006-03-02 Carsten Dominik - - * textmodes/org.el (org-paste-subtree): Remove (debug) form. - -2006-03-02 Nick Roberts - - * dframe.el (dframe-frame-mode): Don't burp when menu-bar-lines - is nil. - - * progmodes/gud.el (gud-speedbar-menu-items): - Use buffer-local-value and add missing :visible keyword. - - * progmodes/gdb-ui.el (gdb-speedbar-refresh): Quieten speedbar-refresh. - -2006-03-01 Carsten Dominik - - * textmodes/reftex-index.el (reftex-index-map): `follow-mouse' - must be `follow-link'. - - * textmodes/reftex-toc.el (reftex-toc-map): Likewise. - - * textmodes/org.el (org-export-as-html): Fix bugs in HTML - formatting: No nested anchors. - (org-all-targets): Fix bug with XEmacs compatibility. - (org-read-date): Add (require 'parse-time). - (org-set-tags): Fix bug with extra inserted space. - (org-export-html-style): Define a style class for targets. - (org-agenda-keymap, org-mouse-map): Add a binding for `follow-link'. - (org-hide-leading-stars): New option. - (org-hide): New face. - (org-set-font-lock-defaults): Allow to hide leading stars. - (org-get-legal-level, org-tr-level): New functions. - (org-odd-levels-only): New option. - (org-level-faces, org-paste-subtree, org-convert-to-odd-levels) - (org-demote, org-promote): Deal with double-star levels. - (org-convert-to-odd-levels): New command. - -2006-03-01 Nick Roberts - - * speedbar.el (speedbar-update-localized-contents): Try to - preserve window-start. - (speedbar-update-directory-contents): Try to preserve window-start - and window-point. - (speedbar-update-special-contents): Don't move back to start of window. - - * progmodes/gdb-ui.el (gdb-speedbar-refresh): Rename from - gdb-speedbar-timer-fn. Use speedbar-refresh instead of - speedbar-timer-fn. - (gdb-var-update-handler, gdb-var-update-handler-1): Use it. - (gdb-speedbar-expand-node): Use speedbar-delete-subblock - instead of gdb-speedbar-timer-fn. - -2006-02-28 Jay Belanger - - * calc/calccomp.el (math-compose-tex-matrix): Add a latex option. - (math-compose-expr): Use latex option when calling - `math-compose-tex-matrix' for latex mode. - -2006-02-28 Nick Roberts - - * speedbar.el: Re-instate comments about developing for speedbar - [this is what info and gdb-ui use even if better methods exist now]. - - * t-mouse.el: New file. - (t-mouse-tty): Use with-temp-buffer. Add more terminal types. - (t-mouse-lispy-buffer-posn-from-coords): Remove. - (t-mouse-make-event-element): Use posn-at-x-y instead. - (t-mouse-make-event): Deal with Fedora Core 3. - (t-mouse-make-event): Don't sink the `stupid text mode menubar'. - (t-mouse-mouse-position-function): New function. Use it instead - of advising mouse-position. - (t-mouse-mode): New minor mode. - (t-mouse-stop, t-mouse-run): Remove. Use t-mouse-mode instead. - -2006-02-27 Glenn Morris - - * calendar/calendar.el (calendar-holidays): Doc fix. - -2006-02-27 Nick Roberts - - * progmodes/gdb-ui.el (gdb-source-window): New variable. - Re-introduce the concept of a source window. - (gdb-get-buffer-create): Rename from gdb-get-create-buffer for - consistency with get-buffer-create. - (def-gdb-auto-update-handler, gdb-info-locals-handler) - (gdb-data-list-register-values-handler) - (gdb-stack-list-locals-handler): Try to preserve window-start as - well as window-point. - (gdb-display-source-buffer): New function (old concept). - (gdb-goto-breakpoint): Use it. - - * progmodes/gud.el (gud-display-line): Use gdb-display-source-buffer - for gdb-ui/gdb-mi (old concept). - -2006-02-27 Carsten Dominik - - * textmodes/reftex-index.el (reftex-index-map): Add `follow-mouse' - binding. - - * textmodes/reftex-toc.el (reftex-toc-map): Add `follow-mouse' binding. - - * textmodes/reftex-sel.el (reftex-select-label-map) - (reftex-select-bib-map): Add `follow-mouse' binding. - -2006-02-26 Luc Teirlinck - - * jka-cmpr-hook.el (jka-compr-compression-info-list) - (jka-compr-mode-alist-additions, jka-compr-load-suffixes): - Give :set functions to provide automatic updating. - Update docstring. Give compiler defvars early in the file - and move the defcustoms to a later spot where all called functions - are defined. - (jka-compr-file-name-handler-entry): Doc fix. - (jka-compr-compression-info-list--internal) - (jka-compr-mode-alist-additions--internal) - (jka-compr-load-suffixes--internal): New variables. - (jka-compr-install): Set the three above variables. - Update `load-file-rep-suffixes' instead of `load-suffixes'. - (jka-compr-update, jka-compr-set): New functions. - (auto-compression-mode): Doc fix. - - * jka-compr.el (jka-compr-uninstall): Replace `mapcar' with `mapc'. - Update `load-file-rep-suffixes' instead of `load-suffixes'. - Use jka-compr-compression-info-list--internal, - jka-compr-mode-alist-additions--internal and - jka-compr-load-suffixes--internal. - - * files.el (load-library): - * loadhist.el (file-loadhist-lookup): - * startup.el (command-line): - * subr.el (locate-library): - * emacs-lisp/autoload.el (update-directory-autoloads): - * emacs-lisp/find-func.el (find-library-suffixes): - Use `get-load-suffixes' instead of `load-suffixes'. - - * subr.el (locate-library): - * emacs-lisp/find-func.el (find-library-name): - Use `load-file-rep-suffixes' instead of '(""). - -2006-02-26 Kim F. Storm - - * ido.el (ido-save-history, ido-load-history): Simplify. - Don't use find-file-noselect to avoid interference from other modes. - -2006-02-25 Thien-Thi Nguyen - - * progmodes/sh-script.el (sh-mode): Fix bug: Arrange - to use the default shell if filename is not available. - Reported by Giorgos Keramidas. - -2006-02-25 John Williams (tiny change) - - * progmodes/etags.el (tags-completion-table): Do completion from - all the tables in the current list, as documented in the manual. - -2006-02-24 Alan Mackenzie - - * CC Mode Update to 5.31.3. - -2006-02-24 Alan Mackenzie - - * progmodes/cc-mode.el (c-postprocess-file-styles): - Bind inhibit-read-only to t, around the call to - c-remove-any-local-eval-or-mode-variables, so that it works on a - RO file. - -2006-02-24 Alan Mackenzie - - * progmodes/cc-awk.el: Correct a typo. - -2006-02-24 Alan Mackenzie - - * progmodes/cc-cmds.el, cc-mode.el: Rename c-hungry-backspace to - c-hungry-delete-backwards, at the request of RMS. Leave the old - name as an alias. - -2006-02-24 Alan Mackenzie - - * progmodes/cc-mode.el: Correct a typo. - -2006-02-24 Alan Mackenzie - - * progmodes/cc-defs.el: Update the version number to 5.31.3. - -2006-02-24 Alan Mackenzie - - * progmodes/cc-cmds.el (c-electric-brace): Fix clean-up - brace-else-brace (error due to mbeg, mend being undefined). - -2006-02-24 Alan Mackenzie - - * progmodes/cc-mode.el: File Local variables: Solve the problem - where both `mode' and c-file-offsets are specified: `mode' will - overwrite c-f-o's settings: - (c-remove-any-local-eval-or-mode-variables): New function. - (c-postprocess-file-styles): Call the above new function, within - c-tentative-buffer-change, to splat `mode' and `eval' before the - second hack-local-variables. - -2006-02-24 Alan Mackenzie - - * progmodes/cc-mode.el: - [Supersedes patch to cc-engine.el 2005-12-16T20:07:49Z!monnier@iro.umontreal.ca] - (c-after-change): Protect the match data with save-match-data. - It was getting corrupted by c-after-change-check-<>-operators. - - * cc-defs.el: [Supersedes patch V1.38]: - (top level): Check for a buggy font-lock-compile-keywords ONLY in - XEmacs. GNU Emacs 22 now has a check which would throw an error here. - - * progmodes/cc-awk.el (c-awk-after-change): Protect the match data - with save-match-data. It was being corrupted when Font Lock was - not enabled. - -2006-02-24 Alan Mackenzie - - * progmodes/cc-langs.el (c-mode-menu): Add menu items for Electric - Mode and Subword Mode. - - * progmodes/cc-engine.el (c-beginning-of-statment-1): Distinguish - real labels ("case 1:" or "foo:") from non-labels ("public:"). - (c-forward-objc-directive): Replace c-forward-token-2 with crude - coding; c-f-t-2 doesn't move over a token at EOB. - - * progmodes/cc-defs.el (c-version): Update version number to 5.31.2. - - * progmodes/cc-cmds.el, cc-mode.el, cc-engine.el - (c-update-modeline): Concatenate the minor mode indicators - directly onto mode-name, removing c-submode-indicators. - Sometimes, c-s-i got separated from the mode name on the mode line. - - * progmodes/cc-cmds.el (c-electric-brace, c-electric-semi&comma) - (c-electric-colon): Correct doc-strings: "/ln" -> "/la". - -2006-02-24 Martin Stjernholm - - * progmodes/cc-langs.el (c-make-init-lang-vars-fun): Improve the - error message when there's an evaluation error to show whether - it's loaded from source or not. - (c-filter-ops): Make it available at runtime too to work when - `c-make-init-lang-vars-fun' needs to evaluate from source. - -2006-02-24 Juanma Barranquero - - * help.el (help): Revert last part of 2006-02-23 change (deletion - of the `provide' call). - -2006-02-23 Juri Linkov - - * compare-w.el (compare-windows-highlight): Add new value - `persistent' and change :type from `boolean' to `choice'. - (compare-windows-overlays1, compare-windows-overlays2): - New internal variables. - (compare-windows-highlight): If compare-windows-highlight is - `persistent', add current overlays to compare-windows-overlays[12] - instead of adding compare-windows-dehighlight to pre-command-hook. - (compare-windows-dehighlight): Delete all overlays from - compare-windows-overlays[12]. - - * info.el (Info-search): Don't bind search-spaces-regexp to - Info-search-whitespace-regexp in non-regexp isearch mode. - -2006-02-23 Stefan Monnier - - * help.el (describe-mode): Pass `mode-name' to format-mode-line. - -2006-02-23 Juanma Barranquero - - * textmodes/org.el (org-xemacs-p) - (org-export-html-show-new-buffer, org-table-may-need-update) - (org-insert-item, org-mhe-get-message-real-folder) - (org-mhe-get-message-folder-from-index) - (org-mhe-get-message-folder, org-mhe-get-message-num) - (org-mhe-get-header, org-make-org-heading-search-string) - (org-make-org-heading-camel, org-table-sort-lines) - (org-format-org-table-html, org-format-table-table-html): - Fix typos in docstrings. - -2006-02-23 Carsten Dominik - - * textmodes/org.el (org-cleaned-string-for-export) - (org-solidify-link-text): New function. - (org-add-hook): Use `add-local-hook' instead of `make-local-hook' for - XEmacs, just to silence the compiler. - (org-export-as-ascii, org-export-as-html-and-open): - Use `org-cleaned-string-for-export' and create internal links. - (org-follow-mhe-link): Require mh-e, use folder. - -2006-02-23 Nick Roberts - - * progmodes/gud.el (gud-speedbar-buttons): Use shadow face properly. - - * progmodes/gdb-ui.el (gdb-debug-ring-max): Rename from - gdb-debug-log-length. - (gdb-debug-ring): Rename from gdb-debug-log-ring. Don't make - it a real ring but... - (gud-gdba-marker-filter): ...make it work like mark-ring. - (gdb-enable-debug): Rename from gdb-enable-debug-log. - (gdb-mouse-jump): New function. Add bindings. - -2006-02-23 Nick Roberts - - * progmodes/gdb-ui.el (gdb-signalled): New variable and function. - (gdb-debug-log-ring): Rename from gdb-debug-log and make a ring. - (gdb-send, gdb-send-item, gud-gdba-marker-filter): Use it. - (gdb-debug-log-length): Customize it's length. - (gud-watch, gdb-var-create-handler): Display function::var format - but don't use to create variable object. - (gdb-var-create-handler): Use message-box in place of message. - (gdb-stopped): Call gdb-exited if signalled. - -2006-02-22 Carsten Dominik - - * textmodes/reftex.el (reftex-locate-file): Remove duplicate function. - - * textmodes/reftex-vars.el (reftex-try-all-extensions): New option. - - * textmodes/reftex.el (reftex-locate-file): Search all extensions - if `reftex-try-all-extensions' is set. - - * textmodes/reftex-dcr.el (reftex-view-crossref): New argument to - fail silently when there is no valid argument at point. - (reftex-view-crossref-when-idle): Call `reftex-view-crossref' with - `fail-silently' argument. From a patch by David Reiter. - - * textmodes/org.el (org-mark-ring-push, org-mark-ring-goto): - New commands. - (org-mark-ring): New variable. - (org-mark-ring-length): New option. - (org-open-at-point, org-goto, org-open-file): Push old position - onto the mark ring. - (org-add-hook): New function. - (org-export-table-remove-special-lines): New option. - (org-skip-comments, org-format-org-table-html): Respect new - option `org-export-table-remove-special-lines'. - (org-open-file): Allow special command configuration for - directory link. - (org-file-apps): Fix bugs in customize type, added setting - for directories. - (org-activate-tags, org-format-agenda-item, org-complete) - (org-get-tags-at, org-scan-tags, org-make-tags-matcher) - (org-get-tags, org-get-buffer-tags, org-open-at-point) - (org-link-search, org-make-org-heading-search-string) - (org-make-org-heading-camel): Allow @ and 0-9 as tags characters. - (org-radio-targets, org-file-link-context-use-camel-case) - (org-activate-camels): New options. - (org-update-radio-target-regexp, org-all-targets) - (org-make-target-link-regexp, org-activate-target-links): - New functions. - (org-make-org-heading-search-string): New function. - (org-store-link, org-insert-link): Use new option - `org-file-link-context-use-camel-case'. - (org-activate-camels): Use new option `org-activate-camels'. - (org-link-regexp): Add mhe prefix. - (org-open-at-point, org-store-link): Support for mhe links. - (org-mhe-get-message-real-folder, org-mhe-get-message-folder) - (org-mhe-get-message-folder-from-index, org-mhe-get-message-num) - (org-mhe-get-header, org-follow-mhe-link): New functions. - (org-remove-angle-brackets, org-add-angle-brackets): - New functions. - (org-bracket-link-regexp): New constant. - (org-read-date): Fix bug that was rejecting all typed dates. - (org-link-search): Make hierarchy above visible after a match. - (org-follow-bbdb-link): Inhibit electric mode for BBDB. - (org-store-link): Fix bug with link creation when cursor is in - an empty line. - (org-open-at-point): Fix bug with matching a link. - Fixed buggy argument sequence in call to `org-view-tags'. - (org-compile-prefix-format): Set `org-prefix-has-tag'. - (org-prefix-has-tag): New variable. - (org-format-agenda-item): Remove tags from headline - if appropriate. - (org-agenda-remove-tags-when-in-prefix): New option. - -2006-02-21 Michael Kifer - - * ediff-diff.el (ediff-setup-diff-regions, ediff-setup-diff-regions3): - Fix the regular expressions. - -2006-02-21 Richard M. Stallman - - * progmodes/sh-script.el (sh-mode): Set shell type based on file name - if there's no other specific basis. - - * emacs-lisp/unsafep.el (unsafep): Don't treat &rest or &optional - as variables at all. - (unsafep-variable): Rename arg; doc fix. - - * abbrevlist.el (list-one-abbrev-table): Add autoload. - - * calendar/appt.el (diary-selective-display): Add defvar. - - * sort.el (sort-columns): Use Posix arg syntax for `sort'. - - * isearch.el (search-whitespace-regexp): Fix custom type. - - * help.el (describe-key-briefly): Compute interactive args - in same was as before previous change. - - * files.el (enable-local-variables): Doc fix. - -2006-02-21 Kim F. Storm - - * fringe.el: Cleanup as file is now pre-loaded. - (fringe-bitmaps): Initialize unconditionally. - (fringe-mode, set-fringe-style): Remove autoload cookies. - -2006-02-21 Giorgos Keramidas (tiny change) - - * fringe.el (fringe-bitmaps): Rename `horisontal-bar' to - `horizontal-bar'. - (fringe-cursor-alist): Use `horizontal-bar'. - -2006-02-20 Kim F. Storm - - * fringe.el (fringe-bitmaps): Update to new bitmap names. - (fringe-indicator-alist, fringe-cursor-alist): Initialize. - - * loadup.el: Load "fringe" on window systems. - -2006-02-20 Nick Roberts - - * progmodes/gud.el (gud-speedbar-buttons): Use shadow face for all - out of scope components. - - * progmodes/gdb-ui.el (gdb-speedbar-auto-raise): Don't enable by - default. - -2006-02-20 Chong Yidong - - * custom.el (customize-mark-to-save, customize-mark-as-set): - Load the symbol first. - -2006-02-20 Juanma Barranquero - - * buff-menu.el (list-buffers-noselect): Turn also "\n" into a - strech spec so it doesn't display as "^J" on the header line - when `Buffer-menu-use-header-line' is t. - -2006-02-20 Nick Roberts - - * speedbar.el (speedbar-make-button): Keep text properties - of string arguments if desired. - - * progmodes/gud.el (gud-speedbar-buttons): Fontify watch - expessions. - - * progmodes/gdb-ui.el (gdb-speedbar-expand-node): Force update - of speedbar. - -2006-02-19 Ryan Yeske - - * ffap.el (ffap-read-file-or-url): Bind `completion-ignore-case' - to value of `read-file-name-completion-ignore-case'. - -2006-02-19 Chong Yidong - - * custom.el (customize-mark-as-set): Push to `user' theme. - - * cus-edit.el (custom-save-variables): Allow unthemed values. - (customize-set-variable): Push setting to `user' theme. - -2006-02-19 Nick Roberts - - * progmodes/gud.el: Don't require font-lock as it's now - automatically loaded. - (gud-speedbar-buttons): Replace gdb-var-changed with - gdb-force-update. - - * progmodes/gdb-ui.el (gdb-force-update): Rename from - gdb-var-changed. - (gdb-post-prompt): Use it. - (gdb-var-create-handler, gdb-var-evaluate-expression-handler) - (gdb-var-update-handler, gdb-var-delete) - (gdb-speedbar-expand-node, gdb-var-list-children-handler-1) - (gdb-var-update-handler-1): Don't set gdb-var-changed, just set - gdb-force-update in gdb-post-prompt. - (gdb-reset): Clear watch expressions from speedbar when quitting. - -2006-02-19 Michael Kifer - - * viper-cmd.el (viper-insert-state-post-command-sentinel) - (viper-change-state-to-vi, viper-change-state-to-emacs): - Make aware of cursor coloring in the Emacs state. - (viper-special-read-and-insert-char): Use read-char-exclusive. - (viper-minibuffer-trim-tail): Workaround for fields in minibuffer. - - * viper-init.el (viper-emacs-state-cursor-color): New variable. - - * viper-util.el (viper-save-cursor-color) - (viper-get-saved-cursor-color-in-replace-mode) - (viper-get-saved-cursor-color-in-insert-mode) - (viper-restore-cursor-color): Make aware of the cursor color in Emacs - state. - (viper-get-saved-cursor-color-in-emacs-mode): New function. - - * ediff-diff.el (ediff-ignore-case, ediff-ignore-case-option) - (ediff-ignore-case-option3, ediff-actual-diff-options) - (ediff-actual-diff3-options): New variables to control case sensitivity. - (ediff-make-diff2-buffer, ediff-setup-fine-diff-regions) - (ediff-setup-diff-regions3): Make aware of case-sensitivity. - (ediff-toggle-ignore-case): New function. - (ediff-extract-diffs, ediff-extract-diffs3): Preserve point in buffers. - - * ediff-help.el (ediff-long-help-message-narrow2) - (ediff-long-help-message-compare2, ediff-long-help-message-compare3) - (ediff-long-help-message-word-mode): Add ignore-case command. - (ediff-help-for-quick-help): Add ignore-case command. - - * ediff-merg.el: Move provide to the end. - - * ediff-ptch.el: Move provide to the end. - - * ediff-wind.el: Move provide to the end. - - * ediff-mult.el: Move provide to the end. - (ediff-set-meta-overlay): Enable follow-link. - - * ediff.el: Move provide to the end. - Break recursive load cycle in eval-when-compile. - (ediff-patch-buffer): Better heuristics. - - * ediff-util.el: Move provide to the end. - Break recursive load cycle in eval-when-compile. - (ediff-setup-keymap): Add binding for #c. Replace some defsubsts with - defuns. - (ediff-submit-report): Pass the values of ediff-diff3-program, - ediff-diff3-options. - -2006-02-19 Juanma Barranquero - - * help-fns.el (help-do-arg-highlight): Recognize also ARG- followed by - the opening bracket of the following bracketing pairs: {}, [], (), <>, - `' (for example, in the docstring of `windmove-default-keybindings'). - -2006-02-19 Nick Roberts - - * progmodes/gud.el (gud-speedbar-buttons): Update properly for - shadow face. Don't provide binding to edit variable when it is - out of scope. - - * progmodes/gdb-ui.el (gdb-var-evaluate-expression-handler) - (gdb-var-update-handler): Detect out of scope variables with pre - GDB 6.4 too. - (gdb-post-prompt): Revert change from 2006-02-17 (force update). - Reset status of variable objects to nil in update handlers. - (gdb-var-update-handler-1): Detect when a variable object comes - in scope. setcar on var changes gdb-var-list directly. - -2006-02-17 Juri Linkov - - * ffap.el (ffap) : Add explicit face declaration. - (ffap-highlight): Use face `ffap' directly instead of checking - for its existence. - - * icomplete.el (icomplete-get-keys): Use `t' for the second arg - `visible-ok' of `other-buffer' to find the right original buffer. - - * info.el (Info-search): Skip `Local Variables' node. - -2006-02-17 Juri Linkov - - * info.el (Info-find-file): Check for symbols `apropos', `history', - `toc' in the input filename, and return these symbols as is. - (Info-find-node-2): Set Info-current-file to symbols `apropos', - `history', `toc' instead of strings. - (Info-set-mode-line): For non-string Info-current-file use the - symbol's name inside **. - (Info-isearch-push-state): Add quote before Info-current-file and - Info-current-node. - (Info-isearch-pop-state): Use `equal' instead of `string='. - (Info-extract-pointer, Info-following-node-name): Use - `match-string-no-properties' instead of `match-string'. - (Info-up): Check `old-file' for `stringp'. - (Info-history): Use `equal' instead of `string-equal'. - Check `file' for `stringp'. - (Info-history): Use symbol `history' instead of string as first arg - of `Info-find-node'. - (Info-toc): Check `Info-current-file' for `stringp'. Use symbol - `toc' instead of string. - (Info-extract-menu-node-name): Use `buffer-substring-no-properties' - instead of `buffer-substring', and `match-string-no-properties' - instead of `match-string'. - (Info-index-nodes): Check for symbols `apropos', `history', `toc' - instead of strings. - (info-apropos): Use `Info-find-node' instead of `Info-goto-node'. - Use symbol `apropos' instead of string. - (Info-copy-current-node-name): Check `Info-current-file' for - `stringp' and construct a command with `Info-find-node' from it. - (Info-fontify-node): Use `match-string-no-properties' instead of - `match-string' and check file names for `stringp'. - (Info-desktop-buffer-misc-data): Check for symbols `apropos', - `history', `toc' instead of strings. - -2006-02-17 Chong Yidong - - * files.el: Rearrange functions and variables in the file local - variables section. - -2006-02-17 Reiner Steib - - * files.el: Add truncate-lines, ispell-check-comments and - ispell-local-dictionary as safe local variables. - -2006-02-18 Nick Roberts - - * progmodes/gud.el (gud-speedbar-buttons): Use shadow face for - out of scope variables. - (gud-speedbar-buttons): Use unless. - - * progmodes/gdb-ui.el (gdb-var-list): Update doc string. - (gdb-init-1, gdb-var-changed): Set gdb-var-changed to t initially. - (gdb-show-changed-values): Also use for out of scope variables. - (gdb-var-update-handler-1): Note if variable goes out of scope. - -2006-02-17 Ryan Yeske - - * net/rcirc.el (rcirc-connect): Make all arguments optional, and - default to global variable values for unsupplied args. - (rcirc-get-buffer-create): Fix bug with setting the target. - (rcirc-any-buffer): Rename from rcirc-get-any-buffer, and include - test for rcirc-always-use-server-buffer-flag here. - (rcirc-response-formats): Add %N, which is a facified nick. %n - uses the default face. Change the ACTION format string. If the - "nick" is the server, don't print anything for that field. - Comment fixes. - (rcirc-target-buffer): Don't test - rcirc-always-use-server-buffer-flag here. - (rcirc-print): Squeeze extra spaces out of the text before message. - (rcirc-put-nick-channel): Strip potential "@" char from nick - before adding them to nick table. - (rcirc-url-regexp): Improve to match address like "foo.com". - -2006-02-17 Eli Zaretskii - - * allout.el (allout-hidden-p): Move this defsubst before - allout-overlay-interior-modification-handler, where it is first - used. - -2006-02-17 Ken Manheimer - - * allout.el: Use allout invisible-text overlays instead of - selective display for concealed text. Also, lots of general - cleanup, and improved compatibility code. - - (allout-version): Incremented, corrected, revised, and refined - module commentary. - - (provide 'allout): Moved to the bottom, added a require of overlay. - - (allout-encrypt-unencrypted-on-saves): Defaults to t instead of - `except-current'. - (allout-write-file-hook-handler): Minimize delay. - (count-trailing-whitespace-region): New function so - auto-encryption of current topic can resituate cursor exactly. - PGP/GPG encryption trims trailing whitespace from lines, which - must be accounted for across encryption then decryption. - - (allout-command-prefix): Now defaults to "\C-c" rather than - just plain "\C-c", to avoid intruding on user's keybinding space. - - (allout-toggle-current-subtree-encryption): Pass along fetch-pass - parameter, so user request to provide a new password is done. - - (allout-outside-normal-auto-fill-function, allout-auto-fill): - Refined mechanism for auto-filling behavior while in allout mode. - - (allout-mode): Explicitly specify the mode map in the docstring. - Clarify provision for various write-file hook var names. - Adjusted for invisible-text overlays instead of selective-display. - - (allout-depth): Really return 0 if not within any topic. This - rectifies `allout-beginning-of-level' and sequence numbering - errors that occur when cutting and pasting numbered topics. - Changed from a in-line subst to a regular function, as well. - - (allout-pre-next-prefix): Renamed from allout-pre-next-preface. - - (allout-end-of-subtree, allout-end-of-subtree) - (allout-end-of-entry, allout-end-of-current-heading) - (allout-next-visible-heading, allout-open-topic, allout-show-entry) - (allout-show-children, allout-show-to-offshoot) - (allout-hide-current-entry, allout-show-current-entry): Rectified - handling of trailing blank lines between items. - - (allout-line-boundary-regexp, set-allout-regexp, allout-depth) - (allout-current-depth, allout-unprotected, allout-hidden-p) - (allout-on-current-heading-p, allout-listify-exposed) - (allout-chart-subtree, allout-goto-prefix) - (allout-back-to-current-heading, allout-get-body-text) - (allout-snug-back, allout-flag-current-subtree, allout-show-all) - (allout-hide-region-body, allout-toggle-subtree-encryption) - (allout-encrypt-string, allout-encrypted-key-info) - (allout-next-topic-pending-encryption, allout-encrypt-decrypted) - (allout-file-vars-section-data): Adjusted for use with - invisible-text overlays instead of selective-display. - - (allout-kill-line, allout-kill-topic, allout-yank-processing): - Reworked for use with invisible text overlays. - - (allout-current-topic-collapsed-p): New function. - - (allout-hide-current-subtree): Use allout-current-topic-collapsed-p - to know when to close the containing topic. - - (allout-pre-command-business, allout-post-command-business): - Simplify undo-batching and dynamic isearch exposure. - - (allout-set-overlay-category): New for invisible-text overlays. - Sets properties of allout-overlay-category, used by - allout-flag-region to set invisible-text overlay properties. - (allout-get-invisibility-overlay): Get the first qualifying - invisibility overlay, so we can find the extent of it. - (allout-back-to-visible-text): Get to just before the beginnining - of the current invisibility overlay, if any. - - (allout-overlay-insert-in-front-handler) - (allout-overlay-interior-modification-handler) - (allout-before-change-handler, allout-isearch-end-handler): New - functions to handle extraordinary actions affecting concealed - text. - - (allout-flag-region): Use overlays instead of selective-display - for invisible text - by inheritence from the properties of - allout-overlay-category in mainline Emacs, and applied - property-by-property in XEmacs, some recent versions of which - don't inherit the properties from the category. Provisions to - respond to concealed-text edits simplified drastically. - - (allout-isearch-rectification, allout-isearch-was-font-lock) - (allout-isearch-expose, allout-enwrap-isearch) - (allout-isearch-abort, allout-pre-was-isearching) - (allout-isearch-prior-pos, allout-isearch-did-quit) - (allout-isearch-dynamic-expose) - (allout-hide-current-entry-completely): Functions deleted. - - (allout-undo-aggregation): Explicit undo aggregation no longer - necessary due to transition away from selective-display. - - (set-allout-regexp, allout-up-current-level) - (allout-next-visible-heading, allout-forward-current-level) - (allout-open-topic, allout-reindent-body, allout-rebullet-topic) - (allout-kill-line, allout-yank-processing, allout-show-children) - (allout-expose-topic, allout-old-expose-topic) - (allout-listify-exposed, allout-insert-latex-header) - (allout-toggle-subtree-encryption, allout-encrypt-string) - (remove-from-invisibility-spec, allout-hide-current-subtree): - Ditched unused variables. - -2006-02-17 Agustin Martin - - * textmodes/ispell.el (ispell-change-dictionary): Call - ispell-buffer-local-dict instead of - ispell-accept-buffer-local-defs. - (ispell-local-dictionary-alist): Accept as valid any coding-system - supported by Emacs. - (ispell-dictionary-alist-3): Esperanto dictionary's coding system - changed to iso-8859-3. - -2006-02-17 Nick Roberts - - * speedbar.el (speedbar-frame-width): Make an inline function - instead of a macro. Use frame-width. - (speedbar-try-completion, speedbar-update-contents) - (speedbar-timer-fn): Use consp. - (speedbar-update-localized-contents): Try to preserve point. - - * progmodes/gdb-ui.el (gdba, gdb-var-list): Improve doc strings. - (menu): Re-order menu items. - (gdb-var-update-regexp, gdb-var-update-regexp-1): Match "in_scope" - field. - (gdb-var-update-handler-1): Use it for GDB 6.4+. - (gdb-post-prompt): Speed things by not forcing update. - -2006-02-16 Chong Yidong - - * wid-edit.el (widget-button-click): For mouse-1, cancel button - press and perform default action if we get a mouse movement event. - -2006-02-16 Juanma Barranquero - - * calendar/icalendar.el (icalendar--get-event-property) - (icalendar--get-event-property-attributes): Fix typos in - docstrings. - - * progmodes/flymake.el (flymake-fix-file-name): Fix typo in - docstring. - -2006-02-15 Juanma Barranquero - - * bs.el (bs-mode): Use `buffer-disable-undo'. - (bs--get-file-name): Simplify. - (bs-show-in-buffer): Mark the buffer as not modified. - -2006-02-14 Chong Yidong - - * wid-edit.el (widget-keymap): Bind down-mouse-1 to - widget-button-click. - - * cus-edit.el (custom-mode-map): Remove mouse-1 binding. - (custom-mode): Update docstring. - - * cus-theme.el (custom-new-theme-mode-map): Remove mouse-1 - binding. - - * files.el (hack-local-variables-confirm): Allow scrolling if the - file variable list is too long. Kill temp buffer after use. - -2006-02-15 Nick Roberts - - * progmodes/gud.el (gdb): Improve doc string. - (gdb-script-font-lock-keywords): Expand allowed character set. - - * progmodes/gdb-ui.el (gdb-use-separate-io-buffer) - (gdb-display-separate-io-buffer, gdb-frame-separate-io-buffer) - (gdb-separate-io-interrupt, gdb-separate-io-quit) - (gdb-separate-io-stop, gdb-separate-io-eof): - Rename from gdb-inferior-* to gdb-separate-*. - (gdb-set-gud-minor-mode-existing-buffers-1): Improve doc string. - -2006-02-14 Jay Belanger - - * calc/calc-arith.el (math-check-known-scalarp): Make sure - expression is a symbol before checking that it is bound. - - * calc/calcalg2.el (math-integrate-by-parts): Do a more careful - test to see if equation can be solved. - -2006-02-14 Chong Yidong - - * wid-edit.el (widget-button-click): Use :pressed-face property - for overlay face, if it exists. - - * cus-edit.el (custom-manual, custom-add-see-also) - (custom-add-parent-links, custom-group-link): Add :pressed-face - property to links. - - * files.el (hack-local-variables): Remove ignored variables before - checking if any variables need setting. - -2006-02-14 Jan Dj,Ad(Brv - - * cus-start.el (all): Add x-gtk-whole-detached-tool-bar. - -2006-02-14 Juanma Barranquero - - * help.el (where-is): Fix message for remapped commands. - - * mwheel.el (mouse-wheel-click-event, mouse-wheel-mode): - Fix typos in docstrings. - -2006-02-13 Chong Yidong - - * files.el (safe-local-variable-values): New option. - (hack-local-variables-prop-line): Return a list of variable-value - pairs if MODE-ONLY is non-nil. - (hack-local-variables): Construct list of variable-value pairs, - and apply or reject them in one go. Ask for confirmation if - variables are not known safe. - (hack-local-variables-confirm): Complete rewrite. Support - `safe-local-variable-values'. - (enable-local-variables): Update docstring to reflect new - behavior. - (ignored-local-variables): Ignore ignored-local-variables and - safe-local-variable-values. - (safe-local-variable-p): New function. - (risky-local-variable-p): `safe-local-variable' property check - moved to safe-local-variable-p. - (hack-one-local-variable): Checks moved to hack-local-variables. - - (byte-compile-dynamic, c-basic-offset, c-file-style) - (c-indent-level, comment-column, fill-column, fill-prefix) - (indent-tabs-mode, kept-new-versions, no-byte-compile) - (no-update-autoloads, outline-regexp, page-delimiter) - (paragraph-start, paragraph-separate, sentence-end) - (sentence-end-double-space tab-width, version-control): - Add `safe-local-variable' property. - - * find-lisp.el: Delete nonexistent `autocompile' file variable. - - * icomplete.el, play/landmark.el: Change nonexistent - `outline-layout' file variable to `allout-layout'. - -2006-02-14 Nick Roberts - - * progmodes/gdb-ui.el (gud-watch, gdb-invalidate-registers-1) - (gdb-get-changed-registers): Test value of gud-minor-mode relative - to gud-comint-buffer. - (gdb-speedbar-expand-node, gdb-locals-mode): Use functions in - gdb-ui.el for gdb-mi.el. - (gdb-post-prompt, gdb-get-changed-registers): Move test for - registers buffer to gdb-get-changed-registers. - (gdb-breakpoint-regexp): New regexp. Allow toggling and - deletion of catchpoints (throw and catch). - (gdb-toggle-breakpoint, gdb-delete-breakpoint) - (gdb-goto-breakpoint): Use it for both gdb-ui and gdb-mi. - (gdb-find-file-hook, gdb-set-gud-minor-mode-existing-buffers-1) - (gdb-var-list-children-1, gdb-info-breakpoints-custom) - (gdb-var-update-1, gdb-invalidate-locals-1): Use also for gdb-mi. - -2006-02-13 Jay Belanger - - * calc/calc-arith.el (math-check-known-matrixp): Make sure - expression is a symbol before checking that it is bound. - -2006-02-13 Richard M. Stallman - - * mouse.el (mouse-drag-mode-line-1): Use mouse-drag-move-window-bottom - for the minibuffer too, but not if resize-mini-windows will interfere. - - * help.el (describe-key-briefly, describe-key): Do all arg-reading - inside `interactive' spec. - (describe-key-briefly-internal, describe-key-internal): - Functions merged back into their callers. - -2006-02-13 Martin Rudalics - - * info.el (info-xref-visited): Inherit from info-xref too. - (Info-set-mode-line): Replace occurrences of `%' by `%%' - when propertizing Info-current-file and Info-current-node. - -2006-02-13 Juri Linkov - - * tumme.el (tumme-thumbnail-storage): Fix docstring. - (tumme-thumb-name): Fix per-directory format. - -2006-02-13 Juanma Barranquero - - * subr.el (substitute-key-definition): Doc fix (hide internal arg). - -2006-02-12 Miles Bader - - * net/rcirc.el (rcirc-format-response-string): Fix small bugs. - -2006-02-13 Mathias Dahl - - * tumme.el: Remove history section. If someone needs the it, it - can always be found in CVS. - -2006-02-12 Mathias Dahl - - * tumme.el (tumme-thumbnail-storage): Update docstring. Add info - about the Thumbnail Managing Standard option. - -2006-02-12 Richard M. Stallman - - * subr.el (substitute-key-definition): Doc fix. - - * simple.el (blink-matching-paren-dont-ignore-comments): Doc fix. - - * files.el (magic-mode-alist): Don't use `\\s ' in regexps. - - * info.el (Info-mode): Doc fix. - - * progmodes/ebrowse.el (ebrowse-global-prefix-key): Change to C-c C-m. - -2006-02-12 Michael Albinus - - * net/tramp.el (tramp-remote-path): Add "/usr/xpg4/bin" on top, - because on Solaris a POSIX compatible "id" is needed. Reported by - Magnus Henoch . - -2006-02-12 Juri Linkov - - * tumme.el: Remove todo item about Thumbnail Managing Standard. - (tumme) : Change :group to `multimedia'. - (tumme-thumbnail-storage): Add choice `standard' for Thumbnail - Managing Standard. - (tumme-cmd-create-thumbnail-options): Use %w and %h instead of %s. - Fix dostring. - (tumme-cmd-create-temp-image-options): Use %w and %h instead of %x - and %y. Fix docstring. - (tumme-cmd-pngnq-program, tumme-cmd-pngcrush-program) - (tumme-cmd-create-standard-thumbnail-command): New user options. - (tumme-thumb-size): Set default to 128 if tumme-thumbnail-storage - is `standard'. Fix docstring. - (tumme-thumb-width, tumme-thumb-height): New user options. - (tumme-external-viewer): Try to find various viewers. - (tumme-get-thumbnail-image): Use `create-image' instead of - constructing the `image' structure. - (tumme-insert-thumbnail): Use `png' if tumme-thumbnail-storage is - `standard'. - (tumme-thumb-name): Add file name generation for standard storage. - Simplify code for other storages. - (tumme-thumb-name): Use width %w and height %h instead of size %s. - Add modification time %m and thumbnail-nq8 %q. - Use `tumme-cmd-create-standard-thumbnail-command' if - tumme-thumbnail-storage is `standard'. - (tumme-dired-insert-marked-thumbs): New autoload command. - (tumme-dired-after-readin-hook): New function. - (tumme-line-up-dynamic): Use `tumme-thumb-width' instead of - `tumme-thumb-size'. - (tumme-display-image): Replace size-x %x and size-y %y with - width %w and height %h. - - * dired.el (dired-mode-map): Bind `\C-t\C-t' to - `tumme-dired-insert-marked-thumbs'. - -2006-02-12 Mathias Dahl - - * tumme.el (tumme-write-tag): Fix small bug (file name did not - include path). - (tumme-mark-tagged-files): Fix bug in regexp used to find rows - matching tag. - -2006-02-12 Miles Bader - - * net/rcirc.el (rcirc-nick-abbrevs, rcirc-response-formats): - New variables. - (rcirc-abbrev-nick): New function. - (rcirc-format-response-string): Rewrite to use the formats in - `rcirc-response-formats' and expand escape sequences therein. - A text-property `rcirc-text' is added over the actual response - text to make easy to find inside the returned string. - (rcirc-print): When filling, just look for the `rcirc-text' - text-property to find the appropriate fill prefix, instead of - using hardwired patterns. - -2006-02-11 Mathias Dahl - - * tumme.el: Enhance some docstrings. Add todo item about Thumbnail - Managing Standard. - -2006-02-11 Kim F. Storm - - * ido.el (ido-buffer-internal): Set mark for ido-insert-buffer. - Don't use insert-buffer; do insert-buffer-substring directly. - (ido-file-internal): Set mark for ido-insert-file. Use insert-file-1. - -2006-02-11 Martin Rudalics - - * files.el (revert-buffer, recover-file): Replace buffer-read-only - with inhibit-read-only. Suggested by Stefan Monnier. - (revert-buffer): Let insert-file-contents discard - buffer-undo-list. Simplify code. - (find-file, find-file-existing, revert-buffer): Doc-string fixes. - -2006-02-11 Eli Zaretskii - - * menu-bar.el (menu-bar-select-yank): Add a doc string. - - * help.el (describe-key-briefly): Now a wrapper for - describe-key-briefly-internal. Bind enable-disabled-menus-and-buttons - to t. Populate yank-menu if empty. - (describe-key-briefly-internal): Renamed from describe-key-briefly. - (describe-key): Now a wrapper for describe-key-internal. Bind - enable-disabled-menus-and-buttons to t. Populate yank-menu if empty. - (describe-key-internal): Renamed from describe-key. - -2006-02-11 Milan Zamazal - - * progmodes/glasses.el (glasses-separator): Doc fix. - (glasses-original-separator): New defcustom. - (glasses-make-readable, glasses-convert-to-unreadable): Use it. - -2006-02-11 Martin Rudalics - - * mwheel.el (mouse-wheel-up-event): Doc fix. - -2006-02-11 Mathias Dahl - - * tumme.el (tumme-dir): Change default value to "~/.emacs.d/tumme/". - (tumme-dir): New function. Copied from thumbs.el. - -2006-02-10 Juanma Barranquero - - * desktop.el (desktop-outvar): Fix typo. - (desktop-save-buffer-p): Doc fix. - - * subr.el (substitute-key-definition): Fix typo. - -2006-02-10 YAMAMOTO Mitsuharu - - * frame.el (select-frame-set-input-focus): Call x-focus-frame also - when window-system is mac. - - * term/mac-win.el (fontset-standard): Rename from "fontset-mac". - -2006-02-10 Kim F. Storm - - * subr.el (substitute-key-definition-key): Pass t for NOERROR to - indirect-function instead of using condition-case. - -2006-02-10 Mathias Dahl - - * tumme.el (tumme-copy-with-exif-file-name): Try to make docstring - less `colloquial'... - -2006-02-09 Mathias Dahl - - * tumme.el: Add a couple of todo items. - -2006-02-09 Lars Hansen - - * hilit-chg.el: Add highlight-changes-mode to desktop-locals-to-save. - (highlight-changes-mode): Don't change desktop-locals-to-save. - -2006-02-09 Chong Yidong - - * image-mode.el (image-toggle-display): Clear image cache if using - filename. - -2006-02-09 Masatake YAMATO - - * dired-x.el (dired-guess-shell-alist-default): Add .man as - a `dired-man' target. - - * progmodes/autoconf.el (autoconf-font-lock-keywords): Check start - boundary of symbols. - -2006-02-08 Peter Doornbosch (tiny change) - - * vc-svn.el (vc-svn-print-log): Show recent commits as well. - -2006-02-09 Juanma Barranquero - - * hilit-chg.el (hilit-chg-update-all-buffers): Use `mapc' instead of - `mapcar'; return nil. - -2006-02-08 Chong Yidong - - * mouse.el (mouse-drag-track): Don't change window if we rebind to - some other event. - -2006-02-08 Ryan Yeske - - * net/rcirc.el (rcirc-startup-channels-alist): - Add irc.freenode.net and #emacs as defaults. - (rcirc-ignore-all-activity-flag): Remove variable. - (rcirc-authinfo): New variable. - (rcirc-authinfo-filename): Remove variable. - (rcirc-always-use-server-buffer-flag): New flag. - (rcirc): M-x rcirc will automatically connect without prompting. - C-u M-x rcirc will prompt. Use rcirc-connect to create a - connection in lisp. - (rcirc-process-server-response-1): Remove everything but the nick - portion of the sender so it doesn't need to be done everywhere - else. Update related code. - (global-map): Remove global keybindings. - (rcirc-get-buffer-create): Make sure rcirc-topic is set. - (rcirc-send-input): Split into several functions. - (rcirc-process-input-line, rcirc-process-message) - (rcirc-process-command): New functions. - (rcirc-target-buffer): New function to determine where to route - messages. - (rcirc-user-nick): Save match data. - (rcirc-toggle-ignore-buffer-activity) - (rcirc-update-activity-string): Remove global ignore functionality, - which can be done now by toggling rcirc-track-minor-mode. - (rcirc-track-minor-mode-map): New keymap. - (rcirc-track-minor-mode): New minor-mode. - (ignore): Make the ignore output nicer. Always print it when - adding or removing nicks. - (rcirc-url-regexp): Improve. - (rcirc-mangle-text): Remove properties before using text in the - modeline. - (rcirc-authenticate): Authentication data comes from - rcirc-authinfo, not the file pointed to by rcirc-authinfo-file. - (rcirc-server-prefix): Inherit from rcirc-server. - -2006-02-08 Mathias Megyei (tiny change) - - * Makefile.in (compile): Append "|| true" to the end of the `find' - command, like compile-always does. - -2006-02-08 Sam Steingold - - * net/tramp.el (tramp-maybe-open-connection): Do not wait for - output from a dead connection. - -2006-02-07 Mathias Dahl - - * dired.el (dired-mode-map): Add more bindings for tumme. - -2006-02-07 Stefan Monnier - - * wdired.el (wdired-mode-map): Use remap. - (wdired-get-filename): Massage. - (wdired-perm-mode-map): Don't copy bindings from wdired-mode-map. - (wdired-preprocess-perms, wdired-set-bit, wdired-toggle-bit): Use the - `keymap' property rather than `local-map'. - -2006-02-07 Mathias Dahl - - * tumme.el (tumme-get-thumbnail-image): New utility function. - Suggested by from Chong Yidong. - (tumme-dired-with-window-configuration): Rename from - `tumme-dired'. Add code to save window configuration. - (tumme-restore-window-configuration): New command to restore the - window configuration that `tumme-dired-with-window-configuration' - saves before it changes the window configuration. - (tumme-show-all-from-dir): New command to display thumbnails for - all files in a directory entered by the user, like M-x thumbs. - (tumme-display-thumbs): Call `pop-to-buffer' after all thumbnails - have been created. - (tumme-display-thumbnail-original-image): Call `display-buffer'. - (obsolete-tumme-display-thumbnail-original-image-and-buffer): - Remove obsolete test function. - -2006-02-07 Juanma Barranquero - - * vc.el (small-temporary-file-directory): Remove defvar; there's - a defcustom for it in files.el. - - * tumme.el (tumme-get-thumbnail-image): Add missing arg to `error'. - Fix typo in message. - (tumme-gallery-generate): Fix typo in `error' message. - (tumme-display-window-height-correction) - (tumme-display-window-width-correction, tumme-line-up-dynamic) - (tumme-line-up-interactive): Dox fixes. - (tumme-cmd-rotate-original-options, tumme-display-properties-format) - (tumme-restore-window-configuration, tumme-format-properties-string) - (tumme-create-thumbs, tumme-display-previous-thumbnail-original): - Fix typos in docstrings. - -2006-02-07 Chris Moore - - * wdired.el (wdired-get-filename): Fix bug: Don't re-normalize OLD. - -2006-02-07 Nick Roberts - - * progmodes/gud.el (gud-tooltip-mode): Remove autoload cookie. - User should use hook if desired. - - * progmodes/gdb-ui.el (gdb-post-prompt): Regenerate breakpoints - buffer if necessary. - (gdb-delete-frame-or-window): New function. - (gdb-breakpoints-mode-map): Bind "q" to it. - -2006-02-06 Stefan Monnier - - * textmodes/nroff-mode.el: Clean up name space. - (nroff-mode-syntax-table): Remove spurious `1' in the syntax of \n. - (nroff-mode): Obey the global setting of nroff-electric-mode. - (nroff-electric-mode): Use define-minor-mode and derived-mode-p. - - * calendar/calendar.el (calendar-increment-month): Typo in last change. - -2006-02-06 Thien-Thi Nguyen - - * vc-svn.el (vc-svn-previous-version, vc-svn-next-version): New funcs. - -2006-02-06 Lars Hansen - - * generic-x.el (etc-fstab-generic-mode): Add file system types - cifs and usbdevfs. Allow special chars in file names. - -2006-02-05 Jay Belanger - - Update copyright notices of the files in lisp/calc. - -2006-02-05 Romain Francoise - - Update copyright notices of all files in the lisp/play directory. - -2006-02-04 Luc Teirlinck - - * ldefs-boot.el: Regenerate. - - * emacs-lisp/find-func.el (find-definition-noselect): Minor doc fix. - -2006-02-05 Kim F. Storm - - * files.el (magic-mode-regexp-match-limit): New defvar. - (set-auto-mode): Use it to limit magic-mode-alist matching. - -2006-02-04 Eli Zaretskii - - * info.el (Info-index, Info-mode): Improve the description of the - `i' command. - - * ldefs-boot.el: Regenerate. - -2006-02-03 Werner Lemberg - - * textmodes/nroff-mode.el (nroff-font-lock-keywords): Don't be - greedy to find the closing bracket in \*[...] and similar - expressions. This is a first rough fix -- many additional - refinements are necessary to make nroff mode really usable with groff. - -2006-02-03 Jens Petersen (tiny change) - - * international/mule-cmds.el (set-locale-environment): - Add "/usr/share/X11/locale/locale.alias" to search list for xorg-x11 - libX11. - -2006-02-03 Joe Wells (tiny change) - - * arc-mode.el (archive-maybe-copy): Fix the way directories in the - archive are created in archive-tmpdir. - -2006-02-02 John Paul Wallington - - * ibuffer.el (ibuffer-compressed-file-name-regexp): New defcustom. - (ibuffer-fontification-alist): Use it. - (ibuffer-mode-map): Bind `ibuffer-mark-compressed-file-buffers' - to "* z" and the Ibuffer Mark menu. - - * ibuf-ext.el (ibuffer-mark-compressed-file-buffers): New command. - -2006-02-02 Stefan Monnier - - * textmodes/table.el (*table--cell-describe-mode) - (*table--cell-describe-bindings): Undo last change since - print-help-return-message is not obsoleted by anything at all. - -2006-02-02 Luc Teirlinck - - * emulation/cua-base.el (cua-mode): Doc fix. - -2006-02-02 Juanma Barranquero - - * dframe.el (dframe-handle-make-frame-visible) - (dframe-handle-iconify-frame, dframe-get-focus) - (dframe-select-attached-frame, dframe-power-click) - (dframe-frame-mode): Fix typos in docstrings. - - * ezimage.el (ezimage-mail, ezimage-object-out-of-date) - (ezimage-insert-image-button-maybe, ezimage-insert-over-text): - Fix typos in docstrings. - - * hi-lock.el (hi-lock-mode, hi-lock-line-face-buffer) - (hi-lock-face-buffer, hi-lock-font-lock-hook) - (hi-lock-archaic-interface-message-used) - (hi-lock-file-patterns-range): Fix typos in docstrings. - - * savehist.el (savehist-loaded, savehist-load, savehist-install) - (savehist-autosave, savehist-trim-history): Fix typos in docstrings. - - * mail/mailclient.el (mailclient-place-body-on-clipboard-flag): - Fix typo in docstring. - - * net/newsticker.el (newsticker--decode-iso8601-date) - (newsticker--set-customvar, newsticker--buffer-insert-item) - (newsticker--do-run-auto-mark-filter) - (newsticker--parse-generic-feed): Doc fixes. - (newsticker--retrieval-timer-list, newsticker-url-list) - (newsticker-hide-immortal-items-in-echo-area) - (newsticker-hide-obsolete-items-in-echo-area) - (newsticker-new-item-face, newsticker--enclosure) - (newsticker-buffer-update, newsticker-w3m-show-inline-images) - (newsticker--parse-atom-0.3, newsticker--parse-rss-1.0) - (newsticker--parse-generic-feed, newsticker--cache-contains) - (newsticker--stat-num-items, newsticker-download-enclosures): - Fix typos in docstrings. - - * net/rcirc.el (rcirc-debug): Doc fix. - (rcirc-fill-column, rcirc-receive-message-hooks) - (rcirc-browse-url-map, rcirc-read-only-flag, rcirc-prompt) - (rcirc-mode, rcirc-generate-new-buffer-name) - (rcirc-startup-channels, rcirc-ignore-update-automatic) - (rcirc-cmd-ignore, rcirc-browse-url, rcirc-url-regexp): - Fix typos in docstrings. - (rcirc-print): "?\ " -> "?\s". - (rcirc-cmd-join): Improve argument/docstring consistency. - -2006-02-01 Mark A. Hershberger - - * xml.el (xml-parse-region): Move save-excursion and set-buffer up - before narrow-to-region. - -2006-02-01 Richard M. Stallman - - * simple.el (move-beginning-of-line): Scan properly for invis change. - - * replace.el (multi-occur-in-matching-buffers): Fix prev change. - -2006-02-01 Michael Albinus - - * net/tramp.el (tramp-convert-file-attributes): Set file's gid - change bit only when id-format is 'integer. Reported by Matt - Hodges . - -2006-02-01 Juanma Barranquero - - * hilit-chg.el (highlight-changes-initial-state) - (highlight-changes-global-initial-state): Doc fixes. - (highlight-changes-global-modes, global-highlight-changes): - Fix typos in docstrings. - -2006-02-01 Kim F. Storm - - * emulation/cua-base.el (cua-mode): Mention that CUA enables - transient-mark-mode in doc string. - -2006-01-31 Richard M. Stallman - - * replace.el (multi-occur): Doc fix. - (multi-occur-in-matching-buffers): Rename from - multi-occur-by-filename-regexp. Prefix arg says match - buffer names instead of file names. - -2006-01-31 Juanma Barranquero - - * bs.el: Allow non-default values of `bs-header-lines-length'. - (bs--running-in-xemacs): Remove (not needed anymore). - (bs--set-window-height): Simplify by using `fit-window-to-buffer' - instead of `shrink-window', thus avoiding having to compute the - height of the window. - (bs--up): Wrap around even when there's no header. - (bs--down): Use `forward-line' instead of `next-line'. - -2006-01-30 Chong Yidong - - * image-mode.el (image-toggle-display): Use file name if possible, - instead of unnecessarily allocating a (possibly huge) lisp string. - -2006-01-30 John Paul Wallington - - * subr.el (toplevel): Define `cl-assertion-failed' condition here - because the `assert' macro signals it at runtime. - - * emacs-lisp/cl.el (toplevel): Remove definition of - `cl-assertion-failed' condition. - -2006-01-30 Nick Roberts - - * thumbs.el (thumbs-marked-list): Make buffer-local and - permanent-local. - (thumbs-insert-thumb): Make help-echo non-sticky. - (thumbs-file-alist): Use eolp as check for (non)-image. - -2006-01-30 Juanma Barranquero - - * ediff-mult.el (ediff-meta-buffer-keymap-setup-hook) - (ediff-before-session-group-setup-hooks) - (ediff-default-filtering-regexp, ediff-meta-mark-equal-files): - Fix typos in docstrings. - - * window.el (bw-dir, bw-eqdir, balance-windows) - (split-window-keep-point): Fix typos in docstrings. - - * textmodes/org.el (org-allow-space-in-links, org-closed-string) - (org-quote-string, org-calendar-to-agenda-key) - (org-agenda-sorting-strategy, org-agenda-use-time-grid) - (org-show-following-heading, org-tags-column) - (org-use-tag-inheritance, org, org-allow-space-in-links) - (org-usenet-links-prefer-google, org-file-apps-defaults-gnu) - (org-enable-table-editor, org-calc-default-modes) - (org-table-allow-automatic-line-recalculation) - (org-export-html-style, org-export-with-fixed-width) - (org-export-with-sub-superscripts, org-special-keyword) - (org-formula, org-time-grid, org-table-may-need-update) - (org-mode, org-goto-ret, org-goto-left, org-goto-right) - (org-goto-quit, org-get-indentation, org-end-of-item) - (org-move-item-down, org-move-item-up) - (org-renumber-ordered-list, org-todo, org-log-done, org-occur) - (org-remove-occur-highlights, org-read-date, org-goto-calendar) - (org-agenda, org-agenda-day-view, org-agenda-previous-date-line) - (org-agenda-log-mode, org-agenda-toggle-diary) - (org-agenda-toggle-time-grid, org-agenda-cleanup-fancy-diary) - (org-agenda-file-to-end, org-agenda-no-heading-message) - (org-agenda-get-closed, org-format-agenda-item) - (org-cmp-priority, org-cmp-category, org-cmp-time) - (org-agenda-change-all-lines, org-agenda-diary-entry) - (org-scan-tags, org-after-todo-state-change-hook, org-tags-view) - (org-link-search, org-camel-to-words, org-open-file) - (org-remember-handler, org-table-convert-region) - (org-table-move-row-down, org-table-move-row-up) - (org-table-copy-region, org-table-wrap-region) - (org-table-toggle-vline-visibility) - (org-table-get-vertical-vector, org-table-modify-formulas) - (org-table-get-specials, org-recalc-commands) - (org-table-rotate-recalc-marks, org-table-eval-formula) - (orgtbl-make-binding, org-in-invisibility-spec-p, org-cycle) - (org-level-color-stars-only, org-insert-heading): - Fix typos in docstrings. - (last-arg): Add defvar. - - * makefile.w32-in (WINS): Add erc. - (MH_E_SRC): Update (copied from lisp/Makefile.in). - -2006-01-29 Bill Wohler - - * Makefile.in (MH_E_SRC): Add mh-compat.el, mh-folder.el, - mh-letter.el, mh-limit.el, mh-scan.el, mh-show.el, mh-thread.el, - mh-tool-bar.el, mh-xface.el. Remove mh-customize.el, mh-init.el. - (mh-autoloads): Don't use comments on otherwise empty lines. - -2006-01-29 Edward O'Connor - - * emulation/viper.el (viper-major-mode-modifier-list): - Add insert-state and vi-state entries for erc-mode. - (viper-go-away, viper-set-hooks): Add and remove - viper-comint-mode-hook from erc-mode-hook as appropriate. - - * emulation/viper.el (viper-insert-state-mode-list): Add erc-mode. - -2006-01-29 Juanma Barranquero - - * bs.el (bs--format-aux): Implement `middle' alignment as - described in the docstring for `bs-attributes-list'. - (bs--get-name): Simplify. Don't pad the buffer name. - -2006-01-27 Agustin Martin - - * textmodes/ispell.el (ispell-find-aspell-dictionaries): If no - English aspell dictionary is installed, use the first entry of - ispell-dictionary-alist-1. - -2006-01-27 Kevin Rodgers (tiny change) - - * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate): - Doc fix. - -2006-01-27 Michael Albinus - - * net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test - for `process-file', in order to let it work for older Emacsen too. - -2006-01-27 Eli Zaretskii - - * international/latexenc.el: Add a suitable `coding:' tag. - (latexenc-find-file-coding-system): Undo last change. - -2006-01-27 Arne J,Ax(Brgensen - - * international/latexenc.el (latexenc-find-file-coding-system): - Make sure latexenc-main-file is a regular file and is readable. - -2006-01-27 Andre Spiegel - - * vc-rcs.el (vc-rcs-fetch-master-state, vc-rcs-consult-headers): - Pass FILE to vc-user-login-name. - - * vc-sccs.el (vc-sccs-state): Pass FILE to vc-user-login-name. - -2006-01-27 Nick Roberts - - * thumbs.el (thumbs-do-thumbs-insertion): Suppress message when - there are no more images to display. - (thumbs-mark, thumbs-unmark): Revert change so that they move to - the next image. - -2006-01-26 Richard M. Stallman - - * cus-edit.el (custom-mode): Doc: Use advertised-widget-backward. - - * wid-edit.el (advertised-widget-backward): New alias. - (widget-keymap): Use advertised-widget-backward for S-TAB. - - * tumme.el: Correct the keywords. - (tumme-dir-max-size): Use defvar. - (tumme-setup-dired-keybindings, tumme-dired): Add autoload cookie. - - * simple.el (move-beginning-of-line): Take account of fields. - (clone-indirect-buffer-other-window): Take args like - clone-indirect-buffer, and work like it. - - * help-fns.el (describe-function): Don't pass `nil' as default. - - * files.el (risky-local-variable-p): Follow var aliases. - - * subr.el (lazy-completion-table): Doc fix. - - * mail/rmailsum.el (rmail-make-summary-line-1): Don't set - global binding of `line'. - -2006-01-25 Andre Spiegel - - * vc-hooks.el (vc-user-login-name): Rewritten to handle access via - Tramp. - - * vc.el (vc-default-dired-state-info): Pass FILE to - vc-user-login-name. - (vc-default-update-changelog): Don't use vc-user-login-name, we - don't need it here. - - * net/tramp-vc.el (vc-user-login-name): Comment out defadvice, it is - no longer necessary. - -2006-01-25 Kenichi Handa - - * international/mule.el (decode-char): Avoid the overhead of - calling utf-lookup-subst-table-for-decode if - utf-translate-cjk-mode is nil. - (encode-char): Avoid the overhead of calling - utf-lookup-subst-table-for-encode if utf-translate-cjk-mode is - nil. - -2006-01-22 Kenichi Handa - - * international/mule.el (make-subsidiary-coding-system): Reset - `coding-system-define-form' property of subsidiaries to nil. - Avoid duplicated entry in coding-system-alist. - (make-coding-system): Avoid duplicated entry in - coding-system-alist. - (define-coding-system-alias): Likewise. - -2006-01-24 Luc Teirlinck - - * completion.el: Minor fixes in introductory comment. - (completion-def-wrapper): Fix alist. - -2006-01-25 Nick Roberts - - * thumbs.el (thumbs-new-image-size): New function. - (thumbs-increment-image-size-element) - (thumbs-decrement-image-size-element, thumbs-increment-image-size) - (thumbs-decrement-image-size): Delete. - (thumbs-resize-image-1): Rename from thumbs-resize-image. Keep old - temp files and use to resize. - (thumbs-resize-image): Rename from thumbs-resize-image-interactive. - Use increment argument to enlarge/shrink. Preserve point. - (thumbs-shrink-image): Rename from thumbs-resize-image-size-down. - (thumbs-enlarge-image): Rename from thumbs-resize-image-size-up - (thumbs-show-thumbs-list): Set thumbs-buffer to current-buffer. - (thumbs-mark, thumbs-unmark): Preserve point. - (thumbs-modify-image): Keep old temp files and use to modify. - Cleanup old temp files at load time. Preserve point. - (thumbs-view-image-mode-map): Use new command names. - -2006-01-24 Stefan Monnier - - * log-view.el (log-view-minor-wrap): First rev is the one at point. - - * calendar/cal-menu.el: Avoid macros from calendar.el so as to break - the nastiest part of the cyclic dependency. - (cal-menu-update): Use dotimes and calendar-increment-month. - - * calendar/calendar.el: Remove unnecessary leading stars in docstrings. - (calendar-week-start-day): Add an :initializer. - (calendar-mode-map): Use suppress-keymap, and command remapping. - (describe-calendar-mode): Setup xref-stack info for the back button. - (calendar-star-date): Insert before delete. - (calendar-set-mode-line): Add file-modified info if applicable. - (calendar-increment-month): New function. - -2006-01-24 Tobias C. Rittweiler (tiny change) - - * font-lock.el (lisp-font-lock-keywords-2): - Recognize "& keywords" only at word boundaries. - -2006-01-24 Nick Roberts - - * thumbs.el (thumbs-extra-images): New variable. Make it buffer-local - and permanent-local. - (thumbs-max-image-number): New variable. - (thumbs-do-thumbs-insertion): Use them. - (thumbs-per-line): Change default to 4. - (thumbs-marked-list): Rename from thumbs-markedL. - (thumbs-cleanup-thumbsdir, thumbs-delete-images) - (thumbs-rename-images): Use -list instead of L for internal variables. - (thumbs-call-convert): Use call-process instead of shell-command. - (thumbs-insert-thumb): Add filename as help-echo to each image. - (thumbs-show-from-dir): Rename from thumbs-show-all-from-dir. - Give dir to thumbs-show-thumbs-list. - (thumbs-show-thumbs-list): Set default-directory to that of images. - (thumbs-dired-show): Rename from thumbs-dired-show-all. - (thumbs-display-thumbs-buffer, thumbs-show-more-images): New functions. - (thumbs-mode-map): Bind "+" to thumbs-show-more-images. - (thumbs-view-image-mode-map): Bind "^" to thumbs-display-thumbs-buffer. - -2006-01-23 Stefan Monnier - - * ses.el (ses-read-cell): Provide a default value. - -2006-01-23 Juanma Barranquero - - * term/w32-win.el (image-library-alist): Add additional names for - GIF library. - -2006-01-23 Arne J,Ax(Brgensen - - * international/latexenc.el (latexenc-find-file-coding-system): - Add file-regular-p check. - -2006-01-22 Stefan Monnier - - * simple.el (clone-buffer): Don't show the new buffer in the same - window. - -2006-01-23 Juri Linkov - - * faces.el (link, link-visited): New faces based on default values - of `info-xref' and `info-xref-visited'. - - * info.el (info-xref): Inherit from `link'. - (info-xref-visited): Inherit from `link-visited'. - - * cus-edit.el (custom-buffer-create-internal): Use widget type - `custom-manual' instead of `info-link' and don't set properties - `button-face' and `mouse-face' explicitly. - (custom-browse-group-tag, custom-browse-variable-tag) - (custom-browse-face-tag): Inherit from widget class - `custom-group-link' instead of `push-button'. - (custom-button-unraised): Inherit from `underline' face. - (custom-link): Inherit from `link' face. Fix doc and group. - (custom-add-parent-links, custom-group-value-create): Don't set - properties `button-face' and `mouse-face' explicitly for - `custom-group-link' widget. - (custom-group-link): Add properties `button-face' and `mouse-face' - to widget definition. - (custom-field-keymap): New variable. Put `custom-field-keymap' to - editable-field's :keymap property. - (custom-mode): Fix docstring: substitute keybindings for - `widget-forward' and `widget-backward' from `widget-keymap', - `widget-complete' from `custom-field-keymap', replace old - `Custom-move-and-invoke' with `widget-move-and-invoke'. Untabify. - - * desktop.el (desktop-load-file): Check for `fboundp' before - calling `symbol-function'. - - * simple.el (clone-buffer, clone-indirect-buffer) - (clone-indirect-buffer-other-window): Use `read-buffer' instead of - `read-string'. Fix prompts. - - * play/doctor.el (doctor-mode-map): Rename from `doc-mode-map'. - -2006-01-23 Nick Roberts - - * thumbs.el (thumbs-file-alist): Avoid creating duplicate entries. - -2006-01-22 Luc Teirlinck - - * startup.el (inhibit-splash-screen, initial-scratch-message): - Doc fixes. - -2006-01-22 Michael Albinus - - Sync with Tramp 2.0.52. - - * net/tramp.el, net/tramp-ftp.el, net/tramp-util.el, - * net/tramp-vc.el: Add code for unloading Tramp. See comment before - `tramp-unload-tramp' for checklist. - - * net/tramp.el: Require `timer-funcs' instead of `timer' if in - XEmacs. Contributed by Steve Youngs . - (tramp-unload-file-name-handler-alist) - (tramp-unload-tramp): New defuns. - (tramp-advice-PC-expand-many-files): New defadvice. - (tramp-save-PC-expand-many-files, tramp-setup-complete): Defuns - removed. - (tramp-handle-expand-file-name): Remove double slash. - (tramp-handle-file-attributes-with-ls): Return t as 9th attribute. - It doesn't matter, because it will be converted later on. - (tramp-handle-file-ownership-preserved-p): Rewritten. The old - implementation was just heuristic. - (tramp-post-connection): Set uid and gid properties. - (tramp-convert-file-attributes): Set file's gid change bit. - (tramp-get-remote-uid, tramp-get-remote-gid): New defuns. - (tramp-handle-expand-file-name): Use "~root" for tilde expansion - in case of su(do)? methods. The home directory of the local user - will be taken else. - (tramp-open-connection-telnet) - (tramp-open-connection-rsh, tramp-open-connection-su) - (tramp-open-connection-multi): Set PS1 to "$ ". Otherwise, a - local shell prompt could hurt. Reported by Romain Francoise - . - (tramp-let-maybe): Add `edebug-form-spec' property. - (tramp-handle-expand-file-name): Bind `default-directory' locally - to "/" in order to avoid problems with UNC shares or Cygwin - mounts. - (tramp-md5-function): Fix typo in error message. - - * net/tramp-ftp.el (tramp-ftp-enable-ange-ftp): New defun. - - * net/tramp-util.el (top): Apply `ignore' instead of `identity' - for byte-compiler pacification. - -2006-01-22 Andre Spiegel - - * vc-rcs.el (vc-rcs-state-heuristic): Use file-attributes with - ID-FORMAT `string'. This allows us to get rid of - `vc-user-login-name UID'. - - * vc-sccs.el (vc-sccs-state-heuristic): Likewise. - -2006-01-22 John Paul Wallington - - * hl-line.el (hl-line-highlight, hl-line-move): Doc fixes. - -2006-01-21 Martin Rudalics - - * emacs-lisp/find-func.el (find-definition-noselect) - (find-variable-noselect): Search variables in C source code too. - (find-function-C-source, find-function-noselect, find-function) - (find-function-other-frame, find-variable-noselect, find-variable) - (find-variable-other-frame, find-variable-at-point): - Fix docstrings. - -2006-01-21 Francesco Potort,Al(B - - * mail/rmailout.el (rmail-output): Don't use content-type if it is nil. - -2006-01-21 Agustin Martin - - * textmodes/flyspell.el (flyspell-emacs-popup, flypell-xemacs-popup): - Default to disabling the "Save affix" question. - -2006-01-21 Marien Zwart (tiny change) - - * progmodes/python.el (python-mode) : Pass nil as - the first arg to run-python. - -2006-01-21 Eli Zaretskii - - * startup.el (command-line-1): Handle --no-desktop if desktop.el - is not loaded. - -2006-01-20 Jay Belanger - - * calc/calcalg2.el (calc-sum-rec): Fix the sum when the lower - limit is 0. - - * calc/calc-arith.el (math-add-symb-fancy): Check the length of - the correct variable. - -2006-01-20 Carsten Dominik - - * textmodes/org.el (org-open-at-point): Fixed bug with matching a - link. Fixed buggy argument sequence in call to `org-view-tags'. - (org-compile-prefix-format): Set `org-prefix-has-tag'. - (org-prefix-has-tag): New variable. - (org-format-agenda-item): Remove tags from headline if - appropriate. - (org-agenda-remove-tags-when-in-prefix): New option. - (org-get-tags-at): New function. - -2006-01-20 Nick Roberts - - * thumbs.el (thumbs-buffer): New variable. Make it buffer local. - (thumbs-find-image): Move image name and number from buffer name - to mode name. Set thumbs-buffer. Preserve point so that large - images remain visible. - (thumbs-file-alist): Construct list in thumbs-buffer and reverse - order. - (thumbs-show-image-num): Get image from thumbs-file-alist. Set - mode name. - (thumbs-next-image, thumbs-previous-image): Make them work. - -2006-01-19 Luc Teirlinck - - * cus-edit.el (custom-buffer-create-internal): State in the text above - the whole buffer buttons that they do not operate on hidden items. - (custom-face-menu): Use `custom-face-save' instead of - `custom-face-save-command'. - (custom-face-save-command): Make it an alias for `custom-face-save' - and declare it obsolete. - (custom-face-save): Doc fix. - - * dired.el (dired-no-confirm): Add quote. - (dired-subdir-alist-pre-R): Add quote in - `make-variable-buffer-local' form and remove unbalanced parenthesis. - -2006-01-19 Stefan Monnier - - * textmodes/table.el (table-mode-indicator): Typo in last change. - -2006-01-19 Richard M. Stallman - - * outline.el (hide-leaves): Don't call outline-end-of-heading. - Fixes bug reported in Nov 2005. - - * isearch.el (isearch-forward): Doc fix. - - * dired.el (dired-move-to-filename-regexp): Define as alias. - (dired-no-confirm): Use defcustom. - (dired-subdir-alist-pre-R): Put defvar at top level. - - * battery.el (battery-linux-proc-acpi): Handle "last full capacity". - - * textmodes/bibtex.el (bibtex-strings, bibtex-reference-keys): - Mark as risky. - - * simple.el (set-mark-command): Doc fix. - (clone-indirect-buffer-other-window): - Read arg like clone-indirect-buffer. - (move-beginning-of-line): Skip invisible newlines. - -2006-01-19 Masatake YAMATO - - * progmodes/cpp.el (cpp-edit-load): Make the order of - listed conditions in a base C code buffer and its associate - CPP Edit buffer the same. - -2006-01-19 Kenichi Handa - - * mail/rmail.el (rmail-enable-mime): Docstring fixed. - (rmail-mime-feature): Likewise. - (rmail-require-mime-maybe): Use display-warning to show a warning - message. - - * international/mule.el (auto-coding-regexp-alist-lookup): New fun. - (find-auto-coding): Use auto-coding-regexp-alist-lookup. - -2006-01-18 Stefan Monnier - - * array.el: Move defvars out of eval-when-compile. - (array-make-template): Replace undeclared global var with a local one. - (array-mode): Inline initialization functions. - (array-init-local-variables, array-init-max-row) - (array-init-max-column, array-init-columns-per-line) - (array-init-field-width, array-init-rows-numbered) - (array-init-line-length, array-init-lines-per-row): Remove. - - * play/doctor.el: Move defvars out of eval-when-compile. Use dolist. - (doc-mode-map): Define explicitly. - (doctor-txtype): Use mapc. - - * textmodes/table.el: Move defvars out of eval-when-compile. - Remove harmful code meant to avoid byte-compiler warnings. - (table-fixed-mode-indicator): Remove. Use a more complex mode-line - specification that checks table-fixed-width-mode directly. - (table-recognize-region, table-recognize-cell): - Use restore-buffer-modified-p. - (table-fixed-width-mode): Remove code that refreshes - table-fixed-mode-indicator. - (*table--cell-describe-bindings, *table--cell-describe-mode): - Avoid obsolete name print-help-return-message. - (table--test-cell-list): Don't use replace-regexp from elisp. - (table--point-entered-cell-function, table--point-left-cell-function): - Don't set table-fixed-mode-indicator, use force-mode-line-update. - - * textmodes/org.el: Move defvars out of eval-when-compile. Move code - that was after the end of file. Use buffer-file-name variable. - (org-timestamp-change): Use with-current-buffer. - (org-todo-list): Don't unnecessarily define a new buffer-local var. - (org-agenda-file-to-end, org-agenda-file-to-front): Remove unused arg - `file'. - - * progmodes/fortran.el: Move defvars out of eval-when-compile. - (fortran-break-line): Remove unused var `opoint'. - (fortran-abbrev-start): Obey help-event-list. - -2006-01-18 Jesper Harder - - * mail/smtpmail.el (smtpmail-send-it): Use insert-buffer-substring. - -2006-01-18 Masatake YAMATO - - * progmodes/make-mode.el (makefile-imake-mode): New mode - derived from makefile-mode. - (makefile-imake-mode-syntax-table): New syntax table - derived from makefile-mode-syntax-table. - (makefile-mode): Write about makefile-imake-mode in doc string. - (makefile-mode-map): Bind "\C-c\C-m\C-i" to makefile-imake-mode. - (makefile-imake-font-lock-keywords): New font lock keywords. - - * files.el (auto-mode-alist): Add Imakefile. - -2006-01-17 Agustin Martin - - * textmodes/flyspell.el (ispell-kill-ispell-hook): Add to the hook when - loading the file rather than when turning on flyspell-mode. - -2006-01-16 Luc Teirlinck - - * cus-edit.el (customize-rogue): Minor doc fix. - -2006-01-17 Juri Linkov - - * dired-aux.el (dired-diff): Use dired-dwim-target-directory - instead of the file at the mark as default if the file at the mark - is the same as the file at point or if dired-dwim-target-directory - is not the same as the current directory and the mark is not active. - - * log-view.el (log-view-minor-wrap): Use the same logic to get - revisions as `log-view-diff'. - - * info.el (Info-revert-find-node): Check for Info-current-file - before preserving new-history. - - * man.el (Man-heading-regexp): Add `/'. - - * textmodes/sgml-mode.el: Add `coding: iso-2022-7bit' cookie. - (html-mode): Set `sentence-end-base' instead of `sentence-end'. - -2006-01-16 Juri Linkov - - * faces.el (mode-line-faces): New defgroup. - (mode-line-highlight): Move definition after new defgroup. - (mode-line, mode-line-inactive, mode-line-highlight): - Replace :group `modeline' with `mode-line-faces'. - (mode-line-buffer-id): New face. - (modeline-buffer-id): New face alias. - (vertical-border): Remove :group `modeline'. - - * bindings.el (propertized-buffer-identification): Use face - `mode-line-buffer-id' instead of `Buffer-menu-buffer'. - (mode-line-next-buffer, mode-line-previous-buffer): New functions. - (mode-line-buffer-identification-keymap): For mouse-1 replace - `mode-line-unbury-buffer' with `mode-line-previous-buffer'. - Replace `mode-line-bury-buffer' with `mode-line-next-buffer' for - mouse-3. - - * buff-menu.el (buffer-menu-buffer) : Renamed from - Buffer-menu-buffer. Doc fix. - (Buffer-menu-buffer): Face alias to buffer-menu-buffer. - (list-buffers-noselect): Use `buffer-menu-buffer' face instead of - `Buffer-menu-buffer'. - - * info.el (Info-mode-line-node-keymap): New defvar. - (Info-set-mode-line): Use `stringp' to check Info-current-file. - Propertize Info-current-node with `mode-line-buffer-id' and - `mode-line-highlight' faces and `Info-mode-line-node-keymap'. - - * time.el (display-time-mail-face): Replace :group `faces' with - `mode-line-faces'. - -2006-01-16 Kenichi Handa - - * international/code-pages.el: Add autoload cookies for cp125[0345678]. - - * language/european.el (cp1252): New alias for windows-1252. - - * international/mule.el (autoload-coding-system): Prepare for EOL - variants. - -2006-01-15 Dan Nicolaescu - - * term.el (term-raw-map): Add mapping for insert. - (term-send-insert): New. - (term-mode): Make variables local here instead of doing it in - `term-emulate-terminal'. - (term-emulate-terminal): Delete incorrect optimization for cr+lf. - Scroll reverse needs to take into account the scroll region. - Saving and restoring the cursor should save the color attributes too. - (term-reset-terminal): Reset the scroll region. - (term-handle-ansi-escape): Cursor up and down should take into - account the scroll region. - (term-set-scroll-region): Rename from `term-scroll-region'. - Move to 0,0 after setting the region. - (term-handle-scroll): Handle scroll up. - (term-down): Fix off by one error. - (term-delete-lines): Do not delete outside the scroll region. - (term-insert-lines): Take into account the scroll region. - -2006-01-15 Stefan Monnier - - * textmodes/ispell.el (ispell-internal-change-dictionary) - (ispell-change-dictionary): Undo most of last change of 2006-01-13. - (start, end): Move declaration outside of eval-when-compile. - - * textmodes/flyspell.el (flyspell-kill-ispell-hook): New fun. - (flyspell-mode-on): Use it. - - * textmodes/ispell.el (ispell-kill-ispell): Run new hook - ispell-kill-ispell-hook. - -2006-01-14 Luc Teirlinck - - * cus-edit.el (Custom-set, Custom-save, Custom-reset-current) - (Custom-reset-saved): Do not ask for confirmation in single option - buffers. - -2006-01-13 Richard M. Stallman - - * font-lock.el (lisp-font-lock-keywords-1): Minor rearrangement. - -2006-01-13 Romain Francoise - - * add-log.el (add-change-log-entry, change-log-merge): - Conditionally use `hard-newline'. - -2006-01-13 Martin Rudalics - - * wid-edit.el (widget-field-end): If the overlay is no longer - associated with a buffer, behave as if the overlay didn't exist. - - * cus-edit.el (custom-add-see-also, custom-add-parent-links): - Make sure the links use the `custom-link' face. - -2006-01-13 Stefan Monnier - - * progmodes/ld-script.el (auto-mode-alist): Use \' rather than $. - (ld-script-mode): Don't set indent-line-function since we don't - have one. - -2006-01-13 Carsten Dominik - - * textmodes/org.el (org-open-file): Use mailcap for selecting an - application. - (org-file-apps-defaults-gnu): Use mailcap as the default for - selecting an application on a UNIX system. - (org-agenda-show-tags): New command. - (org-table-insert-hline): Keep cursor in current table line. - (org-table-convert): Offset effect of modifying - `org-table-insert-hline'. - (org-format-agenda-item): New optional argument TAG. - (org-compile-prefix-format): Handle %T format for the tag. - (org-expand-wide-chars): New function. - (org-table-insert-row, org-table-insert-hline): - Use `org-expand-wide-chars'. - (org-open-file): Fix bug in program launch. - (org-get-time-of-day): Fix bug with times before 1am. - (org-agenda-menu): Add tags commands. - -2006-01-13 Agustin Martin - - * textmodes/ispell.el (ispell-init-process): Include the used - dictionary in ispell process start message. - (ispell-internal-change-dictionary): When flyspell-mode is active - and dictionary is changed, make sure ispell process is restarted - and flyspell word cache cleared out for the current buffer. - (ispell-change-dictionary): Make sure flyspell word cache is - cleared out in all buffers with active flyspell mode when - dictionary is globally changed. - Call ispell-internal-change-dictionary after dictionary change. - -2006-01-13 Eli Zaretskii - - * emacs-lisp/bytecomp.el (batch-byte-recompile-directory): Doc fix. - - * makefile.w32-in (MH_E_SRC): Synchronize with Makefile.in. - (pre-mh-loaddefs.el-SH, pre-mh-loaddefs.el-CMD): Update Copyright - years. Fix small differences wrt Makefile.in. - (recompile): Use --eval '(batch-byte-recompile-directory 0)', like - Makefile.in does. - -2006-01-12 Bill Wohler - - * Makefile.in (MH_E_SRC): Replace mh-index.el and mh-pick.el with - mh-search.el. - -2006-01-12 Masatake YAMATO - - * progmodes/ld-script.el: Update copyright year. - -2006-01-12 Chong Yidong - - * cus-theme.el (custom-theme-add-variable, custom-theme-add-face): - Don't add widget if setting undefined. - -2006-01-12 John Paul Wallington - - * help-fns.el (describe-variable): Remove newlines from void - variable output. - -2006-01-13 Nick Roberts - - * wdired.el (wdired-mode-map): Add help echo for - wdired-abort-changes. - - * man.el (Man-file-name-regexp): Adjust for a list of files. - -2006-01-12 Masatake YAMATO - - * progmodes/ld-script.el (auto-mode-alist): Support - suffix conventions used in netbsd and eCos. - -2006-01-11 Luc Teirlinck - - * cus-edit.el (custom-reset-menu, custom-buffer-create-internal) - (custom-variable-menu, custom-face-menu, custom-group-menu) - (Custom-mode-menu): Change names of menu items. (As discussed on - emacs-devel.) - (custom-face-menu): Add "Undo Edits" item. - - * startup.el (init-file-user): defcustom -> defvar. - - * tooltip.el (tooltip-mode): Doc fix. - -2006-01-11 Stefan Monnier - - * reveal.el (reveal-post-command): window-buffer signals an error on - dead windows rather than returning nil. - (reveal-open-new-overlays): An overlay might die while we open others. - -2006-01-11 Bill Wohler - - * cus-dep.el (generated-custom-dependencies-file): Fix typo and - phrasing in docstring. - - * Makefile.in (MH_E_SRC): Rename from MH-E-SRC since the dashes - can give some systems gas. Add new file mh-buffers.el. - -2006-01-06 Masatake YAMATO - - * font-lock.el (cpp-font-lock-keywords): Font lock keywords for - C preprocessor forward ported from GNU Emacs 21.2. - - * progmodes/asm-mode.el (asm-font-lock-keywords): - Use `cpp-font-lock-keywords'. - - * progmodes/ld-script.el (ld-script-font-lock-keywords): Ditto. - - * progmodes/ld-script.el (auto-mode-alist): Use \\> instead - of $ for "\\.ld[s]?". - -2006-01-10 Stefan Monnier - - * progmodes/tcl.el (tcl-indent-command): Use indent-for-tab-command. - (tcl-indent-line): Return `noindent' if inside a string. - - * progmodes/flymake.el (flymake-split-string): Remove more than one - empty string at beg/end of the result. - (flymake-find-buildfile, flymake-find-possible-master-files): - Use expand-file-name. - (flymake-fix-file-name): Don't replace \ with / and don't remove ./ - since expand-file-name does it for us. Use directory-file-name. - (flymake-ler-get-full-file, flymake-ler-get-file, flymake-ler-get-line) - (flymake-ler-get-type, flymake-ler-get-text) - (flymake-ler-make-ler): Remove. Replace by defstruct. Update callers. - (flymake-current-line-no): Remove spurious interactive spec. - (flymake-delete-temp-directory): Remove unused var `slash-pos'. - (flymake-check-include): Remove arg inc-path merged into inc-name. - (flymake-check-patch-master-file-buffer): Fit in 80 columns. - Arg regexp-list replaced by a simple regexp. - (flymake-master-make-header-init, flymake-master-tex-init): - Correspondingly replace regexp-list with a regexp. Fix regexp. - -2006-01-10 Simon Josefsson - - * mail/smtpmail.el (smtpmail-try-auth-methods): Add comment - describing AUTH PLAIN fix. - -2006-01-10 Thien-Thi Nguyen - - * mail/emacsbug.el (report-emacs-bug-text-prompt): Delete var. - (report-emacs-bug): Don't record initial prompt text. - Instead, add text properties to prompting text. - (report-emacs-bug-hook): Delete prompting text. - -2006-01-09 Stefan Monnier - - * progmodes/flymake.el (flymake-find-buildfile): Remove invariant arg - `dirs'. Adjust callers. - -2006-01-09 John Paul Wallington - - * cus-edit.el (custom-comment) : Add TTY definitions. - -2006-01-09 Stefan Monnier - - * reveal.el (reveal-open-new-overlays): New extracted fun. - (reveal-close-old-overlays): Idem. Check overlays's liveness before - using them. Simplify the code. - (reveal-post-command): Use them. Fix up obsolete windows in - reveal-open-spots. - - * progmodes/flymake.el: Use `require' rather than autoload for - XEmacs's overlays. - (flymake-get-common-file-prefix, flymake-build-relative-filename): - Delete. Use file-relative-name instead. - (flymake-get-syntax-check-program-args, flymake-perl-init): - Simplify the resulting code. - - * log-view.el (log-view-file-re, log-view-message-re): Add support - for DaRCS output. - -2006-01-09 Alex Schroeder - - * mail/rmail.el (rmail-reply-regexp): Also ignore mailing list - identifiers sometimes added in square brackets at the beginning of - subject lines. - -2006-01-07 Richard M. Stallman - - * cus-edit.el (Custom-set, Custom-save): Doc fix. - (Custom-reset-current, Custom-reset-saved): Change question text. - (Custom-reset-standard): Likewise. - (custom-variable-reset-saved): Doc fix. - -2006-01-07 Eli Zaretskii - - * startup.el (init-file-user): Doc fix. - -2006-01-07 Alex Schroeder - - * mail/rmail.el (rmail-current-subject): New function. - (rmail-current-subject-regexp): New function. - (rmail-next-same-subject): Use it. - - * mail/rmailsum.el (rmail-summary-by-topic): - Use rmail-current-subject and rmail-current-subject-regexp. - (rmail-summary-next-same-subject): Ditto. - - * net/rcirc.el (rcirc-send-input): No longer check whether the - process is open, since not all commands need an open process. - (rcirc-send-string): Check whether the process is open before - sending anything. - (rcirc-ignore-list): New option. - (rcirc-ignore-list-automatic): New variable. - (rcirc-print): Take rcirc-ignore-list into account. - (rcirc-cmd-ignore): New command. - (rcirc-ignore-update-automatic): New function. - (rcirc-handler-PART, rcirc-handler-QUIT): Use it to maintain the - list if ignored nicks. - (rcirc-handler-NICK): Ditto, and also ignore the new nick. - -2006-01-06 David Reitter - - * mail/emacsbug.el (report-emacs-bug): Let explanations correctly - reflect the address to which the report will be sent. - -2006-01-06 Eli Zaretskii - - * progmodes/ld-script.el (auto-mode-alist): Recognize linker - scripts whose file-name extensions are "\.x[bdsru]?[cn]?$". - -2006-01-01 Michael Ernst (tiny changes) - - * textmodes/tildify.el: Fix typos (misspellings) in the commentary. - - * emacs-lisp/find-func.el (find-definition-noselect): Fix typo in - the doc string: "functoin" => "function". - * ldefs-boot.el: Likewise. - - * textmodes/bibtex.el (bibtex-validate-globally): Fix typo in a - message text: "Duplicat" => "Duplicate". - -2006-01-06 Sven Joachim (tiny change) - - * files.el (basic-save-buffer-2): If backing-up failed, reset - buffer-backed-up to nil. - -2006-01-06 Nick Roberts - - * progmodes/gud.el (gdb-script-skip-to-head) - (gdb-script-calculate-indentation): Indent for breakpoint command - lists also. - -2006-01-05 Bill Wohler - - * Makefile.in (compile-always): Add mh-autoloads dependency. - (bootstrap): Remove mh-autoloads dependency, as compile dependency - provides it. - (updates): Remove mh-autoloads dependency, since it probably has - already run recently (via recompile). - -2006-01-05 Stefan Monnier - - * textmodes/flyspell.el (flyspell-accept-buffer-local-defs): Add an - argument `force' to disable the flyspell-last-buffer optimization. - (flyspell-mode-on): Use it. - - * progmodes/flymake.el (flymake-get-cleanup-function): Default to - flymake-simple-cleanup. - (flymake-allowed-file-name-masks): Use this new default. - All the functions are now called in the right buffer rather than - passing the buffer as argument. - (flymake-process-sentinel): Switch to buffer before calling cleanup. - (flymake-parse-err-lines): Remove redundant buffer arg. - (flymake-get-program-dir): Comment out unused function. - (flymake-start-syntax-check, flymake-start-syntax-check-process): - Remove redundant buffer argument. - (flymake-get-real-file-name, flymake-simple-java-cleanup) - (flymake-simple-cleanup, flymake-master-cleanup): Remove buffer arg. - -2006-01-05 Richard M. Stallman - - * info.el (Info-find-node): Don't record previous node if have none. - (info): Go to directory only if history is empty. - - * simple.el (mark): Doc fix. - -2006-01-05 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-ae-parameter): Don't coerce data if it is - already of desired type. - (mac-ae-list): Coerce parameter to "list" type. - (mac-dispatch-apple-event): Replace cadr part of event with a - dummy position so that event-start returns it. - -2006-01-05 Carsten Dominik - - * textmodes/org.el (org-end-of-subtree): New function. - (org-cycle, org-subtree-end-visible-p, org-scan-tags): - Use `org-end-of-subtree'. - (org-agenda, org-agenda-convert-date): Protect calls to - `fit-window-to-buffer'. - (org-tags-view): Force matching of sublevels when doing a - todo-only search. Define the correct redo command, including the - arguments. - (org-agenda-redo): Display message. - (org-check-for-org-mode): New function. - (org-agenda-type): New variable. - (org-timeline, org-agenda-list, org-todo-list, org-tags-view): - Set `org-agenda-type'. - (org-agenda-check-type): New function. - (org-agenda-goto-today, org-agenda-later, org-agenda-earlier) - (org-agenda-week-view, org-agenda-day-view) - (org-agenda-next-date-line, org-agenda-previous-date-line) - (org-agenda-log-mode, org-agenda-toggle-diary) - (org-agenda-toggle-time-grid, org-agenda-date-later) - (org-agenda-date-prompt, org-agenda-diary-entry) - (org-agenda-execute-calendar-command, org-agenda-goto-calendar) - (org-agenda-convert-date, org-agenda-menu): - Use `org-agenda-check-type'. - (org-make-overlay, org-delete-overlay) - (org-detatch-overlay, org-move-overlay, org-overlay-put): - New compatibility functions. - (org-calendar-select-mouse): New command. - -2006-01-04 Chong Yidong - - * cus-edit.el (Custom-reset-current, Custom-reset-saved) - (Custom-reset-standard): Fix y-or-n-p messages. - (custom-link): New face for links. - (custom-buffer-create-internal, custom-manual): Use it. - (custom-face-save): Push to theme-face before setting face spec. - - * wid-edit.el (widget-default-mouse-face-get): New function. - (widget-specify-button): Handle mouse-face like button-face. - - * custom.el (load-theme): Clear old theme settings if reloading. - -2006-01-03 Luc Teirlinck - - * cus-edit.el (custom-buffer-create-internal): Move whole buffer - "Erase Customization" button back to same position it occupies in - the individual State menus. - -2006-01-04 Kim F. Storm - - * wid-edit.el (key-sequence): Rework widget to read key binding - using `kbd' syntax. Use C-q to insert literal key, event, or code. - (widget-key-sequence-default-value): Default value for empty sequence. - (widget-key-sequence-map): New map for reading key binding. Bind C-q. - (widget-key-sequence-read-event): New command for C-q. - (widget-key-sequence-validate, widget-key-sequence-value-to-internal) - (widget-key-sequence-value-to-external): New functions. - -2006-01-03 Stefan Monnier - - * progmodes/flymake.el (flymake-create-temp-with-folder-structure): - Use expand-file-name. - (flymake-delete-temp-directory): Use expand-file-name, - file-name-directory, and directory-file-name. - (flymake-strrchr): Delete. - (flymake-start-syntax-check): Don't pass the redundant buffer argument - to the init-f function. - (flymake-save-buffer-in-file, flymake-init-create-temp-buffer-copy) - (flymake-init-find-buildfile-dir) - (flymake-init-create-temp-source-and-master-buffer-copy) - (flymake-simple-make-init-impl, flymake-simple-make-init) - (flymake-master-make-init, flymake-master-make-header-init) - (flymake-simple-make-java-init, flymake-simple-ant-java-init) - (flymake-perl-init, flymake-simple-tex-init, flymake-master-tex-init) - (flymake-xml-init): Remove corresponding redundant buffer argument. - (flymake-allowed-file-name-masks): Remove last elems that are equal to - the default anyway. Clean up regexps. - - * progmodes/flymake.el (flymake-temp-source-file-name) - (flymake-master-file-name, flymake-temp-master-file-name) - (flymake-base-dir): New buffer-local vars. - (flymake-buffer-data, flymake-get-buffer-value) - (flymake-set-buffer-value): Replace those hash-tables by the new - buffer-local vars. Update callers. - - * progmodes/flymake.el (flymake-check-start-time) - (flymake-check-was-interrupted, flymake-err-info, flymake-is-running) - (flymake-last-change-time, flymake-new-err-info, flymake-timer): - Move definition, so we can remove redundant earlier declaration. - (flymake-replace-regexp-in-string, flymake-split-string) - (flymake-get-temp-dir): Use defalias. - (flymake-popup-menu): Remove `pos' argument. Use posn-at-point. - (flymake-xemacs-window-edges): Remove unused function. - (flymake-get-point-pixel-pos): Move. - (flymake-pid-to-names, flymake-reg-names) - (flymake-get-source-buffer-name, flymake-unreg-names): Remove. - Replace by a simple list flymake-processes and by process-buffer. - Update callers. Other than simplify the code, it uses buffers rather - than buffer-names so it doesn't get confused by uniquify. - (flymake-buffer-data): The global value should just be nil. - - * emacs-lisp/bytecomp.el (byte-compile-file-form-defalias): - Optimize the body of a defalias like any other code. - - * font-lock.el (font-lock-fontify-buffer, font-lock-fontify-region): - Make sure we've setup font-lock's vars. It may influence which - function we then call. - (font-lock-default-fontify-buffer): Don't bother calling set-defaults - here since it's too late anyway. - -2006-01-03 Romain Francoise - - * startup.el (fancy-splash-tail, normal-splash-screen): - Update copyright year. - -2006-01-02 J.D. Smith - - * mouse.el (mouse-drag-track): Rename, from - `mouse-drag-region-1'. Includes optional argument required to - enable post-drag event processing (e.g. delete region keys). - Can be used without this argument to track a mouse region and operate - on it as soon as the drag completes. - (mouse-drag-region): Use `mouse-drag-track'. - -2006-01-02 Chong Yidong - - * cus-edit.el (custom-guess-name-alist, custom-guess-doc-alist): - Move to `custom-buffer' group. - - * cus-theme.el: Rewrite the Custom New Theme Mode interface. - (custom-new-theme-mode-map, custom-theme-insert-variable-marker) - (custom-theme-insert-face-marker, custom-theme-variable-menu) - (custom-theme-face-menu): New variables. - (custom-theme-add-variable, custom-theme-variable-action) - (custom-variable-reset-theme, custom-theme-delete-variable) - (custom-face-reset-theme, custom-theme-face-action) - (custom-theme-delete-face, custom-theme-merge-theme) - (custom-theme-add-face, custom-theme-visit-theme): New functions. - -2006-01-01 Chong Yidong - - * custom.el: Move Custom Themes commentary to start of theme code. - (custom-known-themes): Rename `standard' theme to `changed'. - (custom-push-theme): Caller no longer specifies what theme to use - when doing `reset'---the setting is simply removed from the theme. - Delete MODE from `theme-value' and `theme-settings' properties. - (custom-declare-theme): Ignore &rest args since we don't use them. - - (custom-loaded-themes): Delete variable. - (custom-theme-load-themes, custom-theme-loaded-p) - (custom-theme-value): Delete functions. - - (custom-declare-theme): Signal error on invalid theme names. - (provide-theme): custom-loaded-themes was deleted. - (load-theme): Load the file unconditionally. - (enable-theme): Call `load-theme' if theme is undefined. - (custom-enabled-themes): Only update value for successful loads. - (disable-theme): Complete from enabled themes when interactive. - (custom-variable-theme-value): Calculate theme value directly. - - (custom-theme-reset-variables, custom-reset-variables): Mark as - XEmacs compatibility functions. We don't actually use these. - - * cus-edit.el (custom-variable-state-set): - Use custom-variable-theme-value instead of custom-theme-value. - (custom-face-state-set): Rename `standard' theme to `changed'. - (custom-save-variables, custom-save-faces): Delete unneeded - references to custom-reset-variables. - (custom-save-resets): Delete function. - (custom-save-variables, custom-save-faces): MODE argument deleted. - (custom-save-variables, custom-save-faces): Ignore theme values. - - * cus-face.el (custom-theme-reset-faces): Mark as XEmacs - compatibility function. - -2006-01-01 Richard M. Stallman - - * cus-edit.el (Custom-set, Custom-save): Ask for confirmation. - (Custom-reset-current, Custom-reset-saved): Likewise. - (Custom-reset-standard): Show message if aborted. - (custom-mode): Doc fix, describing those commands. - - * mouse.el (mouse-drag-region-1): When following link via mouse-2, - put on event-kind property. - -2005-12-31 Chong Yidong - - * custom.el (provide-theme): Ban `user' theme name. - (custom-enabling-themes): New variable. - (enable-theme): Don't enable user if custom-enabling-themes is t. - (custom-enabled-themes): Make it a defcustom. - (custom-theme-recalc-face): No-op if face is undefined. - - * cus-edit.el (custom-button-mouse): New variable. - (custom-button-mouse): New face. - (custom-raised-buttons, custom-mode): Use it. - - * cus-theme.el (custom-new-theme-mode): Use custom-button-mouse. - -2005-12-31 Eli Zaretskii - - * progmodes/gud.el (gud-display-line): Support hl-line in the - source buffer. - -2005-12-31 Lennart Borgman (tiny change) - - * mouse.el (mouse-drag-window-above): Verify that the found window - overlaps with the given window in the horizontal dimension. - -2005-12-31 Eli Zaretskii - - * Makefile.in (cvs-update): New target. - - * makefile.w32-in (cvs-update): Ditto. - -2005-12-30 Chong Yidong - - * cus-theme.el (custom-new-theme-mode): Use cus-edit faces. - (custom-new-theme-mode-map): New variable. - -2005-12-30 Richard M. Stallman - - * custom.el (custom-load-themes): Function deleted. - - * cus-edit.el (custom-save-loaded-themes): Function deleted. - (custom-save-variables): Don't delete or add custom-load-themes call. - -2005-12-30 Stefan Monnier - - * cus-start.el: Add `visible-cursor'. - - * progmodes/flymake.el (flymake-copy-buffer-to-temp-buffer): Simplify. - (flymake-parse-output-and-residual): Remove `source-buffer' argument. - (flymake-process-filter): Switch to buffer before calling it instead. - (flymake-post-syntax-check, flymake-highlight-err-lines) - (flymake-delete-own-overlays, flymake-parse-err-lines) - (flymake-start-syntax-check, flymake-start-syntax-check-process) - (flymake-count-lines, flymake-parse-residual): - Remove constant buffer argument. - (flymake-start-syntax-check-for-current-buffer): Remove. - Update callers to use flymake-start-syntax-check instead. - (flymake-display-err-menu-for-current-line): - Remove unused var `mouse-pos'. - (flymake-restore-formatting): Comment out unused function. - (flymake-report-status, flymake-report-fatal-status): Remove buffer - argument, use current-buffer instead. Update callers. - -2005-12-30 Roland Winkler - - * textmodes/bibtex.el (bibtex-mode): Make completion-ignore-case - buffer-local because choose-completion-delete-max-match requires - that we set completion-ignore-case (i.e., binding via let is not - sufficient). - (bibtex-complete): Always set completion-ignore-case and - choose-completion-string-functions. The latter is needed because - choose-completion-string-functions keeps its value if we quit the - *Completions* buffer without requesting a completion. - -2005-12-30 Andreas Schwab - - * progmodes/cc-defs.el: Ignore errors from font-lock-compile-keywords. - -2005-12-30 Eli Zaretskii - - * jit-lock.el (jit-lock-chunk-size): Doc fix. - -2005-12-30 Juri Linkov - - * locate.el (locate-fcodes-file, locate-header-face) - * progmodes/delphi.el (delphi-other-face) - * progmodes/glasses.el (glasses-face): Add tag "None" to const nil. - - * paren.el (show-paren-match, show-paren-mismatch): Use existing - group `paren-showing-faces'. - - * net/goto-addr.el (goto-address-highlight-keymap): Fix docstring. - (goto-address): Fix docstring. - - * net/webjump.el (webjump-sample-sites): Update URLs. - - * textmodes/fill.el (fill-single-word-nobreak-p): Use `sentence-end'. - - * subr.el (cancel-change-group): Add listp around pending-undo-list. - -2005-12-29 Stefan Monnier - - * font-lock.el (font-lock-compile-keywords): Signal an error when - font-lock-set-defaults hasn't been called. - -2005-12-29 Luc Teirlinck - - * subr.el (noreturn, 1value): Doc fixes. - -2005-12-29 Roland Winkler - - * textmodes/bibtex.el (bibtex-text-in-field-bounds): Handle case - that assoc-string returns nil. - -2005-12-29 Roland Winkler - - * textmodes/bibtex.el (bibtex-entry-type-whitespace) - (bibtex-entry-type-str, bibtex-empty-field-re) - (bibtex-search-backward-string, bibtex-preamble-prefix) - (bibtex-search-entry, bibtex-enclosing-entry-maybe-empty-head): Remove. - (bibtex-any-valid-entry-type): New variable. - (bibtex-parse-field-name): Simplify. - (bibtex-parse-string, bibtex-search-forward-string): New arg empty-key. - (bibtex-preamble-prefix): Include left delimiter. - (bibtex-search-forward-field, bibtex-search-backward-field): - Allow unbounded search past entry boundaries (required by bibtex-pop). - (bibtex-text-in-field-bounds): Use push. - (bibtex-text-in-field): Do not use bibtex-narrow-to-entry. - (bibtex-parse-preamble, bibtex-valid-entry) - (bibtex-beginning-first-field): New functions. - (bibtex-skip-to-valid-entry): Use bibtex-valid-entry. Fix regexp. - (bibtex-map-entries): Fix docstring. - (bibtex-flash-head): New arg prompt. Simplify. - (bibtex-enclosing-field): Include code of bibtex-inside-field. - (bibtex-insert-kill): Simplify. Always insert text past the - current field or entry. - (bibtex-format-entry): Use bibtex-parse-field. - (bibtex-pop): Use bibtex-beginning-of-entry and - bibtex-end-of-entry to initiate the search. Insert empty field if - we found ourselves. - (bibtex-print-help-message): New args field and comma. - Handle entry keys. - (bibtex-make-field): Use bibtex-beginning-of-entry. - (bibtex-end-of-entry): Use bibtex-valid-entry. Recognize any - invalid entry. - (bibtex-validate): Use bibtex-valid-entry and bibtex-parse-string. - Handle preambles. Simplify code for thorough test. - (bibtex-next-field, bibtex-find-text, bibtex-find-text-internal): - New arg comma. Handle entry heads. - (bibtex-remove-OPT-or-ALT, bibtex-remove-delimiters) - (bibtex-kill-field, bibtex-copy-field-as-kil, bibtex-empty-field): - New arg comma. - (bibtex-kill-entry): Use bibtex-any-entry-maybe-empty-head. - (bibtex-fill-field): Simplify. - (bibtex-fill-entry): Use bibtex-beginning-first-field and - bibtex-parse-field. - (bibtex-convert-alien): Do not wait before calling bibtex-validate. - (bibtex-complete): Use bibtex-parse-preamble. - -2005-12-29 Nick Roberts - - * progmodes/gdb-ui.el (gdb-tooltip-print, gdb-tooltip-print-1): - Display name of expression instead of convenience variable. - (gdb-post-prompt): Only call gdb-get-changed-registers if needed. - - * progmodes/gud.el (gud-tooltip-dereference): Rename from - toggle-gud-tooltip-dereference. - (gud-tooltip-print-command): Move concatenation of "*" to expr to... - (gud-tooltip-tips): ...here when dereferencing. - -2005-12-28 Bill Wohler - - * simple.el (mh-e-user-agent): Move to mh-e/mh-comp.el and autoload. - -2005-12-28 Stefan Monnier - - * vc.el (vc-annotate-display): Replace optional arg `color-map' with - compulsory arg `ratio'. Inline body of vc-annotate-time-span. - (vc-annotate-display-autoscale): Adjust call. - (vc-annotate-display-default): Adjust call. Make arg compulsory. - Fix interactive spec. - (vc-annotate-time-span): Remove. - (vc-annotate-oldest-in-map): Rename from vc-annotate-car-last-cons. - (vc-annotate-mode-menu, vc-annotate-display-autoscale) - (vc-annotate-display-select): Use new name. - - * vc.el (vc-annotate-mode-map): Remove obsolete binding. - (vc-annotate-mode-menu): Remove left-over redundant declaration. - Correct the construction of span entries. Simplify. - (vc-annotate-display-select): Fix the nil case. - (vc-annotate): Remove obsolete (and now broken) code. - (vc-annotate-extract-revision-at-line): Remove obsolete code. - (vc-annotate-time-span): Remove unused arg `quantize'. Simplify. - -2005-12-28 Luc Teirlinck - - * subr.el (lazy-completion-table): Correct typo in docstring. - - * startup.el (command-line): Use `custom-reevaluate-setting' for - `send-mail-function'. - - * mail/sendmail.el (send-mail-function): Autoload the standard-value. - -2005-12-05 Ralf Angeli - - * mail/smtpmail.el (smtpmail-try-auth-methods): - Send credentials together with "AUTH PLAIN" command. - -2005-12-27 Richard M. Stallman - - * mouse.el (mouse-drag-region-1): When remapping mouse-1 to - mouse-2, go back to previously selected window, so it's selected - when mouse-2 command runs. - -2005-12-27 Juri Linkov - - * descr-text.el (describe-text-sexp): Use square brackets for - button [Show] to distinguish it from the property value `show'. - (describe-property-list): Use `insert-text-button' with - `help-face' type instead of putting face in quotes, because button - is not created automatically for a list of faces. - (describe-text-properties-1): Put button-type value in quotes to - distinguish from plain text "button". - (describe-char): Display code point values in hex. Don't use - `symbol-name' for `current-input-method' because it is a string. - Use `insert-text-button' with `help-face' type instead of putting - hardcoded face in quotes, because button is not created automatically. - -2005-12-27 Richard M. Stallman - - * progmodes/glasses.el (glasses-face): More specific custom type. - - * files.el (set-visited-file-name): Doc fix. - - * textmodes/flyspell.el (flyspell-external-point-words): - Use local var buffer-scan-pos to advance scan for next misspelling. - Advance it only after we find the misspelling. - -2005-12-27 Agustin Martin - - * textmodes/flyspell.el (flyspell-external-point-words): - New criteria for finding the misspelling in the buffer. - -2005-12-27 Nick Roberts - - * help-mode.el (help-insert-string): Set help-xref-stack-item - rather than call help-setup-xref. - - * descr-text.el (describe-char): Revert previous changes for - optional buffer argument. - -2005-12-27 Juri Linkov - - * help-mode.el (help-insert-string): New function. Save buffer - contents in cases where it is impossible to recompute the old contents. - - * descr-text.el (describe-char): Set help-xref-stack-item - explicitly after buffer has been generated. - -2005-12-27 Jan Dj,Ad(Brv - - * cus-start.el (all): Add x-gtk-show-hidden-files. - -2005-12-26 Richard M. Stallman - - * replace.el (perform-replace): Calculate match-again - before skipping read-only matches. - - * paren.el (paren-showing-faces): New group. - (show-paren-match, show-paren-mismatch): Move to that group. - - * button.el (button): Put into group `basic-faces'. - - * progmodes/make-mode.el: Remove faces from group `faces'. - - * apropos.el (apropos, apropos-value): Doc fix. - (apropos-documentation): Doc fix. - -2005-12-26 Stefan Monnier - - * subr.el (lazy-completion-table): Remove argument `args'. - - * textmodes/bibtex.el (bibtex-strings, bibtex-reference-keys): - Don't use the `args' argument of lazy-completion-table. - -2005-12-26 Nick Roberts - - * descr-text.el (describe-char): Add optional argument for buffer. - Set buffer appropriately. Call help-setup-xref. - Suggested by Stefan Monnier. - -2005-12-26 Juri Linkov - - * descr-text.el: Require `help-fns' at runtime. Don't require - `button' for byte compilation. - (describe-text-widget): Add `help-echo' for first button. - Use `help-info' for second. - (describe-property-list): Use `help-argument-name' instead of `italic'. - (describe-text-category): Add prompt to interactive spec. - Call `help-setup-xref'. - (describe-char): Use `help-character-set'. Add `help-echo' for - code point. Use `help-input-method'. Remove superfluous insert. - -2005-12-25 Richard M. Stallman - - * progmodes/cc-defs.el (c-emacs-features): Do parse-partial-sexp - at point, in case of narrowing. - - * progmodes/delphi.el (delphi-other-face): Allow nil in type. - - * locate.el (locate-header-face): Allow nil in type. - - * progmodes/cpp.el (cpp-face-none-list): Use cpp-face instead of face. - -2005-12-25 Romain Francoise - - * battery.el (battery-linux-proc-acpi): Also try - `/proc/acpi/thermal_zone/THM0/temperature'. - -2005-12-24 Chong Yidong - - * custom.el (custom-push-theme): Fix docstring. - - * cus-edit.el (custom-variable-set, custom-variable-save) - (custom-variable-save): Custom-quote widget values. - (customize-save-variable): Fix custom-push-theme call. - -2005-12-24 Eli Zaretskii - - * w32-fns.el (w32-batch-update-autoloads): New function. - - * makefile.w32-in (autoloads, $(lisp)/mh-e/mh-loaddefs.el): - Use w32-batch-update-autoloads, and don't setq generated-autoload-file - from the command line. - -2005-12-23 Chong Yidong - - * custom.el (custom-push-theme): Clarify docstring. VALUE nil for - reset means to remove setting from theme entirely. Don't keep - expanding theme-settings list; delete old entries if necessary. - - * cus-edit.el (custom-buffer-create-internal): Move "Erase - customization" button one line up. - (custom-themed): New face. - (custom-magic-alist): New value, THEMED, for theme settings. - (custom-variable-state-set, custom-face-state-set): - Check theme-value instead of saved-value. - (custom-variable-reset-standard, custom-face-reset-standard): - Remove theme setting entirely. Recalculate new values. - (custom-variable-set, custom-variable-set) - (custom-variable-reset-saved, custom-variable-reset-backup) - (custom-face-set, custom-face-reset-saved): Update `user' theme. - (custom-variable-save): Fix typos. - -2005-12-23 Juri Linkov - - * emacs-lisp/edebug.el (edebug-all-defs, edebug-all-forms): - Add autoload cookies. - (edebug-outside-d-c-i-n-s-w): New variable. - (edebug-display, edebug-outside-excursion): Use it to save the - original value of default-cursor-in-non-selected-windows. - Set default-cursor-in-non-selected-windows to t while Edebug - is active. - (edebug-mode, edebug-eval-mode): Doc fix. - - * mouse.el (mouse-choose-completion): Replace `buffer-substring' - with `buffer-substring-no-properties' to remove common substring - highlighting. - - * info.el (info-other-window, info): Rename function argument - `file' to `file-or-node'. - (Info-complete-menu-item): Use local variable `complete-nodes' to - keep the global value of `Info-complete-nodes' unchanged for - subsequent completions. - (info-tool-bar-map): Put `Info-index' icon just before `Info-search'. - - * simple.el (get-next-valid-buffer, last-buffer) - (next-error-buffer-p, next-error-find-buffer) - (minibuffer-history-sexp-flag): Doc fix. - - * savehist.el (savehist-mode-hook): Add `:group'. - - * log-view.el: Call autoload for vc-find-version. - (log-view-current-file): Adjust subgroup numbers. - (log-view-current-tag): Add `length'. - -2005-12-23 Richard M. Stallman - - * vc.el (vc-annotate-car-last-cons): Defn moved up. - -2005-12-23 Juri Linkov - - * hi-lock.el (hi-lock-archaic-interface-message-used) - (hi-lock-archaic-interface-deduce, hi-lock-mode): Doc fix. - (hi-lock-mode): Display "Hi" in the mode line only when - hi-lock-interactive-patterns or hi-lock-file-patterns is non-nil. - (hi-lock-write-interactive-patterns): - Use hi-lock-file-patterns-prefix instead of hard-coded "Hi-lock". - (hi-lock-set-pattern, hi-lock-set-file-patterns) - (hi-lock-font-lock-hook): Set 3rd arg `how' of - font-lock-add-keywords to t. - -2005-12-23 David Koppelman - - * hi-lock.el (hi-lock-highlight-range): New variable. - (hi-lock-mode, hi-lock-unface-buffer): Call font-lock-fontify-buffer - only if font-lock-fontified is non-nil. Remove overlays. - (hi-lock-set-pattern): Call font-lock-fontify-buffer if - font-lock-fontified is non-nil, otherwise use overlays (instead of - text properties). - (hi-lock-string-serialize-hash, hi-lock-string-serialize-serial): - New variables. - (hi-lock-string-serialize): New function. - -2005-12-23 Jan Dj,Ad(Brv - - * menu-bar.el (menu-find-file-existing): New function. - (menu-bar-file-menu): Use menu-find-file-existing for Open. - - * tool-bar.el (tool-bar-setup): Open changed to menu-find-file-existing. - -2005-12-22 Stefan Monnier - - * vc.el: Remove unnecessary leading * in docstrings. - (vc-annotate-mode-map): Move initialization into declaration. - (vc-static-header-alist): Nitpick on the regexp. - (vc-default-init-version): New fun. - (vc-register): Use it. - (vc-insert-headers): Use dolist. - (vc-annotate-get-backend): Remove unused function. - (vc-annotate-add-menu): Remove. Build the menu directly at toplevel. - (vc-annotate-mode): Remove corresponding call. - (vc-annotate-car-last-cons): Simplify. - (vc-annotate-buffers): Remove var. - (vc-annotate-backend): Make it buffer-local. - (vc-annotate): Move the interaction to the interactive spec. - Add a `buf' argument. - (vc-annotate-warp-version): Use this new `buf' argument to avoid - killing&creating a vc-annotate buffer, which is very disruptive when - the buffers are shown in dedicated frames. - -2005-12-23 Nick Roberts - - * descr-text.el: Add FSF as maintainer. - (describe-text-mode, describe-text-mode-map) - (describe-text-mode-hook, describe-text-done): Delete. Use normal - help-mode. - (describe-text-widget, describe-text-sexp) - (describe-property-list, describe-text-category) - (describe-text-properties, describe-text-properties-1) - (describe-char): Use help buttons instead of widgets. - (describe-char-unicodedata-file): Make URL link in doc string. - -2005-12-22 Richard M. Stallman - - * cus-edit.el (custom-variable-prompt): Say "variable" in prompt. - (custom-buffer-create-internal): Reword the top-of-buffer help intro. - Don't include buttons that write a file when there's no file. - (custom-variable-menu, custom-face-menu, custom-group-menu): - Don't include commands that write a file when there's no file. - (customize-browse): Reword the top-of-buffer help intro. - (custom-buffer-create-internal): Fix previous change. - (customize-changed-options-previous-release): Prev release is 21.1. - (customize-changed-options): Doc fix. - (customize-changed): New alias. - (custom-reset-menu, custom-magic-alist, Custom-mode-menu): - Say "standard values". - (Custom-reset-standard): Doc fix. - (custom-face-reset-standard): Doc fix. - -2005-12-22 Stefan Monnier - - * font-lock.el (font-lock-default-fontify-buffer): Try and set-defaults - even if font-lock-mode is non-nil since it may be t without having - turned on font-lock-mode-internal. - (font-lock-choose-keywords): Minor optimization. - (font-lock-add-keywords, font-lock-remove-keywords) - (font-lock-set-defaults): Don't call make-local-variable on a variable - that we know to already be local. - -2005-12-22 Katsumi Yamaoka - - * emacs-lisp/lisp.el (lisp-complete-symbol): Don't print progress - messages if in the minibuffer. - -2005-12-21 Stefan Monnier - - * textmodes/flyspell.el (flyspell-check-word-p): Don't quote - in a RE. - (tex-mode-flyspell-verify, flyspell-get-word) - (flyspell-external-point-words): Don't use point-min/max uselessly. - - * emacs-lisp/lisp.el (lisp-complete-symbol): Mostly undo the change - by Kevin Rodgers. Instead, just hide the completions buffer if we - don't need to show it. - -2005-12-21 Luc Teirlinck - - * wid-edit.el (file, directory): Doc fixes for the `define-widget's. - -2005-12-21 Stefan Monnier - - * emacs-lisp/lisp.el (lisp-complete-symbol): Don't call - delete-windows-on with an inexistent buffer. - -2005-12-22 Nick Roberts - - * progmodes/gud.el (gud-tooltip-modes, gud-tooltip-display): - Delete defcustom variable :tag names. - -2005-12-20 Stefan Monnier - - * log-view.el (log-view-file-re, log-view-message-re): Use shy groups. - (log-view-font-lock-keywords): Ajust subgroup numbers. - (log-view-current-tag): Don't hard code the number of subgroups. - -2005-12-20 Juri Linkov - - * tooltip.el (tooltip): Move defgroup before define-minor-mode. - (tooltip-x-offset, tooltip-y-offset): Doc fix. - - * menu-bar.el (menu-bar-menu-frame-live-and-visible-p) - (menu-bar-non-minibuffer-window-p): Instead of checking - display-multi-frame-p, use selected-frame when menu-updating-frame - is nil. - -2005-12-20 Stuart Herring (tiny change) - - * align.el (align-rules-list): Use [ \t] instead of \s- - for column separators in text mode. - -2005-12-20 Nick Roberts - - * help-mode.el (help-customize-variable, help-customize-face): - Don't pop help-xref-stack as help-follow no longer pushes - anything on to it. - -2005-12-20 Carsten Dominik - - * textmodes/org.el (org-agenda-custom-commands): New option. - (org-agenda): Offer custom commands on splash screen. - (org-make-tags-matcher): Parser for Boolean logic added. - (org-agenda-set-tags): New command. - (org-agenda-menu, org-agenda-mode-map): Add `org-agenda-set-tags'. - (org-set-tags): Efficiency improvements. - (org-auto-align-tags): New option. - (org-todo, org-demote, org-promote): Realign tags. - (org-tags-completion-function): Use also "&" and "|" as separators. - (org-org-menu): Agenda commands simplified. - -2005-12-19 Luc Teirlinck - - * cus-edit.el (customize-apropos, customize-apropos-options): - Docstring changes. - - * font-lock.el (font-lock): Add tags to the links in the defgroup. - -2005-12-19 Chong Yidong - - * longlines.el (longlines-mode): Wrap while widened. - (longlines-decode-region, longlines-encode-region): Compute max - just once. - -2005-12-19 YAMAMOTO Mitsuharu - - * cus-edit.el (mac): New group. - - * cus-start.el (all): Add user options in macterm.c. Add test for - Mac-related built-ins. Fix test for GTK-related built-ins. - - * term/mac-win.el (mac-handle-language-change) - (mac-ae-open-documents, mac-ae-get-url, mac-services-open-file) - (mac-services-open-selection, mac-services-mail-selection) - (mac-services-mail-to, mac-services-insert-text) - (mac-dispatch-apple-event): Add docstrings. - (x-get-selection, mac-select-convert-to-string): Select coding - system from `utf-16be' and `utf-16le' using `byteorder'. - -2005-12-18 Stefan Monnier - - * subr.el (lazy-completion-table): Don't be fooled if the var holds - a "list" (lambda ...) rather than a real completion list. - - * emacs-lisp/cl-extra.el (cl-macroexpand-all): Fix code-walk for - lexical-let when encountering ((lambda (...) ...) ...). - -2005-12-17 Chong Yidong - - * progmodes/sh-script.el (sh-mode): - * language/ethio-util.el (ethio-fidel-to-sera-mail-or-marker): - * textmodes/picture.el (picture-mode): Update docstrings. - -2005-12-17 Eli Zaretskii - - * makefile.w32-in (autoloads, custom-deps): Warn that parts of - commands enclosed in $(ARGQUOTE)s should not be split between two - lines, as that will break with GNU Make >3.80, when sh.exe is used - and arg quoting is with '..'. - (autoloads): Don't break the quoted --eval expression between - several lines. - -2005-12-17 Chong Yidong - - * emacs-lisp/edebug.el (edebug-safe-prin1-to-string): - Capture error from printing circular structures. - -2005-12-17 Martin Rudalics - - * wid-edit.el (widget-checkbox-action): Clear undo info. - -2005-12-16 Bill Wohler - - * menu-bar.el (kill-this-buffer): Set a good example by using menu - bar, not menubar in comment. - -2005-12-16 Stefan Monnier - - * progmodes/cc-engine.el (c-after-change-check-<>-operators): - After-change-functions should not clobber the match data. - -2005-12-16 Juri Linkov - - * simple.el (choose-completion): Use `buffer-substring-no-properties' - instead of `buffer-substring'. - (completion-common-substring): Doc fix. - (completion-setup-function): Use minibuffer-completion-contents - instead of minibuffer-contents. Don't set common-string-length - initially. Remove special handling of partial-completion-mode. - Move computation of completion-base-size into one cond. - Call completion-base-size-function in mainbuf. In computation of - completion-base-size for file name completion don't move point to - the end of the minibuffer. Move computation of common-string-length - into one cond. Start putting faces only when common-string-length>=0. - Add condition to put completions-common-part when - common-string-length>0. - - * complete.el (PC-do-completion): Remove `(equal (point) beg)' to - place point at the first different character in the minibuffer - even if this position is at the beginning of the minibuffer. - - * info.el (Info-read-node-name-1): In completion-base-size-function's - lambda return 1 if common-substring or minibuffer-completion-contents - starts with (, and 0 otherwise. - - * emacs-lisp/crm.el (crm-minibuffer-completion-help): - Use `crm-current-element' for second arg of `display-completion-list'. - -2005-12-16 Klaus Zeitler - - * files.el (set-auto-mode): Look for an interpreter specified on - the first line also if search for mode specification succeeded, - but the mode is not known. - -2005-12-16 Carsten Dominik - - * textmodes/org.el (org-tags-match-list-sublevels): New option. - (org-open-at-point): Implement tag searches as links. - (org-fit-agenda-window, org-get-buffer-tags, org-get-tags) - (org-make-tags-matcher, org-scan-tags, org-activate-tags): New funs. - (org-tags-sparse-tree, org-tags-view, org-set-tags) - (org-agenda-dispatch): New commands. - (org-use-tag-inheritance, org-tags-column): New options. - (org-tab-follows-link, org-return-follows-link): New options. - (org-tags): New customize group. - (org-start-icalendar-file): Get local time zone. - (org-tags-completion-function): New function. - (org-set-font-lock-defaults): Make sure links will also be - highlighted inside headlines. - -2005-12-16 Mark Plaksin (tiny change) - - * term.el (term-emulate-terminal): - Let term-handle-ansi-terminal-messages override what Bash says about - its current directory. - -2005-12-16 K,Aa(Broly L$,1 q(Brentey - - * bindings.el (last-buffer): Move to simple.el. - * simple.el (last-buffer): Move here. - (get-next-valid-buffer): New function. - (next-buffer): Use frame-local buffer list, maintain buried buffer list. - (prev-buffer): Ditto. Rename to `previous-buffer'. - - * menu-bar.el (menu-bar-update-buffers): Update uses of `prev-buffer'. - * bindings.el (global-map): Ditto. - -2005-12-15 Luc Teirlinck - - * cus-edit.el: Introductory comment change. - (custom-magic-alist): Change message string for the `rogue' state. - -2005-12-15 Richard M. Stallman - - * tooltip.el: Delete defcustom variable :tag names. - - * complete.el (partial-completion-mode): Doc fix. - - * textmodes/flyspell.el (flyspell-external-point-words): - Use save-excursion to ensure we don't move backward in the - search loop, not even one character. - (flyspell-delete-all-overlays): Use remove-overlays directly. - - * textmodes/ispell.el (ispell-current-personal-dictionary): New var. - (ispell-start-process): Set that variable. - Clear ispell-buffer-local-name. - (ispell-internal-change-dictionary): - Set ispell-current-dictionary after killing process. - (ispell-buffer-local-dict): - Don't set spell-personal-dictionary after killing process. - (ispell-buffer-local-words): Don't clear out ispell-buffer-local-name. - (ispell-tex-skip-alists, ispell-html-skip-alists) - (ispell-skip-region-alist): Mark as risky. - - * net/newsticker.el (newsticker--retrieval-timer-list) - (newsticker--display-timer, newsticker-running-p) - (newsticker-ticker-running-p): Definitions moved up. - -2005-12-16 Nick Roberts - - * progmodes/gdb-ui.el (gdb-many-windows): Echo new state in minibuffer. - -2005-12-15 David Ponce - - * recentf.el (recentf-dialog-goto-first): Fix missing error condition. - (recentf-edit-list, recentf-open-files): Signal an error when - there is no recent file. - -2005-12-14 Lennart Borgman - - * textmodes/texinfmt.el (texinfo-format-region): Set buffer to - read-only except for texinfo-format-region evaluation. - -2005-12-14 Richard M. Stallman - - * vc.el (vc-default-previous-version, vc-default-next-version) - (vc-do-command): Doc fixes. - -2005-12-14 Roland Winkler - - * textmodes/bibtex.el (bibtex-expand-strings) - (bibtex-autokey-expand-string, bibtex-name-part) - (bibtex-entry-type-whitespace, bibtex-entry-type-str) - (bibtex-any-entry-maybe-empty-head, bibtex-string-type) - (bibtex-preamble-prefix, bibtex-string-empty-key): New variables. - (bibtex-entry-type, bibtex-entry-head): Match only valid entries. - (bibtex-entry-postfix, bibtex-known-entry-type-re) - (bibtex-valid-entry-re, bibtex-any-valid-entry-re) - (bibtex-valid-entry-whitespace-re, bibtex-empty-field-re) - (bibtex-field-name-for-parsing, bibtex-remove-delimiters-string) - (bibtex-beginning-of-last-entry): Remove. - (bibtex-parse-field-name): Use bibtex-field-name. Issue error - message if comma is missing but buffer is read-only. - (bibtex-parse-field-text): Handle whitespaces at the end of field - text. Return 3-element list with beginning and end of field text - and end of field. - (bibtex-end-of-text-in-field, bibtex-end-of-field): Change accordingly. - (bibtex-parse-field): Remove arg name. Use bibtex-field-name. - (bibtex-search-forward-field, bibtex-search-backward-field): - Search always delimited by limits of entry. Use more efficient - search algorithms. - (bibtex-name-in-field): Use bibtex-start-of-name-in-field and - bibtex-end-of-name-in-field. - (bibtex-text-in-field-bounds): Handle BibTeX strings when - extracting the content of a field. - (bibtex-text-in-field): Use search limits. - (bibtex-parse-string-prefix): Handle empty string keys based on - bibtex-string-empty-key. - (bibtex-parse-string): Fix docstring. - (bibtex-text-in-string): Use bibtex-text-in-field-bounds. - (bibtex-preamble-prefix, bibtex-strings): New functions. - (bibtex-skip-to-valid-entry): Include preceding whitespace in - BibTeX entries (consistent with other BibTeX functions). - (bibtex-map-entries): Use bibtex-skip-to-valid-entry. - (bibtex-search-entry): Fix docstring. Simplify. - (bibtex-flash-head, bibtex-complete-string-cleanup) - (bibtex-count-entries, bibtex-sort-buffer): Simplify. - (bibtex-beginning-of-first-entry): Use bibtex-skip-to-valid-entry. - (bibtex-parse-entry): New optional arg content. - (bibtex-format-entry, bibtex-autofill-entry, bibtex-url): Use it. - Use bibtex-text-in-field-bounds. - (bibtex-print-help-message): Handle BibTeX strings and preambles. - (bibtex-end-of-entry): Use bibtex-preamble-prefix and - bibtex-parse-string-postfix. - (bibtex-find-text-internal): New function. - (bibtex-remove-delimiters): Use it. - (bibtex-find-text): Use it. New optional arg help. - (bibtex-complete): Handle BibTeX string and preamble entries. - (bibtex-Preamble): Fix order of closing delimiters. - -2005-12-14 Stefan Monnier - - * vc.el (vc-default-revert): New fun. - - * vc-mcvs.el (vc-mcvs-revert): Fix call to vc-default-revert. - -2005-12-14 Romain Francoise - - * font-lock.el (font-lock-keywords-alist): Rename `append' to `how'. - (font-lock-add-keywords, font-lock-update-removed-keyword-alist): - (font-lock-remove-keywords): Likewise. - -2005-12-14 Juri Linkov - - * log-view.el (log-view-diff): Doc fix. - - * isearch.el (isearch-query-replace): Use (mark) instead of - isearch-opoint if mark is active in transient-mark-mode. - -2005-12-14 Aaron S. Hawley - - * isearch.el (isearch-query-replace): Check for isearch-other-end. - -2005-12-14 Per Abrahamsen - - * progmodes/cpp.el (cpp-face): New widget. - (cpp-known-face, cpp-unknown-face, cpp-edit-list): Use it. - -2005-12-14 Juri Linkov - - * help-macro.el (make-help-screen): Bind `inhibit-read-only' to t - around `erase-buffer' and `insert'. - - * descr-text.el (describe-text-properties): Replace buffer name - "*Help-2*" with "*Help*<2>". - (describe-char): Add functions print-help-return-message, - toggle-read-only. Use help-setup-xref with nil to not store - describe-char in help-xref-stack. Use help-make-xrefs to - make [back] button. - - * desktop.el (desktop-minor-mode-table): Add vc-dired-mode with nil. - - * wdired.el (wdired-old-point): New internal variable. - (wdired-change-to-wdired-mode): Set it buffer-locally. - (wdired-abort-changes): Restore point after aborting changes. - -2005-12-13 Stefan Monnier - - * vc.el (vc-do-command): Add a new value t for okstatus. - - * vc-svn.el (vc-svn-registered): Use it to avoid popping up a spurious - frame in case of errors. - -2005-12-13 Jan Dj,Ad(Brv - - * menu-bar.el (menu-bar-showhide-fringe-menu): Move "On the Right" - so it comes after "On the Left" in the menu. - -2005-12-12 Luc Teirlinck - - * cus-edit.el (customize-apropos, customize-apropos-options) - (customize-apropos-faces, customize-apropos-groups): Doc fixes. - -2005-12-12 Bill Wohler - - * vc-svn.el (vc-svn-registered): Fix problem of visiting - non-writable Subversion-controlled files by saving window - configuration before calling vc-do-command. vc-do-command calls - pop-to-buffer on error which is unexpected during registration. - -2005-12-12 Jay Belanger - - * calc/README: Update the summary of changes. - -2005-12-12 Stefan Monnier - - * descr-text.el (describe-char): Rework last fix to solve the problem - is the same way it's solved for everything else in that function - (i.e. by extracting the info before setting up the *Help* buffer). - -2005-12-12 Kim F. Storm - - * subr.el (version-regexp-alist): Allow space as separator before - non-numeric part, e.g. "1.0 alpha". - (version-to-list): Interpret .X.Y version as 0.X.Y version. - -2005-12-12 Carsten Dominik - - * textmodes/org.el (org-agenda, org-timeline, org-todo): - Implement Logging and the keep-modes setting. - (org-get-category): Make sure a string is returned. - (org-log-done): New function. - (org-log-done, org-closed-string): New options. - -2005-12-12 Jan Dj,Ad(Brv - - * tooltip.el (tooltip-y-offset): Change default to 20. - -2005-12-12 Richard M. Stallman - - * mouse.el (mouse-drag-vertical-line): Use adjust-window-trailing-edge. - - * frame.el (display-hourglass): Doc fix. - - * help.el (help-for-help-internal): Simplify entry for `a'. - - * info.el (Info-on-current-buffer): Doc fix. - (info-insert-file-contents): Don't test (featurep 'jka-compr). - - * startup.el (inhibit-splash-screen): Make this the real name. - (inhibit-startup-message): Make this the alias. - (command-line): Find only simple.el, and use its directory - to fill in other preloaded files' names. - (command-line): Deactivate the mark if deactivate-mark is set. - - * international/mule.el (load-with-code-conversion): - Bind deactivate-mark. - - * progmodes/compile.el (compilation-error-regexp-alist): Doc fix. - -2005-12-11 Luc Teirlinck - - * cus-edit.el (customize-apropos): Avoid listing an option more - than once under different aliases. No longer list user options - that are not defined with defcustom (unless a prefix arg is given). - Doc fix. - (customize-apropos-options): Doc fix. - -2005-12-11 Juri Linkov - - * frame.el (set-background-color, set-foreground-color) - (set-cursor-color, set-mouse-color, set-border-color): - Add explicit prompts to read colors by `facemenu-read-color'. - (show-trailing-whitespace, blink-cursor-delay) - (blink-cursor-interval, display-hourglass, hourglass-delay): - Remove tags. - (display-hourglass, hourglass-delay): Doc fix. - (cursor-in-non-selected-windows): Capitalize words in tag. - - * faces.el (frame-background-mode): Replace `choice-item' keywords - with `const' to not make [default] button. Change default value tag - from `default' to `automatic'. Doc fix. - (trailing-whitespace) : Change group `whitespace' to - `whitespace-faces'. - -2005-12-11 Richard M. Stallman - - * buff-menu.el (Buffer-menu-sort-column): Not a user variable. - -2005-12-11 YAMAMOTO Mitsuharu - - * term/mac-win.el: Create keymap for mac-apple-event-map. - -2005-12-11 Nick Roberts - - * tooltip.el (tooltip-mode): Move to start of file so that it - appears at top of customize buffer. - - * progmodes/gud.el (gud-tooltip-modes, gud-tooltip-display): - Add the gud groupname. - (gud-tooltip-mode): Add the tooltip groupname. - (gud-tooltip-echo-area): Add the gud groupname. Remove tag to - avoid conflict with tooltip-use-echo-area. - -2005-12-10 Romain Francoise - - * help.el (help-for-help-internal): Add `r' in doc string. - -2005-12-10 Johan Bockg,Ae(Brd - - * align.el (align-regexp, align-highlight-rule): - Use region-beginning and region-end instead of point and mark, so that - repetition (with `repeat-complex-command') recomputes the region - bounds. - -2005-12-10 Lennart Borgman - - * window.el (bw-get-tree, bw-get-tree-1, bw-find-tree-sub) - (bw-find-tree-sub-1, bw-l, bw-t, bw-r, bw-b, bw-dir, bw-eqdir) - (bw-refresh-edges, bw-adjust-window, bw-balance-sub): New functions. - (balance-windows): Rewrite using the above new functions. - -2005-12-10 David Koppelman - - * hi-lock.el (hi-lock-mode): Rename from hi-lock-buffer-mode; - react if global-hi-lock-mode seems intended. - (global-hi-lock-mode): Renamed from hi-lock-mode. - (hi-lock-archaic-interface-message-used) - (hi-lock-archaic-interface-deduce): New variables. - (turn-on-hi-lock-if-enabled, hi-lock-line-face-buffer) - (hi-lock-face-buffer, hi-lock-face-phrase-buffer) - (hi-lock-find-patterns, hi-lock-font-lock-hook): - Replace hi-lock-buffer-mode with hi-lock-mode. - -2005-12-10 Kevin Rodgers (tiny change) - - * emacs-lisp/lisp.el (lisp-complete-symbol): Regenerate the - completion list, even after a partial completion has been - inserted in the current buffer. If there are more than 1 - completion, redisplay the *Completions* buffer; if the - completion is unique, delete the *Completions* window. - -2005-12-10 Eli Zaretskii - - * mail/rmail.el (rmail-next-same-subject): Handle multiple "Re: " - strings and long subject lines that were broken into multiple - lines at arbitrary places. Handle subjects that have "Re: " in - the middle. - -2005-12-10 John W. Eaton - - * emacs/octave-mod.el (octave-electric-space): Don't indent - comments or strings if octave-auto-indent is nil. - -2005-12-10 YAMAMOTO Mitsuharu - - * term/mac-win.el: Require url when compiling. - Call mac-process-deferred-apple-events after loading init files. - (mac-apple-event-map): New defvar. Define event handlers in it. - (core-event, internet-event): New Apple event class symbols. - (open-application, reopen-application, open-documents) - (print-documents, open-contents, quit-application) - (application-died, show-preferences, autosave-now, get-url): - New Apple event ID symbols. - (about): New HICommand ID symbol. - (mac-event-spec, mac-event-ae): New macros. - (mac-ae-parameter, mac-ae-list, mac-bytes-to-integer) - (mac-ae-selection-range, mac-ae-text-for-search) - (mac-ae-open-documents, mac-ae-text, mac-ae-get-url): New functions. - (mac-application-menu-map): Remove keymap. Handlers for HICommand - and Services menu events are now defined in mac-apple-event-map. - (mac-drag-n-drop): Remove selection range handling. - -2005-12-10 Kenichi Handa - - * simple.el (zap-to-char): - * isearch.el (isearch-process-search-char): Translate CHAR by - translation-table-for-input. - -2005-12-09 Chong Yidong - - * foldout.el (foldout-exit-fold): Properly hide subtree. - -2005-12-09 Reiner Steib - - * files.el (save-buffer): - * international/ucs-tables.el (ucs-set-table-for-input): - * mail/mail-extr.el (mail-extract-address-components): - * mail/sendmail.el (mail-mode): Reformat doc string. - -2005-12-09 Juri Linkov - - * isearch.el (isearch-highlight): Change main overlay priority - from 1 to 1001. Simplify. - (isearch-lazy-highlight-update): Change lazy overlay priority - from 0 to 1000. - - * replace.el (replace-highlight): Change overlay priority from - 1 to 1001. - - * textmodes/ispell.el (ispell-highlight-spelling-error-overlay): - Change overlay priority from 1 to 1001. Reuse existing overlay. - - * compare-w.el (compare-windows-highlight): Change overlay - priority from 1 to 1000. - - * menu-bar.el (menu-bar-edit-menu): Add listp around - pending-undo-list to disable menu item "undo" when pending - undo list is empty. - - * locate.el (locate): Disable undo in *Locate* buffer. - -2005-12-09 Kim F. Storm - - * mail/smtpmail.el (smtpmail-via-smtp): Disable undo in SMTP buffer. - -2005-12-09 David Ponce - - * recentf.el: Improvement of the menu code. - (recentf-enabled-p): Move before first use. Use `kill-emacs-hook' - instead of menu hook. - (recentf-show-menu, recentf-hide-menu): New functions. - (recentf-menu-customization-changed, recentf-mode): Use them. - (recentf-menu-action, recentf-max-menu-items) - (recentf-menu-open-all-flag, recentf-menu-append-commands-flag) - (recentf-arrange-by-rule-others) - (recentf-arrange-by-rules-min-items) - (recentf-arrange-by-rule-subfilter): Don't use - `recentf-menu-customization-changed'. - (recentf-arrange-rules): Likewise. Accept functions to compute - sub-menu titles. - (recentf-menu-filter): Likewise. Doc fix. - (recentf-menu-value-shortcut): Doc fix. - (recentf-dump-variable): Quote atom value. - (recentf-make-menu-items): Update to use it as a menu filter. - (recentf-match-rule): New function. - (recentf-arrange-by-rule): Use it. - (recentf-indirect-mode-rule): New function. - (recentf-build-mode-rules): Use it. - (recentf-dir-rule): New function. - (recentf-arrange-by-dir): Use it. - (recentf-filter-changer-current): Rename from - `recentf-filter-changer-state'. All references updated. - (recentf-filter-changer-alist): Update filter names. - (recentf-filter-changer-select): New function. - (recentf-filter-changer): Use it. Make a sub-menu from filters - available in `recentf-filter-changer-alist'. - (recentf-data-cache, recentf-clear-data) - (recentf-update-menu): Remove. All references updated. - (recentf-match-rule-p, recentf-build-dir-rules) - (recentf-filter-changer-goto-next) - (recentf-filter-changer-get-current) - (recentf-filter-changer-get-next): Remove. - -2005-12-08 Luc Teirlinck - - * cus-edit.el (custom-buffer-create-internal): Relabel the whole - buffer "Reset" button to "Reset to Current" for consistency with - the State buttons. - -2005-12-08 John Paul Wallington - - * ibuf-ext.el (define-ibuffer-filter filename): - If `dired-directory' is a list then really use its car. - -2005-12-08 Kim F. Storm - - * emulation/cua-rect.el (cua--rectangle-aux-replace): - Fix indention of text on right side of replaced rectangle. - -2005-12-09 Nick Roberts - - * progmodes/gud.el (gud-speedbar-buttons, gud-tooltip-tips): - No need to check gud-comint-buffer is bound. - (gdb): Prevent multiple debugging when first session uses gdba. - -2005-12-08 Alan Mackenzie - - CC Mode update to 5.31. - - * progmodes/cc-subword.el: Add a dummy `c-subword-mode' for - Emacsen which lack `define-minor-mode'. (Currently Emacs <21. - We might do this function properly in the future). - - * progmodes/cc-cmds.el, cc-defs.el, cc-styles.el, cc-vars.el: - New macros c-sentence-end and c-default-value-sentence end, to cope - with Emacs 22's new function `sentence-end'. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-cmds.el (c-show-syntactic-information): Solve the - compat issue using `c-put-overlay' and `c-delete-overlay'. - - * progmodes/cc-defs.el (c-put-overlay, c-delete-overlay): - New compat macros to handle overlays/extents. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-fix.el: Add definitions of the macros push and pop - (for GNU Emacs 20.4). - - * progmodes/cc-defs.el: - (i): Load cc-fix.elc for `push' and `pop' (for GNU Emacs 20.4). - - * progmodes/cc-cmds.el (c-show-syntactic-information): Change the - highlighting mechanism so it will work in XEmacs too. - - * progmodes/cc-defs.el: Insert c-int-to-char. - - * progmodes/cc-langs.el (c-nonsymbol-token-char-list): Insert a - call to the new macro c-int-to-char. This solves XEmacs's - regarding characters as different from integers. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-fonts.el (c-make-syntactic-matcher): - New internal helper. - - (c-cpp-matchers, c-basic-matchers-before): Use the `eval' - construct to make the indirect face lookup work in XEmacs. - - (c-cpp-matchers): Append the negation char face to the existing - fontification, so that the cpp face doesn't disappear. - Use `c-make-syntactic-matcher' to avoid negation chars in comments - and strings. - - * progmodes/cc-fonts.el (c-negation-char-face-name): New variable - to map to `font-lock-negation-char-face' in emacsen where it exists. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-mode.el: Bind c-subword-mode to C-c C-w. - - * progmodes/cc-subword.el, cc-cmds.el, cc-mode.el: - Rename "c-subword-move-mode" as "c-subword-mode". - - * progmodes/cc-mode.el: Added tty suitable bindings for C-c - and C-c C-. (To the c-hungry- delete functions). - -2005-12-08 Martin Stjernholm - - * progmodes/cc-mode.el: Added autoload directive for - `c-subword-move-mode' for use in older emacsen. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-mode.el: - (i): Insert a binding for C-c C-backspace into - c-bind-special-erase-keys which works in TTYs. - (ii): Make sure that when file styles are used, any explicitly - given style variables take priority over those in the style. - Do this by calling `hack-local-variables' a second time. - - * progmodes/cc-vars.el: Add language specific customization - widgets for AWK to c-doc-comment-style, c-require-final-newline - and c-default-style. Add a defcustom for awk-mode-hook. - Give c-syntactic-element and c-syntactic-context doc-strings by - directly setting their `variable-documentation' propery. - This allows Emacs 22.1 to read these with C-h v. - - * progmodes/cc-awk.el: Apply a tidy-up patch (from Stefan Monnier). - -2005-12-08 Martin Stjernholm - - * progmodes/cc-fonts.el, cc-vars.el - (gtkdoc-font-lock-doc-comments, gtkdoc-font-lock-doc-protection) - (gtkdoc-font-lock-keywords): GtkDoc patterns contributed by - Masatake YAMATO. - - (c-doc-comment-style): Made GtkDoc default in C mode. - - * progmodes/cc-mode.el: Fixed key bindings for C-c C- - and C-c C-. - - (c-bind-special-erase-keys): New function for use on - `normal-erase-is-backspace-hook' to bind C-c C- correctly. - - * progmodes/cc-cmds.el (c-hungry-delete): New function to fix - key behavior in XEmacs according to `delete-forward-p'. - C.f. `c-electric-delete'. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-mode.el: Give c-hungry-backspace and - c-hungry-delete-forward permanent key bindings. - - * progmodes/cc-cmds.el (c-electric-semi&comma): - Bind c-syntactic-context for calls to "criteria functions", for - consistency with other calls to user functions. - - * progmodes/cc-cmds.el (c-indent-command): Expunge use of - `current-prefix-arg', since this might be the prefix arg to a - command which calls c-indent-command as a function. Change the - interactive spec from "p" to "P". - - * progmodes/cc-styles.el: Amend the doc-string of c-set-style, in - reponse to a report from Joseph Kiniry that it - was difficult to understand. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-engine.el (c-on-identifier): Fix bug when at the - first char of an identifier. - - * progmodes/cc-engine.el (c-on-identifier): Handle the "operator - +" syntax in C++. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-cmds.el (c-mask-paragraph): Correct, so that - auto-fill doesn't split a c-comment's last word from a hanging - "*/" when a space is typed between them after fill-column. - - * progmodes/cc-defs.el: New macro c-delete-and-extract-region. - - * progmodes/cc-styles.el (c-set-style) - (c-setup-paragraph-variables): Abort the command if we're not in a - CC Mode buffer. - - * progmodes/cc-align.el (c-lineup-C-comments): Correct indentation - with blank comment-prefix, and a blank line as the comment's - second line. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-fonts.el (c-cpp-matchers, c-basic-matchers-before): - Incorporate the patterns added in the Emacs development branch - for the new Emacs 22 face `font-lock-negation-char-face'. - - * progmodes/cc-fonts.el (c-invalid-face-name): Use "red1" instead - of "red" since it stands out better in xterms and DOS terminals. - - * progmodes/cc-engine.el (c-literal-faces): - Add `font-lock-comment-delimiter-face' which is new in Emacs 22. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-cmds.el: Make C-c C-a (`c-toggle-auto-newline') - forcibly enable c-electric-flag. - - * progmodes/cc-vars.el, cc-cmds.el: New clean-up - `comment-close-slash' on c-electric-slash: if enabled, typing `/' just - after the comment-prefix of a C-style comment will close that comment. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-fonts.el (c-basic-matchers-before) - (c-complex-decl-matchers): Fix the "not-arrow-prefix" regexp used - in Pike. - - * progmodes/cc-langs.el (c-other-op-syntax-tokens): Only C++ has - digraphs. - - * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el - (c-cpp-message-directives, c-cpp-include-directives) - (c-opt-cpp-macro-define, c-opt-cpp-macro-define-start) - (c-cpp-expr-directives): Introduce new language constants to - control cpp syntax in a cleaner way. - - (c-cpp-expr-functions): Rename from c-cpp-defined-fns. - - (c-cpp-matchers, c-forward-to-cpp-define-body): Use them. - - * progmodes/cc-langs.el, cc-fonts.el (c-string-escaped-newlines) - (c-multiline-string-start-char): New language constants and - variables to specify how newlines in string literals work. - - (c-font-lock-invalid-string): Use them. - - * progmodes/cc-cmds.el (c-try-one-liner): Robustness fix if an - unbalanced close brace is entered. Optimization by avoiding going - back over arbitrarily large blocks. Removed hints that this - function only would be relevant/useful in AWK. - - (c-electric-brace): Indent syntactically after the cleanups since - lineup functions might do it differently then. - - * progmodes/cc-engine.el, cc-langs.el - (c-opt-op-identifier-prefix): New language constant and variable. - - (c-just-after-func-arglist-p, c-after-special-operator-id) - (c-search-decl-header-end, c-inside-bracelist-p): Use it. - - * progmodes/cc-align.el, cc-engine.el - (c-after-special-operator-id): New helper to handle C++ operator - identifiers. - - (c-lineup-topmost-intro-cont, c-just-after-func-arglist-p) - (c-guess-basic-syntax): Handle C++ operator identifiers in - declarations. - - * progmodes/cc-langs.el (c-assignment-operators): Add the - trigraph version of ^= too. - - * progmodes/cc-langs.el (c-assignment-operators): Add the - trigraph version of |= in C++. - - * progmodes/cc-fonts.el (c-font-lock-declarators): - Handle `c-decl-hangon-kwds' after the identifier name. - - * progmodes/cc-engine.el (c-guess-basic-syntax): When deciding - whether an arglist is "nonempty", ignore a comment after the open - paren if it isn't followed by a non-comment token on the same line. - - * progmodes/cc-engine.el (c-guess-basic-syntax): Case 4: - Enable heuristics below the point to cope with classes inside special - brace lists in Pike. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-cmds.el: Amend c-point-syntax to handle macros. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-guess.el (cc-guess-install): New function to - install an already guessed style in another buffer. - - * progmodes/cc-defs.el (c-tentative-buffer-changes): No longer - sets `inhibit-read-only' - `c-save-buffer-state' should be used - anyway if the change always is undone. - -2005-12-08 Alan Mackenzie - - Implement togglable electricity: - - * progmodes/cc-defs.el: Enhance c-save-buffer-state's doc-string, - saying when it should be used. - - * progmodes/cc-engine.el: Add the new buffer-local variable, - c-electric-flag. - - * progmodes/cc-langs.el: Change the name of c-toggle-auto-state to - c-toggle-auto-newline. - - * progmodes/cc-mode.el: Rename c-toggle-auto-state to - c-toggle-auto-newline. Remove the binding for - c-toggle-auto-hungry-state. Add the binding C-c C-l for the new - c-toggle-electric-state. - - * progmodes/cc-vars.el: Make c-syntactic-indentation buffer local. - - * progmodes/cc-cmds.el: Add `c-bytecomp-defun's for - c-\(forward\|backward\)-subword. - (c-update-modeline): Add the new modeline flag `l' for - `c-electric-flag'. Make the auto-newline flag `a' dependent on `l'. - (c-toggle-auto-state): Rename it to `c-toggle-auto-newline'. - Make the old name an alias of the new name. - (c-toggle-electric-state): New function. - (c-electric-\(pound\|brace\|slash\|star\|semi&comma\|colon\|lt-gt\|paren\|continued-statement\)): - Adapt these functions to do electric things only when - c-electric-flag is non-nil. - (c-point-syntax, c-brace-newlines, c-try-oneliner): Extract these - new functions from c-electric-brace. - (c-point-syntax): Add a check for "virtual semicolons" in AWK - mode, so that the tentative extra newline doesn't change the - syntax of the following brace. - (c-electric-brace): Restructure by extracting the above functions. - Tidy up the coding somewhat. - (c-electric-semi&comma, c-electric-colon, c-electric-paren): - restructure a bit. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-cmds.el (c-show-syntactic-information): Show the - anchor position(s) using faces. Thanks to Masatake YAMATO for the idea. - - * progmodes/cc-mode.el, cc-cmds.el, cc-defs.el, cc-engine.el - (c-submode-indicators): Change name from `c-auto-hungry-string' - since it's now used to track another submode. - - (c-update-modeline): Convert to function and extended to check - `c-subword-move-mode'. - - (c-forward-into-nomenclature, c-backward-into-nomenclature): - Convert to compat aliases for `c-forward-subword' and - `c-backward-subword'. - - * progmodes/cc-subword.el: New functions and minor mode to handle - SillyCapsedStyleIndentifiers, contributed by Masatake YAMATO: - - (c-forward-subword, c-backward-subword, c-mark-subword) - (c-kill-subword, c-backward-kill-subword, c-transpose-subwords) - (c-capitalize-subword, c-downcase-subword, c-upcase-subword): - Functions corresponding to the standard word handling functions. - - (c-subword-move-mode): Minor mode that replaces all the standard - word handling functions with their subword equivalences. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-vars.el (c-cleanup-list): Insert a customization - entry for one-liner-defun. - - * progmodes/cc-defs.el: Give c-tentative-buffer-changes its own - name in its def-edebug-spec. - - * progmodes/cc-cmds.el (c-electric-brace): Make the - one-liner-defun clean-up work with empty-defun-braces. o-l-d now - compacts space before a comment, if this will make things fit on - one line. - - Introduce an "awk" style, mainly for auto-newline and clean-ups. - - * progmodes/cc-align.el: New function c-snug-1line-defun-close. - - * progmodes/cc-cmds.el: In c-electric-brace, add code for new - clean-up one-liner-defun. - - * progmodes/cc-styles.el: Add the new "awk" style. - - * progmodes/cc-vars.el: Add description of one-liner-defun to - c-cleanup-list's doc-string. New user options, - c-max-one-liner-length. In c-default-style, set the default style - for AWK to "awk". - -2005-12-08 Martin Stjernholm - - * progmodes/cc-engine.el (c-forward-label): Fix fontification of - macros inside labels. - - * progmodes/cc-engine.el (c-looking-at-bos): Obsolete in favor of - `c-at-statement-start-p' and `c-at-expression-start-p'. - - * progmodes/cc-defs.el (c-tnt-chng-record-state): Don't signal an - error if the mark isn't set. - - * progmodes/cc-engine.el (c-guess-continued-construct) - (c-guess-basic-syntax): Use `c-forward-decl-or-cast-1' to more - accurately detect functions inside functions. - - * progmodes/cc-engine.el (c-at-expression-start-p): New function - like `c-at-statement-start-p' that additionally recognizes commas - and expression parentheses as delimiters. - - * progmodes/cc-engine.el (c-looking-at-inexpr-block): Add flag - to avoid heuristics that doesn't work for unclosed blocks. - (c-at-statement-start-p): New function. - - * progmodes/cc-engine.el, cc-fonts.el: Fixes in handling of - Objective-C directives, e.g. directives spanning lines should work - reasonably well now. - - (c-put-c-type-property, c-clear-c-type-property): New helpers. - - (c-forward-objc-directive): New function to move over any ObjC - directive. - - (c-just-after-func-arglist-p, c-guess-basic-syntax) - (c-basic-matchers-before): Use it. - - (c-font-lock-objc-iip-decl): Remove. - - * progmodes/cc-engine.el (c-guess-basic-syntax): Some improvement - in the template arglist recognition. - - * progmodes/cc-styles.el (c-style-alist): Fix several - inconsistencies in the Whitesmith style. - - * progmodes/cc-align.el (c-lineup-after-whitesmith-blocks): - New lineup function to get lines after Whitesmith style blocks - correctly indented. - - (c-lineup-whitesmith-in-block): Back out the compensation for - opening parens since it's done using `add' lists in the style - definition instead. Don't use the anchor position since it varies - too much between the syntactic symbols. :P - - * progmodes/cc-vars.el (c-valid-offset): Update. - - * progmodes/cc-engine.el (c-evaluate-offset): Extend to handle - lists where the offsets are combined according to several - different methods: `first', `min', `max', and `add'. - Report offset evaluation errors with `c-benign-error' so that some kind - of reindentation still is done. - - * progmodes/cc-engine.el (c-guess-basic-syntax): - Anchor `arglist-intro' the same way as `arglist-cont-nonempty' and - `arglist-close'. - - * progmodes/cc-engine.el (c-guess-basic-syntax): Fix similar - situations for `arglist-cont-nonempty' and `arglist-close'. - - * progmodes/cc-langs.el (c-opt-identifier-concat-key-depth): New const. - - * progmodes/cc-defs.el: Use `cc-bytecomp-fboundp' and - cc-bytecomp-boundp' in a number of places. - - * progmodes/cc-engine.el (c-beginning-of-statement-1): Fix a - macro related issue. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-awk.el: Change the terminology of regexps: A char - list is now [asdf], a char class [:alpha:]. - Include code for char classes. - Set c-awk-NL-prop on lines ending in open strings. (Bug fix.) - Add character classes (e.g. "[:alpha:]") into AWK Mode's regexps. - - Remove (nearly all of) the cruft associated with AWK Mode's former - concept of "virtual semicolons": - - Adapt c-beginning-of-statement, c-end-of-statement (together with - subfunctions) to use the new notion of "virtual semicolon" in - place of the old awkward special handling for AWK. There remains - much cruft in cc-awk.el, cc-cmds.el and cc-engine.el to clear out. - * progmodes/cc-cmds.el: - (c-ascertain-adjacent-literal): In the backwards direction, now - recognises AWK regexp delimiters as string delimiters. - (c-after-statement-terminator-p): Adapt for virtual semicolons; - check more rigorously for "end of macro". - (c-back-over-illiterals, c-forward-over-illiterals): Adapt for - virtual semicolons; - (c-beginning-of-statement): Adapt for virtual semicolons; Separate - out the code for forward movement into ... - (c-end-of-statement): Now contains the code for forward movement, - adapted for virtual semicolons. - - * progmodes/cc-engine.el: - (c-ws*-string-limit-regexp): New regexp. - (c-forward-single-comment, c-backward-single-comment): Comment out - the (now redundant) "special" AWK stuff. - - * progmodes/cc-styles.el, cc-vars.el: Change the settings of - c-string-par-start, c-string-par-separate to be more like Text - Mode than Fundamental Mode. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-fonts.el (c-font-lock-declarations): Always narrow - to the fontified region so that fontification doesn't occur - outside it (could happen e.g. when fontifying a line with an - unfinished declaration). - -2005-12-08 Alan Mackenzie - - * progmodes/cc-awk.el: Move regexps for analysing AWK code to near the - start of the file. ^L now separate sections of the file. - (c-awk-non-eol-esc-pair-re, c-awk-blank-or-comment-line-re) - (c-awk-one-line-possibly-open-string-re) - (c-awk-regexp-one-line-possibly-open-char-class-re) - (c-awk-one-line-possibly-open-regexp-re) - (c-awk-one-line-non-syn-ws*-re): New defonsts. - (c-awk-at-vsemi-p, c-awk-vsemi-status-unknown-p): New functions. - - Amend the concept of "virtual semicolons" (in the indentation - engine) for languages like AWK, such that they are now - conceptually attached to end of the last token of a statement, not - the end of the line. (In AWK Mode, however, the pertinent text - property is still physically set on the EOL.) Remove the specific - tests for awk-mode, thus facilitating the introduction of other - language modes where EOLs can end statements. - (Note: The funtionality in cc-cmds.el, specifically - c-beginning/end-of-statement has yet to be amended.) - - * progmodes/cc-defs.el (c-at-vsemi-p, c-vsemi-status-unknown-p): - New macros. - - * progmodes/cc-langs.el: Added `#' into AWK Mode's value of - c-stmt-delim-chars. New c-lang-defvars: c-at-vsemi-p-fn, - c-vsemi-status-unknown-p-fn (in a new page). - - * progmodes/cc-engine.el: In c-beginning-of-statement-1, - c-crosses-statement-barrier-p, c-guess-basic-syntax, replace - numerous awkward forms like - (if (c-major-mode-is 'awk-mode) (c-awk-prev-line-incomplete-p)) - with (c-at-vsemi-p). Fix a few typos. In c-guess-basic-syntax, new - variable before-ws-ip, the place just after char-before-ip appears. - - * progmodes/cc-mode.el: Fix what's almost a semantic ambiguity in - a comment. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-cmds.el (c-electric-brace): Clean up using - `c-tentative-buffer-changes'. - - * progmodes/cc-defs.el (c-region-is-active-p): Simplify and - convert to macro to choose between Emacs and XEmacs at compile time. - - (c-set-region-active): New set counterpart to `c-region-is-active-p'. - - (c-tentative-buffer-changes): New macro to handle temporary buffer - changes in a convenient way. - - (c-tnt-chng-record-state, c-tnt-chng-cleanup): Internal helpers - for `c-tentative-buffer-changes'. - - * progmodes/cc-engine.el (c-looking-at-inexpr-block): Tighten up - the checks for paren sexps between the point and the keyword, to - avoid some false alarms. - - * progmodes/cc-engine.el, cc-langs.el (c-looking-at-inexpr-block): - Fixed a situation where an error could be thrown for unbalanced - parens. Changed to make use of c-keyword-member' to avoid some - repeated regexp matches. - - (c-opt-lambda-key, c-opt-inexpr-block-key, c-opt-inexpr-class-key): - These language variable are no longer necessary. - - (c-block-stmt-kwds): New language constant used by - c-looking-at-inexpr-block'. - - (c-guess-basic-syntax): Remove an optional check that looked at - the existence of the now removed language variables. - - * progmodes/cc-engine.el (c-fdoc-shift-type-backward) - (c-forward-decl-or-cast-1): Fix invalid recognition of C++ style - object instantiation expressions as declarations in some contexts. - This bug only affected languages where the declarator can't be - enclosed in parentheses. - - * progmodes/cc-styles.el (c-style-alist): Fix the GNU style to - insert newlines before and after substatement braces. - - * progmodes/cc-engine.el: Improved the heuristics for recognizing - function declaration headers and the handling of C++ style member - init lists. - - (c-just-after-func-arglist-p): Rewritten to use - `c-forward-decl-or-cast-1'. Now behaves a bit differently too. - - (c-beginning-of-member-init-list): Remove since it isn't used anymore. - - (c-guess-basic-syntax): Adapt case 5B for the new - `c-just-after-func-arglist-p'. Merge cases 5B.1 and 5B.3. - Remove cases 5D.1 and 5D.2 since they aren't trigged anymore (case 5B.1 - covers all cases now). - - * progmodes/cc-defs.el (c-point): Add `bosws' and `eosws'. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-cmds.el, cc-styles.el, cc-vars.el: New variables - c-string-par-start/separate c-sentence-end-with-esc-eol, - initialised in c-setup-paragraph-variables, used in string - scanning subroutines of c-beginning-of-statement. - - * progmodes/cc-cmds.el (c-electric-brace): Don't delete a comment - which precedes the newly inserted `{'. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-engine.el, cc-langs.el: Rewrote the recognition - function for declaration level blocks. It should now cope with - templates better and also be a lot more comprehensible. - - (c-looking-at-decl-block): The new function. - - (c-search-uplist-for-classkey): The old one. It's now a wrapper - for compatibility. - - (c-add-class-syntax, c-guess-continued-construct) - (c-guess-basic-syntax): Adapt for `c-looking-at-decl-block'. - - (c-decl-block-key): Change to tell apart ambiguous and - unambiguous keywords. Pike specials are now handled directly in - the code instead. - - (c-block-prefix-disallowed-chars, c-block-prefix-charset): - New language constants and variables to make the backward skip in - `c-looking-at-decl-block' as tight as possible. - - (c-nonsymbol-token-char-list): New language constant. - - * progmodes/cc-engine.el (c-backward-<>-arglist): New function to - find balanced template arglists backwards. - - * progmodes/cc-defs.el (c-make-bare-char-alt): New helper for - making char classes for `c-syntactic-skip-backward'. - - * progmodes/cc-engine.el (c-guess-basic-syntax): Simplify case - 16D - can't be a class-close at that point. - - * progmodes/cc-engine.el (c-guess-basic-syntax) - (c-add-class-syntax): Don't narrow out the enclosing declaration - level. This makes everything a lot easier, and it was actually - only four small places that needed it to work. Some places that - previously did `widen' are removed now, which has the effect that - `c-guess-basic-syntax' never will look at things outside the - current narrowment now. The anchor position for `topmost-intro' - is affected by this, but it was so bogus it was basically useless - before, and now it's equally bogus but in a slightly different way. - - (c-narrow-out-enclosing-class): Gone. - - (c-most-enclosing-brace, c-least-enclosing-brace): Don't filter to - the narrowed region. - - (c-least-enclosing-brace): Remove silly optional argument. - - * progmodes/cc-engine.el (c-beginning-of-decl-1): Fix bug where - the point could be left directly after an open paren when finding - the beginning of the first decl in the block. - - * progmodes/cc-engine.el, cc-fonts.el (c-forward-keyword-clause): - Specify which submatch to use. - - * progmodes/cc-langs.el (c-symbol-start): Include `@' in ObjC. - - (c-decl-start-re): No longer any need for special treatment of - ObjC due to the above. - - (c-other-block-decl-kwds): Handle "extern" in ObjC too since it - presumably follows C in that regard. - - * progmodes/cc-langs.el (c-identifier-ops, c-after-id-concat-ops): - New language constants to specify operator tokens inside - identifiers in a more high level way. - - (c-opt-identifier-prefix-key): New internal language constant. - - (c-opt-identifier-concat-key, c-opt-after-id-concat-key) - (c-identifier-start, c-identifier-key): Now completely calculated - from other constants. - - (c-identifier-last-sym-match): Decommission since it's no longer used. - - (c-operators): Use `c-identifier-ops'. Document `postfix-if-paren'. - - * progmodes/cc-engine.el (c-forward-name): Remove the - optimization when c-identifier-key is equal to c-symbol-key since - it doesn't work in byte compiled files. Don't record empty - regions as identifiers. - - * progmodes/cc-langs.el (c-filter-ops): New helper function to - simplify access to `c-operators' and its likes. - - (c-operator-list, c-all-op-syntax-tokens) - (c-nonsymbol-token-regexp, c-<>-multichar-token-regexp) - (c-<-op-cont-regexp, c->-op-cont-regexp, c-expr-kwds) - (c-primary-expr-regexp, c-cast-parens): Use it. - - * progmodes/cc-defs.el (c-lang-const): Fixes to allow use without - an explicit language in functions. - - * progmodes/cc-defs.el (c-make-keywords-re): Add an appendable - variant of adornment. - - * progmodes/cc-langs.el (c-any-class-key): Remove unused language - variable. - - (c-type-decl-prefix-key): Remove some now unnecessary cruft from - the Pike value. - - * progmodes/cc-engine.el (c-on-identifier) - (c-simple-skip-symbol-backward): Small fix for handling "-" - correctly in `skip-chars-backward'. Affected the operator lfun - syntax in Pike. - - * progmodes/cc-langs.el (c-make-init-lang-vars-fun): Disable the - diagnostic message about precompiled language vars not being used. - - * progmodes/cc-langs.el (c-paren-nontype-kwds): The GCC keyword - "__attribute__" is followed by a parenthesis. - - (c-type-start-kwds, c-prefix-spec-kwds, c-prefix-spec-kwds-re) - (c-specifier-key, c-not-decl-init-keywords): Some cleanup using new - language constants `c-type-start-kwds' and `c-prefix-spec-kwds'. - - * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el: - Internal cleanups to properly detect the declared identifiers in - various declarations. - - (c-decl-start-kwds): New language constant to recognize - declarations that can start anywhere. Used for class declarations - in Pike. - - (c-specifier-key, c-not-decl-init-keywords) - (c-decl-prefix-or-start-re, c-find-decl-prefix-search) - (c-find-decl-spots): Implement `c-decl-start-kwds'. - - (c-other-decl-kwds, c-postfix-decl-spec-kwds, c-decl-hangon-kwds) - (c-decl-hangon-key, c-forward-decl-or-cast-1): Separate the - handling of the compiler specific extension keywords into a new - language constant `c-decl-hangon-kwds' that defines keyword - clauses to be ignored in declarations. - - (c-forward-id-comma-list, c-forward-keyword-clause): Don't skip - past unrecognized tokens when handling `c-colon-type-list-kwds'. - Necessary to stop at the declared identifier in e.g. IDL valuetype - declarations. - - (c-typedef-decl-kwds, c-typeless-decl-kwds, c-type-list-kwds) - (c-prefix-spec-kwds-re, c-postfix-spec-kwds) - (c-after-suffixed-type-decl-key, c-opt-postfix-decl-spec-key) - (c-forward-decl-or-cast-1): Recognize the declared identifier in - class and enum declarations as such and not as part of the type. - - (c-forward-decl-or-cast-1, c-forward-label): Relax the - interpretation of PRECEDING-TOKEN-END when there's no preceding token. - - (c-forward-decl-or-cast-1): Don't disregard sure signs of - declarations when there's some syntax error later on. - - (c-complex-decl-matchers): Did away with a reference to - `c-specifier-key'. - - * progmodes/cc-engine.el (c-maybe-labelp): Provide no default - value - this variable is always dynamically bound. - - * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el, cc-menus.el - * cc-mode.el, cc-styles.el, cc-vars.el, cc-align.el, cc-awk.el - * cc-cmds.el, cc-defs.el: Change the policy for marking up - functions that might do hidden buffer changes: All such internal - functions are now marked instead of those that don't. - - (c-beginning-of-macro, c-end-of-macro, c-(forward|backward)-comments) - (c-(forward|backward)-single-comment, c-parse-state, c-on-identifier) - (c-(fast-|slow-|)in-literal, c-literal-limits, c-collect-line-comments) - (c-literal-type): Allow these functions to make hidden buffer changes, - so that they are free to use text property caching later on. - - (c-electric-backspace, c-electric-delete-forward, c-electric-pound) - (c-electric-brace, c-electric-slash, c-electric-star) - (c-electric-semi&comma, c-electric-colon, c-electric-lt-gt) - (c-electric-paren, c-electric-continued-statement, c-indent-command) - (c-indent-region, c-mask-paragraph, c-indent-new-comment-line) - (c-context-line-break): Add `c-save-buffer-state' calls to comply - with the changed semantics of the functions above. - - * progmodes/cc-engine.el (c-beginning-of-statement-1): Fix a bug - when macros occur in obscure places. Optimized the sexp movement - a bit. - -2005-12-08 Alan Mackenzie - - Enhancements for c-beginning-of-statement to work in AWK Mode: - - * progmodes/cc-awk.el: Supersede c-awk-NL-prop value `;' - (completed statement) with `}' (statement completed by closing - brace or semicolon) and `$' (statement completed by EOL). - - (c-awk-virtual-semicolon-ends-prev-line-p) - (c-awk-virtual-semicolon-ends-line-p) - (c-awk-skip-semantic-ws-forward, c-awk-skip-semantic-ws-backward) - (c-awk-at-statement-end-p): New functions. - - * progmodes/cc-cmds.el: Simplify the structure of functions - c-forward-over-illiterals, c-back-over-illiterals. Enhance these - two functions and c-beginning-of-statement to handle AWK Mode. - - * progmodes/cc-engine.el: Enhance c-forward-single-comment, - c-backward-single-comment for AWK mode. Attempt to clarify their - doc-strings. - - * progmodes/cc-mode.el: Put M-a and M-e into awk-mode-map. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el: Cleaned up the - label handling. Labels are now recognized in a uniform and more - robust way, regardless of context. Text properties are put on all - labels to recognize the following declarations better. - Multiword labels are handled both in indentation and fontification for - the benefit of language extensions like Qt. For consistency, keywords - in labels are now fontified with the label face instead. - That also applies to "case" and "default". - - (c-beginning-of-statement-1): Fix some bugs in the label - handling. Disregard `c-nonlabel-token-key' in labels that begin - with `c-label-kwds'. - - (c-find-decl-spots): Support that the callback adds more - `c-decl-end' spots to find. - - (c-forward-decl-or-cast-1): Don't treat a list of plain - identifiers followed by a colon as a declaration. - - (c-forward-label): New function to recognize labels. - - (c-guess-basic-syntax): Replace uses of `c-label-key' with - `c-forward-label'. Moved the label recognition cases (14 and 15) - earlier since they aren't so context sensitive now. Handle labels - on the top level gracefully. Moved access label recognition to - the generic label case (CASE 15) - removed CASE 5E. - - (c-font-lock-declarations): Add recognition of labels in the - same round since we need to handle labels in parallell with other - declarations to recognize both accurately. It should also improve - speed. - - (c-simple-decl-matchers, c-basic-matchers-after): - Move `c-font-lock-labels' so that it only is used on decoration level 2 - since `c-font-lock-declarations' handles it otherwise. - - (c-complex-decl-matchers): Remove the simplistic recognition of - access labels. - - (c-decl-prefix-re): Remove the kludges that was necessary to cope - with labels earlier. - - (c-decl-start-re): New language variable to make - `c-font-lock-declarations' stop for the special protection labels - in Objective-C that start with `@'. - - (c-label-key): Remove since it's no longer used. - - (c-recognize-colon-labels, c-label-prefix-re): New language - constants to support recognition of generic colon-terminated labels. - - (c-type-decl-end-used): `c-decl-end' is now used whenever there - are colon terminated labels. - - * progmodes/cc-align.el (c-lineup-arglist): Fix bug when the - first argument starts with a special brace list. - - * progmodes/cc-engine.el, cc-fonts.el (c-forward-decl-or-cast-1) - (c-font-lock-declarations): Break out the declaration and cast - recognition from `c-font-lock-declarations' to a new function, so - that it can be used in the indentation engine. - - * progmodes/cc-engine.el (c-find-decl-spots): Fix bug in backing - up to the start of the literal. Fixed bug with the point on the - wrong side of the search limit that could happen when the start - position is inside a literal. - - * progmodes/cc-engine.el (c-parse-state) - (c-invalidate-state-cache): Modify the use of `c-state-cache-end' - so that it's kept a little bit back to increase the hit rate. - - (c-parse-state): Change the macro handling and fixed some - glitches. Macro context is checked more often than necessary now, - but otoh less garbage conses are generated. - - * progmodes/cc-engine.el (c-parse-state) - (c-invalidate-state-cache): Cache the last position where - `c-state-cache' applies. This can speed up refontification quite - a bit in blocks where there are many non-brace parens before the point. - - (c-state-cache-end): New variable for this. - - (c-guess-basic-syntax, c-debug-parse-state): Adapt for the new - cache variable. - - * progmodes/cc-engine.el (c-find-decl-spots): Take more care to - get close initial continue positions when the start position is - inside a literal or macro. Do not call the callback for spots - before the start position (which can happen e.g. for `c-decl-end' - spots inside comments). Optimize better in special cases when the - region is a single line inside a literal or macro (typically when - the current line is refontified). - - * progmodes/cc-engine.el (c-guess-basic-syntax): Simplify calls - to `c-add-stmt-syntax' - there's no need to explicitly whack off - entries from the paren state. - - * progmodes/cc-engine.el (c-add-stmt-syntax): Narrow down the - special case for "else if" clauses. - - * progmodes/cc-engine.el (c-looking-at-inexpr-block) - (c-add-stmt-syntax): Use `c-recognize-paren-inexpr-blocks'. - - * progmodes/cc-langs.el (c-recognize-paren-inexpr-blocks): - New language variable to recognize the gcc extension with statement - blocks inside expressions. - - * progmodes/cc-engine.el (c-add-stmt-syntax): Restructure to make - it somewhat more comprehensible. The argument AT-BLOCK-START is - no longer used and hence removed. - - (c-guess-continued-construct, c-guess-basic-syntax): Update calls - to `c-add-stmt-syntax'. - - * progmodes/cc-engine.el (c-backward-to-decl-anchor): - Use `c-beginning-of-statement-1' instead of duplicating parts of it. - This fixes bogus label recognition. - - * progmodes/cc-engine.el (c-add-type, c-check-type) - (c-forward-name, c-forward-type): Improve storage of template - types in `c-found-types' so that they can be recognized better. - - (c-syntactic-content): Add option to skip past nested parens. - - * progmodes/cc-engine.el (c-forward-name): - Set `c-last-identifier-range' all the time. It's less work that way. - Handle that there might not be an identifier to store in - `c-last-identifier-range'. - - (c-forward-type): Handle that `c-last-identifier-range' might be - nil from `c-forward-name'. - - * progmodes/cc-defs.el (c-safe-scan-lists) - (c-(go-)?(up|down)-list-(forward|backward)): Add limit arguments. - - * progmodes/cc-defs.el (c-save-buffer-state): Use `unwind-protect' - to work even if the form fails. - - * progmodes/cc-engine.el (c-parse-state): Speedup when moving far - down in a large file in one go. - - (c-get-fallback-start-pos): New helper function for `c-parse-state'. - - * progmodes/cc-align.el (c-lineup-assignments): New lineup - function which is like `c-lineup-math' but returns nil instead of - `c-basic-offset' when it doesn't match. - - (c-lineup-math): Change to use `c-lineup-assignments'. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-cmds.el: Fix some bugs in subfunctions of - c-beginning-of-statement. New subfunctions - c-in-comment-line-prefix-p, c-narrow-to-comment-innards. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-fonts.el, cc-langs.el: Use `c-simple-ws' instead of - hardcoded char classes whereever possible. Changed a couple of - places to use skip by syntax instead of skip by char class. - - * progmodes/cc-langs.el (c-unterminated-block-comment-regexp): - Fix a bug in the regexp that caused extreme backtracking. - - * progmodes/cc-langs.el (c-block-comment-starter) - (c-block-comment-ender): New language constants to specify in a - single place how block comments look. - - (c-comment-start-regexp, c-block-comment-start-regexp) - (comment-start, comment-end, comment-start-skip) - (c-syntactic-ws-start, c-syntactic-ws-end, c-nonwhite-syntactic-ws) - (c-syntactic-ws, c-nonempty-syntactic-ws) - (c-single-line-syntactic-ws, c-syntactic-eol): Now built from - `c-line-comment-starter', `c-block-comment-starter' and - `c-block-comment-ender'. - - (c-block-comment-regexp, c-unterminated-block-comment-regexp): - New language constants to break up things a bit. - - (c-simple-ws): New language constant for simple whitespace. - - * progmodes/cc-defs.el (c-concat-separated): New convenience function. - - * progmodes/cc-defs.el (c-make-keywords-re): Add kludge for bug - in `regexp-opt' in Emacs 20 and XEmacs when strings contain - newlines. Allow and ignore nil elements in the list. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-cmds.el: Comment out a (n almost certainly - superfluous) check, (eq here (point-max)) in c-beginning-of-statement. - - * progmodes/cc-cmds.el: Tidy up the comments in - c-beginning-of-statement and subfunctions. - - * progmodes/cc-awk.el: Replace calls to put-text-property to the - more flexible c-put-char-property and c-clear-char-properties. - Add the author's email address. - - * progmodes/cc-langs.el (c-block-comment-start-regexp): New variable. - - * progmodes/cc-cmds.el: Fix bug with M-e, when point is inside the - closing "*/" of a block comment. - - * progmodes/cc-cmds.el: Tidy c-beginning-of-sentence (and - subfunctions) so that it works at BOB and EOB. - - * progmodes/cc-cmds.el, cc-vars.el: More updating of - c-beginning-of-statement, including new variable - c-block-comment-start-regexp. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-langs.el (c-known-type-key): Optimize simple - symbols from `*-font-lock-extra-types' so that there's no need to - use `regexp-opt' on those lists. - - * progmodes/cc-langs.el (c-type-decl-suffix-key): Fix when - `c-type-modifier-kwds' is empty. - - * progmodes/cc-fonts.el (c-font-lock-invalid-string): Fix when - there are several strings on the same line. - - * progmodes/cc-engine.el (c-literal-limits): Remove the - compatibility function for older emacsen. `c-literal-limits-fast' - has now taken the place of this function. - - * progmodes/cc-vars.el (c-emacs-features): Remove compatibility - with older emacsen: We now require `pps-extended-state'. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-cmds.el: New function c-beginning-of-sentence, - which obviates the need to hack sentence-end. This now handles - escaped newlines in strings correctly. Correct minor bugs in - c-move-over-sentence and in c-beginning-of-statement. - - * progmodes/cc-cmds.el (c-beginning-of-statement (and - subfunctions)): Adapt c-\(back\|forward\)-over-illiterals such - that movement over macros and code are rigorously separated from - eachother. Correct a few incidental bugs. - - * progmodes/cc-cmds.el: Restructure c-beginning-of-statement: - Improve its doc-string. Improve the handling of certain specific cases. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el - (c-guess-basic-syntax): Change the way class-level labels are - recognized; they can now contain essentially any symbols. - - (c-opt-extra-label-key): New language variable to cope with the - special protection label syntax in Objective-C. - - (c-opt-access-key): Remove; this is now handled better by - `c-nonlabel-token-key' and `c-opt-extra-label-key'. - - (c-complex-decl-matchers): Update to handle that - `c-opt-access-key' no longer exists. - - * progmodes/cc-engine.el (c-guess-basic-syntax): Make use of the - improved label recognition in `c-beginning-of-statement-1'. - - * progmodes/cc-engine.el (c-beginning-of-member-init-list): - Recognize bitfields better. - - * progmodes/cc-engine.el (c-beginning-of-inheritance-list): - Remove some cruft and fixed a bug that could cause it to go to a - position further down. - - * progmodes/cc-langs.el, cc-engine.el - (c-beginning-of-statement-1): Improve detection of labels in - declaration contexts. - - (c-beginning-of-decl-1): Use it. - - (c-nonlabel-token-key): New language constant and variable needed - by `c-beginning-of-statement-1'. - - * progmodes/cc-engine.el (c-guess-basic-syntax): Fix bug that - manifested itself due to the correction in `c-forward-sexp'. - - * progmodes/cc-defs.el (c-forward-sexp, c-backward-sexp): - Make these behave as documented when used at the buffer limits. - - * progmodes/cc-mode.el, cc-engine.el, cc-langs.el - (c-type-decl-end-used): Made this a language variable. - - * progmodes/cc-mode.el (c-after-change): Widen the buffer to work - correctly when `combine-after-change-calls' is used together with - temporary narrowings. - - * progmodes/cc-engine.el (c-beginning-of-statement-1): - Report labels correctly when the start point is immediately after the - colon. - - * progmodes/cc-defs.el (c-parse-sexp-lookup-properties): - Remove since it isn't used anymore. - - * progmodes/cc-cmds.el (c-electric-lt-gt): Detect and mark angle - bracket arglists such as template parens in C++. - - * progmodes/cc-engine.el (c-syntactic-skip-backward): Fix a bug - in the last check-in. Some optimization. - - * progmodes/cc-engine.el (c-syntactic-skip-backward): Fix bug - where it could stop at the same level in a preceding sexp when - PAREN-LEVEL is set. - - * progmodes/cc-mode.el (c-basic-common-init): Turn on syntax-table - text property lookup only when it's needed. - - * progmodes/cc-langs.el, cc-engine.el, cc-fonts.el, cc-mode.el: - Change the policy for paren marked angle brackets to be more - persistent; once marked they remain marked even when they're found - to be unbalanced in the searched region. This should keep the - paren syntax around even when individual lines are refontified in - multiline template arglists. - - (c-parse-and-markup-<>-arglists): New dynamically bound variable - to control markup so that incorrect angle bracket arglists aren't - marked in contexts where the correct value for - `c-disallow-comma-in-<>-arglists' isn't known. - - (c-forward-<>-arglist, c-forward-<>-arglist-recur): The reparse - argument has become `c-parse-and-markup-<>-arglists'. - - (c-remove-<>-arglist-properties): Remove - no longer used. - - (c-after-change-check-<>-operators): New function used on - `after-change-functions' to avoid that "<" and ">" characters that - are part of longer operators have paren syntax. - - (c-<>-multichar-token-regexp): New language variable used by - `c-after-change-check-<>-operators'. - - (c-after-change): Call `c-after-change-check-<>-operators'. - - (c-font-lock-<>-arglists): Use the context properties set by - `c-font-lock-declarations' to set `c-disallow-comma-in-<>-arglists' - correctly to avoid doing invalid markup. - - (c-font-lock-declarations): Remove code that undoes the invalid - markup done by `c-font-lock-<>-arglists'. - - (c-complex-decl-matchers): `c-font-lock-<>-arglists' now runs - after `c-font-lock-declarations'. - - * progmodes/cc-engine.el (c-syntactic-skip-backward): - Add paren-level feature. - - (c-guess-basic-syntax): Improve the anchor position for - `template-args-cont' in nested template arglists. There's still - much to be desired in this area, though. - -2005-12-08 Alan Mackenzie - - * progmodes/cc-cmds.el, cc-engine.el, cc-langs.el, cc-vars.el: - Make the "Text Filling and Line Breaking" commands work for AWK buffers. - -2005-12-08 Martin Stjernholm - - * progmodes/cc-defs.el, cc-engine.el (c-mode-is-new-awk-p): - Removed; (c-major-mode-is 'awk-mode) can be used instead now. - - * progmodes/cc-mode.el: Always set up AWK mode since emacsen where - it doesn't work no longer are supported. - - * progmodes/cc-mode.el, cc-styles.el, cc-vars.el, cc-defs.el - * cc-engine.el, cc-fonts.el, cc-langs.el, cc-cmds.el: CC Mode now - requires support for the syntax-table' text property, which rules - out Emacs 19 and XEmacs < 21.4. Removed various compatibility - cruft associated with those versions. - - * progmodes/cc-defs.el, cc-fix.el: CC Mode now requires support - for the `syntax-table' text property, which rules out Emacs 19 and - XEmacs < 21.4. Removed various compatibility cruft associated - with those versions. - - * progmodes/cc-vars.el (c-emacs-features): CC Mode now requires - support for the `syntax-table' text property. - - * progmodes/cc-fonts.el (c-nonbreakable-space-face): Remove the - variable and use an extra quoted face name instead. All the - emacsen flavors handle that correctly. - - * progmodes/cc-fonts.el (c-font-lock-complex-decl-prepare) - (c-font-lock-declarators, c-font-lock-declarations) - (c-complex-decl-matchers, c-basic-matchers-after): Use a text - property to mark the items in in declarator lists to handle - refontification inside multiline declarations better. - - * progmodes/cc-fonts.el (c-font-lock-declarations): Recognize a - construct like "a * b = c;" as a declaration. - -2005-12-08 Kim F. Storm - - * emulation/cua-base.el (cua-use-hyper-key): Replace by ... - (cua-rectangle-modifier-key): ... this. New defcustom. Can now - select either meta, hyper, or super modifier for rectangle commands. - (cua--rectangle-modifier-key): New defvar. - (cua--M/H-key): Use it. Remove special case for `space'. - (cua--init-keymaps): Initialize it from cua-rectangle-modifier-key - on X, to meta otherwise. Always bind C-return to toggle - rectangle. Pass ?\s instead of `space' to cua--M/H-key. - - * emulation/cua-rect.el (cua-help-for-rectangle): - Use cua--rectangle-modifier-key. Handle super modifier too. - (cua--init-rectangles): Always bind C-return to toggle rectangle. - Pass ?\s instead of `space' to cua--M/H-key and cua--rect-M/H-key. - - * ido.el: Move Acknowledgements and History after Commentary. - Minor changes to Commentary. - - * emulation/cua-base.el (cua--select-keymaps): Enable repeat - keymap if cua--prefix-override-timer is `shift'. - (cua--shift-control-prefix): New function; emulate "type prefix - key twice" functionality to handle shifted prefix key override. - (cua--shift-control-c-prefix, cua--shift-control-x-prefix): - New commands. - (cua--init-keymaps): Bind them to S-C-c and S-C-x. - -2005-12-08 Carsten Dominik - - * textmodes/org.el (org-insert-heading): Try to do items before - headings. - (org-agenda-mode): Quote `org-agenda-mode-hook'. - (org-insert-item): New function. - (org-renumber-ordered-list): Don't skip to higher level lists. - -2005-12-08 Juri Linkov - - * info.el (Info-mode-map): Bind M-TAB to `Info-prev-reference'. - - * button.el (button-buffer-map): Bind M-TAB to `backward-button'. - - * wid-edit.el (widget-keymap): Bind M-TAB to `widget-backward'. - - * pcvs.el (defun-cvs-mode): Put `definition-name' property on - the constructed function name fun-1. - - * cus-edit.el (custom-add-parent-links): Filter out custom-group-link, - because such links don't lead to parent documentation. - -2005-12-08 Kenichi Handa - - * descr-text.el (describe-char): Use *Help-2* buffer if the - current buffer is *Help*. Call describe-text-properties while - setting the original buffer. - -2005-12-07 Bill Wohler - - * files.el (auto-mode-alist): Remove mh-letter-mode. Unnecessary, - and causes problems with non-MH users (such as Gnus users). - -2005-12-08 Nick Roberts - - * progmodes/gdb-ui.el (gdb-find-file-unhook): Delete variable. - (gdb-set-gud-minor-mode, gdb-set-gud-minor-mode): Delete functions. - (gdb-set-gud-minor-mode-existing-buffers, gdb-init-2): Use GDB - command "info sources". Move calls to GDB command "list". - (gdb-find-file-hook): Just use gdb-source-file-list. - (gdb-source-file-regexp): Use regexp for pre-GDB 6.4. - (gdb-source-file-regexp-1): New regexp for GDB 6.4+ only. - (gdb-set-gud-minor-mode-existing-buffers-1): Use it. - (gdb-data-list-register-values-handler): Use correct trigger name. - -2005-12-07 Kim F. Storm - - * ido.el (ido-completion-map): Rename from ido-mode-map. - (ido-common-completion-map, ido-file-completion-map) - (ido-file-dir-completion-map, ido-buffer-completion-map): - Rename from ido-mode-....-map. - (ido-init-completion-maps): Rename from ido-init-mode-maps. - (ido-setup-completion-map): Rename from ido-define-mode-map. - (ido-read-internal): Bind minibuffer-local-filename-completion-map - to ido-completion-map. - -2005-12-07 Kenichi Handa - - * international/mule-cmds.el - (set-display-table-and-terminal-coding-system): If the coding - system specified in `unibyte-display' property is different from - the arg coding-system, don't setup standard-display-table. - -2005-12-06 Stefan Monnier - - * emacs-lisp/edebug.el (edebug-skip-whitespace): read1:lread.c says - that comments end at \n, regardless of selective-display. - -2005-12-07 Nick Roberts - - * progmodes/gdb-ui.el (gdb-error-regexp, gdb-first-post-prompt) - (gdb-version): New variables. - (gdb-source-file-list, gdb-register-names) - (gdb-changed-registers): New variables for use with GDB 6.4+. - (gdb-ann3): Replace with... - (gdb-init-1, gdb-init-2): ...two new functions. - (gdba, gdb-prompt): Call gdb-init-1. - (gdb-get-version): New function. Call gdb-init-2 from here. - (gud-watch): Make it work with mouse events too. - (gdb-post-prompt): Don't add to queue until GDB version is known. - (gdb-speedbar-expand-node, gdb-post-prompt, gdb-registers-mode) - (gdb-locals-mode): Use gdb-version. - (gdb-memory-format-map, gdb-memory-unit-map) - (gdb-locals-watch-map): Rename from gdb-*-*-keymap. - (gdb-locals-font-lock-keywords-1) - (gdb-locals-font-lock-keywords-2): New variables. - (gdb-find-file-hook): Make it work with GDB 6.4+ too. - (gdb-set-gud-minor-mode-existing-buffers-1) - (gdb-var-list-children-1, gdb-var-list-children-handler-1) - (gdb-var-update-1, gdb-var-update-handler-1) - (gdb-data-list-register-values-handler) - (gdb-data-list-register-values-custom) - (gdb-get-changed-registers, gdb-get-changed-registers-handler) - (gdb-stack-list-locals-handler, gdb-get-register-names): - New functions for use with GDB 6.4+. - (gdb-locals-watch-map-1): New variable for use with GDB 6.4+. - (gdb-source-file-regexp, gdb-var-list-children-regexp-1) - (gdb-var-update-regexp-1, gdb-data-list-register-values-regexp) - (gdb-stack-list-locals-regexp) - (gdb-data-list-register-names-regexp): New regexps for use with - GDB 6.4+. - -2005-12-06 Stefan Monnier - - * progmodes/cc-defs.el (c-emacs-features): Don't assume point-min==1. - -2005-12-06 Nozomu Ando - - * mail/smtpmail.el (smtpmail-try-auth-methods): Make password - prompts work for AUTH PLAIN. Also reported by Steve Allan - . - -2005-12-06 K,Aa(Broly L$,1 q(Brentey - - * frame.el (set-frame-parameter): Add doc string. - -2005-12-06 Carsten Dominik - - * textmodes/org.el (org-occur-highlights): New variable. - (org-highlight-new-match, org-remove-occur-highlights): New functions. - (org-highlight-sparse-tree-matches): New option. - (org-do-occur): New function. - (org-get-heading): Make it work also at beginning of line. - (org-category-table): New variable. - (org-get-category-table, org-get-category) - (org-camel-to-words, org-link-search): New functions. - (org-select-this-todo-keyword): New variable. - (org-todo-list): New command. - (org-shiftright, org-shiftleft): New commands. - (org-agenda-todo): Add prefix argument. - (org-show-hierarchy-above): New option. - (org-show-todo-tree): Numerical prefix creates tree for specific - TODO keyword. - (org-outline-level): New function, to assign a level to plain - lists items. - (org-cycle-include-plain-lists): New option. - (org-mode): Use `org-outline-level' as value of `outline-level'. - (org-cycle): Temporarily switch `outline-regexp' if - `org-cycle-include-plain-lists' is non-nil. - (org-start-icalendar-file): Fix format bug. - (org-agenda-get-day-entries): Create category table. - (org-agenda-get-todos, org-agenda-get-timestamps) - (org-agenda-get-deadlines, org-agenda-get-scheduled) - (org-agenda-get-blocks): Use `org-get-category'. - (org-context-in-file-links): Rename from - `org-line-numbers-in-file-links'. - -2005-12-06 Romain Francoise - - * window.el (balance-windows): Delete extraneous third arg in call - to `enlarge-window'. - -2005-12-06 Kenichi Handa - - * international/kinsoku.el (kinsoku-longer): Check eolp, not eobp. - -2005-12-06 Nick Roberts - - * progmodes/gdb-ui.el (gdb-var-create-handler) - (gdb-var-evaluate-expression-handler, gdb-frame-handler) - (gdb-var-list-children-handler, gdb-var-update-handler): - Current buffer is already gdb-partial-output-buffer, don't - make it current again. - -2005-12-05 Luc Teirlinck - - * buff-menu.el (Buffer-menu-use-frame-buffer-list): New user option. - (list-buffers-noselect): Use it. - -2005-12-05 Stefan Monnier - - * mail/sendmail.el: Remove unnecessary leading-star in docstrings. - (mail-yank-ignored-headers): Use regexp-opt. - (mail-mode-map): Move initialization into declaration. - (mail-sent-via): Remove unused shadowed var `to-line'. - (mail-mailer-swallows-blank-line): Use with-temp-buffer. - (mail-bury, sendmail-send-it, mail-do-fcc): Use with-current-buffer. - (mail-do-fcc): Use dolist and push. - (mail-mode-fill-paragraph): Pass the arg to fill-region-as-paragraph. - (mail-yank-ignored-headers): Don't autoload. - -2005-12-05 Kenichi Handa - - * international/mule-cmds.el (set-language-info-internal): New fun. - (set-language-info): Call set-language-info-internal to update - language-info-alist. If LANG-ENV is the current one, call - set-language-environment to make INFO effective now. - (set-language-info-alist): Likewise. - (locale-language-names): With locale "en", use English - lang. env. but set the default codings to iso-8859-1. - -2005-12-04 Nick Roberts - - * progmodes/gdb-ui.el (gdb-use-inferior-io-buffer) - (gdb-speedbar-auto-raise): Echo new state in minibuffer. - (gdb-var-create-handler, gdb-assembler-custom): Use search-forward - for plain strings. - (gdb-frames-mode): Remove redundant call to font-lock-mode. - (gdb-all-registers): Rename from toggle-gdb-all-registers. - Create registers buffer if necessary. Echo new state in minibuffer. - (gdb-registers-mode-map, gdb-registers-mode): Use gdb-all-registers. - -2005-12-03 Chong Yidong - - * info.el (Info-fontify-node): Match external links using - non-directory part of filename. - -2005-12-04 Juri Linkov - - * font-core.el (global-font-lock-mode): Use define-global-minor-mode - instead of easy-mmode-define-global-mode. Add `:group font-lock'. - (font-lock-mode): Replace `:group font-lock' with `nil nil nil' - because there is no customization option for it. - - * font-lock.el (lisp-font-lock-keywords-1): - Add define-global-minor-mode. - - * emacs-lisp/autoload.el (make-autoload): Add define-global-minor-mode. - - * emacs-lisp/derived.el (define-derived-mode): Put `definition-name' - properties on the constructed variable names. - - * emacs-lisp/easy-mmode.el (easy-mmode-define-navigation): - Put `definition-name' properties on the constructed function names - next-sym and prev-sym. - - * emacs-lisp/find-func.el (find-function-regexp): - Add define-global-minor-mode. Replace `easy-mmode-define-global-mode' - with `easy-mmode-define-[a-z-]+'. Add easy-menu-define. - (find-variable-regexp): Add easy-mmode-defmap, easy-mmode-defsyntax - and easy-menu-define. - - * emacs-lisp/lisp-mode.el: Put `doc-string-elt' property on - easy-mmode-define-global-mode and define-global-minor-mode. - (lisp-imenu-generic-expression): Add define-global-minor-mode. - - * progmodes/cwarn.el (global-cwarn-mode): Use define-global-minor-mode - instead of easy-mmode-define-global-mode. - - * progmodes/idlw-shell.el (idlwave-shell-electric-debug-mode): - Use define-minor-mode instead of easy-mmode-define-minor-mode. - - * cus-edit.el (customize-group, customize-group-other-window): - Filter out autoloaded options from the group completion list by - using heuristics that autoloaded groups don't have `custom-autoload' - property on their symbols (they have only `custom-loads'). - - * simple.el (completion-setup-function): Put completions-common-part - face on complete completion string too (i.e. completion string - without completions-first-difference face). - - * man.el (Man-section-regexp): Add 0-9 to support "3X11" sections. - -2005-12-03 Eli Zaretskii - - * view.el (view-mode): Doc fix. - - * disp-table.el (standard-display-european): Add to the warning - message a reference to the doc string. - - * play/yow.el (apropos-zippy): Call print-help-return-message, - similar to other Help and Apropos commands. - - * help.el (print-help-return-message): If pop-up-frames is - non-nil, set up help-return-method to delete the help window and, - possibly, its frame as well, and don't display message about - scrolling the help window. Doc fix. - (help-return-method): Doc fix. - -2005-12-03 Martin Rudalics - - * emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression): Fix bug - whereby names of length one or names starting with a - symbol-constituent character would not be returned. - -2005-12-03 Johan Bockg,Ae(Brd - - * subr.el (atomic-change-group): Add edebug and indentation spec. - -2005-12-02 Stefan Monnier - - * completion.el (save-completions-file-name): Fix typo in last change. - -2005-12-02 Jan Dj,Ad(Brv - - * info.el: Move back/forward history to the beginning of the tool bar. - -2005-12-02 Ken Manheimer - - * allout.el (eval-when-compile): Remove unnecessary load of cl. - Add fset of allout-real-isearch-abort during compile to fix - byte-compilation warnings. - (allout-mode-p): Move definition of this macro above all uses, or - byte compilation in barren Emacs (eg, during Emacs build) will - lack the definition. - (allout-mode): Move this variable above any uses, or byte - compilation will fail. - (allout-resolve-xref): Remove use of personal file-reference function. - (allout-toggle-current-subtree-encryption): Do the current (ie, - visible containing) topic, rather than nearest around point. Doc fix. - (allout-toggle-subtree-encryption): New function, workhorse that - works on nearest topic containing point. - (allout-encrypt-string): Signal requirement for newer version of pgg. - (allout-resumptions): Doc fix. - -2005-12-02 Eli Zaretskii - - * international/latexenc.el (latex-inputenc-coding-alist): Doc fix. - -2005-12-02 Agustin Martin - - * textmodes/flyspell.el (flyspell-external-point-words): - Consider a misspelling as found in the string search if: (a) misspelling - and found string lengths match, or (b) misspelling is found as - element in a boundary-chars separated longer string, or (c) - ispell-program-name is really ispell and misspelling is found as - part of a TeX string. After successful match move beginning of - search region to end of match. Warn about not found misspellings - once the process is done. - (flyspell-large-region): Do not set ispell-parser to tex if in TeX mode. - -2005-12-02 Nick Roberts - - * progmodes/gud.el (gud-menu-map): Put gud-finish back on the - tool bar (removed inadvertently). - -2005-12-02 Juri Linkov - - * log-view.el (log-view-diff): Clarify doc string. - -2005-12-01 Bill Wohler - - * Makefile.in (mh-loaddefs.el): Reinsert Change Log as its absence - triggers lm-verify errors. - -2005-12-01 Luc Teirlinck - - * simple.el (transient-mark-mode, line-number-mode) - (column-number-mode, size-indication-mode): Remove `:require nil'. - -2005-12-01 Nick Roberts - - * progmodes/gdb-ui.el (gdb-ann3): Bind mouse-2 to gdb-mouse-until - in the margin also. - (gdb-breakpoints-mode-map): Use D instead of d for - gdb-delete-breakpoint. - (gdb-get-frame-number): Require a number to match on. - (gdb-threads-mode-map): Add follow-link binding. - -2005-11-30 Jason Rumney - - * isearch.el (isearch-mode-map): Avoid exiting search on - language-change event. - -2005-11-30 Romain Francoise - - * speedbar.el (speedbar-default-position): New defcustom. - (speedbar-frame-reposition-smartly): Use it. - - * dframe.el (dframe-reposition-frame-emacs): Fix position - computation for `left' location. - Update copyright year. - -2005-11-30 Stefan Monnier - - * help.el (help-map): Move initialization into declaration. - - * emacs-lisp/autoload.el (make-autoload): Handle defgroup specially. - - * help-fns.el (help-argument-name): Don't autoload. - It's useless and triggers a bug in cus-dep.el causing ldefs-boot - to be re-loaded when customizing the `help' group. - -2005-11-30 John Paul Wallington - - * help-fns.el (describe-function-1): Fill arglist output. - -2005-11-30 Kim F. Storm - - * emulation/cua-rect.el (cua--rectangle-overlays): Make permanent-local. - (cua--rectangle-post-command): Cleanup overlays and deactivate mark - after revert-buffer (or anything else which kills all local variables). - - * apropos.el (apropos-parse-pattern): Doc fix. - Set apropos-regexp directly, rather than expecting callers to do so. - (apropos-command, apropos, apropos-value, apropos-documentation): - Simplify calls to apropos-parse-pattern. - -2005-11-29 Chong Yidong - - * hi-lock.el (hi-lock-line-face-buffer, hi-lock-face-buffer) - (hi-lock-face-phrase-buffer): Use hi-yellow face. - (hi-lock-write-interactive-patterns): Use comment-region. - - * longlines.el (longlines-mode): Add mail-setup-hook. - - * mail/mailheader.el, mail/sendmail.el: Revert 2005-11-17 changes. - - * simple.el (sendmail-user-agent-compose, next-line): - Conditionally use hard-newline. - -2005-11-29 Reiner Steib - - * international/latexenc.el (latex-inputenc-coding-alist): - Reword doc string. - -2005-11-29 Chong Yidong - - * help.el (describe-key-briefly, describe-key): Recognize default - bindings. - -2005-11-29 Romain Francoise - - * view.el (view-inhibit-help-message): New defcustom. - (view-mode-enter): Use it. - -2005-11-29 Michael Kifer - - * ediff-wind.el (ediff-setup-control-frame, ediff-make-wide-display): - Preserve user position. - -2005-11-28 Luc Teirlinck - - * font-lock.el: Throw error if facemenu is not loaded to prevent - accidental change of loading order in loadup.el. (Suggested by RMS.) - - * loadup.el: Add comment explaining why facemenu must be loaded - before font-lock. - -2005-11-28 Jay Belanger - - * calc/calc.el: Change global keybinding for calc-dispatch to "\C-x*". - (calc-dispatch-map): Add more keys for `calc-same-interface'. - - * calc/calc-misc.el (calc-dispatch-help): Update docstring. - - * calc/calc-embed.el (calc-do-embedded): Update help message. - - * calc/calc-prog.el (calc-user-define-invokation): Update help message. - -2005-11-28 Stefan Monnier - - * log-edit.el (log-edit-insert-cvs-rcstemplate): Ignore stderr. - - * emacs-lisp/elp.el (elp-not-profilable): Replace interactive-p with - called-interactively-p. - (elp-profilable-p): Rename from elp-not-profilable-p. - Invert result and take into account macros and autoloaded functions. - (elp-instrument-function): Update call. - (elp-instrument-package): Update call. Add completion. - (elp-pack-number): Use match-string. - (elp-results-jump-to-definition-by-mouse): Merge into - elp-results-jump-to-definition and then remove. - (elp-output-insert-symname): Make help echo text single-line. - - * replace.el (query-replace-map): Move initialization into declaration. - (occur-engine): Use with-current-buffer. - (occur-mode-goto-occurrence): Make it work for mouse-clicks as well. - (occur-mode-mouse-goto): Replace with an alias. - -2005-11-28 Juri Linkov - - * simple.el (quoted-insert): Let-bind input-method-function to nil. - - * term/w32-win.el: Bind [S-tab] to [backtab]. - - * info.el (Info-fontify-node): Set 2nd arg `noerror' of - `Info-find-file' to t. - - * replace.el (occur-mode-mouse-goto): Pop, don't switch. - (occur-mode-goto-occurrence): Let-bind same-window-buffer-names - and same-window-regexps. - (occur-next-error): Don't move point for arg 0. - -2005-11-28 Chong Yidong - - * replace.el (occur-mode-goto-occurrence): Pop, don't switch. - -2005-11-28 Stefan Monnier - - * log-edit.el (log-edit-changelog-use-first): New var. - (log-edit-changelog-ours-p): Use it. - (log-edit-insert-changelog): Set it with new arg `use-first'. - (log-edit-insert-cvs-rcstemplate, log-edit-insert-filenames): New funs. - (log-edit-hook): Add them to the list of suggested options. - - * textmodes/flyspell.el (flyspell-last-buffer): New var. - (flyspell-accept-buffer-local-defs): Use it to avoid doing silly - redundant work. - (flyspell-mode-on): Use add-hook for after-change-functions. - (flyspell-mode-off): Use remove-hook for after-change-functions. - (flyspell-changes): Make it buffer-local. - (flyspell-after-change-function): Make it non-interactive. Use push. - (flyspell-post-command-hook): Check input-pending-p while processing - the potentially long list of buffer changes. - -2005-11-28 K,Aa(Broly L$,1 q(Brentey - - * buff-menu.el (list-buffers-noselect): Display the selected - frame's buffer list, not the global one. - -2005-11-28 Nick Roberts - - * xt-mouse.el (xterm-mouse-event): Set last-input-event so - that (list last-input-event) works as in interactive spec. - -2005-11-27 Luc Teirlinck - - * loadup.el ("facemenu"): Load facemenu before font-lock, because - `facemenu-keymap' needs to be defined when font-lock is loaded. - Otherwise, `M-o M-o' is not bound to `font-lock-fontify-block'. - -2005-11-27 Stefan Monnier - - * completion.el: Remove useless leading * in defcustom docstrings. - (save-completions-file-name): Use ~/.emacs.d if available. - (completion-standard-syntax-table): Rename from - cmpl-standard-syntax-table and fold initialization into declaration, - thus removing cmpl-make-standard-completion-syntax-table. - (completion-lisp-syntax-table, completion-c-syntax-table) - (completion-fortran-syntax-table, completion-c-def-syntax-table): Idem. - (cmpl-saved-syntax, cmpl-saved-point): Remove. - (symbol-under-point, symbol-before-point) - (symbol-under-or-before-point, symbol-before-point-for-complete) - (add-completions-from-c-buffer): Use with-syntax-table. - (make-completion): Don't return a list of completion entries. - Update callers. - (cmpl-prefix-entry-head, cmpl-prefix-entry-tail): Use defalias. - (completion-initialize): Rename from initialize-completions. - (completion-find-file-hook): Rename from cmpl-find-file-hook. - (kill-emacs-save-completions): Collect stats here. - (save-completions-to-file, load-completions-from-file): - Use with-current-buffer. - (completion-def-wrapper): Rename from def-completion-wrapper. Make it - into a function. Move all calls to toplevel. - (completion-lisp-mode-hook): New fun. - (completion-c-mode-hook, completion-setup-fortran-mode): - Set the syntax-table here. Use local-set-key. - (completion-saved-bindings): New var. - (dynamic-completion-mode): Make it into a proper minor mode. - (load-completions-from-file): Remove unused var `num-uses'. - - * emacs-lisp/cl-macs.el (defstruct): Don't define the default - constructor if it is explicitly overridden. - - * complete.el (PC-completion-as-file-name-predicate): - Use minibuffer-completing-file-name. - (partial-completion-mode): Use find-file-not-found-functions. - (PC-lisp-complete-symbol): Use with-syntax-table. - (PC-look-for-include-file): Remove dead setq. - (PC-look-for-include-file, PC-expand-many-files, PC-do-completion) - (PC-complete): Use with-current-buffer. - - * progmodes/sh-script.el (sh-font-lock-syntactic-keywords): \ doesn't - escape single quotes. - -2005-11-27 Luc Teirlinck - - * dabbrev.el (dabbrev-completion): Simplify code, by getting rid - of `if' whose condition always returned nil. Doc fix. - - * buff-menu.el (Buffer-menu-revert-function): Make the selected - window's buffer the current buffer around the call to - `list-buffers-noselect'. This is necessary to mark that buffer - with a `.' in the Buffer Menu when called from Lisp, for instance - by Auto Revert Mode. - -2005-11-28 Nick Roberts - - * progmodes/gdb-ui.el (gdb-stopped): Detect child process when - attaching to it. - (gdb-pre-prompt): Make sure gdb-error is reset. - - * progmodes/gud.el (gud-gdb-marker-filter): When GDB is invoked - with a child process, detect it. - (gud-speedbar-buttons): Match regexp more carefully. - -2005-11-27 Richard M. Stallman - - * mouse.el (mouse-drag-move-window-bottom): - Use adjust-window-trailing-edge. - -2005-11-27 Luc Teirlinck - - * simple.el (blink-matching-open): Ignore - `blink-matching-paren-on-screen' if `show-paren-mode' is enabled. - (blink-matching-paren-on-screen): Update docstring. - - * paren.el (show-paren-mode): No longer change - `blink-matching-paren-on-screen'. - -2005-11-27 John Paul Wallington - - * progmodes/gdb-ui.el (gdb-goto-breakpoint, gdb-frames-select) - (gdb-threads-select, gdb-edit-register-value): - Use `posn-set-point' instead of `mouse-set-point' because the - latter is not fbound when configured without X. - -2005-11-27 Kim F. Storm - - * emulation/cua-rect.el (cua--highlight-rectangle): Preserve - existing face when partially highlighting a TAB in a rectangle. - -2005-11-26 Kim F. Storm - - * ido.el (ido-mode-map): Doc fix. - (ido-mode-common-map, ido-mode-file-map) - (ido-mode-file-dir-map, ido-mode-buffer-map): New keymaps. - (ido-define-mode-map): Rewrite. Select one of the new maps as - parent for ido-mode-map instead of building from scratch. - (ido-init-mode-maps): New defun to initialize new maps. - (ido-mode): Call it. - (ido-switch-buffer): Doc fix -- use \. - (ido-find-file): Doc fix -- use \. - -2005-11-26 John Paul Wallington - - * arc-mode.el (archive-extract): Use `posn-set-point' instead of - `mouse-set-point' because the latter is not fbound when configured - without X. - -2005-11-26 Thien-Thi Nguyen - - * files.el (file-relative-name): Doc fix. - -2005-11-26 Kurt Hornik - - * progmodes/octave-inf.el (inferior-octave-startup): Force a - non-empty string for secondary prompt PS2. - -2005-11-25 Chong Yidong - - * progmodes/compile.el (compilation-setup): Fix last change. - -2005-11-26 Nick Roberts - - * progmodes/gdb-ui.el (gdb-info-breakpoints-custom) - (gdb-mouse-toggle-breakpoint-margin) - (gdb-mouse-toggle-breakpoint-fringe, gdb-threads-select): - Add gdb-server-prefix to keep out of command history. - (gdb-edit-register-value): New function. - (gdb-registers-mode-map): Bind mouse-2 and RET to it. - (gdb-info-registers-custom): Use above map. - -2005-11-25 Chong Yidong - - * custom.el (enable-theme): Signal error if argument is not a - theme. Don't recalculate a face if it's not loaded yet. - - * cus-face.el (custom-theme-set-faces): Don't change saved-face if - the `user' theme is in effect. - - * info.el (Info-on-current-buffer): Record actual filename in - Info-current-file, instead of t, or a fake filename if a non-file - buffer. Make autoload. - (Info-find-node, Info-revert-find-node): No need to check for - Info-current-file nil. - (Info-set-mode-line, Info-up, Info-copy-current-node-name): - Info-current-file is now never `t'. - (Info-fontify-node): Many simplifications due to Info-current-file - always being valid. Use Info-find-file to find node filename. - -2005-11-25 David Kastrup - - * longlines.el (longlines-wrap-line): Reorder wrapping to "insert - new character, then delete" in order to preserve markers. - -2005-11-25 David Ponce - - * recentf.el (recentf-arrange-by-rule): Handle a special - `auto-mode-alist'-like "strip suffix" rule. - (recentf-build-mode-rules): Handle second level auto-mode entries. - -2005-11-25 Michael Kifer - - * viper-keym.el (viper-ESC-key): Use different values in terminal and - window modes. - - * viper.el (viper-emacs-state-mode-list): Delete mail-mode, add - jde-javadoc-checker-report-mode. - - * ediff-wind (ediff-make-wide-display): Slight simplification. - - * ediff.el (ediff-date): Change the date of last update. - -2005-11-24 Chong Yidong - - * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'. - Use define-minor-mode, and make it a local mode. Turn on font-lock. - (hi-lock-mode): New global minor mode. - (turn-on-hi-lock-if-enabled): New function. - (hi-lock-line-face-buffer, hi-lock-face-buffer, hi-lock-set-pattern): - Change arguments to regexp and face instead of a font-lock pattern. - Directly set face property, instead of refontifying. - (hi-lock-font-lock-hook): Check if font-lock is being turned on. - (hi-lock-find-patterns): Use line-number-at-pos. - - (hi-lock-face-phrase-buffer): Call hi-lock-buffer-mode. Use new - arguments for hi-lock-set-pattern. - (hi-lock-unface-buffer, hi-lock-set-file-patterns): - Call font-lock-fontify-buffer. - (hi-lock-find-file-hook, hi-lock-current-line) - (hi-lock-refontify, hi-lock-set-patterns): Delete unused functions. - - (hi-lock-font-lock-hook): Turn off hi-lock when font lock is - turned off. - - * progmodes/compile.el (compilation-setup): Don't fiddle with - font-lock-defaults. - -2005-11-25 Nick Roberts - - * progmodes/gdb-ui.el (gdb-var-create-handler) - (gdb-var-list-children-handler): Find values for all variable - objects. gud-speedbar-buttons decides whether to display them. - -2005-11-24 Romain Francoise - - * info.el (Info-speedbar-fetch-file-nodes): Prefix temporary - buffer name with a space. - -2005-11-24 Carsten Dominik - - * textmodes/org.el (org-export-plain-list-max-depth): Rename from - `org-export-local-list-max-depth'. Change default value to 3. - (org-auto-renumber-ordered-lists) - (org-plain-list-ordered-item-terminator): New options. - (org-at-item-p, org-beginning-of-item, org-end-of-item) - (org-get-indentation, org-get-string-indentation) - (org-maybe-renumber-ordered-list, org-renumber-ordered-list): - New functions. - (org-move-item-down, org-move-item-up): New commands. - (org-export-as-html): New classes for CSS support. Bug fix in - regular expression detecting fixed-width regions. Respect - `org-local-list-ordered-item-terminator'. - (org-set-autofill-regexps, org-adaptive-fill-function): "1)" is - also a list item. - (org-metaup, org-metadown, org-shiftmetaup, org-shiftmetadown): - New item moving functions. - -2005-11-24 Juri Linkov - - * isearch.el (isearch-repeat): With empty search ring set - `isearch-error' to the error string instead of signaling error - with the function `error'. - -2005-11-24 YAMAMOTO Mitsuharu - - * term/mac-win.el: Make modifier `ctrl' an alias for `control'. - -2005-11-24 Nick Roberts - - * progmodes/gdb-ui.el (gdb-speedbar-auto-raise): New function - and variable. - (gdb-var-create-handler, gdb-var-list-children-handler): - Don't match on "char **...". - (gdb-var-update-handler): Find values for all variable objects. - (gdb-info-frames-custom): Identify frames by leading "#". - - * progmodes/gud.el (gud-speedbar-menu-items): Add - gdb-speedbar-auto-raise as radio button. - (gud-speedbar-buttons): Raise speedbar if requested. - Don't match on "char **...". - (gud-speedbar-buttons): Add (pointer) value for non-leaves. - Make it editable. - -2005-11-23 Chong Yidong - - * info.el (Info-fontify-node): Handle the case where - Info-current-file is t. - -2005-11-23 Stefan Monnier - - * simple.el (blink-matching-open): Fix off-by-one in last change. - -2005-11-23 YAMAMOTO Mitsuharu - - * term/mac-win.el: Don't change default directory. - -2005-11-22 Luc Teirlinck - - * cus-edit.el (Custom-reset-standard): Make it handle Custom group - buffers correctly. (It used to throw an error in such buffers.) - Make it ask for confirmation in group buffers and other Custom - buffers containing more than one customization item. - -2005-11-22 John Paul Wallington - - * net/goto-addr.el (goto-address-fontify): Put `follow-link' - property on mail and url overlays. - (goto-address-at-point): Use `posn-set-point' instead of - `mouse-set-point' because the latter is not fbound when configured - without X. - -2005-11-22 Lars Hansen - - * ls-lisp.el (ls-lisp-parse-symlink): Delete. - (ls-lisp-classify, ls-lisp-format): Delete call to - ls-lisp-parse-symlink. - (ls-lisp-handle-switches): Handle symlinks to directories as - directories when ls-lisp-dirs-first in non-nil. - -2005-11-21 Luc Teirlinck - - * startup.el (command-line): Make sure that loaddefs.el is handled - correctly in load-history. - -2005-11-22 Nick Roberts - - * progmodes/gdb-ui.el (gdb-locals-watch-keymap): New local map. - (gdb-struct-string, gdb-array-string): New constants. - (gdb-info-locals-handler): Use them. - (gdb-reset): Reset gdb-var-list to nil. - -2005-11-21 Stefan Monnier - - * progmodes/sh-script.el (sh-font-lock-paren): Handle continued lines - in patterns. - -2005-11-21 Juri Linkov - - * custom.el (defcustom): Update link types in docstring. - -2005-11-20 Martin Rudalics - - * custom.el (defgroup): Add doc-string-elt info. - - * widget.el (define-widget): Don't use declare for the doc-string-elt. - -2005-11-20 Stefan Monnier - - * newcomment.el (comment-enter-backward): Fix last fix. - - * simple.el (blink-matching-open): - * paren.el (show-paren-function): Allow new paren-class info. - -2005-11-20 Chong Yidong - - * faces.el: Revert 2005-11-17 change. :ignore-defface is now - handled automagically. - -2005-11-20 Andreas Schwab - - * descr-text.el (describe-char): When copying overlays put them - over the full char description instead of just the first character - of it. - -2005-11-20 Juri Linkov - - * simple.el (what-cursor-position): - * descr-text.el (describe-char): Use Lisp-readable syntax - for octal and hex. Reorder decimal, octal and hex values. - Remove excess whitespace in the output. Use `=' in `column=' - like in `point=' and `Hscroll='. - - * international/mule-cmds.el (encoded-string-description): - Use Lisp-readable syntax for hex. - -2005-11-19 Stefan Monnier - - * newcomment.el (comment-enter-backward): Handle the case where the - comment is closed by EOB. - -2005-11-19 Chong Yidong - - * longlines.el (longlines-before-revert-hook) - (longlines-after-revert-hook): New functions. - (longlines-mode): Turn off longlines temporarily when reverting. - Add a message-setup-hook. - (longlines-decode-buffer): New function. - (longlines-wrap-line): Preserve marker positions. - -2005-11-19 Andreas Schwab - - * emacs-lisp/shadow.el: Handle compressed files. - -2005-11-19 Romain Francoise - - * net/browse-url.el (browse-url-default-browser): Signal an error - if no usable browser can be found, rather than try to load w3. - -2005-11-16 Ryan Yeske - - * net/rcirc.el (rcirc-mangle-text): Add bold face property without - replacing existing properties. - (rcirc-my-nick, rcirc-other-nick, rcirc-server) - (rcirc-nick-in-message, rcirc-prompt): Use min-colors and remove - tty specs. - (rcirc-server-prefix, rcirc-server): New faces. - (rcirc-url-regexp): Generate with rx macro. - (rcirc-last-server-message-time): New variable. - (rcirc-filter): Record time of last message. - (rcirc-keepalive): Kill processes that did not send a message - since the last ping. - (rcirc-mode): Give rcirc-topic a local binding here. - -2005-11-19 Micha,Ak(Bl Cadilhac - - * subr.el (read-passwd): Fontify the prompt as we do with other - prompts. - -2005-11-19 Ryan Yeske - - * ffap.el (ffap-menu-rescan): Use inhibit-read-only instead of - binding buffer-read-only to nil. - -2005-11-19 Eli Zaretskii - - * complete.el (partial-completion-mode): - Mention completion-auto-help in the doc string. - - * man.el (Man-highlight-references): Doc fix. Reformat code in a - more Lisp-ish way. - -2005-11-19 Slawomir Nowaczyk (tiny change) - - * ls-lisp.el (ls-lisp-format-file-size): Format file size with 9 - digits, not 8, to avoid misalignment for files larger than 100MB. - -2005-11-19 Eli Zaretskii - - * menu-bar.el (menu-bar-describe-menu) : - Mention "keyboard shortcuts" in the help text. - -2005-11-19 YAMAMOTO Mitsuharu - - * startup.el (fancy-splash-default-action): Discard only - mouse-down and succeeding mouse-up events in the splash screen - window so that drag-n-drop event can be processed. - -2005-11-18 Chong Yidong - - * longlines.el (longlines-mode): Add hacks for mail-mode and - message-mode. - -2005-11-18 Carsten Dominik - - * textmodes/org.el (org-table-sort-lines): New command. - (org-tbl-menu): Add entry for `org-table-sort-lines'. - (org-add-file): Command removed, use `org-agenda-file-to-front' - instead. - (org-export-icalendar): Use `org-icalendar-combined-name'. - (org-cycle-agenda-files, org-agenda-file-to-end) - (org-agenda-file-to-front): New commands. - (org-table-tab-jumps-over-hlines, org-export-html-style): - New options. - (org-table-next-field): Use `org-table-tab-jumps-over-hlines'. - (org-at-table.el-p, org-set-autofill-regexps, org-html-protect): - New functions. - (org-fill-paragraph): Call `org-table-align' in tables. - (org-mode): Call `org-set-autofill-regexps'. - (org-export-as-html): Support for local handformatted lists. - Modified to produce valid HTML 4.0. Use `org-export-html-style'. - (org-export-local-list-max-depth): New option. - (org-html-expand): Use `org-html-protect'. - -2005-11-18 Nick Roberts - - * progmodes/gud.el (gud-install-speedbar-variables): Bind gud-pp - to "p". - (gdb): Move definition of gud-pp to... - - * progmodes/gdb-ui.el (gdb-ann3): ...here. Make it work in the - speedbar. - (gdb-find-watch-expression): New function. - -2005-11-17 Chong Yidong - - * faces.el (face-attribute, set-face-attribute): Mention existence - of `:ignore-defface' setting in docstring. - -2005-11-17 Stefan Monnier - - * simple.el (completion-setup-function): Fix last change. - -2005-11-17 John Paul Wallington - - * ibuf-ext.el (ibuffer-interactive-filter-by-mode): - Use `posn-set-point' instead of `mouse-set-point' because the - latter is not fbound when configured without X. - - * comint.el (comint-insert-input): Likewise. - -2005-11-17 Chong Yidong - - * simple.el (hard-newline): New variable. - (sendmail-user-agent-compose, next-line): Use it. - - * mail/sendmail.el (mail-setup, mail-send, mail-insert-from-field) - (sendmail-send-it, mail-do-fcc, mail-cc, mail-bcc, mail-fcc) - (mail-mail-reply-to, mail-mail-followup-to) - (mail-position-on-field, mail-signature, mail-yank-original) - (mail-attach-file): Likewise. - - * mail/mailheader.el (mail-header-format) - (mail-header-format-function): Likewise. - - * add-log.el (add-change-log-entry, change-log-merge): Likewise. - -2005-11-17 Juri Linkov - - * font-lock.el (font-lock-faces): Rename this defgroup from - `font-lock-highlighting-faces'. - (font-lock-comment-face, font-lock-comment-delimiter-face) - (font-lock-string-face, font-lock-doc-face) - (font-lock-keyword-face, font-lock-builtin-face) - (font-lock-function-name-face, font-lock-variable-name-face) - (font-lock-type-face, font-lock-constant-face) - (font-lock-warning-face, font-lock-negation-char-face) - (font-lock-preprocessor-face) - (font-lock-regexp-grouping-backslash) - (font-lock-regexp-grouping-construct): Rename :group from - `font-lock-highlighting-faces' to `font-lock-faces'. - - * cus-edit.el (lisp, c, tex): - * progmodes/ada-mode.el (ada): - * progmodes/asm-mode.el (asm): - * progmodes/cperl-mode.el (cperl-faces): - * progmodes/cpp.el (cpp): - * progmodes/dcl-mode.el (dcl): - * progmodes/f90.el (f90): - * progmodes/fortran.el (fortran): - * progmodes/icon.el (icon): - * progmodes/idlwave.el (idlwave-misc): - * progmodes/m4-mode.el (m4): - * progmodes/make-mode.el (makefile): - * progmodes/meta-mode.el (meta-font): - * progmodes/modula2.el (modula2): - * progmodes/octave-mod.el (octave): - * progmodes/pascal.el (pascal): - * progmodes/perl-mode.el (perl): - * progmodes/prolog.el (prolog): - * progmodes/ps-mode.el (PostScript-edit): - * progmodes/scheme.el (scheme): - * progmodes/sh-script.el (sh-script): - * progmodes/simula.el (simula): - * progmodes/tcl.el (tcl): - * textmodes/nroff-mode.el (nroff): - * textmodes/reftex-vars.el (reftex-fontification-configurations): - * textmodes/sgml-mode.el (sgml): - * textmodes/texinfo.el (texinfo): - Add :link (custom-group-link font-lock-faces) to defgroup. - - * hi-lock.el (hi-lock): Rename this defgroup from - `hi-lock-interactive-text-highlighting'. Change parent group from - `faces' to `font-lock'. Add link to the manual. - (hi-lock-mode, hi-lock-file-patterns-range) - (hi-lock-exclude-modes, hi-lock-faces): Rename :group from - `hi-lock-interactive-text-highlighting' to `hi-lock'. - (hi-lock-faces): Add :group `faces'. - - * cus-edit.el (custom-variable-prompt): Clarify the code. - - * faces.el (face-read-string): Set the default value arg of - completing-read. - -2005-11-16 Luc Teirlinck - - * rfn-eshadow.el (file-name-shadow-properties) - (file-name-shadow-tty-properties, file-name-shadow-mode): - Remove autoloads, because the file is now preloaded. - -2005-11-16 Stefan Monnier - - * printing.el (easy-menu-intern): Don't define. - (pr-get-symbol): Use easy-menu-intern only if defined. - - * simple.el (blink-matching-open): Simplify a bit. - (completion-setup-function): Fix the case of partial-completion-mode - when the minibuffer's contents start with "-". - Obey completion-base-size-function even when - minibuffer-completing-file-name is non-nil. - -2005-11-16 Richard M. Stallman - - * net/eudcb-ph.el (eudc-ph-open-session): - Use set-process-query-on-exit-flag. - - * mail/smtpmail.el (smtpmail-send-it): Use insert-buffer-contents. - - * international/ucs-tables.el (ucs-set-table-for-input): - Use make-local-variable, not make-variable-buffer-local. - - * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): - Improve warning message text. - - * savehist.el (savehist-save-hook): Add :group. - - * menu-bar.el (menu-bar-help-menu): - Rename Find Extra Packages to External Packages. - - * cus-edit.el (Custom-reset-standard): Verify that - :custom-standard-value prop exists before calling it. - - * apropos.el (apropos-calc-scores): Use apropos-pattern. - -2005-11-16 Martin Rudalics - - * wid-edit.el (color): Enclose %t in %{...%}. - - * cus-edit.el (face): Enclose %t in %{...%}. - -2005-11-16 Hrvoje Niksic - - * savehist.el (savehist-mode-hook): Re-add the var. - (savehist-mode): Use it. - -2005-11-16 Stefan Monnier - - * textmodes/flyspell.el: Fix commenting convention. - Remove unnecessary leading * in custom docstrings. - (flyspell-emacs): Remove unused var. - (flyspell-delete-region-overlays): Use remove-overlays. - (flyspell-accept-buffer-local-defs): Use save-current-buffer. - (flyspell-debug-signal-no-check, flyspell-debug-signal-changed-checked) - (flyspell-debug-signal-pre-word-checked, flyspell-post-command-hook) - (flyspell-debug-signal-word-checked): Use with-current-buffer. - (make-flyspell-overlay): Don't locally reuse a global name. - (flyspell-highlight-incorrect-region) - (flyspell-highlight-duplicate-region): Use flyspell-unhighlight-at. - (flyspell-check-previous-highlighted-word): Use flyspell-overlay-p. - (flyspell-notify-misspell): Remove unused args `start' and `end'. - (flyspell-word): Adjust call accordingly. Use ispell-send-string. - Wrap calls to accept-process-output inside with-local-quit since it's - often called from a post-command-hook. - (flyspell-correct-word, flyspell-auto-correct-word): - Use ispell-send-string. - (flyspell-xemacs-popup): Remove unused arg `event'. Update call. - - * calendar/diary-lib.el (diary-list-entries): Also hide the - terminating newline. - -2005-11-16 Carsten Dominik - - * textmodes/reftex.el (reftex-use-fonts): Remove the check for - window-system, to allow fonts on tty. - -2005-11-17 Nick Roberts - - * progmodes/gud.el (gud-speedbar-item-info): New function. - (gud-install-speedbar-variables): Use it to display data type - of watch expression as a tooltip in speedbar. - -2005-11-15 Luc Teirlinck - - * font-core.el (global-font-lock-mode): Add :version keyword, - because default was changed. - - * jka-cmpr-hook.el (auto-compression-mode): Ditto. - - * startup.el (command-line): Use `custom-reevaluate-setting' for - `file-name-shadow-mode'. - - * loadup.el: Preload rfn-eshadow. - - * rfn-eshadow.el (file-name-shadow-mode): Set :init-value to t. - Add :version keyword. - (file-name-shadow-properties, file-name-shadow-tty-properties) - (file-name-shadow): Add :version keyword. - - * cus-edit.el (custom-add-parent-links): Fix bug whereby, for - instance, `(fringe custom-face)' shadowed `(fringe custom-group)' - in the custom-group property of the symbol frames and the fringe - group got no link to its parent group frames. - Doc fix. - -2005-11-16 Nick Roberts - - * progmodes/gud.el (gud-stop-subjob): New function. - (gud-menu-map, gud-tool-bar-map): Use it. - -2005-11-16 Kim F. Storm - - * progmodes/gud.el (gud-menu-map): Let [stop] stop program rather - than kill it. - (gud-tool-bar-map): Likewise. Move cont/until/finish buttons - to a more useful/logical place. - -2005-11-16 Nick Roberts - - * progmodes/gud.el (gud-menu-map): Make visibility of stop and - go buttons complementary. - -2005-11-15 Stefan Monnier - - * rfn-eshadow.el (rfn-eshadow-regexp): Remove. - (rfn-eshadow-sifn-equal): New function. - (rfn-eshadow-update-overlay): Rewrite to use substitute-in-file-name. - -2005-11-15 Michael Kifer - - * viper-utils.el (viper-non-word-characters-reformed-vi): - Quote `-' in string. - - * viper.el (viper-emacs-state-mode-list): Ensure that - rcirc-mode buffers come up in Emacs state. - - * ediff-util.el (ediff-make-temp-file): Use proper file-name-handler - operation. - -2005-11-15 Dan Nicolaescu - - * term.el (term-termcap-format): Fix typos. - (term-down): Fix the negative argument case. - -2005-11-16 Nick Roberts - - * progmodes/gdb-ui.el: Remove face-alias left over from change on - 2005-08-15. - (gdb-ann3): New command gud-go. - (menu): Accomodate gdb-mi.el. - (gdb-assembler-custom): Make buffer of selected window current - so that set-window-point works. - - * progmodes/gud.el (gud-menu-map, gud-tool-bar-map): Re-define - buttons and include new ones. - -2005-11-16 Kim F. Storm - - * progmodes/gud.el (gud-tool-bar-item-visible-no-fringe): New function. - (gud-menu-map): Use it. - -2005-11-14 Luc Teirlinck - - * jka-cmpr-hook.el (auto-compression-mode): Enable it in a way - that works correctly for Custom and that does not override a user - who disables it. - - * help-mode.el (help-make-xrefs, help-xref-on-pp) - (help-xref-interned, help-follow): Make hyperlinks for variables - that are unbound, but have a non-nil variable-documentation property. - - * emacs-lisp/derived.el (define-derived-mode): Remove defvar for - mode hook. (It conflicted with defcustoms for some mode hooks.) - Use the `variable-documentation' property to give the mode hook a - docstring and expand that docstring. - -2005-11-14 Hrvoje Niksic - - * savehist.el (savehist-mode): Don't bother with - `custom-set-minor-mode'. - (savehist-coding-system): Check XEmacs version. - (history-length): Declare also at run time. - (savehist-mode): Don't emit a message. Don't run the minor mode hook. - Don't set the customize state. - (savehist-minibuffer-hook): Special case for when - minibuffer-history-variable is equal to t. - -2005-11-14 Stefan Monnier - - * files.el (write-file): Refresh VC status. - - * calendar/diary-lib.el (diary-list-entries, diary-show-all-entries) - (mark-diary-entries, make-diary-entry): Check default-major-mode rather - than fundamental-mode to see if the mode was set. - -2005-11-14 Romain Francoise - - * dired-x.el: If `vm-visit-folder' doesn't exist, define it as a - dummy function in `eval-when-compile' to avoid compiler warning. - Require `man' at compile time. - -2005-11-14 Jay Belanger - - * calc-alg.el (calcFunc-write-out-power): Rename it to - calcFunc-powerexpand. - (math-write-out-power): Rename it to math-powerexpand; have it - handle negative exponents. - (calc-writeoutpower): Rename it to calc-powerexpand. - - * calc-ext.el: Change calcFunc-writeoutpower and - calc-writeoutpower to calcFunc-powerexpand and calc-powerexpand in - autoloads. - Add calcFunc-ldiv to autoloads. - - * calc-arith.el (calcFunc-ldiv): New function. - - * calc.el (calc-left-divide): New function. - -2005-11-14 Juri Linkov - - * cus-edit.el (custom-variable-prompt): Set the default value arg - of completing-read. - - * cus-dep.el (custom-make-dependencies): Reverse the list of - found dependencies. - -2005-11-14 Dan Nicolaescu - - * menu-bar.el (menu-bar-options-menu): Delete "Syntax - Highlighting" entry, it is on by default now. - (menu-bar-options-save): Do not save global-font-lock-mode. - -2005-11-13 Richard M. Stallman - - * textmodes/flyspell.el (flyspell-large-region): - Call flyspell-accept-buffer-local-defs. - -2005-11-13 Agustin Martin - - * textmodes/flyspell.el (flyspell-notify-misspell): - Fix misspelling of "Misspelling". - (flyspell-process-localwords): New function. - (flyspell-large-region): Call flyspell-process-localwords and - flyspell-delete-region-overlays. - (flyspell-delete-region-overlays): New function. - (flyspell-delete-all-overlays): Call that. - -2005-11-13 Richard M. Stallman - - * help.el (help-for-help-internal): Improve doc of C-h a. - (describe-key): Improve prompt; doc fix. - -2005-11-13 Stefan Monnier - - * vc-svn.el (vc-svn-registered): Catch all errors. - - * cus-dep.el (custom-make-dependencies): Typo. - -2005-11-13 Michael Albinus - - * net/tramp-util.el (top): Fix compilation warning. - -2005-11-13 Kim F. Storm - - * help.el (help-for-help-internal): Fix `a' entry. Add `d' entry. - -2005-11-13 Nick Roberts - - * progmodes/gud.el (gud-menu-map): Move parentheses (again). - (gud-speedbar-buttons): Match on "const char *" too. - - * progmodes/gdb-ui.el (gdb-var-create-handler) - (gdb-var-list-children-handler): Match on "const char *" too. - (gdb-var-evaluate-expression-handler): Match on empty string. - (gdb-var-update-handler): Only call - gdb-var-evaluate-expression-handler when required. - -2005-11-13 Nick Roberts - - * progmodes/gud.el (gud-menu-map): Revert to window-fringes for - selected window. This still doesn't work for speedbar. - (gud-speedbar-buttons): Handle string expressions properly. - - * progmodes/gdb-ui.el (gdb-var-evaluate-expression-handler) - (gdb-var-create-handler): Handle string expressions properly. - (gdb-var-list-children-regexp, gdb-var-list-children-handler): - Handle string expressions properly. Move "type" field into regexp. - -2005-11-12 Karl Fogel - - * bookmark.el (bookmark-maybe-message): New function to reduce - code duplication: invokes `message' iff baud-rate is high enough. - (bookmark-write-file): Use above instead of an inline conditional. - (bookmark-load): Same. - -2005-11-12 Karl Fogel - - * bookmark.el (bookmark-write-file): Don't visit the destination - file, just write the data to it using write-region. This is - similar to saveplace.el at 2005-05-29T08:36:26Z!rms@gnu.org, but with an additional - change to avoid visiting the file in the first place. - -2005-11-12 Chong Yidong - - * hi-lock.el (hi-lock-mode): Set the default value of - font-lock-defaults. - -2005-11-11 Luc Teirlinck - - * find-lisp.el (find-lisp-find-dired-insert-file): Pass `string' - arg to `file-attributes'. - (find-lisp-format): The UID and GID can now be strings. - -2005-11-12 Kim F. Storm - - * help.el (help-map): Bind C-h d to apropos-documentation. - - * simple.el (what-cursor-position): Print (EOB) instead of (100%) - when point is at end-of-buffer. - - * apropos.el (apropos-match-face): Doc fix. - (apropos-sort-by-scores): Add new choice `verbose'. - (apropos-documentation-sort-by-scores): New defcustom. - (apropos-pattern): Now contains the pattern entered by the user. - (apropos-pattern-quoted): New defvar. - (apropos-regexp): New defvar, containing the regexp corresponding - to apropos-pattern. - (apropos-all-words-regexp): Rename from apropos-all-regexp. - (apropos-read-pattern): New defun. Use it to read pattern arg in - interactive calls; returns list of words for a word list, and - string for a regexp. - (apropos-parse-pattern): Rename from apropos-rewrite-regexp. Now - parses a list of words or regexp as returned by apropos-read-pattern. - (apropos-calc-scores): Return nil if apropos-regexp doesn't match. - (apropos-score-doc): Return a very high score if the string - entered by the user matches literally. - (apropos-variable): Doc fix. Use apropos-read-pattern. - (apropos-command): Doc fix. Use apropos-read-pattern and - apropos-parse-pattern. Call apropos-print with nosubst=t. - (apropos, apropos-value): Doc fix. Use apropos-read-pattern and - apropos-parse-pattern. - (apropos-documentation): Doc fix. Use apropos-read-pattern and - apropos-parse-pattern. Locally bind apropos-sort-by-scores to - apropos-documentation-sort-by-scores. Call apropos-print with - nosubst=t. - (apropos-documentation-internal): Pass doc string through - substitute-key-definition before adding text properties. - Highlight substring matching literal user input if possible. - (apropos-documentation-check-doc-file): Remove locals beg and end. - Fix calculation of score (as added twice). Pass doc string through - substitute-key-definition before adding text properties. - (apropos-documentation-check-elc-file): Pass doc string through - substitute-key-definition before adding text properties. - Highlight substring matching literal user input if possible. - (apropos-print): Add new arg NOSUBST; if set, command and variable - doc strings have already been passed through substitute-key-definition. - Add code to handle apropos-accumulator items without score element - for backwards compatibility (e.g. with woman package). - Only show scores if apropos-sort-by-scores is `verbose'. - -2005-11-10 Stefan Monnier - - * jka-cmpr-hook.el (jka-compr-install): Use push and dolist. - Add jka-compr-load-suffixes to load-suffixes. - - * jka-compr.el: Require jka-cmpr-hook. - (jka-compr-info-compress-message, jka-compr-info-compress-program) - (jka-compr-info-compress-args, jka-compr-info-uncompress-message) - (jka-compr-info-uncompress-program, jka-compr-info-uncompress-args) - (jka-compr-info-can-append, jka-compr-info-strip-extension) - (jka-compr-info-file-magic-bytes, jka-compr-get-compression-info) - (jka-compr-info-regexp): Remove. Provided by jka-cmpr-hook. - (jka-compr-uninstall): Remove entries from - jka-compr-added-to-file-coding-system-alist after they are used. - (jka-compr-error): Remove unused var `curbuf'. - (jka-compr-file-local-copy): Remove unused var `notfound'. - -2005-11-10 Romain Francoise - - * apropos.el (apropos-calc-scores): Use `apropos-pattern'. - -2005-11-11 Nick Roberts - - * progmodes/gud.el (gud-menu-map): Move parentheses. - (gdb): New command gud-pv. - -2005-11-10 Stefan Monnier - - * tar-mode.el: Remove spurious or unnecessary leading stars - in docstrings. - (tar-header-block-tokenize): Also obey default-file-name-coding-system. - (tar-parse-octal-integer-safe): Use mapc. - (tar-header-block-summarize): Remove unused var `ck'. - (tar-summarize-buffer): Don't clear the modified-p bit if it wasn't - cleared before. Obey default-enable-multibyte-characters. - Use mapconcat. Simplify setting of tar-header-offset. - (tar-mode-map): Move initialization inside delcaration. - (tar-flag-deleted): Use `abs'. - (tar-expunge-internal): Remove unused var `line'. - (tar-expunge-internal): Don't hardcode point-min==1. - (tar-expunge): Widen while doing set-buffer-multibyte. - (tar-rename-entry): Use file-name-coding-system. - (tar-alter-one-field): Don't hardcode point-min==1. - (tar-subfile-save-buffer): string-as-unibyte works on unibyte strings. - (tar-pad-to-blocksize): Don't hardcode point-min==1. Clarify the code. - -2005-11-10 Masatake YAMATO - - * add-log.el (add-log-current-defun): Handle class::method - notation of c++. Fix incorrect comment. - -2005-11-10 Alan Mackenzie - - * help-fns.el (describe-variable): Make C-h v work when a variable - has variable documentation yet is unbound. - -2005-11-10 Masatake YAMATO - - * man.el (Man-highlight-references): Set an empty - string to `Man-arguments' if it is nil. - Suggested by Reiner Steib . - -2005-11-09 Stefan Monnier - - * Makefile.in (mh-loaddefs.el, loaddefs.el): Better follow the - commenting conventions. - - * cus-dep.el (custom-make-dependencies): Simplify. - Better follow the commenting conventions. - -2005-11-09 Richard M. Stallman - - * apropos.el (apropos-pattern): Rename from apropos-regexp. - (apropos-orig-pattern): Rename from apropos-orig-regexp. - All uses changed. - (apropos-rewrite-regexp): Doc fix. - (apropos-variable, apropos-command, apropos, apropos-value): - Change prompt; carry through the argument renaming. - -2005-11-09 Luc Teirlinck - - * find-lisp.el: Require dired. - (find-lisp-find-dired-internal): Do not call - `abbreviate-file-name' on DIR. - -2005-11-10 Nick Roberts - - * progmodes/gud.el (gdb): Make gud-pp use user-defined command pp1. - -2005-11-09 Nick Roberts - - * progmodes/gud.el (gud-menu-map): Ensure tool-bar is constant - when using the speedbar. - (gdb): New command gud-pp. - (gud-menu-map, gud-tool-bar-map): Put it on the tool bar. - -2005-11-09 Juri Linkov - - * replace.el (occur-excluded-properties): New defcustom. - (occur-1, occur-engine, occur-accumulate-lines): Use it. - -2005-11-08 Jay Belanger - - * calc/calc-units.el (math-convert-units): Replace any composite - unit by its definition. - -2005-11-08 Lars Hansen - - * emacs-lisp/autoload.el (update-directory-autoloads): - Add obsolete function alias. - -2005-11-07 Stefan Monnier - - * emacs-lisp/lisp-mode.el (lisp-mode-variables): Don't set - comment-indent-function. - (lisp-comment-indent): Replace by an alias for comment-indent-default. - - * reveal.el (reveal-post-command): Rework the handling of - reveal-open-spots, so as to be more reliable. There were several - tricky corner cases where an open spot might be lost, or where - a closed spot might end up on the list of open spots. - Only reveal text that's ellipsised. - -2005-11-07 Carsten Dominik - - * textmodes/org.el (org-export-as-html): Remove bogus (debug) form. - -2005-11-07 John Paul Wallington - - * ibuffer.el (ibuffer): Search iconified frames too when - getting Ibuffer buffer's window. - -2005-11-06 Richard M. Stallman - - * progmodes/compile.el (compilation-internal-error-properties): - save-excursion around the computation of MARKER. - -2005-11-06 Piet van Oostrum - - * textmodes/flyspell.el (flyspell-external-point-words): - flyspell-get-word returns a list, not just a string. - -2005-11-06 John Paul Wallington - - * ibuffer.el (ibuffer): Search all visible frames when getting - Ibuffer buffer's window. - -2005-11-07 Masatake YAMATO - - * man.el (Man-reference-regexp): Accept spaces between - `Man-name-regexp' and `Man-section-regexp'. - (Man-apropos-regexp): New variable. - (Man-abstract-xref-man-page): Use value for `Man-target-string' - if available. - (Man-highlight-references, Man-highlight-references0): - Handle the case when `Man-arguments' includes "-k". - (Man-highlight-references0): Rename the argument `TARGET-POS' to - `TARGET'. `TARGET' can be a number, function or nil. - -2005-11-06 Nick Roberts - - * progmodes/gdb-ui.el (gdb-var-create-handler, gdb-var-delete) - (gdb-edit-value, gdb-speedbar-expand-node, gdb-get-create-buffer) - (gdb-breakpoints-mode, gdb-toggle-breakpoint, gdb-delete-breakpoint) - (gdb-goto-breakpoint, gdb-frames-mode, gdb-registers-mode) - (gdb-locals-mode, gdb-find-file-hook): Use buffer-local-value. - (gdb-send-item): Use buffer-local-value and simplify. - -2005-11-05 Luc Teirlinck - - * startup.el (command-line): Use `custom-reevaluate-setting' for - `global-font-lock-mode'. - - * font-core.el (global-font-lock-mode): Enable `global-font-lock-mode' - by default, except in batch mode or when the -D option is given. - - * emacs-lisp/easy-mmode.el (define-global-minor-mode): Pass all - specified keyword args on to `define-minor-mode'. Update docstring. - -2005-11-05 Romain Francoise - - * replace.el (occur-engine): Add marker at end of line, too. - -2005-11-04 Ken Manheimer - - * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region) - (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric) - (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt) - (pgg-pgp-sign-region, pgg-pgp-sign): Add optional PASSPHRASE - argument to all these routines, so the passphrase can be managed - externally and passed in to the system. - (pgg-pgp-decrypt-region, pgg-pgp-sign-region): Use new name for - pgg-add-passphrase-to-cache function. - - * pgg-pgp5.el (pgg-pgp5-encrypt-region, pgg-pgp5-decrypt-region) - (pgg-pgp5-encrypt-symmetric-region, pgg-pgp5-encrypt-symmetric) - (pgg-pgp5-encrypt, pgg-pgp5-decrypt-region, pgg-pgp5-decrypt) - (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional PASSPHRASE - argument to all these routines, so the passphrase can be managed - externally and passed in to the system. - (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache - function. - -2005-11-04 Dan Nicolaescu - - * font-lock.el: Don't deal with font-lock-face-attributes here, - move the code ... - - * startup.el (command-line): ... here. Use face-spec-set instead - of custom-declare-face. - - * faces.el (face-spec-set): Reset the face if spec is not nil. - -2005-11-04 Stefan Monnier - - * newcomment.el (comment-region-internal): Box more tightly in the - common case where there's no TAB in the boxed text. - -2005-11-04 Jan Dj,Ad(Brv - - * info.el (info-tool-bar-map): Use images prev-node, next-node and - up-node. - -2005-11-04 Ulf Jasper - - * newsticker.el: Commentary updated. Code formatting changed. - (newsticker-version): Change to "1.9". - (newsticker, newsticker-feed): Doc fix. - (newsticker-url-list): Doc fix. Add option "Weekly". - (newsticker-retrieval-interval): Add option "Weekly". - (newsticker-headline-processing): Doc fix. - (newsticker-auto-mark-filter): Remove. - (newsticker-auto-mark-filter-list): New. - (newsticker-layout, newsticker-sort-method): Doc fix. - (newsticker-hide-old-items-in-newsticker-buffer) - (newsticker-heading-format, newsticker-item-format) - (newsticker-desc-format): Doc fix. - (newsticker-show-all-rss-elements): Remove. - (newsticker-show-all-news-elements): New. - (newsticker-faces, newsticker-ticker): Doc fix. - (remove-from-invisibility-spec): Code formatting. - (newsticker--process-ids): New. - (newsticker-mode): Doc fix. - (newsticker-mode): Change mode-line-format. - (newsticker-start): Remove debug output. - (newsticker-start-ticker): Doc fix. Add autoload cookie. - (newsticker-w3m-show-inline-images): Code formatting. - (newsticker-next-item): Call `force-mode-line-update'. - (newsticker-previous-item): Call `force-mode-line-update'. - (newsticker-next-feed): Call `force-mode-line-update'. - (newsticker-previous-feed): Call `force-mode-line-update'. - (newsticker-mark-all-items-at-point-as-read): Code formatting. - (newsticker-show-old-items): Do not show descs. - (newsticker-hide-entry): Hide too much. - (newsticker-hide-entry, newsticker-show-entry) - (newsticker-toggle-auto-narrow-to-feed): Code formatting. - (newsticker-set-auto-narrow-to-feed): Update buffer immediately. - (newsticker-toggle-auto-narrow-to-item): Code formatting. - (newsticker-set-auto-narrow-to-item): Update buffer immediately. - (newsticker-running-p, newsticker-ticker-running-p): Autoload cookie. - (newsticker-get-news): Call `force-mode-line-update'. - Collect process ids. - (newsticker--sentinel): Change coding system handling. - Move image retrieval to new functions newsticker--get-logo-url-*. - Move feed parsing to new functions newsticker--parse-*. - Update list of process ids. - (newsticker--get-logo-url-atom-1.0, newsticker--get-logo-url-atom-0.3) - (newsticker--get-logo-url-rss-2.0, newsticker--get-logo-url-rss-1.0) - (newsticker--get-logo-url-rss-0.92, newsticker--get-logo-url-rss-0.91) - (newsticker--parse-atom-0.3, newsticker--parse-atom-1.0) - (newsticker--parse-rss-0.91, newsticker--parse-rss-0.92) - (newsticker--parse-rss-1.0, newsticker--parse-rss-2.0) - (newsticker--parse-generic-feed, newsticker--parse-generic-items): New. - (newsticker--decode-coding-string): Remove. - (newsticker--decode-numeric-entities): Check input. Format code. - (newsticker--remove-whitespace): Check input. - (newsticker--do-forget-preformatted): Doc fix. - (newsticker--decode-rfc822-date): Allow for missing time. - (newsticker--update-process-ids): New. - (newsticker--image-sentinel): Change comment. - (newsticker--image-read): Change error message. - (newsticker--imenu-goto): Doc fix. Show headline title. - (newsticker--buffer-set-uptodate): Call `force-mode-line-update'. - (newsticker--buffer-do-insert-text): Clean whitespace in - html-rendered headline title. Code formatting. - Call `newsticker--buffer-print-extra-elements'. - (newsticker--buffer-print-extra-element): Remove. - (newsticker--buffer-print-extra-elements): New. - (newsticker--buffer-do-print-extra-element): New. - (newsticker--buffer-insert-enclosure): Doc fix. Use MBytes for - large sizes. - (newsticker--run-auto-mark-filter) - (newsticker--do-run-auto-mark-filter): - Use `newsticker-auto-mark-filter-list'. - -2005-11-04 Ryan Yeske - - * net/rcirc.el: Use split-string OMIT-NULLS argument. - (rcirc-print): Force redisplay before running hooks. Do long - buffer truncation after making new text read-only. Deal with nil - text when decoding strings. If TARGET is nil, use either the - currently selected buffer, if it is an rcirc buffer and of the - same process or the process buffer. - (rcirc-mode): Remove header-line. Recompute short buffer names. - Initialize rcirc-buffer-alist here instead of rcirc-get-buffer-create. - (rcirc-short-buffer-name): Add variable. - (rcirc-kill-buffer-hook): Recompute short buffer names. - Remove nick from private channel. - (rcirc-send-input): Send command text to current-buffer. - Don't clear overlay arrow here. - (rcirc-short-buffer-name): Return a short buffer name. - (rcirc-update-short-buffer-names, rcirc-abbreviate) - (rcirc-rebuild-tree, rcirc-make-trees): Add functions to generate - buffer-name abbreviations. - (rcirc-kill-buffer-hook-1): Split to make debugging easier. - Do not touch nick-table when killing a parted channel. - (rcirc-window-configuration-change): Rename from rcirc-update-activity. - Clear arrow from current buffer if it is now hidden. - (rcirc-current-buffer): Add variable. - (rcirc-my-nick, rcirc-other-nick, rcirc-server) - (rcirc-nick-in-message, rcirc-prompt, rcirc-mode-line-nick): - Remove -face from names. - (rcirc-update-activity-string): Print "DND" when globally ignoring - activity. - (rcirc-ignore-buffer-activity-flag): Rename from - rcirc-ignore-channel-activity. - (rcirc-ignore-all-activity-flag): Doc fix. - (rcirc-channels): Remove variable. - (rcirc-kill-buffer-hook): - (rcirc-get-buffer-create): Add nick to private channel. - (rcirc-multiline-edit-submit): Remove tabs. - (rcirc-put-nick-channel, rcirc-channel-nicks): Look up nicks case - folded. - (rcirc-remove-nick-channel): Bug fix. - (rcirc-toggle-ignore-buffer-activity): Rename from - rcirc-toggle-ignore-channel-activity. - (rcirc-record-activity): Add buffers to the front of the list. - (rcirc-update-activity): Remove killed buffers from list. - (rcirc-process-server-response-1): Remove last argument if it is - null before calling handler. - (rcirc): Add "rcirc" defcustom prefix. - (rcirc-prompt): Simplify default prompt. - Use custom-initialize-default. - (rcirc-private-chats): Remove variable. - (rcirc-prompt): Change initialization. - (rcirc-version): Remove function. - (rcirc-id-string): Add constant. - (rcirc-last-buffer): Remove variable. - (rcirc-buffer-alist): Add variable. - (rcirc-connect): Update variable setup. - (rcirc-sentinel, rcirc-update-prompt): Use `rcirc-buffer-alist'. - (rcirc-trap-errors-flag): Rename from `rcirc-trap-errors' change - default. - (rcirc-handler-generic): Trigger activity. - (rcirc-send-message): Create the buffor of the target. - (rcirc-generate-new-buffer-name): Rename from `rcirc-get-buffer-name'. - (rcirc-get-buffer): Just return nil if there is no matching buffer. - (rcirc-multiline-edit-cancel): Remove function. - (rcirc-set-last-buffer): Remove function. - (rcirc-get-any-buffer): Add function. - (rcirc-join-channels): Don't print /join text. - (rcirc-toggle-ignore-channel-activity): Add and update echo area - messages. - (rcirc-cmd-ctcp): Use rcirc-send-string to send request. - (rcirc-handler-NOTICE): Recognize CTCP responses. - (rcirc-handler-332, rcirc-handler-332): Use a temp buffer for - constructing TOPIC string for buffers we are not JOINed. - (rcirc-handler-CTCP-response): Add handler. - (rcirc-multiline-edit-submit): Restore the window-configuration - before adjusting point. - (rcirc): Add customization group. - (rcirc-server, rcirc-port, rcirc-nick, rcirc-user-name) - (rcirc-user-full-name, rcirc-startup-channels-alist) - (rcirc-fill-flag, rcirc-fill-column, rcirc-fill-prefix) - (rcirc-ignore-all-activity-flag, rcirc-time-format) - (rcirc-input-ring-size, rcirc-read-only-flag) - (rcirc-buffer-maximum-lines, rcirc-authinfo-file-name) - (rcirc-auto-authenticate-flag, rcirc-prompt, rcirc-print-hooks): - Change defvar to defcustom. - (rcirc-update-prompt): Add optional ALL arg, which will update - prompts in all rcirc buffers. Regexp quote replacement text. - (rcirc-fill-column): Accept frame-width as a value. - (rcirc-set-changed): Add function. - (rcirc-next-active-buffer): Write more meaningful messages. - (rcirc-faces): Add customization group. - (rcirc-my-nick-face, rcirc-other-nick-face, rcirc-server-face) - (rcirc-nick-in-message-face, rcirc-prompt-face) - (rcirc-mode-line-nick-face): Move into rcirc-faces group. - (with-rcirc-process-buffer): Move before first usage. - (rcirc-debug-buffer): Rename from `rcirc-log-buffer'. - (rcirc-debug-flag): Rename from `rcirc-log-p'. - (rcirc-debug): Rename from `rcirc-log'. - (rcirc-format-response-string): Do not print `-' chars for a - NOTICE with no sender. Simplify output of server responses. - -2005-11-04 Henrik Enberg - - (rcirc-browse-url-map, rcirc-browse-url-at-point) - (rcirc-browse-url-at-mouse, rcirc-mangle-text): - Make urls mouse and RET clickable. - -2005-11-04 Henrik Enberg - - * mail/rmailout.el (rmail-output-to-rmail-file, rmail-output): Doc fix. - -2005-11-04 Ken Manheimer - - * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region) - (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric) - (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt) - (pgg-pgp-sign-region, pgg-pgp-sign): Add optional PASSPHRASE - argument to all these routines, so the passphrase can be managed - externally and passed in to the system. - (pgg-pgp-decrypt-region, pgg-pgp-sign-region): Use new name for - pgg-add-passphrase-to-cache function. - - * pgg-pgp5.el (pgg-pgp5-encrypt-region, pgg-pgp5-decrypt-region) - (pgg-pgp5-encrypt-symmetric-region, pgg-pgp5-encrypt-symmetric) - (pgg-pgp5-encrypt, pgg-pgp5-decrypt-region, pgg-pgp5-decrypt) - (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional PASSPHRASE - argument to all these routines, so the passphrase can be managed - externally and passed in to the system. - (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache - function. - -2005-11-04 Edward O'Connor (tiny change) - - * net/goto-addr.el (goto-address-url-regexp): Remove `data:' URLs - from goto-address-url-regexp. - -2005-11-04 Carsten Dominik - - * textmodes/org.el (org-read-date, org-goto-calendar) - (org-recenter-calendar, org-agenda-goto-calendar): - Temporarily clear `calendar-move-hook'. - -2005-11-04 Michael Kifer - - * ediff-merge.el (ediff-merge-region-is-non-clash): Return t, if not - merging. - - * ediff-util.el (ediff-previous-difference): Don't skip regions that - have merge clashes. - -2005-11-04 YAMAMOTO Mitsuharu - - * mwheel.el (mouse-wheel-down-event, mouse-wheel-up-event): - Undo previous change. - - * startup.el (command-line): Use `custom-reevaluate-setting' for - mouse-wheel-down-event and mouse-wheel-up-event. Don't call - tty-register-default-colors on Mac. - -2005-11-04 Nick Roberts - - * progmodes/gdb-ui.el (gdb-buffer-type): Remove duplicate declaration. - (gdb-buffer-type): Make it automatically buffer local... - (gdb-get-create-buffer): ...and set it accordingly. - (gdb-frame-gdb-buffer, gdb-display-gdb-buffer): Make these - actually work. - -2005-11-03 Dan Nicolaescu - - * font-lock.el (font-lock-warning-face): Use the more vivid red1, - not red. - -2005-11-04 Nick Roberts - - * progmodes/gdb-ui.el (gud-watch): Use save-selected-window in - case GUD buffer is not visible. - (gdb-goto-breakpoint): Try to force display in source buffer. - (gdb-frame-gdb-buffer): Copy other similar functions. - (gdb-restore-windows): Don't display source if not asked for. - (gdb-assembler-buffer-name): Don't capitalise. - -2005-11-03 Richard M. Stallman - - * wid-edit.el (key-sequence): New widget type. - - * simple.el (set-mark-command-repeat-pop): New variable. - (set-mark-command): Only interpret plan C-@ after a pop as a pop - if set-mark-command-repeat-pop is true. - - * info.el (Info-fontify-node): Don't display extra "see" if there - already is one here. - - * mouse.el: Fix special handling of DEL after dragging a region: - (mouse-drag-region-1): Treat mouse-set-region like mouse-set-point. - (mouse-region-delete-keys): Change to defcustom. Add [backspace]. - - * mail/feedmail.el: Use insert-buffer-substring, not insert-buffer. - - * textmodes/ispell.el (ispell-command-loop): Change `i' description - not to assume it pertains to an affix. - - * textmodes/flyspell.el (flyspell-post-command-hook): - Bind deactivate-mark to prevent deactivation. - -2005-11-03 Lars Hansen - - * dired-x.el: Add menu bindings for dired-do-find-marked-files, - dired-do-relsymlink, dired-flag-extension, dired-mark-extension, - dired-mark-omitted, dired-do-relsymlink-regexp, dired-omit-mode. - -2005-11-03 Romain Francoise - - * net/eudcb-mab.el: Now part of GNU Emacs. Update FSF's address. - Update copyright years. - -2005-11-03 Sam Steingold - - * mwheel.el (mouse-wheel-down-event, mouse-wheel-up-event): - Use system-type instead of window-system because window-system is not - correctly defined during loadup. - -2005-11-02 Mark A. Hershberger - - * xml.el (xml-syntax-table): Allow xml.el to compile in XEmacs. - (xml-parse-tag): Join strings separated by a comment properly. - -2005-11-02 Andreas Schwab - - * emacs-lisp/byte-opt.el (byte-optimize-pure-func): Fix last fix. - -2005-11-02 Stefan Monnier - - * emacs-lisp/byte-opt.el (string-to-syntax): Mark it as pure. - (byte-optimize-pure-func): Quote the eval'd value. - - * progmodes/perl-mode.el (perl-font-lock-special-syntactic-constructs): - Rename from perl-font-lock-syntactic-face-function. - Change the calling convention so it can be used as a font-lock MATCHER. - Do the parse-partial-sexp loop outselves. - (perl-font-lock-syntactic-keywords): Use it. - (perl-mode): Don't set font-lock-syntactic-face-function any more. - -2005-11-02 Nick Roberts - - * progmodes/gdb-ui.el (gdb-mouse-until): Make it work in the - disassembly buffer too. - (gdb-exited): Remove overlay arrows when execution has finished. - (gdb-info-frames-custom, gdb-info-threads-custom) - (gdb-info-registers-custom): Don't add inappropriate text - properties if inferior is not active. - -2005-11-02 Glenn Morris - - * progmodes/fortran.el (fortran-blink-match): - Use `blink-matching-delay'. - -2005-11-02 John Mongan (tiny change) - - * progmodes/f90.el (f90-match-end): Use `blink-matching-delay'. - -2005-11-02 Lars Hansen - - * net/tramp.el (tramp-action-out-of-band): Handle scp message - "Permission denied". - -2005-11-01 Richard M. Stallman - - * textmodes/flyspell.el (flyspell-external-point-words): - Pass nil to flyspell-get-word. - -2005-11-02 Kim F. Storm - - * menu-bar.el (menu-bar-options-menu): Show "Shift Movement (CUA)" - item instead of "C-x/C-c/C-v (CUA)" if cua-enable-cua-keys is nil. - -2005-11-01 Stefan Monnier - - * calendar/cal-menu.el (date, event): Don't declare as dynamic-var. - (calendar-mouse-holidays, calendar-mouse-view-diary-entries) - (calendar-mouse-print-dates): Add optional `event' argument. - Update interactive-spec. - (calendar-mouse-cal-tex-menu, cal-tex-mouse-filofax): - Use `calendar-event-to-date' instead of `event'. - -2005-11-02 Masatake YAMATO - - * progmodes/ld-script.el (ld-script-builtins): - Add more words: "DATA_SEGMENT_ALIGN", "DATA_SEGMENT_END", - "DATA_SEGMENT_RELRO_END", "LENGTH", "ORIGIN", and "SEGMENT_START". - (auto-mode-alist): Accept .ld, .lds, ld.in and .lds.in. - -2005-11-01 Romain Francoise - - * vc-sccs.el: Update copyright year. - * ezimage.el: Likewise. - -2005-11-01 KOBAYASHI Yasuhiro (tiny change) - - * info.el (Info-fontify-node): Use `string-width' for fontifying - underlined titles. - -2005-11-01 Juri Linkov - - * info.el (Info-fontify-node): Downcase node header keywords Node, - Prev, Next, Up before comparison. - (Info-history): Insert absolute directory name, and put invisible - property on it. - -2005-11-01 Juri Linkov - - * info.el (Info-file-supports-index-cookies): New variable. - (Info-find-node-2): Check makeinfo version for index cookie support. - (Info-index-nodes): Search for nodes with index cookies only when - Info-file-supports-index-cookies is t. Otherwise, search nodes - with "Index" in the node name. - (Info-index-node): Search index cookie in the current node only when - Info-file-supports-index-cookies is t. Otherwise, check the word - "Index" in the node name. - (Info-find-emacs-command-nodes): Remove code that searches nodes - with "Index" node name in the top menu. - -2005-11-01 Stefan Monnier - - * progmodes/scheme.el (scheme-mode-variables): Use the default - comment-indent-function. - - * faces.el (face-attribute): Handle the case where a face inherits from - a non-existent face. - - * simple.el (eval-expression-print-format): Use lisp-readable syntax - for octal and hexa output, and merge the char into the paren. - (kill-new): Use push. - (copy-to-buffer): Use with-current-buffer. - (completion-setup-function): Move code in loop to remove redundancy. - (minibuffer-local-must-match-map): Don't add bindings that duplicate - those inherited from minibuffer-local-completion-map. - - * savehist.el (savehist-mode) : - Use custom-set-minor-mode if available. - (savehist-mode) : Run the minor mode hook, set the custom state - and emit a message if applicable. - -2005-11-01 Hrvoje Niksic - - * savehist.el: Sync up to version 19. - (savehist-mode): New minor mode. - (savehist-file): Use ~/.emacs.d or ~/.xemacs if available. - (savehist-length): Remove (use history-length instead). - (savehist-file-modes): Rename from savehist-modes. - (savehist-save-hook, savehist-loaded): New vars. - (savehist-load): Use savehist-mode. Try to smooth up transition from - old format to new format. - (savehist-install): Allow savehist-autosave-interval to be nil. - (savehist-save): Run the new hook. Be more careful to only trim the - history variables. - (savehist-trim-history): New fun. Replaces savehist-process-for-saving. - (savehist-printable): Print into a buffer rather than char-by-char. - -2005-11-01 John Wiegley - - * iswitchb.el (iswitchb-define-mode-map): Re-enable the - toggle-ignore keybinding (C-a). The author said it had been - disabled much earlier due to a possible incompatibility, but after - many months of usage I have encountered no problems (and it is a - rather useful option, especially for switching to " *temp*"). - - * net/eudcb-mab.el (eudc-mab-query-internal): Add backend - support for OS/X's AddressBook, by calling out to the open source - program "contacts" (installable through Fink). - - * net/eudc.el (eudc-expand-inline): If the - `eudc-multiple-match-handling-method' is set to `all', delete the - query string before inserting the query result. - - * eshell/em-ls.el (eshell-do-ls): Add no-op support for --dired - flag, to prevent Eshell from using the system ls when - `eshell-ls-insert-directory' is in used. - (eshell-ls-insert-directory): Disable font-lock in directory - buffer so that Eshell's own fontification is seen. This broke - recently due to changes in font-lock, so this goes back to version - 21 behavior. - -2005-11-01 Nick Roberts - - * progmodes/gdb-ui.el (gdb-use-inferior-io-buffer): New function. - (menu, toggle-gdb-use-inferior-io-buffer): Get rid of defadvice. - (gdb-many-windows): Doc fix. - -2005-10-31 Romain Francoise - - * help-fns.el (describe-simplify-lib-file-name): Add autoload cookie. - -2005-10-31 Dan Nicolaescu - - * loadup.el: Load emacs-lisp/syntax, font-lock and jit-lock so - that global-font-lock-mode can be enabled by default. - - * font-lock.el (font-lock-keywords, font-lock-mode-internal) - (font-lock-add-keywords, font-lock-remove-keywords) - (font-lock-fontify-buffer): Remove autoload cookies. - - * jit-lock.el (jit-lock-register): Likewise. - - * emacs-lisp/syntax.el (syntax-ppss): Likewise. - -2005-10-31 Nick Roberts - - * progmodes/gdb-ui.el (gdb-many-windows): Leave window configuration - intact if there is no gud-comint-buffer. - -2005-10-31 Luc Teirlinck - - * progmodes/gud.el (gud-filter): Use comint-update-fence to delete - old prompt comint-prompt-read-only is t and GDB commands are - issued from tool bar etc. - -2005-10-31 Masatake YAMATO - - * vc.el (vc-directory-exclusion-list): Add "{arch}". - -2005-10-30 Chong Yidong - - * thumbs.el (thumbs-thumbsdir): Default to ~/.emacs.d/thumbs. - (thumbs-thumbsdir): Make .emacs.d if it does not exist. - -2005-10-30 Michael Albinus - - * net/tramp.el (tramp-chunksize): Escape parentheses in docstring - starting at beginning of line. Fontification is messed up when - `open-paren-in-column-0-is-defun-start' set to t. - Reported by John Paul Wallington . - -2005-10-30 Luc Teirlinck - - * comint.el (comint-send-input): Call `comint-update-fence' when - `comint-process-echoes' and `comint-prompt-read-only' are both - non-nil, to avoid leftover read-only newline. - -2005-10-30 Richard M. Stallman - - * textmodes/flyspell.el (flyspell-external-point-words): - Detect when WORD can't be checked properly because - flyspell-get-word finds just part of it, and move on. - - * textmodes/ispell.el (ispell-dictionary-alist-5): Add . as - boundarychar for Polish. - (ispell-dictionary-alist-4): Add . as boundarychar for Italian. - (ispell-dictionary-alist-3): Add . and @ as boundarychars for French. - -2005-10-31 Nick Roberts - - * progmodes/gdb-ui.el (gdb-tooltip-print-1): Fix regexp. - (gdb-registers-font-lock-keywords): Delete. - (gdb-registers-mode): Don't fontify. - (gdb-info-registers-custom): Use text properties instead as, in - future, changed register values will use font-lock-warning-face. - (gdb-local-font-lock-keywords): Rename to... - (gdb-locals-font-lock-keywords): ...for consistency. - -2005-10-30 Andre Spiegel - - * vc.el (vc-switch-backend): Better error message if the buffer is - not visiting a file under version control. - - * vc-cvs.el (vc-cvs-delete-file): Commit the file after removing it. - -2005-10-29 Chong Yidong - - * startup.el (command-line): Use ~/.emacs.d/init.el instead of - ~/.emacs.d/.emacs. - -2005-10-29 Richard M. Stallman - - * replace.el (occur-mode-mouse-goto): Always go to other window. - (occur-mode-goto-occurrence): Always switch in same window. - - * simple.el (undo): Display message at end, not at start. - - * emacs-lisp/timer.el (timer-activate, timer-activate-when-idle): - New arg REUSE-CELL. - (cancel-timer-internal): New function. - (timer-event-handler): Use cancel-timer-internal, - and pass the cell it returns to timer-activate... - - * jit-lock.el (jit-lock-function, jit-lock-stealth-fontify) - (jit-lock-deferred-fontify, jit-lock-context-fontify) - (jit-lock-after-change): Test memory-full. - -2005-10-29 Ken Manheimer - - * pgg-gpg.el (pgg-gpg-select-matching-key): Fix: look at the right - part of the decoded armor to find the key-identifier. - (pgg-gpg-lookup-key-owner): New function to return the - human-readable identifier of a key owner. - (pgg-gpg-lookup-id-from-key-owner): Make it easy to identify the - key itself. - (pgg-gpg-decrypt-region): Prompt with the key owner (rather than - the key value) if we have a key and can match it against a secret - key. Also, added a note pointing out fact that the prompt only - indicates the first matching key. - - * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to - pgg-decrypt-region. - (pgg-pending-timers): A new hash for tracking the passphrase cache - timers, so that new ones supercede old ones. - (pgg-add-passphrase-to-cache): Rename from - `pgg-add-passphrase-cache' to reduce confusion (all callers - changed). Modified to cancel old timers when new ones are added. - (pgg-remove-passphrase-from-cache): Rename from - `pgg-remove-passphrase-cache' to reduce confusion (all callers - changed). Modified to cancel old timers when their keys are - removed from the cache. - (pgg-cancel-timer): In Emacs, an alias for cancel-timer; in - XEmacs, an indirection to delete-itimer. - (pgg-read-passphrase-from-cache, pgg-read-passphrase): - Extract pgg-read-passphrase-from-cache from pgg-read-passphrase so - users can only check cache without risk of prompting. Correct bug in - notruncate behavior. - (pgg-read-passphrase-from-cache, pgg-read-passphrase) - (pgg-add-passphrase-cache, pgg-remove-passphrase-cache): - Add informative docstrings. - (pgg-decrypt): Convey provided passphrase in subordinate call to - pgg-decrypt-region. - - * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region) - (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region) - (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional - `passphrase' argument, so the passphrase can be managed externally - and then passed in to the system. - - * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache) - (pgg-remove-passphrase-cache): Add optional NOTRUNCATE argument, - so the passphrase cache can be used reliably with identifiers - besides a pgp packet's key id. - - * pgg-gpg.el (pgg-pgp-encrypt-region) - (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric) - (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt) - (pgg-pgp-sign-region, pgg-pgp-sign): Add optional PASSPHRASE - argument to all these routines, so the passphrase can be managed - externally and passed in to the system. - - * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional - `notruncate' argument, so the passphrase cache can be used - reliably with identifiers besides a pgp packet's key id. - -2005-10-29 Sascha Wilde - - * pgg-gpg.el (pgg-gpg-encrypt-symmetric-region): New function for - symmetric encryption. - (pgg-gpg-symmetric-key-p): New function to check for an symmetric - encrypted session key. - (pgg-gpg-decrypt-region): When decrypting a symmetric encrypted - message ask for the passphrase in a proper way. - - * pgg.el (pgg-encrypt-symmetric, pgg-encrypt-symmetric-region): - New user commands for symmetric encryption. - -2005-10-29 Roland Winkler - - * textmodes/conf-mode.el (conf-assignment-sign) - (conf-assignment-regexp): Fix docstrings. - (conf-mode-initialize): New function. - (conf-mode): Remove optional args. Use delay-mode-hooks to - recognize recursive calls. - (conf-unix-mode, conf-windows-mode, conf-javaprop-mode) - (conf-space-mode, conf-colon-mode, conf-ppd-mode) - (conf-xdefaults-mode): Use define-derived-mode and - conf-mode-initialize. - -2005-10-29 Romain Francoise - - * help-fns.el (describe-simplify-lib-file-name): Fix regexp. - -2005-10-29 Ken Manheimer - - * pgg-gpg.el (pgg-gpg-select-matching-key): Fix: look at the right - part of the decoded armor to find the key-identifier. - (pgg-gpg-lookup-key-owner): New function to return the - human-readable identifier of a key owner. - (pgg-gpg-lookup-id-from-key-owner): Make it easy to identify the - key itself. - (pgg-gpg-decrypt-region): Prompt with the key owner (rather than - the key value) if we have a key and can match it against a secret - key. Also, added a note pointing out fact that the prompt only - indicates the first matching key. - - * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to - pgg-decrypt-region. - (pgg-pending-timers): A new hash for tracking the passphrase cache - timers, so that new ones supercede old ones. - (pgg-add-passphrase-to-cache): Rename from - `pgg-add-passphrase-cache' to reduce confusion (all callers - changed). Modified to cancel old timers when new ones are added. - (pgg-remove-passphrase-from-cache): Rename from - `pgg-remove-passphrase-cache' to reduce confusion (all callers - changed). Modified to cancel old timers when their keys are - removed from the cache. - (pgg-cancel-timer): In Emacs, an alias for cancel-timer; in - XEmacs, an indirection to delete-itimer. - (pgg-read-passphrase-from-cache, pgg-read-passphrase): - Extract pgg-read-passphrase-from-cache from pgg-read-passphrase so - users can only check cache without risk of prompting. Correct bug in - notruncate behavior. - (pgg-read-passphrase-from-cache, pgg-read-passphrase) - (pgg-add-passphrase-cache, pgg-remove-passphrase-cache): - Add informative docstrings. - (pgg-decrypt): Convey provided passphrase in subordinate call to - pgg-decrypt-region. - -2005-10-20 Ken Manheimer - - * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region) - (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region) - (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional - `passphrase' argument, so the passphrase can be managed externally - and then passed in to the system. - - * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache) - (pgg-remove-passphrase-cache): Add optional NOTRUNCATE argument, - so the passphrase cache can be used reliably with identifiers - besides a pgp packet's key id. - - * pgg-gpg.el (pgg-pgp-encrypt-region) - (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric) - (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt) - (pgg-pgp-sign-region, pgg-pgp-sign): Add optional PASSPHRASE - argument to all these routines, so the passphrase can be managed - externally and passed in to the system. - - * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional - `notruncate' argument, so the passphrase cache can be used - reliably with identifiers besides a pgp packet's key id. - -2005-10-29 Sascha Wilde - - * pgg-gpg.el (pgg-gpg-encrypt-symmetric-region): New function for - symmetric encryption. - (pgg-gpg-symmetric-key-p): New function to check for an symmetric - encrypted session key. - (pgg-gpg-decrypt-region): When decrypting a symmetric encrypted - message ask for the passphrase in a proper way. - - * pgg.el (pgg-encrypt-symmetric, pgg-encrypt-symmetric-region): - New user commands for symmetric encryption. - -2005-10-28 Bill Wohler - - * help-mode.el (help-url): New button type. Calls browse-url. - (help-xref-url-regexp): New regexp to recognize URLs in docstring. - Similar to Info nodes: URL `url'. - (help-make-xrefs): Create help-url buttons for - help-xref-url-regexp matches. - -2005-10-29 Nick Roberts - - * tool-bar.el (tool-bar-add-item-from-menu) - (tool-bar-local-item-from-menu): Fix doc strings. - -2005-10-28 Romain Francoise - - * ldefs-boot.el: Update. - - * subr.el (locate-library): Move from help-fns.el. - * help-fns.el (locate-library): Move to subr.el. - -2005-10-28 Richard M. Stallman - - * net/tramp.el (tramp-completion-mode): defvar moved up. - - * emacs-lisp/easymenu.el (easy-menu-change): Doc fix. - - * tool-bar.el (tool-bar-mode): Delete autoload cookie. - - * files.el (find-file-noselect): Use %d to format large file size. - - * bindings.el (mode-line-format): Add %e. - - * loadup.el ("facemenu"): Load unconditionally. - ("image", "international/fontset", "dnd", "mwheel", "tool-bar"): - ("x-dnd"): Load, when appropriate. - - * startup.el (command-line): Call before-init-hook earlier. - Warn about some bad characters in -u user name. - - * textmodes/flyspell.el (flyspell-large-region): Pass -t if Tex file. - (flyspell-external-point-words): Error if misspelled word is not found. - Set flyspell-large-region-beg at end of word. - -2005-10-28 Andreas Schwab - - * view.el (View-revert-buffer-scroll-page-forward): - Use view-page-size-default. - -2005-10-28 Juri Linkov - - * international/quail.el (quail-get-current-str): Translate last - raw character for deterministic input methods. - -2005-10-27 Jay Belanger - - * calc/calc-ext.el: Add functions to autoloads. - (math-identity-matrix-p, math-ident-row-p): New functions. - - * calc/calc-arith.el (calc-mul-symb-fancy): Add checks for - multiplication by an identity matrix; don't turn multiplication by - an inverse matrix into division. - (math-div-symbol-fancy): Replace division by matrices with - multiplication by inverse. - - * calc/calc-misc.el (calcFunc-inv): Check for symbolic matrices. - - * calc/calc-alg.el (calcFunc-writeoutpower, math-write-out-power) - (calc-writeoutpower): New functions. - -2005-10-27 Romain Francoise - - * replace.el (occur-engine): Include colon in mouse-face highlight. - - * dired-x.el: Change Maintainer field. - -2005-10-26 Chong Yidong - - * longlines.el (longlines-mode): Bind after-change-functions to - nil during initial decoding and final encoding. - -2005-10-26 Dan Nicolaescu - - * term.el (term-emulate-terminal, term-handle-colors-array) - (term-handle-ansi-escape): Specify the terminfo capabilities - implemented. - -2005-10-26 Richard M. Stallman - - * info.el (Info-fontify-node): Fix detection of sentence-break - before *Note. - -2005-10-26 Romain Francoise - - * smerge-mode.el: Add `tools' to file keywords. - -2005-10-26 Nick Roberts - - * progmodes/gud.el (gud-menu-map): Only display gud-until icon - when the fringe is not available. - - * progmodes/gdb-ui.el (def-gdb-auto-updated-buffer) - (def-gdb-auto-update-trigger): Simplify construction. - (gdb-locals-buffer): Use def-gdb-auto-update-trigger instead of - def-gdb-auto-updated-buffer as gdb-info-locals-handler is - defined explicitly. - (gdb-assembler-buffer): Use def-gdb-auto-update-handler instead of - def-gdb-auto-updated-buffer as gdb-invalidate-assembler is - defined explicitly. - (gdb-info-locals-custom): Remove as it's a no-op. - -2005-10-25 Chong Yidong - - * longlines.el (longlines-mode): Remove narrowing before - performing the initial decoding or final encoding. - -2005-10-25 Romain Francoise - - * emacs-lisp/find-func.el (find-library-name): Also strip - extension if library name ends in .el, to take advantage of - `find-library-suffixes'. - -2005-10-25 Richard M. Stallman - - * menu-bar.el (menu-bar-help-menu): Say which kind of therapist. - -2005-10-25 Juri Linkov - - * textmodes/texinfo.el (texinfo-mode): Change charset of one - quotation mark from [mule-unicode-0100-24ff] to [japanese-jisx0208]. - -2005-10-25 Stefan Monnier - - * play/blackbox.el (blackbox-mode-map): Move init into declaration. - (blackbox-redefine-key): Add argument `map'. - - * jit-lock.el (jit-lock-fontify-now): Be careful not to skip multiline - regions when moving the jit-lock-context-unfontify-pos boundary. - -2005-10-25 Reiner Steib - - * net/browse-url.el (browse-url-of-buffer): Add ".html" to filename. - -2005-10-25 Masatake YAMATO - - * dired-x.el (dired-virtual): Don't use `dired-insert-headerline'. - -2005-10-25 Micha,Ak(Bl Cadilhac - - * play/blackbox.el (blackbox-redefine-key): New function. - (blackbox-mode-map): Use it to remap existing bindings for cursor - motion instead of binding literal keys. - -2005-10-25 Glenn Morris - - * calendar/diary-lib.el (diary-list-entries): Prevent infloop when - diary does not end in a newline. Do not assume a blank line at - the start of the diary file. - -2005-10-25 Kenichi Handa - - * international/quail.el (quail-translate-key): If the input - method is deterministic and failed to handle the last key, restart - the key handling loop from an appropriate key. - -2005-10-25 Michael Albinus - - * vc.el (vc-dired-mode): Extend comment for binding of - `directory-listing-before-filename-regexp'. - -2005-10-25 Stefan Monnier - - * textmodes/texinfo.el (texinfo-mode): - * textmodes/paragraphs.el (sentence-end-base): Use real chars, so as - not to unnecessarily expose emacs-mule's internal char codes. - -2005-10-25 Nick Roberts - - * progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Correct help-echo. - Display hand pointer and help-echo on disabled icon too. - (gdb-mouse-until): New function. - (gdb-ann3): Bind it to mouse-2 and drag-mouse-1 in left fringe. - -2005-10-24 Chong Yidong - - * menu-bar.el (menu-bar-help-menu): Rename "psychiatrist", in line - with 2005-10-23 change to doctor.el. - - * finder.el (finder-mode-map): Add follow-link binding. - -2005-10-25 Kim F. Storm - - * progmodes/gdb-ui.el (gdb-ann3): Bind mouse-3 in left fringe - to gdb-mouse-toggle-breakpoint-fringe. - (gdb-mouse-toggle-breakpoint-margin): Rename from - gdb-mouse-toggle-breakpoint. Fix doc. - (gdb-mouse-toggle-breakpoint-fringe): New defun. - (gdb-put-string): Add optional SPROPS arg. Add props to string. - (gdb-put-breakpoint-icon): Add gdb-bptno and gdb-enabled - string properties also for fringe breakpoint bitmaps. - -2005-10-24 Carsten Dominik - - * textmodes/org.el (org-start-icalendar-file): Fix format form. - -2005-10-25 Masatake YAMATO - - * simple.el (completion-common-substring): - Use `completion-common-substring' prior to `completion-base-size'. - -2005-10-24 Hrvoje Niksic - - * savehist.el: Require CL while compiling. - (savehist-history-variables): Remove. - (savehist-save-minibuffer-history, savehist-additional-variables) - (savehist-minibuffer-history-variables): New vars. - (savehist-save): Use them. - (savehist-uninstall, savehist-minibuffer-hook): New funs. - (savehist-install): New fun, extracted from savehist-load. - (savehist-load): Use them. - -2005-10-24 Stefan Monnier - - * emacs-lisp/lisp-mode.el (easy-mmode-define-global-mode): Don't add - a dummy doc-string-elt property. - (defalias, defvaralias, define-category): Add a docstring property. - - * image.el (defimage): - * widget.el (define-widget): - * custom.el (defface, defcustom): Add `doc-string' declaration. - - * emacs-lisp/advice.el (ad-make-advised-definition): Fix arg-order. - (defadvice): Add `doc-string' declaration. - - * emacs-lisp/byte-run.el (macro-declaration-function): - Handle `doc-string' declarations. - (define-obsolete-function-alias, define-obsolete-variable-alias): - Add `doc-string' declaration. - -2005-10-24 Kenichi Handa - - * international/utf-7.el (utf-7): Add autoload cookie. - - * term/x-win.el: Register more Cyrillic characters in x-keysym-table. - -2005-10-24 Eli Zaretskii - - * makefile.w32-in (autoloads): Use "." instead of $(lisp) in the - list of directories passed to batch-update-autoloads. Add "." to - the list of the echoed directories. - - * pgg-def.el: - * pgg-gpg.el: - * pgg-parse.el: - * pgg-pgp.el: - * pgg-pgp5.el: - * pgg.el: Moved here from the gnus subdirectory. - -2005-10-24 Nick Roberts - - * progmodes/gud.el (gud-filter): Bind inhibit-read-only to t - in case comint-prompt-read-only is set to t. - - * progmodes/gdb-ui.el (gdb-send): Bind inhibit-read-only to t - in case comint-prompt-read-only is set to t. - -2005-10-24 Ulf Jasper - - * calendar/icalendar.el (icalendar-version): Increase to 0.13. - Now a string. - (icalendar-import-format): Handle CLASS, STATUS, URL. - Rename `subject' to `summary'. - (icalendar-import-format-summary): Rename from - `icalendar-import-format-subject'. - (icalendar-import-format-url, icalendar-import-format-status) - (icalendar-import-format-class): New variables. - (icalendar--rris): Take variable argument list. - (icalendar--datestring-to-isodate): Remove unnecessary - calendar-style check when converting dates with explicit month names. - (icalendar-export-region): Change return type of conversion - subroutines. Bury current buffer unless error occurred. - (icalendar--convert-to-ical) - (icalendar--parse-summary-and-rest): New functions. - (icalendar--convert-ordinary-to-ical) - (icalendar--convert-weekly-to-ical) - (icalendar--convert-yearly-to-ical) - (icalendar--convert-block-to-ical) - (icalendar--convert-cyclic-to-ical) - (icalendar--convert-anniversary-to-ical): Change return type. - Strip trailing blanks from subject. - (icalendar--convert-sexp-to-ical): Change return type. - Strip trailing blanks from subject. Handle simple sexp - entries as generated by icalendar.el. - (icalendar--convert-float-to-ical) - (icalendar--convert-date-to-ical): Strip trailing blanks from subject. - (icalendar-import-file): Doc fix. - (icalendar--format-ical-event): Handle CLASS, STATUS, URL. - Correct call to icalendar--rris. - (icalendar--convert-ical-to-diary): Doc fix. Rename `subject' to - `summary'. - (icalendar--add-diary-entry): Rename `subject' to `summary'. - -2005-10-24 Romain Francoise - - * server.el (server-sentinel): Set query-on-exit flag to nil on - new client processes (it isn't inherited from the server process). - - * replace.el (occur-engine): Rearrange text properties. - -2005-10-23 Stefan Monnier - - * emacs-lisp/debug.el (debugger-make-xrefs): Don't assume - case-fold-search is nil. - (debug-help-follow): Use help-xref-interned directly. - -2005-10-23 Chong Yidong - - * thumbs.el (thumbs-image-type): Add .pbm. - -2005-10-23 Richard M. Stallman - - * faces.el (inhibit-face-set-after-frame-default): New variable. - (set-face-attribute): Bind it. - (face-set-after-frame-default): Test it. - - * help-fns.el (describe-simplify-lib-file-name): New function. - (describe-function-1, describe-variable): Use it. - - * faces.el (describe-face): Use describe-simplify-lib-file-name. - - * tooltip.el (tooltip-x-offset, tooltip-y-offset): Change defaults. - Eliminate nil as possible value. - (tooltip-hide-delay): Reduce internal-border-width. - - * menu-bar.el (menu-bar-file-menu) : Change help-echo string. - (menu-bar-file-menu) : Likewise. - - * simple.el (line-move-finish): Ignore fields computing LINE-END. - - * international/mule.el (load-with-code-conversion): - Pass full file name to `eval-buffer' unless preloading. - - * textmodes/flyspell.el (flyspell-large-region): - Call ispell-check-version. - - * textmodes/ispell.el (ispell-local-dictionary-overridden): - Fix the make-variable-buffer-local call that was supposed - to be for this variable. - (ispell-aspell-supports-utf8): Doc fix. - (ispell-find-aspell-dictionaries): Preserve elements of - ispell-dictionary-alist for dictionaries that aspell doesn't report. - (ispell-aspell-find-dictionary): Return nil on error. - - * play/doctor.el (doctor-doc): Don't say "psychiatrist". - (doctor-symptoms): Likewise. - - * add-log.el (add-log-current-defun): Clean up handling of DEFUNs. - -2005-10-23 Chong Yidong - - * cus-edit.el (custom-button, custom-button-pressed): New vars. - (custom-raised-buttons): Add :set spec. - (custom-button-unraised, custom-button-pressed-unraised): - New faces, so that custom-raised-buttons actually does something. - (custom-mode): Use custom-button and custom-button-pressed. - - * wid-edit.el (widget-specify-button): Don't ignore - widget-mouse-face on graphic terminals. - (widget-move-and-invoke): Cleanup. - -2005-10-23 Thien-Thi Nguyen - - * whitespace.el (whitespace-cleanup): Doc fix. - -2005-10-23 Romain Francoise - - * emulation/viper.el (viper-set-hooks): Quote forms passed to - `eval-after-load' to avoid evaluating their result. - -2005-10-23 Michael Albinus - - * files.el (directory-listing-before-filename-regexp): - New defvar. Replaces `dired-move-to-filename-regexp' from dired.el. - - * dired.el (dired-move-to-filename-regexp): Remove. - All occurrences replaced by `directory-listing-before-filename-regexp'. - - * dired-x.el, locate.el, vc.el: - Replace `dired-move-to-filename-regexp' by - `directory-listing-before-filename-regexp'. In vc.el it is - overwritten locally; maybe this can be handled in files.el too. - - * net/ange-ftp.el (ange-ftp-date-regexp): Remove. All occurrences - replaced by `directory-listing-before-filename-regexp'. - -2005-10-23 Andreas Schwab - - * font-lock.el (lisp-font-lock-keywords-2): Add eval-at-startup - and eval-next-after-load. - -2005-10-23 MIYOSHI Masanori (tiny change) - - * mouse.el (mouse-drag-region): If the *Messages* buffer doesn't - exist, create it. - -2005-10-23 Ken Manheimer - - * allout.el: Remove autoloads for mailcrypt and crypt++. - Require pgg, pgg-gpg during compilation. - (allout-version): Increment version number to 2.1, and use a literal - rather than RCS Id. - (allout-default-encryption-scheme): Remove. - (allout-passphrase-verifier-handling) - (allout-passphrase-verifier-string) - (allout-file-passphrase-verifier-string) - (allout-passphrase-hint-string): Rename -key- to -passphrase-. - (allout-passphrase-hint-handling): Rename and simplify. - (allout-init): Use `find-file-hook' if available, otherwise - `find-file-hooks'. - (allout-mode): Use `write-file-functions' if available, otherwise - `local-write-file-hooks' and, instead of making auto-save-hook - buffer local, make the write-file-hook activity contingent to - allout-mode. - (allout-mode): Use key-binding substitution in the docstring. - (allout-kill-line): Spell-out kill ring data structure mutation - instead of using byte-compiler-complaint-provoking `pop'. - (allout-insert-listified): Use `insert' rather than `insert-string' - (allout-toggle-current-subtree-encryption): Update docstring, adjust - to new gpp-based encryption, use new `allout-encrypted-topic-p'. - (allout-encrypt-string): Totally revamped vis new underlying - encryption facilities. - (allout-mc-activate-passwd): Remove. - (allout-obtain-passphrase): New, more or less replaces - allout-mc-activate-passwd. - (allout-encrypted-key-info): More or less replaces - allout-encrypted-text-type. - (outlineify-sticky, outlinify-sticky): Add autoload cookie. - (my-mark-marker): Use `(featurep 'xemacs)'. - -2005-10-23 Lars Hansen - - * emacs-lisp/bytecomp.el (byte-compile-lambda): New arg add-lambda. - (byte-compile-file-form-defmumble, byte-compile-defun) - (byte-compile-defmacro): Use it. - (byte-compile-form): Don't call byte-compile-set-symbol-position - when a byte-compile handler is called. - -2005-10-22 Romain Francoise - - * savehist.el (savehist-history-variables): Add `grep-find-history'. - - * subr.el (eval-after-load): Convert library name to an absolute - file name using locate-library, since load-history no longer has - library names in it. - -2005-10-22 Richard M. Stallman - - * files.el (make-temp-file): Move from subr.el. - * subr.el (make-temp-file): Move to files.el. - - * window.el (get-buffer-window-list): Move from subr.el. - * subr.el (get-buffer-window-list): Move to window.el. - - * image.el (image-load-path): Use eval-at-startup to initialize. - - * subr.el (eval-at-startup): New macro. - - * subr.el: Much rearrangement of functions and division - into pages. No code changes. - -2005-10-22 Kenichi Handa - - * tar-mode.el (tar-extract): Be sure to call - find-operation-coding-system if set-auto-coding doesn't find a - coding system. - -2005-10-22 Kim F. Storm - - * image.el (image-type-header-regexps): Rename from image-type-regexps. - Change users. - (image-type-file-name-regexps): New defconst. - (image-type-from-data): Simplify loop. - (image-type-from-buffer): New defun. - (image-type-from-file-header): Use it instead of image-type-from-data. - Use image-search-load-path instead of only looking in data-directory. - (image-type-from-file-name): New defun. - (image-search-load-path): Change `pathname' to `filename'. - Make PATH arg optional, default to image-load-path. - -2005-10-21 Richard M. Stallman - - * textmodes/texinfo.el (texinfo-mode): Set sentence-end-base. - - * textmodes/paragraphs.el (sentence-end-base): New variable. - (sentence-end): Use sentence-end-base. - -2005-10-21 Stefan Monnier - - * font-lock.el (font-lock-default-fontify-region): Check the multiline - property independently from the font-lock-multiline variable. - -2005-10-21 Richard M. Stallman - - * emacs-lisp/find-func.el (find-library-name): Doc fix. - - * startup.el (command-line): Convert library names - in `load-history' to absolute file names. - - * subr.el (symbol-file): Doc fix. - - * loadhist.el (file-loadhist-lookup): Call locate-library - instead of find-library-name. Don't try converting - abs file names to library names, since load-history no longer - has library names in it. - (file-dependents, file-provides, file-requires): Doc fixes. - -2005-10-21 Juri Linkov - - * progmodes/etags.el (tags-table-mode): New function. - (tags-verify-table): Replace initialize-new-tags-table with - tags-table-mode. - - * desktop.el (desktop-buffers-not-to-save): Remove TAGS from the - default value. - (desktop-modes-not-to-save): Add tags-table-mode to the - default value. - - * info.el (Info-index-next): Add total number of index - alternatives to the message. - - * textmodes/fill.el (fill-nobreak-p): Fix first two rules to skip - backward only space (instead of space and period) before looking - at sentence end. - - * simple.el (set-variable): Use user-variable-p instead of symbolp. - Add the old variable value as 4th default-value arg of read-string. - -2005-10-21 YAMAMOTO Mitsuharu - - * cus-face.el (custom-declare-face): Make face from X resources - also on Mac. - - * disp-table.el (standard-display-g1, standard-display-graphic): - Refuse to use string glyphs also on Mac. - (standard-display-european): Don't set terminal coding system also - on Mac. - - * frame.el (display-screens): Use x-display-screens also on Mac. - -2005-10-21 Romain Francoise - - * net/rcirc.el: Now part of GNU Emacs. Update FSF's address. - -2005-10-21 Stefan Monnier - - * progmodes/sh-script.el (sh-font-lock-syntactic-keywords): Make $@ - and $? into sexps. - - * font-lock.el (font-lock-compile-keywords): Add a help-echo to the - warning face on open-paren-in-column-0. - - * emacs-lisp/syntax.el (syntax-ppss-flush-cache): Fix corner - boundary case. Fix typo. - Suggested by Martin Rudalics . - -2005-10-21 Carsten Dominik - - * textmodes/org.el (org-combined-agenda-icalendar-file) - (org-icalendar-include-todo, org-icalendar-combined-name): New options. - (org-export-icalendar-this-file) - (org-export-icalendar-all-agenda-files) - (org-export-icalendar-combine-agenda-files): New commands. - (org-export-icalendar, org-print-icalendar-entries) - (org-start-icalendar-file, org-finish-icalendar-file) - (org-ical-ts-to-string): New functions. - (org-read-date, org-goto-calendar) - (org-agenda-goto-calendar): Inhibit displaying diary entries by - call to `calendar'. - (orgtbl-setup): Remove the :keys arguments from the menu description. - (org-after-save-iCalendar-file-hook): New variable. - -2005-10-21 Kenichi Handa - - * language/vietnamese.el (tcvn-5712): Make it an alias of - vietnamese-tcvn coding-system. - -2005-10-20 Michael Albinus - - * net/ange-ftp.el (ange-ftp-date-regexp): Handle also the case no - group id is given. - -2005-10-20 Stefan Monnier - - * progmodes/sh-script.el (sh-escaped-line-re): New var. - (sh-here-doc-open-re, sh-font-lock-close-heredoc): Use it. - (sh-font-lock-open-heredoc): Try to properly handle heredoc starters - whose line is either continued or ends with a comment. - -2005-10-20 Romain Francoise - - * net/rcirc.el (with-rcirc-process-buffer): Move above its first user. - - * replace.el (occur-engine): Add follow-link property. - - * font-core.el (font-lock-mode): Doc fix. - -2005-10-20 Richard M. Stallman - - * net/rcirc.el: New file. - -2005-10-20 Bryan Henderson (tiny change) - - * term.el (term-term-name): Initialize to "eterm-color". - -2005-10-20 Ken Manheimer - - * allout.el: Add autoloads of crypt++ and mailcrypt routines, all - for encryption functionality. - Move allout customization subgroup from `editing' to `outlines' group. - Fix commentary keywords to legitimate ones. - Update author info (using my current email address, obscurified). - (allout-encrypt-string, allout-encryption-produce-work-buffer) - (allout-encrypted-topic-p, allout-encrypted-text-type) - (allout-mc-activate-passwd, allout-create-encryption-key-verifier) - (allout-situate-encryption-key-verifier) - (allout-get-encryption-key-verifier, allout-verify-key) - (allout-next-topic-pending-encryption) - (allout-encrypt-decrypted, allout-encrypted-type-prefix): New funcs. - (outline-topic-encryption-bullet, outline-default-encryption-scheme) - (outline-key-verifier-handling, outline-key-hint-handling) - (outline-encrypt-unencrypted-on-saves): New defcustoms. - (allout-file-key-verifier-string, allout-encryption-scheme) - (allout-key-verifier-string, allout-key-hint-string) - (allout-after-save-decrypt): New variables. - (allout-write-file-hook-handler, allout-auto-save-hook-handler) - (allout-after-saves-handler): New hook functions. - (allout-post-command-business): Do allout-after-save-decrypt. - (allout-enable-file-variable-adjustment): Custom var to enable - mechanism for adding and adjusting settings of Emacs file variables. - (allout-adjust-file-variable, allout-file-vars-section-data): - New functions, implement the mechanism. - (outlineify-sticky): Use the file vars mechanism. - (allout-inhibit-protection, allout-during-write-cue) - (allout-override-protect, allout-before-change-protect): Remove. - (allout-flag-region, allout-open-topic): Adjust read-only text. - (allout-open-line-not-read-only): Add to facilitate read-only - text based protection. - (allout-kill-line): Revise to adjust read-only text, clue the - user about the inhibition. - (allout-unprotected): Use unwind-protect. - (allout-shift-in, allout-shift-out): Disallow manually shifting a - topic deeper than the offspring depth of the previous topic - - avoiding confusing "containment discontinuities". - (allout-reindent-bodies): Fix retention of body relative hanging - indent during promotion of collapsed bodies. - (allout-open-topic): Make it easy to open new topic with same - bullet as current topic - topic creation functions provided with - any universal argument provokes now prompt for bullet, defaulting - to the bullet of the previous topic. - (allout-plain-bullets-string, allout-distinctive-bullets-string): - Plain bullet alternates `.' period and `,' comma only. All other - bullets are relegated to special status (but customizable). - (allout-end-of-entry): Rename from allout-end-of-current-entry - since it actually operates w.r.t. most immediately containing - entry, visible or not. - (allout-hide-current-entry, allout-show-current-entry): Use the - revised version. - (allout-old-expose-topic): Solidify deprecation. - (allout-end-of-subtree): Add so we can span concealed as well - as visible topics. - (allout-end-of-current-subtree): Use `allout-end-of-subtree'. - (allout-end-of-current-heading): Tweak to just respect the first line. - (allout-get-body-text): Add. - (allout-ascend-to-depth, allout-ascend): Position at end of prefix - when invoked interactively. - (allout-up-current-level): Use `interactive-p'. - (allout-mode, allout-init): Miscellaneous docstring and - operational refinements, as well as hookups of new encryption stuff. - (allout-beginning-of-current-entry): Now works as advertised. - (allout-end-of-current-entry): Remove of superfluous allout-show-entry. - (allout-isearch-rectification): Refine condition for isearching. - (allout-isearch-abort, allout-enwrap-isearch) - (allout-flag-region, my-region-active-p): Relocate some macros. - (allout-title): Fallback title is (buffer-name), not - non-existing (current-buffer-name). - (subst-char-in-string): Define if absent (for some XEmacs versions). - -2005-10-20 Jari Aalto - - * mail/sendmail.el (mail-setup-hook, mail-aliases) - (mail-yank-prefix, mail-indentation-spaces, mail-yank-hooks) - (mail-citation-prefix-regexp, mail-signature-file) - (mail-default-headers, mail-bury-selects-summary) - (mail-send-nonascii): Add autoload cookies. - -2005-10-20 Emanuele Giaquinta (tiny change) - - * frame.el (blink-cursor-mode): Add `mac' to the list of - window-system's that support blinking cursor. - -2005-10-20 Reiner Steib - - * textmodes/org.el (org-level-color-stars-only): Fix typo in docstring. - -2005-10-20 Eli Zaretskii - - * makefile.w32-in ($(lisp)/mh-e/mh-loaddefs.el): - Bind find-file-suppress-same-file-warnings to t, to avoid warnings due - to different drive letter case in D:/foo/bar.el vs d:/foo/bar.el. - -2005-10-20 Kim F. Storm - - * ido.el (ido-is-tramp-root): Simplify regexp matching tramp root. - (ido-set-current-directory): Don't add / after final @. - (ido-file-name-all-completions-1): Adapt to fixed tramp completion. - Explicitly handle ange-ftp completion oddities. - (ido-make-file-list): Don't rotate list at tramp root to avoid - triggering tramp file handler for expand-file-name via get-file-buffer. - -2005-10-19 Stefan Monnier - - * savehist.el (savehist-coding-system): Revert to checking XEmacs. - -2005-10-19 Jay Belanger - - * calc/calc-units.el (math-standard-units): Add units, adjust - symbols and update values. - (math-unit-prefixes): Add more prefixes. - -2005-10-19 Romain Francoise - - * bookmark.el (bookmark-menu-heading): New face. - (bookmark-bmenu-list): Use it. - Don't fiddle with `baud-rate' at top-level. - -2005-10-18 Chong Yidong - - * image.el (create-image, find-image): Mention max-image-size in - docstring. - -2005-10-18 Stefan Monnier - - * savehist.el (savehist-load): Revert to checking XEmacs. - - * textmodes/conf-mode.el: Don't use font-lock-defaults-alist. - Various docstring and line-width fixups. - (conf-mode): Use cond. - Set font-lock-defaults. Don't set comment-use-syntax. - -2005-10-18 David Ponce - - * tree-widget.el (tree-widget-button-click): New function. - (tree-widget-button-keymap): Use it. - -2005-10-18 Romain Francoise - - * bookmark.el (bookmark-insert-location, bookmark-bmenu-list) - (bookmark-bmenu-hide-filenames): Add follow-link property. - Improve help-echo text. - - * ffap.el (find-file-at-point): Doc fix. - -2005-10-18 YAMAMOTO Mitsuharu - - * mouse.el (mouse-set-region): Don't do sit-for on a mac frame. - -2005-10-18 Masatake YAMATO - - Install to the CVS repository what I forgot to install in my - 2005-10-16 changes. - - * progmodes/python.el (python-complete-symbol): Pass the common - prefix substring of completion to `display-completion-list'. - - * textmodes/org.el (org-complete): Ditto. - -2005-10-18 Masatake YAMATO - - Fix a bug reported by Sven Joachim . - - * woman.el (WoMan-xref-man-page): New button type derived - from `Man-abstract-xref-man-page'. - (woman-mode): Pass `WoMan-xref-man-page' to `Man-highlight-references'. - - * man.el (Man-abstract-xref-man-page): New button type. - (Man-xref-man-page): Make it derived from `Man-abstract-xref-man-page'. - (Man-highlight-references): Add new optional argument `xref-man-type'. - -2005-10-18 Nick Roberts - - * progmodes/gud.el (gud-menu-map): Correct condition for fringe. - -2005-10-17 Chong Yidong - - * cus-edit.el (Custom-move-and-invoke): Delete. - (custom-mode-map): Bind mouse-1 to widget-move-and-invoke. - - * wid-edit.el (widget-move-and-invoke): New function, from - Custom-move-and-invoke. - -2005-10-17 Bill Wohler - - Move all remaining images from lisp/toolbar to etc/images, move - lisp/toolbar/tool-bar to lisp and "delete" lisp/toolbar. Place - the low resolution images in their own directory (low-color). - - * toolbar/attach.*, toolbar/cancel.*, toolbar/close.* - * toolbar/copy.*, toolbar/cut.*, toolbar/diropen.*, toolbar/exit.* - * toolbar/help.*, toolbar/home.*, toolbar/index.*, toolbar/info.* - * toolbar/mail.*, toolbar/new.*, toolbar/open.*, toolbar/paste.* - * toolbar/preferences.*, toolbar/print.*, toolbar/save.* - * toolbar/saveas.*, toolbar/search.*, toolbar/search-replace.* - * toolbar/spell.*, toolbar/undo.*: Move to etc/images. - - * toolbar/lc-copy.*: Move to etc/images/low-color/copy.*. - * toolbar/lc-cut.*: Move to etc/images/low-color/cut.*. - * toolbar/lc-help.*: Move to etc/images/low-color/help.*. - * toolbar/lc-home.*: Move to etc/images/low-color/home.*. - * toolbar/lc-index.*: Move to etc/images/low-color/index.*. - * toolbar/lc-new.*: Move to etc/images/low-color/new.*. - * toolbar/lc-open.*: Move to etc/images/low-color/open.*. - * toolbar/lc-paste.*: Move to etc/images/low-color/paste.*. - * toolbar/lc-preferences.*: Move to etc/images/low-color/preferences.*. - * toolbar/lc-print.*: Move to etc/images/low-color/print.*. - * toolbar/lc-save.*: Move to etc/images/low-color/save.*. - * toolbar/lc-saveas.*: Move to etc/images/low-color/saveas.*. - * toolbar/lc-search.*: Move to etc/images/low-color/search.*. - * toolbar/lc-spell.*: Move to etc/images/low-color/spell.*. - * toolbar/lc-undo.*: Move to etc/images/low-color/undo.*. - - To conform with convention, replace the underscore (_) in the - following image names with dash (-) or (/) as appropriate. - - * toolbar/back_arrow.*: Move to etc/images/back-arrow.*. - * toolbar/fld_open.*: Move to etc/images/fld-open.*. - * toolbar/fwd_arrow.*: Move to etc/images/fwd-arrow.*. - * toolbar/jump_to.*: Move to etc/images/jump-to.*. - * toolbar/left_arrow.*: Move to etc/images/left-arrow.*. - * toolbar/right_arrow.*: Move to etc/images/right-arrow.*. - * toolbar/up_arrow.*: Move to etc/images/up-arrow.*. - * toolbar/lc-back_arrow.*: Move to etc/images/low-color/back-arrow.*. - * toolbar/lc-fwd_arrow.*: Move to etc/images/low-color/fwd-arrow.*. - * toolbar/lc-jump_to.*: Move to etc/images/low-color/jump-to.*. - * toolbar/lc-left_arrow.*: Move to etc/images/low-color/left-arrow.*. - * toolbar/lc-right_arrow.*: Move to etc/images/low-color/right-arrow.*. - * toolbar/lc-up_arrow.*: Move to etc/images/low-color/up-arrow.*. - * toolbar/mail_compose.*: Move to etc/images/mail/compose.*. - * toolbar/mail_send.*: Move to etc/images/mail/send.*. - - * info.el (info-tool-bar-map): Replace underscores in image names - with dashes. - - * makefile.w32-in (WINS): Remove toolbar. - - * menu-bar.el: Replace toolbar/tool-bar.el with tool-bar.el in comment. - - * tool-bar.el: Move to lisp from toolbar. Now that - toolbar is empty, it should be deleted when folks run "cvs up -P". - -2005-10-18 Jay Belanger - - * calc/calc-store.el (calc-store-into): Get the proper variable name - to display in message. - -2005-10-18 Nick Roberts - - * progmodes/gdb-ui.el (gdb-var-create-handler): Make watch - expressions display in speedbar for all buffers when debugging. - (gdb-speedbar-expand-node): Ensure node contraction is always updated. - - * speedbar.el (speedbar-set-mode-line-format): Indent properly. - (speedbar-insert-button, speedbar-make-button): - Use add-text-properties. - (speedbar-update-localized-contents) - (speedbar-update-directory-contents) - (speedbar-update-special-contents): Use dolist. - (speedbar-buffer-easymenu-definition): Add a menu separator. - -2005-10-17 Jason Rumney - - * makefile.w32-in: Use $(lisp) consistently. - (pre-mh-loaddefs.el-SH, pre-mh-loaddefs.el-CMD): New targets - for shell specific generation of mh-autoloads. - -2005-10-17 Richard M. Stallman - - * textmodes/tex-mode.el (tex-font-lock-keywords-2): Undo prev change. - -2005-10-17 Stefan Monnier - - * jit-lock.el (jit-lock-fontify-now): - Move jit-lock-context-unfontify-pos to avoid wasted work. - -2005-10-17 Michael Albinus - - * net/tramp.el (tramp-completion-mode): New defvar. Used in - `tramp-completion-mode' for checking if we are in completion mode. - (tramp-completion-handle-file-name-all-completions): Reorder code - in order to complete for file names only in case there are no - method/user/host completions. This is necessary for cooperation - with ido. Reported by Kim F. Storm . - -2005-10-16 Chong Yidong - - * longlines.el (longlines-search-forward) - (longlines-search-backward): Match any number of spaces. - -2005-10-16 Thien-Thi Nguyen - - * diff-mode.el (diff-mode): Doc fix. - -2005-10-16 David Reitter - - * mail/sendmail.el (send-mail-function): Use mailclient-send-it - as default on darwin and windows systems. - -2005-10-16 Sven Joachim (tiny change) - - * arc-mode.el (archive-zip-extract): Doc fix. - -2005-10-16 Romain Francoise - - * mouse.el (mouse-1-click-follows-link): Doc fix. - -2005-10-16 Stefan Monnier - - * savehist.el: Don't require CL at runtime. - (savehist-xemacs): Remove. - (savehist-coding-system): Use utf-8 if present, regardless of religion. - (savehist-no-conversion): Use (featurep 'xemacs). - (savehist-load): Check existence of start-itimer rather than XEmacs. - Use an idle timer. - (savehist-process-for-saving): Replace use of CL funs `subseq' and - `delete-if-not'. - -2005-10-16 Hrvoje Niksic - - * savehist.el: Newer version. - (savehist-autosave-interval, savehist-coding-system, savehist-timer) - (savehist-last-checksum, savehist-no-conversion): New vars. - (savehist-autosave, savehist-process-for-saving, savehist-printable): - New functions. - (savehist-load, savehist-save): Use them. - (savehist-delimit): Remove. - -2005-10-16 Stefan Monnier - - * progmodes/compile.el (compilation-goto-locus): Display the - compilation buffer first and the source buffer second, in case they're - in overlapping frames. Don't raise the compilation frame if it was the - selected window upon entry. Pass the `other-window' arg to - pop-to-buffer. - - * info.el (Info-fontify-node): Use dolist. - Change add-text-properties to put-text-property. - -2005-10-16 Roland Winkler - - * textmodes/bibtex.el (bibtex-font-lock-url): Catch when point past - bound of search. - -2005-10-16 Masatake YAMATO - - * dabbrev.el (dabbrev-completion): Pass the common - prefix substring of completion to `display-completion-list'. - - * filecache.el (file-cache-minibuffer-complete) - (file-cache-complete): Ditto. - - * tempo.el (tempo-display-completions): Ditto. - - * wid-edit.el (widget-file-complete, widget-color-complete): Ditto. - - * emacs-lisp/lisp.el (lisp-complete-symbol): Ditto. - - * eshell/em-hist.el (eshell-list-history): Ditto. - - * mail/mailabbrev.el (mail-abbrev-complete-alias): Ditto. - - * mail/mailalias.el (mail-complete): Ditto. - - * progmodes/etags.el (complete-tag): Ditto. - - * progmodes/make-mode.el (makefile-complete): Ditto. - - * progmodes/meta-mode.el (meta-complete-symbol): Ditto. - - * progmodes/octave-mod.el (octave-complete-symbol): Ditto. - - * progmodes/pascal.el (pascal-complete-word) - (pascal-show-completions): Ditto. - - * textmodes/bibtex.el (bibtex-complete-internal): Ditto. - - * simple.el (completion-common-substring): New variable. - (completion-setup-function): Use `completion-common-substring' - to put faces. - -2005-10-16 YAMAMOTO Mitsuharu - - * term/mac-win.el: Apply 2005-10-09 change for term/x-win.el. - (x-get-selection, mac-select-convert-to-string): Convert from/to - UTF-16 clipboard data as in native byte order, no BOM. - -2005-10-16 Nick Roberts - - * progmodes/gud.el (gud-tool-bar-map): Rename the images - appropriately (gud/next, gud/nexti, gud/step, gud/stepi). - (gud-sentinel): Use speedbar-frame to check for speedbar. - -2005-10-15 Richard M. Stallman - - * savehist.el: New file. - -2005-10-14 Karl Chen - - * textmodes/tex-mode.el (tex-font-lock-keywords-2): - Fix bug in \bf fontification. - -2005-10-15 Stefan Monnier - - * pcvs.el (cvs-edit-log-files): New var. - (cvs-mode-edit-log): New arg `file'. - (cvs-edit-log-minor-wrap): Don't set the ignore-marks property. - Instead force the use of the original file and nothing else. - (cvs-edit-log-filelist): Don't use the cvs-mode-* function unless - the cvs-minor-wrap-function is set. - (cvs-do-edit-log): Obey the vars set in cvs-edit-log-minor-wrap. - -2005-10-14 Bill Wohler - - * toolbar/gud-break.*: Moved to etc/images/gud/break.*. - * toolbar/gud-cont.*: Moved to etc/images/gud/cont.*. - * toolbar/gud-down.*: Moved to etc/images/gud/down.*. - * toolbar/gud-finish.*: Moved to etc/images/gud/finish.*. - * toolbar/gud-ni.*: Moved to etc/images/gud/ni.*. - * toolbar/gud-n.*: Moved to etc/images/gud/n.*. - * toolbar/gud-print.*: Moved to etc/images/gud/print.*. - * toolbar/gud-pstar.*: Moved to etc/images/gud/pstar.*. - * toolbar/gud-remove.*: Moved to etc/images/gud/remove.*. - * toolbar/gud-run.*: Moved to etc/images/gud/run.*. - * toolbar/gud-si.*: Moved to etc/images/gud/si.*. - * toolbar/gud-s.*: Moved to etc/images/gud/s.*. - * toolbar/gud-until.*: Moved to etc/images/gud/until.*. - * toolbar/gud-up.*: Moved to etc/images/gud/up.*. - * toolbar/gud-watch.*: Moved to etc/images/gud/watch.*. - - * progmodes/gud.el (gud-tool-bar-map): Rename the images - appropriately (for example, gud-break to gud/break). - -2005-10-14 Chong Yidong - - * longlines.el (longlinges-search-function) - (longlines-search-forward, longlines-search-backward): New functions. - (longlines-mode): Set isearch-search-fun-function to - longlinges-search-function. - - * mouse.el (mouse-drag-region-1): Handle the case where a - double-click event is bound to an arbitrary function. - -2005-10-14 David Ponce - - * recentf.el (recentf-track-opened-file) - (recentf-track-closed-file, recentf-update-menu) - (recentf-used-hooks, recentf-enabled-p): Move before dialog stuff. - (recentf-dialog-mode-map): Map follow-link to RET, so dialogs obey - mouse-1-click-follows-link. - -2005-10-13 Jan Dj,Ad(Brv - - * toolbar/diropen.xpm, toolbar/diropen.pbm: New versions made from - Gnome file-manager.png. Suggested by - Joachim Nilsson . - - * toolbar/README: Add diropen.xpm. - -2005-10-13 Bill Wohler - - * makefile.w32-in (MH_E_SRC): Rename from MH-E-SRC per NMAKE - restrictions. Suggested by David Robinow . - -2005-10-13 Stefan Monnier - - * progmodes/mixal-mode.el (mixal-operation-codes-alist): - Don't waste the byte-compiler's time on constant data. - -2005-10-13 Kenichi Handa - - * international/utf-8.el (utf-8-compose): Display an invalid UTF-8 - byte with `escape-glyph' face. - - * international/fontset.el (ccl-encode-unicode-font): - Lookup utf-subst-table-for-encode, not ucs-mule-cjk-to-unicode. - Handle the case that ucs-mule-to-mule-unicode translates a character to - ASCII (usually for IPA characters). - -2005-10-12 Stefan Monnier - - * info.el (Info-fontify-node): Don't be fooled by a lone "...". - Don't hide the underline of titles if font-lock-mode is disabled. - -2005-10-12 Bill Wohler - - * makefile.w32-in (MH-E-SRC): New. Used by mh-autoloads. - (mh-autoloads): New. Builds mh-e/mh-loaddefs.el. Rebuilds if any - files in MH-E-SRC have been updated. - (updates, compile, recompile, bootstrap): Depend on mh-autoloads. - -2005-10-12 Stefan Monnier - - * progmodes/mixal-mode.el (mixal-operation-codes): Remove. - (mixal-mode-syntax-table): Add \n as end-comment. - (mixal-operation-codes-alist): Immediately initialize to full value. - (mixal-add-operation-code): Remove. - (mixal-describe-operation-code): Make the arg non-optional. - Use the interactive spec instead. - Use mixal-operation-codes-alist rather than mixal-operation-codes. - (mixal-font-lock-keywords): Don't highlight comments here any more. - (mixal-font-lock-syntactic-keywords): New var. - (mixal-mode): Use it. Fix comment-start-skip. - -2005-10-12 Jan Dj,Ad(Brv - - * startup.el (command-line-x-option-alist): -nb => -nbi. - -2005-10-12 Kim F. Storm - - * startup.el (fancy-splash-default-action): Discard mouse click in - the splash screen window, as it has no sensible meaning in the - next window to be selected. Fixes error reported by Jan D. - -2005-10-12 Reiner Steib - - * desktop.el (desktop-load-file): Do nothing when FUNCTION is nil. - -2005-10-11 Stefan Monnier - - * progmodes/mixal-mode.el: Sync with version in the GNU MDK project. - Try to fix up minor layout issues like indentation, line break, etc... - (mixal-mode-syntax-table): Don't try to specify comment syntax, - because it doesn't work. - (mixal-operation-codes): Add some more codes. - (mixal-font-lock-keywords): Process comments here. - (mixal-mode): mixasm no longer needs -g option. - -2005-10-11 Sven Joachim (tiny change) - - * progmodes/sh-script.el (sh-tmp-file): - Use mktemp -t. Finish support for es and rc shells. - -2005-10-11 Jay Belanger - - * calc/calcalg2.el (calc-integral): With an argument, compute the - definite integral. - -2005-10-11 Chong Yidong - - * mouse.el (mouse-drag-region-1): Don't try to catch a - double-click when doing follow-link (it's overridden anyway). - -2005-10-11 Juanma Barranquero - - * emacs-lisp/autoload.el (update-directory-autoloads): Doc fix. - (autoload-print-form-outbuf): Add docstring. - -2005-10-11 Juri Linkov - - * info.el (Info-mode-menu): Delete menu item "Edit". - (Info-mode): Delete description of Info-edit from docstring, - and rearrange descriptions of Info commands in the order - they are documented in the Info manual. - -2005-10-11 Stefan Monnier - - * calendar/appt.el (appt-check): Use diary-selective-display var. - -2005-10-10 Richard M. Stallman - - * net/newsticker.el (newsticker-start, newsticker-show-news): - Add autoload cookies. - -2005-10-10 Emanuele Giaquinta - - * progmodes/sh-script.el (sh-tmp-file): Use mktemp. - -2005-10-10 Karl Chen - - * jka-cmpr-hook.el (jka-compr-handler): Fix typo in `operations' prop. - -2005-10-10 Jay Belanger - - * calc/calc-arith.el (math-check-known-scalarp) - (math-check-known-matrixp): Check the values of arguments that are - variables. - (math-check-known-square-matrixp): New function. - (math-known-square-matrixp): Use math-check-known-square-matrixp. - (math-super-types): Add sqmatrix type. - - * calc/calc-mode.el (calc-matrix-mode, math-get-modes-vec): Change the - mode name `square' to `sqmatrix'. - - * calc/calc.el (calc-matrix-mode, calc-set-mode-line): Change the - mode name `square' to `sqmatrix'. - -2005-10-10 Stefan Monnier - - * progmodes/etags.el (select-tags-table-mode): Don't use - selective-display. - (tags-select-tags-table): Pass `button' to the action function. - (select-tags-table): Place the side-info on button properties rather - than in hidden text. Abbreviate file names. - (select-tags-table-mode-map): Inherit rather than copy buttom-map. - (select-tags-table-select): Add `button' argument. - Get side-info from the button property rather than from hidden text. - -2005-10-11 Nick Roberts - - * progmodes/gud.el (gud-install-speedbar-variables): Add more bindings. - (gud-speedbar-buttons): Preserve point if possible. - (gud-sentinel): Restore previous speedbar display type. - - * progmodes/gdb-ui.el (gdba): Improve diagram. - (def-gdb-auto-update-handler, gdb-info-locals-handler) - (gdb-put-breakpoint-icon, gdb-remove-breakpoint-icons): - Call get-buffer-window once. - -2005-10-10 Stefan Monnier - - * progmodes/pascal.el (pascal-mode-map): Move init into declaration. - (pascal-mode-syntax-table): Make (* *) markers same class as { ... }. - (pascal-indent-command): Remove unused var `ind'. - (pascal-indent-case): Remove unused var `oldpos'. - (pascal-outline-map): Don't inherit from pascal-mode-map anymore, - since it's now used as a proper minor mode map. - (pascal-outline): Rename to pascal-outline-mode. - (pascal-outline-mode): Use define-minor-mode. - (pascal-outline-mode, pascal-outline-change): Use overlays rather than - selective-display. - -2005-10-10 Andreas Schwab - - * textmodes/tex-mode.el (tex-font-lock-keywords-2): Adjust match - number. Reported by Karl Chen . - - * Makefile.in ($(lisp)/mh-e/mh-loaddefs.el): Fix for building - outside source directory. - -2005-10-10 Carsten Dominik - - * textmodes/org.el (org-mode-map): Explicit definition of `C-c - C-x' as a prefix. - (orgtbl-mode-map): Full keymap instead of sparse, because all - `self-insert-command' keys are redefined in this map. - (org-export-as-html): Specify charset for HTML file, by taking it - from the coding system. - -2005-10-10 Kenichi Handa - - * textmodes/flyspell.el (flyspell-check-word-p): - If unread-command-events is non-empty, don't call sit-for. - -2005-10-09 Richard M. Stallman - - * font-lock.el (font-lock-syntactic-keywords) - (font-lock-keywords): Doc fixes. - - * textmodes/flyspell.el (flyspell-external-point-words): - Simplify logic, and don't try to check for consecutive appearances - of one incorrect word. - -2005-10-10 Nick Roberts - - * speedbar.el (speedbar-buffer-easymenu-definition): Add menu - separator. - - * progmodes/gud.el (gud-last-speedbar-buffer): Remove. - (gud-install-speedbar-variables): Add GUD to speedbar "Displays" list. - (gud-expansion-speedbar-buttons): New function. - (gud-speedbar-buttons): Check for gud-comint-buffer. - -2005-10-09 Bill Wohler - - * Makefile.in (updates): Add mh-loaddefs dependency. - -2005-10-09 Chong Yidong - - * speedbar.el (speedbar-file-key-map): Fix typo. - -2005-10-09 Daniel Brockman - - * cus-start.el (line-spacing): Add custom spec. - -2005-10-09 Romain Francoise - - * textmodes/ispell.el (ispell-check-version): Fix last change. - -2005-10-09 Jan Dj,Ad(Brv - - * term/x-win.el: Remove -i, --icon-type from comment. - - * startup.el (command-line-x-option-alist): Remove options -i, - -itype, --icon-type, added -nb, --no-bitmap-icon. - -2005-10-09 Nick Roberts - - * progmodes/gud.el (gud-speedbar-menu-items): Use :visible - instead of :active. - -2005-10-08 Eric Hanchrow (tiny change) - - * textmodes/ispell.el (ispell-check-version): - Ignore hyphen, and all that follows, in aspell's version text. - -2005-10-08 Jay Belanger - - * calc/calc-arith.el (math-known-square-matrixp): New function. - (math-pow-fancy): Check for matrices before distributing exponent - across products. - - * calc/calc-keypd.el (calc-do-keypad): Widen keypad window for - fullscreen keypad. Suggested by Luc Teirlinck. - (calc-keypad-show-input): Add space for formatting. - - * calc/calc-mode.el (calc-matrix-mode, math-get-modes-vec): - Add square matrix option. - - * calc/calc-poly.el (math-expand-term): Check for matrices instead - of checking calc-matrix-mode when deciding how to expand. - - * calc/calc.el (calc-set-mode-line): Add square matrix option. - -2005-10-08 Lars Hansen - - * net/tramp.el (tramp-perl-directory-files-and-attributes): - Add error handling. - (tramp-handle-directory-files-and-attributes): Handle perl error msg. - -2005-10-08 Michael Albinus - - Sync with Tramp 2.0.51. - - * net/tramp.el (tramp-handle-set-visited-file-modtime) - (tramp-handle-insert-file-contents, tramp-handle-write-region): - Insert special handling for `last-coding-system-used', again - it still seems to be necessary (unlike stated before). - Reported by Toshinori Sugita . - (tramp-password-prompt-regexp): There might be other words before - trailing ":". Reported by Kurt Steinkraus . - (tramp-chunksize): Improve docstring. - (tramp-set-auto-save-file-modes): Octal integer code #o600 breaks - Emacs 20. Use `tramp-octal-to-decimal' therefore. Reported by - Christian Joergensen . - -2005-10-07 Glenn Morris - - * progmodes/f90.el (f90-keywords-re, f90-mode): Doc fix. - (f90-font-lock-keywords-2, f90-mode-abbrev-table): Add `double - precision'. - -2005-10-07 Romain Francoise - - * ibuf-ext.el (ibuffer-do-shell-command-pipe) - (ibuffer-do-shell-command-pipe-replace) - (ibuffer-do-shell-command-file, ibuffer-do-eval) - (ibuffer-do-view-and-eval, ibuffer-do-rename-uniquely) - (ibuffer-do-revert, ibuffer-do-replace-regexp) - (ibuffer-do-query-replace, ibuffer-do-query-replace-regexp) - (ibuffer-do-print, ibuffer-filter-by-mode, ibuffer-filter-by-used-mode) - (ibuffer-filter-by-name, ibuffer-filter-by-filename) - (ibuffer-filter-by-size-gt, ibuffer-filter-by-size-lt) - (ibuffer-filter-by-content, ibuffer-filter-by-predicate - (ibuffer-do-sort-by-major-mode, ibuffer-do-sort-by-mode-name) - (ibuffer-do-sort-by-alphabetic, ibuffer-do-sort-by-size): - Autoload file sans suffix. - - * emulation/cua-base.el (cua-toggle-global-mark): Likewise. - -2005-10-07 David Ponce - - * recentf.el (recentf-menu-open-all-flag): New option. - (recentf-digit-shortcut-command-name): New function. - (recentf--shortcuts-keymap): New variable. - (recentf-menu-shortcuts): New variable. - (recentf-make-menu-items): Initialize it. Replace the "More..." - menu item by "All...", if `recentf-menu-open-all-flag' is non-nil. - (recentf-menu-value-shortcut): New function. - (recentf-make-menu-item): Use it. No more in-lined. - (recentf-dialog-mode-map): Base on `recentf--shortcuts-keymap'. - (recentf-open-most-recent-file): Rename from - `recentf-open-file-with-key'. Don't depend on key binding. - (recentf-mode-map): New variable. - (recentf-mode): Use it. - -2005-10-06 Bill Wohler - - * mh-e/mh-loaddefs.el: Remove. Now generated automatically. - - * Makefile.in (AUTOGENEL): Add mh-e/mh-loaddefs.el. - (MH-E-SRC): New. Used by mh-autoloads. - (mh-autoloads): New. Builds mh-e/mh-loaddefs.el. Rebuilds if any - files in MH-E-SRC have been updated. - (compile, recompile, bootstrap): Depend on mh-autoloads. - -2005-10-07 Nick Roberts - - * progmodes/gud.el (gud-menu-map): Only display un-intuitive - gud-break and gud-remove icons when the fringe is not available. - - * progmodes/gdb-ui.el (gdb-fringe-width -> gdb-buffer-fringe-width): - Typo. - -2005-10-06 Micha,Ak(Bl Cadilhac - - * play/zone.el (zone): Wrap body with save-window-excursion. - -2005-10-06 Stefan Monnier - - * calendar/cal-menu.el (calendar-mouse-view-diary-entries): - Use the new `list-only' arg to diary-list-entries. - - * calendar/diary-lib.el: Use overlays rather than selective-display. - (diary-selective-display): New var. - (diary-header-line-format): Use it. - (diary-list-entries): Add argument `list-only'. - Put the buffer in diary-mode. Don't add \^M at beg and end. - Replace \^M by invisible overlays. - (diary-unhide-everything): Replace \^M by invisible overlays. - (print-diary-entries): Look for overlays rather than \^M. - Add a space to the temp buffer name. - (diary-show-all-entries, mark-diary-entries, make-diary-entry): - Put the buffer in diary-mode. - (list-sexp-diary-entries): Replace \^M by invisible overlays. - (diary-anniversary): Make the year arg optional. - (diary-time-regexp): New const. - (diary-font-lock-keywords): Use it to accept a few more time formats. - - * pcvs.el (cvs-sentinel): Make sure we do re-enable undo. - -2005-10-06 Thien-Thi Nguyen - - * textmodes/artist.el (artist-ellipse-mirror-quadrant): - Fix bug introduced 2005-07-03: Use (car (last ...)) - to faithfully reproduce replaced artist-last. - (artist-set-arrow-points-for-poly): Likewise. - Suggested by Johan Bockg,Ae(Brd. - -2005-10-06 Juanma Barranquero - - * dframe.el (x-pointer-hand2, x-pointer-top-left-arrow): - * wid-edit.el (widget): - * progmodes/gdb-ui.el (gdb-buffer-fringe-width): - * progmodes/vhdl-mode.el (speedbar-attached-frame): Add defvars. - -2005-10-06 Kenichi Handa - - * international/mule-cmds.el (set-language-environment): - Fix setting up of case-table for unibyte mode. - - * simple.el (what-cursor-position): If the character is displayed - by some `display' text property, show that. Don't use - single-key-description for eight-bit characters in multibyte mode. - -2005-10-06 Nick Roberts - - * progmodes/gdb-ui.el (gdb-fringe-width): New variable. - (gdb-ann3): Set it. - (gdb-put-breakpoint-icon): Don't take fringe-width from speedbar frame. - (gdb-info-frames-custom): Use inverse-video for first five - characters of selected frame only. - (gdb-get-frame-number): Select frame even when point is on frame - number. - -2005-10-06 Masatake YAMATO - - * progmodes/gdb-ui.el (gdb-info-breakpoints-custom): - Put `font-lock-function-name-face'. - (gdb-info-frames-custom): Put `font-lock-function-name-face' - and `font-lock-variable-name-face' - (gdb-registers-font-lock-keywords): New font lock keywords definition. - (gdb-registers-mode): Use `gdb-registers-font-lock-keywords`. - (gdb-memory-font-lock-keywords): New font lock keywords definition. - (gdb-memory-mode): Use `gdb-memory-font-lock-keywords'. - (gdb-local-font-lock-keywords): New font lock keywords definition. - (gdb-locals-mode): Use `gdb-local-font-lock-keywords' - (gdb-threads-font-lock-keywords): New font lock keywords definition. - (gdb-threads-mode): Use `gdb-threads-font-lock-keywords'. - -2005-10-05 Michael Kifer - - * ediff-merge.el (ediff-merge-region-is-non-clash): New defsubst. - (ediff-merge-region-is-non-clash-to-skip): Previously called - ediff-merge-region-is-non-clash. - - * ediff-mult.el (ediff-append-custom-diff, ediff-meta-show-patch): - Use insert-buffer-substring. - - * ediff-ptch.el (ediff-fixup-patch-map): Use better heuristics for - selecting files to patch. Also bug fixes. - - * ediff-util.el (ediff-setup): Bug fix. - (ediff-next-difference): Never skip clashes that differ in white - space only. - - * ediff-wind.el (ediff-setup-control-frame) - (ediff-destroy-control-frame): Check the menubar feature. - - * viper-cmd.el (viper-normalize-minor-mode-map-alist) - (viper-refresh-mode-line): Use make-local-variable to localize - some vars instead of make-variable-buffer-local. Suggested by - Stefan Monnier. - - * viper-init.el (viper-make-variable-buffer-local): Delete alias. - (viper-restore-cursor-type, viper-set-insert-cursor-type): - Use make-local-variable instead of make-variable-buffer-local. - Suggested by Stefan Monnier. - - * viper.el (viper-mode): Don't use viper-make-variable-buffer-local. - (viper-comint-mode-hook): Use make-local-variable on - require-final-newline. - (viper-non-hook-settings): Don't use make-variable-buffer-local. - -2005-10-05 Stefan Monnier - - * progmodes/scheme.el (scheme-mode-syntax-table): Mark ; as being - also the second char of a comment-start sequence. - (scheme-sexp-comment-syntax-table): New var. - (lambda, define): Set their scheme-doc-string-elt property. - (scheme-font-lock-syntactic-face-function): Handle sexp-comments. - Use lisp-font-lock-syntactic-face-function now that it properly - handles |...| symbols. - (scheme-mode-variables): Set lisp-doc-string-elt-property, - parse-sexp-lookup-properties and font-lock-extra-managed-props. - - * emacs-lisp/lisp-mode.el (lisp-mode-syntax-table): Move the nesting - bit from # to |. - (lisp-font-lock-syntactic-face-function): Distinguish |...| symbols. - - * emacs-lisp/lisp-mode.el (lambda): Add its doc-string-elt property. - (lisp-doc-string-elt-property): New var. - (lisp-font-lock-syntactic-face-function): Use it. - Rewrite to recognize docstrings even for forms not at toplevel. - - * progmodes/scheme.el (scheme-mode-syntax-table): Put the nested - annotation on the | part of #| rather than on the # part. - (scheme-font-lock-syntactic-face-function): New function, to - distinguish strings from |...| symbols. - (scheme-mode-variables): Use it. Also fix up the font-lock-time - syntax-table so that #|...|# is properly highlighted. - - * emacs-lisp/lisp-mode.el (lisp-font-lock-syntactic-face-function): - Don't mark as docstring the 3rd elem of an unknown toplevel form. - -2005-10-04 Stefan Monnier - - * bindings.el (global-map): Resync [home] and [end] bindings with C-a - and C-e. - - * emacs-lisp/eldoc.el: Move comments into docstrings. - (eldoc-message-commands): Initialize in its declaration. - Add move-beginning-of-line and move-end-of-line. - (eldoc-add-command, eldoc-add-command-completions) - (eldoc-remove-command, eldoc-remove-command-completions): Simplify. - - * outline.el (outline-mark-subtree): Activate the mark. - - * calendar/appt.el (appt-time-regexp): New var. - (appt-add, appt-make-list): Use it. - (appt-convert-time): Clean up. - - * textmodes/tex-mode.el (tex-font-lock-syntactic-face-function): - Don't set any syntax-table property here. - (tex-font-lock-verb): New function. Do it here. - (tex-font-lock-syntactic-keywords): Use it. - -2005-10-04 Richard M. Stallman - - * wid-edit.el (widget-file-complete): Get the widget start point - the right way. Default directory to `/' if file has none. - - * x-dnd.el (x-dnd-drop-data): Check for dedicated windows. - - * textmodes/flyspell.el (flyspell-mode-on): - Call ispell-maybe-find-aspell-dictionaries. - - * textmodes/ispell.el (ispell-word, ispell-region): - Call ispell-maybe-find-aspell-dictionaries. - (ispell-accept-buffer-local-defs): - Don't call ispell-maybe-find-aspell-dictionaries. - -2005-10-04 Richard M. Stallman - - * iswitchb.el (iswitchb-buffer-ignore): Label it risky. - -2005-10-04 Emilio C. Lopes - - * iswitchb.el (iswitchb-ignore-buffername-p): Use `functionp' - instead of `fboundp' in order to allow for anonymous functions. - -2005-10-04 Chong Yidong - - * info.el (Info-next, Info-prev, Info-up): Select info buffer, in - case the user clicks on the link while another window is selected. - (Info-speedbar-hierarchy-buttons): Use speedbar-current-frame. - - * dframe.el (dframe-update-keymap): Use mouse-1-click-follows-link - functionality. - (dframe-help-echo): Save point in case mouse tracking is off. - -2005-10-04 Thien-Thi Nguyen - - * net/ange-ftp.el (ange-ftp-ls): Fix typo introduced in last change. - -2005-10-03 Stefan Monnier - - * progmodes/cc-styles.el (c-setup-paragraph-variables): Make sure we do - not change the global value of those vars. - - * progmodes/cc-mode.el (c-basic-common-init): Remove calls to - make-local-variable which we do not need any more. - -2005-10-03 Chong Yidong - - * speedbar.el (speedbar-ignored-path-regexp, speedbar-line-path) - (speedbar-ignored-path-expressions, speedbar-buffers-line-path) - (speedbar-add-ignored-path-regexp, speedbar-buffers-line-path) - (speedbar-path-line): Define obsolete aliases. - (speedbar-line-directory): Doc fix. - - * progmodes/vhdl-mode.el (vhdl-speedbar-initialize) - (vhdl-speedbar-rescan-hierarchy): Call speedbar-line-directory - instead of speedbar-line-path. - -2005-10-03 Jan Dj,Ad(Brv - - * x-dnd.el (x-dnd-drop-data): Don't set dnd-open-file-other-window - to nil if dropping on a window. Handle dropping on a minibuffer window - like dropping on a non-window part of Emacs. - -2005-10-03 Stefan Monnier - - * net/ange-ftp.el: Use with-current-buffer. - (ange-ftp-insert-directory): Do not follow symlinks any more. - - * textmodes/ispell.el (ispell-find-aspell-dictionaries): - Remove interactive spec. - -2005-10-03 Kim F. Storm - - * ido.el (ido-mode): Use custom-initialize-set. - -2005-10-02 Richard M. Stallman - - * progmodes/ebnf2ps.el (ebnf-eps-production-list): - Use insert-buffer-substring. - - * net/tramp.el: Pacify byte compiler warnings in pacification code. - (tramp-handle-file-local-copy): Use insert-buffer-substring. - -2005-10-02 Stefan Monnier - - * net/ange-ftp.el (ange-ftp-insert-directory): Undo unintended part - in last change. - (ange-ftp-insert-directory): Fix up the search for the case where - `file' is absolute. - -2005-10-02 Romain Francoise - - * progmodes/compile.el (compile-goto-error): Delete extra paren. - -2005-10-02 Andreas Schwab - - * ediff-ptch.el (ediff-fixup-patch-map): Handle file names without - directory component in the session info. - -2005-10-01 Richard M. Stallman - - * comint.el (comint-redirect-subvert-readonly): Doc fix. - - * simple.el (next-error-internal): New function. - - * progmodes/compile.el (compilation-buffer-name): New arg MODE-COMMAND. - (compilation-start): Pass new arg to compilation-buffer-name. - (compile-goto-error): Use next-error-internal. - -2005-10-01 Chong Yidong - - * speedbar.el: Remove RCS tag. - (speedbar-check-read-only): Handle non-existent files. - - * dframe.el, ezimage.el, sb-image.el: Remove RCS tags. - - * info.el (Info-speedbar-hierarchy-buttons) - (Info-speedbar-goto-node): Call speedbar-select-attached-frame. - -2005-10-01 Roland Winkler - - * textmodes/bibtex.el (bibtex-valid-entry-whitespace-re): - Do not match newline. - (bibtex-realign): Do not use bibtex-valid-entry-whitespace-re. - (bibtex-summary): Remove unnecessary save-excursion. - (bibtex-fill-field-bounds): Use fill-region-as-paragraph. - -2005-10-01 YAMAMOTO Mitsuharu - - * term/mac-win.el: Add charset info for "iso10646-1". - Modify default fontset to use ATSUI-compatible fonts for some charsets - if available. - -2005-10-01 Chong Yidong - - * speedbar.el: Re-apply arch tag. - (speedbar-version): Rename to version 1.0. Suggested by Eric - M. Ludlam. - Reapply two changes from Emacs CVS' version of speedbar lost - during the merge: - (speedbar-use-imenu-flag): Avoid unnecessary use of locate-library. - (speedbar-frame-parameters): Improve customize type. - -2005-09-30 Stefan Monnier - - * net/ange-ftp.el (ange-ftp-gwp-start): Use with-current-buffer. - (ange-ftp-file-directory-p): Fix the symlink case. - (ange-ftp-insert-directory): When listing a single file, get a list of - the parent buffer and extract the relevant line. Inspired from a patch - by Katsumi Yamaoka . - (ange-ftp-file-name-sans-versions): Simplify. - -2005-09-30 Bill Wohler - - Move MH-E image files from toolbar and mail directories into - etc/images. - - * mail/reply2.*: Move to etc/images/mail/reply*. - - * toolbar/execute.*, toolbar/highlight.*, toolbar/mh-logo.xpm: - * toolbar/page-down.*, toolbar/show.*, toolbar/widen.*: Move to - etc/images. - - * toolbar/alias.*, toolbar/refile.*, toolbar/repack.*: - * toolbar/reply*: Move to etc/images/mail. - - * toolbar/rescan.*: Move and rename to etc/images/refresh.*. - -2005-09-30 Eric M. Ludlam - - * speedbar.el: New version 1.0pre3. - - Frame management code (including timer, and mouse click specifics) - moved to dframe.el: - (speedbar-attached-frame): Removed. Use dframe-attached-frame. - (speedbar-timer): Removed. Use dframe-timer. - (speedbar-close-frame): Removed. Use dframe-close-frame. - (speedbar-activity-change-focus-flag): Removed. Use - dframe-activity-change-focus-flag. - (speedbar-update-speed, speedbar-navigating-speed): Obsolete. Use - dframe-update-speed. - - (speedbar-current-frame): New macro. Use this instead of the - variable speedbar-frame. - - (speedbar-use-images, speedbar-expand-image-button-alist) - (speedbar-insert-image-button-maybe): Moved to sb-image.el. - - (speedbar-find-image-on-load-path): Removed. Replaced by - defezimage in ezimage.el. - (speedbar-expand-image-button-alist): Removed. Replaced by - ezimage-expand-image-button-alist in ezimage.el. - - (speedbar-ignored-directory-regexp) - (speedbar-add-ignored-directory-regexp) - (speedbar-ignored-directory-expressions) - (speedbar-line-directory, speedbar-buffers-line-directory) - (speedbar-directory-line, speedbar-buffers-line-directory): - Renamed, replacing `path' with `directory'. - - (speedbar-create-directory, speedbar-expand-line-descendants) - (speedbar-toggle-line-expansion) - (speedbar-contract-line-descendants): New commands. - - (speedbar-query-confirmation-method, speedbar-select-frame-method) - (speedbar-use-tool-tips-flag): New options. - - (speedbar-check-read-only, speedbar-require-version) - (speedbar-insert-separator, speedbar-buffers-tail-notes) - (speedbar-handle-delete-frame, speedbar-try-completion) - (speedbar-update-localized-contents): New functions. - - (speedbar-incompatible-version, speedbar-ro-to-do-point) - (speedbar-object-read-only-indicator): New variables. - - (speedbar-visiting-tag-hook, speedbar-before-visiting-file-hook): - New hooks. - - (speedbar-separator-face): New face. - - (speedbar-supported-extension-expressions): Add `.g' and `.ma?k'. - (speedbar-ignored-modes): Add fundamental-mode. - (speedbar-directory-unshown-regexp): Add . directories. - - (speedbar-key-map): Remove old SPC and DEL page up/down keys. - (speedbar-file-key-map): Add SPC to toggle node expansion, `[' and - `]' for full expand/close. - (speedbar-buffers-key-map): Add SPC to toggle node expansion. - - (speedbar-check-vc): Support hidden files. - (speedbar-vc-check-dir-p): Use vc-state if available for CVS. - (speedbar-this-file-in-vc): Use vc-state if available. If VC - state is nil, it is not checked out. - - (speedbar-line-text, speedbar-line-token): Support expand buttons - with no text. - (speedbar-refresh): Universal argument acts as power-click. - (speedbar-fetch-dynamic-tags): If a buffer is in Emacs, switch to - that buffer to get variable values. - - And many other bugfixes. - - * dframe.el, ezimage.el, sb-image.el: New files. - - * sb-*.xpm: Remove files. New image files installed into - etc/images/ezimage. - -2005-09-30 Kenichi Handa - - * ps-mule.el (ps-mule-show-warning): If a character is in - ps-print-translation-table, don't treat it as non-printable. - -2005-09-30 David Ponce - - * tree-widget.el (tree-widget-themes-load-path): New variable. - (tree-widget-themes-directory): Doc fix. - (tree-widget-image-formats) [Emacs]: Doc fix. - (tree-widget--locate-sub-directory): New function. - (tree-widget-themes-directory): Use it. - - * recentf.el (recentf-filename-handlers): Rename from - `recentf-filename-handler'. Allow a list of functions. - (recentf-menu-items-for-commands): Fix :help strings. - (recentf-apply-filename-handlers): New function. - (recentf-expand-file-name): Use it. - (recentf-cleanup): Remove duplicates too. - -2005-09-29 Juri Linkov - - * faces.el: Rearrange face definitions to be in the same order as - their face descriptions in "(emacs)Standard Faces". - - * isearch.el (isearch, lazy-highlight): Add group `basic-faces'. - - * tooltip.el (tooltip): Add group `basic-faces'. - - * buff-menu.el (Buffer-menu-buffer): Remove group - `font-lock-highlighting-faces'. - - * progmodes/compile.el (compilation-error, compilation-warning) - (compilation-info, compilation-line-number, compilation-column-number): - Change group from `font-lock-highlighting-faces' to `compilation'. - - * progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face) - (vhdl-font-lock-attribute-face, vhdl-font-lock-enumvalue-face) - (vhdl-font-lock-function-face, vhdl-font-lock-directive-face) - (vhdl-font-lock-reserved-words-face) - (vhdl-font-lock-translate-off-face, syntax-alist): Remove group - `font-lock-highlighting-faces'. - - * cus-edit.el (custom-buffer-sort-alphabetically): Default to nil. - -2005-09-28 Kim F. Storm - - * emulation/cua-base.el: Set CUA move property on additional commands: - up-list, down-list, backward-up-list, end-of-defun beginning-of-defun, - forward-sexp, backward-sexp, forward-list, backward-list. - -2005-09-28 Romain Francoise - - * comint.el (comint-show-output): Really set point at the - beginning of the output when not using `comint-use-prompt-regexp'. - -2005-09-27 Jay Belanger - - * calc/calc-lang.el (math-oper-table): Raise the precedence of "/" - in TeX mode. - -2005-09-26 Juanma Barranquero - - * textmodes/org.el (org-table-sum): Fix format string. - - * textmodes/tex-mode.el (tex-insert-quote, latex-indent): - Quote face names. - -2005-09-26 Romain Francoise - - * isearch.el (isearch-forward-regexp): Close doc string. - -2005-09-25 Richard M. Stallman - - * simple.el (blink-matching-open): Don't no-op when point is BEGV+1. - - * isearch.el (isearch-forward, isearch-forward-regexp): Doc fixes. - - * progmodes/compile.el (compilation-error-properties): - When getting the file from the previous error message, - correctly decode the new data format. - - * progmodes/cc-cmds.el (c-electric-paren): - Call old-blink-paren only for close-paren. - -2005-09-24 Andreas Schwab - - * term/rxvt.el (rxvt-register-default-colors): Delete redundant - condition. - -2005-09-25 Romain Francoise - - * dired-aux.el (dired-copy-file-recursive): - * dired.el (dired-delete-file): - * ediff-mult.el (ediff-dir-diff-copy-file): - * ediff-util.el (ediff-test-save-region): - * forms.el (forms-mode): - * ido.el (ido-file-internal, ido-delete-file-at-head): - * log-edit.el (log-edit-done): - * ses.el (ses-yank-resize): - * play/gomoku.el (gomoku-human-plays, gomoku) - (gomoku-human-resigns, gomoku-prompt-for-other-game) - (gomoku-offer-a-draw): - * play/landmark.el (lm-human-resigns, lm): - * net/eudcb-ldap.el (eudc-ldap-check-base): - * play/mpuz.el (mpuz-offer-abort, mpuz-try-letter, mpuz-close-game): - * progmodes/ebrowse.el (ebrowse-find-pattern): - * progmodes/idlw-shell.el (idlwave-shell-set-bp-check): - * textmodes/reftex-index.el (reftex-index-initialize-phrases-buffer): - End `yes-or-no-p' and `y-or-n-p' prompts with question mark and space. - - * vc.el (vc-delete-file): - * play/gomoku.el (gomoku-terminate-game, gomoku) - (gomoku-prompt-for-move, gomoku-human-takes-back): - * play/landmark.el (lm-human-takes-back, lm-prompt-for-move) - (lm-start-robot, lm-human-plays): Remove extraneous spaces in messages. - -2005-09-24 Dan Nicolaescu - - * term/rxvt.el (rxvt-register-default-colors): Add support for 255 - color rxvt terminals by using the code xterm.el used to use before - 2005-04-09 in order to match the colors used by rxvt. - -2005-09-24 Emanuele Giaquinta (tiny change) - - * term/rxvt.el (rxvt-register-default-colors): Add support for 88 - colors rxvt-unicode terminals by using the same code as xterm.el. - -2005-09-24 Stefan Monnier - - * textmodes/tex-mode.el (tex-font-lock-append-prop) - (tex-font-lock-suscript, tex-insert-quote, latex-indent): Adjust to the - new symbol used for the tex-verbatim face. - -2005-09-24 Emilio C. Lopes - - * woman.el (woman-file-name): - * wid-edit.el (widget-file-prompt-value) - (widget-coding-system-prompt-value): - * w32-fns.el (set-w32-system-coding-system): - * vc.el (vc-version-diff, vc-annotate): - * textmodes/reftex-auc.el (reftex-arg-cite) - (reftex-arg-index-tag): - * textmodes/refer.el (refer-get-bib-files): - * textmodes/artist.el (artist-figlet-choose-font): - * terminal.el (terminal-emulator): - * replace.el (occur-read-primary-args): - * rect.el (string-rectangle, string-insert-rectangle): - * ps-print.el (ps-print-preprint): - * progmodes/pascal.el (pascal-goto-defun): - * progmodes/etags.el (visit-tags-table, visit-tags-table-buffer): - * progmodes/compile.el (compilation-find-file): - * printing.el (pr-interactive-n-up): - * play/animate.el (animate-birthday-present): - * net/rcompile.el (remote-compile): - * man.el (man, Man-goto-section, Man-follow-manual-reference): - * mail/rmailsum.el (rmail-summary-search-backward) - (rmail-summary-search): - * mail/rmailout.el (rmail-output-read-rmail-file-name) - (rmail-output-read-file-name): - * mail/rmail.el (rmail-search, rmail-search-backwards): - * mail/mailabbrev.el (merge-mail-abbrevs, rebuild-mail-abbrevs): - * locate.el (locate): - * international/quail.el (quail-show-keyboard-layout): - * international/mule.el (set-buffer-file-coding-system) - (revert-buffer-with-coding-system, set-file-name-coding-system) - (set-terminal-coding-system, set-keyboard-coding-system) - (set-next-selection-coding-system): - * international/mule-diag.el (describe-coding-system) - (describe-font, describe-fontset): - * international/mule-cmds.el (universal-coding-system-argument) - (search-unencodable-char, describe-input-method) - (set-language-environment, describe-language-environment): - * international/codepage.el (codepage-setup): - * international/code-pages.el (codepage-setup): - * info.el (Info-search, Info-follow-reference) - (Info-search-backward): - * emacs-lisp/advice.el (ad-read-advised-function) - (ad-read-advice-class, ad-clear-cache, ad-activate) - (ad-deactivate, ad-update, ad-unadvise, ad-read-advice-name) - (ad-enable-advice, ad-disable-advice, ad-remove-advice) - (ad-read-regexp): - * ediff-util.el (ediff-toggle-regexp-match): - * ediff-ptch.el (ediff-prompt-for-patch-file): - * dired-aux.el (dired-diff): - * diff.el (diff): - * cus-edit.el (custom-variable-prompt): - * calendar/timeclock.el (timeclock-ask-for-project): - * calc/calcalg3.el (calc-get-fit-variables): - * calc/calc-store.el (calc-edit-variable) - (calc-permanent-variable): - * vc-mcvs.el (vc-mcvs-register): - * shadowfile.el (shadow-define-literal-group): - * woman.el (woman-file-name): - * vc.el (vc-version-diff, vc-merge): - * textmodes/reftex-index.el (reftex-index-complete-tag): - * format.el (format-decode-buffer, format-decode-region): - * emulation/viper-cmd.el (viper-read-string-with-history): - * emacs-lisp/debug.el (cancel-debug-on-entry): - * emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine): - * ediff.el (ediff-merge-revisions) - (ediff-merge-revisions-with-ancestor, ediff-revision): - * completion.el (interactive-completion-string-reader): - * calc/calc-prog.el (calc-user-define-formula): - Follow convention for reading with the minibuffer. - -2005-09-24 Steven Huwig (tiny change) - - * progmodes/python.el (python-describe-symbol): Add globals() and - locals() to the arguments of emacs.ehelp. - -2005-09-24 Magnus Henoch - - * textmodes/ispell.el (ispell-maybe-find-aspell-dictionaries): - New function, code extracted from ispell-valid-dictionary-list. - (ispell-valid-dictionary-list, ispell-accept-buffer-local-defs): - Call it. - -2005-09-24 Eli Zaretskii - - * subr.el (version-regexp-alist): Extend valid syntax for version - strings: allow any of the characters -,_,+ to separate the - alpha/beta/rc part from the version part. Doc fix. - (version-to-list): Doc fix. Bind case-fold-search to t, as advertised. - -2005-09-23 David Reitter - - * mail/mailclient.el: New file. - -2005-09-23 Richard M. Stallman - - * textmodes/flyspell.el (flyspell-highlight-incorrect-region) - (flyspell-incorrect-hook, flyspell-highlight-duplicate-region): - Doc fixes. - - * progmodes/cc-mode.el (c-font-lock-init): - Specify font-lock-lines-before. - -2005-09-23 Stefan Monnier - - * smerge-mode.el (smerge-remove-props): Cause re-highlighting of the - whole conflict. - -2005-09-23 Carsten Dominik - - * textmodes/org.el (org-mode-map, orgtbl-mode-map): - Move keybindings with `C-c C-h' prefix to `C-c C-x' prefix. Make use - of `remap' feature when available. Additional key bindings for - better tty support. - (org-mode-restart, org-force-self-insert): New commands. - (org-time-stamp-inactive): New command. - (org-remap): New function. - (org-table-auto-blank-field, org-level-color-stars-only): New options. - (org-enable-fixed-width-editor): Move to `org-structure' - customization group. - (org-self-insert-command, orgtbl-self-insert-command): Modify to - blank field after field motion commands. - -2005-09-23 Kenichi Handa - - * international/mule-cmds.el (set-language-environment): - Don't check utf-translate-cjk-lang-env is nil or not on deciding if we - have to call utf-translate-cjk-load-tables. - -2005-09-22 Stefan Monnier - - * mouse.el (mouse-move-drag-overlay): Fix last change. - -2005-09-22 David Ponce - - * tree-widget.el (tree-widget-value-create): Fix previous change. - -2005-09-21 Dan Nicolaescu - - * term/xterm.el (terminal-init-xterm): Fix loading rxvt at run time. - -2005-09-21 Stefan Monnier - - * mouse.el (mouse-move-drag-overlay): New function. - (mouse-drag-region-1): Use it. - Try to simplify a bit the state handling. Handle clicks on links - inside intangible areas. - (mouse-save-then-kill): Minor simplification. - (mouse-secondary-overlay): Make it always non-nil instead of - recreating it each time. - (mouse-start-secondary, mouse-set-secondary, mouse-drag-secondary) - (mouse-kill-secondary, mouse-secondary-save-then-kill): - Simplify accordingly. - -2005-09-21 Dan Nicolaescu - - * term/rxvt.el (rxvt-standard-colors): Fix some colors. - -2005-09-20 Michael Kifer - - * ediff-ptch.el (ediff-prompt-for-patch-file): More intuitive prompt. - (ediff-file-name-sans-prefix): Treat nil as an empty string. - (ediff-fixup-patch-map): Better heuristic for intuiting the file names - to patch. - - * ediff-util.el: Use insert-buffer-substring. - - * ediff-vers.el (cvs-run-ediff-on-file-descriptor): Bug fix. - - * emulation/viper-cmd.el (viper-change-state): Don't move over the - field boundaries in the minibuffer. - (viper-set-minibuffer-style): Add viper-minibuffer-post-command-hook. - (viper-minibuffer-post-command-hook): New hook. - (viper-line): Don't move cursor at bolp. - - * emulation/viper-ex.el (ex-pwd, viper-info-on-file): Fix message. - - * emulation/viper-init.el: Add alias to make-variable-buffer-local to - avoid compiler warnings. - - * emulation/viper-macs.el (ex-map): Better messages. - - * emulation/viper-utils.el (viper-beginning-of-field): New function. - - * emulation/viper.el: Replace make-variable-buffer-local with - viper-make-variable-buffer-local everywhere, to avoid warnings. - -2005-09-19 Stefan Monnier - - * mouse.el (mouse-drag-mode-line-1, mouse-drag-vertical-line): - Delete unused var `old-selected-window'. - (mouse-drag-region-1): Delete unused vars `start-frame', `end-of-range'. - (mouse-drag-secondary): Delete unused var `start-frame'. - -2005-09-19 Emanuele Giaquinta (tiny change) - - * term/rxvt.el (terminal-init-rxvt): Add entry for [end]. - -2005-09-19 Stefan Monnier - - * calendar/calendar.el (mark-visible-calendar-date): Save excursion. - Re-indent within 80 columns. Use inhibit-read-only. - -2005-09-19 Romain Francoise - - * calendar/diary-lib.el (mark-diary-entries): Revert last change. - -2005-09-19 Stefan Monnier - - * font-lock.el (font-lock-default-fontify-region): Don't add a line - unconditionally, since the after-change-function already did it. - -2005-09-19 Miles Bader - - * net/newsticker.el: Get rid of CVS keyword. - -2005-09-19 Johan Bockg,Ae(Brd - - * dired-aux.el (dired-handle-overwrite): Don't use `format' here. - The prompt is formatted later. - -2005-09-19 David Ponce - - * tree-widget.el (tree-widget-value-create): Save the converted - tree :node widget. - -2005-09-19 Juanma Barranquero - - * progmodes/sh-script.el (sh-blink): Fix spurious reference to - variable `message'. - -2005-09-18 Michael Albinus - - * net/tramp.el (tramp-login-prompt-regexp): Expand regexp in order - to cover prompts like "login as:". Reported by Slawomir Nowaczyk - . - -2005-09-18 Chong Yidong - - * image.el (image-load-path): Use symbol `data-directory' instead - of its value, for backward compatibility with packages that bind - it during `find-image'. Suggested by Katsumi Yamaoka. - (image-search-load-path): Handle symbols whose values are strings. - -2005-09-18 Romain Francoise - - * calendar/diary-lib.el (mark-diary-entries): Rearrange to wrap - with-current-buffer form in save-excursion. - -2005-09-18 Deepak Goel - - * apropos.el (apropos-command): Fix `message' call: first arg - should be a format spec. In this and all other cases that appear - below and elsewhere in the source code, I made a change only when - two conditions were satisfied: [1] I can think of a possibility - that the arguments would cause an error, for example, the code in - question relies on external variables such as filenames. [2] I - was sure that the arg to `message' could not have been nil in the code. - - * textmodes/tildify.el (tildify-region): Ditto. - - * textmodes/reftex-index.el (reftex-index-change-entry) - (reftex-index-phrase-selection-or-word, reftex-query-index-phrase): - * textmodes/reftex-dcr.el (reftex-echo-ref, reftex-echo-cite): - * textmodes/org.el (org-complete, org-deadline, org-schedule) - (org-priority, org-table-sum): - * textmodes/ispell.el (ispell-check-version, ispell-parse-output): - * textmodes/flyspell.el (flyspell-mode-on, flyspell-notify-misspell) - (flyspell-word, flyspell-display-next-corrections): - * textmodes/bibtex.el (bibtex-print-help-message): - * textmodes/artist.el (artist-key-set-point-poly): - * term/mac-win.el (mac-services-insert-text): - * progmodes/vhdl-mode.el (vhdl-warning, vhdl-print-warnings) - (vhdl-hooked-abbrev, vhdl-template-insert-fun) - (vhdl-port-paste-testbench, vhdl-compose-new-component) - (vhdl-compose-configuration): - * progmodes/sh-script.el (sh-blink, sh-show-indent) - (sh-set-indent, sh-learn-line-indent): - * progmodes/ps-mode.el (ps-mode-target-column): - * progmodes/idlwave.el (idlwave-make-tags) - (idlwave-scan-library-catalogs): - * progmodes/idlw-shell.el (idlwave-shell-parse-stack-and-display): - * progmodes/gud.el (gud-jdb-analyze-source): - * progmodes/flymake.el (flymake-log): - * progmodes/ebnf2ps.el (ebnf-generate-region): - * progmodes/cmacexp.el (c-macro-expansion): - * progmodes/ada-xref.el (ada-treat-cmd-string): - * progmodes/ada-mode.el (ada-create-case-exception-substring) - (ada-justified-indent-current, ada-batch-reformat): - * play/zone.el (zone): - * play/landmark.el (lm-move): - * play/decipher.el (decipher-show-alphabet): - * net/newsticker.el (newsticker--display-jump) - (newsticker--display-scroll): - * mail/rmail-spam-filter.el (rsf-add-subject-to-spam-list) - (rsf-add-sender-to-spam-list, rsf-add-region-to-spam-list): - * mail/feedmail.el (feedmail-dump-message-to-queue): - * eshell/esh-proc.el (eshell-remove-process-entry): - * emulation/ws-mode.el (ws-last-error): - * emulation/viper-macs.el (ex-map-read-args, ex-unmap-read-args) - (viper-record-kbd-macro): - * emulation/viper-ex.el (ex-pwd, viper-info-on-file): - * emacs-lisp/lisp-mnt.el (lm-report-bug): - * emacs-lisp/find-func.el (find-function-noselect): - * calendar/timeclock.el (timeclock-status-string) - (timeclock-workday-remaining-string, timeclock-workday-elapsed-string) - (timeclock-when-to-leave-string): - * calendar/icalendar.el (icalendar--convert-ical-to-diary): - * calc/calc-units.el (calc-enter-units-table): - * calc/calc-mode.el (calc-mode-record-mode): - * woman.el (woman-mini-help): - * wdired.el (wdired-change-to-wdired-mode): - * vc.el (vc-retrieve-snapshot): - * strokes.el (strokes-read-stroke, strokes-read-complex-stroke): - * startup.el (display-startup-echo-area-message): - * simple.el (set-goal-column): - * ses.el (ses-command-hook, ses-recalculate-cell): - * server.el (server-process-filter): - * printing.el (pr-interface-txt-print, pr-interface-printify) - (pr-interface-ps): - * pcvs.el (cvs-help): - * log-edit.el (log-edit, log-edit-mode-help): - * iswitchb.el (iswitchb-possible-new-buffer): - * isearch.el (isearch-edit-string): - * image-mode.el (image-mode, image-minor-mode): - * ibuf-macs.el (define-ibuffer-filter): - * hi-lock.el (hi-lock-find-patterns): - * files.el (toggle-read-only): - * ediff-util.el (ediff-copy-diff) - (ediff-write-merge-buffer-and-maybe-kill): - * echistory.el (Electric-history-undefined): - * dnd.el (dnd-insert-text): - * dired-aux.el (dired-query): - * desktop.el (desktop-restore-file-buffer, desktop-lazy-create-buffer): - * bookmark.el (bookmark-bmenu-locate): - * obsolete/fast-lock.el (@top-level) : - Fix `message' calls to ensure first arg is a format string. - The change was made only when these two conditions were satisfied: - [1] when there is a possibility that the arguments would cause an error - for example, if the code in question relies on external variables - such as filenames, and - [2] if the arg to `message' could not have been nil in the code. - - * pcomplete.el (pcomplete--help): Fix `message' format spec. - Not having a %s would be weird, though not technically wrong. - -2005-09-18 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-add-charset-info): Doc fix. - -2005-09-17 Romain Francoise - - * shell.el (shell-resync-dirs): Handle echoing processes more - reliably. Don't insert resync command if `comint-process-echoes' - is non-nil. - -2005-09-17 Magnus Henoch - - * textmodes/ispell.el (ispell-aspell-supports-utf8): New variable. - (ispell-check-version): Set ispell-aspell-supports-utf8 to t for - aspell versions >= 0.60. - (ispell-valid-dictionary-list): Call ispell-find-aspell-dictionaries - only if ispell-aspell-supports-utf8 is non-nil. - -2005-09-17 Johan Bockg,Ae(Brd - - * progmodes/scheme.el (scheme-mode-variables): Use setq to assign - buffer-local value to lisp-indent-function. - -2005-09-17 Milan Zamazal - - * progmodes/glasses.el (glasses-make-readable): If - glasses-separator differs from underscore, put appropriate - overlays over underscore characters. - (glasses-convert-to-unreadable): If glasses-separator differs from - underscore, try to convert glasses-separator characters to - underscores. - -2005-09-16 Stefan Monnier - - * calendar/diary-lib.el (mark-diary-entries): Don't move point. - Use with-syntax-table and dolist. - -2005-09-16 Carsten Dominik - - * textmodes/reftex-auc.el: - * textmodes/reftex-cite.el: - * textmodes/reftex-dcr.el: - * textmodes/reftex-global.el: - * textmodes/reftex-parse.el: - * textmodes/reftex-ref.el: - * textmodes/reftex-sel.el: - * textmodes/reftex-toc.el: - * textmodes/reftex-vars.el: - * textmodes/reftex.el: Small changes to remove compiler warnings. - - * textmodes/reftex-index.el: Likewise. - (reftex-query-index-phrase): More efficient use of markers. - -2005-09-15 Chong Yidong - - * image.el (image-load-path): New variable. - (image-search-load-path): New function. - (find-image): Search for images in `image-load-path'. - -2005-09-15 Richard M. Stallman - - * follow.el: Change Maintainer field. - -2005-09-15 David Ponce - - * recentf.el (recentf-save-file-modes): New option. - (recentf-save-list): Use it. - -2005-09-15 Nick Roberts - - * bindings.el (mode-line-eol-desc, mode-line-coding-system-map) - (mode-line-mule-info, mode-line-modified): Move bindings from - mouse-3 to mouse-1. - -2005-09-15 Chong Yidong - - * simple.el (sendmail-user-agent-compose): Revert last change. - -2005-09-14 Stefan Monnier - - * net/ange-ftp.el (ange-ftp-process-filter): Revert to ^#+$. - Use with-current-buffer. - (ange-ftp-gwp-start): Remove unused var `gw-user'. - (ange-ftp-guess-hash-mark-size): Remove unused var `result'. - (ange-ftp-insert-directory): Remove unused var `short'. - (ange-ftp-file-name-sans-versions): Remove unused var `host-type'. - - * pcvs-defs.el (cvs-version): Recognize CVSNT version string. - (cvs-execute-single-dir): Change default: cvs-1.9 is ancient. - - * calendar/cal-menu.el: Don't require easymenu, since we don't use it. - (check-calendar-holidays, diary-list-entries): Autoload. - Otherwise `emacs -q' followed by "mouse-2 -> diary entries" burps. - (calendar-mouse-holidays, calendar-mouse-view-diary-entries): Simplify. - - * calendar/diary-lib.el (diary-show-all-entries): Fix last change, - which mistakenly removed a call to display-buffer. - -2005-09-14 Juanma Barranquero - - * obsolete/iso-insert.el: Move to obsolete/ from international/. - -2005-09-14 Thien-Thi Nguyen - - * progmodes/hideshow.el - (hs-hide-comments-when-hiding-all): Remove autoload cookie. - (hs-allow-nesting): New user var. - (hs-discard-overlays): Skip "internal" overlays if nesting allowed. - (hs-hide-block-at-point): When nesting allowed, - if there is already an overlay in place, delete it. - (hs-safety-is-job-n): Delete func; remove call sites. - (hs-hide-level-recursive): Don't pre-clean if nesting allowed. - (hs-overlay-at): New func. - (hs-already-hidden-p, hs-show-block): Use it. - (hs-hide-all): Don't pre-clean if nesting allowed. - (hs-show-all): Temporarily disallow - nesting around call to `hs-discard-overlays'. - -2005-09-14 Chong Yidong - - * mouse.el (mouse-major-mode-menu): Make `prefix' optional. - Delete unused local var. - -2005-09-13 Juanma Barranquero - - * help-fns.el (describe-categories): "?\ " -> "?\s". - (help-do-arg-highlight): Recognize also ARG-n, as in - `move-to-left-margin' (ARG+n is already recognized). Simplify. - - * international/codepage.el (dos-unsupported-char-glyph): - * net/newsticker.el (tool-bar-map, w3-mode-map) - (w3m-minor-mode-map): - * progmodes/vhdl-mode.el (conf-alist, conf-entry, conf-key) - (ent-alist): - * textmodes/reftex-vars.el (reftex-tables-dirty): Add defvars. - -2005-09-13 Chong Yidong - - * custom.el (custom-push-theme): Handle the case where a symbol is - bound but face properties have not yet been assigned. - - * mail/sendmail.el (mail): Use new buffer if `noerase' is `new'. - Fix behavior if noerase is `t' and there is no mail buffer. - - * simple.el (sendmail-user-agent-compose): Use a new mail buffer - if `continue' is nil, rather than signal an error. - -2005-09-12 Richard M. Stallman - - * font-lock.el (font-lock-keywords): Add autoload. - - * help-fns.el (describe-variable): Rearrange to put source link - in a predictable place. - - * net/newsticker.el: New file. - -2005-09-12 Stefan Monnier - - * calendar/calendar.el (calendar-for-loop): Add edebug info. - (calendar-basic-setup): Use the new nil arg. - (number-of-diary-entries): Move to diary-lib.el. - - * calendar/diary-lib.el: Use with-current-buffer, match-string. - (diary-list-entries): Use with-syntax-table and dolist. - Rename from list-diary-entries. - Use number-of-diary-entries if `number' is nil. - (diary, diary-view-entries): Use this new name and new nil arg value. - (number-of-diary-entries): Move from calendar.el. - (diary-unhide-everything): New function. - (include-other-diary-files, fancy-diary-display) - (diary-show-all-entries, make-diary-entry): Use it. - (diary-mail-entries): Use buffer-string. - (mark-diary-entries): Fix long standing paren typo. - (diary-sexp-entry): Use count-lines. - (make-diary-entry): Avoid `previous-line'. - (diary-mode-map): New var. - (diary-mode): Redraw cal after saving. Setup header-line. - (fancy-diary-display-mode): Use local-set-key. - - * startup.el (command-line): Try calling various terminal-init-foo-bar - functions by stripping hyphenated suffixes from $TERM. - - * files.el (normal-mode): Check boundness of font-lock-keywords. - -2005-09-12 Richard M. Stallman - - * progmodes/compile.el: Don't decide a file's directory - until the user actually tries to go there. - (compilation-next-error-function): - Pass compilation-find-file the directory from the file-struct. - (compilation-internal-error-properties): Separate local FILE-STRUCT - from FILE. Doc the args better. Rename arg FMT to FMTS. - (compilation-find-file): Arg DIR renamed to DIRECTORY. - Expand it, and if nil, use default-directory. - (compilation-get-file-structure): Don't mix specified directory - with default directory. Put specified directory into - file-struct. Don't make the file name absolute. - - * progmodes/compile.el (compilation-error-regexp-alist): Doc fix. - (compile-command): Add autoload. - (compilation-disable-input): Add autoload. - -2005-09-11 Stephen Gildea - - * time-stamp.el: Mention variable `time-stamp-pattern' in doc - strings of the variables it can override. - (time-stamp): New (as yet undocumented) time-stamp-format escapes - %Q and %q, for fully-qualified domain name and unqualified host name. - -2005-09-11 Kim F. Storm - - * emacs-lisp/authors.el (authors-aliases): Update list. - (authors-fixed-entries): Update mldrag.el entry. - -2005-09-10 Alan Mackenzie - - * page.el (narrow-to-page): Exclude _entire_ multi-line delimiter - from the region narrowed to. - -2005-09-10 Magnus Henoch - - * textmodes/ispell.el (ispell-check-version): Signal an error if - aspell version is less than 0.60. - -2005-09-10 Pascal Dupuis (tiny change) - - * progmodes/octave-inf.el (inferior-octave-startup): - Resync current dir at the end. - -2005-09-10 Emilio C. Lopes - - * woman.el (woman-topic-at-point-default): - Rename to woman-use-topic-at-point-default. - (woman-topic-at-point): Rename to woman-use-topic-at-point. - (woman-file-name): Reflect renames above. Automatically use the - word at point as topic if woman-use-topic-at-point is non-nil. - Otherwise offer it as default but don't insert it in the - minibuffer. Also use `test-completion' instead of `assoc' as - suggested by Stefan Monnier. - -2005-09-10 Andre Spiegel - - * vc.el (vc-directory, vc-update-change-log): Throw an error on - the attempt to do it over Tramp. This is not yet supported. - -2005-09-10 Eli Zaretskii - - * menu-bar.el (menu-bar-menu-frame-live-and-visible-p) - (menu-bar-non-minibuffer-window-p): New functions. - ("Split Window", "Save As..."): Use them. - ("Postscript Print Buffer (B+W)", "Postscript Print Buffer") - ("Print Buffer", "Truncate Long Lines in this Buffer"): - Use menu-bar-menu-frame-live-and-visible-p. - ("Save Buffer", "Insert File", "Open Directory...") - ("Open File...", "Visit New File..."): - Use menu-bar-non-minibuffer-window-p. - (kill-this-buffer-enabled-p, dired ): - Use menu-bar-non-minibuffer-window-p. - -2005-09-09 Eli Zaretskii - - * cus-start.el (all): Don't complain about fringe-related - built-ins if fringes are not supported. Ditto about - selection-related built-ins. Fix the test for GTK-related built-ins. - - * menu-bar.el ("Split Window", "Postscript Print Buffer (B+W)") - ("Postscript Print Buffer", "Print Region", "Save As...") - ("Save", "Insert File...", "Open Directory...") - ("Open File...", "Visit New File..."") - ("Truncate Long Lines in this Buffer"): Don't look at - menu-updating-frame if this display does not support multiple frames. - -2005-09-09 Frederik Fouvry - - * mail/sendmail.el (default-sendmail-coding-system): Doc fix. - -2005-09-09 Emilio C. Lopes - - * woman.el: Format- and whitespace-related changes. - -2005-09-09 Eli Zaretskii - - * woman.el: Fix my email address. - -2005-09-08 Richard M. Stallman - - * progmodes/sh-script.el (sh-skeleton-pair-default-alist): New var. - (sh-mode): Locally set skeleton-pair-default-alist. - - * progmodes/make-mode.el (makefile-add-log-defun): Trim the result. - - * progmodes/flymake.el: Require `compile' unconditionally. - - * mail/sendmail.el (send-mail-function): Add Mailclient alternative. - - * woman.el (woman-file-name): Provide a default, not initial input. - - * smerge-mode.el (smerge-resolve): Pass args to smerge-remove-props. - - * font-lock.el (font-lock-support-mode): Doc fix. - - * descr-text.el (describe-property-list): Handle non-symbol prop names. - -2005-09-08 Richard M. Stallman - - * simple.el (blink-matching-open): Get rid of text props from - the string shown in echo area. Don't permanently set point. - Some rearrangements. - -2005-09-08 Reiner Steib - - * recentf.el (recentf-filename-handler): Add custom choice - `abbreviate-file-name'. - - * msb.el (msb--very-many-menus): Fix typo. - - * disp-table.el (standard-display-european): Don't set - enable-multibyte-characters to nil. - -2005-09-08 David Ponce - - * recentf.el (recentf-show-file-shortcuts-flag): New option. - (recentf-expand-file-name): Doc fix. - (recentf-dialog-mode-map): Define digit shortcuts. - (recentf--files-with-key): New variable. - (recentf-show-digit-shortcut-filter): New function. - (recentf-open-files-items): New function. - (recentf-open-files): Use it. - (recentf-open-file-with-key): New command. - -2005-09-08 Chong Yidong - - * buff-menu.el (Buffer-menu-sort-by-column): New function. - Suggested by Kim F. Storm. - (Buffer-menu-sort-button-map): Global keymap for sort buttons. - (Buffer-menu-make-sort-button): Use global keymap. - -2005-09-07 Michael Albinus - - * woman.el (top): Remap `man' command by `woman' in `woman-mode-map'. - (Man-getpage-in-background-advice): Remove defadvice; it isn't - necessary any longer with the remapped command. - (Man-bgproc-sentinel-advice): Remove defadvice which counts - formatting time only. - - * net/tramp.el (tramp-action-password) - (tramp-multi-action-password): Compile the password prompt from - `method', `user' and `host'. Sometimes it isn't obvious which - password to enter, for example with remote files offered by - recentf.el, or with multiple steps. Suggested by Robert Marshall - . - -2005-09-07 Stefan Monnier - - * progmodes/perl-mode.el (perl-font-lock-syntactic-keywords): - Fix regexp for when "s///" is at the beginning of line. - -2005-09-07 Jay Belanger - - * calc/calc-poly.el (math-expand-term): Multiply out any powers - when in matrix mode. - -2005-09-06 Stefan Monnier - - * buff-menu.el (Buffer-menu-make-sort-button): Add docstrings, use - non-anonymous functions. - -2005-09-06 Chong Yidong - - * buff-menu.el (Buffer-menu-make-sort-button): Allow mouse-1 clicks - when using a header line. Otherwise, use mouse-1-click-follows-link. - - * mouse.el (mouse-drag-header-line): Do nothing if the header-line - can't be moved; don't signal an error. - -2005-09-05 Chong Yidong - - * cus-theme.el (custom-theme-write-faces): Save the current face - spec, not the defface spec. - - * custom.el (custom-known-themes): Clarify meaning of "standard". - (custom-push-theme): Save old values in the standard theme. - (disable-theme): Correct typo. - (custom-face-theme-value): Deleted unused function. - (custom-theme-recalc-face): Rewritten to treat enable/disable properly. - -2005-09-05 Stefan Monnier - - * progmodes/compile.el (compilation-goto-locus): Take into account - iconified frames when determining whether the buffer is - already visible. - Don't reset window height if the window already existed. - -2005-09-04 Chong Yidong - - * custom.el (load-theme): Rename from require-theme. - Add interactive spec. - (enable-theme): Rename from custom-enable-theme. - Add interactive spec. - (disable-theme): Rename from custom-disable-theme. - Add interactive spec. - (custom-make-theme-feature): Doc fix. - (custom-theme-directory): Doc fix. - (provide-theme): Call enable-theme. - -2005-09-02 Stefan Monnier - - * obsolete/lazy-lock.el (lazy-lock-mode): - * obsolete/fast-lock.el (fast-lock-mode): Don't try to turn on - font-lock-mode if it's off. Print a warning instead. - - * progmodes/compile.el (compilation-start): Ignore errors if the - process died before we get to send-eof. - - * textmodes/tex-mode.el (tex-send-tex-command, tex-bibtex-file): - Undo last change. Enclosing the result in quotes broke things on Unix - since tex-send-command passes it through shell-quote-argument. - (tex-send-command): Pass `file' through convert-standard-filename - when possible. - (tex-uptodate-p): Handle the case where TeX hasn't put additional - info in a transcript. - -2005-09-02 Dan Nicolaescu - - * term/xterm.el (terminal-init-xterm): Add eval-when-compile to - fix compilation warning. Reorder the key definitions to group - together keys emitted by the current version of xterm. - - * progmodes/vhdl-mode.el (vhdl-highlight-faces) - (vhdl-speedbar-entity-face, vhdl-speedbar-entity-selected-face): - Reorder predicates to correct min-color usage. - -2005-09-01 Chong Yidong - - * longlines.el (longlines-mode): Inhibit read-only when encoding. - Kill local variables when longlines-mode is turned off. - -2005-09-01 Stefan Monnier - - * international/mule-cmds.el (set-locale-environment): Soothe compiler. - - * obsolete/lazy-lock.el (lazy-lock) : Move from font-lock.el. - - * obsolete/fast-lock.el (fast-lock) : Move from font-lock.el. - - * font-lock.el (fast-lock, lazy-lock) : Remove. - (font-lock-lines-before): Change default to being inactive. - (font-lock-default-fontify-region): Obey font-lock-lines-before. - (font-lock-after-change-function): Don't handle f-l-lines-before here. - -2005-08-31 Michael Albinus - - * net/tramp.el (tramp-handle-make-auto-save-file-name): - Deactivate temporarily advice if active (not needed for Emacs 22, - but for backwards compatibility). - (tramp-exists-file-name-handler): Rewrite. First implementation - was too simple. - (tramp-advice-make-auto-save-file-name): - Call `tramp-handle-make-auto-save-file-name' (again, just for - backwards compatibility). - -2005-08-31 Reto Zimmermann - - * progmodes/vhdl-mode.el - (vhdl-update-sensitivity-list): Handle multi-dimensional array access. - (vhdl-end-p): Fix indentation bug "else" after "-- when". - (vhdl-set-default-project): New function (easier setting of default). - (vhdl-port-copy): Handle extended identifiers for generics. - (vhdl-compiler-alist): Better description for error message regexp. - (vhdl-make): Query for target, use previous as default. - (vhdl-port-copy): Fix port copy for port names starting with "signal". - (vhdl-font-lock-keywords-2): Fix fontification for record - el. assign. - (vhdl-speedbar-make-subpack-line): Add package body link. - (vhdl-generate-makefile-1): Not include itself as dependency. - (vhdl-font-lock-init): Highlight c-preprocessor directives. - (vhdl-*ward-syntactic-ws): Skip c-preprocessor directives. - (vhdl-get-syntactic-context): Handle c-preprocessor directives. - (vhdl-update-sensitivity-list): Start scan at opening parenthesis. - (vhdl-fixup-whitespace-region): Fix jumping point (infinite loop). - (vhdl-update-sensitivity-list-buffer): Add string argument for `error'. - (vhdl-import-project): Add string argument for `error'. - (vhdl-compose-configuration) - (vhdl-compose-configuration-architecture): Add configuration - declaration generation. - (vhdl-scan-directory-contents): Scan for block/generate hierarchy. - (vhdl-trailer-re): Add "record" keyword (better indentation). - (vhdl-fixup-whitespace-region): "[^ \t\"-]+" instead of - "[^ \t-\"]+". - (vhdl-font-lock-keywords-2): Not highlight formal parameter after `|'. - (vhdl-testbench-entity-file-name) - (vhdl-testbench-architecture-file-name): Allow separate - customization of testbench file names. - (vhdl-beginning-of-block): Handle optional subprogram parameter list. - (vhdl-get-visible-signals): Allow newline within alias declaration. - (vhdl-update-sensitivity-list): Signal read only on certain attributes. - (vhdl-fixup-whitespace-region): Fix bug with strings (double quotes). - (member-ignore-case): Alias for missing function in XEmacs. - (vhdl-compiler-alist): Add unit-to-file name mapping for Cadence NC. - (vhdl-update-sensitivity-list): Ignore case on read signals. - (vhdl-replace-string): Adjust case only for file names. - (vhdl-update-sensitivity-list): Fix search for read signals. - (vhdl-update-sensitivity-list): Exclude formal parameters. - (vhdl-get-visible-signals): Include aliases of signals. - (vhdl-get-visible-signals): Fix signal name searching. - (vhdl-port-flatten, vhdl-port-reverse-direction): Better message. - (vhdl-fixup-whitespace-region): Fix for character - literals (e.g. `:'). - -2005-08-31 Juanma Barranquero - - * ansi-color.el (comint-last-output-start): - * bs.el (font-lock-verbose): - * diff-mode.el (add-log-buffer-file-name-function): - * dired-x.el (vm-folder-directory): - * faces.el (help-xref-stack-item): - * files.el (font-lock-keywords): - * find-lisp.el (dired-buffers, dired-subdir-alist): - * ido.el (cua-inhibit-cua-keys): - * log-view.el (cvs-minor-wrap-function): - * outline.el (font-lock-warning-face): - * simple.el (compilation-current-error): - * speedbar.el (ange-ftp-path-format, efs-path-regexp) - (font-lock-keywords, x-pointer-hand2, x-pointer-top-left-arrow): - * tooltip.el (comint-prompt-regexp): - * w32-fns.el (explicit-shell-file-name): - * term/mac-win.el (mac-charset-info-alist) - (mac-services-selection, mac-system-script-code): - * term/tty-colors.el (msdos-color-values): - * term/w32-win.el (xlfd-regexp-registry-subnum): - * term/x-win.el (x-keysym-table, x-selection-timeout) - (x-session-id, x-session-previous-id): - * textmodes/ispell.el (mail-yank-prefix): - * textmodes/makeinfo.el (tex-end-of-header, tex-start-of-header): - * textmodes/org.el (calc-embedded-close-formula) - (calc-embedded-open-formula) - (font-lock-unfontify-region-function): - * textmodes/reftex-global.el (isearch-next-buffer-function) - (TeX-master): - * textmodes/reftex.el (font-lock-keywords): - * textmodes/tex-mode.el (font-lock-comment-face) - (font-lock-doc-face): - * textmodes/texinfo.el (outline-heading-alist): - Add defvars. - - * textmodes/artist.el (x-pointer-crosshair): Add defvar. - (artist-spray-chars, artist-mode-init, artist-replace-string) - (artist-select-erase-char, artist-vap-find-endpoints-horiz) - (artist-vap-find-endpoints-vert, artist-vap-find-endpoints-swne) - (artist-vap-find-endpoints-nwse): "?\ " -> "?\s". - - * textmodes/conf-mode.el (outline-heading-end-regexp): Add defvar. - (conf-align-assignments): "?\ " -> "?\s". - - * textmodes/reftex-index.el (TeX-master): Add defvar. - (reftex-index-phrases-marker): Move up defvar. - - * textmodes/reftex-toc.el (zmacs-regions): Add defvar. - (reftex-toc-include-labels-indicator) - (reftex-toc-include-index-indicator) - (reftex-toc-max-level-indicator): Move up declarations. - - * net/tramp.el (tramp-handle-make-auto-save-file-name): Pass list - of args to `tramp-run-real-handler', even if it's empty in this case. - -2005-08-31 YAMAMOTO Mitsuharu - - * dired.el (dired-move-to-filename-regexp): Add date format for - Mac OS X 10.3 in East Asian locales. - -2005-08-31 Michael Albinus - - * files.el (make-auto-save-file-name): Add file name handler call - if applicable. - - * net/tramp.el (tramp-file-name-handler-alist) - (tramp-file-name-for-operation): Add `make-auto-save-file-name'. - (tramp-handle-make-auto-save-file-name): Rename from - `tramp-make-auto-save-file-name'. - (tramp-exists-file-name-handler): New defun. - (tramp-advice-make-auto-save-file-name): Make defadvice only when - `make-auto-save-file-name' is not a magic file name operation. - -2005-08-30 Richard M. Stallman - - * files.el (risky-local-variable-p): - Match `-predicates' and `-commands. - - * cus-edit.el (custom-buffer-sort-alphabetically): Default to t. - (custom-save-all): Visit the file if necessary; - kill the buffer if we created it. - (custom-save-delete): Don't visit file or kill buffer here. - -2005-08-30 Carsten Dominik - - * textmodes/org.el (org-special-keyword): New face. - (org-table-copy-down, org-table-eval-formula) - (org-table-recalculate, org-init-section-numbers): - Use `string-to-number' instead of `string-to-int'. - (org-get-location): Use `insert-buffer-substring' instead of - `insert-buffer'. - (org-modify-diary-entry-string): New function. - (org-get-entries-from-diary): Set the hook for `add-to-diary-list'. - (org-disable-agenda-to-diary): Rename from `org-disable-diary'. - (org-toggle-fixed-width-section): Use QUOTE keyword if there is no - active region. - (org-export-as-html): Handle QUOTE keyword. - (org-quote-string): New option. - (org-bookmark-jump-unhide): New function, used for - `bookmark-after-jump-hook'. - (org-diary-default-entry): Apply only when not called through - `org-agenda'. - -2005-08-30 Juanma Barranquero - - * net/eudc.el (mode-popup-menu): - * play/handwrite.el (ps-printer-name, ps-lpr-command): - * progmodes/ada-mode.el (compile-auto-highlight) - (skeleton-further-elements): - * progmodes/autoconf.el (font-lock-syntactic-keywords): - * progmodes/cmacexp.el (msdos-shells): - * progmodes/compile.el (font-lock-extra-managed-props) - (font-lock-keywords, font-lock-maximum-size) - (font-lock-support-mode): - * progmodes/grep.el (font-lock-lines-before): - * progmodes/idlw-complete-structtag.el (idlwave-completion-help-info): - * progmodes/mixal-mode.el (compile-command): - * progmodes/perl-mode.el (font-lock-comment-face) - (font-lock-doc-face, font-lock-string-face): - * progmodes/prolog.el (comint-prompt-regexp): - * progmodes/sh-script.el (font-lock-comment-face) - (font-lock-set-defaults, font-lock-string-face): - * progmodes/sql.el (font-lock-keyword-face) - (font-lock-set-defaults, font-lock-string-face): - * progmodes/vhdl-mode.el (compilation-file-regexp-alist) - (itimer-version, lazy-lock-defer-contextually) - (lazy-lock-defer-on-scrolling, lazy-lock-defer-on-the-fly): - Add defvars. - - * progmodes/cperl-mode.el (cperl-electric-lbrace) - (cperl-electric-keyword, cperl-electric-pod) - (cperl-electric-backspace, cperl-forward-re) - (cperl-fix-line-spacing, cperl-fill-paragraph): "?\ " -> "?\s". - (vc-rcs-header, vc-sccs-header): Add defvars. - - * progmodes/fortran.el (fortran-indent-to-column): "?\ " -> "?\s". - (font-lock-syntactic-keywords, gud-find-expr-function): - Add defvars. - - * progmodes/gdb-ui.el (tool-bar-map): Add defvar. - (gdb-frame-parameters): Declare before use. - - * progmodes/gud.el (gdb-active-process, gdb-define-alist) - (gdb-macro-info, gdb-server-prefix, gdb-show-changed-values) - (gdb-var-changed, gdb-var-list, tool-bar-map): Add defvars. - (gud-expr-compound-sep, gud-expr-compound): "?\ " -> "?\s". - - * progmodes/idlw-help.el (browse-url-generic-args): Add defvar. - (idlwave-help-with-source): Use `insert-buffer-substring', not - `insert-buffer'. - -2005-08-29 Juri Linkov - - * outline.el (hide-entry, hide-leaves, outline-toggle-children): - Put outline-back-to-heading function call inside save-excursion. - -2005-08-29 Juanma Barranquero - - * man.el (Man-init-defvars, Man-translate-references) - (Man-support-local-filenames, Man-highlight-references): - * progmodes/sql.el (sql-interactive-mode): - * shell.el (shell-mode, shell-resync-dirs): Fix typos in docstrings. - - * emacs-lisp/checkdoc.el (compilation-error-regexp-alist) - (compilation-mode-font-lock-keywords): Add defvars. - (checkdoc-interactive-loop): "?\ " -> "?\s". - - * emacs-lisp/lisp-mode.el (font-lock-comment-face) - (font-lock-doc-face, font-lock-string-face) - (font-lock-keywords-case-fold-search): Add defvars. - (emacs-lisp-mode-syntax-table): "?\ " -> "?\s". - - * obsolete/sun-fns.el (mouse-select-or-drag-move-point): - Don't pass X and Y (they are ignored anyway). - (mouse-set-mark, mouse-select-window, mouse-delete-other-windows) - (mouse-delete-window): Make arguments optional. - - * obsolete/rnews.el (news-add-news-group): Don't use `end-of-line'. - (caesar-translate-table, minor-modes, news-buffer-save) - (news-group-name, news-minor-modes): Add defvars. - - * emacs-lisp/lselect.el (mouse-highlight-priority) - (x-lost-selection-functions, zmacs-regions): - * emacs-lisp/pp.el (font-lock-verbose): - * emacs-lisp/syntax.el (font-lock-beginning-of-syntax-function): - * emacs-lisp/tcover-ses.el (ses-initial-global-parameters) - (ses-mode-map): - * emacs-lisp/tcover-unsafep.el (safe-functions): - * international/mule-cmds.el (mac-system-coding-system) - (mac-system-locale): - * language/ethio-util.el (rmail-current-message) - (rmail-message-vector): - * language/thai-util.el (thai-auto-composition-mode): - * mail/metamail.el (rmail-current-message, rmail-message-vector): - * mail/mspools.el (rmail-inbox-list, vm-crash-box) - (vm-folder-directory, vm-init-file, vm-init-file-loaded) - (vm-primary-inbox, vm-spool-files): - * mail/rmail.el (deleted-head, font-lock-fontified) - (mail-abbrev-syntax-table, mail-abbrevs, messages-head) - (rmail-use-spam-filter, rsf-beep, rsf-sleep-after-message) - (total-messages): - * mail/rmail-spam-filter.el (bbdb/mail_auto_create_p) - (rmail-summary-mode-map): - * mail/rmailkwd.el (rmail-buffer, rmail-current-message) - (rmail-last-label, rmail-last-multi-labels) - (rmail-summary-vector, rmail-total-messages): - * mail/rmailmsc.el (rmail-current-message, rmail-inbox-list): - * mail/rmailsum.el (msgnum): - * mail/uce.el (gnus-original-article-buffer, mail-reply-buffer) - (rmail-current-message): - * obsolete/fast-lock.el (font-lock-face-list): - * obsolete/rnewspost.el (mail-reply-buffer): - * obsolete/scribe.el (compile-command): - * obsolete/x-menu.el (x-process-mouse-hook): Add defvars. - -2005-08-28 John Paul Wallington - - * ibuf-ext.el (ibuffer-auto-update-changed): - Use `frame-or-buffer-changed-p' to check whether we need to update. - (ibuffer-auto-mode): Don't advise `get-buffer-create' and - `kill-buffer'. Initialise `ibuffer-auto-buffers-changed' - as a `frame-or-buffer-changed-p' state vector instead. - -2005-08-27 Romain Francoise - - * textmodes/makeinfo.el (makeinfo-compile): - Use `compilation-start'. Set `next-error-function' according to - `disable-errors'. - (makeinfo-next-error): New function. - (makeinfo-region): Adjust to new `makeinfo-compile' prototype. - (makeinfo-buffer): Likewise. - - * progmodes/compile.el (compilation-start): Add autoload cookie. - - * progmodes/antlr-mode.el: Don't autoload `compilation-start'. - * textmodes/sgml-mode.el: Likewise. - * progmodes/python.el: Likewise. - -2005-08-27 Eli Zaretskii - - * simple.el (blink-matching-paren-distance): Document the meaning - of nil value, and allow to customize to nil. - - * eshell/esh-ext.el (eshell-windows-shell-file): Look for - command.com, not command.exe. - -2005-08-26 John Wiegley - - * eshell/esh-cmd.el (eshell-rewrite-named-command): Change the - code around a bit so that an extraneous nil argument is not added - to a command when no args are given. - - * eshell/esh-arg.el (eshell-parse-double-quote): If a - double-quoted argument resolves to nil, return it as an empty - string rather than as nil. This made it impossible to pass "" to - a shell script as a null string argument. - -2005-08-26 Stefan Monnier - - * outline.el (outline-invent-heading): New fun. - (outline-promote, outline-demote): Use it. - (outline-move-subtree-down): Remove unused vars `re' and `txt'. - (outline-end-of-subtree): Remove unused var `opoint'. - -2005-08-26 David Reitter - - * menu-bar.el (truncate-lines, write-file, print-buffer) - (ps-print-buffer-faces, ps-print-buffer, split-window): - Disable menu items when the frame they refer to is invisible, or when - they refer to a buffer and the minibuffer is selected. - -2005-08-26 Pavel Kobiakov - - * progmodes/flymake.el (flymake-highlight-err-lines): - Use save-excursion around flymake-highlight-line to preserve point. - -2005-08-26 Eli Zaretskii - - * progmodes/octave-mod.el: Change Author and Maintainer address. - (octave-maintainer-address): Change Kurt's email address. - * progmodes/octave-inf.el: Change Author and Maintainer address. - * progmodes/octave-hlp.el: Change Author and Maintainer address. - -2005-08-26 Kim F. Storm - - * subr.el (version-list-<, version-list-<=, version-list-=): - Rename from integer-list-*. - (version-list-not-zero): Likewise. Fix while loop. - (version=): Use version-list-= instead of string-equal. - -2005-08-26 Richard M. Stallman - - * outline.el (outline-promote): Try shortening the heading. - As last resort, read the heading to use. - (outline-demote): As last resort, read the heading to use. - -2005-08-26 Romain Francoise - - * progmodes/compile.el (compilation-start): Doc fix. - - * progmodes/antlr-mode.el (antlr-default): Fix defface form. - (antlr-font-lock-additional-keywords): Fix reference to - `antlr-font-lock-literal-regexp' erroneously changed during the - mass face rename. - (antlr-run-tool): Use `compilation-start'. - - * textmodes/sgml-mode.el (sgml-validate): Use `compilation-start' - instead of the obsolete `compile-internal'. - -2005-08-26 Juanma Barranquero - - * calendar/cal-bahai.el (date, displayed-month, displayed-year) - (number, original-date): - * calendar/cal-china.el (date): - * calendar/cal-coptic.el (date): - * calendar/cal-french.el (date): - * calendar/cal-hebrew.el (date, entry, number, original-date): - * calendar/cal-islam.el (date, number, original-date): - * calendar/cal-iso.el (date): - * calendar/cal-julian.el (date): - * calendar/cal-mayan.el (date): - * calendar/cal-menu.el (date, event): - * calendar/cal-persia.el (date): - * calendar/lunar.el (date): - * calendar/solar.el (date): Add defvars. - - * emerge.el: - * ibuffer.el: - * info-xref.el: - * obsolete/bg-mouse.el: - * obsolete/sun-curs.el: - * obsolete/swedish.el: Move the `defvar's to the top level. - - * smerge-mode.el (smerge-refined-change): Add :group. - -2005-08-25 Stefan Monnier - - * smerge-mode.el (smerge-remove-props): Make the args non-optional. - (smerge-keep-n): Remove props. - (smerge-keep-base, smerge-keep-other, smerge-keep-mine) - (smerge-keep-current, smerge-kill-current): Don't remove props anymore - now that it's done in smerge-keep-n. - (smerge-refined-change): New face. - (smerge-refine-chopup-region, smerge-refine-highlight-change) - (smerge-refine): New funs. - (smerge-basic-map): Bind smerge-refine. - -2005-08-25 Juri Linkov - - * progmodes/grep.el (grep, grep-mode): Make buffer-local variables - compilation-process-setup-function and compilation-disable-input - in grep-mode instead of let-bindings in grep. - - * menu-bar.el (menu-bar-options-menu, menu-bar-options-save): - Delete "Automatic File De/compression" (auto-compression-mode). - -2005-08-25 Juanma Barranquero - - * obsolete/bg-mouse.el: Move to obsolete/ from term/. - Silence warning about non-existent variable. - -2005-08-25 Richard M. Stallman - - * menu-bar.el (menu-bar-describe-menu): Delete "What's New". - Rename "Describe Key" to "Describe Key or Mouse Operation". - - * mail/mailalias.el (build-mail-aliases): Delete comments - from the contents before processing them. - - * isearch.el (isearch-edit-string): Erase the Search prompt - if user enters an empty string and there is no default. - - * comint.el (comint-file-name-prefix): Add autoload. - -2005-08-25 Joe Corneli - - * subr.el (play-sound): Rearrange to avoid warning. - -2005-08-25 Carsten Dominik - - * calendar/diary-lib.el (diary-modify-entry-list-string-function): - New hook. - (add-to-diary-list): Call `diary-modify-entry-list-string-function'. - -2005-08-24 Stefan Monnier - - * emacs-lisp/easy-mmode.el (define-minor-mode): Simplify. - - * custom.el (custom-theme-set-variables): Sort minor modes last. - -2005-08-24 Vinicius Jose Latorre - - * subr.el (version-separator, version-regexp-alist): New vars used by - version comparison funs. - (integer-list-<, integer-list-=, integer-list-<=) - (integer-list-not-zero): New funs for integer list comparison. - (version-to-list, version=, version<, version<=): New funs for version - comparison. - -2005-08-24 Juanma Barranquero - - * emerge.el (merge-begin, merge-end, template, A-begin, A-end) - (B-begin, B-end, diff, diff-vector, valid-diff): Defvar at compile - time to silence the byte-compiler. - - * ibuffer.el (ibuffer-compile-make-eliding-form) - (ibuffer-check-formats): Use `with-no-warnings' to hide references - to `ibuffer-elide-long-columns' (which is defined on ibuffer.el, - so it's silly to get warnings for it). - (ibuffer-auto-mode, ibuffer-cached-filter-formats) - (ibuffer-compiled-filter-formats, ibuffer-filter-format-alist) - (ibuffer-filter-group-kill-ring, ibuffer-filter-groups) - (ibuffer-filtering-qualifiers, ibuffer-hidden-filter-groups) - (ibuffer-inline-columns, ibuffer-show-empty-filter-groups) - (ibuffer-tmp-hide-regexps, ibuffer-tmp-show-regexps): - Defvar at compile time. - (ibuffer-compiled-formats, ibuffer-cached-eliding-string) - (ibuffer-cached-formats, ibuffer-cached-elide-long-columns): - Declare them before use. - - * info-xref.el (info-xref-xfile-alist, info-xref-filename-heading) - (info-xref-good, info-xref-bad): Defvar at compile time. - - * obsolete/mlsupport.el (filter-region, execute-monitor-command): - Use `let*' instead of `let'. - - * obsolete/sun-curs.el (icon-edit, *mouse-window*, *mouse-x*) - (*mouse-y*, menu, char): Defvar at compile time. - (sc::menu): Declare it before use. - (sc::pack-one-line): Use `let', not `let*'. - - * obsolete/swedish.el (news-inews-hook, news-group-hook-alist) - (mail-send-hook): Defvar at compile time. - - * term/bg-mouse.el (bg-mouse-x, bg-mouse-y, bg-cursor-window): - Defvar at compile time. - - * term/sun-mouse.el (current-global-mousemap) - (current-local-mousemap): Declare them before use. - -2005-08-24 Carsten Dominik - - * bookmark.el (bookmark-after-jump-hook): New hook. - (bookmark-jump): Run `bookmark-after-jump-hook'. - -2005-08-23 Juri Linkov - - * faces.el (minibuffer-prompt): Doc fix. - -2005-08-23 Juanma Barranquero - - * progmodes/xscheme.el: Trivial changes to silence warnings. - (xscheme-previous-mode, xscheme-previous-process-state): - Add defvars. - (xscheme-last-input-end, xscheme-process-command-line) - (xscheme-process-name, xscheme-buffer-name) - (xscheme-expressions-ring-max, xscheme-expressions-ring) - (xscheme-expressions-ring-yank-pointer, xscheme-running-p) - (xscheme-control-g-synchronization-p) - (xscheme-control-g-disabled-p, xscheme-string-receiver) - (default-xscheme-runlight, xscheme-runlight) - (xscheme-runlight-string, xscheme-process-filter-state) - (xscheme-allow-output-p, xscheme-prompt, xscheme-mode-string): - Move to beginning of file. - (scheme-interaction-mode-commands-alist) - (scheme-interaction-mode-map, scheme-debugger-mode-map): - Declare them before use. Note: the initialization code for the - variables has not been moved because it uses functions that reference - the variables. - (xscheme-control-g-message-string, xscheme-process-filter-alist) - (xscheme-prompt-for-expression-map): Declare them before use. - (scheme-debugger-mode-commands): "?\ " -> "?\s". - -2005-08-23 Ed Swarthout (tiny change) - - * hexl.el (hexl-print-current-point-info): Fix simple spelling error. - -2005-08-22 Juri Linkov - - * faces.el (set-face-underline): Delete this duplicate function - and make an obsolete alias to set-face-underline-p. - (set-face-underline-p): Use docstring of set-face-underline. - (describe-face): Create hyperlink to parent face. - - * info.el (Info-insert-dir): Use save-excursion around - insert-buffer-substring. - (Info-isearch-search): Use LITERAL arg of replace-regexp-in-string. - (Info-escape-percent): Delete function. - (Info-fontify-node): Replace Info-escape-percent by - replace-regexp-in-string with REP arg set to lambda that - duplicates `%' and preserves text properties. - - * progmodes/compile.el (compilation-disable-input): Doc fix. - (define-compilation-mode): Doc fix and refill. - (kill-compilation): Use `mode-name' in the error message. - (compilation-find-file): Use `compilation-error' in the - read-file-name's prompt. - -2005-08-22 Stefan Monnier - - * smerge-mode.el (smerge-basic-map): Bind smerge-combine-with-next. - (smerge-auto-leave): Make undo re-enable the mode. - (debug-ignored-errors): Add the user-error of impossible resolution. - (smerge-resolve): Move things around a bit, in preparation for later. - (smerge-diff): Don't fail if the buffer has no associated file. - (ediff-ancestor-buffer, ediff-quit-hook): Quieten byte-compiler. - (smerge-conflict-overlay): New function. - (smerge-match-conflict): Don't add text properties here. - (smerge-find-conflict): Instead, add an overlay here. - Also check for the case where we're inside a conflict already, so as to - obviate the need for font-lock-multiline, which is unbearably slow with - large conflicts and ciomplex font-lock patterns. - (smerge-remove-props): Remove overlay rather than text-properties. - (smerge-mode): Don't set font-lock-multiline. - Remove overlays when turned off. - -2005-08-21 Kim F. Storm - - * ido.el (ido-ignore-item-p): Use save-match-data. - Bind case-fold-search to ido-case-fold locally. - -2005-08-20 Richard M. Stallman - - * files.el (normal-mode): If font lock is on, turn it off and on. - - * subr.el (replace-regexp-in-string): Doc fix. - - * startup.el (command-line-1): Don't suppress startup screen - due to existing processes. - - * progmodes/grep.el (grep): Bind compilation-disable-input to t. - - * progmodes/compile.el (compilation-disable-input): Default to nil. - -2005-08-20 Kevin Rodgers (tiny change) - - * progmodes/compile.el (compilation-disable-input): New defcustom. - (compilation-start): If compilation-disable-input is non-nil, send - EOF to the compilation process. - -2005-08-20 Eli Zaretskii - - * textmodes/tex-mode.el (tex-bibtex-file, tex-send-tex-command): - Run the argument of tex-shell-cd-command through - convert-standard-filename, to get the correct style of slashes on - Windows, and enclose the result in quotes, in case the file name - includes whitespace or other special characters. - -2005-08-19 Andreas Schwab - - * progmodes/gud.el (gud-kill-buffer-hook): Don't kill unrelated - process. - -2005-08-18 Luc Teirlinck - - * cus-start.el (minibuffer-prompt-properties): Correct typo. - -2005-08-18 Kim F. Storm - - * scroll-lock.el: Fix errors due to incorrect line wrapping. - -2005-08-18 Richard M. Stallman - - * scroll-lock.el: New file. - -2005-08-18 Thien-Thi Nguyen - - * dired.el (dired-move-to-end-of-filename): - Handle fifo as rendered by "ls -lF": Don't include trailing "|". - -2005-08-18 Kim F. Storm - - * ido.el (ido-everywhere): Fix defcustom :set function to disable - rather than toggle mode when custom value is nil. - (ido-everywhere): Fix defun doc string. - -2005-08-17 Richard M. Stallman - - * cus-start.el (minibuffer-prompt-properties): Use "Don't Enter" - as tag instead of "Inviolable". - -2005-08-17 Kim F. Storm - - * windmove.el (windmove-coordinates-of-position): Remove. - (windmove-coordinates-of-window-position): Remove. - (windmove-reference-loc): Use posn-at-point instead. - - * subr.el (insert-for-yank-1): Doc fix. - - * ido.el (ido-enter-matching-directory): Rename from - ido-enter-single-matching-directory. Change `slash' choice to - `only'. Add `first' choice. - (ido-exhibit): Adapt to above changes. - -2005-08-16 Luc Teirlinck - - * Makefile.in: Expand comment about building loaddefs.el. - -2005-08-16 Nick Roberts - - * progmodes/gdb-ui.el (toggle-gdb-use-inferior-io-buffer): - Comment use of defadvice. - - * progmodes/gud.el (gud-jump): Rework for gdb-ui. - -2005-08-15 Dan Nicolaescu - - * buff-menu.el, compare-w.el, emacs-lisp/testcover.el, - * play/gomoku.el, play/mpuz.el, progmodes/flymake.el, - * progmodes/gdb-ui.el, progmodes/idlw-help.el, - * progmodes/idlw-shell.el, progmodes/ld-script.el, - * progmodes/which-func.el, ruler-mode.el, strokes.el, - * textmodes/sgml-mode.el, textmodes/table.el: Do not use face-alias - for backward compatibility for faces that did not appear in the - previous Emacs release. - - * simple.el (next-error-follow-minor-mode): Fix init value and lighter. - -2005-08-15 Kim F. Storm - - * emulation/cua-base.el (cua-delete-region): Return t if - deleted region was non-empty. - (cua-replace-region): Inhibit overwrite-mode for - self-insert-command if replaced region was non-empty. - (cua--explicit-region-start, cua--status-string): Make them - buffer-local at top-level... - (cua-mode): ...rather than when mode is enabled. - -2005-08-15 Thien-Thi Nguyen - - * progmodes/vhdl-mode.el (vhdl-emacs-21): - Set t for Emacs 21, 22, and so on. - -2005-08-15 David Ponce - - * tree-widget.el: Update Commentary header. - (tree-widget-theme): Doc fix. - (tree-widget-space-width): New option. - (tree-widget-image-properties): Look up in the default theme too. - (tree-widget--cursors): Only for images with arrow pointer shape. - (tree-widget-lookup-image): Pointer shape is hand by default. - (tree-widget-icon): Rename generic icon widget from - `tree-widget-control'. - (tree-widget-*-icon): Rename from `tree-widget-*-control' and - derive from `tree-widget-icon'. - (tree-widget-handle): Improve default look and feel of the text - representation. - (tree-widget): Rename :*-control properties to :*-icon properties. - Add :action and :help-echo properties. - (tree-widget-after-toggle-functions): Move. - (tree-widget-close-node, tree-widget-open-node): Remove. - (tree-widget-before-create-icon-functions): New hook. - (tree-widget-value-create): Update to allow customization of icons - and nodes at run-time via that new hook. - (tree-widget-icon-create, tree-widget-leaf-node-icon-p) - (tree-widget-icon-action, tree-widget-icon-help-echo) - (tree-widget-action, tree-widget-help-echo): New functions. - -2005-08-15 Kim F. Storm - - * ido.el (ido-buffer-internal): Use with-no-warnings. - (ido-make-merged-file-list): Use while-no-input. - -2005-08-15 Richard M. Stallman - - * textmodes/flyspell.el (flyspell-mark-duplications-flag): Doc fix. - (flyspell-large-region): Fix doc and custom type. - -2005-08-14 Richard M. Stallman - - * files.el (interpreter-mode-alist): Doc fix. - - * mail/rmail.el (rmail-nonignored-headers): New variable. - (rmail-clear-headers): Use it. - (rmail-reply): Better handling of mail-followup-to header. - - * progmodes/sh-script.el (sh-font-lock-keywords-var): - Rename variable from sh-font-lock-keywords. In the `shell' entry, - don't try to refer to executable-font-lock-keywords. - (sh-font-lock-keywords-var-1): Rename from sh-font-lock-keywords-1. - (sh-font-lock-keywords-var-2): Rename from sh-font-lock-keywords-2. - (sh-font-lock-keywords): Append executable-font-lock-keywords here. - (sh-mode): Set comment-start-skip, local-abbrev-table, - imenu-case-fold-search. - (sh-set-shell): Don't set them here. - (sh-feature): Simplify. Get rid of the eval-a-variable feature. - Don't cache the results in the original alist; don't ever modify - that alist. - - * textmodes/flyspell.el (flyspell-mode): Autoload a defvar. - - * textmodes/ispell.el (lookup-words): Cope with case where ARGS is - empty. - -2005-08-15 Andreas Schwab - - * desktop.el: Put autoload cookie at risky-local-variable declarations. - - * dired.el, info.el, mail/rmail.el: Revert last change. - -2005-08-14 Thien-Thi Nguyen - - * dired.el: Fix dependency bug: Wrap `desktop-buffer-mode-handlers' - modification in `eval-after-load' form. - * info.el: Likewise. - * mail/rmail.el: Likewise. - -2005-08-14 Juri Linkov - - * progmodes/compile.el (compilation-mode-font-lock-keywords): - Remove highlighting of "Compilation started". Highlight only - the word "finished" in "Compilation finished". Add highlighting - of "interrupt", "killed", "terminated" and the exit code. - (compilation-start): Add newline after header. Use exactly the - same time stamp format as the finishing message. - (compilation-mode-map): Add ellipsis to "Search Files (grep)". - - * progmodes/grep.el (grep-mode-map): Add ellipsis to "Another grep". - (grep-mode-font-lock-keywords): Don't highlight "Grep started". - Add highlighting of "interrupt", "killed", "terminated". - - * delsel.el (delete-selection-pre-hook): If overwrite-mode is - enabled and the current command is self-insert-command, call it - explicitly with overwrite-mode bound to nil, to not allow it - to delete the character after the selected region. - -2005-08-12 Matt Hodges - - * emacs-lisp/eldoc.el: Add move-beginning-of-line, - move-end-of-line, end-of-line, and beginning-of-line to the list - of commands after which the echo area is updated. - -2005-08-12 Eli Zaretskii - - * cus-edit.el (custom-save-all, custom-save-delete): - Bind recentf-exclude to exclude custom-file. - -2005-08-12 Ehud Karni - - * mail/rmailsum.el (rmail-summary-end-of-message): New command - to go to the bottom of the mail message. Added to - `rmail-summary-mode-map' with key "/". - (rmail-summary-show-message): New (internal) function for use by - both `rmail-summary-beginning/end-of-message'. - (rmail-summary-beginning-of-message): Change to use - rmail-summary-show-message. - - * mail/rmail.el (rmail-end-of-message): New command to go to the - end of the current message. Added to `rmail-mode-map' with key "/". - (rmail-beginning-of-message): Fix to work as documented. - (rmail-mode): Change documentation. - - * progmodes/compile.el (compilation-start): Add the line - "Compilation started" with compilation start time. - (compilation-mode-font-lock-keywords): Add `started' to keywords. - -2005-08-11 Luc Teirlinck - - * menu-bar.el (menu-bar-options-menu): Standardize capitalization - of menu items. - -2005-08-11 Richard M. Stallman - - * simple.el (pop-global-mark): Reverse test of widen-automatically. - - * battery.el (battery-status-function): Don't use ignore-errors. - -2005-08-11 Lute Kamstra - - * emacs-lisp/generic.el (generic-font-lock-defaults): Declare with - define-obsolete-variable-alias. - -2005-08-11 Stefan Monnier - - * net/ange-ftp.el: Use \\` and \\' instead of ^ and $ in regexps. - (ange-ftp-send-cmd): Revert last change, and expand - the comment explaining the problem. - -2005-08-10 Luc Teirlinck - - * ldefs-boot.el: Update. - - * menu-bar.el (menu-bar-showhide-menu): Rename "Date, Time and Mail" - item to "Time, Load and Mail". Change help echo text. - - * time.el (display-time-use-mail-icon, display-time-format) - (display-time-string-forms): Shorten first line of docstrings. - -2005-08-10 Lars Hansen - - * desktop.el (desktop-buffer-mode-handlers): - Make non-customizable. Add autoload cookie. Change initial value to - nil; add elements in respective modules instead. Fix doc string. - (desktop-load-file): New function. - (desktop-minor-mode-handlers): New autoloaded variable. - (desktop-create-buffer): Call minor mode handlers. - Use desktop-load-file to load major and minor mode modules prior to - checking for a handler. - (desktop-save): Don't add nil to desktop-minor-modes for minor - modes with nil function in desktop-minor-mode-table. Don't delete - desktop file before rewriting it. - (desktop-locals-to-save): Add autoload cookie. Don't make - automatically buffer-local. Add variables column-number-mode, - size-indication-mode, indent-tabs-mode, - indicate-buffer-boundaries, indicate-empty-lines and - show-trailing-whitespace. - (desktop-clear): Allow desktop-clear-preserve-buffers to contain - regexps. Don't use desktop-clear-preserve-buffers-regexp. - (desktop-clear-preserve-buffers-regexp): Delete. - (desktop-clear-preserve-buffers): Update initial value and docstring. - (desktop-save-buffer): Fix doc string. - - * hilit-chg.el: Add handler to desktop-minor-mode-handlers. - (hilit-chg-desktop-restore): New function. - (highlight-changes-mode): Add highlight-changes-mode to - desktop-locals-to-save. - - * dired.el: Add handler to desktop-buffer-mode-handlers. - (dired-restore-desktop-buffer): Remove autoload cookie. - (dired-mode): Add autoload cookie. - - * info.el: Add handler to desktop-buffer-mode-handlers. - (Info-restore-desktop-buffer): Remove autoload cookie. - (Info-mode): Add autoload cookie. - - * mh-e/mh-e.el: Add handler to desktop-buffer-mode-handlers. - (mh-restore-desktop-buffer): Remove autoload cookie. - (mh-folder-mode): Add autoload cookie. - - * mail/rmail.el: Add handler to desktop-buffer-mode-handlers. - (rmail-restore-desktop-buffer): Remove autoload cookie. - -2005-08-11 Masatake YAMATO - - * hexl.el (hexl-address-region): - (hexl-ascii-region, hexl-font-lock-keywords): - (hexl-highlight-line-range): Use the term "region" - instead of "area" for consistency with the other symbols - defined in hexl.el. - -2005-08-09 Luc Teirlinck - - * menu-bar.el (menu-bar-options-save): Move `display-time-mode' to - correct group: it is set with `menu-bar-make-mm-toggle' (pointed - out by Juri Linkov). Add `display-battery-mode'. - -2005-08-09 Juri Linkov - - * progmodes/compile.el (compilation-mode-font-lock-keywords): - Remove `-text' from face variable names. - (compilation-error-file-name, compilation-warning-file-name) - (compilation-info-file-name): Delete faces. - (compilation-line-number, compilation-column-number): - Remove face underlining. - (compilation-message-face): Set to `underline' value by default. - (compilation-error-face, compilation-warning-face) - (compilation-info-face): Remove `-file-name' from face names. - (compilation-error-text-face, compilation-warning-text-face) - (compilation-info-text-face): Delete face variables. - (compilation-text-face): Delete function. - - * progmodes/grep.el (grep-regexp-alist): Use `.+?' instead of `[^:\n]+'. - (grep-mode-font-lock-keywords): Use `.+?' instead of `[^\n-]+'. - (grep-error-face): Set to `compilation-error' instead of - `compilation-error-face' (which is redefined to `grep-hit-face' in - grep buffers). - (grep-mode-font-lock-keywords): Remove `-text' from face variable - names. Use `grep-error-face' instead of `compilation-error-text-face'. - - * dired-aux.el (dired-do-query-replace-regexp): - Use `query-replace-read-args'. - - * replace.el (query-replace-read-from, query-replace-read-to) - (query-replace-read-args): Rename arg `string' to `prompt'. - - * menu-bar.el (menu-bar-showhide-menu): Add `showhide-battery'. - -2005-08-09 Katsumi Yamaoka - - * net/ange-ftp.el (ange-ftp-send-cmd): Make it work properly with - uploading files. - (ange-ftp-canonize-filename): Handle file names beginning with ~ - correctly. - -2005-08-09 Juanma Barranquero - - * textmodes/fill.el (canonically-space-region) - (fill-context-prefix, fill-french-nobreak-p) - (fill-delete-newlines, fill-comment-paragraph) - (justify-current-line): "?\ " -> "?\s". - -2005-08-09 Ben North (tiny change) - - * textmodes/fill.el (fill-nonuniform-paragraphs): - Improve argument/docstring consistency. - -2005-08-09 Richard M. Stallman - - * textmodes/ispell.el (ispell-word): More fboundp checks. - - * files.el (find-file-noselect): Don't call set-buffer-major-mode. - (find-file-noselect-1): Call it here, only if RAWFILE. - (normal-mode): Always set some major mode. - (save-some-buffers-action-alist): Change some explanation strings. - (file-name-non-special): In the `quote' method, use unwind-protect. - -2005-08-09 Magnus Henoch - - * textmodes/ispell.el (ispell-find-aspell-dictionaries): New command. - (ispell-have-aspell-dictionaries): New variable. - (ispell-aspell-data-dir, ispell-aspell-dict-dir): New variables. - (ispell-get-aspell-config-value): New function. - (ispell-aspell-find-dictionary): New function. - (ispell-aspell-add-aliases): New function. - (ispell-valid-dictionary-list): Call ispell-find-aspell-dictionaries if - appropriate. Don't look for ispell dictionaries if we use aspell. - (ispell-menu-map): Don't build a submenu of dictionaries. - -2005-08-09 Richard M. Stallman - - * progmodes/sql.el (sql-interactive-mode-map): Use fboundp. - (sql-read-passwd): Use read-passwd. - - * progmodes/idlw-toolbar.el (idlwave-toolbar) - (idlwave-toolbar-is-possible): Add defvars. - - * progmodes/idlw-shell.el (idlwave-xemacs-hack-mouse-track): - Avoid warnings. - - * progmodes/idlw-rinfo.el (idlwave-system-variables-alist) - (idlwave-system-class-info, idlwave-executive-commands-alist): - Use defvar. - - * progmodes/cc-engine.el (c-guess-basic-syntax): Add autoload. - - * mail/supercite.el (sc-ask, sc-no-blank-line-or-header): - Avoid warnings. - - * mail/rmail.el (rmail-ignored-headers): Don't hide mime-version: - and content-type: headers. - - * eshell/eshell.el (eshell): Avoid warnings about eshell-mode. - - * emacs-lisp/map-ynp.el (map-y-or-n-p): Reorder the options - and rename some of them to be more self-explanatory. - - * calendar/calendar.el (calendar-mode-map): Bind < and > usefully. - - * startup.el (command-line-1): Implement -scriptload. - - * replace.el (occur-engine): Initial *Occur* output not undoable. - - * menu-bar.el (menu-bar-file-menu): Rename some menu items - and improve help strings. - - * isearch.el (isearch-repeat): When changing direction, - mark search successful. - - * ediff-init.el: Use (featurep 'xemacs). - - * comint.el (send-invisible): Identify buffer, if not selected. - - * align.el: Delete autoload for c-guess-basic-syntax. - -2005-08-09 Juanma Barranquero - - * textmodes/refbib.el (r2b-convert-record, r2b-convert-buffer): - Improve argument/docstring consistency. Doc fixes. - (r2b-variables, r2bv-address, r2bv-annote, r2bv-author) - (r2bv-booktitle, r2bv-date, r2bv-decade, r2bv-editor) - (r2bv-entry-kind, r2bv-institution, r2bv-journal, r2bv-keywords) - (r2bv-kn, r2bv-month, r2bv-note, r2bv-number, r2bv-ordering) - (r2bv-organization, r2bv-pages, r2bv-primary-author) - (r2bv-publisher, r2bv-school, r2bv-title, r2bv-title-first-word) - (r2bv-tr, r2bv-type, r2bv-volume, r2bv-where, r2bv-year): - Defvar at compile time. - -2005-08-09 Juri Linkov - - * info.el: Replace `info' with upper-case `Info' where appropriate. - (info-title-1, info-title-2, info-title-3, info-title-4) - (info-menu-header): Move up face definitions. - (info-menu-star): Rename from `info-menu-5'. - (Info-fontify-node): Replace `info-menu-5' with `info-menu-star'. - (Info-fontify-visited-nodes): Fix docstring. - (Info-hide-note-references): Fix docstring. - (Info-up, Info-next-reference, Info-prev-reference): Put cursor on - menu items in the same way as on cross-references. - (info-apropos): Fix sorting order and formatting to be like in the - stand-alone Info browser. Display error messages for 1 sec. - (Info-mode-map): Move down `c' key binding. Bind `^' to `Info-up'. - (Info-mode-menu): Remove item for `Info-search-case-sensitively' - from the menu bar. - (Info-insert-dir): Restore point after calling - `insert-buffer-substring'. - -2005-08-08 Richard M. Stallman - - * emacs-lisp/lmenu.el (lucid-menubar-map, lucid-failing-menubar) - (recompute-lucid-menubar): Add defvars. - - * mail/sendmail.el (mail-yank-original): Use with-no-warnings. - - * mail/reporter.el (reporter-dump-state): Use insert-buffer-substring. - - * net/net-utils.el (run-dig): Rename from `dig'. - - * play/gametree.el (gametree-mode): Use make-local-variable, - not make-variable-buffer-local. - - * progmodes/ada-prj.el (ada-prj-display-page): Use with-no-warnings. - - * ansi-color.el (ansi-color-make-extent) - (ansi-color-set-extent-face): Use fboundp, not functionp. - - * autorevert.el (auto-revert-tail-mode): Use make-local-variable, - not make-variable-buffer-local. - - * bookmark.el (Info-current-file): Add defvar. - (bookmark-jump-noselect): Use with-no-warnings. - - * completion.el (c-mode-map, fortran-mode-map): Add defvars. - - * ebuff-menu.el (Helper-return-blurb): Add defvar. - - * ffap.el (gnus-summary-buffer, gnus-article-buffer): Add defvars. - - * find-file.el (ada-procedure-start-regexp) - (ada-package-start-regexp): Add defvars. - - * info.el (Info-insert-dir): Use insert-buffer-substring. - - * xml.el (xml-att-def-re): Add defvar. - - * icomplete.el (icomplete-exhibit): Adapt to new while-no-input - calling convention. - - * subr.el (while-no-input): Return t if there is input. - -2005-08-08 Luc Teirlinck - - * cus-start.el (all): Add `overflow-newline-into-fringe'. - -2005-08-08 Juanma Barranquero - - * cmuscheme.el (inferior-scheme-mode-hook, inferior-scheme-mode) - (scheme-prev-l/c-dir/file): Fix typos in docstrings. - -2005-08-08 Emilio C. Lopes - - * cmuscheme.el (scheme-start-file): Replace reference to - `user-emacs-directory' by "~/.emacs.d/". - -2005-08-08 Thien-Thi Nguyen - - * info.el (Info-dir-remove-duplicates): Avoid case folding - in loop; instead, keep downcased strings for comparison. - Suggested by Helmut Eller. - -2005-08-07 Michael Albinus - - Sync with Tramp 2.0.50. - - * net/tramp.el: Remove defvar of `last-coding-system-used' in the - XEmacs case; not necessary anymore. - (tramp-user-regexp): Allow "@" as part of user name. - (tramp-handle-set-visited-file-modtime) - (tramp-handle-insert-file-contents) - (tramp-handle-write-region): No special handling for - `last-coding-system-used, because this is done in - `tramp-accept-process-output' now. - (tramp-accept-process-output): New defun. - (tramp-process-one-action, tramp-process-one-multi-action) - (tramp-wait-for-regexp, tramp-wait-for-output) - (tramp-discard-garbage-erase-buffer): Call it. Reported by David - Howells . - (clear-visited-file-modtime): Defadvice removed. The check for - unset buffer's modtime does not need to be based on - `tramp-buffer-file-attributes'. Suggested by RMS. - (tramp-message): Insert "\n" if not being at beginning of line. - (tramp-find-shell): Use `tramp-barf-if-no-shell-prompt' for code - sequence with same logic. - (tramp-completion-handle-expand-file-name): Discard call of - `tramp-drop-volume-letter'. It is not necessary, and there have - been problems with (expand-file-name "~/.netrc" "/") in ange-ftp. - Reported by Richard G. Bielawski . - (tramp-do-copy-or-rename-file-out-of-band): Transfer message - should always be visible. - (tramp-handle-insert-directory, tramp-setup-complete) - (tramp-set-process-query-on-exit-flag) - (tramp-append-tramp-buffers): Pacify byte-compiler. - (tramp-bug): Delete non-existing variables from list. - Apply `tramp-load-report-modules' as pre-hook. - Mask `tramp-password-prompt-regexp', `tramp-shell-prompt-pattern' and - `shell-prompt-pattern' because of non-7bit characters. - Reported by Sebastian Luque . - (tramp-reporter-dump-variable, tramp-load-report-modules): New defuns. - (tramp-match-string-list): Remove function. - (tramp-wait-for-regexp): Remove call of that function. - Suggested by Kim F. Storm . - (tramp-set-auto-save-file-modes): Use octal integer code #o600 - instead of octal character code ?\600. The latter resulted in a - syntax error with XEmacs. - - * net/tramp-smb.el: Remove defvar of `last-coding-system-used' in the - XEmacs case; not necessary anymore. - (tramp-smb-handle-write-region): No special handling for - `last-coding-system-used, because this is done in - `tramp-accept-process-output' now. - (tramp-smb-wait-for-output): Call `tramp-accept-process-output'. - -2005-08-06 Luc Teirlinck - - * wid-edit.el (widget-choice-value-create): - Unconditionally respect user choice. Set :explicit-choice back to nil - when no longer needed. - (widget-choice-action): Unconditionally respect user choice. - Eliminate :explicit-choice-value. - - * fringe.el (set-fringe-indicators-1, fringe-indicators): Delete. - - * menu-bar.el (menu-bar-options-save): Replace `fringe-indicators' - with `indicate-empty-lines' and `indicate-buffer-boundaries'. - (menu-bar-showhide-fringe-menu): Add new item "Empty line indicators" - running new function `toggle-indicate-empty-lines'. - Rename "Customize" item to "Customize fringe". - Rename "Indicators" item to "Buffer boundaries" and change help echo. - (menu-bar-showhide-fringe-ind-menu): Change several help echos. - Add `menu-bar-showhide-fringe-ind-customize' as "Other (customize)". - Delete "Empty lines only" item. - (menu-bar-showhide-fringe-ind-customize): New function. - (menu-bar-showhide-fringe-ind-mixed) - (menu-bar-showhide-fringe-ind-box) - (menu-bar-showhide-fringe-ind-right) - (menu-bar-showhide-fringe-ind-left) - (menu-bar-showhide-fringe-ind-none): Use `indicate-buffer-boundaries' - instead of `fringe-indicators'. - -2005-08-06 Michael Kifer - - * viper.el (viper-emacs-state-mode-list): Add recentf-dialog-mode. - Change the date of last update. - -2005-08-06 Michael Kifer - - * viper-cmd.el (viper-harness-minor-mode, viper-exec-delete) - (viper-exec-yank, viper-put-back): Don't display modification msg - if in the minibuffer. - - * viper-init.el (viper-replace-overlay-cursor-color) - (viper-insert-state-cursor-color, viper-vi-state-cursor-color): - Make variables frame local. - - * viper-util.el (viper-append-filter-alist): Use append instead of - nconc. - - * viper.el (viper-vi-state-mode-list) - (viper-emacs-state-mode-list): Move help-mode and - completion-list-mode from the first list to the second. - (viper-mode): Docstring. - (viper-go-away, viper-non-hook-settings): Don't localize - minor-mode-alist in newer Emacsen. Add advice to - set-cursor-color. Don't bind "\C-c\\". - -2005-08-06 Emilio C. Lopes - - * cmuscheme.el (scheme-trace-command, scheme-untrace-command) - (scheme-macro-expand-command): New user options. - (scheme-trace-procedure, scheme-expand-current-form): New commands. - (scheme-form-at-point, scheme-start-file) - (scheme-interactively-start-process): New functions. - (scheme-get-process): New function, extracted from `scheme-proc'. - (run-scheme): Call `scheme-start-file' to get start file, and pass - it to `make-comint'. - (switch-to-scheme, scheme-proc): - Call `scheme-interactively-start-process' if no Scheme buffer/process - is available. - -2005-08-06 Juri Linkov - - * progmodes/compile.el (compilation-mode-font-lock-keywords): - Use `compilation-text-face', `compilation-info-text-face' and - `compilation-error-text-face' instead of `font-lock-keyword-face'. - (compilation-error): New face. - (compilation-error-file-name): Inherit from - `compilation-error' instead of `font-lock-warning-face'. - (compilation-warning-file-name): Inherit from - `compilation-warning' instead of `font-lock-warning-face'. - (compilation-info, compilation-error-file-name) - (compilation-warning-file-name, compilation-info-file-name) - (compilation-line-number, compilation-column-number): Doc fix. - (compilation-error-text-face, compilation-warning-text-face) - (compilation-info-text-face): New face variables. - (compilation-line-face, compilation-column-face) - (compilation-enter-directory-face) - (compilation-leave-directory-face): Doc fix. - (compilation-text-face): New function. - - * progmodes/grep.el (grep-regexp-alist): Set 5th arg `TYPE' to 0 - instead of 1 to display binary file names as info file links. - (grep-error-face): Use `compilation-error-face' instead of - `font-lock-keyword-face'. - (grep-mode-font-lock-keywords): Use `compilation-info-text-face' - and `compilation-warning-text-face' instead of - `font-lock-keyword-face'. Use `compilation-error-text-face' - instead of `grep-error-face'. - -2005-08-05 Kenichi Handa - - * international/code-pages.el: Add autoload cookies for all coding - systems. - -2005-08-04 Luc Teirlinck - - * cus-start.el (all): Put undo.c where it alphabetically belongs. - -2005-08-04 Juri Linkov - - * progmodes/compile.el (compilation-mode-map): - * progmodes/grep.el (grep-mode-map): - Bind TAB to `compilation-next-error' and [backtab] to - `compilation-previous-error'. - - * progmodes/grep.el (grep-regexp-alist): Replace complex regexp - matching line numbers, column numbers and their ranges with regexp - matching only line numbers. - (grep-context-face): New face variable. - (grep-mode-font-lock-keywords): Use it. - - * faces.el (read-face-name): Delete duplicate faces. - -2005-08-02 Juanma Barranquero - - * thumbs.el (thumbs-find-image): Don't make variables - automatically buffer local. - (thumbs-current-tmp-filename, thumbs-current-image-filename) - (thumbs-image-num): Make automatically buffer local. - (thumbs-show-thumbs-list): Use `make-local-variable', not - `make-variable-buffer-local'. - (thumbs-insert-image): Make `thumbs-current-image-size' buffer-local. - - * play/doctor.el (doctor-type-symbol): "?\ " -> "?\s". - (**mad**, *debug*, *print-space*, *print-upcase*, abuselst) - (abusewords, account, afraidof, arerelated, areyou, bak, beclst) - (bother, bye, canyou, chatlst, continue, deathlst, describe) - (drnk, drugs, eliza-flag, elizalst, famlst, feared, fears) - (feelings-about, foullst, found, hello, history, howareyoulst) - (howdyflag, huhlst, ibelieve, improve, inter, isee, isrelated) - (lincount, longhuhlst, lover, machlst, mathlst, maybe, moods) - (neglst, obj, object, owner, please, problems, qlist) - (random-adjective, relation, remlst, repetitive-shortness) - (replist, rms-flag, schoollst, sent, sexlst, shortbeclst) - (shortlst, something, sportslst, stallmanlst, states, subj) - (suicide-flag, sure, things, thlst, toklst, typos, verb, want) - (whatwhen, whereoutp, whysay, whywant, zippy-flag, zippylst): - Defvar at compile time. - - * progmodes/ada-mode.el (ada-mode): Use `make-local-variable', - not `make-variable-buffer-local'. - -2005-08-02 Kim F. Storm - - * emulation/cua-rect.el (cua--highlight-rectangle): Only show - rectangle overlay in selected window. - -2005-08-01 Luc Teirlinck - - * cus-start.el (all): Put `indicate-empty-lines' in fringe group - instead of display group. Make `indicate-buffer-boundaries' - customizable through Custom. - -2005-08-01 Juanma Barranquero - - * progmodes/gdb-ui.el (gdb-frame-address, gdb-var-changed) - (gdb-output-sink, gdba, gdb-cpp-define-alist-program) - (gdb-set-gud-minor-mode, gdb-exited, gdb-setup-windows) - (gdb-put-string): Fix typos in docstrings. - -2005-08-01 Nick Roberts - - Update copyright notices of files in progmodes directory for - release of Emacs 22.1. - - * progmodes/gdb-ui.el (gdb-enable-debug-log): Add autoload cookie. - - * progmodes/gud.el (gud-tooltip-mode): Add autoload cookie. - Don't barf if the GUD buffer has been killed. - -2005-08-01 Kim F. Storm - - * textmodes/table.el (table-yank-handler): Change defcustom to defvar. - -2005-07-29 Stefan Monnier - - * simple.el (next-error-follow-minor-mode): - make-variable-buffer-local -> make-local-variable. - - * emacs-lisp/cl-extra.el: Require CL also when compiling. - - * emacs-lisp/bytecomp.el (byte-compile-make-variable-buffer-local) - (byte-compile-form-make-variable-buffer-local): New functions to warn - about misuses of make-variable-buffer-local where make-local-variable - was meant. - -2005-07-29 Juanma Barranquero - - * bs.el (bs-attributes-list): Doc fix. - (bs): Update url-link. - - * desktop.el (desktop-save-buffer): Fix typos in docstring. - (desktop-load-default): Simplify. - - * ibuffer.el (ibuffer-columnize-and-insert-list) - (ibuffer-mouse-toggle-mark, ibuffer-count-marked-lines) - (ibuffer-unmark-all, ibuffer-toggle-marks) - (ibuffer-unmark-forward, ibuffer-unmark-backward) - (ibuffer-compile-make-format-form, ibuffer-format-column) - (ibuffer-current-buffers-with-marks) - (ibuffer-update-title-and-summary): "?\ " -> "?\s". - (ibuffer): Doc fix. - (ibuffer-mode): Fix typo in docstring. - (ibuffer-hooks, ibuffer-mode-hooks): Make obsolete and declare - with `define-obsolete-variable-alias'. - (ibuffer-elide-long-columns): Mark as obsolete. Doc fix. - -2005-07-29 Kenichi Handa - - * international/mule-cmds.el (select-message-coding-system): - Be sure to use LF for end-of-line. If no coding system is decided, - return iso-8859-1-unix. - -2005-07-28 Stefan Monnier - - * net/ange-ftp.el (ange-ftp-gateway-fatal-msgs) - (ange-ftp-pending-error-line): New vars. - (ange-ftp-process-handle-line, ange-ftp-process-filter): Use them - to handle the non-fatal no-route-to-host messages. - (internal-ange-ftp-mode): Make the no-match regexp more efficient. - -2005-07-28 Juanma Barranquero - - * isearch.el (isearch-mode-map, isearch-other-meta-char) - (isearch-quote-char, isearch-printing-char) - (isearch-text-char-description): "?\ " -> "?\s". - (isearch-lazy-highlight-cleanup) - (isearch-lazy-highlight-initial-delay) - (isearch-lazy-highlight-interval) - (isearch-lazy-highlight-max-at-a-time) - (isearch-lazy-highlight-face, isearch-lazy-highlight-cleanup): - Declare with define-obsolete-*-alias macros. - (isearch-forward): Fix typo in docstring. - (search-invisible, search-ring-yank-pointer) - (regexp-search-ring-yank-pointer): Doc fixes. - - * recentf.el (recentf-menu-append-commands-p): Declare with - `define-obsolete-variable-alias'. - (recentf-max-saved-items, recentf-menu-filter) - (recentf-arrange-by-rule-subfilter): Doc fixes. - (recentf-menu-append-commands-flag) - (recentf-initialize-file-name-history, recentf-expand-file-name) - (recentf-clear-data): Fix typos in docstrings. - -2005-07-28 Nick Roberts - - * progmodes/gdb-ui.el: Smarten comments. - (gdb-info-breakpoints-custom): Use nowarn when finding file. - -2005-07-27 Dan Nicolaescu - - * term/apollo.el (terminal-init-apollo): New function containing - all former top level forms in the file. - * term/bobcat.el (terminal-init-bobcat): - * term/cygwin.el (terminal-init-cygwin): - * term/iris-ansi.el (terminal-init-iris-ansi): - * term/linux.el (terminal-init-linux): - * term/news.el (terminal-init-news): - * term/rxvt.el (terminal-init-rxvt): - * term/sun.el (terminal-init-sun): - * term/tvi970.el (terminal-init-tvi970): - * term/vt100.el (terminal-init-vt100): - * term/vt102.el (terminal-init-vt102): - * term/vt125.el (terminal-init-vt125): - * term/vt200.el (terminal-init-vt200): - * term/vt201.el (terminal-init-vt201): - * term/vt220.el (terminal-init-vt220): - * term/vt240.el (terminal-init-vt240): - * term/vt300.el (terminal-init-vt300): - * term/vt320.el (terminal-init-vt320): - * term/vt400.el (terminal-init-vt400): - * term/vt420.el (terminal-init-vt420): - * term/wyse50.el (terminal-init-wyse50): - * term/xterm.el (terminal-init-xterm): Likewise. - - * term/README: Describe the terminal-init-* functionality. - - * startup.el (command-line): After loading the terminal initialization - file call the corresponding terminal initialization function. - -2005-07-27 Kenichi Handa - - * ps-bdf.el (bdf-read-font-info): Ignore glyphs whose ENCODING is - negative. - - * ps-mule.el (ps-mule-bitmap-prologue): Fix arguments to setcharwidth. - (ps-mule-composition-prologue): Fix for the case that - RelativeCompose is false. - -2005-07-26 Stefan Monnier - - * smerge-mode.el (smerge-ediff): Use insert-buffer-substring. - - * descr-text.el (describe-char): Handle the case where the list of - chars is displayed in a separate frame. - Be a bit more discriminating when looking for the char. - -2005-07-26 Juanma Barranquero - - * bookmark.el (bookmark-automatically-show-annotations) - (bookmark-read-annotation-text-func): Doc fixes. - (bookmark-save): Improve argument/docstring consistency. - (bookmark-get-bookmark, bookmark-get-bookmark-record) - (bookmark-alist-from-buffer) - (bookmark-upgrade-file-format-from-0) - (bookmark-grok-file-format-version) - (bookmark-maybe-upgrade-file-format, bookmark-kill-line) - (bookmark-read-annotation-mode) - (bookmark-insert-current-bookmark, bookmark-jump) - (bookmark-exit-hook): Fix typos in docstrings. - (bookmark-exit-hooks): Define as obsolete alias. - (bookmark-exit-hook-internal): Run `bookmark-exit-hook', - not `bookmark-exit-hooks'. Fix docstring. - (bookmark-bmenu-select): "?\ " -> "?\s". - -2005-07-25 Ari Roponen (tiny change) - - * startup.el (command-line): Fix typo. - -2005-07-24 Richard M. Stallman - - * tooltip.el (tooltip-mode): Test emacs-basic-display, - not emacs-quick-startup. - -2005-07-24 Juanma Barranquero - - * emacs-lisp/re-builder.el (reb-with-current-window): Delete. - (reb-next-match, reb-show-subexp): Use `with-selected-window' - instead of `reb-with-current-window'. - (reb-prev-match): Likewise. Also, don't move left if the search - was unsuccessful. - (reb-initialize-buffer): New function. - (re-builder, reb-change-syntax): Use it. - - * man.el (Man-goto-page): Make second argument NOERROR optional. - -2005-07-23 Richard M. Stallman - - * man.el (Man-bgproc-sentinel): Check here for failure to find - any man page in the output, and report the error here. - (Man-arguments): Make it permanent local. - (Man-goto-page): New arg NOERROR. Never kill the current buffer. - (Man-mode): Pass t for NOERROR. - - * progmodes/grep.el (grep-error-face): Use font-lock-keyword-face. - (grep-mode-font-lock-keywords): - Don't use compilation-...-face for messages that are not file names. - - * progmodes/compile.el (compilation-mode-font-lock-keywords): - Don't use compilation-...-face for messages that are not file names. - -2005-07-22 Juri Linkov - - * startup.el (normal-splash-screen): Update menu name. - - * tempo.el (tempo-insert-template): Fix 2005-07-16 change. - -2005-07-22 Dan Nicolaescu - - * term/xterm.el: Load term/rxvt if the terminal is actually an - rxvt terminal. - (xterm-rxvt-set-background-mode): Remove, not used anymore. - - * term/rxvt.el (function-key-map): Use substitute-key-definition - to bind {C,S,C-S}-{f1-f10}. Add a few missing key bindings. - - * term/cygwin.el: New file. - -2005-07-22 Kim F. Storm - - * image-file.el (insert-image-file, image-file-yank-handler): - Fix last change to maintain a (unique) yank-handler on yanked images. - -2005-07-22 Eduardo Mu,Aq(Boz (tiny change) - - * dired.el (dired-move-to-filename-regexp): Recognize the B suffix - of the file size (as in "177B" for 177 bytes). This happens with - "ls -lh" on FreeBSD. - -2005-07-22 Juanma Barranquero - - * hilit-chg.el (highlight-changes-global-initial-state) - (highlight-compare-buffers, hilit-chg-turn-on-maybe) - (hilit-chg-fixup, highlight-changes-mode): - Fix typos in docstrings. - (highlight-changes-global-modes, highlight-changes-rotate-faces): - Doc fixes. - -2005-07-21 Luc Teirlinck - - * emacs-lisp/easy-mmode.el (define-minor-mode): Never call the - mode function using `eval-after-load'. - -2005-07-21 Kim F. Storm - - * mail/emacsbug.el (report-emacs-bug): Request that backtraces are - included when reporting an Emacs crash, and tell about the DEBUG file. - - * image-file.el (insert-image-file): Add yank-handler. - (image-file-yank-handler): Yank handler to make unique copies of - images when they are yanked into a buffer next to each other. - -2005-07-21 Juanma Barranquero - - * comint.el (comint-use-prompt-regexp, comint-send-input) - (comint-source-default, comint-extract-string) - (comint-get-source, comint-word, comint-completion) - (comint-source, comint-prompt-read-only, comint-update-fence): - Fix typos in docstrings. - (comint-use-prompt-regexp-instead-of-fields, comint-kill-output): - Declare with define-obsolete-*-alias macros. - (comint-previous-matching-input-from-input) - (comint-next-matching-input-from-input) - (comint-previous-matching-input, comint-next-matching-input) - (comint-forward-matching-input): - Improve argument/docstring consistency. - - * desktop.el (desktop-clear-preserve-buffers-regexp): - Also preserve the *server* buffer. - - * simple.el (clone-indirect-buffer): Doc fix. - (fixup-whitespace, just-one-space) - (backward-delete-char-untabify, lambda): "?\ " -> "?\s". - (next-error, next-error-highlight) - (next-error-highlight-no-select, next-error-last-buffer) - (next-error-buffer-p, next-error-find-buffer, next-error) - (previous-error, next-error-no-select, previous-error-no-select) - (open-line, split-line, minibuffer-prompt-width, kill-new) - (binary-overwrite-mode): Fix typos in docstrings. - (set-fill-column): Fix typo in message. - - * skeleton.el (skeleton-proxy-new): Doc fix. - - * strokes.el (strokes-load-hook): Doc fix. - (strokes-grid-resolution, strokes-get-grid-position) - (strokes-renormalize-to-grid, strokes-read-stroke) - (strokes-read-complex-stroke, strokes-file, strokes-last-stroke) - (strokes-global-map): Fix typos in docstrings. - (strokes-help): Doc fix. Fix help message and pass it through - `substitute-command-keys'. - - * tempo.el (tempo-insert-prompt, tempo-interactive) - (tempo-show-completion-buffer, tempo-tags, tempo-match-finder) - (tempo-insert-string-functions, tempo-local-tags) - (tempo-define-template, tempo-insert-template) - (tempo-insert-prompt-compat, tempo-is-user-element) - (tempo-insert-mark, tempo-find-match-string, tempo-complete-tag): - Fix typos in docstrings. - - * vcursor.el (vcursor-other-window, vcursor-bind-keys) - (vcursor-key-bindings, vcursor-use-vcursor-map) - (vcursor-find-window, vcursor-scroll-down) - (vcursor-disable, vcursor-beginning-of-buffer) - (vcursor-end-of-buffer): Fix typos in docstrings. - (vcursor-relative-move, vcursor-get-char-count): - Improve argument/docstring consistency. - - * version.el: "?\ " -> "?\s". - - * wid-edit.el (widget-default-create, widget-after-change) - (widget-default-format-handler, widget-checklist-add-item) - (widget-radio-add-item, widget-choose, widget-specify-secret) - (widget-field-value-create, widget-field-value-get) - (widget-editable-list-format-handler) - (widget-editable-list-entry-create, widget-group-value-create) - (widget-documentation-link-add) - (widget-documentation-string-value-create): "?\ " -> "?\s". - (widget-convert-text): Doc fix. - (widget-narrow-to-field, widget-field-find) - (widget-url-link-action, widget-emacs-library-link-action) - (widget-color-notify): Fix typos in docstrings. - - * w32-fns.el (w32-shell-name): Use `bound-and-true-p'. - (x-select-text, set-w32-system-coding-system) - (w32-add-charset-info): Fix typos in docstrings. - - * emulation/cua-base.el (cua-mode, cua-enable-register-prefix) - (cua-enable-cua-keys, cua-use-hyper-key) - (cua-virtual-rectangle-edges): Fix typos in docstrings. - (cua--M/H-key, cua--init-keymaps): "?\ " -> "?\s". - - * net/tramp.el (tramp-handle-load): Fix typo in error message. - - * emacs-lisp/re-builder.el (regexp-builder): Declare with - `defalias' instead of faking it. - - * eshell/em-ls.el (eshell-ls-decorated-name): Doc fix. - (eshell-ls-missing, eshell-ls-dired-initial-args) - (eshell-ls-use-in-dired): Fix typos in docstrings. - -2005-07-20 Kim F. Storm - - * emulation/cua-base.el (cua-mode): Improve doc string. - -2005-07-20 Juanma Barranquero - - * abbrev.el (expand-region-abbrevs): Doc fix. - (inverse-add-mode-abbrev, inverse-add-global-abbrev): - Improve argument/docstring consistency. - - * arc-mode.el (archive-get-descr, archive-alternate-display): - Doc fixes. - (archive-l-e): Improve argument/docstring consistency. - (archive-tmpdir, archive-unixdate, archive-unixtime) - (archive-chmod-entry): Fix typos in docstrings. - (archive-unflag, archive-unflag-backwards) - (archive-unmark-all-files): "?\ " -> "?\s". - - * buff-menu.el (Buffer-menu-unmark): Doc fix. - (Buffer-menu-not-modified, Buffer-menu-execute) - (Buffer-menu-toggle-read-only, Buffer-menu-buffer+size) - (list-buffers-noselect, Buffer-menu-select): "?\ " -> "?\s". - - * composite.el (compose-string, encode-composition-rule) - (compose-last-chars): Fix typos in docstrings. - - * desktop.el (desktop-enable, desktop-basefilename): - Declare with `define-obsolete-variable-alias'. - (desktop-internal-v2s): Don't quote keywords. - (desktop-clear): "?\ " -> "?\s". - - * dired.el (dired-align-file, dired-flag-backup-files) - (dired-change-marks, dired-unmark-all-files): "?\ " -> "?\s". - (dired-listing-switches, dired-ls-F-marks-symlinks) - (dired-dwim-target, dired-load-hook, dired-mode-hook) - (dired-directory, dired-faces, dired, dired-revert) - (dired-mode, dired-summary, dired-view-file) - (dired-copy-filename-as-kill, dired-delete-file) - (dired-no-confirm, dired-unmark-all-marks) - (dired-sort-by-date-regexp, dired-sort-by-name-regexp) - (dired-sort-inhibit, dired-sort-other): Fix typos in docstrings. - (dired-undo, dired-get-file-for-visit, dired-sort-toggle-or-edit): - Fix typos in message strings. - - * dired-x.el (virtual-dired): Declare with `defalias'. - (dired-mark-unmarked-files, dired-local-variables-file) - (dired-omit-here-always): Doc fix. - (dired-omit-mode, dired-find-subdir) - (dired-enable-local-variables, dired-clean-up-buffers-too) - (dired-extra-startup, dired-mark-extension, dired-jump) - (dired-jump-other-window, dired-omit-localp, dired-virtual-mode) - (dired-smart-shell-command, dired-guess-shell-alist-user) - (dired-man, dired-initial-position, dired-x-hands-off-my-keys) - (dired-x-bind-find-file, dired-x-submit-report): - Fix typos in docstrings. - (dired-mark-unmarked-files): "?\ " -> "?\s". - - * dirtrack.el (dirtrack-list): Fix typos in docstring. - - * faces.el (describe-face): "?\ " -> "?\s". - (read-all-face-attributes, read-face-font, modify-face) - (face-attr-construct, italic): Fix typos in docstrings. - (frame-update-face-colors): Declare with - `define-obsolete-function-alias'. - - * files.el (find-file-noselect, recode-file-name): Doc fixes. - (insert-directory, kill-some-buffers): "?\ " -> "?\s". - (magic-mode-alist, buffer-file-numbers-unique) - (write-file-functions, get-free-disk-space): - Fix typos in docstrings. - (find-file-not-found-hooks, find-file-hooks, write-file-hooks) - (write-contents-hooks, write-file-hooks): - Declare with `define-obsolete-variable-alias'. - - * forms-d2.el (arch-rj): Fix typo in docstrings. - (arch-tocol): Likewise. "?\ " -> "?\s". - - * frame.el (set-frame-font, cursor-in-non-selected-windows): - Fix typo in docstring. - (set-screen-width, set-screen-height): Delete redundant info in - doctrings. - (new-frame, screen-height, screen-width): Declare with - `define-obsolete-function-alias'. - (delete-frame-hook, blink-cursor): Declare with - `define-obsolete-variable-alias'. - - * paths.el (prune-directory-list): Fix typos in docstring. - - * pcvs-util.el (cvs-flags-query, cvs-strings->string) - (cvs-prefix-get): Fix typos in docstrings. - - * ps-print.el (ps-extend-face-list, ps-extend-face) - (ps-print-background-image): Fix typos in docstrings. - (ps-default-fg, ps-default-bg): Doc fixes. - - * s-region.el (s-region-bind): Doc fix. - (s-region-move-p1, s-region-move-p2): Fix typos in docstrings. - - * textmodes/org.el (org-table-formula-substitute-names) - (org-table-get-vertical-vector): Doc fixes. - (org-table-recalculate): Remove unused argument to `message'. - -2005-07-19 Carsten Dominik - - * textmodes/org.el (org-table-column-names) - (org-table-column-name-regexp) - (org-table-named-field-locations): New variables. - (org-archive-subtree): Protect `this-command' when calling - `org-copy-subtree' and `org-cut-subtree', to avoid appending to - the kill buffer. - (org-complete): Remove fixed-formula completion. - (org-edit-formulas-map): New variable. - (org-table-edit-formulas): New command. - (org-finish-edit-formulas, org-abort-edit-formulas) - (org-show-variable, org-table-get-vertical-vector): New functions. - (org-table-maybe-eval-formula): Handle `:=' fields. - (org-table-get-stored-formulas, org-table-store-formulas) - (org-table-get-formula, org-table-modify-formulas) - (org-table-replace-in-formulas): Handle named field formulas. - (org-table-get-specials): Store locations of named fields. - -2005-07-19 Juri Linkov - - * progmodes/grep.el (grep-regexp-alist) - (grep-mode-font-lock-keywords, grep-process-setup): - Use default GNU grep match color "01;31m" instead of "01;41m". - (grep-regexp-alist, grep-mode-font-lock-keywords): - Use `\\[[0-9]*m' instead of `\\[00m'. - (grep-regexp-alist): Move `\\(?:\033\\[K\\)?' from sgr_end to - sgr_start where its handling is more important. Use the real - length of sgr_start instead of constant 8. - (grep-mode-font-lock-keywords): Don't delete `\\(?:\033\\[K\\)?' - specially. Delete all remaining escape sequences. - (grep-process-setup): Set "GREP_COLORS" for GNU grep 2.5.1-cvs. - (grep-regexp-alist): Make hyperlink only for binary file name - instead of the whole line. - (grep-mode-map): Bind `backtab' to `compilation-previous-file'. - (grep-mode): Add autoload. - - * emacs-lisp/find-func.el (find-function-regexp): - Add `define-compilation-mode'. - -2005-07-19 Juri Linkov - - * compare-w.el (compare-ignore-whitespace, compare-windows-sync) - (compare-windows-sync-string-size, compare-windows-recenter) - (compare-windows-highlight, compare-windows): Add version 22.1. - (compare-windows) : Inherit from lazy-highlight instead - of duplicating its default value. - - * cus-edit.el (custom-mode-map): Bind `C-c C-c' to `Custom-set'. - (Custom-mode-menu): Use `info' instead of `Info-goto-node'. - - * descr-text.el (describe-char): Create link buttons for `charset' - and `code point'. Add the current input method name with a link - button to `to input' field. Print face names of display table - characters in `The display table entry is displayed by' section - instead of printing face-id in the `display' field. - Guess hardcoded faces and create a link button for them. - Skip empty fields when calculating max-width. - Treat `widget-create' specially while inserting strings from the - collected field list. - (describe-char-after): Made obsolete in version 22.1, not 21.5. - - * diff-mode.el (diff-file-header): Change foreground color from - yellow to green on light backgrounds. - (diff-context): Inherit from `shadow' only for color/grayscale - with more than 88 colors. - (diff-indicator-removed, diff-indicator-added) - (diff-indicator-changed): New faces. - (diff-font-lock-keywords): Use new faces. Regroup rules. - Add "^---$" for `normal' diff format. Fontify `#' lines with - font-lock-comment-delimiter-face and font-lock-comment-face. - Add `#' to ^[^...] in the rule for `diff-context-face'. - - * faces.el (mode-line-highlight): Replace RoyalBlue4 with - a button-like box. Inherit from `highlight' on low colors. - (shadow): Use shades of gray only for color/grayscale with - more than 88 colors. Use green for light backgrounds with - 8 colors, and yellow for dark backgrounds with 8 colors. - - * font-lock.el (font-lock-regexp-grouping-backslash): - Don't inherit from escape-glyph (use bold for all cases). - - * info.el (info-xref-visited): Use light foreground color `violet' - for dark backgrounds instead of dark color `magenta3'. - (info-title-1): Use `yellow' color for dark backgrounds. - - * isearch.el (isearch): Use not-too-dark magenta3 instead of - too-light magenta2. - - * replace.el (match): Use slightly more light RoyalBlue3 instead - of dark RoyalBlue4. - - * wid-edit.el (widget-inactive): Inherit from `shadow'. - -2005-07-19 Juanma Barranquero - - * novice.el (disabled-command-hook): Declare it with - `define-obsolete-variable-alias'. - - * desktop.el (desktop-enable, desktop-buffer-modes-to-save) - (desktop-buffer-misc-functions, desktop-buffer-handlers) - (desktop-load-default): Add release to obsolescence info. - (desktop-globals-to-clear, desktop-buffer-mode-handlers) - (desktop-append-buffer-args, desktop-read): - Fix typos in docstrings. - (desktop-kill): Fix typo in message. - (desktop-save): Doc fix. - -2005-07-19 Michael Kifer - - * viper-cmd.el (viper-escape-to-state): Bug fix. - (viper-envelop-ESC-key): Change the definition of fast - keysequence so it'll work with keyboard macros. - - * ediff.el (ediff-patch-buffer): Change the docstring. - -2005-07-19 Kenichi Handa - - * international/mule-cmds.el (select-safe-coding-system): Try to - use an auto-coding (if any) before anything else. If the found - auto-coding is invalid, show a warning message. - - * international/mule.el (find-auto-coding): New function created - by modifying the body of set-auto-coding. - (set-auto-coding): Use find-auto-coding to find a coding. - -2005-07-18 Richard M. Stallman - - * allout.el (allout-isearch-expose): Use isearch-mode-end-hook-quit, - not isearch-mode-end-hook-error. - (allout-before-change-protect): Fix error message. - -2005-07-18 Juri Linkov - - * allout.el (allout-mode): - * calculator.el (calculator-copy): - * custom.el (custom-known-themes): - * dired.el (dired-desktop-buffer-misc-data) - (dired-restore-desktop-buffer): - * dired-x.el (dired-omit-marker-char): - * files.el (basic-save-buffer): - * font-core.el (font-lock-mode): - * calendar/calendar.el (calendar-goto-hebrew-date) - (calendar-goto-coptic-date, calendar-goto-ethiopic-date) - (calendar-goto-persian-date): - * language/ethio-util.el (ethio-sera-to-fidel-region): - * textmodes/picture.el (picture-mode): - Delete duplicate duplicate words. - -2005-07-18 Juri Linkov - - * isearch.el (isearch-mode-map): Remove key bindings for regexp - chars * ? } |. - (isearch-fallback): Don't call `isearch-process-search-char'. - (isearch-*-char, isearch-}-char, isearch-|-char): Remove functions. - (isearch-process-search-char): Call `isearch-fallback' for regexp - chars * ? } |. - (isearch-return-char): Make obsolete with `make-obsolete' instead - of simply documenting it as obsolete in the docstring. - (isearch-fallback): Refill docstring. - - * international/isearch-x.el - (isearch-process-search-multibyte-characters): Remove unneeded - `concat'. Add intermediate values to `junk-hist' instead of - `minibuffer-history'. Test the length of `str'. - -2005-07-18 Juanma Barranquero - - * allout.el (allout-resolve-xref): Fix typos in error strings. - (allout-before-change-protect): Remove unneeded `concat'. - - * array.el (array-mode, array-reconfigure-rows) - (untabify-backward): Fix typos in docstrings. - (array-reconfigure-rows): Use `insert-buffer-substring', not - `insert-buffer'. - - * calendar/icalendar.el (icalendar--get-unfolded-buffer): - * progmodes/ada-mode.el (ada-make-body): - Use `insert-buffer-substring' and `goto-char', not `insert-buffer'. - - * dired.el (dired-log): - * tar-mode.el (tar-subfile-save-buffer): - * play/zone.el (zone-pgm-stress-destress): - Use `insert-buffer-substring', not `insert-buffer'. - -2005-07-17 Simon Josefsson - - * mail/smtpmail.el (smtpmail-auth-supported): Prefer PLAIN over LOGIN. - -2005-07-16 Jose E. Marchesi - - * lisp/mail/smtpmail.el (smtpmail-auth-supported): - Add plain auth method. - (smtpmail-try-auth-methods): Add AUTH PLAIN dialog. - -2005-07-17 Kim F. Storm - - * ido.el (dired-other-window): Add ido property. - -2005-07-16 Juanma Barranquero - - * emacs-lisp/bytecomp.el (byte-compile-maybe-guarded): - Fix typo in docstring. - (byte-compile-interactive-only-functions): Add `insert-buffer' and - `insert-file-literally'. - - * emacs-lisp/edebug.el (def-edebug-form-spec): Add obsolescence - info and delete redundant message. Doc fix. - (edebug-install-custom-print-funcs, edebug-reset-print-funcs) - (edebug-uninstall-custom-print-funcs): Define as obsolete aliases. - -2005-07-16 Richard M. Stallman - - * emacs-lisp/bytecomp.el (byte-compile-and-recursion): New function. - (byte-compile-and): Use byte-compile-and-recursion. - (byte-compile-or-recursion): New function. - (byte-compile-or): Use that. - (byte-compile-if): Guard the else-clause too. - (byte-compile-maybe-guarded): Handle (not (featurep 'emacs)). - - * isearch.el (isearch-mode-end-hook-quit): New variable. - (isearch-done): Bind it. - (isearch-mode-end-hook): Doc fix. - - * allout.el (allout-isearch-did-quit): Variable deleted. - (allout-real-isearch-abort): Function name no longer used. - (allout-mode): Do allout-enwrap-isearch whenever feature is wanted. - (allout-isearch-rectification): isearch-mode always exists. - Don't set allout-isearch-did-quit. - (allout-isearch-expose): Check isearch-mode-end-hook-error, not - allout-isearch-did-quit. - (allout-enwrap-isearch): Just add the hook. - (allout-isearch-abort): Function deleted. - (allout-pre-command-business): Avoid warning. - - * progmodes/pascal.el (pascal-outline-map): Use fboundp, not boundp. - Correctly avoid warnings. - (pascal-outline): Likewise. - - * progmodes/f90.el (f90-abbrev-start): Avoid warning. - - * progmodes/asm-mode.el (asm-comment): Use with-no-warnings. - - * play/tetris.el (tetris-mode): Avoid warning. - - * play/snake.el (snake-mode): Avoid warning. - - * play/gamegrid.el (gamegrid-shared-game-dir): Add defvar. - (gamegrid-set-display-table): Avoid warning. - (gamegrid-set-timer): Likewise. - (gamegrid-make-mono-tty-face): Use set-face-inverse-video-p. - (gamegrid-add-score-with-update-game-score-1): Take FILE - as argument. - (gamegrid-add-score-with-update-game-score): Pass that argument. - Rename have-shared-game-dir to gamegrid-shared-game-dir. - - * net/eudc-hotlist.el (eudc-hotlist-mode): Avoid warnings. - - * net/eudc-bob.el (eudc-jump-to-event): Avoid warning. - (eudc-bob-display-jpeg, eudc-bob-can-display-inline-images): Likewise. - - * mail/uce.el (uce-reply-to-uce): Replace beginning-of-buffer - and insert-file. - - * mail/supercite.el (sc-no-blank-line-or-header): Avoid warning. - (sc-ask): Avoid warnings. - - * eshell/em-hist.el (eshell-rebind-keys-alist): Add defvar. - (eshell-hist-initialize): Use that var the natural way. - - * emulation/viper-init.el (viper-activate-input-method): Avoid warning. - - * emacs-lisp/re-builder.el (reb-cook-regexp): - Avoid warning calling lre-compile-string. - (reb-color-display-p): Avoid warning. - - * calculator.el (calculator-last-input): Guard uses - of event-key and key-press-event-p. - (event-key, key-press-event-p): Delete definitions. - - * emacs-lisp/find-gc.el (find-gc-unsafe-list) - (find-gc-source-directory, find-gc-subrs-callers) - (find-gc-noreturn-list, find-gc-source-files) - (find-gc-subrs-called): Vars renamed and defvar'd. - - * emacs-lisp/checkdoc.el (checkdoc-make-overlay) - (checkdoc-overlay-put, checkdoc-delete-overlay) - (checkdoc-overlay-start, checkdoc-overlay-end) - (checkdoc-mode-line-update, checkdoc-char=): - Define such that compiler knows they are defined. - (checkdoc-call-eval-buffer): Delete. Use eval-buffer directly. - (checkdoc-read-event): Delete. Use read-event directly. - - * whitespace.el (whitespace-make-overlay) - (whitespace-overlay-put, whitespace-delete-overlay) - (whitespace-overlay-start, whitespace-overlay-end): - Define such that compiler knows they are defined. - (whitespace): Move conditional inside. - - * tempo.el (tempo-insert-template): Suppress warning. - - * ediff-diff.el (longlines-mode): Add defvar. - -2005-07-16 Gary Howell (tiny change) - - * server.el: Bind "C-x #" in a way that works even if C-x is - redefined to a command key, not a prefix key. - -2005-07-16 Johan Bockg,Ae(Brd (tiny change) - - * emacs-lisp/cl-macs.el (cl-make-type-test): Defer evaluation of - cl-make-type-test till execution time. - -2005-07-16 Markus Rost - - * dired-x.el (dired-do-relsymlink-regexp): Add missing optional - arg ARG and use it. - -2005-07-16 Johan Bockg,Ae(Brd (tiny change) - - * emacs-lisp/cl-macs.el (cl-make-type-test): Add `atom' type. - -2005-07-15 Luc Teirlinck - - * emacs-lisp/easy-mmode.el (define-minor-mode): Avoid constructing - a defcustom with two :set or :type keywords. - -2005-07-15 Richard M. Stallman - - * emacs-lisp/lisp-mode.el (emacs-lisp-mode-syntax-table): - Don't give ^M comment-end syntax. - -2005-07-16 Nick Roberts - - * progmodes/gdb-ui.el (gdb-var-update, gdb-var-update-handler): - Don't consider gdbmi (gdb-mi.el has its own update functions). - (gdb-var-delete): Make it work for gdbmi as well. - (gdb-speedbar-expand-node): Move var-update here for gdbmi. - - * progmodes/gud.el (etags, sdb): Only require etags when needed. - (gud-speedbar-menu-items): Correct logic for enabling items. - -2005-07-15 Kim F. Storm - - * ido.el: Fix commentary. - (ido-define-mode-map): Move ido-next-work-file to C-M-o. - Use with-no-warnings around ffap-guesser. - (ido-file-internal, ido-read-file-name, ido-read-directory-name): - Let bind minibuffer-completing-file-name to t. - -2005-07-15 Juanma Barranquero - - * startup.el (site-run-file, keyboard-type): Doc fixes. - (command-line): Check for "--basic-display" argument; also for - "--quick", not "--bare-bones" (which was renamed). - (fancy-splash-text): Add missing item "Getting New Versions". - (normal-splash-screen): Fix typos and improve consistency with - `fancy-splash-text'. Update copyright year. - - * hexl.el (hexl-mode-map): Recognize also `ehelp-command' as a - valid binding for `help-char'. - - * emacs-lisp/derived.el (derived-mode-hook-name): Doc fix. - -2005-07-14 Dan Nicolaescu - - * term.el (term-mode): Disable cua-mode for term buffers. - -2005-07-14 Juanma Barranquero - - * add-log.el (add-log-mailing-address, change-log-merge): - Doc fixes. - (change-log-get-method-definition): Fix typo in docstring. - -2005-07-14 Kim F. Storm - - * emulation/cua-base.el: - (cua--pre-command-handler-1, cua--pre-command-handler) - (cua--post-command-handler-1, cua--post-command-handler): - Split in two. Check (buffer local) value of cua-mode. - (cua-selection-mode): New command. - -2005-07-13 Luc Teirlinck - - * custom.el (custom-initialize-safe-set) - (custom-initialize-safe-default): Doc fixes. - - * frame.el (blink-cursor-mode): Use `custom-initialize-safe-default' - and simplify :init-value again. - - * tooltip.el (tooltip-mode): Use `custom-initialize-safe-default' - and simplify :init-value again. Delete autoload. - - * startup.el (command-line): Use `custom-reevaluate-setting' again - for tooltip-mode. - - * emacs-lisp/easy-mmode.el (define-minor-mode): Avoid constructing - a defcustom with two :initialize keywords. - -2005-07-13 Juanma Barranquero - - * allout.el (my-mark-marker, allout-isearch-prior-pos) - (allout-unprotected, allout-undo-aggregation, allout-snug-back) - (allout-post-command-business, allout-flag-region) - (isearch-reenable-font-lock, allout-yank) - (allout-insert-latex-header, allout-insert-latex-trailer) - (allout-latex-verbatim-quote-curr-line, allout-latexify-exposed) - (allout-latex-verb-quote): Fix typos in docstrings. - (allout-enwrap-isearch, regexp-sans-escapes): Doc fixes. - (allout-unprotected, allout-prefix-data): - Improve argument/docstring consistency. - (allout-chart-subtree): Fix argument spec. - (allout-open-topic): Rename `use_sib_bullet' argument to - `use-sib-bullet'. Doc fix. - - * whitespace.el (whitespace-check-buffer-leading) - (whitespace-check-buffer-trailing) - (whitespace-check-buffer-indent) - (whitespace-check-buffer-spacetab) - (whitespace-check-buffer-ateol, whitespace-highlighted-space) - (whitespace-check-leading-whitespace) - (whitespace-check-trailing-whitespace) - (whitespace-check-spacetab-whitespace) - (whitespace-check-indent-whitespace) - (whitespace-check-ateol-whitespace, whitespace-abort-on-error) - (whitespace-modes): Fix typos in docstrings. - (defgroup, defcustom): Doc fixes. - - * winner.el (winner-mode, winner-boring-buffers) - (winner-pending-undo-ring): Doc fixes. - (winner-ring): Remove unneeded `progn'. - (winner-equal): `defsubst' it. - (winner-redo): Fix message. - -2005-07-13 Kim F. Storm - - * simple.el (line-move-1): Always use vertical-motion to - do the last (or only) line move to ensure some movement. - Undo 2005-06-23 change--don't check for overlays. - -2005-07-13 YAMAMOTO Mitsuharu - - * term/mac-win.el (ccl-encode-mac-roman-font) - (ccl-encode-mac-centraleurroman-font) - (ccl-encode-mac-cyrillic-font, ccl-encode-mac-symbol-font): - (ccl-encode-mac-dingbats-font): Remove check for ASCII. - Change charset-id boundary of dimension to ?\xef. - (mac-char-fontspec-list): New constant. - (fontset-add-mac-fonts): Use it. Accept non-string `base-family' - argument. Nil uses itself as family in font-spec. Previous - behavior for nil is now provided by non-nil non-string argument. - All callers changed. Add font-specs for Mac fonts to - "fontset-default" unless iso8859-1 fonts are installed. - -2005-07-13 Stefan Monnier - - * progmodes/sh-script.el (sh-get-indent-info): Only indent - a continuation line if the \ is preceded by SPC or TAB. - (sh-get-indent-info): Simplify. - (sh-mark-init, sh-learn-buffer-indent, sh-add-completer): - Use with-current-buffer. - - * font-lock.el (font-lock-fontify-keywords-region): Avoid inf-loops - when the matched text is empty. - -2005-07-12 Luc Teirlinck - - * startup.el (command-line): Revert to previous handling of - tooltip-mode. Explain in comment why the complexity is needed. - - * tooltip.el (tooltip-mode): Revert to previous implementation of - its defcustom. - - * frame.el (blink-cursor-mode): Revert to previous implementation - of its defcustom. Update comment. - -2005-07-12 Lars Hansen - - * desktop.el: Update e-mail address. - -2005-07-12 YAMAMOTO Mitsuharu - - * term/mac-win.el (mac-services-mail-selection) - (mac-services-mail-to): New functions. - (mac-application-menu-map): Bind them. - -2005-07-12 wulei (tiny change) - - * progmodes/gdb-ui.el: Add note about buffering with Windows. - -2005-07-11 Luc Teirlinck - - * custom.el (custom-reevaluate-setting): Doc fix. - -2005-07-11 Jay Belanger - - * calc/calc.el (calc-embedded-announce-formula-alist) - (calc-embedded-open-close-plain-alist) - (calc-embedded-open-close-mode-alist): Add checks for additional - major modes (due to Robert J. Chassell ). - -2005-07-11 Juanma Barranquero - - * custom.el (custom-enable-theme): Don't add theme to - `custom-enabled-themes' with `push' because there is no - setf-method for `delq'. - -2005-07-11 Richard M. Stallman - - * custom.el (custom-declare-variable): Doc fix. - - * dired-aux.el (dired-compare-directories): Remove "." and ".." - from the alists. - - * emacs-lisp/edebug.el (edebug-slow-after, edebug-slow-before): - Do nothing if edebug-active. - - * emacs-lisp/edebug.el (edebug-enter): Don't with-timeout-suspend here. - (edebug-display): Do it here instead. - -2005-07-10 Richard M. Stallman - - * cus-face.el (custom-theme-set-faces): Make it work. - (custom-reset-faces): Doc fix. - (custom-theme-reset-internal-face, custom-theme-face-value): - Functions deleted. - - * custom.el (custom-push-theme): Maintain list of the settings - of a given theme in its theme-settings property. - Maintain position of old settings in the theme-value - or theme-face property. - (custom-enabled-themes): New variable. - (custom-theme-enabled-p): New function. - (provide-theme): Update custom-enabled-themes. - Disable and reenable the `user' theme. - (require-theme): Doc fix. - (custom-do-theme-reset, custom-remove-theme): Functions deleted. - (custom-theme-value, custom-theme-variable-value): Likewise. - (custom-theme-reset-internal): Likewise. - (custom-theme-load-themes): Fix bugs and use custom-disable-theme. - (custom-enable-theme, custom-disable-theme): New functions. - (custom-variable-theme-value, custom-face-theme-value): Likewise. - (custom-theme-recalc-variable, custom-theme-recalc-face): Likewise. - (custom-theme-reset-variables): Simplify. - (deftheme, custom-declare-theme, custom-make-theme-feature): - Definitions moved. - -2005-07-10 Chong Yidong - - * longlines.el (longlines-show-region) - (longlines-unshow-hard-newlines): Recognize hard newlines by - non-nil hard property, instead of t. - -2005-07-10 Michael Kifer - - * viper-cmd.el (viper--key-maps): New variable. - (viper-normalize-minor-mode-map-alist): Use viper--key-maps and - emulation-mode-map-alists. - (viper-envelop-ESC-key): Use viper-subseq. - (viper-search-forward/backward/next): Disable debug-on-error. - - * viper-keym.el (viper-toggle-key, viper-quoted-insert-key) - (viper-ESC-key): New defcustoms. - - * viper-macs.el (ex-map-read-args): Use viper-subseq. - - * viper-util.el (viper-key-to-emacs-key): Use viper-subseq. - (viper-subseq): Copy of subseq from cl.el. - - * viper.el (viper-go-away, viper-set-hooks): Use - emulation-mode-map-alists, advise self-insert-command, add-minor-mode. - - * viper-mous.el (viper-current-frame-saved): Use defvar. - - * viper-init.el: Get rid of -face in face names. - - * ediff-diff.el (ediff-extract-diffs, ediff-extract-diffs3): - Make it work with longlines mode. - - * ediff-mult.el (ediff-meta-mode-hook): New variable. - - * ediff-ptch.el (ediff-file-name-sans-prefix): Quote regexp. - - * ediff-init.el: Get rid of -face in face names. - -2005-07-10 Richard M. Stallman - - * emacs-lisp/edebug.el (edebug-enter): Call with-timeout-suspend - and with-timeout-unsuspend. - - * emacs-lisp/debug.el (debug): Call with-timeout-suspend - and with-timeout-unsuspend. - - * emacs-lisp/timer.el (with-timeout-timers): New variable. - (with-timeout): Bind that variable to record timers. - (with-timeout-suspend, with-timeout-unsuspend): New functions. - - * emacs-lisp/debug.el (debug-help-follow): New function. - (debugger-mode-map): Use that instead of help-follow. - (debugger-setup-buffer): Use eval-buffer-list - to handle eval-buffer frames. - -2005-07-10 N. Raghavendra (tiny change) - - * timezone.el (timezone-parse-date): Change first regexp - so it will not mistakenly match dates with no time zone. - -2005-07-10 Jeff Dwork (tiny change) - - * facemenu.el (facemenu-read-color): Do case-insensitive matching. - -2005-07-10 Luc Teirlinck - - * custom.el (custom-initialize-safe-set) - (custom-initialize-safe-default): New functions. - - * frame.el (blink-cursor-mode): Use `custom-initialize-safe-default' - and simplify :init-value. - - * tooltip.el (tooltip-mode): Use `custom-initialize-safe-default' - and simplify :init-value. Delete obsolete comment. - - * startup.el (command-line): Use `custom-reevaluate-setting' to - handle `tooltip-mode'. Delete obsolete comment. - - * files.el (set-visited-file-name): Avoid calling - `file-name-nondirectory' with a nil argument. - -2005-07-09 Richard M. Stallman - - * emacs-lisp/debug.el (debugger-setup-buffer): When eval-buffer - was called with nil for the buffer, handle the read position right. - Handle read position for eval-region, too. - -2005-07-09 Juri Linkov - - * fringe.el (fringe-mode): Add period in docstring. - (fringe-query-style): Build prompt depending on `all-frames' arg. - - * dired.el (dired-marker-char): Avoid quotations for `do' and `mark' - to not create links to unrelated functions in the Help buffer. - - * progmodes/compile.el (compilation-mode-hook, compilation-mode): - Doc fix. - - * simple.el (next-error-hook): New variable. - (next-error): Use it. Doc fix. - - * textmodes/ispell.el (ispell-command-loop): Add current - dictionary name and program name to mode-line-format. - (ispell-region, ispell-process-line): Add current dictionary name - and program name to messages. - -2005-07-08 Jay Belanger - - * calc/calc.el (calc-embedded-announce-formula-alist) - (calc-embedded-open-close-formula-alist) - (calc-embedded-open-close-word-alist) - (calc-embedded-open-close-plain-alist) - (calc-embedded-open-close-new-formula-alist) - (calc-embedded-open-close-mode-alist) - (calc-embedded-new-buffer-hook, calc-embedded-new-formula-hook) - (calc-embedded-mode-hook): New variables. - - * calc/calc-embed.el (calc-embedded-firsttime) - (calc-embedded-firsttime-buf, calc-embedded-firsttime-formula): - New variables. - (calc-do-embedded): Use calc-embedded-firsttime, - calc-embedded-firsttime-buf and calc-embedded-firsttime-formula to - determine whether or not to run hooks. - (calc-embedded-make-info): Set calc-embedded-firsttime-buf and - calc-embedded-firsttime-formula appropriately. - Set calc-embedded delimiter variables according to mode. - -2005-07-08 Richard M. Stallman - - * emacs-lisp/checkdoc.el (checkdoc-proper-noun-list): - Check for "emacs", etc., as entire symbol, not just as word. - (checkdoc-file-comments-engine): Use regexp-quote on FN. - - * files.el (set-visited-file-name): Report the error - for "empty filename" earlier. - (kill-some-buffers): Ignore buffers already dead. - - * fringe.el (fringe-mode): Doc fix. - - * emacs-lisp/bytecomp.el (byte-compile-maybe-guarded): - Check for (featurep 'xemacs) and turn off warnings in what it guards. - Use unwind-protect to ensure byte-compile-unresolved-functions - is updated. - - * whitespace.el (whitespace-buffer-leading-cleanup): - Simplify w/ skip-chars-forward. - (whitespace-buffer-trailing-cleanup): Simplify w/ skip-chars-backward. - - * mail/rmail.el (rmail-only-expunge): Fix paren error. - Unconditionally try to leave point at the same old place. - -2005-07-08 Ralf Angeli (tiny change) - - * comint.el (comint-postoutput-scroll-to-bottom) - (comint-show-maximum-output): Take scroll-margin into consideration. - -2005-07-08 Kim F. Storm - - * ido.el (ido-use-filename-at-point): New choice `guess'. - (ido-file-internal): Try ffap-guesser if selected. - - * ido.el (ido-before-fallback-functions): New hook. - (ido-buffer-internal, ido-file-internal, ido-read-buffer) - (ido-read-file-name): Run it. - -2005-07-07 Stefan Monnier - - * progmodes/hideif.el (hide-ifdef-use-define-alist): Pass a list of - strings rather than a list of symbols to the completion function. - -2005-07-07 Jay Belanger - - * calc/calc-units.el (math-apply-units): Change the places in - which units are simplified. - -2005-07-07 Luc Teirlinck - - * cus-edit.el (customize-option, customize-option-other-window): - Make them handle aliases. - - * custom.el (custom-variable-p): Make it recursively follow - aliases. Mention that in the docstring. - -2005-07-07 Richard M. Stallman - - * cus-start.el (exec-path): Use `directory' instead of `file'. - Fix tag for nil. - -2005-07-07 Juanma Barranquero - - * replace.el (occur-rename-buffer): Use `generate-new-buffer' also - when called non-interactively. Doc fix. - -2005-07-07 Lute Kamstra - - * elide-head.el (elide-head-headers-to-hide): Recognize the FSF's - new address as well. - -2005-07-07 Kenichi Handa - - * international/mule.el (make-coding-system): - Describe `ascii-incompatible' property in the docstring. - (set-file-name-coding-system): Signal an error if coding-system is - ascii-incompatible. - (set-keyboard-coding-system): Likewise. - - * international/mule-cmds.el (set-default-coding-systems): - Don't set default-file-name-coding-system and - default-keyboard-coding-system if coding-system is ASCII-incompatible. - - * international/utf-16.el: Declare that all UTF-16-based coding - systems are ASCII-incompatible. - -2005-07-07 Nick Roberts - - * progmodes/gud.el: Require font-lock for displaying errors. - Used by gdb-ui.el. - -2005-07-07 Juanma Barranquero - - * hi-lock.el (hi-lock-find-patterns): Protect also against invalid - values for the pattern lists which are `read'able but not - `append'able (like symbols). - -2005-07-06 Richard M. Stallman - - * progmodes/flymake.el (flymake-float-time): Instead of - with-no-warnings, test for XEmacs. - (flymake-replace-regexp-in-string): Test fboundp of replace-in-string - to avoid warning. - -2005-07-06 Juanma Barranquero - - * w32-vars.el (w32-fixed-font-alist): Fix typo in `defcustom' tag. - -2005-07-05 Lute Kamstra - - * battery.el: Add support for Darwin (with much debugging help - from Samuel Lauber ). - (battery-status-function, battery-echo-area-format) - (battery-mode-line-format): Add support for pmset on Darwin. - (battery-load-low, battery-load-critical): New user options. - (battery-pmset): New function. - -2005-07-05 Lute Kamstra - - Update FSF's address in GPL notices. - - * textmodes/page-ext.el: Update FSF's address. - -2005-07-04 Stefan Monnier - - * emacs-lisp/lisp-mode.el (lisp-mode-variables): Prevent adaptive - filling from using prefix when filling a single-line docstring. - - * progmodes/flymake.el: Remove useless eval-when-compile. - - * arc-mode.el (archive-lzh-ogm): Reorder save excursion/restriction. - -2005-07-04 Richard M. Stallman - - * textmodes/org.el (org-file-apps-defaults-gnu): - Rename from org-file-apps-defaults-linux. - (org-default-apps): Don't test system-type for `linux'. - (org-file-apps): Doc fix. - -2005-07-04 David Ponce - - * tree-widget.el: Improve header Commentary section. - (tree-widget) [defgroup] - (tree-widget-image-enable, tree-widget-themes-directory) - (tree-widget-theme, tree-widget-image-properties-emacs) - (tree-widget-image-properties-xemacs, tree-widget-create-image) - (tree-widget-image-formats, tree-widget-control) - (tree-widget-empty-control, tree-widget-leaf-control - (tree-widget-guide, tree-widget-end-guide, tree-widget-no-guide) - (tree-widget-handle, tree-widget-no-handle, tree-widget-p) - (tree-widget-keep, tree-widget-after-toggle-functions) - (tree-widget-open-node, tree-widget-close-node): Doc fix. - (tree-widget-open-control, tree-widget-close-control): Fix doc and - :help-echo message. - (tree-widget-set-theme): Doc fix. Use `string-equal'. - (tree-widget-image-properties): Doc fix. Clearer implementation. - (tree-widget--cursors): New constant. - (tree-widget-lookup-image): New function split from - `tree-widget-find-image'. Clearer implementation. - (tree-widget-find-image): Use it. - (tree-widget-button-keymap): Use `set-keymap-parent'. - (tree-widget) [define-widget]: Use `widget-children-value-delete'. - Define the sub-widgets here. - (tree-widget-node): Check that :node is not a tree-widget. - (tree-widget-get-super, tree-widget-open-control) - (tree-widget-close-control, tree-widget-empty-control) - (tree-widget-leaf-control, tree-widget-guide) - (tree-widget-end-guide, tree-widget-no-guide, tree-widget-handle) - (tree-widget-no-handle, tree-widget-value-delete) - (tree-widget-map): Remove. - (tree-widget-children-value-save): Doc fix. Simplified. - (tree-widget-value-create): Update according to previous changes. - -2005-07-04 Carsten Dominik - - * textmodes/org.el: Leading space replaced by TABS. - (org-recalc-marks, org-table-rotate-recalc-marks) - (org-table-get-specials): Treat "^" and "_" marks. - (org-table-justify-field-maybe): Optional argument NEW. - (org-table-eval-formula): Parsing of the format simplified. - New modes C,I. Honor the %= parameter in the current table. - Avoid unnecessary re-align by using the NEW argument to - `org-table-justify-field-maybe'. - (org-calc-default-modes): Default for date-format mimicks org-mode. - (org-agenda, org-timeline): Quote argument in org-agenda-redo-command. - -2005-07-03 Luc Teirlinck - - * cus-face.el (custom-theme-set-faces): Make it handle face - aliases whose alias declarations are pre- or autoloaded. - -2005-07-04 Juri Linkov - - * faces.el (read-face-name): Put the code for getting a face name - from the buffer before adding the faces from the `face' property. - Use `completing-read-multiple' instead of `completing-read'. - Require `crm'. Add default value and post-process the returned - list of faces. - - * emacs-lisp/crm.el (crm-find-current-element) - (crm-minibuffer-complete-and-exit): Handle minibuffer prompt. - - * emacs-lisp/lisp-mode.el (eval-defun-1): - * emacs-lisp/edebug.el (edebug-eval-defun): - Remove unnecessary quotes. - -2005-07-04 Juanma Barranquero - - * progmodes/prolog.el (prolog-eof-string): Doc fixes. - (prolog-indent-level): Fix typo in docstring. - - * info.el (Info-history, Info-history-forward) - (Info-history-list, Info-speedbar-fetch-file-nodes): Doc fixes. - - * add-log.el (add-change-log-entry): - * comint.el (comint-dynamic-list-input-ring) - (comint-dynamic-list-completions): - * dabbrev.el (dabbrev-expand): - * delim-col.el (delimit-columns-rectangle-line): - * diff-mode.el (diff-context->unified, diff-reverse-direction) - (diff-unified->context): - * ediff-init.el (ediff-abbrev-jobname): - * ediff-mult.el (ediff-replace-session-status-in-meta-buffer) - (ediff-replace-session-activity-marker-in-meta-buffer): - * info.el (Info-summary): - * lpr.el (printify-region): - * printing.el (pr-create-interface): - * ps-print.el (ps-print-quote): - * ses.el (ses-column-widths, ses-print-cell) - (ses-adjust-print-width, ses-center): - * shell.el (shell-file-name-quote-list): - * strokes.el (strokes-read-stroke, strokes-read-complex-stroke) - (strokes-fill-current-buffer-with-whitespace) - (strokes-xpm-for-stroke, strokes-list-strokes) - (strokes-xpm-char-bit-p, strokes-xpm-for-compressed-string): - * term.el (term-dynamic-list-input-ring) - (term-dynamic-list-completions): - * calc/calc.el (math-format-stack-value): - * emacs-lisp/edebug.el (edebug-display-freq-count): - * progmodes/delphi.el (delphi-indent-line, delphi-fill-comment) - (delphi-new-comment-line): - * progmodes/ebnf2ps.el (ebnf-eps-filename, ebnf-trim-right): - * progmodes/executable.el (executable-set-magic): - * progmodes/python.el (inferior-python-mode): - * progmodes/scheme.el (scheme-mode-syntax-table): - * progmodes/sh-script.el (sh-maybe-here-document): - * progmodes/sql.el (sql-copy-column): - * progmodes/tcl.el (tcl-comment-indent, tcl-quote): - * textmodes/bibtex.el (bibtex-mode): - * textmodes/sgml-mode.el (html-imenu-index, sgml-attributes) - (sgml-auto-attributes): - * textmodes/table.el (table-insert, table-shorten-cell) - (table--generate-source-scan-lines, table-delete-row) - (*table--cell-delete-char, table--spacify-frame) - (table--horizontally-shift-above-and-below) - (table--cell-insert-char, table--cell-blank-str) - (table--fill-region-strictly): - * textmodes/tex-mode.el (tex-insert-quote, latex-find-indent): - * textmodes/texinfo.el (texinfo-insert-quote): "?\ " -> "?\s". - - * add-log.el (change-log): - * apropos.el (apropos): - * comint.el (comint-completion, comint-source): - * dabbrev.el (dabbrev): - * delim-col.el (columns): - * diff-mode.el (diff-mode): - * ediff.el (ediff): - * ediff-diff.el (ediff-diff): - * ediff-init.el (ediff-highlighting, ediff-merge, ediff-hook): - * ediff-mult.el (ediff-mult): - * ediff-ptch.el (ediff-ptch): - * ediff-wind.el (ediff-window): - * facemenu.el (facemenu): - * indent.el (indent): - * info.el (info): - * jka-cmpr-hook.el (compression, jka-compr): - * lpr.el (lpr): - * outline.el (outlines): - * pcmpl-cvs.el (pcmpl-cvs): - * pcmpl-rpm.el (pcmpl-rpm): - * printing.el (printing): - * ps-print.el (postscript, ps-print, ps-print-horizontal) - (ps-print-vertical, ps-print-headers, ps-print-font) - (ps-print-color, ps-print-face, ps-print-n-up, ps-print-zebra) - (ps-print-background, ps-print-printer, ps-print-page) - (ps-print-miscellany): - * ses.el (ses): - * shell.el (shell, shell-directories, shell-faces): - * startup.el (initialization): - * strokes.el (strokes): - * term.el (term): - * uniquify.el (uniquify): - * w32-vars.el (w32): - * calc/calc.el (calc): - * emacs-lisp/bytecomp.el (bytecomp): - * emacs-lisp/cl-indent.el (lisp-indent): - * emacs-lisp/edebug.el (edebug): - * emacs-lisp/elp.el (elp): - * emacs-lisp/testcover.el (testcover): - * emacs-lisp/trace.el (trace): - * emulation/viper-ex.el (viper-ex): - * emulation/viper-mous.el (viper-mouse): - * mail/mailalias.el (mailalias): - * mail/supercite.el (supercite, supercite-frames) - (supercite-attr, supercite-cite, supercite-hooks): - * net/rcompile.el (remote-compile): - * net/rlogin.el (rlogin): - * obsolete/ooutline.el (outlines): - * progmodes/delphi.el (delphi): - * progmodes/ebnf2ps.el (postscript, ebnf2ps, ebnf-special) - (ebnf-except, ebnf-repeat, ebnf-terminal, ebnf-non-terminal) - (ebnf-production, ebnf-shape, ebnf-displacement, ebnf-syntactic) - (ebnf-optimization): - * progmodes/etags.el (etags): - * progmodes/executable.el (executable): - * progmodes/idlwave.el (idlwave): - * progmodes/pascal.el (pascal): - * progmodes/prolog.el (prolog): - * progmodes/python.el (python): - * progmodes/scheme.el (scheme): - * progmodes/sh-script.el (sh, sh-script): - * progmodes/sql.el (SQL): - * progmodes/tcl.el (tcl): - * textmodes/bibtex.el (bibtex, bibtex-autokey): - * textmodes/enriched.el (enriched): - * textmodes/makeinfo.el (makeinfo): - * textmodes/sgml-mode.el (sgml): - * textmodes/table.el (table-hooks): - * textmodes/tex-mode.el (tex-file, tex-run, tex-view): - * textmodes/texinfo.el (texinfo): - * textmodes/two-column.el (two-column): - Finish `defgroup' description with period. - - * emacs-lisp/cl-indent.el (lisp-indent-maximum-backtracking): - * eshell/esh-var.el (eshell-var): - * progmodes/vhdl-mode.el (vhdl-testbench): - * textmodes/org.el (org): Fix typos in docstrings. - - * emacs-lisp/timer.el (with-timeout): Improve argument/docstring - consistency. - - * progmodes/flymake.el (flymake-find-file): Remove. - (flymake-float-time): Use `with-no-warnings'. - (flymake-check-start-time, flymake-check-was-interrupted) - (flymake-err-info, flymake-is-running, flymake-last-change-time) - (flymake-new-err-info): `defvar' at compile time. - -2005-07-03 Juanma Barranquero - - * replace.el (occur-hook): Doc fix. - (occur-1): Don't call `occur-hook' if there are no matches. - -2005-07-03 Richard M. Stallman - - * emulation/tpu-edt.el (tpu-original-global-map): Don't copy - global-map, save the same map. - (global-map): Don't alter it at top level. - (tpu-edt-on): Save global map in tpu-original-global-map, then copy. - Then alter it here instead. - (tpu-edt-off): Set global-map to the saved one. - - * emulation/tpu-edt.el (tpu-emacs19-p): Var deleted. - All references simplified. - (tpu-lucid-emacs-p): Rename from tpu-lucid-emacs19-p. Uses changed. - (zmacs-regions): Add defvar. - (repeat-complex-command-map): Everything about that deleted. - - * textmodes/artist.el (artist-key-is-drawing) - (artist-key-endpoint1, artist-key-poly-point-list) - (artist-key-shape, artist-key-draw-how, artist-popup-menu-table) - (artist-key-compl-table, artist-rb-save-data) - (artist-arrow-point-1, artist-arrow-point-2): Move defvars up. - Don't put them in eval-when-compile. - (artist-set-arrow-points-for-poly): Use `last', not `artist-last'. - - * progmodes/ebrowse.el (ebrowse-revert-tree-buffer-from-file): - Use with-no-warnings. - - * net/browse-url.el (dos-windows-version): Add defvar. - - * mail/supercite.el (filladapt-prefix-table): Add defvar. - - * mail/rmailsum.el (rmail-summary-redo): Add defvar. - (rmail-summary-mode-map, rmail-summary-overlay): Defvars moved up. - (rmail-new-summary-line-count): Rename from new-summary-line-count. - Add defvar. - (rmail-summary-beginning-of-message): Use with-no-warnings. - (rmail-summary-first-message, rmail-summary-last-message): Likewise. - - * emulation/vip.el (vip-replace-string, ex-map, ex-read): - Use with-no-warnings. - - * emulation/vi.el (vi-mark-region): Use c-mark-function. - (c-mark-function): Add point-moving-unit property. - (vi-goto-line): Use with-no-warnings. - - * emulation/edt.el (edt-last-copied-word): Add defvar. - (zmacs-region-stays): Likewise. - (edt-mark-section-wisely): Use c-mark-function for C. - Use makr-defun for Fortran. - (time-string): defvar deleted. - (edt-display-the-time): Don't set time-string. - - * emacs-lisp/macroexp.el (macroexp-accumulate): Rename arg to var+list. - - * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn): - Don't warn when name is not constant - or for defining the group `emacs'. - - * tooltip.el (gud-tooltip-mode): Add defvar. - - * startup.el (default-frame-background-mode): Add defvar. - - * smerge-mode.el (smerge-mode): Add duplicate defvar near top. - - * info.el (tool-bar-map): Add defvar. - - * dired.el (dnd-protocol-alist): Add defvar. - - * dired-aux.el (dired-query): Display question with answer, when - the user answers. - - * custom.el (custom-add-option): Doc fix. - - * bookmark.el (Info-current-node, Info-suffix-list): Add defvars. - -2005-07-03 Eli Zaretskii - - * font-lock.el (font-lock-regexp-grouping-construct): Fix the - bogus name from the last change. - -2005-07-02 Luc Teirlinck - - * custom.el (custom-declare-variable): Fix typos in comment. - (custom-known-themes): Doc fix. - (custom-theme-directory): New defcustom. - (require-theme): Make it check `custom-theme-directory'. - - * cus-theme.el (custom-new-theme-mode): New function. - (custom-theme-name, custom-theme-variables, custom-theme-faces) - (custom-theme-description): Add compiler defvars. - (customize-create-theme): Add doc to the "*New Custom Theme*" - buffer. Use `custom-new-theme-mode'. - (custom-theme-write): Put the created buffer in emacs-lisp-mode - and save it to the `custom-theme-directory'. Make this the - default directory of the buffer. - -2005-07-02 David Hunter (tiny change) - - * progmodes/flymake.el (flymake-mode, flymake-mode-off): - Fix unbalanced parentheses. - -2005-07-02 Stefan Monnier - - * progmodes/flymake.el (flymake-mode-on, flymake-mode-off): Move body - into flymake-mode and delegate to flymake-mode. - - * find-file.el (ff-which-function-are-we-in): Clean up. - -2005-07-02 Juanma Barranquero - - * replace.el (occur-rename-buffer): Fix docstring. - - * emulation/edt.el (*EDT-keys*, edt-default-global-map) - (edt-last-copied-word, edt-learn-macro-count) - (edt-orig-page-delimiter, edt-orig-transient-mark-mode) - (edt-rect-start-point, edt-user-global-map, rect-start-point) - (time-string, zmacs-region-stays): - * emulation/edt-mapper.el (edt-save-function-key-map) - (EDT-key-name): `defvar' to silence the byte-compiler. - -2005-07-02 Martin Rudalics - - * font-lock.el (font-lock-regexp-grouping-backslash): Rename from - font-lock-regexp-backslash. Doc fix. - (font-lock-regexp-backslash-grouping-construct): Rename from - font-lock-regexp-backslash-construct. Doc fix. - (lisp-font-lock-keywords-2): Fix highlighting of Elisp regexp - grouping constructs. - -2005-07-02 Eli Zaretskii - - * makefile.w32-in (bootstrap): Remove the $(EMACS) binary after - updating all the prerequisites. - -2005-07-01 Juanma Barranquero - - * textmodes/org.el (org-agenda-start-on-weekday) - (org-calendar-to-agenda-key, org-agenda-sorting-strategy) - (org-agenda-use-time-grid, org-archive-location) - (org-allow-space-in-links, org-usenet-links-prefer-google) - (org-enable-table-editor, org-export-default-language) - (org-export-html-show-new-buffer, org-fill-paragraph) - (org-cycle, org-goto-ret, org-goto-left, org-goto-right) - (org-goto-quit, org-occur, org-eval-in-calendar) - (org-agenda-cleanup-fancy-diary, org-agenda-no-heading-message) - (org-agenda-diary-entry, org-remember-help) - (org-table-convert-region, org-at-table-p) - (org-table-move-row-down, org-table-move-row-up) - (org-table-copy-region, org-table-toggle-vline-visibility) - (org-table-get-stored-formulas, org-table-get-specials) - (org-recalc-commands, org-table-eval-formula) - (org-table-formula-substitute-names, orgtbl-make-binding) - (org-format-org-table-html, org-format-table-table-html) - (org-format-table-table-html-using-table-generate-source) - (org-customize): Fix typos in docstrings. - (org-level-2, org-at-timestamp-p, org-agenda-day-view) - (org-agenda-toggle-diary, org-agenda-toggle-time-grid) - (org-back-to-heading): Doc fixes. - (org-agenda-toggle-time-grid, org-cmp-category, org-cmp-time) - (org-agenda-change-all-lines, org-get-header): - Improve argument/docstring consistency. - (orgtbl-error): Fix error message. - - * progmodes/flymake.el (flymake-find-possible-master-files) - (flymake-master-file-compare, flymake-get-line-err-count) - (flymake-highlight-line, flymake-gui-warnings-enabled): - Fix typos in docstrings. - (flymake-parse-line, flymake-get-project-include-dirs-function) - (flymake-get-prev-err-line-no, flymake-goto-prev-error): - Doc fixes. - (flymake-get-project-include-dirs-function) - (flymake-make-err-menu-data): - Improve argument/docstring consistency. - -2005-07-01 Lute Kamstra - - * battery.el (battery-linux-proc-apm): Fix typo in docstring. - Catch errors with ignore-errors. Use temporary buffer. - (battery-linux-proc-acpi): Fix typo in docstring. Document `%r'. - - * facemenu.el (facemenu-unlisted-faces): Delete foreground and - background color faces. - (facemenu-set-foreground, facemenu-set-background): - Use facemenu-set-face-from-menu. - (facemenu-set-face-from-menu): Treat face names that start with - "fg:" or "bg:" as special. - (facemenu-add-new-color): Don't create faces. Simplify. - -2005-06-30 Richard M. Stallman - - * emacs-lisp/crm.el (crm-do-completion): Handle minibuffer prompt. - (crm-find-current-element): Likewise. - -2005-06-30 Johan Bockg,Ae(Brd - - * help-fns.el (help-do-arg-highlight): Regexp-quote argument names. - -2005-06-30 Stefan Monnier - - * arc-mode.el (archive-extract): Make it work as a mouse binding. - (archive-mouse-extract): Make it an obsolete alias. - (archive-mode-map): Don't use archive-mouse-extract any more. - (archive-mode, archive-extract): write-contents-hooks -> - write-contents-functions. - (archive-arc-rename-entry, archive-lzh-rename-entry): Remove unused - first arg. - (archive-rename-entry): Update the call. - (archive-zip-summarize): Remove unused var `method'. - (archive-lzh-summarize): Remove unused var `creator'. - - * emacs-lisp/debug.el (debug): Quieten Drew Adams by killing the - dedicated frame upon exit. - - * arc-mode.el: Bind inhibit-read-only rather than buffer-read-only. - (archive-zip-extract, archive-zip-expunge) - (archive-zip-update, archive-zip-update-case): Use executable-find. - (archive-resummarize, archive-flag-deleted, archive-unmark-all-files): - Use restore-buffer-modified-p. - (archive-extract, archive-add-new-member, archive-write-file-member): - Use with-current-buffer. - (archive-lzh-ogm, archive-zip-chmod-entry): Use dolist. - -2005-06-30 Andreas Schwab - - * progmodes/gud.el (gud-filter): Remove unneeded progn. - -2005-06-30 Glenn Morris - - * progmodes/sh-script.el (sh-get-kw): `&' also separates words. - -2005-06-30 Juri Linkov - - * faces.el (vertical-border): Inherit from mode-line-inactive - only on tty. - -2005-06-30 Juanma Barranquero - - * help-fns.el (help-do-arg-highlight): Highlight also -ARG (for - example, -NLINES in the `occur' docstring). - - * replace.el (occur-1): When no matches are found, do not set the - `buffer-read-only' and modified flags for the occur buffer, - because it is deleted. - - * emulation/cua-base.el (cua-check-pending-input) - (cua-repeat-replace-region, cua-mode, cua-debug) - (cua-auto-tabify-rectangles, cua-inhibit-cua-keys): - Fix typos in docstrings. - - * emulation/cua-gmrk.el (cua-toggle-global-mark) - (cua-cut-region-to-global-mark) - (cua--cut-rectangle-to-global-mark): - Remove period from end of messages. - - * emulation/cua-rect.el (cua-do-rectangle-padding): - Remove period from end of messages. - (cua--rectangle-seq-format): Fix typo in docstring. - (cua-sequence-rectangle, cua-fill-char-rectangle): - Improve argument/docstring consistency. - -2005-06-29 Juri Linkov - - * faces.el (default-frame-background-mode): New internal variable. - (frame-set-background-mode): Use it. - - * startup.el (normal-top-level): Set default-frame-background-mode - instead of frame-background-mode. Before setting it, test for its - nil value. Remove tests for frame-background-mode and frame - parameter `reverse'. Add test for "unspecified-fg". - - * term/xterm.el (xterm-rxvt-set-background-mode): - * term/rxvt.el (rxvt-set-background-mode): - Set default-frame-background-mode instead of frame-background-mode. - -2005-06-29 Juanma Barranquero - - * simple.el (set-variable): Warn about obsolete user variables. - - * imenu.el (imenu--completion-buffer): - * mouse.el (mouse-buffer-menu-alist): - * msb.el (msb-invisible-buffer-p): - * calendar/diary-lib.el (diary-header-line-format): - * emacs-lisp/pp.el (pp-buffer): - * progmodes/cperl-mode.el (cperl-do-auto-fill): - * textmodes/picture.el (picture-replace-match): - Change space constants followed by a sexp to "?\s ". - - * play/decipher.el (decipher-loop-with-breaks): - * textmodes/texinfo.el (texinfo-insert-@item): Change space - constants "protected" from end of line by a comment to "?\s". - -2005-06-29 Stefan Monnier - - * font-lock.el (save-buffer-state): Use `declare'. - - * progmodes/cperl-mode.el (cperl-find-pods-heres): Don't gratuitously - reset the syntax-table to cperl-mode-syntax-table. - (cperl-mode): Make _ into word-syntax during font-locking so "print" in - "foo_print_bar" is not matched as a reserved keyword. - -2005-06-29 Carsten Dominik - - * textmodes/org.el (orgtbl-setup): New function, for delayed - setup for the orgtbl commands. - (org-calc-default-modes): New option. - (orgtbl-make-binding): Use `defun' to get better help display. - (org-diary): Call `org-compile-prefix-format'. - (org-table-formula-substitute-names): New function. - (org-agenda-day-view, org-agenda-week-view): New commands. - (org-agenda-toggle-week-view): Command removed. - (org-tbl-menu): Split off from org-org-menu. - (org-mode): Move removal of outline-mode menus to here. - (org-table-formula-debug): New option. - (org-table-insert-row): Keep first field if just "#" or "*". - (org-mode): Paragraph regexps fixed. - (org-table-recalculate-regexp): New constant. - (org-table-justify-field-maybe): Avoid replace if not necessary. - (org-copy-special, org-cut-special): Use `call-interactively'. - (org-table-copy-region): Take region from `interactive' call. - (org-trim): Return string even if no match. - (org-formula): New face. - (org-set-font-lock-defaults): No longer highlight "FIXME". - But highlight formula-related fields in table. - (org-table-p): Use regexp, not fontification. - (org-table-align): Handle white space at end of line. - (org-table-formula-evaluate-inline): New option. - (org-mode): Auto-wrapping in comment lines turned off. - (org-table-copy-down): Evaluate only in copied field, not in - destination. - (org-table-current-formula): Variable removed. - (org-table-store-formulas, org-table-get-stored-formulas) - (org-table-modify-formulas, org-table-replace-in-formulas) - (org-table-maybe-eval-formula): New functions. - (org-table-get-formula): Modify to use stored formulas. - (org-table-insert-column, org-table-delete-column) - (org-table-move-column): Call `org-table-modify-formulas'. - (org-complete): Add completion for keyword formulas. - (orgtbl-mode): Pull orgtbl-mode-map to start of - minor-mode-map-alist. - -2005-06-29 Stefan Monnier - - * progmodes/python.el (python-check): Require `compile' before - modifying its variables. - - * newcomment.el (comment-indent-default): Don't get fooled by an early - end of buffer. - -2005-06-28 Vinicius Jose Latorre - - * ps-print.el (ps-print-version): Fix version number. - -2005-06-28 Luc Teirlinck - - * textmodes/ispell.el (ispell-word): Remove stray parenthesis. - -2005-06-28 Richard M. Stallman - - * textmodes/flyspell.el (flyspell-use-local-map): Variable deleted. - (flyspell-local-mouse-map): Declaration deleted. - (flyspell-mouse-map): Bind only mouse-2. - (flyspell-mode-map): Don't test flyspell-use-local-map. - (flyspell-overlay-keymap-property-name): Var deleted. - (flyspell-mode-on): Don't make local bindings for - flyspell-mouse-map and flyspell-mode-map. - (make-flyspell-overlay): Unconditionally put on `keymap' text prop. - - * textmodes/ispell.el (ispell-word): Do not ignore short words. - - * progmodes/compile.el (compilation-next-error-function): - Don't switch buffers; operate on the current buffer. - - * progmodes/compile.el (compilation-error-file-name) - (compilation-warning-file-name, compilation-info-file-name) - (compilation-line-number, compilation-column-number): New faces. - (compilation-error-face, compilation-warning-face) - (compilation-info-face, compilation-line-face) - (compilation-column-face): Use them. - - * facemenu.el (facemenu-add-face): Warn when font-lock is active. - - * comint.el (comint-password-prompt-regexp): Accept ", try again". - - * bindings.el (global-map): Bind insertchar and its variants. - -2005-06-27 Richard M. Stallman - - * textmodes/artist.el (artist-text-overwrite) - (artist-figlet-get-extra-args, artist-text-see-thru): Use read-string. - -2005-06-27 Vinicius Jose Latorre - - * ps-print.el: It was not working the page selection for printing. - Reported by Sebastian Tennant . - (ps-print-version): New version 6.6.7. - (ps-end-sheet): New fun. - (ps-header-sheet, ps-end-job): Call it. - -2005-06-27 Luc Teirlinck - - * subr.el (add-to-list, add-to-ordered-list): Doc fixes. - -2005-06-27 Lute Kamstra - - * facemenu.el (facemenu-unlisted-faces): Add foreground and - background color faces. - (facemenu-get-face): Delete function. - (facemenu-set-face-from-menu): Don't call facemenu-get-face. - (facemenu-add-new-color): Make second argument mandatory. - Create the appropriate face and return it. Simplify. - (facemenu-set-foreground, facemenu-set-background): Don't check if - color is defined. Use return value of facemenu-add-new-color. - -2005-06-26 Nick Roberts - - * progmodes/gud.el (gud-filter): Add missing argument to - with-selected-window. - -2005-06-26 Stefan Monnier - - * emacs-lisp/easy-mmode.el (define-minor-mode): Don't automatically add - a :require to the defcustom. - - * emacs-lisp/autoload.el (make-autoload): Add the :setter for - defcustoms corresponding to minor modes. - -2005-06-26 David Ponce - - * recentf.el: Require tree-widget instead of wid-edit. - (recentf-filename-handler): Fix widget :type. - (recentf-cancel-dialog, recentf-open-more-files) - (recentf-open-files-action): Doc fix. - (recentf-dialog-goto-first): New function. - (recentf-dialog-mode-map): Set parent keymap first. - (recentf-dialog-mode): Define with define-derived-mode. - Don't display continuation lines in dialogs. - (recentf-edit-list): Rename from recentf-edit-selected-items. - (recentf-edit-list-select): Rename from recentf-edit-list-action. - Simplify. - (recentf-edit-list-validate): New function. - (recentf-edit-list): Update accordingly. - (recentf-open-files-item-shift): Remove. - (recentf-open-files-item): Convert menu elements into tree and - link widgets. Don't create the widgets. - (recentf-open-files): Update accordingly. - (recentf-save-list): Untabify. - -2005-06-25 Luc Teirlinck - - * replace.el (keep-lines-read-args): Add INTERACTIVE arg. - (keep-lines): Add INTERACTIVE arg. Never delete lines only - partially contained in the active region. Do not take active - region into account when called from Lisp, unless INTERACTIVE arg - is non-nil. Use `forward-line' instead of `beginning-of-line' to - avoid trouble with fields. Make marker point nowhere when no - longer used. Always return nil. Doc fix. - (flush-lines): Add INTERACTIVE arg. Do not take active region - into account when called from Lisp, unless INTERACTIVE arg is - non-nil. Use `forward-line' instead of `beginning-of-line' to - avoid trouble with fields. Make marker point nowhere when no - longer used. Always return nil. Doc fix. - (how-many): Add INTERACTIVE arg. Make RSTART and REND args - interchangeable. Do not take active region into account when - called from Lisp, unless INTERACTIVE arg is non-nil. Do not print - message in echo area when called from Lisp, unless INTERACTIVE arg - is non-nil. Avoid saying "1 occurrences". Do not use markers. - Return the number of matches. Doc fix. - (occur): Doc fix. - (perform-replace): Make comment follow double space convention for - the sake of `outline-minor-mode'. - - * faces.el (facep): Doc fix. - -2005-06-25 Richard M. Stallman - - * facemenu.el (facemenu-enable-faces-p): New function. - (facemenu-background-menu, facemenu-foreground-menu) - (facemenu-face-menu): Add menu-enable property. - - * jka-compr.el (jka-compr-insert-file-contents): - Special handling if cannot find the uncompression program. - - * cus-face.el (custom-face-attributes): Add autoload. - - * emacs-lisp/lisp-mode.el (lisp-mode-variables): - Bind comment-indent-function locally. - - * window.el (save-selected-window): Use save-current-buffer. - - * subr.el (with-selected-window): Use save-current-buffer. - - * progmodes/gud.el (gud-filter): Simplify using with-selected-window - and with-current-buffer. - -2005-06-24 Richard M. Stallman - - * simple.el (line-move-1): Fix previous change. - -2005-06-24 Juanma Barranquero - - * replace.el (occur-1): Set `buffer-read-only' and the - buffer-modified flag before running `occur-hook' to protect - against unintentional buffer switches that can lead to data loss. - -2005-06-24 Nick Roberts - - * progmodes/gud.el (gud-tooltip-print-command): Indent properly. - (gud-gdb-marker-filter): Use font-lock-warning-face for any - initial error. - - * progmodes/gdb-ui.el (gdb-send): Remove warning face from errors - after fresh input. - (gdb-var-create-handler): Put name of expression in quotes. - -2005-06-23 Luc Teirlinck - - * emacs-lisp/ring.el (ring-elements): Make it return a list of the - elements of RING in order, and without bogus nil elements. - -2005-06-23 Richard M. Stallman - - * simple.el (set-variable): Args renamed; doc fix. - (line-move-1): When there are overlays around, use vertical-motion. - - * faces.el (escape-glyph): Use brown against light background. - (nobreak-space): Rename from no-break-space. - Fix previous change. - - * dired-aux.el (dired-do-copy): Fix arg prompt. - - * mail/sendmail.el (mail-setup-with-from): Fix custom type. - -2005-06-23 Glenn Morris - - * mail/emacsbug.el (report-emacs-bug): Use "X server distributor" - rather than "Distributor". - -2005-06-23 Lute Kamstra - - * emacs-lisp/debug.el (debugger-special-form-p): New defun. - (debug-on-entry): Use it. New interactive declaration that uses - function-called-at-point. - -2005-06-23 Kim F. Storm - - * subr.el (save-match-data): Add comment about using evaporate arg - to set-match-data. - -2005-06-22 Glenn Morris - - * cus-edit.el (customize-face) - (customize-face-other-window): Handle face aliases. - - * faces.el (face-documentation, set-face-attribute) - (face-spec-set): Handle face aliases. - -2005-06-22 Juanma Barranquero - - * help-mode.el (help-make-xrefs): If a symbol representing a face - name is not followed by the word "face", it could still be a - function or variable name, so don't bypass other checks. - -2005-06-22 Juri Linkov - - * ps-print.el (ps-face-foreground-name, ps-face-background-name): - Replace aliased functions with calls where second arg `inherit' is t. - -2005-06-22 Nick Roberts - - * progmodes/gdb-ui.el (gdb-error): New variable. - (gdb-error): New function. - (gdb-annotation-rules): Act on error-begin and error annotations. - (gdb-concat-output): Use font-lock-warning-face for errors. - -2005-06-22 Miles Bader - - * bindings.el (propertized-buffer-identification): Use renamed - `Buffer-menu-buffer' face. - - * faces.el (vertical-border): Rename from `vertical-divider'. - (escape-glyph): Change dark-background color back to `cyan'. - -2005-06-21 Juri Linkov - - * faces.el (face-user-default-spec): Try getting `customized-face' - prior to `saved-face'. - (frame-background-mode): Refill docstring. - - * emacs-lisp/lisp-mode.el (eval-defun-1): - * emacs-lisp/edebug.el (edebug-eval-defun): - Set `saved-face' temporarily to nil before calling form. - Set `customized-face' to the new spec after that. - -2005-06-21 Juanma Barranquero - - * subr.el (1value, lambda, key-substitution-in-progress): - Doc fixes. - - * autoinsert.el (auto-insert-alist): - * ses.el (ses-call-printer): - * subr.el (noreturn): - * emacs-lisp/lisp.el (check-parens): - * emacs-lisp/byte-opt.el (byte-optimize-pure-func): - * net/browse-url.el (browse-url-mosaic): - * progmodes/cc-defs.el (c-safe-scan-lists): - * progmodes/ebnf-abn.el (ebnf-abn-lex): - * progmodes/ebnf-bnf.el (ebnf-bnf-lex): - * progmodes/ebnf-dtd.el (ebnf-dtd-lex): - * progmodes/ebnf-ebx.el (ebnf-ebx-lex): - * progmodes/ebnf-iso.el (ebnf-iso-lex): - * progmodes/ebnf-yac.el (ebnf-yac-lex): Fix spellings. - -2005-06-21 Reiner Steib - - * pcvs-defs.el (cvs-menu): Add cvs-mode-mark and cvs-mode-unmark. - -2005-06-21 Glenn Morris - - * calendar/appt.el (appt-make-list): Activate the package, if - not already active (for backwards compatibility). - -2005-06-20 Kim F. Storm - - * subr.el (add-to-ordered-list): Test membership with eq. Simplify. - -2005-06-20 Miles Bader - - * faces.el (vertical-divider): New face. - -2005-06-20 Juanma Barranquero - - * simple.el (kill-whole-line): Doc fix. - (next-error-buffer-p, next-error-find-buffer) - (clone-indirect-buffer): Fix typos in docstrings. - (comment-line-break-function): Doc fix: don't say variable - is automatically buffer-local (it isn't). - -2005-06-19 Michael Albinus - - * net/tramp-ftp.el (top): - * net/tramp-smb.el (top): - * net/tramp-util.el (top): - * net/tramp-uu.el (top): - * net/tramp-vc.el (top): - * net/tramp.el (top): Revert copyright years back to original - ones. Tramp has a life outside GNU Emacs. - -2005-06-19 Nick Roberts - - * tooltip.el (tooltip-use-echo-area): Don't make it obsolete. - -2005-06-18 Juri Linkov - - * progmodes/grep.el (grep-regexp-alist): Use backreference at the - end of first regexp to limit the match to the position between - line number and source line with same separator character as used - between file name and line number. In the second regexp limit - mouse-face area to file name and line number by adding new group - for them and referring it in HYPERLINK arg. - (grep-regexp-alist, grep-mode-font-lock-keywords): Use shy group. - (grep-mode): Set font-lock-lines-before to 0 to not refontify the - previous line where grep markers may be already removed. - -2005-06-18 Peter Kleiweg - - * progmodes/ps-mode.el: Update version and maintainer's email address. - -2005-06-18 Steve Youngs - - * net/browse-url.el (browse-url-browser-function) - (browse-url-default-browser): Add firefox. - (browse-url-firefox-program, browse-url-firefox-arguments) - (browse-url-firefox-startup-arguments) - (browse-url-firefox-new-window-is-tab): New defcustoms. - (browse-url-firefox, browse-url-firefox-sentinel): New functions. - -2005-06-17 Richard M. Stallman - - * startup.el (command-line): Warn if specified user name has - no home directory. - - * term.el (term-get-old-input, term-input-filter, term-input-sender) - (term-mode-hook, term-exec-hook, term-escape-char): Doc fixes. - - * longlines.el (longlines-mode, longlines-show-hard-newlines): - Doc fixes. - - * faces.el (underline): Try bold if terminal doesn't support underline. - - * mail/sendmail.el (mail-setup-with-from): New variable. - (mail-insert-from-field): New function. - (sendmail-send-it): Call it. - (mail-setup): Optionally call it here. - - * term/linux.el: Call tty-no-underline. - -2005-06-17 Luc Teirlinck - - * emacs-lisp/edebug.el (edebug-goto-here): Doc fix. - -2005-06-17 Miles Bader - - * ediff-init.el (ediff-current-diff-A, ediff-current-diff-B) - (ediff-current-diff-C, ediff-current-diff-Ancestor) - (ediff-fine-diff-A, ediff-fine-diff-B, ediff-fine-diff-C) - (ediff-fine-diff-Ancestor, ediff-even-diff-A, ediff-even-diff-B) - (ediff-even-diff-C, ediff-even-diff-Ancestor, ediff-odd-diff-A) - (ediff-odd-diff-B, ediff-odd-diff-C, ediff-odd-diff-Ancestor): - Remove "-face" suffix from face names. - (ediff-current-diff-face-A, ediff-current-diff-face-B) - (ediff-current-diff-face-C, ediff-current-diff-face-Ancestor) - (ediff-fine-diff-face-A, ediff-fine-diff-face-B) - (ediff-fine-diff-face-C, ediff-fine-diff-face-Ancestor) - (ediff-even-diff-face-A, ediff-even-diff-face-B) - (ediff-even-diff-face-C, ediff-even-diff-face-Ancestor) - (ediff-odd-diff-face-A, ediff-odd-diff-face-B) - (ediff-odd-diff-face-C, ediff-odd-diff-face-Ancestor): - New backward-compatibility aliases for renamed faces. - (ediff-current-diff-face-A, ediff-current-diff-face-B) - (ediff-current-diff-face-C, ediff-current-diff-face-Ancestor) - (ediff-fine-diff-face-A, ediff-fine-diff-face-B) - (ediff-fine-diff-face-C, ediff-fine-diff-face-Ancestor) - (ediff-even-diff-face-A, ediff-even-diff-face-B) - (ediff-even-diff-face-C, ediff-even-diff-face-Ancestor) - (ediff-odd-diff-face-A, ediff-odd-diff-face-B) - (ediff-odd-diff-face-C, ediff-odd-diff-face-Ancestor): - Use renamed ediff faces. - - * eshell/esh-test.el (eshell-test-ok, eshell-test-failed): - Remove "-face" suffix from face names. - (eshell-test-ok-face, eshell-test-failed-face): - New backward-compatibility aliases for renamed faces. - (eshell-run-test): Use renamed eshell-test faces. - - * eshell/em-prompt.el (eshell-prompt): Remove "-face" suffix from - face name. - (eshell-prompt-face): New backward-compatibility alias for renamed - face. - (eshell-emit-prompt): Use renamed eshell-prompt face. - - * eshell/em-ls.el (eshell-ls-directory, eshell-ls-symlink) - (eshell-ls-executable, eshell-ls-readonly, eshell-ls-unreadable) - (eshell-ls-special, eshell-ls-missing, eshell-ls-archive) - (eshell-ls-backup, eshell-ls-product, eshell-ls-clutter): - Remove "-face" suffix from face names. - (eshell-ls-directory-face, eshell-ls-symlink-face) - (eshell-ls-executable-face, eshell-ls-readonly-face) - (eshell-ls-unreadable-face, eshell-ls-special-face) - (eshell-ls-missing-face, eshell-ls-archive-face) - (eshell-ls-backup-face, eshell-ls-product-face) - (eshell-ls-clutter-face): - New backward-compatibility aliases for renamed faces. - (eshell-ls-decorated-name): Use renamed eshell-ls faces. - - * progmodes/cc-fonts.el (c-nonbreakable-space-face): - Remove "-face" suffix from face name. - (c-cpp-matchers): Use the variable `c-nonbreakable-space-face' - instead of literal face. - -2005-06-17 Juanma Barranquero - - * emacs-lisp/warnings.el (display-warning, lwarn) - (warning-minimum-log-level): Doc fixes. - (warning-minimum-level, warning-minimum-log-level): - Add :debug to :type choices. - - * progmodes/ada-mode.el (ada-format-paramlist) - (ada-get-indent-case, ada-check-matching-start) - (ada-check-defun-name, ada-goto-matching-decl-start) - (ada-goto-matching-start, ada-goto-matching-end, ada-tab) - (ada-untab, ada-move-to-start, ada-fill-comment-paragraph) - (ada-make-subprogram-body): Follow error conventions. - (ada-case-exception-file, ada-indent-comment-as-code) - (ada-indent-handle-comment-special, ada-indent-renames) - (ada-indent-return, ada-search-directories-internal) - (ada-tab-policy, ada-case-exception-substring) - (ada-other-file-alist, ada-matching-start-re) - (ada-matching-decl-start-re, ada-contextual-menu-last-point) - (ada-imenu-generic-expression, ada-compile-goto-error) - (ada-in-comment-p, ada-in-string-p, ada-in-string-or-comment-p) - (ada-popup-menu, ada-add-extensions, ada-mode) - (ada-region-selected, ada-create-case-exception) - (ada-create-case-exception-substring, ada-after-keyword-p) - (ada-activate-keys-for-case, ada-adjust-case-region) - (ada-adjust-case-buffer, ada-format-paramlist) - (ada-scan-paramlist, ada-insert-paramlist) - (ada-indent-newline-indent) - (ada-indent-newline-indent-conditional) - (ada-justified-indent-current, ada-goto-previous-word) - (ada-indent-current, ada-get-indent-open-paren) - (ada-get-indent-paramlist, ada-get-indent-end) - (ada-get-indent-case, ada-get-indent-when, ada-get-indent-if) - (ada-get-indent-block-start, ada-get-indent-subprog) - (ada-get-indent-noindent, ada-get-indent-label) - (ada-get-indent-loop, ada-get-indent-type, ada-goto-stmt-start) - (ada-search-prev-end-stmt, ada-goto-next-non-ws) - (ada-goto-stmt-end, ada-goto-next-word) - (ada-check-matching-start, ada-check-defun-name) - (ada-goto-matching-decl-start, ada-goto-matching-start) - (ada-goto-matching-end, ada-search-ignore-string-comment) - (ada-in-decl-p, ada-looking-at-semi-or) - (ada-looking-at-semi-private, ada-in-paramlist-p) - (ada-in-open-paren-p, ada-tab, ada-indent-current-function) - (ada-untab-hard, ada-move-to-start, ada-move-to-end) - (ada-next-procedure, ada-previous-procedure, ada-next-package) - (ada-previous-package, ada-create-menu) - (ada-fill-comment-paragraph-justify) - (ada-fill-comment-paragraph-postfix, ada-fill-comment-paragraph) - (ada-other-file-name, ada-last-which-function-line) - (ada-last-which-function-subprog, ada-which-function) - (ada-get-body-name, ada-outline-level, ada-narrow-to-defun) - (ada-gen-treat-proc, ada-check-emacs-version) - (ada-continuation-indent, ada-align-region-separate): - Fix typos in docstrings. - (ada-adjust-case, ada-adjust-case-interactive): Doc fixes. - -2005-06-16 Lute Kamstra - - * simple.el (fundamental-mode): Run after-change-major-mode-hook - conditionally. - -2005-06-16 Juanma Barranquero - - * comint.el (comint-replace-by-expanded-filename) - (comint-prompt-regexp, comint-delimiter-argument-list) - (comint-preinput-scroll-to-bottom): - * info.el (Info-hide-cookies-node): - * ls-lisp.el (ls-lisp-classify): - * find-file.el (ff-search-directories, ff-special-constructs) - (ff-find-other-file): - * font-lock.el (font-lock-keywords): - * shell.el (shell-prompt-pattern) - (shell-dynamic-complete-functions, shell-mode) - (shell-delimiter-argument-list): - * term.el (term-replace-by-expanded-filename) - (term-prompt-regexp, term-delimiter-argument-list): - * woman.el (woman-ignore, woman0-if): - * emacs-lisp/derived.el (derived-mode-init-mode-variables): - * emacs-lisp/elint.el (elint-init-env): - * emacs-lisp/regexp-opt.el (regexp-opt-depth): - * eshell/esh-mode.el (eshell-preinput-scroll-to-bottom): - * language/ethio-util.el (ethio-tilde-escape) - (ethio-use-three-dot-question): - * net/zone-mode.el (zone-mode-load-time-setup): - * progmodes/cc-align.el (c-lineup-argcont): - * progmodes/cc-awk.el (c-awk-beginning-of-defun): - * progmodes/cperl-mode.el (cperl-set-style-back): - * progmodes/inf-lisp.el (inferior-lisp-prompt): - * progmodes/vhdl-mode.el (vhdl-beginning-of-libunit): - Fix spellings in docstrings. - - * textmodes/sgml-mode.el (sgml-calculate-indent, html-tag-help): - * progmodes/modula2.el (m2-for): Fix spellings. - - * menu-bar.el (menu-bar-games-menu): Fix typo in menu help string. - - * simple.el (undo-more): Don't use `format' on `error' arguments. - Improve argument/docstring consistency. - (pending-undo-list): Doc fix. - - * smerge-mode.el (smerge-ensure-match): - * emulation/vip.el (vip-ex): - * net/zone-mode.el (zone-mode-update-serial): - * progmodes/idlwave.el (idlwave-complete): - * progmodes/vhdl-mode.el (vhdl-visit-file) - (vhdl-compose-wire-components): - Don't use `format' on `error' arguments. - - * tooltip.el (tooltip-start-delayed-tip, tooltip-timeout) - (tooltip-use-echo-area, tooltip-process-prompt-regexp) - (tooltip-help-tips): Fix typos in docstrings. - -2005-06-16 David Ponce - - * tree-widget.el (tree-widget-value-create): Simplify last change. - -2005-06-15 Matt Hodges - - * ido.el (ido-incomplete-regexp): New variable. - (ido-set-matches-1): Handle invalid-regexp error and set - ido-incomplete-regexp. - (ido-incomplete-regexp): New face. - (ido-completions): Use it. - (ido-complete, ido-exit-minibuffer, ido-completions): - Handle incomplete regexps. - (ido-completions): Add check for complete match when entering a regexp. - -2005-06-15 Stefan Monnier - - * subr.el (add-to-ordered-list): Use a weak hash-table to avoid leaks. - -2005-06-15 Roland Winkler - - * textmodes/bibtex.el (bibtex-Preamble): Enclose BibTeX preamble - by field delimiters. - -2005-06-15 David Ponce - - * tree-widget.el: eval-and-compile inlined functions so they will - be available at run-time too. - (tree-widget-super-format-handler) - (tree-widget-format-handler): Remove. - (tree-widget-value-create): Handle the :indent property. - -2005-06-15 Miles Bader - - * progmodes/which-func.el (which-func): Only inherit - `font-lock-function-name-face' when that makes sense against the - default mode-line face, otherwise set the face color explicitly. - - * progmodes/cperl-mode.el (cperl-init-faces): Use literal cperl - faces instead of (non-existent) variables. - -2005-06-14 Stefan Monnier - - * iswitchb.el (iswitchb-to-end): Replace mapcar with dolist. - (iswitchb-get-matched-buffers): Likewise. Simplify. - -2005-06-14 Miles Bader - - * progmodes/ld-script.el (ld-script-location-counter): - Remove "-face" suffix from face name. - (ld-script-location-counter-face): - New backward-compatibility alias for renamed face. - (ld-script-location-counter-face): Use renamed face. - - * progmodes/cperl-mode.el (cperl-nonoverridable, cperl-array) - (cperl-hash): Remove "-face" suffix from face names. - (cperl-nonoverridable-face, cperl-array-face, cperl-hash-face): - New backward-compatibility aliases for renamed faces. - (cperl-find-pods-heres, cperl-init-faces, cperl-ps-print-init) - (cperl-ps-print-face-properties): Use renamed cperl-mode faces. - - * progmodes/which-func.el (which-func): Remove "-face" suffix from face - name. - (which-func-face): New backward-compatibility alias for renamed face. - (which-func-format): Use renamed which-func face. - - * progmodes/vhdl-mode.el (vhdl-prompt, vhdl-attribute, vhdl-enumvalue) - (vhdl-function, vhdl-directive, vhdl-reserved-word) - (vhdl-translate-off): Remove "-face" suffix and "font-lock-" from face - names. - (vhdl-speedbar-entity, vhdl-speedbar-architecture) - (vhdl-speedbar-configuration, vhdl-speedbar-package) - (vhdl-speedbar-library, vhdl-speedbar-instantiation) - (vhdl-speedbar-subprogram, vhdl-speedbar-entity-selected) - (vhdl-speedbar-architecture-selected) - (vhdl-speedbar-configuration-selected) - (vhdl-speedbar-package-selected) - (vhdl-speedbar-instantiation-selected): Remove "-face" suffix from face - names. - (vhdl-font-lock-keywords-2, vhdl-font-lock-keywords-5): - Use renamed faces. - (vhdl-prompt-face, vhdl-attribute-face, vhdl-enumvalue-face) - (vhdl-function-face, vhdl-directive-face, vhdl-reserved-words-face) - (vhdl-translate-off-face): Variables renamed to remove "font-lock-". - Use renamed faces. - (syntax-alist): Don't use "font-lock-" or "-face" in generated face - names. - (vhdl-font-lock-init, vhdl-ps-print-settings): Use renamed faces. - (vhdl-speedbar-insert-hierarchy, vhdl-speedbar-expand-entity) - (vhdl-speedbar-expand-package, vhdl-speedbar-update-current-unit) - (vhdl-speedbar-make-inst-line, vhdl-speedbar-make-pack-line) - (vhdl-speedbar-make-subpack-line, vhdl-speedbar-make-subprogram-line) - (vhdl-speedbar-item-info, vhdl-speedbar-check-unit): Use renamed faces. - - * progmodes/sh-script.el (sh-heredoc): Remove "-face" suffix from - face name. - (sh-heredoc-face): New backward-compatibility alias for renamed face. - (sh-heredoc-face): Use renamed sh-heredoc face. - - * progmodes/idlw-help.el (idlwave-help-link): - Remove "-face" suffix from face name. - (idlwave-help-link-face): - New backward-compatibility alias for renamed face. - (idlwave-highlight-linked-completions): Use renamed idlwave-help faces. - - * progmodes/idlw-shell.el (idlwave-shell-bp-face) - (idlwave-shell-disabled-bp): Remove "-face" suffix from face names. - (idlwave-shell-bp-face, idlwave-shell-disabled-bp): - New backward-compatibility aliases for renamed faces. - (idlwave-shell-disabled-breakpoint-face) - (idlwave-shell-breakpoint-face): Use renamed idlwave-shell faces. - - * progmodes/flymake.el (flymake-errline, flymake-warnline): - Remove "-face" suffix from face names. - (flymake-errline-face, flymake-warnline-face): - New backward-compatibility aliases for renamed faces. - (flymake-highlight-line): Use renamed flymake faces. - - * progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class) - (ebrowse-file-name, ebrowse-default, ebrowse-member-attribute) - (ebrowse-member-class, ebrowse-progress): - Remove "-face" suffix from face names. - (ebrowse-tree-mark-face, ebrowse-root-class-face) - (ebrowse-file-name-face, ebrowse-default-face) - (ebrowse-member-attribute-face, ebrowse-member-class-face) - (ebrowse-progress-face): - New backward-compatibility aliases for renamed faces. - (ebrowse-show-progress, ebrowse-show-file-name-at-point) - (ebrowse-set-mark-props, ebrowse-draw-tree-fn) - (ebrowse-draw-member-buffer-class-line, ebrowse-draw-member-long-fn) - (ebrowse-draw-member-short-fn): Use renamed ebrowse faces. - - * progmodes/antlr-mode.el (antlr-default, antlr-keyword, - antlr-syntax) - (antlr-ruledef, antlr-tokendef, antlr-ruleref, antlr-tokenref) - (antlr-literal): Remove "-face" suffix and "font-lock-" from face - names. - (antlr-font-lock-default-face, antlr-font-lock-keyword-face) - (antlr-font-lock-syntax-face, antlr-font-lock-ruledef-face) - (antlr-font-lock-tokendef-face, antlr-font-lock-ruleref-face) - (antlr-font-lock-tokenref-face, antlr-font-lock-literal-face): New - backward-compatibility aliases for renamed faces. - (antlr-default-face, antlr-keyword-face, antlr-syntax-face) - (antlr-ruledef-face, antlr-tokendef-face, antlr-ruleref-face) - (antlr-tokenref-face, antlr-literal-face): Variables renamed to - remove "font-lock-". Use renamed antlr-mode faces. - (antlr-font-lock-additional-keywords): Use renamed faces. Replace - literal face-names with face variable references. - - * buff-menu.el (Buffer-menu-buffer): Remove "-face" suffix from - face name. - (Buffer-menu-buffer-face): New backward-compatibility alias for - renamed face. - (list-buffers-noselect): Use renamed Buffer-menu-buffer face. - -2005-06-15 Daniel Pfeiffer - - * progmodes/make-mode.el (makefile-space, makefile-makepp-perl): - Eliminate "-face" suffix. - (makefile-targets): Inherit from font-lock-function-name-face and - eliminate "-face" suffix. - (makefile-shell): Remove attributes and eliminate "-face" suffix. - (makefile-*-font-lock-keywords): Append makefile-targets in rule - actions, instead of prepending, to make it less visible. - (makefile-previous-dependency, makefile-match-dependency): - Don't match a target on a continuation line. - - * files.el (auto-mode-alist): Put Makefile in gmake mode. - -2005-06-15 Nick Roberts - - * progmodes/gdb-ui.el (menu): Re-order menu items. - (gdb-tooltip-print): Respect tooltip-use-echo-area. - - * progmodes/gud.el (tooltip-use-echo-area): Remove alias. - Define in tooltip.el. - (gud-tooltip-process-output): Respect tooltip-use-echo-area. - (gud-tooltip-tips): Respect tooltip-use-echo-area and - gud-tooltip-echo-area. - - * tooltip.el (tooltip-use-echo-area): Restore from gud.el for - backward compatibility and make obsolete. - (tooltip-help-tips): Use tooltip-use-echo-area. - (tooltip-show-help-function): Rename to... - (tooltip-show-help): ...this, because it is a function. - (tooltip-mode, tooltip-help-message): Call tooltip-show-help. - -2005-06-14 Luc Teirlinck - - * emacs-lisp/edebug.el (edebug-all-defs, edebug-initial-mode) - (edebug-print-length, edebug-print-level, edebug-print-circle) - (edebug-modify-breakpoint, edebug-eval-last-sexp) - (edebug-eval-print-last-sexp): Doc fixes. - -2005-06-14 Kim F. Storm - - * ido.el (ido-mode): Make a new keymap every time we enable ido, - as the coverage buffer/file/both may change. - -2005-06-14 Lute Kamstra - - * net/ange-ftp.el (internal-ange-ftp-mode): Use delay-mode-hooks - and run-mode-hooks. Simplify. - - * mail/rmailedit.el (rmail-edit-mode): - * progmodes/octave-inf.el (inferior-octave-mode): - * progmodes/sql.el (sql-interactive-mode): Use delay-mode-hooks. - - * recentf.el (recentf-dialog-mode): Use kill-all-local-variables - and run-mode-hooks. - (recentf-edit-list, recentf-open-files): Don't call - kill-all-local-variables directly. - - * emacs-lisp/debug.el (debug-on-entry): Fix docstring. - -2005-06-14 Juanma Barranquero - - * emacs-lisp/byte-run.el (make-obsolete) - (define-obsolete-function-alias): Rename arguments FUNCTION and - NEW to OBSOLETE-NAME and CURRENT-NAME respectively. - (make-obsolete-variable, define-obsolete-variable-alias): - Rename arguments VARIABLE and NEW to OBSOLETE-NAME and CURRENT-NAME - respectively. - - * isearchb.el (isearchb-activate): - * pcvs.el (cvs-mode): - * ses.el (ses-load): - * vc-arch.el (vc-arch-checkin, vc-arch-diff): - * net/tramp.el (tramp-find-file-exists-command) - (tramp-find-shell): - * progmodes/ada-mode.el (ada-create-case-exception) - (ada-create-case-exception-substring, ada-make-subprogram-body): - * progmodes/idlw-shell.el (idlwave-shell-move-to-bp): - * progmodes/idlwave.el (idlwave-complete-class-structure-tag-help): - * progmodes/vhdl-mode.el (vhdl-speedbar-place-component): - * textmodes/org.el (org-promote, org-evaluate-time-range) - (org-agenda-next-date-line, org-agenda-previous-date-line) - (org-agenda-error, org-open-at-point, org-table-move-row) - (org-format-table-table-html-using-table-generate-source) - (org-shiftcursor-error, org-ctrl-c-ctrl-c): - * textmodes/reftex.el (reftex-access-scan-info): - * textmodes/reftex-toc.el (reftex-toc-dframe-p) - (reftex-toc-promote-prepare): Follow error conventions. - - * diff-mode.el (diff-mode): Fix typo in docstring. - - * forms.el (forms--intuit-from-file): Fix reference to - `forms-number-of-fields' in error message. - (forms-print): Fix quoting in error message. - - * forms.el (forms-mode): - * emulation/vi.el (vi-goto-insert-state): - * progmodes/flymake.el (flymake-new-err-info) - (flymake-start-syntax-check-for-current-buffer) - (flymake-simple-cleanup): - * eshell/esh-var.el (eshell/export): - * progmodes/gud.el (xdb): - * textmodes/flyspell.el (flyspell-incorrect-hook) - (flyspell-maybe-correct-transposition) - (flyspell-maybe-correct-doubling): Fix quoting in docstring. - -2005-06-13 Luc Teirlinck - - * emacs-lisp/debug.el (cancel-debug-on-entry): Mention default in - minibuffer prompt. - -2005-06-13 Kim F. Storm - - * subr.el (add-to-ordered-list): New defun. - - * emulation/cua-base.el (cua-mode): Use add-to-ordered-list to - add cua--keymap-alist to emulation-mode-map-alists. - -2005-06-13 Stefan Monnier - - * subr.el (complete-in-turn): New macro. - (dynamic-completion-table, lazy-completion-table): Add debug info. - - * faces.el (read-face-name): Use complete-in-turn complete non-aliases - in preference to face aliases. - - * textmodes/fill.el (fill-match-adaptive-prefix): New function. - (fill-context-prefix): Use it to avoid guessing absurdly long prefixes. - Remove unused vars `start' and `firstline'. - (fill-nobreak-p): Fix line-move-invisible -> line-move-invisible-p. - (justify-current-line, fill-individual-paragraphs): Remove unused vars. - -2005-06-13 Eli Zaretskii - - * cus-start.el (all): Don't complain about missing GTK-related - variables, unless either `gtk' is boundp or this isn't a - `windows-nt' build. - -2005-06-13 Lute Kamstra - - * abbrev.el (edit-abbrevs-mode): Use kill-all-local-variables and - run-mode-hooks. - - * ediff-mult.el (ediff-meta-mode): - * ediff-util.el (ediff-mode): Use run-mode-hooks. - - * ledit.el (ledit-mode): Use delay-mode-hooks. - - * woman.el (woman-mode-line-format): Delete constant. - (woman-mode-map): Initialize it properly. - (woman-mode): Set mode-class property to special. - Use delay-mode-hooks and run-mode-hooks. Use the right keymap. - Set major-mode and mode-name. Don't set mode-line-format directly. - (Man-getpage-in-background): Don't reference woman-mode-line-format. - - * emacs-lisp/debug.el (cancel-debug-on-entry): Make the empty - string argument obsolete. - -2005-06-13 Carsten Dominik - - * textmodes/org.el (org-CUA-compatible): New option. - (org-disputed-keys): New variable. - (org-key): New function. - (orgtbl-make-binding): Add docstring to the created function. - (org-mode): Set paragraph start/separate regexps. - (orgtbl-mode): Don't start `orgtbl-mode' in `org-mode' buffers. - (org-archive-location, org-archive-mark-done) - (org-archive-stamp-time): New options. - (org-archive-subtree): New command. - (org-fill-paragraph): New function. - (org-mode): Set `fill-paragraph-function' to `org-fill-paragraph'. - (org-fake-empty-table-line): Function removed. - (org-format-org-table-html): Do not create empty table lines at - separator lines. Improved table header treatment. - (org-link-format): New option. - (org-make-link): New function. - (org-insert-link, org-store-link): Use org-make-link. - (org-open-file): Quote file name for shell command, to allow - spaces in file names. - (org-link-regexp): Fix bug with mailto link. - (org-link-maybe-angles-regexp, org-protected-link-regexp): - New constants. - (org-export-as-html): Deal with the optional angles around a link. - Better treatment of file: links. - (org-open-at-point): Replace @{ and @} with < and >. - (org-run-mode-hooks): Function removed. - (org-agenda-mode): No longer use `org-run-mode-hooks'. - -2005-06-13 Nick Roberts - - * progmodes/gdb-ui.el (gdb-registers-mode): Let gdbmi use - MI command -data-list-register-values. - (gdb-post-prompt): Indent properly. - -2005-06-13 Juanma Barranquero - - * hilit-chg.el (highlight-changes-colors): Rename from - `highlight-changes-colours'. - (highlight-changes-colours): Keep as obsolete alias. - (highlight-changes-face-list): Doc fix. - (hilit-chg-make-list): Use `highlight-changes-colors'. - -2005-06-12 Mark A. Hershberger - - * progmodes/cperl-mode.el (cperl-mode): Remove stray paren in - defun-prompt-regexp. - -2005-06-12 Eli Zaretskii - - * loadup.el: Don't say we are dumping under 2 names on windows-nt - and cygwin. - - * makefile.w32-in (bootstrap-clean-CMD, bootstrap-clean-SH): - Don't use an old loaddefs.el, as in Makefile.in. - -2005-06-12 Lute Kamstra - - * Makefile.in (bootstrap-prepare): Don't use an old loaddefs.el. - - * man.el (Man-mode-map): Initialize it properly. - (Man-mode): Set mode-class property to special. - - * calendar/calendar.el (calendar-mode): Use run-mode-hooks. - -2005-06-11 Luc Teirlinck - - * menu-bar.el (menu-bar-make-toggle): Remove stray backslash. - A newline is needed in the docstring there. - - * emacs-lisp/debug.el (debug-on-entry, cancel-debug-on-entry): - Doc fixes. - -2005-06-11 Vinicius Jose Latorre - - * printing.el: Doc fix. The menubar is no more changed when printing - is loaded, it only changes when pr-menu-bind or pr-update-menus is - called. Now, the menubar changing will work in Emacs 20, 21 and 22. - (pr-version): New version number (6.8.4). - (pr-menu-bind): New command. - (pr-update-menus): Docstring and code fix. - (pr-menu-print-item): Now is a global var in Emacs and XEmacs. - Docstring fix. - (pr-txt-printer-alist, pr-ps-printer-alist, pr-gv-command) - (pr-gs-command, pr-gs-switches, pr-ps-utility-alist): Docstring fix. - -2005-06-11 Thien-Thi Nguyen - - * emacs-lisp/ewoc.el: Doc fixes for public funcs: - "Returns" to "return", document useful return values, etc. - -2005-06-11 Alan Mackenzie - - * fill.el (fill-context-prefix): Try `adaptive-fill-function' - BEFORE `adaptive-fill-regexp' when determining a fill prefix. - (adaptive-file-function): Minor amendment to doc-string. - -2005-06-11 Frederik Fouvry - - * thumbs.el (thumbs-per-line, thumbs-thumbsdir-max-size) - (thumbs-relief, thumbs-margin, thumbs-image-resizing-step): - Fix :type--it is `integer', not `string'. - - * faces.el (modeline-highlight): Rename from (the erroneous) - `modeline-higilight'. - -2005-06-11 Lute Kamstra - - * emacs-lisp/edebug.el (edebug-eval-mode-map): Don't copy - lisp-interaction-mode-map but make it the parent. - (edebug-eval-mode): Use define-derived-mode. - -2005-06-11 Andreas Schwab - - * bindings.el: Add binding of `ESC functionkey' for every - `M-functionkey'. - * hexl.el (hexl-mode-map): Likewise. - -2005-06-10 Michael Hotchin (tiny change) - - * progmodes/compile.el (compilation-error-regexp-alist-alist) - [msft]: update regexp for newer msft compilers. - -2005-06-10 Mark A. Hershberger - - * xml.el (start-chars, xml-parse-dtd): Add the ability to skip - ATTLIST portions of included DTDs. - (xml-parse-dtd): Eliminate use of inefficient match-data. - -2005-06-10 Miles Bader - - * play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial) - (mpuz-text): Remove "-face" suffix from face names. - (mpuz-unsolved-face, mpuz-solved-face, mpuz-trivial-face) - (mpuz-text-face): New backward-compatibility aliases for renamed faces. - (mpuz-create-buffer, mpuz-paint-digit): Use renamed mpuz faces. - - * play/gomoku.el (gomoku-O, gomoku-X): - Remove "-face" suffix from face names. - (gomoku-font-lock-O-face, gomoku-font-lock-X-face): - New backward-compatibility aliases for renamed faces. - (gomoku-font-lock-keywords): Use renamed gomoku faces. - -2005-06-10 Juanma Barranquero - - * thumbs.el: Fixes for changes of 2005-06-09. - (thumbs-thumbsdir): Force `thumbs-thumbsdir' to be interpretable - as a directory. - (thumbs-thumbname): Remove directory separator from format string; - `thumbs-thumbsdir' now returns a valid directory name. - (thumbs-temp-dir): New defsubst. - (thumbs-temp-file, thumbs-resize-image, thumbs-modify-image): - Use it. - - * cus-edit.el (minibuffer): - * files.el (make-backup-file-name-function): - * filesets.el (filesets-external-viewers): - * hilit-chg.el (highlight-changes-colours) - (highlight-changes-face-list, highlight-changes-rotate-faces): - * ielm.el (ielm-dynamic-return, inferior-emacs-lisp-mode): - * kmacro.el (kmacro-call-macro): - * log-edit.el (log-edit-changelog-full-paragraphs): - * mouse.el (mouse-1-click-follows-link): - * skeleton.el (skeleton-autowrap): - * subr.el (insert-for-yank-1): - * tempo.el (tempo-insert-region): - * terminal.el (terminal-emulator): - * time.el (display-time-mail-face): - * vc.el (vc-annotate): - * vcursor.el (vcursor-copy-line): - * woman.el (woman-bold-headings, woman-ignore) - (woman-default-faces, woman-monochrome-faces): - * calendar/todo-mode.el (todo-insert-threshold): - * emulation/pc-select.el (pc-select-selection-keys-only) - (pc-selection-mode): - * emulation/vip.el (vip-find-char-forward): - * emulation/viper-cmd.el (viper-find-char-forward): - * international/mule-cmds.el - (select-safe-coding-system-accept-default-p) - (input-method-exit-on-invalid-key): - * international/mule-diag.el (describe-coding-system): - * international/ucs-tables.el (unify-8859-on-encoding-mode): - * net/browse-url.el (browse-url-xterm-program): - * obsolete/lazy-lock.el (lazy-lock-mode): - * progmodes/cperl-mode.el (cperl-info-on-command-no-prompt) - (cperl-mode): - * progmodes/cpp.el (cpp-face-light-name-list) - (cpp-face-dark-name-list): - * progmodes/delphi.el (delphi-newline-always-indents): - Fix spellings in docstrings. - - * ido.el (ido-mode, ido-file-extensions-order) - (ido-default-file-method, ido-default-buffer-method) - (ido-max-prospects, ido-slow-ftp-hosts, ido-setup-hook) - (ido-decorations, ido-read-file-name-as-directory-commands) - (ido-read-file-name-non-ido, ido-work-directory-list) - (ido-ignore-item-temp-list, ido-current-directory) - (ido-magic-forward-char, ido-enter-find-file) - (ido-enter-switch-buffer, ido-visit-buffer, ido-switch-buffer) - (ido-find-file, ido-read-buffer): Fix typos in docstrings. - -2005-06-10 Lute Kamstra - - * play/dunnet.el (dun-mode): Use define-derived-mode. - (dungeon-mode-map): Rename to dun-mode-map. Keep old name as an - obsolete alias. - - * play/doctor.el (doctor-mode-map): Remove defvar. - (doctor-mode): Use define-derived-mode. - - * mail/mspools.el (mspools-mode): - * net/eudc-hotlist.el (eudc-hotlist-mode): - * play/blackbox.el (blackbox-mode): Use run-mode-hooks. - -2005-06-10 Miles Bader - - * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate): - Remove "-face" suffix from face names. - (flyspell-incorrect-face, flyspell-duplicate-face): - New backward-compatibility aliases for renamed faces. - (flyspell-mode-on, make-flyspell-overlay) - (flyspell-highlight-incorrect-region) - (flyspell-highlight-duplicate-region) - (flyspell-display-next-corrections) - (flyspell-auto-correct-previous-word): Use renamed flyspell faces. - - * textmodes/texinfo.el (texinfo-heading): Remove "-face" suffix - from face name. - (texinfo-heading-face): New backward-compatibility alias for - renamed face. - (texinfo-heading-face): Use renamed texinfo-heading face. - - * textmodes/tex-mode.el (tex-math, tex-verbatim): Remove "-face" - suffix from face names. - (tex-math-face, tex-verbatim-face): - New backward-compatibility aliases for renamed faces. - (tex-math-face, tex-verbatim-face): Use renamed tex-mode faces. - (tex-insert-quote): Use `tex-verbatim-face' variable instead of - literal face name. - - * textmodes/table.el (table-cell): Remove "-face" suffix from face - name. - (table-cell-face): New backward-compatibility alias for renamed face. - (table--put-cell-face-property, table--update-cell-face): - Use renamed table-cell face. - - * textmodes/sgml-mode.el (sgml-namespace): Remove "-face" suffix - from face name. - (sgml-namespace-face): New backward-compatibility alias for - renamed face. - (sgml-namespace-face): Use renamed sgml-namespace face. - - * textmodes/org.el (org-level-1, org-level-2, org-level-3) - (org-level-4, org-level-5, org-level-6, org-level-7) - (org-level-8, org-warning, org-headline-done) - (org-deadline-announce, org-scheduled-today) - (org-scheduled-previously, org-link, org-done, org-table) - (org-time-grid): Remove "-face" suffix from face names. - (org-level-1-face, org-level-2-face, org-level-3-face) - (org-level-4-face, org-level-5-face, org-level-6-face) - (org-level-7-face, org-level-8-face, org-warning-face) - (org-headline-done-face, org-deadline-announce-face) - (org-scheduled-today-face, org-scheduled-previously-face) - (org-link-face, org-done-face, org-table-face) - (org-time-grid-face): - New backward-compatibility aliases for renamed faces. - (org-level-faces, org-set-font-lock-defaults, org-timeline) - (org-agenda, org-agenda-get-todos, org-agenda-get-deadlines) - (org-agenda-get-timestamps, org-agenda-get-scheduled) - (org-agenda-add-time-grid-maybe, org-table-p): Use renamed org faces. - - * emulation/viper-init.el (viper-search, viper-replace-overlay) - (viper-minibuffer-emacs, viper-minibuffer-insert) - (viper-minibuffer-vi): Remove "-face" suffix from face names. - (viper-search-face, viper-replace-overlay-face) - (viper-minibuffer-emacs-face, viper-minibuffer-insert-face) - (viper-minibuffer-vi-face): - New backward-compatibility aliases for renamed faces. - (viper-search-face, viper-replace-overlay-face) - (viper-minibuffer-emacs-face, viper-minibuffer-insert-face) - (viper-minibuffer-vi-face): Use renamed viper faces. - - * emacs-lisp/testcover.el (testcover-nohits, testcover-1value): - Remove "-face" suffix from face names. - (testcover-nohits-face, testcover-1value-face): - New backward-compatibility aliases for renamed faces. - (testcover-mark): Use renamed testcover faces. - - * calendar/diary-lib.el (diary-button): Remove "-face" suffix from - face name. - (diary-button-face): New backward-compatibility alias for renamed face. - (diary-entry): Use renamed diary-button face. - - * calendar/calendar.el (diary, calendar-today, holiday) - (mark-visible-calendar-date): Remove "-face" suffix from face names. - (diary-face, calendar-today-face, holiday-face): - New backward-compatibility aliases for renamed faces. - (eval-after-load "facemenu", diary-entry-marker) - (calendar-today-marker, calendar-holiday-marker, diary-face): - Use renamed calendar faces. - - * compare-w.el (compare-windows): Remove "-face" suffix from face name. - (compare-windows-face): New backward-compatibility alias for - renamed face. - (compare-windows-highlight): Use renamed compare-windows face. - - * strokes.el (strokes-char): Remove "-face" suffix from face name. - (strokes-char-face): New backward-compatibility alias for renamed face. - (strokes-encode-buffer): Use renamed strokes-char face. - - * pcvs-info.el (cvs-header, cvs-filename, cvs-unknown) - (cvs-handled, cvs-need-action, cvs-marked, cvs-msg): - Remove "-face" suffix from face names. - (cvs-header-face, cvs-filename-face, cvs-unknown-face) - (cvs-handled-face, cvs-need-action-face, cvs-marked-face) - (cvs-msg-face): New backward-compatibility aliases for renamed faces. - (cvs-fi-up-to-date-face, cvs-fi-unknown-face, cvs-fileinfo-pp): - Use renamed pcvs faces. - * pcvs.el (cvs-mode-find-file): Use renamed pcvs faces. - * pcvs-defs.el (cvs-mode-map): Likewise. - * cvs-status.el (cvs-status-font-lock-keywords): Likewise. - - * info.el (info-title-1, info-title-2, info-title-3) - (info-title-4): Remove "-face" suffix from and downcase face names. - (Info-title-1-face, Info-title-2-face, Info-title-3-face) - (Info-title-4-face): - New backward-compatibility aliases for renamed faces. - (Info-fontify-node): Use renamed info faces. - - * hilit-chg.el (highlight-changes, highlight-changes-delete): - Remove "-face" suffix from face names. - (highlight-changes-face, highlight-changes-delete-face): - New backward-compatibility aliases for renamed faces. - (hilit-chg-cust-fix-changes-face-list, hilit-chg-make-ov) - (hilit-chg-make-list): Use renamed highlight-changes faces. - - * generic-x.el (show-tabs-tab, show-tabs-space): - Remove "-face" suffix from face names. - (show-tabs-tab-face, show-tabs-space-face): - New backward-compatibility aliases for renamed faces. - (show-tabs-generic-mode-font-lock-defaults-1) - (show-tabs-generic-mode-font-lock-defaults-2): - Use renamed show-tabs faces. - - * smerge-mode.el (smerge-mine, smerge-other, smerge-base) - (smerge-markers): Remove "-face" suffix from face names. - (smerge-mine-face, smerge-other-face, smerge-base-face) - (smerge-markers-face): - New backward-compatibility aliases for renamed faces. - (smerge-mine-face, smerge-other-face, smerge-base-face) - (smerge-markers-face): Use renamed smerge faces. - - * log-view.el (log-view-file, log-view-message): Remove "-face" - suffix from face names. - (log-view-file-face, log-view-message-face): - New backward-compatibility aliases for renamed faces. - (log-view-file-face, log-view-message-face): Use renamed log-view - faces. - - * paren.el (show-paren-match, show-paren-mismatch): - Remove "-face" suffix from face names. - (show-paren-match-face, show-paren-mismatch-face): - New backward-compatibility aliases for renamed faces. - (show-paren-function): Use renamed show-paren faces. - - * ruler-mode.el (ruler-mode-default, ruler-mode-pad) - (ruler-mode-margins, ruler-mode-fringes) - (ruler-mode-column-number, ruler-mode-fill-column) - (ruler-mode-comment-column, ruler-mode-goal-column) - (ruler-mode-tab-stop, ruler-mode-current-column): Remove "-face" - suffix from face names. - (ruler-mode-default-face, ruler-mode-pad-face) - (ruler-mode-margins-face, ruler-mode-fringes-face) - (ruler-mode-column-number-face, ruler-mode-fill-column-face) - (ruler-mode-comment-column-face, ruler-mode-goal-column-face) - (ruler-mode-tab-stop-face, ruler-mode-current-column-face): - New backward-compatibility aliases for renamed faces. - (ruler-mode-pad, ruler-mode-margins, ruler-mode-fringes) - (ruler-mode-column-number, ruler-mode-fill-column) - (ruler-mode-comment-column, ruler-mode-goal-column) - (ruler-mode-tab-stop, ruler-mode-current-column) - (ruler-mode-mouse-grab-any-column, ruler-mode-ruler): Use renamed - faces. - - * whitespace.el (whitespace-highlight): Remove "-face" suffix from - face name. - (whitespace-highlight-the-space): Use renamed face. - (whitespace-highlight-face): New backward-compatibility alias for - renamed face. - - * woman.el (woman-italic, woman-bold, woman-unknown) - (woman-addition, woman-symbol-face): - Remove "-face" suffix from face names. - (woman-italic-face, woman-bold-face, woman-unknown-face) - (woman-addition-face): - New backward-compatibility aliases for renamed faces. - (woman-default-faces, woman-monochrome-faces, woman-man-buffer) - (woman-decode-region, woman-replace-match) - (woman-display-extended-fonts, woman-special-characters) - (woman-font-alist, woman-change-fonts, woman2-TH, woman2-SH): - Use renamed woman faces. - - * longlines.el (longlines-visible-face): Face removed. - - * diff-mode.el (diff-header, diff-file-header, diff-index) - (diff-hunk-header, diff-removed, diff-added, diff-changed) - (diff-function, diff-context, diff-nonexistent): Remove "-face" - suffix from face names. - (diff-header-face, diff-file-header-face, diff-index-face) - (diff-hunk-header-face, diff-removed-face, diff-added-face) - (diff-changed-face, diff-function-face, diff-context-face) - (diff-nonexistent-face): New backward-compatibility aliases for - renamed faces. - (diff-header-face, diff-file-header-face) - (diff-index, diff-index-face, diff-hunk-header) - (diff-hunk-header-face, diff-removed, diff-removed-face) - (diff-added, diff-added-face, diff-changed-face, diff-function) - (diff-function-face, diff-context-face, diff-nonexistent) - (diff-nonexistent-face): Use renamed diff-mode faces. - - * progmodes/compile.el (compilation-warning-face) - (compilation-info-face): Remove "-face" suffix from face names. - (compilation-warning-face, compilation-info-face): - New backward-compatibility aliases for renamed faces. - (compilation-warning-face, compilation-info-face): - Use renamed compilation faces. - - * add-log.el (change-log-date, change-log-name) - (change-log-email, change-log-file, change-log-list) - (change-log-conditionals, change-log-function) - (change-log-acknowledgement): Remove "-face" suffix from face names. - (change-log-date-face, change-log-name-face) - (change-log-email-face, change-log-file-face) - (change-log-list-face, change-log-conditionals-face) - (change-log-function-face, change-log-acknowledgement-face): - New backward-compatibility aliases for renamed faces. - (change-log-font-lock-keywords): Use renamed change-log faces. - - * cus-edit.el (custom-invalid, custom-rogue, custom-modified) - (custom-set, custom-changed, custom-saved, custom-button) - (custom-button-pressed, custom-documentation, custom-state) - (custom-comment, custom-comment-tag, custom-variable-tag) - (custom-variable-button, custom-face-tag, custom-group-tag-1) - (custom-group-tag): Remove "-face" suffix from face names. - (custom-magic-alist, custom-magic-value-create) - (custom-group-sample-face-get, custom-mode): Use renamed custom faces. - (custom-invalid-face, custom-rogue-face, custom-modified-face) - (custom-set-face, custom-changed-face, custom-saved-face) - (custom-button-face, custom-button-pressed-face) - (custom-documentation-face, custom-state-face) - (custom-comment-face, custom-comment-tag-face) - (custom-variable-tag-face, custom-variable-button-face) - (custom-face-tag-face, custom-group-tag-face-1) - (custom-group-tag-face): - New backward-compatibility aliases for renamed faces. - - * wid-edit.el (widget-documentation, widget-button) - (widget-field, widget-single-line-field, widget-inactive) - (widget-button-pressed): "-face" suffix removed from face names. - (widget-documentation-face, widget-button-face) - (widget-field-face, widget-single-line-field-face) - (widget-inactive-face, widget-button-pressed-face): - New backward-compatibility aliases for renamed faces. - (widget-documentation-face, widget-button-face) - (widget-button-pressed-face, widget-specify-field) - (widget-specify-inactive): Use renamed widget faces. - -2005-06-10 Kenichi Handa - - * term/x-win.el (x-clipboard-yank): Remove condition-case - wrapping. - -2005-06-11 Kenichi Handa - - * add-log.el (change-log-font-lock-keywords): Make the regexp for - date lines stricter. - -2005-06-10 Zhang Wei - - * term/x-win.el (x-clipboard-yank): Use x-selection-value instead - of x-get-selection. - -2005-06-10 Juanma Barranquero - - * comint.el (comint-mode, comint-snapshot-last-prompt): - * frame.el (frame-current-scroll-bars): - * term.el (term-mode, term-check-proc, term-input-sender) - (term-simple-send, term-extract-string, term-word) - (term-match-partial-filename): - * window.el (window-current-scroll-bars): - * emulation/cua-base.el (cua-normal-cursor-color) - (cua-read-only-cursor-color, cua-overwrite-cursor-color) - (cua-global-mark-cursor-color): - * mail/undigest.el (rmail-forward-separator-regex): - Fix typos in docstrings. - - * comint.el (comint-check-proc, make-comint-in-buffer) - (comint-source-default): Doc fixes. - - * term.el (term-send-string): Improve argument/docstring consistency. - -2005-06-09 Luc Teirlinck - - * comint.el (comint-send-input): Bind `inhibit-read-only' around - call to `delete-region'. - (comint-mode-hook): Do not enable Font Lock by default. - -2005-06-09 Lute Kamstra - - * textmodes/ispell.el (ispell-menu-map-needed): flyspell-mode - could be void. - -2005-06-09 Stefan Monnier - - * emacs-lisp/debug.el (debugger-will-be-back): New var. - (debug): Use it. - (debugger-step-through, debugger-continue, debugger-jump) - (debugger-return-value): Set it when needed. - (debugger-make-xrefs, debugger-frame, debugger-frame-clear): - Use inhibit-read-only. - -2005-06-09 Juanma Barranquero - - * window.el (shrink-window-if-larger-than-buffer) - (window-size-fixed): Fix typo in docstring. - - * thumbs.el: Don't set `auto-image-file-mode'. Do not create the - thumbnails directory on loading. - (thumbs-conversion-program): Use `eq' to check the system type, - not `equal'. - (thumbs-temp-dir): Initialize to `temporary-file-directory', - not "/tmp". Fix docstring. - (thumbs-thumbsdir): New function to return the thumbnails - directory, creating it if needed. - (thumbs-cleanup-thumbsdir, thumbs-thumbname): Use it. - (thumbs-temp-file): Delete variable and make it into a function. - (thumbs-resize-image, thumbs-modify-image): Use it. - (thumbs-kill-buffer): Simplify. - (thumbs-gensym): Defalias or duplicate CL `gensym'. - (thumbs-resize-image, thumbs-resize-interactive): Fix typos in - docstrings. - -2005-06-09 Kim F. Storm - - * subr.el (save-match-data): Add RESEAT arg `evaporate' to - set-match-data to free markers in match-data. - - * replace.el (replace-match-data): Pass RESEAT arg `t' to - match-data to unchain markers in match-data. - -2005-06-08 Stefan Monnier - - * emacs-lisp/debug.el (debug): Don't iconify if we know we'll re-enter - the debugger immediately anyway. Undo the 2005-06-06 change, rendered - unnecessary now. - -2005-06-08 Richard M. Stallman - - * emacs-lisp/easy-mmode.el (define-minor-mode): If BODY is empty, - give the variable a doc string that doesn't say don't set it directly. - - * textmodes/ispell.el (ispell-check-version): - Use match-string-no-properties. - (ispell-region, ispell-buffer-local-parsing, ispell-buffer-local-dict) - (ispell-buffer-local-words): Likewise. - - * progmodes/make-mode.el (makefile-shell-face): Make this a no-op - except on terminals with enough colors to really display it. - (makefile-dependency-regex): Delete spurious `bb'. - - * faces.el (escape-glyph): Use blue once again in last case. - (no-break-space): Redefine so that it isn't invisible on a tty. - -2005-06-08 Kim F. Storm - - * ido.el (ido-read-file-name): Fallback to read-file-name on C-f - also when reading directory name. - -2005-06-08 Lute Kamstra - - * textmodes/flyspell.el (flyspell-mode): Use define-minor-mode. - (flyspell-mode-line-string): Remove autoload cookie. - (flyspell-mode): Remove defvar. - -2005-06-07 Lute Kamstra - - * textmodes/org.el (org-run-mode-hooks): New function. - (org-agenda-mode): Use it. - -2005-06-07 David McCabe (tiny change) - - * emacs-lisp/lisp-mode.el (defstruct): Set `doc-string-elt' property. - -2005-06-06 Stefan Monnier - - * international/iso-cvt.el (iso-sgml2iso-trans-tab): Add NBSP. - -2005-06-06 Luc Teirlinck - - * font-lock.el (font-lock-add-keywords): Doc fix. - -2005-06-06 Stefan Monnier - - * textmodes/tex-mode.el (tex-guess-mode): Add RequirePackage. - (tex-compile-default): In the absence of any history, use the order in - tex-compile-alist to choose the preferred command. - (tex-compile-commands): Reorder a bit. - - * textmodes/flyspell.el (flyspell-auto-correct-binding) - (flyspell-incorrect-face, flyspell-duplicate-face): - Use (X)Emacs-agnostic code. - (flyspell-mode-map): Don't overwrite at each load. Remove code - redundant with the subsequent add-minor-mode. Merge Emacs and - XEmacs code. - (flyspell-word): Minor simplification. - (flyspell-math-tex-command-p): Quieten the byte-compiler. - (flyspell-external-point-words): Remove unused vars `size' and `start'. - (flyspell-do-correct): Rename from flyspell-xemacs-correct. - Merge the corresponding Emacs code. - (flyspell-correct-word, flyspell-xemacs-popup): - Use flyspell-do-correct. - - * emacs-lisp/debug.el (debug): Don't bury the buffer unless it's in - a dedicated window. - - * international/latexenc.el (latexenc-find-file-coding-system): - Undo part of last patch, to turn off a compiler warning. - -2005-06-06 Juri Linkov - - * tmm.el (tmm-inactive, tmm-remove-inactive-mouse-face): - Rename `tmm-inactive-face' to `tmm-inactive'. - -2005-06-06 Matt Hodges - - * iswitchb.el: Rename faces. - -2005-06-06 Kim F. Storm - - * emulation/cua-base.el (cua-rectangle, cua-rectangle-noselect) - (cua-global-mark): Remove -face suffix from face names. - - * emulation/cua-gmrk.el (cua--init-global-mark): - Remove cua-global-mark face setup. - -2005-06-06 Richard M. Stallman - - * progmodes/make-mode.el (makefile-dependency-regex): Handle whitespace - just like other allowed characters. - (makefile-match-dependency): Exclude leading and training whitespace - from the range of regexp subexp 1. - (makefile-macroassign-regex): Don't try to match the body, - just the name of the macro being defined. - - * info.el (Info-read-node-name-2): New function. - (Info-read-node-name-1): Use that. - Add a completion-base-size-function property. - - * simple.el (completion-setup-function): Look for - completion-base-size-function property of minibuffer-completion-table. - - * files.el (locate-file-completion): Doc fix. - - * printing.el: Don't call pr-update-menus; user must do that. - - * emacs-lisp/debug.el (debugger-window): New variable. - (debug): Use debugger-window if it is set and still alive. - Record debugger-window for next entry. - - * mail/supercite.el (sc-mail-glom-frame): Mark as risky. - -2005-06-06 Matthias F,Av(Brste - - * files.el (hack-local-variables-confirm): New arg FLAG-TO-CHECK. - (hack-one-local-variable, hack-local-variables) - (hack-local-variables-prop-line): Pass that arg. - -2005-06-06 Kim F. Storm - - * ido.el (ido-first-match, ido-only-match, ido-subdir) - (ido-indicator): Remove -face suffix from face names. - -2005-06-06 Juri Linkov - - * font-lock.el (font-lock-regexp-backslash) - (font-lock-regexp-backslash-construct): New faces. - (lisp-font-lock-keywords-2): Use new faces. Match `?:' only - after `('. Add `while-no-input' to control structures. - - * faces.el (no-break-space, shadow): New faces. - (escape-glyph): Use less loud colors pink2 and red4. - - * diff-mode.el (diff-context-face) - * dired.el (dired-ignored) - * rfn-eshadow.el (file-name-shadow) - * tmm.el (tmm-inactive-face): Inherit from `shadow' face. - - * info.el (Info-title-1-face): Use green instead of yellow because - bold yellow is not readable on light backgrounds. - - * progmodes/compile.el (compilation-start): Move `erase-buffer' up - before selecting the desired mode to not spend time fontifying - old contents. - -2005-06-06 Juanma Barranquero - - * thumbs.el (thumbs-thumbsdir-max-size, thumbs-image-resizing-step) - (thumbs-thumbsdir-auto-clean): Fix typos in docstrings. - - * ps-print.el (ps-default-fg, ps-default-bg): - Fix typos in docstrings. - - * isearchb.el (isearchb): Don't pass a spurious second argument to - `iswitchb-completions'. - -2005-06-05 Nick Roberts - - * progmodes/gdb-ui.el (gdb-info-locals-handler): Use window point - to preserve point. - (gdb-find-file-hook): Add doc string. - - * progmodes/gud.el (gdb, gud-menu-map): Add command to evaluate - C dereferenced pointer expression. - (gud-tool-bar-map): Put it on the tool bar. Re-order icons. - - * toolbar/gud-pstar.xpm, toolbar/gud-pstar.pbm: New files. - - * toolbar/gud-break.xpm, toolbar/gud-cont.xpm, toolbar/gud-down.xpm - * toolbar/gud-finish.xpm, toolbar/gud-ni.xpm, toolbar/gud-n.xpm - * toolbar/gud-print.xpm, toolbar/gud-remove.xpm, toolbar/gud-run.xpm - * toolbar/gud-si.xpm, toolbar/gud-s.xpm, toolbar/gud-until.xpm - * toolbar/gud-up.xpm, toolbar/gud-watch.xpm: - Make background transparent. - -2005-06-04 Luc Teirlinck - - * font-lock.el (font-lock-add-keywords): Doc fix. Comment change. - (font-lock-remove-keywords): Doc fix. - (font-lock-mode-major-mode): Compiler defvar. - (font-lock-set-defaults): Use `font-lock-mode-major-mode'. - - * font-core.el (font-lock-mode-major-mode): Compiler defvar. - (font-lock-mode): Update `font-lock-mode-major-mode'. - (font-lock-set-defaults): Compiler defvar. - (font-lock-default-function): Take `font-lock-mode-major-mode' - into account. - - * emacs-lisp/easy-mmode.el (define-global-minor-mode): Make it - keep track of which major mode it enabled the minor mode for. - Use find-file-hook again. Update docstring. - - * simple.el (eval-expression-print-level) - (eval-expression-print-length, eval-expression-debug-on-error): - Doc fixes. - -2005-06-04 Matt Hodges - - * iswitchb.el (iswitchb-single-match-face) - (iswitchb-current-match-face, iswitchb-virtual-matches-face) - (iswitchb-invalid-regexp-face): New faces. - (iswitchb-completions): Use them. - (iswitchb-use-faces): Rename from iswitchb-use-fonts, which is - now marked as an obsolete alias. - (iswitchb-read-buffer): Remove check for bound font variables. - (iswitchb-invalid-regexp): New free variable. - (iswitchb-get-matched-buffers): Catch invalid-regexp errors and - set iswitchb-invalid-regexp. - (iswitchb, iswitchb-complete, iswitchb-completions): Deal with - invalid regexps. - (iswitchb-completions): Add check for complete match when entering - a regexp. - (iswitchb-completions): Remove require-match argument. - (iswitchb-exhibit): Fix caller. - (iswitchb-common-match-inserted): New variable. - (iswitchb-complete, iswitchb-completion-help): Use it. - -2005-06-04 David Reitter (tiny change) - - * url-http.el (url-http-chunked-encoding-after-change-function): - Use `url-http-debug' instead of `message'. - -2005-06-04 Thierry Emery (tiny change) - - * url-http.el (url-http-parse-headers): Pass redirected URL as a - callback argument. - -2005-06-04 Kim F. Storm - - * simple.el (line-move): Only call sit-for when moving backwards. - - * ido.el (ido-make-merged-file-list-1): New defun split from - ido-make-merged-file-list. - (ido-make-merged-file-list): Bind throw-on-input around call to - ido-make-merged-file-list-1. Return input-pending-p if - interrupted by more input available. - (ido-read-internal): Handle input-pending-p return value from - ido-make-merged-file-list. - -2005-06-03 Stefan Monnier - - * textmodes/flyspell.el (flyspell-check-word-p): Simplify silly - compatibility code. - - * international/latexenc.el (latexenc-find-file-coding-system): - Don't inherit the EOL part of the coding-system from the - tex-main buffer. Fit within 80 columns. - -2005-06-03 Matt Hodges - - * tmm.el (tmm-inactive-face): New face. - (tmm-remove-inactive-mouse-face): New function. - (tmm-prompt, tmm-add-one-shortcut) - (tmm-add-prompt, tmm-get-keymap): Make active menu items visible - but not selectable. - -2005-06-03 Juanma Barranquero - - * faces.el (face-equal): Improve argument/docstring consistency. - -2005-06-03 Daniel Pfeiffer - - * progmodes/make-mode.el (makefile-targets-face) - (makefile-shell-face, makefile-makepp-perl-face): Add :version. - (makefile-bsdmake-dependency-regex) - (makefile-makepp-rule-action-regex) - (makefile-bsdmake-rule-action-regex): New constants. - (makefile-makepp-mode, makefile-bsdmake-mode): Use them. - - * progmodes/compile.el (compilation-error-regexp-alist-alist): - Allow (...) within `...' for makepp messages. - -2005-06-03 Michael Kifer - - * ediff-diff.el (ediff-same-contents): Eliminate CL-type functions. - - * ediff-mult.el (ediff-intersect-directories): Make sure that ".." and - "." files are deleted from all file lists before comparison. - - * viper-keym.el (viper-toggle-key, viper-quoted-insert-key) - (viper-ESC-key): Made them customizable. - - * viper.el (viper-non-hook-settings): Fix the names of defadvices. - -2005-06-01 Luc Teirlinck - - * autorevert.el (auto-revert-buffers): Use save-match-data. - -2005-06-01 Stefan Monnier - - * emacs-lisp/easymenu.el (easy-menu-return-item): Quick fix to find - menu items with a nil command binding. - -2005-06-01 Juanma Barranquero - - * emacs-lisp/cl-macs.el (defsetf): - Improve argument/docstring consistency. - - * faces.el (list-faces-display): Improve the formatting by - computing the maximum length required for any face-name (reworked - patch of 1999-01-11, accidentally deleted on 1999-07-21). - (internal-find-face): Remove redundant info in docstring. - -2005-06-01 Nick Roberts - - * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-1) - (gdb-info-breakpoints-custom, gdb-delete-breakpoint) - (gdb-goto-breakpoint, gdb-source-info, gdb-get-location) - (gdb-assembler-custom): Improve regexps. - (def-gdb-auto-update-handler): Use window point to preserve point. - -2005-05-31 Stefan Monnier - - * thumbs.el (thumbs-mode): Fix misuse of make-variable-buffer-local. - -2005-05-31 Jay Belanger - - * calc/calc-embed.el (calc-embedded-word): Change argument passed - to calc-embedded. - (calc-embedded-make-info): Have plain prefix argument select - entire line. - -2005-05-31 Juanma Barranquero - - * faces.el (list-faces-display): Signal error if passed a regexp - that matches no face name. - - * simple.el (filter-buffer-substring): Fix typo in docstring. - -2005-05-31 Richard M. Stallman - - * progmodes/vhdl-mode.el (vhdl-fill-region): Test ARG, not INTERACTIVE. - (vhdl-emacs-21): Doc fix. - (vhdl-mode): Unconditionally set comment-padding. - (vhdl-fixup-whitespace-region): Insert spaces only where - there are none. - (vhdl-statistics-buffer): Make the Emacs 21 behavior universal. - -2005-05-30 John Wiegley + * vc.el: Workfile version -> focus version change. Port various + comments from new VC to reduce the noise in the diff. + Patch in the new vc-create-repo function to go with the + header comment about it already present. + There are no changes to existing logic in this patch. + (vc-revert-buffer1): Rename to vc-revert-buffer-internal. - * eshell/em-cmpl.el, eshell/em-dirs.el, eshell/em-glob.el - * eshell/em-unix.el, eshell/esh-ext.el, eshell/esh-io.el - * eshell/esh-util.el, eshell/esh-var.el: Change all uses of - `directory-sep-char' to ?/, and all uses of `string-to-int' to - `string-to-number'. +2007-10-06 Aaron Hawley -2005-05-30 Jay Belanger + * autoinsert.el (auto-insert-alist): Add a Texinfo entry. - * calc/calc.el (calc-bug-address): Fix docstring. - (calc-window-hook, calc-trail-window-hook): New variables. - (calc-trail-display): Restore use of calc-trail-window-hook. - (calc): Restore use of calc-window-hook. - -2005-05-31 Masatake YAMATO - - * emacs-lisp/find-func.el (find-function-noselect): Handle subroutines. - - * help-fns.el (help-C-file-name): Add autoload mark for - `find-function-noselect'. - -2005-05-30 Stefan Monnier - - * textmodes/tex-mode.el (tex-compile-commands, tex-compile) - (tex-start-tex): Undo all but the last part of the 2005-05-28 change. - -2005-05-30 Glenn Morris - - * calendar/diary-lib.el (mark-included-diary-files): Only kill - included diary buffer if it was not already being visited. - Reported by Stephen Berman . - - * calendar/icalendar.el (top-level): Do not require appt. - - * mail/supercite.el (sc-select-attribution): Only use a list - element from sc-attrib-selection-list if it returns a string. - Reported by Davide G. M. Salvetti . - -2005-05-30 Juanma Barranquero - - * thumbs.el (thumbs-thumbname): The resulting thumbname now - includes a hash value to improve its uniqueness, and has a ".jpg" - extension. Also, it is now a valid filename on all systems. - (thumbs-make-thumb): Use `let', not `let*'. - (thumbs-show-thumbs-list): Check for JPEG availability. - -2005-05-30 Richard M. Stallman - - * filesets.el (filesets-menu-ensure-use-cached): - Prevent warning when emacs-version>= is undefined. - - * printing.el (pr-interactive-n-up): Use string-to-number. - - * emulation/tpu-mapper.el: Use eval-buffer, not eval-current-buffer. - - * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn): - Warn only when name to be defined is quoted. - -2005-05-30 Nick Roberts - - * progmodes/gdb-ui.el (gdb-toggle-breakpoint): - Make regexp more robust. - (gdb-display-assembler-buffer, gdb-frame-assembler-buffer): - Force regeneration of disassembly. - -2005-05-29 Jay Belanger - - * calc/calc.el (calc-user-invocation): Check if - calc-invocation-macro is non-nil. - -2005-05-29 Juri Linkov - - * add-log.el (change-log-font-lock-keywords): - Add `+' to e-mail regexp to accept mail address with keywords. - - * man.el (Man-name-regexp): Add `:' to accept qualified names. - -2005-05-29 Luc Teirlinck - - * progmodes/inf-lisp.el (inferior-lisp-mode): Use delay-mode-hooks. - - * ielm.el (inferior-emacs-lisp-mode): Ditto. - -2005-05-29 Richard M. Stallman - - * textmodes/flyspell.el (flyspell-auto-correct-previous-word): - Undo the change that moves to end of the current word. - -2005-05-29 Nick Roberts - - * progmodes/gdb-ui.el (gdb-memory-set-repeat-count): - Throw error when count <= 0 to ensure input is a number. - (gdb-read-memory-custom): Pick up address from buffer. - (gdb-memory-mode): Allow user to increment and decrement - memory address from header line. - -2005-05-29 Richard M. Stallman - - * flyspell.el (flyspell-version): Function deleted. - (flyspell-auto-correct-previous-hook): Doc fix. - - * jit-lock.el (jit-lock-function, jit-lock-after-change): - Do nothing if memory is full. - - * font-lock.el (font-lock-fontify-syntactically-region): - Pass t for GREEDY to looking-back. - - * saveplace.el (save-place-alist-to-file): Write the file - using write-region. - - * subr.el (looking-back): New argument GREEDY. - - * progmodes/compile.el (compilation-start): Set the mode - before inserting the initial text. - - * progmodes/which-func.el (which-func-update-1): Turn the mode - off in case of error by setting which-func-mode. - -2005-05-29 Peter Heslin (tiny change) - - * flyspell.el (flyspell-auto-correct-previous-word): - Narrow down to what's on the screen, and recenter overlays - at the end of the next word. - -2005-05-29 Manuel Serrano - - * flyspell.el (flyspell-emacs, flyspell-use-local-map): Vars moved up. - (flyspell-default-delayed-commands): Add backward-delete-char-untabify. - (flyspell-abbrev-p): Default to nil. - (flyspell-use-global-abbrev-table-p): Doc fix. - (flyspell-large-region): Allow nil as value. - (flyspell-use-meta-tab, flyspell-auto-correct-binding): New variables. - - (mail-mode-flyspell-verify): More robust handling - of `mail-header-separator'. More efficient signature detection. - Allow for regexp metacharacters in message-header-separator. - Adding `To' not to be checked in mail-mode-flyspell-verify. - - (flyspell-prog-mode): Run flyspell-prog-mode-hook. - (flyspell-mouse-map): Bind M-TAB only if flyspell-use-meta-tab. - Bind flyspell-auto-correct-binding. - Bind C-. and C-, . - (flyspell-mode-map): Likewise. - (flyspell-mode): Doc fix. - (flyspell-accept-buffer-local-defs): Preserve current buffer. - (flyspell-mode-on): Bind flyspell-mouse-map and flyspell-mode-map. - (flyspell-word-cache-result): New var, always local. - (flyspell-check-pre-word-p): Doc fix. - (flyspell-check-changed-word-p): Handle spc like newline. - (flyspell-post-command-hook): Set flyspell-word-cache-result. - (flyspell-word-search-backward, flyspell-word-search-forward): - New functions. - (flyspell-word): Return t if nothing to check. - When parsing TeX code, check for after } or \. - Use flyspell-word-search-backward to find previous word. - Return nil if duplicated word. - For word already checked, return same value as last time. - Set flyspell-word-cache-result after checking. - Don't clobber the return value. - (flyspell-get-word): Major rewrite. - (flyspell-external-point-words): New locals pword, pcount. - Fix size used in progress message. - Find the proper corresponding word in flyspell-large-region-buffer. - (flyspell-region): Check for flyspell-large-region = nil. - (flyspell-highlight-incorrect-region): Clean up overlays in region. - (flyspell-auto-correct-word): Check that WORD is a cons. - (flyspell-correct-word): Likewise. - -2005-05-29 Daniel Pfeiffer - - * progmodes/make-mode.el (makefile-rule-action-regex) - (makefile-macroassign-regex, makefile-makepp-mode) - (makefile-bsdmake-mode): Continuation lines may be empty. - Reported by Joshua Varner. - (makefile-makepp-font-lock-keywords): Add $(stem). - -2005-05-28 Karl Berry - - * textmodes/tex-mode.el: Now that tex-send-command calls - shell-quote-argument (2005-03-31 change), remove all calls to - shell-quote-argument; they all end up invoking tex-send-command. - The double quoting loses on filenames with non-safe characters, - such as "@". Reported by Frederik Fouvry. - -2005-05-29 Nick Roberts - - * progmodes/gdb-ui.el (gdb-assembler-custom): Be more careful - about preserving point. - -2005-05-27 Jay Belanger - - * calc/calc-misc.el (calc-info-goto-node): Use info instead of - Info-goto-node. - - * calc/calc-embed.el (calc-embed-arg): New variable. - (calc-do-embedded-activate, calc-embedded-activate-formula) - (calc-embedded-edit, calc-do-embedded-activate): Replace undeclared - variable by new variable. - (calc-embedded-make-info): Replace undeclared variable by new - variable. When selecting region with positive prefix - argument, use end of previous line instead of beginning of line. - - * calc/calc-aent.el (calc-arg-values): Declare it. - - * calc/calc-ext.el (calc-help-map, calc-alg-map, calc-alg-esc-map): - Declare them. - - * calc/calc-stuff.el (math-decls-cache-tag): Declare it. - - * calc/calc.el (calc-alg-map): Declare it. - - * calc/calcalg2.el (math-decls-cache, math-decls-all): Declare them. - -2005-05-28 Nick Roberts - - * progmodes/gdb-ui.el (gdb-all-registers): New variable. - (gdb-registers-buffer, toggle-gdb-all-registers): - Toggle display of floating point registers. - (gdb-registers-mode-map): Bind SPC to toggle-gdb-all-registers. - - * progmodes/gud.el (gud-goto-info): Use info. Don't use require. - (toggle-gud-tooltip-dereference): - Rename from gud-toggle-tooltip-dereference. - -2005-05-27 Stefan Monnier - - * info.el (Info-goto-node): Revert autoload addition (2004-06-12). - -2005-05-27 Jay Belanger - - * calc/calc-prog.el (calc-kbd-report): Remove. - (calc-kbd-query): Rewrite. - -2005-05-27 Juanma Barranquero - - * image.el (image-library-alist): Move to image.c. - (image-type-available-p): Doc fix. - -2005-05-27 Lute Kamstra - - * calc/calc.el (calc): - * outline.el (outline-1, outline-2, outline-3, outline-4) - (outline-5, outline-6, outline-7, outline-8): - * textmodes/dns-mode.el (dns-mode): - * textmodes/sgml-mode.el (sgml-namespace-face): - * textmodes/tex-mode.el (superscript, subscript, tex-math-face) - (tex-verbatim-face, tex-use-reftex): - * textmodes/texinfo.el (texinfo-heading-face): - Specify customization group. - - * longlines.el: Don't require easy-mmode. - (longlines-visible-face): Specify customization group. - -2005-05-27 Kenichi Handa - - * language/cyrillic.el: Add cyrillic-iso8859-5 characters in the - encoding table of windows-1251. - - * international/ucs-tables.el (ucs-set-table-for-input): - If translation-table-for-input of a coding system is a symbol, get - its translation-table property. - - * international/code-pages.el: Don't register a coding system into - non-iso-charset-alist more than once. - (cp-make-coding-system): Likewise. - -2005-05-26 John Wiegley - - * eshell/esh-cmd.el (eshell-eval-command): If the return value of - `eshell-resume-eval' is wrapped in a list, it indicates that the - command was run asynchronously. In that case, unwrap the value - before checking the delimiter value. - - * eshell/em-cmpl.el (eshell-complete-parse-arguments): If the - character before a space at the end of a line is \, assume the space - is part of the last argument rather than a final argument separator. - - * eshell/esh-io.el (eshell-get-target): If `eshell-buffer-shorthand' - is in use, and the target is `t' or `nil' (which are the most common - values), don't assume that the symbol target is a buffer. - -2005-05-26 Luc Teirlinck - - * calendar/calendar.el (calendar-mode-line-format): - Use mode-line-highlight as mouse-face. - - * time.el (display-time-string-forms, display-time-update): - Use mode-line-highlight as mouse-face. - -2005-05-26 Jay Belanger - - * calc/calc.el (calc-language-alist): Remove extra defvar. - -2005-05-26 Lute Kamstra - - * arc-mode.el (archive-mode): - * bookmark.el (bookmark-read-annotation-mode) - (bookmark-edit-annotation-mode, bookmark-bmenu-mode): - * bs.el (bs-mode): - * calc/calc-yank.el (calc-edit-mode): - * calc/calc.el (calc-mode, calc-trail-mode): - * calculator.el (calculator-mode): - * chistory.el (command-history-mode): - * comint.el: - * cus-edit.el (custom-mode): - * descr-text.el (describe-text-mode): - * ebuff-menu.el (Electric-buffer-menu-mode): - * ediff-util.el (ediff-mode): - * emacs-lisp/re-builder.el (reb-mode): - * emulation/vi.el (vi-mode-setup): - * emulation/ws-mode.el (wordstar-mode): - * eshell/esh-mode.el (eshell-mode): - * forms.el (forms-mode): - * help-mode.el (help-mode): - * hexl.el (hexl-mode): - * ibuffer.el (ibuffer-mode): - * ielm.el (inferior-emacs-lisp-mode): - * info.el (Info-mode, Info-edit-mode): - * international/swedish.el: - * ledit.el (ledit-from-lisp-mode): - * locate.el (locate-mode): - * mail/rmail.el (rmail-mode): - * mail/rmailedit.el (rmail-edit-mode): - * mail/rmailsum.el (rmail-summary-mode): - * mail/supercite.el (sc-electric-mode): - * net/eudc.el (eudc-mode): - * net/quickurl.el (quickurl-list-mode): - * net/snmp-mode.el (snmp-mode, snmpv2-mode): - * obsolete/ooutline.el (outline-mode): - * obsolete/options.el (Edit-options-mode): - * obsolete/rnews.el (news-mode): - * obsolete/rnewspost.el (news-reply-mode): - * play/5x5.el (5x5-mode): - * play/decipher.el (decipher-mode, decipher-stats-mode): - * play/gomoku.el (gomoku-mode): - * play/snake.el (snake-mode): - * play/solitaire.el (solitaire-mode): - * play/tetris.el (tetris-mode): - * progmodes/ada-mode.el (ada-mode): - * progmodes/antlr-mode.el (antlr-mode): - * progmodes/autoconf.el (autoconf-mode): - * progmodes/dcl-mode.el (dcl-mode): - * progmodes/delphi.el (delphi-mode): - * progmodes/ebrowse.el (ebrowse-tree-mode) - (ebrowse-electric-list-mode, ebrowse-member-mode) - (ebrowse-electric-position-mode): - * progmodes/f90.el (f90-mode): - * progmodes/fortran.el (fortran-mode): - * progmodes/icon.el (icon-mode): - * progmodes/idlw-help.el (idlwave-help-mode): - * progmodes/idlw-shell.el (idlwave-shell-mode): - * progmodes/idlwave.el (idlwave-mode): - * progmodes/inf-lisp.el (inferior-lisp-mode): - * progmodes/m4-mode.el (m4-mode): - * progmodes/meta-mode.el (metafont-mode, metapost-mode): - * progmodes/modula2.el (modula-2-mode): - * progmodes/octave-inf.el (inferior-octave-mode): - * progmodes/octave-mod.el (octave-mode): - * progmodes/pascal.el (pascal-mode): - * progmodes/sh-script.el (sh-mode): - * progmodes/sql.el (sql-mode, sql-interactive-mode): - * progmodes/vhdl-mode.el (vhdl-mode): - * progmodes/xscheme.el (scheme-interaction-mode): - * replace.el (occur-mode): - * ses.el (ses-mode): - * simple.el (completion-list-mode): - * skeleton.el: - * speedbar.el (speedbar-mode): - * term.el (term-mode): - * terminal.el (terminal-edit-mode): - * textmodes/reftex-index.el (reftex-index-mode) - (reftex-index-phrases-mode): - * textmodes/reftex-sel.el (reftex-select-label-mode) - (reftex-select-bib-mode): - * textmodes/reftex-toc.el (reftex-toc-mode): - * wdired.el (wdired-change-to-wdired-mode): - * wid-browse.el (widget-browse-mode): - Use run-mode-hooks. - - * array.el (array-mode): - * calendar/todo-mode.el (todo-mode): - * man.el (Man-mode): - * play/landmark.el (lm-mode): - * play/mpuz.el (mpuz-mode): - Use kill-all-local-variables and run-mode-hooks. - - * subr.el (delay-mode-hooks): Specify indentation. - -2005-05-26 Mark A. Hershberger - - * xml.el (xml-substitute-special): Don't die for undefined xml - entities. - -2005-05-26 Jay Belanger - - * calc/calc-prog.el (calc-user-define-edit): Don't find substring - of nil. - -2005-05-27 Nick Roberts - - * progmodes/gdb-ui.el (gdb-frame-address): - Rename from gdb-current-address. - (gdb-previous-frame-address): Rename from gdb-previous-address. - (gdb-selected-frame): Rename from gdb-current-frame. - (gdb-get-selected-frame): Rename from gdb-get-current-frame. - (gdb-frame-number): Rename from gdb-current-stack-level. - (gdb-ann3): Match new mode-name for disassembly buffer. - Extend initialization of variables. - (gdb-post-prompt): Update disassembly from gdb-frame-handler. - (gdb-memory-mode): Use mouse-face in header line. - (gdb-assembler-buffer-name): Call it disassembly and give frame - in mode line. - (gdb-source-spec-regexp, gdb-assembler-custom) - (gdb-invalidate-assembler, gdb-frame-handler): - Make robust to leading zeroes in address format. - -2005-05-26 Carsten Dominik - - * textmodes/org.el (org-mode): Use `define-derived-mode' to - define `org-mode'. - (org-agenda-mode): Use `run-mode-hooks' instead of `run-hooks'. - -2005-05-26 Stefan Monnier - - * log-edit.el (log-edit-changelog-entries): Distinguish between - filenames like xfns.c and fns.c. - -2005-05-25 Luc Teirlinck - - * buff-menu.el (Buffer-menu-revert-function): Improve handling of - point after reverting. - (Buffer-menu-make-sort-button): Handle the case where - `Buffer-menu-use-header-line' is nil. - -2005-05-25 Thien-Thi Nguyen - - * vms-patch.el (vms-magic-right-square-brace, vms-magic-colon): - New funcs. In minibuffer-local-completion-map bind `]', `/' - and `:' to them. - -2005-05-25 Stefan Monnier - - * startup.el (normal-top-level): Allow modification of load-path while - we're iterating over it. - -2005-05-25 Juanma Barranquero - - * thumbs.el (thumbs-thumbsdir-max-size, thumbs-temp-file) - (thumbs-cleanup-thumbsdir, thumbs-call-convert) - (thumbs-resize-interactive, thumbs-insert-image) - (thumbs-insert-thumb, thumbs-dired-show-marked) - (thumbs-find-image-at-point, thumbs-delete-images) - (thumbs-rename-images, thumbs-next-image, thumbs-dired-setroot) - (thumbs-increment-image-size, thumbs-decrement-image-size): - Fix typos in docstrings. - -2005-05-24 Andre Spiegel - - * progmodes/cperl-mode.el (cperl-vc-header-alist): Obsolete. - (cperl-vc-rcs-header, cperl-vc-sccs-header): New user options. - (cperl-mode): Use them. - -2005-05-24 Juanma Barranquero - - * window.el (quit-window, shrink-window-if-larger-than-buffer): - Doc fixes. - -2005-05-24 Nick Roberts - - * progmodes/gdb-ui.el (gdb-inferior-io-mode-map): - Bind C-d to gdb-inferior-io-eof. - - * dired.el (dired-dnd-popup-notice): Use message-box. - -2005-05-23 Masatake YAMATO - - * bindings.el (mode-line-major-mode-keymap): - Bind [mode-line down-mouse-1] to `mouse-major-mode-menu'. - - * faces.el (mode-line-highlight): New face. - - * ruler-mode.el (ruler-mode-ruler): Use mode-line-highlight - as mouse-face. - - * bindings.el (top-level, help-echo, mode-line-modified) - (mode-line-mule-info, mode-line-eol-desc): Use mode-line-highlight - as mouse-face. - -2005-05-23 Juanma Barranquero - - * progmodes/cc-engine.el (c-guess-basic-syntax): - Remove spurious call to `zerop'. - - * emacs-lisp/cl.el (acons, pairlis): Add docstring. - -2005-05-23 Martin Stjernholm - - CC Mode update to 5.30.10: - - * cc-fonts.el (c-font-lock-declarators): Fix bug where the point - could go past the limit in decoration level 2, thereby causing - errors during interactive fontification. - - * cc-mode.el (c-make-inherited-keymap): Fix cc-bytecomp bug when - the file is evaluated interactively. - - * cc-engine.el (c-guess-basic-syntax): Handle operator - declarations somewhat better in C++. - - * cc-styles.el, cc-mode.el (c-run-mode-hooks): New helper macro to - make use of `run-mode-hooks' which has been added in Emacs 21.1. - (c-mode, c++-mode, objc-mode, java-mode, idl-mode, pike-mode) - (awk-mode): Use it. - (make-local-hook): Suppress warning about obsoleteness. - - * cc-engine.el, cc-align.el, cc-cmds.el - (c-append-backslashes-forward, c-delete-backslashes-forward) - (c-find-decl-spots, c-semi&comma-no-newlines-before-nonblanks): - Compensate for return value from `forward-line' when it has moved - but not to a different line due to eob. - - * cc-engine.el (c-guess-basic-syntax): Fix anchoring in - `objc-method-intro' and `objc-method-args-cont'. - -2005-05-23 Alan Mackenzie - - CC Mode update to 5.30.10: - - * cc-mode.el, cc-engine.el, cc-align.el: Change the FSF's address - in the copyright statement. Incidentally, change "along with GNU - Emacs" to "along with this program" where it occurs. - - * cc-mode.el: Add a fourth parameter `t' to the awk-mode autoload, - so that it is interactive, hence can be found by M-x awk-mode - whilst cc-mode is yet to be loaded. Reported by Glenn Morris - . - - * cc-awk.el: Add character classes (e.g. "[:alpha:]") into AWK - Mode's regexps. - -2005-05-23 Kevin Ryde - - * cc-align.el (c-lineup-argcont): Ignore conses for {} pairs from - c-parse-state, to avoid a lisp error (on bad code). - -2005-05-23 Lute Kamstra - - * subr.el (font-lock-defaults): Remove defvar as it's already - defined in font-core.el. - - * font-lock.el (font-lock-beginning-of-syntax-function): Fix docstring. - -2005-05-23 Nick Roberts - - * progmodes/gdb-ui.el (gdb-info-locals-handler): Make regexps - more general and work when GDB variable "print pretty" is on, - as with Emacs, for example. - -2005-05-22 Luc Teirlinck - - * font-core.el: Update comment. - - * emacs-lisp/easy-mmode.el (define-global-minor-mode): - Use `after-change-major-mode-hook' instead of `find-file-hook'. - - * buff-menu.el (Buffer-menu-mode): Use `run-mode-hooks'. - -2005-05-22 Eli Zaretskii - - * simple.el (yank, yank-pop): Mention `yank-excluded-properties' - and `yank-handler' in the doc strings. - -2005-05-22 Stefan Monnier - - * emacs-lisp/cl.el (eql): Remove. It's a builtin already. - -2005-05-22 Richard M. Stallman - - * help.el (describe-key): Move print-help-return-message call - out of conditional. - - * progmodes/etags.el (list-tags): Use with-no-warnings. - - * mail/smtpmail.el (smtpmail-open-stream): Use with-no-warnings. - (smtpmail-send-queued-mail): Avoid beginning-of-buffer. - (starttls-extra-args, starttls-extra-arguments): Add defvars. - - * mail/mailalias.el (mail-get-names): Avoid beginning-of-buffer. - - * language/viet-util.el (viet-viscii-nonascii-translation-table): - Add defvar. - - * emulation/viper-ex.el (viper-ex-work-buf, viper-ex-print-buf): - Use defvar, not defconst. - - * hexl.el (hexl-follow-line): Use with-no-warnings. - - * emulation/tpu-extras.el: Use write-file-functions instead of - write-file-hooks. - - * dired.el (dired-font-lock-keywords): Fontify files with junk - extensions even if marked by -F. - -2005-05-22 Juanma Barranquero - - * emacs-lisp/cl.el (pushnew, cl-macroexpand, floatp-safe, plusp) - (minusp, oddp, evenp, mapcar*, list*, copy-list, adjoin, subst): - * emacs-lisp/cl-extra.el (coerce, map, maplist, cl-mapc, mapl) - (mapcan, mapcon, some, every, notany, notevery, signum, isqrt) - (concatenate, list-length, get*, getf, cl-remprop): - * emacs-lisp/cl-macs.el (function*, case, ecase, typecase) - (etypecase, progv, lexical-let, lexical-let*) - (multiple-value-bind, multiple-value-setq, shiftf): - Improve argument/docstring consistency. - - * subr.el (focus-frame, unfocus-frame): Revert deletion on 2005-05-01. - -2005-05-22 Andre Spiegel - - * vc-cvs.el (vc-cvs-checkout-model): Handle the case where FILE - doesn't exist. - - * vc.el (vc-trunk-p): Add autoload cookie. The function is used in - vc-rcs.el when vc-mistrust-permissions is t, which is not the default. - -2005-05-22 Nick Roberts - - * emacs-lisp/bytecomp.el: Remove make-obsolete-variable for - already deleted variables: auto-fill-hook, blink-paren-hook, - lisp-indent-hook, inhibit-local-variables, unread-command-event, - suspend-hooks, comment-indent-hook, meta-flag, - before-change-function, after-change-function, - font-lock-doc-string-face. - -2005-05-21 Luc Teirlinck - - * emacs-lisp/derived.el (define-derived-mode): Doc fix. - -2005-05-21 Eli Zaretskii - - * mail/rmail.el (rmail-reply): Filter the list in reply-to through - rmail-dont-reply-to. - -2005-05-21 Frederik Fouvry - - * mail/sendmail.el (mail-send): Use [[:space:]] instead of a - literal blank when splitting new-header-values. - -2005-05-21 Matt Hodges - - * calendar/cal-menu.el (cal-menu-update): Add separator as a - string so that tmm doesn't create a completion entry for it. +2007-10-05 Chris Moore - * textmodes/table.el (table-disable-menu): Ditto. + * server.el (server-kill-new-buffers): Doc fix. -2005-05-21 Richard M. Stallman +2007-10-05 John W. Eaton + + * progmodes/octave-mod.el (octave-abbrev-table): Add "until". + (octave-begin-keywords): Add "do". + (octave-end-keywords): Remove "end". + (octave-reserved-words): Add "end". Remove "all_va_args", + "gplot", and 'gsplot". + (octave-text-functions): Remove "gset", "gshow", "set", and "show". + (octave-variables): Remove "IMAGEPATH", "INFO_FILE", + "INFO_PROGRAM", "LOADPATH", "__error_text__", "automatic_replot", + "default_return_value", "define_all_return_values", + "do_fortran_indexing", "empty_list_elements_ok", + "gnuplot_has_multiplot", "implicit_str_to_num_ok", + "ok_to_lose_imaginary_part", "prefer_column_vectors", + "prefer_zero_one_indexing", "propagate_empty_matrices", + "resize_on_range_error", "treat_neg_dim_as_zero", + "warn_assign_as_truth_value", "warn_comma_in_global_decl", + "warn_divide_by_zero", "warn_function_name_clash", + "warn_missing_semicolon", "whitespace_in_literal_matrix". + Add "DEFAULT_EXEC_PATH", "DEFAULT_LOADPATH", "IMAGE_PATH", + "crash_dumps_octave_core", "sighup_dumps_octave_core", + "sigterm_dumps_octave_core". + (octave-block-match-alist): Remove "end" from block-end keywords. + (octave-mode): Update ftp site address. + +2007-10-05 Dan Nicolaescu + + * vc.el: Reorder functions, no code changes. + +2007-10-04 Michael Albinus + + * net/tramp.el (tramp-make-temp-file): Move to tramp-compat.el. + (tramp-do-copy-or-rename-file-directly): Handle tmpfile only in + the cond clauses where needed. + (tramp-handle-write-region): Rearrange code for proper handling of + tmpfile. + + * net/tramp-compat.el (tramp-compat-make-temp-file): New defsubst. - * progmodes/idlwave.el (idlwave-doc-header): Use insert-file-contents. + * net/tramp.el: + * net/tramp-fish.el: + * net/tramp-ftp.el: + * net/tramp-smb.el: Rename `tramp-make-temp-file' to + `tramp-compat-make-temp-file'. - * progmodes/flymake.el (flymake-makehash): Use with-no-warnings. +2007-10-04 Juanma Barranquero - * net/rcompile.el (remote-compile): Use compilation-start. + * image-dired.el (image-dired-image-at-point-p): Fix typo in docstring. - * tmm.el (tmm-shortcut): Avoid using beginning-of-buffer. +2007-10-03 Stefan Monnier -2005-05-21 Daniel Pfeiffer + * emacs-lisp/copyright.el (copyright-update): Don't update if the file + already uses a more recent copyright version than the "current" one. - * files.el (auto-mode-alist): Check GNUmakefile before makefile. - Default to makefile-bsdmake-mode on BSD systems. +2007-10-03 Micha,Ak(Bl Cadilhac - * imenu.el (imenu-generic-expression, imenu--generic-function'): - REGEXP may also be a search function now. The part of doc-string - for describing the structure was 95% identical to that of - `imenu--generic-function'. Unify it there. + * doc-view.el (doc-view-dvi->pdf-sentinel, doc-view-reset-slice) + (doc-view-insert-image): Minor aesthetical docstring changes. - * progmodes/make-mode.el (makefile-imenu-generic-expression): - Use function to find dependencies, because regexp alone is so complex, - it easily goes into an endless loop. - (makefile-makepp-mode): Also add submenu for Perl functions - defined in the makefile. - (makefile-bsdmake-mode): Special imenu-generic-expression no - longer needed, due to function call. - (makefile-match-dependency): Take BOUND into account when checking - if we're through. +2007-10-03 Tassilo Horn -2005-05-20 Jay Belanger + * doc-view.el (doc-view): Don't ignore pdf and dvi files when + completing filename. + (doc-view-search-internal): Docstring change. - * calc/calc-units.el (calc-invalidate-units-table): - Use inhibit-read-only. - (math-build-units-table-buffer): Use view-mode. +2007-10-03 Michael Albinus -2005-05-20 David Kastrup - - * emacs-lisp/easymenu.el (easy-menu-add): Correct docstring since - easy-menu-add is not a nop on Emacs; and clarify when to call it. - -2005-05-20 Lute Kamstra - - * diff-mode.el (diff-header-face, diff-file-header-face) - (diff-index-face, diff-hunk-header-face, diff-removed-face) - (diff-added-face, diff-changed-face, diff-function-face) - (diff-context-face, diff-nonexistent-face): Put them in the - diff-mode customization group. - -2005-05-20 Stefan Monnier - - * progmodes/vhdl-mode.el (vhdl-font-lock-match-item): Simplify regexp. - - * progmodes/sh-script.el (sh-mode, sh-get-word): Minor regexp fixes. - - * font-lock.el (lisp-font-lock-keywords-2): Don't error. - Minor regexp-optimization. - -2005-05-20 Carsten Dominik + * net/tramp.el (top): Add tramp-compat to `tramp-unload-hook'. + (tramp-file-name-handler-alist): + Add `tramp-handle-insert-file-contents-literally'. Needed for XEmacs. + (tramp-make-temp-file): Use `make-temp-name'. `make-temp-file', + used before, creates the file already, which is not desired. + (tramp-do-copy-or-rename-file-directly): Simplify handling of + temporary file. + (tramp-handle-insert-file-contents): Assign the result in the + short track case. + (tramp-handle-insert-file-contents-literally): New defun. + (tramp-completion-mode-p): Revert change from 2007-09-24. + Checking for `return' etc as last character is not sufficient, for + example in dired-mode when entering (revert-buffer) or + (dired-sort). - * textmodes/org.el (org-agenda-toggle-time-grid): New command. - (org-agenda-use-time-grid, org-agenda-time-grid): New options. - (org-agenda-add-time-grid-maybe): New function. - (org-agenda): Call `org-agenda-add-time-grid-maybe'. - (org-table-create): `dotimes' instead of `mapcar'. - (org-xor): Simplify implementation. - (org-agenda): `inhibit-redisplay' turned on. - (org-agenda-change-all-lines): Use `org-format-agenda-item' to get - a consistent line after a state change. - (org-agenda-remove-times-when-in-prefix): New option. - (org-prefix-has-time): New variable. - (org-parse-time-string): Optional argument NODEFAULT. - (org-format-agenda-item): Parse items for time-of-day - specifications and move these into the prefix if possible. - (org-agenda-priority): Get current heading, not previous heading - during agenda remote editing. + * net/tramp-compat.el (top): Add also compatibility code for loading + appropriate timer package. + (tramp-compat-copy-tree): Check for `subrp' and `symbol-file' in + order to avoid autoloading problems. -2005-05-20 Juanma Barranquero + * net/tramp-fish.el: + * net/tramp-smb.el: Move further compatibility code to tramp-compat.el. - * emacs-lisp/cl-seq.el (reduce, fill, replace, remove*) - (remove-if, remove-if-not, delete*, delete-if, delete-if-not) - (remove-duplicates, delete-duplicates, substitute) - (substitute-if, substitute-if-not, nsubstitute, nsubstitute-if) - (nsubstitute-if-not, find, find-if, find-if-not, position) - (position-if, position-if-not, count, count-if, count-if-not) - (mismatch, search, sort*, stable-sort, merge, member*) - (member-if, member-if-not, assoc*, assoc-if, assoc-if-not) - (rassoc*, rassoc-if, rassoc-if-not, union, nunion) - (intersection, nintersection, set-difference, nset-difference) - (set-exclusive-or, nset-exclusive-or, subsetp, subst-if) - (subst-if-not, nsubst, nsubst-if, nsubst-if-not, sublis) - (nsublis, tree-equal): Improve argument/docstring consistency. + * net/tramp-ftp.el (tramp-ftp-file-name-handler): Handle the case + where the second parameter of `copy-file' or `rename-file' is a + remote file but not via ftp. - * subr.el (send-string, send-region): Remove obsolescence declaration. - (window-dot, set-window-dot, read-input, show-buffer) - (eval-current-buffer, string-to-int): - Add release number to obsolescence declarations. +2007-10-02 Richard Stallman -2005-05-19 Kim F. Storm + * frame.el (cursor-in-non-selected-windows): Doc fix. - * ido.el (ido-magic-forward-char): Enter ido-find-file at end of input. - (ido-magic-backward-char): Enter ido-switch-buffer at start of input. +2007-10-01 Thien-Thi Nguyen -2005-05-20 Matt Hodges - - * faces.el (list-faces-display): Make back button respect optional - regexp arg. - -2005-05-19 Juanma Barranquero - - * calculator.el (calculator-radix-grouping-mode) - (calculator-radix-grouping-digits, calculator-displayer) - (calculator-radix-grouping-separator, calculator-copy-displayer): - * dabbrev.el (dabbrev-search-these-buffers-only): - * diff-mode.el (diff-jump-to-old-file, diff-update-on-the-fly) - (diff-advance-after-apply-hunk, diff-mode-hook) - (diff-minor-mode-prefix): - * imenu.el (imenu-use-popup-menu): - * jit-lock.el (jit-lock-context-time): - * newcomment.el (comment-fill-column, comment-column) - (comment-style, comment-padding, comment-multi-line) - (comment-empty-lines, comment-auto-fill-only-comments): - * reveal.el (reveal-around-mark): - * uniquify.el (uniquify-buffer-name-style) - (uniquify-after-kill-buffer-p) - (uniquify-ask-about-buffer-names-p, uniquify-ignore-buffers-re) - (uniquify-min-dir-content, uniquify-separator) - (uniquify-trailing-separator-p, uniquify-strip-common-suffix): - * w32-vars.el (w32-fixed-font-alist): - * emacs-lisp/testcover.el (testcover-potentially-1value-functions): - * obsolete/rsz-mini.el (resize-minibuffer-frame-max-height): - * progmodes/antlr-mode.el (antlr-font-lock-maximum-decoration): - * progmodes/perl-mode.el (perl-indent-level) - (perl-continued-statement-offset, perl-continued-brace-offset) - (perl-brace-offset, perl-brace-imaginary-offset) - (perl-label-offset, perl-indent-continued-arguments) - (perl-tab-always-indent, perl-tab-to-comment, perl-nochange): - * progmodes/tcl.el (tcl-indent-level) - (tcl-continued-indent-level, tcl-auto-newline) - (tcl-tab-always-indent, tcl-electric-hash-style) - (tcl-help-directory-list, tcl-use-smart-word-finder) - (tcl-application, tcl-command-switches, tcl-prompt-regexp) - (inferior-tcl-source-command): - * textmodes/fill.el (enable-kinsoku): - * textmodes/reftex-vars.el (reftex-index-phrases-wrap-long-lines): - * textmodes/table.el (table-yank-handler): - Specify missing group (and type, if simple) in defcustom. + * play/zone.el (zone): Let-bind show-trailing-whitespace to nil. + Suggested by Chris Moore . -2005-05-19 Luc Teirlinck +2007-10-01 Jay Belanger - * progmodes/compile.el (compilation-finish-function): Fix defvar. + * calc/calc-math.el (math-largest-emacs-expt): Handle the cases + when `expt' doesn't give range errors. -2005-05-19 Richard M. Stallman +2007-10-01 Markus Triska - * progmodes/make-mode.el (makefile-mode): Use run-mode-hooks. - - * subr.el (event-basic-type): Don't get an error. - (left-fringe-p): Function deleted. - - * buff-menu.el (Buffer-menu-buffer-face): In group Buffer-menu. - (list-buffers-noselect): Set `font-lock-face' property, not `face'. - - * dired-aux.el (dired-copy-file-recursive): Handle symlinks - in recursive copy. - - * frame.el (show-trailing-whitespace): In group `whitespace-faces'. - - * emacs-lisp/byte-run.el (eval-when-compile): Doc fix. + * calc/calc-math.el (math-smallest-emacs-expt): + Make the computation more robust. - * emacs-lisp/bytecomp.el - (byte-compile-file-form-custom-declare-variable): - Call byte-compile-nogroup-warn if appropriate. +2007-09-30 David Kastrup - * progmodes/compile.el (compilation-finish-function): Mark obsolete. - (compilation-set-window): Don't call left-fringe-p; do it directly. + * startup.el (argv): Alias for `command-line-args-left' to use as + `(pop argv)' inside of --eval command sequences. Allows for + passing shell commands into Emacs verbatim without need for Lisp + quoting. -2005-05-19 Jay Belanger + * autorevert.el (auto-revert-handler): In `auto-revert-tail-mode', + check only for changed size. + (auto-revert-tail-handler): Get size from caller. If the file has + shrunk, tail the whole file again (the file presumably has been + rewritten). - * calc/calc-graph.el (calc-graph-format-data): Make sure - var-PlotRejects is bound before trying to check its value. + * woman.el (woman-topic-all-completions, woman-mini-help): + Fix fallout from 2007-09-07 introduction of `dolist' when the list + actually was being manipulated in the loop. + (woman-Cyg-to-Win, woman-pre-process-region) + (woman-horizontal-escapes, woman-if-body, woman-unescape) + (woman-strings, woman-special-characters, woman1-hc) + (woman-change-fonts, woman-find-next-control-line): + Use `match-beginning' rather than `match-string' when the result is + just used as a flag. -2005-05-19 Carsten Dominik +2007-09-30 Michael Albinus - * textmodes/reftex.el (reftex-isearch-minor-mode): Move the - definition of this variable from reftex-global.el to reftex.el, - because it is needed in the menu. + * net/tramp-compat.el: New file. -2005-05-19 Lute Kamstra + * net/tramp.el: + * net/tramp-fish.el: + * net/tramp-smb.el: + * net/tramp-uu.el: + * net/trampver.el: Move compatibility code to tramp-compat.el. + Apply `mapc' instead of `mapcar' when the code needs side effects + only. Move utf-8 coding cookie to the second line. - * emacs-lisp/copyright.el (copyright-fix-years): Make sure all - years are fixed. Don't insert a space after a dash. +2007-09-30 Reiner Steib -2005-05-19 Kim F. Storm + * term/x-win.el (x-gtk-stock-map): Add Gnus and MH-E icons. + Improve custom type. + (icon-map-list): Make it customizable. Document how to disable + stock icons. - * emulation/crisp.el (crisp-home, crisp-end): Put CUA property. +2007-09-30 Richard Stallman -2005-05-19 Daniel Pfeiffer + * play/zone.el (zone-hiding-modeline): Use mode-line-format. - * font-lock.el (lisp-font-lock-keywords-2): Do \\) only in - strings, because (eq ... ?\\) is fairly frequent. +2007-09-29 Jan Dj,Ad(Brv - * progmodes/make-mode.el (makefile-add-this-line-targets): - Simplify and integrate into `makefile-pickup-targets'. - (makefile-add-this-line-macro): Simplify and integrate into - `makefile-pickup-macros. - (makefile-pickup-filenames-as-targets): Simplify. - (makefile-previous-dependency, makefile-match-dependency): - Don't stumble over `::'. + * term/x-win.el (x-gtk-stock-map): Version is 22.2. -2005-05-19 Nick Roberts +2007-09-28 Stefan Monnier - * subr.el (post-command-idle-hook, post-command-idle-delay): - Remove obsoletion of post-command-idle-hook and - post-command-idle-delay. + * t-mouse.el (gpm-mouse-mode): Rename from t-mouse-mode. Rewrite. + (t-mouse-mode): New compatibility alias. - * faces.el (list-faces-display): Provide button when describe-face - is called to take user back to the list of faces. +2007-09-28 Dan Nicolaescu - * help-fns.el (describe-variable): Remove hyperlinks in a - variable's value as these are quite frequently inappropriate. + * server.el (server-delete-client): Only delete the terminal if it + is non-nil. - * follow.el (follow-submit-feedback, follow-mode): - Remove references to post-command-idle-hook. +2007-09-28 Michael Albinus -2005-05-18 Daniel Pfeiffer + * net/tramp.el (with-file-property, with-connection-property): + Highlight as keyword. + (tramp-rfn-eshadow-setup-minibuffer) + (tramp-rfn-eshadow-update-overlay, tramp-handle-set-file-times) + (tramp-set-file-uid-gid, tramp-do-copy-or-rename-file-via-buffer) + (tramp-do-copy-or-rename-file-directly) + (tramp-do-copy-or-rename-file-out-of-band) + (tramp-handle-shell-command, tramp-get-debug-buffer) + (tramp-send-command-and-read, tramp-equal-remote) + (tramp-get-local-gid): Pacify byte-compiler. + (tramp-handle-file-name-directory): Result shall not be expanded. + (tramp-find-foreign-file-name-handler): Rewrite. + (tramp-dissect-file-name): Add optional parameter NODEFAULT. - * progmodes/make-mode.el (makefile-previous-dependency) - (makefile-match-dependency): Check for := (and in bsd mode also - !=) to give a better result, even when font-lock is not on. + * net/tramp-cache.el (tramp-cache-print): Pacify byte-compiler. -2005-05-18 Jay Belanger + * net/tramp-fish.el (tramp-fish-handle-expand-file-name): + Apply `tramp-completion-mode-p'. + (tramp-fish-handle-set-file-times) + (tramp-fish-handle-executable-find) + (tramp-fish-handle-process-file, tramp-fish-get-file-entries) + (tramp-fish-retrieve-data): Pacify byte-compiler. - * calc/calc-help.el (calc-s-prefix-help): - Add `calc-copy-special-constant' to help string. + * net/tramp-gw.el (tramp-gw-basic-authentication): + Call `tramp-read-passwd' with first parameter `nil'. -2005-05-18 Luc Teirlinck +2007-09-28 Glenn Morris - * emacs-lisp/eldoc.el (eldoc-mode): Doc fix. + * mail/supercite.el (sc-attribs-filter-namelist): Use mapc rather + than mapcar. -2005-05-18 Jay Belanger + * textmodes/tex-mode.el (tex-suscript-height-ratio) + (tex-suscript-height-minimum): New customizable variables. + (tex-suscript-height): New function. + (superscript, subscript): Set height using tex-suscript-height + rather than fixing at 0.8. + (tex-fontify-script, tex-font-script-display): Add :version tag. - * calc/calc-poly.el (math-factor-poly-coefs): Make sure the terms - in linear factors are in proper order. +2007-09-27 Juanma Barranquero -2005-05-18 Carsten Dominik + * progmodes/python.el (python-eldoc-function): Doc fix. - * textmodes/reftex-vars.el (reftex-cite-format-builtin): - Support for jurabib. +2007-09-27 Glenn Morris - * textmodes/reftex.el (featurep): Define aliases for overlay - commands, for XEmacs compatibility, and use these aliases in - overlay initializations. - (reftex-highlight): Use `reftex-move-overlay'. - (reftex-unhighlight): Use `reftex-delete-overlay'. - (reftex-uniq): Function removed. Use `reftex-uniquify' instead. - (reftex-access-search-path): Use `reftex-uniquify' instead of - `reftex-uniq'. + * image.el (image-type-auto-detected-p): Doc fix. Don't detect an + image if it is not in image-type-auto-detectable, or is there with + a nil value. - * textmodes/reftex-sel.el (reftex-select-unmark): Overlay - `before-string' property modification enables for Emacs as well. - (reftex-select-item): Use `reftex-delete-overlay'. - (reftex-select-mark): Use `reftex-make-overlay' and - `reftex-overlay-put'. - (reftex-select-unmark): Use `reftex-delete-overlay' and - `reftex-overlay-put'. +2007-09-27 Michael Albinus -2005-05-18 Lute Kamstra + * net/tramp.el (tramp-maybe-open-connection): Make test for alive + connection more robust. - * emacs-lisp/lisp.el (check-parens): Fix docstring. +2007-09-26 Juanma Barranquero -2005-05-18 Juanma Barranquero + * emacs-lisp/eldoc.el (eldoc-function-argstring-format): + Deal with the case that special &keywords are at the beginning or + end of the argument list. Also add some (incomplete) support for + non-standard arglists. - * add-log.el (add-change-log-entry): - * array.el (array-make-template, array-reconfigure-rows) - (array-init-max-row, array-init-max-column) - (array-init-columns-per-line, array-init-field-width): - * replace.el (replace-match-maybe-edit, perform-replace): - * textmodes/spell.el (spell-region): - Replace `read-input' by `read-string'. +2007-09-26 Juanma Barranquero - * forms.el (forms-mode): + * emacs-lisp/eldoc.el (eldoc-message-commands-table-size) + (eldoc-message-commands, eldoc-current-idle-delay) + (eldoc-function-argstring-format): Fix typos in docstrings. + +2007-09-26 Jay Belanger + + * calc/calc-units.el (calc-convert-units) + (calc-convert-temperature): Remove unnecessary colons. + +2007-09-26 Bastien Guerry + + * org-export-latex.el (org-export-latex-tables-verbatim): New function. + (org-export-latex-remove-from-headlines): Name changed because of typo. + (org-export-latex-quotation-marks-convention): Option removed. + (org-export-latex-make-preamble): Handle the DATE option. + (org-export-latex-cleaned-string): Now the only cleaning function, + synched up with org.el. + (org-export-latex-lists, org-export-latex-parse-list) + (org-export-list-to-latex): New functions. + +2007-09-26 Carsten Dominik + + * org.el (org-kill-is-subtree-p): Use `org-outline-regexp'. + (org-outline-regexp): New constant. + (org-remember-handler): Throw error when the target file is not in + org-mode. + (org-cleaned-string-for-export): No longer call + `org-export-latex-cleaned-string' with an argument. + (org-get-tags): Returns now a list, not a string. + (org-get-tags-string): New function. + (org-archive-subtree): No need to split return of `org-get-tags'. + (org-set-tags, org-entry-properties): Call `org-get-tags-string' + instead of `org-get-tags'. + (org-agenda-format-date): Rename from `org-agenda-date-format'. + (org-time-from-absolute, org-agenda-format-date-aligned): New funs. + (org-compatible-face): New argument INHERITS. Inherit from this + face if possible. + (org-level-1, org-level-2, org-level-3, org-level-4) + (org-level-5, org-level-6, org-level-7, org-level-8) + (org-special-keyword, org-drawer, org-column, org-warning) + (org-archived, org-todo, org-done, org-headline-done, org-table) + (org-formula, org-code, org-agenda-structure) + (org-scheduled-today, org-scheduled-previously) + (org-upcoming-deadline, org-time-grid): Call `org-compatible-face' + in the new way. + (org-get-heading): New argument NO-TAGS. + (org-fast-tag-selection-include-todo): Made defvar instead of + defcustom, feature is not deprecated. + (org-remember-store-without-prompt): New default value t. + (org-todo-log-states): New variable. + (org-set-regexps-and-options): #+TODO is an alias for SEQ_TODO. + Compute the log states. + (org-goto-map): More commands copied from global map. Also bind + `org-occur'. + (org-goto): Made into a general lookup command. + (org-get-location): Complete rewrite. + (org-goto-exit-command): New variable. + (org-goto-selected-point): New variable. + (org-goto-ret, org-goto-left, org-goto-right, org-goto-quit): + Set the new variables. + (org-paste-subtree): Whitespace insertion strategy revised. + (org-remember-apply-template): Protect v-A from the possibility + that v-a might be nil. + (org-remember-handler): Insertion rules revised. + (org-todo): Respect org-todo-log-states. + (org-up-heading-safe): New function. + (org-entry-get-with-inheritance): Use `org-up-heading-safe'. + +2007-09-26 Dan Nicolaescu + + * progmodes/cc-cmds.el (c-indent-line-or-region): Only indent the + region if in transient-mark-mode. + +2007-09-26 Juanma Barranquero + + * calc/calc-ext.el (calc-init-extensions, calc-reset): + * calc/calc-help.el (calc-full-help): + * calc/calc-misc.el (another-calc): + * calc/calc-store.el (calc-var-name-map): + * calc/calc-stuff.el (calc-flush-caches): + * calc/calc-units.el (math-build-units-table): + * calc/calc.el (calc-digit-map, calc-dispatch-map, calc-mode) + (calc-quit): + * calendar/icalendar.el (icalendar--format-ical-event) + (icalendar--convert-ical-to-diary): + * emacs-lisp/authors.el (authors): + * emacs-lisp/cust-print.el (custom-print-install) + (custom-print-uninstall): + * emacs-lisp/disass.el (disassemble-1): + * emacs-lisp/easy-mmode.el (easy-mmode-define-syntax): + * emacs-lisp/edebug.el (byte-compile-resolve-functions): + * emacs-lisp/elint.el (elint-current-buffer, elint-check-defun-form) + (elint-check-let-form, elint-check-condition-case-form) + (elint-initialize): + * emacs-lisp/elp.el (elp-results): + * emacs-lisp/generic.el (generic-mode-internal): + * emacs-lisp/re-builder.el (reb-delete-overlays): + * emacs-lisp/regi.el (regi-interpret): + * emacs-lisp/sregex.el (sregex--char-aux): + * emulation/cua-rect.el (cua--deactivate-rectangle) + (cua--highlight-rectangle, cua--rectangle-post-command): + * emulation/viper-keym.el (viper-toggle-key, viper-ESC-key): + * emulation/viper-macs.el (viper-describe-kbd-macros) + (viper-describe-one-macro): + * emulation/viper-util.el (viper-setup-master-buffer): + * emulation/viper.el (set-viper-state-in-major-mode): + * international/mule-diag.el (describe-current-coding-system): + * language/ethio-util.el (ethio-fidel-to-sera-buffer): + * mail/emacsbug.el (report-emacs-bug): + * net/ange-ftp.el (ange-ftp-call-chmod, ange-ftp-parse-bs2000-listing): + * obsolete/hilit19.el (hilit-unhighlight-region) + (hilit-set-mode-patterns): + * play/solitaire.el (solitaire-check, solitaire-solve): + * play/zone.el (zone-pgm-rotate): + * progmodes/ada-mode.el (ada-save-exceptions-to-file): + * progmodes/ada-prj.el (ada-prj-display-page): + * progmodes/delphi.el (delphi-search-directory, delphi-find-unit-file) + (delphi-debug-mode-map, delphi-mode-map, delphi-mode): + * progmodes/ebrowse.el (ebrowse-tree-mode, ebrowse-view-exit-fn) + (ebrowse-member-mode, ebrowse-save-tree-as, ebrowse-save-class): + * progmodes/sh-script.el (sh-make-vars-local) + (sh-reset-indent-vars-to-global-values): + * progmodes/sql.el (top): + * progmodes/vhdl-mode.el (vhdl-set-style, vhdl-regress-line): + * progmodes/xscheme.el (top): + * textmodes/artist.el (artist-mt-get-symbol-from-keyword-sub) + (artist-go-retrieve-from-symbol-sub, artist-go-get-symbol-shift-sub) + (artist-fc-retrieve-from-symbol-sub, artist-vaporize-line) + (artist-vaporize-lines, artist-ellipse-compute-fill-info) + (artist-submit-bug-report): + * textmodes/flyspell.el (flyspell-delay-commands) + (flyspell-deplacement-commands): + * textmodes/table.el (table--generate-source-epilogue, table-insert) + (table--generate-source-cells-in-a-row, table--make-cell-map) + (*table--cell-describe-bindings): Use `mapc' rather than `mapcar'. + +2007-09-25 Juanma Barranquero + + * allout.el (produce-allout-mode-map, allout-process-exposed): + * ansi-color.el (ansi-color-make-color-map): + * autoinsert.el (auto-insert): + * bookmark.el (bookmark-bmenu-list, bookmark-show-all-annotations): + * dired-aux.el (dired-create-files): + * dired.el (dired-restore-desktop-buffer): + * ediff-diff.el (ediff-setup-fine-diff-regions): + * ediff-mult.el (ediff-intersect-directories) + (ediff-redraw-directory-group-buffer, ediff-dir-diff-copy-file) + (ediff-redraw-registry-buffer): + * ediff-ptch.el (ediff-fixup-patch-map): + * ediff-util.el (ediff-toggle-multiframe, ediff-toggle-use-toolbar) + (ediff-really-quit, ediff-clear-diff-vector): + * emerge.el (emerge-really-quit): + * ffap.el (ffap-replace-file-component): + * filecache.el (file-cache-add-directory) + (file-cache-add-directory-recursively) + (file-cache-add-from-file-cache-buffer, file-cache-delete-file-regexp) + (file-cache-delete-directory, file-cache-files-matching-internal) + (file-cache-display): + * files.el (cd): + * find-lisp.el (find-lisp-insert-directory): * finder.el (finder-compile-keywords): - * shadowfile.el (shadow-read-files): - Replace `eval-current-buffer' by `eval-buffer'. - - * terminal.el (te-pass-through): - * net/ange-ftp.el (ange-ftp-process-filter, ange-ftp-gwp-filter) - (ange-ftp-raw-send-cmd): - * net/telnet.el (telnet-interrupt-subjob, telnet-c-z) - (send-process-next-char, telnet-initial-filter, telnet): - Replace `send-string' by `process-send-string'. - - * progmodes/prolog.el (inferior-prolog-mode): Doc fix. - (prolog-consult-region): Replace `send-string' by - `process-send-string'; replace `send-region' by `process-send-region'. - - * progmodes/delphi.el (delphi-log-msg): - Replace `set-window-dot' by `set-window-point'. - - * subr.el (window-dot, set-window-dot, read-input, send-string) - (send-region, show-buffer, eval-current-buffer): - Make really obsolete, as the comment says. - -2005-05-17 Kim F. Storm - - * emulation/cua-base.el (cua-use-hyper-key): Doc fix. - (cua--init-keymaps): Bind C-return instead of S-return to set - rectangle mark. - - * emulation/cua-rect.el (cua--init-rectangles): Bind C-return - instead of S-return to toggle/clear rectangle mark. - -2005-05-17 Daniel Pfeiffer - - * progmodes/make-mode.el (makefile-dependency-skip): New variable. - (makefile-macroassign-regex, makefile-make-font-lock-keywords): - Also fontify plain strings assigned to variables, mostly so that a - colon has a face and is thus not taken as a dependency separator. - (makefile-previous-dependency): Inline the new matcher, because it - is too complex to work in both directions. - (makefile-match-dependency): Eliminate `backward' arg (see above). - Completely reimplemented so as to not sometimes go into an endless - loop. It should also be more efficient, because first it only - searches for `:', instead of applying the very complex regexp. - (makefile-mode): Cancel `font-lock-support-mode', because blocks - to be fontified in one piece can be too long for JIT. - Makefiles are never *that* big. - -2005-05-17 Reiner Steib - - * dired.el (dired-mode): Simplify. - -2005-05-17 Lute Kamstra - - * emacs-lisp/easy-mmode.el (define-minor-mode): Don't generate a - defcustom for the mode hook variable. - - * emacs-lisp/authors.el (authors): Do parse the ChangeLogs of the - Emacs Lisp Reference Manual. - -2005-05-17 Juanma Barranquero - - * emacs-lisp/cl.el (eql, floatp-safe, plusp, minusp, oddp) - (evenp, list*): - * emacs-lisp/cl-macs.el (macrolet, symbol-macrolet): - * emacs-lisp/cl-seq.el (subsetp, tree-equal): Doc fixes. - - * net/tramp-smb.el (tramp-smb-open-connection): - Pass `tramp-chunksize' as fifth (required) argument. - -2005-05-16 Daniel Pfeiffer - - * font-lock.el (lisp-font-lock-keywords-1): - Set `font-lock-negation-char-face' for [^...] char group. - (lisp-font-lock-keywords-2): Highlight regexp's \\( \\| \\). - - * progmodes/make-mode.el (makefile-dependency-regex): Turn it into - a var, and refine it to mask one more level of nested vars. - (makefile-rule-action-regex): Turn it into a var, and refine it so - it recognizes backslashed continuation lines as belonging to the - same command. - (makefile-macroassign-regex): Refine it so it recognizes - backslashed continuation lines as belonging to the same command. - (makefile-var-use-regex): Don't look at the next char, because it - might be the same one to be skipped by the initial [^$], leading - to an overlooked variable use. - (makefile-make-font-lock-keywords): Remove two parameters, which - are now variables that some of the modes set locally. - Handle dependency and rule action matching through functions, because - regexps alone match too often. Dependency matching now comes - last, so it can check, whether a colon already matched something else. - (makefile-mode): Inform that font-lock improves makefile parsing - capabilities. - (makefile-match-dependency, makefile-match-action): New functions. - -2005-05-16 Juanma Barranquero - - * emacs-lisp/cl-extra.el (equalp): Doc fix. - - * align.el (align-regexp): - * ansi-color.el (ansi-color-get-face): - * array.el (array-reconfigure-rows, array-init-max-row) - (array-init-max-column, array-init-columns-per-line) - (array-init-field-width): - * dired-aux.el (dired-trample-file-versions): - * dired-x.el (dired-mark-sexp): - * ediff-diff.el (ediff-extract-diffs, ediff-get-diff3-group): - * edmacro.el (edmacro-finish-edit, edmacro-parse-keys): - * emerge.el (emerge-extract-diffs, emerge-get-diff3-group): - * faces.el (face-read-integer): - * files.el (backup-extract-version, insert-directory): - * hexl.el (hexl-insert-decimal-char): - * server.el (server-process-filter): - * shell.el (shell-extract-num): - * startup.el (command-line-1): - * term.el (term-command-hook): - * time-stamp.el (time-stamp, time-stamp-string-preprocess) - (time-stamp-do-number): - * time.el (display-time-update): - * timezone.el (timezone-parse-date, timezone-zone-to-minute) - (timezone-fix-time): - * vms-patch.el (vms-suspend-resume-hook): - * calendar/appt.el (appt-convert-time): - * calendar/cal-bahai.el (mark-bahai-diary-entries): - * calendar/cal-hebrew.el (mark-hebrew-diary-entries): - * calendar/cal-islam.el (mark-islamic-diary-entries): - * calendar/calendar.el (calendar-cursor-to-date) - (calendar-star-date): - * calendar/diary-lib.el (diary-attrtype-convert) - (mark-diary-entries, diary-entry-time): - * calendar/solar.el (solar-get-number): - * emacs-lisp/lisp-mnt.el (lm-last-modified-date): - * emacs-lisp/re-builder.el (reb-display-subexp): - * emulation/edt.el (edt-set-scroll-margins): - * emulation/tpu-extras.el (tpu-set-scroll-margins): - * emulation/vip.el (vip-get-ex-token, vip-get-ex-buffer) - (vip-get-ex-count): - * emulation/viper-ex.el (viper-get-ex-token) - (viper-get-ex-buffer, viper-get-ex-count, ex-next): - * international/fontset.el (fontset-plain-name): - * mail/feedmail.el (feedmail-look-at-queue-directory): - * mail/mailalias.el (mail-get-names): - * mail/rmail.el (rmail-convert-to-babyl-format): - * mail/rmailsum.el (rmail-make-basic-summary-line) - (rmail-summary-next-same-subject, rmail-summary-rmail-update) - (rmail-summary-goto-msg): - * mail/smtpmail.el (smtpmail-read-response): - * net/ange-ftp.el (ange-ftp-guess-hash-mark-size) - (ange-ftp-vms-add-file-entry): - * play/gametree.el (gametree-looking-at-ply) - (gametree-current-branch-score): - * progmodes/ada-xref.el (ada-prj-find-prj-file) - (ada-xref-find-in-modified-ali, ada-find-in-src-path): - * progmodes/cperl-mode.el (condition-case): - * progmodes/ebrowse.el (ebrowse-set-tree-indentation) - (ebrowse-set-member-buffer-column-width) - (ebrowse-select-1st-to-9nth): - * progmodes/etags.el (etags-snarf-tag): - * progmodes/flymake.el (flymake-parse-line): - * progmodes/idlw-shell.el (idlwave-shell-parse-line) - (idlwave-shell-filter-bp, idlwave-shell-goto-next-error) - (idlwave-shell-menu-def): - * progmodes/ps-mode.el (ps-run-goto-error): - * progmodes/vhdl-mode.el (vhdl-read-offset, vhdl-load-cache) - (vhdl-speedbar-contract-level): - * term/mac-win.el (x-handle-numeric-switch): - * term/sun-mouse.el (sun-get-frame-data): - * term/w32-win.el (x-handle-numeric-switch): - * term/x-win.el (x-handle-numeric-switch): - * textmodes/ispell.el (ispell-parse-output): - * textmodes/nroff-mode.el (nroff-outline-level): - * textmodes/reftex-cite.el (reftex-bib-sort-year) - (reftex-bib-sort-year-reverse, reftex-format-citation): - * textmodes/reftex-parse.el (reftex-init-section-numbers) - (reftex-section-number): - * textmodes/texinfmt.el (texinfo-paragraphindent): - Replace `string-to-int' by `string-to-number'. - - * international/latexenc.el: Add page marker to force the "Local - Variables:" string out of the last page. - -2005-05-16 Nick Roberts - - * progmodes/gud.el (gud-tooltip-mode): Add gud prefix to - tooltip-change-major-mode. - (gud-tooltip-print-command): Remove case where gud-minor-mode - is gdb ("--fullname"). - (gud-tooltip-tips): Turn GUD tooltips off for this case and - explain to user. - -2005-05-16 Jay Belanger - - * calc/calc-store.el (calc-copy-special-constant): New function. - - * calc/calc-ext.el (calc-init-extensions): Add binding for - `calc-copy-special-constant'. - - * calc/calc-prog.el (calc-edit-format-macro-buffer): Add a case - for the `calc-copy-special-constant' command. - -2005-05-16 Nick Roberts - - * subr.el (left-fringe-p): New function. - - * progmodes/compile.el (compilation-setup): Set local value of - overlay-arrow-string to "" always. - (compilation-set-window): Left fringe then don't scroll. - No left fringe then no arrow and scroll message to top. - (compilation-context-lines): Adjust doc string accordingly. - -2005-05-16 Kim F. Storm - - * ido.el (ido-magic-forward-char, ido-magic-backward-char) - (ido-magic-delete-char): New commands for C-f, C-b, C-d. - (ido-wide-find-dir-or-delete-dir): New command for M-d. - (ido-define-mode-map): Bind them. Add C-x prefix to fallback commands. - (ido-read-file-name): Handle commands with ido property value - equal to find-file as reading a file name, to allow C-d to enter dired. - (ibuffer-find-file): Add ido property with value find-file. - -2005-05-15 Kim F. Storm - - * subr.el (open-network-stream-nowait): Remove. - (open-network-stream-server): Remove. - -2005-05-15 Richard M. Stallman - - * faces.el (describe-face): Output a definition link button. - - * help-mode.el (help-face-def): New button type. - - * emacs-lisp/copyright.el (copyright-fix-years): - Match properly if the first year is 2-digit. - Don't mess up the whitespace after the years by filling. - - * dired-aux.el (dired-mark-confirm): - Pass t to dired-get-marked-files for DISTINGUISH-ONE-MARKED. - - * dired.el (dired-map-over-marks): New arg DISTINGUISH-ONE-MARKED. - (dired-get-marked-files): New arg DISTINGUISH-ONE-MARKED. - (dired-mark-pop-up): Handle FILES = (t FILE) specially. - - * emacs-lisp/lisp-mode.el (lisp-mode-variables): - Set font-lock-comment-start-skip. - - * font-lock.el (font-lock-comment-start-skip): New variable. - (font-lock-comment-end-skip): New variable. - (font-lock-fontify-syntactically-region): Use them if non-nil. - -2005-05-15 Jay Belanger - - * calc/calc-store.el (calc-store-value): Return a string rather - than display it as a message. - Use calc-var-name for variable name. - (calc-store-into): Add the result of calc-store-value to message. - (calc-copy-variable): Add a message. - (calc-store-exchange): Improve error messages. - (calc-store-binary, calc-store-map): Don't reset the values of - special constants. - -2005-05-14 Luc Teirlinck - - * emacs-lisp/derived.el (define-derived-mode): Add link to Elisp - manual to docstring. - - * files.el (hack-local-variables-confirm): Add STRING argument. - Make the function handle non file visiting buffers correctly. - (hack-local-variables-prop-line, hack-local-variables) - (hack-one-local-variable): Use STRING arg of - `hack-local-variables-confirm'. - -2005-05-14 Michael Albinus - - Sync with Tramp 2.0.49. - - * net/tramp.el (tramp-handle-dired-call-process) - (tramp-handle-insert-directory):`insert-buffer' cannot be used - because the contents of the Tramp buffer is changed before - insertion (`expand-file' and alike). - (tramp-handle-insert-directory): If `localname' has an empty - nondirectory name, it must not be quoted. - (tramp-pre-connection): Add parameter CHUNKSIZE. Make local - variable `tramp-chunksize'. Change callees. - (tramp-open-connection-setup-interactive-shell): Check remote host - for buggy `send-process-string' implementation. - Set `tramp-chunksize' if found. Reported by Michael Kifer - (and a lot of other people all the years). - (tramp-handle-shell-command): `insert-buffer' cannot be used - because the contents of the Tramp buffer is changed before - insertion (`expand-file' and alike). Reported by Fr,Ai(Bd,Ai(Bric Bothamy - . - (tramp-set-auto-save): Actions should be done for Tramp file name - handler only. Ange-FTP has its own auto-save mechanism. - Reported by Richard G. Bielawski . - (tramp-set-auto-save-file-modes): Set file modes of - `buffer-auto-save-file-name' to ?\600 as fallback solution. - Reported by Ferenc Wagner . - (tramp-bug): Remove obsolete variable. - (tramp-append-tramp-buffers): Rewrite partly. More suitable check - for presence of `mml-mode'. Make it running for older Emacsen as well. - -2005-05-14 John Paul Wallington - - * ibuf-ext.el (define-ibuffer-filter filename): - If `dired-directory' is a list, use its car. - -2005-05-14 Daniel Brockman (tiny change) - - * ibuffer.el (define-ibuffer-column filename): - If `dired-directory' is a list, use its car. - -2005-05-14 Richard M. Stallman - - * subr.el (symbol-file): Doc fix. - - * emacs-lisp/bytecomp.el (byte-compile-nogroup-warn): New function. - (byte-compile-form): Call byte-compile-nogroup-warn. - (byte-compile-warning-types): Doc fix. - - * eshell/esh-mode.el (eshell-find-tag): Use with-no-warnings. - - * progmodes/cc-engine.el (c-literal-faces): - Add font-lock-comment-delimiter-face. - - * net/net-utils.el (dig): Use with-no-warnings. + * help.el (view-emacs-news): + * hi-lock.el (hi-lock-write-interactive-patterns): + * ido.el (ido-to-end, ido-set-matches-1): + * image-dired.el (image-dired-display-thumbs, image-dired-remove-tag) + (image-dired-mark-tagged-files): + * jka-cmpr-hook.el (jka-compr-get-compression-info): + * printing.el (pr-eval-local-alist, pr-eval-setting-alist): + * ps-print.el (ps-background, ps-begin-file) + (ps-build-reference-face-lists): + * simple.el (clone-buffer): + * startup.el (command-line): + * tempo.el (tempo-insert-template, tempo-is-user-element) + (tempo-forward-mark, tempo-backward-mark): + * woman.el (woman-dired-define-keys): Use `mapc' rather than `mapcar'. - * mail/supercite.el (sc-cite-frame-alist, sc-uncite-frame-alist) - (sc-recite-frame-alist, sc-default-cite-frame) - (sc-default-uncite-frame, sc-default-recite-frame) - (sc-attrib-selection-list, sc-rewrite-header-list): - Mark as risky-local-variable. +2007-09-25 Glenn Morris - * international/ogonek.el (ogonek-jak, ogonek-how): - Don't use beginning-of-buffer. + * textmodes/tex-mode.el (tex-font-script-display): Doc fix. - * emacs-lisp/eldoc.el (eldoc-documentation-function): Add autoload. + * view.el (view-search-no-match-lines): Add a doc string. + Rewrite to simplify and work better. - * calendar/solar.el (solar-data-list): Move definition up. +2007-09-24 Dan Nicolaescu - * dnd.el (dnd-protocol-alist): Add autoload. + * progmodes/cc-mode.el (c-mode-base-map): + Use c-indent-line-or-region instead of c-indent-line. - * progmodes/sh-script.el: Many doc usage fixes. - (sh-indent-after-do): Change default to match common styles. + * indent.el (indent-for-tab-command): First check if the region is + active. -2005-05-13 Luc Teirlinck +2007-09-24 Micha,Ak(Bl Cadilhac - * files.el (interpreter-mode-alist) - (auto-mode-interpreter-regexp): Doc fixes. + * whitespace.el (whitespace-tickle-timer): Don't install the timer if + whitespace-rescan-timer-time is 0. -2005-05-13 Matt Hodges +2007-09-24 Karl Berry - * tmm.el (tmm-get-keymap): Include only active menus and menu items. + * international/mule.el (coding-system-base): Fix doc string grammar. - * emacs-lisp/easymenu.el (easy-menu-define): Doc fixes. +2007-09-24 Michael Albinus -2005-05-13 Jan Dj,Ad(Brv + * net/tramp.el (tramp-completion-mode-p): Rename from + `tramp-completion-mode'. Revert logic, check `return', `newline' + and such alike. Packages like Icicles tend to use other completion + characters but `tab' and `space' only. - * dired.el (dired-mode): make-variable-buffer-local => - make-local-variable. +2007-09-24 Adam Hupp -2005-05-13 YAMAMOTO Mitsuharu + * progmodes/python.el (run-python): Import emacs module without + waiting; prevents lockup on error. - * term/mac-win.el (mac-select-convert-to-string): Try coding - systems in mac-script-code-coding-systems if specified one cannot - encode string for `com.apple.traditional-mac-plain-text'. +2007-09-23 Richard Stallman -2005-05-13 Daniel Pfeiffer + * mail/sendmail.el (mail-bury): Delete the frame + if this frame looks like it was made for this message. - * progmodes/make-mode.el (makefile-targets-face) - (makefile-shell-face, makefile-makepp-perl-face): New faces. - (makefile-dependency-regex): Fix it to not make the colon in - $(var:a=b) special. - (makefile-rule-action-regex): New regexp for highlighting embedded - Shell strings. - (makefile-macroassign-regex): Handle != for highlighting as - embedded Shell strings. - (makefile-var-use-regex): New const. - (makefile-statements, makefile-automake-statements) - (makefile-gmake-statements, makefile-makepp-statements) - (makefile-bsdmake-statements): New consts. - (makefile-make-font-lock-keywords): New function. - (makefile-automake-font-lock-keywords) - (makefile-gmake-font-lock-keywords) - (makefile-makepp-font-lock-keywords) - (makefile-bsdmake-font-lock-keywords): New consts. - (makefile-mode-map): Add switchers between the various submodes. - (makefile-mode): Document the availability of the variants. - (makefile-automake-mode, makefile-gmake-mode) - (makefile-makepp-mode, makefile-bsdmake-mode): New derived modes. + * completion.el (completion-separator-self-insert-command) + (completion-separator-self-insert-autofilling): + If `self-insert-command' has been remapped, use the substitute. - * files.el (auto-mode-alist, interpreter-mode-alist): Set up the - new variants of makefile-mode. + * simple.el (copy-region-as-kill): Doc fix. -2005-05-12 Stefan Monnier + * textmodes/org.el (org-confirm-shell-link-function) + (org-confirm-elisp-link-function): Doc fixes. - * font-lock.el (font-lock-comment-delimiter-face): Fix up - the inheritance. +2007-09-23 Glenn Morris -2005-05-12 Luc Teirlinck + * ses.el (ses-calculate-cell): Don't evaluate unsafe formulae. - * progmodes/inf-lisp.el (inferior-lisp-mode-hook) - (inferior-lisp-load-hook): Convert defcustoms back to defvars. +2007-09-23 Dan Nicolaescu - * files.el (normal-mode): Extend the scope of the - `enable-local-variables' binding to include the `set-auto-mode' call. - (magic-mode-alist): Doc fix. + * term/w32-win.el (w32-drag-n-drop): Use mapc instead of mapcar. + + * term/tvi970.el (terminal-init-tvi970): Likewise. + + * term/sun-mouse.el (print-mouse-format): Likewise. + + * term/sun.el (scroll-down-in-place, scroll-up-in-place): + Use forward-line instead of previous-line and next-line. + +2007-09-22 Juri Linkov + + * textmodes/org.el (org-confirm-shell-link-function): Doc fix. + + * tutorial.el (tutorial--default-keys): Update standard bindings: + rename `iconify-or-deiconify-frame' to `suspend-frame', + and `save-buffers-kill-emacs' to `save-buffers-kill-terminal'. + +2007-09-22 Juri Linkov + + * startup.el (fancy-startup-text, fancy-about-text, fancy-startup-tail): + Add help-echo to external links and to links without description. + (fancy-splash-insert): Use help-echo from the 3rd element of the + link specification list, or "Follow this link" if it's nil. Doc fix. + +2007-09-22 Juri Linkov + + * startup.el (command-line): Rename `inhibit-startup-message' to + `inhibit-startup-screen'. + (fancy-about-text): Use shorter label for "Ordering Manuals". + (fancy-startup-tail): Add optional arg `concise'. When `concise' + is nil, display a line with "To start..." and 3 links to useful + tasks. Display the "Dismiss" button and "Don't show this message + again" only when concise is non-nil. + (fancy-startup-screen): Call `fancy-startup-tail' with optional + arg `concise'. If CONCISE is non-nil, display a concise version + of the splash screen in another window. Otherwise, switch to the + startup buffer in the same window. + (startup-echo-area-message): Change displayed binding from + C-h C-p (describe-project) to C-h C-a (about-emacs), and change + text "about the GNU system and GNU/Linux" to "about GNU Emacs and + the GNU system". + (display-startup-screen): Fix buffer name from "*About GNU Emacs*" + to "*GNU Emacs*". + (display-about-screen): Don't check the existence of the buffer + "*About GNU Emacs*". + (display-splash-screen): Make alias to `display-startup-screen'. + (command-line-1): Rename `inhibit-startup-message' to + `inhibit-startup-screen'. Inhibit startup screen when Emacs is + started with command line options "-f", "-funcall", "-e", "-eval", + "-execute", "-insert", "-find-file", "-file", "-visit". + Inhibit startup screen when Emacs is started with a file name only + on tty (i.e. don't inhibit it when started with a file name like + "emacs FILE..." on a window system). + (command-line-1): Simplify logic of displaying the startup screen: + if file-count > 0, then display the concise version in another + window, otherwise display full version in the same window. + + * help.el (help-map): Bind C-h C-a to about-emacs. + (help-for-help-internal): Add C-a description to C-h help text. -2005-05-12 Stefan Monnier +2007-09-22 Dan Nicolaescu - * font-lock.el (font-lock-comment-delimiter-face): Inherit from - font-lock-comment-face rather than copying its setting. + * emacs-lisp/checkdoc.el (checkdoc-force-docstrings-flag) + (checkdoc-permit-comma-termination-flag): Autoload the + safe-local-variable setting. -2005-05-12 Andreas Schwab + * bookmark.el (bookmark-xemacsp): Remove. + (bookmark-make): Don't use bookmark-xemacsp, + use (featurep 'xemacs) instead. - * eshell/esh-mode.el (eshell-send-input): Doc fix. + * speedbar.el (speedbar-frame-mode) + (speedbar-frame-reposition-smartly) + (speedbar-set-mode-line-format, speedbar-reconfigure-keymaps) + (speedbar-check-vc): Remove use of non-existent variable + dframe-xemacsp, use (featurep 'xemacs) instead. -2005-05-12 Lute Kamstra + * indent.el (indent-for-tab-command): Indent the region if + transient-mark-mode and the region is active. - * emacs-lisp/generic.el (define-generic-mode): Don't generate a - defcustom for the mode hook variable. Delete the last argument. - * generic-x.el: Fix callers of define-generic-mode. - (generic-x-modes): Delete group. - (show-tabs-tab-face, show-tabs-space-face): Put them in the - generic-x customization group. +2007-09-21 Francesco Potort,Al(B -2005-05-12 Kim F. Storm + * progmodes/octave-inf.el (inferior-octave-mode): Use add-hook to + add inferior-octave-directory-tracker to the buffer-local value + of comint-input-filter-functions. - * font-lock.el (font-lock-negation-char-face): Default to "off". +2007-09-21 Dan Nicolaescu - * progmodes/cc-fonts.el (c-basic-matchers-before): Don't apply - font-lock-negation-char-face to ! in !=. + * xt-mouse.el (xterm-mouse-mode): Re-enable suspend-tty-functions. -2005-05-12 Masatake YAMATO +2007-09-21 Juanma Barranquero - * add-log.el (find-change-log): Fix typos in the docstring - of function. + * frame.el (suspend-frame): Call `iconify-or-deiconify-frame' also + on w32 frames. -2005-05-11 Arne J,Ax(Brgensen +2007-09-21 Stefan Monnier - * international/latexenc.el (latexenc-find-file-coding-system): - Avoid `re-search-forward' when looking for input encoding because - of speed and safety. Better regular expressions for recognizing - input encoding. Limit a search for TeX-master/tex-main-file to - the local variable section. + * startup.el (normal-top-level): Remove DISPLAY from + process-environment to let it be computed dynamically in callproc.c. -2005-05-11 Dan Nicolaescu + * frame.el (frame-initialize, make-frame): + * faces.el (tty-set-up-initial-frame-faces): + * env.el (setenv): Don't set display-environment-variable. - * progmodes/sh-script.el (sh-mode-default-syntax-table): Set the - syntax of $ to "'" (quote). + * server.el (server-getenv-from): Remove. Use getenv-internal instead. + (server-create-tty-frame): Don't set unused `tty' property. + Set `display' instead of display-environment-variable. + (server-create-window-system-frame): No display-environment-variable. -2005-05-11 Reiner Steib +2007-09-21 Michael Albinus - * dnd.el (dnd-protocol-alist): Improve custom type. + * rfn-eshadow.el (rfn-eshadow-setup-minibuffer-hook) + (rfn-eshadow-update-overlay-hook): New defvars. + (rfn-eshadow-setup-minibuffer, rfn-eshadow-update-overlay): + Run the hooks. - * dired.el (dired-dnd-protocol-alist): New variable. - (dired-mode): Use `dired-dnd-protocol-alist'. Move call of - `dired-mode-hook' to the end. + * net/tramp.el (tramp-rfn-eshadow-overlay): New defvar. + (tramp-rfn-eshadow-setup-minibuffer) + (tramp-rfn-eshadow-update-overlay): New defuns. Hook into + rfn-eshadow.el. -2005-05-11 Stefan Monnier + * net/tramp-smb.el (tramp-smb-errors): Add error message for call + timeout. - * font-lock.el (font-lock-fontify-syntactically-region): Don't use - comment-end if comment-start-skip is not set. - Obey the font-lock-comment-delimiter-face variables. +2007-09-21 Glenn Morris -2005-05-11 Stefan Monnier + * obsolete/sun-fns.el (emacs-quit-menu): Remove emacstool-related code. + * term/sun-mouse.el (suspend-emacstool): Remove. + * term/sun.el: Remove emacstool-related code. - * files.el (executable-find): Move from executable.el. Use - locate-file. - * progmodes/executable.el (executable-find): Move to files.el. + * emacs-lisp/bytecomp.el (byte-compile-warnings) + (byte-compile-warnings-safe-p): Add `mapcar'. + (byte-compile-warning-types): Add mapcar and make-local. + (byte-compile-normal-call): Add option to suppress mapcar warning. + (top-level): Use mapc rather than mapcar in eval-when-compile. - * font-lock.el (font-lock-fontify-keywords-region): Use a marker - when trying to ensure forward progress. + * textmodes/tex-mode.el (tex-validate-region): Handle escaped parens. + (tex-next-unmatched-eparen, tex-last-unended-eparen): New functions. + (latex-forward-sexp-1, latex-backward-sexp-1): Doc fix. + Handle escaped parens. + (latex-forward-sexp): Doc fix. -2005-05-11 Chong Yidong + * eshell/esh-mode.el (eshell-output-filter-functions): Add + eshell-postoutput-scroll-to-bottom. - * mouse-sel.el (mouse-sel-follow-link-p): New function. - (mouse-select, mouse-select-internal, mouse-extend-internal): - Use it to implement mouse-1-click-follows-link functionality. + * loadup.el: Remove termdev. -2005-05-11 Richard M. Stallman + * progmodes/fortran.el (fortran-mode-abbrev-table, fortran-line-length): + * progmodes/f90.el (f90-mode-abbrev-table): Use mapc rather than mapcar. - * font-lock.el (font-lock-fontify-syntactically-region): - Use font-lock-comment-delimiter-face for comment delimiters. +2007-09-21 Markus Triska -2005-05-10 Jay Belanger + * emacs-lisp/bytecomp.el (byte-compile-normal-call): Warn when + `mapcar' is called for effect. - * calc/calc-help.el (calc-m-prefix-help): Add mention of - preserving embedded modes. +2007-09-21 Kevin Ryde -2005-05-10 Richard M. Stallman + * international/mule.el (sgml-html-meta-auto-coding-function): + Bind `case-fold-search' to t. - * progmodes/sh-script.el (sh-indent-for-do): Default to 0. +2007-09-20 Stefan Monnier - * progmodes/ada-mode.el (ada-adjust-case-skeleton): - Move from ada-stmt.el. - (ada-mode): Add ada-adjust-case-skeleton to skeleton-end-hook. + * termdev.el: Remove. - * progmodes/ada-stmt.el (ada-adjust-case-skeleton): - Move to ada-mode.el. - (ada-stmt-mode-hook): Delete; do the work in ada-mode. + * frame.el (get-device-terminal): New function. Moved from termdev.el. + (frames-on-display-list): Use it. - * cus-edit.el (custom-file): Call file-chase-links. + * bindings.el: Bind C-z to suspend-frame instead of suspend-emacs. - * files.el (read-directory-name): Fix previous change. - (hack-local-variables-confirm): New function. - (hack-local-variables-prop-line, hack-local-variables) - (hack-one-local-variable): Use it. + * termdev.el (terminal-id): Ask terminal-live-p before giving up. -2005-05-10 Lute Kamstra +2007-09-20 Richard Stallman - * font-lock.el (font-lock-keywords-alist) - (font-lock-removed-keywords-alist): Clarify docstrings. + * newcomment.el (comment-add): If EXTRA, double `comment-add' value. -2005-05-10 Nick Roberts +2007-09-20 Stefan Monnier - * progmodes/gdb-ui.el (gdb-macro-info): New variable. - (gdb-source-info): Check for preprocessor info. - (gdb-tooltip-print-1): New function. Don't print tooltip if it is - a macro for a function. - (gdb-info-breakpoints-custom): Try to find file again if not already - found (user might have used GDB dir command). - (gdb-get-location): Update gdb-location-alist correctly for change - to gdb-info-breakpoints-custom. + * add-log.el (add-log-current-defun): Fix thinko w.r.t derived-mode-p. - * progmodes/gud.el (gud-tooltip-mode): Require tooltip to be safe. - (gud-tooltip-print-command): Add gdbmi case. - (gud-tooltip-tips): Call gdb-tooltip-print-1 first if there is - preprocessor info. +2007-09-20 Glenn Morris -2005-05-09 Reiner Steib + * textmodes/tex-mode.el (tex-validate-buffer): Use paragraph + motion functions, rather than hard-coding "\n\n". + (tex-validate-region): Check for eobp, to speed up. + (tex-next-unmatched-end): Doc fix. - * startup.el (fancy-splash-insert): Fix typo in doc string. +2007-09-19 Stefan Monnier -2005-05-09 Juanma Barranquero + * files.el (auto-mode-alist): Use archive-mode for .rar files. - * obsolete/float.el (string-to-float): - * obsolete/hilit19.el (hilit-add-pattern): - * obsolete/rnews.el (news-parse-range, news-select-message) - (news-get-pruned-list-of-files): Replace `string-to-int' by - `string-to-number'. + * international/mule.el (auto-coding-alist): Rar archives are binary. - * obsolete/uncompress.el: Set `find-file-not-found-functions', not - `find-file-not-found-hooks'; use `add-hook'. - (uncompress-while-visiting): Set `write-file-functions', not - `write-file-hooks'; use `add-hook'. + * arc-mode.el: Add basic support for Rar. + (archive-find-type): Recognize Rar's signature. + (archive-desummarize): New fun. + (archive-summarize): Use it to restore the buffer's data in case + someone wants to switch to some other major mode. + (archive-resummarize): Use it as well. + (archive-rar-summarize, archive-rar-extract): New functions. -2005-05-09 Kim F. Storm + * filesets.el: Remove spurious * in docstrings. + (filesets-running-xemacs): Remove. Use (featurep 'xemacs) instead. + (filesets-conditional-sort): Remove unused arg `simply-do-it'. + (filesets-ingroup-collect): Remove unused arg `depth'. + (filesets-update): Remove unused arg `version'. - * emulation/cua-base.el (cua-copy-region, cua-cut-region) - (cua-paste): Handle clipboard action. - (cua--init-keymaps): Remap clipboard-kill-region and - clipboard-kill-ring-save. + * finder.el (finder-compile-keywords): Fix up comment style. + (finder-mouse-face-on-line): previous-line -> forward-line. -2005-05-08 Eli Zaretskii + * recentf.el: Remove spurious * in docstrings. + (recentf-save-list): Fix up comment style. - * emacs-lisp/easy-mmode.el (easy-mmode-pretty-mode-name): - Improve commentary. + * progmodes/octave-mod.el: Remove spurious * in docstrings. + (octave-mode-map): Move init into declaration and remove \t binding. + (octave-mode-startup-message): Remove unused var. + (octave-scan-blocks): Remove unused arg `from'. + (octave-forward-block, octave-down-block, octave-up-block): + Update callers. - * simple.el (next-error-overlay-arrow-position): Revert the change - made on 2005-04-30. + * progmodes/meta-mode.el (meta-mode-syntax-table): Move init into decl. + (meta-mode-map): Likewise and remove \t binding. -2005-05-07 Jay Belanger + * net/snmp-mode.el: Remove spurious * in docstrings. + (snmp-rfc1155-types, snmp-rfc1213-types, snmp-rfc1902-types) + (snmp-rfc1903-types, snmp-rfc1155-access, snmp-rfc1902-access) + (snmp-rfc1212-status, snmp-rfc1902-status): Remove list wrappers now + that completion accepts lists of strings. + (snmp-mode-syntax-table): Move initialization into declaration. + (snmp-mode-map): Likewise and remove \t binding. + (snmp-common-mode): Set tab-always-indent according to snmp-t-a-i. + (snmp-indent-line, snmp-mode-imenu-create-index): Remove unused var. + (snmp-indent-command): Remove. - * calc/calcsel2.el (calc-commute-left, calc-commute-right) - (calc-sel-unpack, calc-sel-isolate): Rename variable `reselect' to - `calc-sel-reselect'. + * emacs-lisp/lisp-mode.el (lisp-mode-shared-map): Use the default TAB + binding, so tab-always-indent works right. - * calc/calc-mode.el (calc-save-modes): Reset the modes list if - Calc is in embedded mode. +2007-09-19 Johannes Weiner -2005-05-07 Eli Zaretskii + * net/browse-url.el (browse-url-elinks-new-window): New function. + (browse-url-elinks): Use browse-url-elinks-new-window. + Accept optional second argument `new-window'. Fix typo in doc-string. + (browse-url-elinks-sentinel): Use browse-url-elinks-new-window. + Improve error message. - * progmodes/compile.el (compilation-setup): - Set overlay-arrow-string to an empty string on text terminals. +2007-09-19 Micha,Ak(Bl Cadilhac - * textmodes/ispell.el (ispell-program-name): Try looking for - "aspell" along exec-path, and if found, use it as the default - speller program. + * net/browse-url.el (browse-url-url-encode-chars): Use the right + parameter name in the function body. + Reported by Johannes Weiner. -2005-05-07 Jirka Kosek (tiny change) +2007-09-19 Glenn Morris - * international/mule.el (sgml-xml-auto-coding-function): - Recognize encoding='FOO' in single quotes as well as in double quotes. + * net/socks.el (socks-open-network-stream): Signal an explicit + error if the port associated with a service string can't be found. -2005-05-07 Johan Bockg,Ae(Brd + * textmodes/tex-mode.el (tex-terminate-paragraph): + Use backward-paragraph. - * emacs-lisp/cl-macs.el (cl-transform-lambda): Recognize `declare' - as well as `interactive', so that defmacro* would recognize - `declare' forms. +2007-09-19 Stefan Monnier -2005-05-07 Eli Zaretskii + * server.el (server-running-p): New function. - * emacs-lisp/easy-mmode.el (easy-mmode-pretty-mode-name): - Explain more about the LIGHTER arg's usage in the doc string. - Add commentary to clarify what the code does. Fix the regexp that - strips whitespace from LIGHTER. Quote LIGHTER before using it, - since it could have characters special to regular expressions. +2007-09-18 Jason Rumney -2005-05-07 Matt Hodges (tiny change) + * term/w32-win.el (w32-focus-frame): Make obsolete alias for + x-focus-frame. - * replace.el (occur-1): Bind inhibit-read-only so that - erase-buffer doesn't barf on read-only text properties (likewise - for add-text-properties in occur-engine). Mark buffer as unmodified. - (occur-engine): Don't set buffer-read-only here. + * frame.el (select-frame-set-input-focus, select-frame-by-name): + Use x-focus-frame for w32. -2005-05-06 Stefan Monnier +2007-09-17 David Kastrup - * pcvs.el (cvs-mode-commit, cvs-mode-edit-log): Don't fiddle with - list-buffers-directory. This caused the *cvs-commit* buffer to be - sometimes mistakenly reused as a *cvs* buffer. + * textmodes/tex-mode.el (tex-verbatim-environments): + Eliminate CL dependency. -2005-05-07 Nick Roberts +2007-09-17 Richard Stallman - * tooltip.el: Move code for GUD tooltips into gud.el. - (require): CL no longer needed to compile case. - (tooltip-mode): Do not toggle functions for GUD tooltips. - (tooltip-gud-tips-p): Remove. Replace with minor mode - gud-tooltip-mode in gud.el. - (tooltip-gud-modes, tooltip-gud-display, tooltip-gud-echo-area) - (tooltip-gud-toggle-dereference): Rename in gud.el by replacing - tooltip-gud prefix with gud-tooltip and obsolete. - (tooltip-change-major-mode, tooltip-activate-mouse-motions-if-enabled) - (tooltip-mouse-motions-active, tooltip-activate-mouse-motions) - (tooltip-mouse-motion): Mouse movement functions/variable. - Rename in gud.el by adding gud prefix. - (tooltip-gud-original-filter, tooltip-gud-dereference) - (tooltip-gud-event, tooltip-toggle-gud-tips) - (tooltip-gud-process-output, tooltip-gud-print-command) - (tooltip-gud-tips): GUD tooltip functions/variables. Rename in - gud.el by replacing tooltip-gud prefix with gud-tooltip. - (gdb-tooltip-print): Move to gdb-ui.el. + * newcomment.el (comment-add): New arg EXTRA. + (comment-region-default): Pass EXTRA if not indenting lines. - * progmodes/gud.el: Move code for GUD tooltips from tooltip.el. - (require): CL needed to compile case. - (gud-tooltip-mode): Use to toggle GUD tooltips instead of - tooltip-gud-tips-p. Make it a minor-mode. - (gud-find-file): Only prepare GUD tooltips if gud-tooltip-mode is t. - (gud-menu-map): GUD tooltips use gud-tooltip-mode now. - (gud-tooltip-modes, gud-tooltip-display, gud-tooltip-echo-area) - (gud-tooltip-change-major-mode) - (gud-tooltip-activate-mouse-motions-if-enabled) - (gud-tooltip-mouse-motions-active, gud-tooltip-activate-mouse-motions) - (gud-tooltip-mouse-motion, gud-tooltip-toggle-dereference) - (gud-tooltip-original-filter, gud-tooltip-dereference) - (gud-tooltip-event, tooltip-toggle-gud-tips) - (gud-tooltip-process-output, gud-tooltip-print-command) - (gud-tooltip-tips): Move from tooltip.el. - - * progmodes/gdb-ui.el (gdb-tooltip-print): Move from tooltip.el. - (gdb-cpp-define-alist-flags): Doc fix. - (gdb-set-gud-minor-mode-1): Only prepare GUD tooltips if - gud-tooltip-mode is t. - -2005-05-06 Stefan Monnier - - * net/goto-addr.el (goto-address-fontify): Make sure the overlays - evaporate if their text is deleted. - (goto-address-at-point): Make it work as a mouse binding as well. - (goto-address-at-mouse): Obsolete it. Update users. - -2005-05-06 Glenn Morris - - * calendar/appt.el (top-level): No longer activate on load. - -2005-05-06 Juanma Barranquero - - * calendar/cal-bahai.el (mark-bahai-diary-entries): - * net/webjump.el (webjump): - * progmodes/idlw-help.el (idlwave-do-context-help1) - (idlwave-highlight-linked-completions): - * textmodes/po.el (po-find-file-coding-system-guts): - Replace `assoc-ignore-case' by `assoc-string'. - -2005-05-06 Eli Zaretskii - - * files.el (locate-file): Doc fix. - - * progmodes/gdb-ui.el (gdb-cpp-define-alist-program): Doc fix. - Remove the redundant test for ms-dos. - - * progmodes/cmacexp.el (c-macro-preprocessor): Use locate-file to - look for the preprocessor with exec-suffixes. If not found in - standard places, look in exec-path. Remove most of the tests that - used system-type. - - * loadup.el: Load jka-cmpr-hook instead of jka-comp-hook. - - * jka-compr.el (jka-compr-uninstall): Add autoload cookie. - - * jka-cmpr-hook.el: Renamed from jka-comp-hook.el, to avoid - file-name clash with jka-compr.el on 8+3 filesystems. - -2005-05-06 YAMAMOTO Mitsuharu - - * term/mac-win.el: Don't define or bind scroll bar functions if - x-toolkit-scroll-bars is t. - (x-select-text, x-get-selection-value): Clear - x-last-selected-text-clipboard if x-select-enable-clipboard is - nil. - (PRIMARY): Put mac-scrap-name property. - (mac-select-convert-to-file-url): New function. - (public.file-url): New selection target type. Add to - selection-converter-alist. - (x-get-selection, x-selection-value): Handle it. - (x-cut-buffer-or-selection-value): New alias. - -2005-05-05 Roland Winkler - - * textmodes/bibtex.el (bibtex-summary): Use current BibTeX - entry to avoid calling bibtex-find-entry with arg global - being t. Remove arg key. - (bibtex-summary-function, bibtex-complete-crossref-cleanup) - (bibtex-copy-summary-as-kill): Change accordingly. - -2005-05-05 Stefan Monnier - - * textmodes/org.el (org-get-entries-from-diary): Remove unused vars. - (org-agenda-date-later): Use with-current-buffer. - -2005-05-05 Luc Teirlinck - - * emacs-lisp/byte-run.el (define-obsolete-function-alias) - (define-obsolete-variable-alias): Doc Fixes. - -2005-05-06 Kim F. Storm - - * simple.el (line-move-1): Fix 2005-04-26 change. Must still use - vertical-motion when selective-display is active. - - * ido.el (ido-setup-hook): New hook. - (ido-define-mode-map-hook): Remove hook; use ido-setup-hook instead. - (ido-input-stack): New var. - (ido-define-mode-map): Bind M-b to ido-push-dir. Move old - ido-next-work-file binding to M-O. - Bind M-f to ido-wide-find-file-or-pop-dir. - (ido-define-mode-map): Don't run ido-define-mode-map-hook. - (ido-read-internal): Run ido-setup-hook. - Catch quit in read-file-name and read-string to cancel edit. - Handle new push, pop, and pop-all exit codes (for M-b/M-f). - Automatically pop-all when completing a directory name (RET). - (ido-file-internal): Add with-no-warnings around ffap and dired code. - (ido-exit-minibuffer): Use exit-minibuffer instead of throw. - (ido-wide-find-file, ido-wide-find-dir): Catch quit to cancel find. - (ido-push-dir, ido-pop-dir, ido-wide-find-file-or-pop-dir): - New functions for M-b/M-f to move among the directory components. - (ido-make-merged-file-list): Catch quit to cancel merge. - (ido-make-dir-list): Delete "." when ido-input-stack is non-empty. - (ido-completion-help): No warnings for ido-completion-buffer-full. - -2005-05-05 Daniel Pfeiffer +2007-09-17 Micha,Ak(Bl Cadilhac - * font-lock.el (font-lock-negation-char-face): New face and variable. - * progmodes/cc-fonts.el (c-cpp-matchers): Use it. - * progmodes/sh-script.el (sh-font-lock-keywords): Use it. - * progmodes/cperl-mode.el (cperl-init-faces): Use it. - * progmodes/make-mode.el (makefile-font-lock-keywords): Use it. + * net/browse-url.el (browse-url-url-encode-chars): New function. + URL-encode some chars in a string. + (browse-url-encode-url): Rewrite using the previous function. + (browse-url-file-url): Use `browse-url-url-encode-chars'. + (browse-url-elinks-sentinel): Fix typo. + (browse-url-new-window-flag): Doc change. -2005-05-05 Juanma Barranquero +2007-09-17 Glenn Morris - * emacs-lisp/byte-run.el (define-obsolete-function-alias): - Fix typo in docstring. + * textmodes/tex-mode.el (tex-compilation-parse-errors): Prefer the + filename from `--file-line-error', if it is available. - * progmodes/ebrowse.el (ebrowse-install-1-to-9-keys) - (ebrowse-print-statistics-line) - (ebrowse-electric-position-mode-hook): Fix typo in docstring. +2007-09-17 Joe Wells (tiny change) - * term/w32-win.el (image-library-alist): Add additional name for - Xpm library. + * textmodes/tex-mode.el (tex-compilation-parse-errors): Also match + TeX `--file-line-error' format. -2005-05-05 Nick Roberts +2007-09-17 Dan Nicolaescu - * progmodes/cmacexp.el (c-macro-preprocessor): Update for BSD and - use gcc instead of cpp. + * xt-mouse.el: Delete add-hook calls that were moved to + xterm-mouse-mode. + (xterm-mouse-mode): Disable resume-tty-functions, explain why it + does not work. - * progmodes/gdb-ui.el (gdb-cpp-define-alist-flags): New variable. - (gdb-create-define-alist): Use it. - (gdb-cpp-define-alist-program): Update for MS-DOS. +2007-09-17 Richard Stallman -2005-05-04 Nick Roberts + * cus-face.el (custom-theme-set-faces): Undo previous change. - * progmodes/cmacexp.el (c-macro-preprocessor): Update for Mac OS X. + * faces.el (face-spec-set): When FRAME nil, look up each frame in SPEC. -2005-05-04 Richard M. Stallman +2007-09-17 Glenn Morris - * help.el (describe-key): No error when UNTRANSLATED is nil. + * textmodes/tex-mode.el (tex-region): Simplify previous change, + handling the case where the region is not in `tex-main-file'. + (tex-region-1): Delete. + (tex-region-header): New function, doing the header part of the + old tex-region-1. - * simple.el (line-move-1): Fix previous change to signal errors - appropriately. +2007-09-16 Stefan Monnier -2005-05-03 Ulf Jasper + * simple.el (newline): Simplify use of prefix-numeric-value. + (line-move-partial): Remove unused var `ppos'. + (line-move-1): Replace 9999 with most-positive-fixnum. + (move-end-of-line): Use more efficient single-property search. + (move-beginning-of-line): Remove unused var `start'. + (blink-matching-open): Restructure in a more functional style. - * calendar/icalendar.el (icalendar-version): Now at 0.12. - (icalendar-duration-correction): Remove. - (icalendar--get-event-properties): Split result at commas. - (icalendar--decode-isoduration): New optional argument - DURATION-CORRECTION. - (icalendar--convert-ordinary-to-ical, icalendar--convert-sexp-to-ical) - (icalendar--convert-yearly-to-ical, icalendar--convert-weekly-to-ical) - (icalendar--convert-block-to-ical, icalendar--convert-float-to-ical) - (icalendar--convert-date-to-ical, icalendar--convert-cyclic-to-ical) - (icalendar--convert-anniversary-to-ical): New functions, extracted - from icalendar-export-region, with bug fixes. - (icalendar-export-region): Use the above functions. - (icalendar-import-buffer): Check before saving diary file. - (icalendar--convert-recurring-to-diary) - (icalendar--convert-non-recurring-all-day-to-diary) - (icalendar--convert-non-recurring-not-all-day-to-diary): New functions, - extracted from icalendar--convert-ical-to-diary, with bug fixes. - (icalendar--convert-ical-to-diary): Use the above functions. +2007-09-16 Micha,Ak(Bl Cadilhac -2005-05-03 Nick Roberts + * calendar/holidays.el (list-holidays): Remove the cyclic alias. - * progmodes/cc-mode.el (cc-define-alist, cc-create-define-alist): - Remove these recent additions. - (c-mode): Restore to before 2005-04-28. +2007-09-16 Stefan Monnier - * progmodes/cc-vars.el (cc-define-list-program): Remove this - recent addition. + * server.el (server-clients): Only keep procs, no properties any more. + (server-client): Remove. + (server-client-get, server-client-set): Remove, replace all callers by + process-get and process-put resp. + (server-clients-with, server-add-client, server-delete-client) + (server-create-tty-frame, server-create-window-system-frame) + (server-process-filter, server-execute, server-visit-files) + (server-buffer-done, server-kill-buffer-query-function) + (server-kill-emacs-query-function, server-switch-buffer) + (server-save-buffers-kill-terminal): Update accordingly. + + * server.el (server-with-environment): Simplify. + (server-select-display, server-unselect-display): Re-add functions that + seem to have been lost in the multi-tty merge. + (server-eval-and-print, server-create-tty-frame) + (server-create-window-system-frame, server-goto-toplevel) + (server-execute, server-return-error): New functions extracted from + server-process-filter. + (server-execute-continuation): New functions. + (server-process-filter): Restructure so that all arguments are analysed + first and then acted upon in a subsequent stage. This way + server-goto-toplevel can be executed later, when we know if + it's necessary. + Remove the "-version" and "-version-good" support. - * progmodes/gdb-ui.el (gdb-cpp-define-alist-program) - (gdb-define-alist): New variables. - (gdb-create-define-alist): New function. - (gdb-set-gud-minor-mode-1): Handle gdb-define-alist. - (gdb-source, gdb-memory-set-repeat-count): Replace string-to-int - with string-to-number. - (gdb-reset): Kill gdb-define-alist. Move assignments outside loop. +2007-09-16 Drew Adams - * progmodes/gud.el: Replace string-to-int with string-to-number. - (gud-find-file): Handle gdb-define-alist. + * cus-edit (custom-face-edit-activate): Doc fix. - * tooltip.el (tooltip-gud-tips): Use gdb-define-alist. +2007-09-16 Glenn Morris -2005-05-02 Jay Belanger + * calendar/cal-menu.el, calendar/calendar.el, calendar/diary-lib.el: + Following cal-bahai renaming, update all instances of + list-bahai-diary-entries to diary-bahai-list-entries, + mark-bahai-diary-entries to diary-bahai-mark-entries, + calendar-goto-bahai-date to calendar-bahai-goto-date, + insert-bahai-diary-entry to diary-bahai-insert-entry, + insert-monthly-bahai-diary-entry to diary-bahai-insert-monthly-entry, + insert-yearly-bahai-diary-entry to diary-bahai-insert-yearly-entry, and + calendar-print-bahai-date to calendar-bahai-print-date. - * calc/calc-aent.el (math-read-token): - * calc/calc-bin.el (calc-word-size): - * calc/calc-ext.el (calc-read-number-fancy): - * calc/calc-forms.el (calc-time, calc-date-notation, math-this-year) - (math-parse-date, math-parse-standard-date, calcFunc-tzone): - * calc/calc-frac.el (calc-over-notation): - * calc/calc-graph.el (calc-graph-plot, calc-graph-set-styles) - (calc-graph-num-points, calc-graph-init): - * calc/calc-prog.el (calc-read-parse-table-part) - (calc-edit-macro-repeats): - * calc/calc-yank.el (calc-do-grab-rectangle): - * calc/calc.el (calcDigit-key, math-read-number, math-read-bignum): - Replace `string-to-int' by `string-to-number'. + * textmodes/tex-mode.el (tex-region): Handle the case where the + region is not in `tex-main-file'. Move the old code that applies + to both cases... + (tex-region-1): ...to this new function. -2005-05-02 Kim F. Storm +2007-09-15 Stefan Monnier - * kmacro.el: Use executing-kbd-macro-index variable. + * vc.el (vc-process-sentinel): New function. + (vc-exec-after): Use it instead of using ugly hackish analysis and + construction of Elisp code. + (vc-sentinel-movepoint): New dynamically scoped var. + (vc-print-log, vc-annotate): Set it to move the user's point. -2005-05-02 Thien-Thi Nguyen + * vc-cvs.el (vc-cvs-annotate-time): Use inhibit-read-only and + inhibit-modification-hooks. - * net/rlogin.el (rlogin-parse-words): Delete func. - (rlogin): Use split-string, not rlogin-parse-words. - Also, if there are option-like elements in the parsed args, - take the host to be the first arg immediately following them. - Suggested by Michael Mauger. + * calendar/cal-bahai.el (mark-bahai-diary-entries): Fix up typo. + (calendar-bahai-print-date, calendar-bahai-goto-date) + (diary-bahai-list-entries, diary-bahai-insert-entry): + New names to clean up the namespace a bit more. + (calendar-goto-bahai-date, calendar-print-bahai-date): Compat aliases. -2005-05-01 Luc Teirlinck +2007-09-15 Glenn Morris - * subr.el (executing-macro): Use `define-obsolete-variable-alias'. + * calendar/holidays.el (holiday-list): Rename it back to + `list-holidays', but leave `holiday-list' as an alias. -2005-05-02 Nick Roberts + * textmodes/bibtex-style.el (bibtex-style-indent-basic): Specify a + custom group. - * progmodes/cc-mode.el (cc-create-define-alist): Use a shell. - (cc-mode-cpp-program): Rename to cc-define-list-program and - move to cc-vars.el. + * textmodes/css-mode.el (css): New custom group. + (css-electrick-keys, css-selector, css-property) + (css-indent-offset): Specify custom group. - * progmodes/cc-vars.el (cc-define-list-program): - Change to "gcc -E -dM -". Make customizable. +2007-09-15 Stefan Monnier -2005-05-02 Kim F. Storm + * pcvs.el (cvs-tags-list, cvs-retrieve-revision, cvs-find-modif) + (cvs-execute-single-file): Use process-file. + (cvs-run-process): Use start-file-process. - * emulation/cua-base.el: Fix check for CUA-mode if no init file. +2007-09-15 Dan Nicolaescu -2005-05-02 Nick Roberts + * xt-mouse.el (xterm-mouse-mode): Add hooks here not at the top + level. Remove the hooks when turning off the mode. - * progmodes/cc-mode.el (cc-mode-cpp-program): Change to "gcc -E". + * term/xterm.el: Require xt-mouse at compile time. + (terminal-init-xterm): Turn on xterm mouse tracking for this + terminal if xterm-mouse-mode is enabled. - * international/mule-util.el (truncate-string): Remove alias and - obsolete declaration. +2007-09-14 Dan Nicolaescu - * international/mule-cmds.el (update-iso-coding-systems): - Remove alias and obsolete declaration. + * term/xterm.el (xterm-function-map): Replace bindings that were + deleted by the merge. - * international/mule.el (coding-system-parent): Remove alias and - obsolete declaration. +2007-09-14 Ulf Jasper - * subr.el (define-function, sref): Remove aliases and obsolete - declarations. - (chars-in-region): Remove obsolete declaration. + * play/bubbles.el (bubbles-version): Bump value to "0.5". + (bubbles-mode-map): Move define-key statements here. + (bubbles-game-theme-menu): Ditto. + (bubbles-graphics-theme-menu): Ditto. + (bubbles-menu): Ditto. + (bubbles-mode): Initialize buffer-undo-list, redisplay. + (bubbles--initialize): Reset buffer-undo-list, redisplay. + (bubbles-plop): Set buffer-undo-list, redisplay. + (bubbles-undo): Reset buffer-undo-list, redisplay. + (bubbles--show-images): Take care of missing text properties. -2005-05-01 Richard M. Stallman +2007-09-14 Glenn Morris - * info.el (Info-mode): Set widen-automatically to nil, locally. + * startup.el (fancy-startup-text, fancy-about-text): Fix face + quoting. - * simple.el (widen-automatically): New variable. - (pop-global-mark): Obey widen-automatically. + * calendar/cal-hebrew.el, calendar/cal-menu.el + * calendar/calendar.el, calendar/diary-lib.el + * calendar/holidays.el: Rename all instances of + list-calendar-holidays callers to calendar-list-holidays, + list-holidays to holiday-list, check-calendar-holidays to + calendar-check-holidays, mark-calendar-holidays to + calendar-mark-holidays, and filter-visible-calendar-holidays to + holiday-filter-visible-calendar. -2005-05-01 Dan Nicolaescu +2007-09-14 Dan Nicolaescu - * term/xterm.el (function-key-map): Call substitute-key-definition - before the keymap size is increased by a lot of define-key calls. + * term/xterm.el (xterm-function-map): Add C-M- bindings. -2005-05-01 Richard M. Stallman +2007-09-13 Sascha Wilde (tiny change) - * subr.el (add-to-invisibility-spec, remove-from-invisibility-spec): - Rename ARG to ELEMENT. Doc fix. + * play/bubbles.el (bubbles--initialize-images): Fix bug: + Use transparent background for empty cells in graphics mode. -2005-05-01 Nick Roberts +2007-09-13 Jari Aalto - * allout.el (allout-exposure): Remove macro and obsolete declaration. - Remove references to allout-exposure/change to allout-new-exposure. + * man.el (Man-default-man-entry): At end of line, continue looking + to the next line for possible end of hyphenated command. - * emacs-lisp/bytecomp.el (dot, dot-min, dot-max): Don't create - bytecode symbols. +2007-09-13 Chris Moore - * subr.el (dot, dot-marker, dot-min, dot-max, buffer-flush-undo) - (compiled-function-p, focus-frame, unfocus-frame): - Remove aliases and obsolete declarations. - Back out inadvertent changes from previous commit. + * shell.el (shell-resync-dirs): Don't move the cursor relative to + the command being edited. -2005-05-01 Luc Teirlinck +2007-09-12 Jim Meyering (tiny change) - * files.el (require-final-newline): Make Custom tags consistent - with mode-require-final-newline. - (mode-require-final-newline): Doc fix. + * emacs-lisp/copyright.el (copyright-names-regexp): Doc fix: typo. -2005-05-01 Stefan Monnier +2007-09-12 Dan Nicolaescu - * international/latexenc.el (latexenc-find-file-coding-system): - Fix regular expressions. + * term/xterm.el (xterm-function-map): Add bindings for M-S- and + C-M-S- keys. -2005-05-01 David Kastrup + * term/rxvt.el (rxvt-function-map): Initialize in the declaration. - * international/latexenc.el (latexenc-find-file-coding-system): - Fix regular expressions. +2007-09-12 Micha,Ak(Bl Cadilhac -2005-05-01 Nick Roberts + * net/browse-url.el (browse-url-encode-url): Fix an infinite loop. + New argument `filename-p' to use one set of confusing chars or another. + (browse-url-file-url): Use the argument. + Suggested by Johannes Weiner. - * subr.el (string-to-int): Make obsolete. +2007-09-12 Romain Francoise -2005-04-30 Richard M. Stallman + * cus-start.el (all): Revert 2007-09-08 change. - * simple.el (next-error-overlay-arrow-position): Turn off, for ttys. +2007-09-12 Aaron Hawley - * loadup.el: load jka-comp-hook. + * jka-cmpr-hook.el (jka-compr-compression-info-list): Use gzip to + extract .Z files, since it is more common than uncompress. - * jka-compr.el: Many functions and vars moved to jka-comp-hook.el. - (jka-compr-handler): Add autoload. `put' calls moved - to jka-comp-hook.el. - (compression, jka-compr): defgroups moved to jka-comp-hook.el. - (jka-compr-inhibit): Autoload. +2007-09-12 Glenn Morris - * jka-comp-hook.el: New file. - Enable the mode by default. + * textmodes/org-publish.el (org-publish-org-to-html): Remove + duplicate function definition. - * files.el (backup-buffer-copy): Use copy-file instead - of write-region, and put back the 'excl. +2007-09-10 Chris Moore -2005-04-30 Chong Yidong + * diff-mode.el (diff-sanity-check-hunk): + Also accept single-line hunks. - * progmodes/flymake.el (flymake-split-string) - (flymake-split-string, flymake-log, flymake-pid-to-names) - (flymake-reg-names, flymake-get-source-buffer-name) - (flymake-unreg-names, flymake-add-line-err-info) - (flymake-add-err-info): Clarify docstrings. - (flymake-popup-menu, flymake-make-emacs-menu) - (flymake-make-xemacs-menu): Add docstrings. - (flymake-get-buffer-*, flymake-set-buffer-*): Functions deleted. - Set variables directly throughout. +2007-09-10 Chong Yidong -2005-04-30 Nick Roberts + * startup.el (startup-screen-inhibit-startup-screen) + (pure-space-overflow-message): New vars. + (fancy-splash-insert): Allow functions for face and link specs. + (fancy-splash-head): Remove unused arg. Move splash text... + (fancy-startup-text, fancy-about-text): ...here. + (fancy-startup-tail): Rename from fancy-splash-tail. + (fancy-startup-screen, fancy-about-screen): Split off from + fancy-splash-screens. + (display-startup-screen): New function. + (display-about-screen): Rename from display-splash-screen. + (command-line-1): Use concise startup screen if necessary. - * progmodes/cc-mode.el (cc-create-define-alist): Check that file - exists. Initialize cc-define-alist. - (c-mode): Add cc-create-define-alist locally to after-save-hook. - If there is no file (Macroexpansion) don't create an alist. +2007-09-10 Thien-Thi Nguyen -2005-04-29 Sam Steingold + * net/browse-url.el (browse-url-encode-url): Use copy-sequence. + Reported by Jan Dj,Ad(Brv . - * progmodes/cc-mode.el (cc-mode-cpp-program): New user variable. - (cc-create-define-alist): Use it instead of the hard-coded string. +2007-09-10 Stefan Monnier -2005-04-29 Stefan Monnier + * progmodes/python.el: Merge changes from Dave Love's v2007-Sep-10. + (python-font-lock-keywords): Update to the 2.5 version of the language. + (python-quote-syntax): Let-bind font-lock-syntactic-keywords to nil. + (python-backspace): Only behave funny in code. + (python-compilation-regexp-alist): Add PDB stack trace regexp. + (inferior-python-mode): Add PDB prompt regexp. + (python-fill-paragraph): Refine the fenced-string regexp. + (python-find-imports): Handle imports spanning several lines. + (python-mode): Add `class' to hideshow support. - * international/mule-conf.el (file-coding-system-alist): Fix regexp - for latexenc. +2007-09-10 Dave Love -2005-04-29 Lute Kamstra + * outline.el (outline-4, outline-5, outline-7): + Move font-lock-builtin-face down from 4 to 7 to better keep the + progression of color brightness, and to better match Org-mode's faces. + +2007-09-10 Micha,Ak(Bl Cadilhac + + * progmodes/meta-mode.el (meta-font-lock-keywords) + (font-lock-match-meta-declaration-item-and-skip-to-next) + (meta-comment-indent, meta-indent-previous-line) + (meta-indent-unfinished-line, meta-beginning-of-defun) + (meta-end-of-defun, meta-common-initialization): Handle \f. + (meta-indent-unfinished-line): Do not handle a `%' in a string as + a comment-start. + + * files.el (file-modes-char-to-who, file-modes-char-to-right) + (file-modes-rights-to-number): Auxiliary functions for symbolic to + numeric notation of file modes. + (file-modes-symbolic-to-number): New. Convert symbolic modes to its + numeric value. + (read-file-modes): New. Read either an octal value of a file mode or a + symbolic value, and return its numeric value. + + * dired-aux.el (dired-do-chmod): Change to use the built-in + `set-file-modes' and the previous symbolic mode parsing functions. + +2007-09-10 Stefan Monnier + + * textmodes/texinfo.el: Remove spurious * in docstrings. + (texinfo-mode-syntax-table, texinfo-mode-map): + Initialize in the declaration. + + * tmm.el: Remove spurious * in docstrings. + (tmm-prompt): Use with-current-buffer. + + * vcursor.el: Remove spurious * in docstrings. + (vcursor-map): Initialize in the declaration. + (vcursor-use-vcursor-map): Use define-minor-mode. + (vcursor-toggle-vcursor-map): Keep as an obsolete alias. + + * wid-browse.el (widget-browse-mode-map, widget-minor-mode-map): + Initialize in the declaration. + (widget-minor-mode): Use define-minor-mode. + + * woman.el (woman-mode-map, woman-syntax-table): + Initialize in the declaration. + +2007-09-09 Tassilo Horn + + * doc-view.el: New file. + +2007-09-09 Juri Linkov + + * Makefile.in (update-authors): Add etc/ to AUTHORS. + + * makefile.w32-in (update-authors): Add etc/ to AUTHORS. + + * startup.el (initial-buffer-choice): Rename choice "Splash screen" + to "Startup screen". Fix docstring. + (inhibit-startup-screen): Rename from `inhibit-splash-screen'. + (inhibit-splash-screen): Make alias to `inhibit-startup-screen'. + (inhibit-startup-message): Change alias to `inhibit-startup-screen'. + (initial-scratch-message): Fix docstring. + (fancy-startup-text): Move link to Emacs Manual below Emacs Guided + Tour (which is a kind of tutorial and will be next to Emacs Tutorial). + Add link to "Customize Startup" and set interval between links to + 5 spaces. + (fancy-about-text): Add links "Authors" and "Contributing". + (fancy-splash-head): Add text "Welcome to " on the startup screen, + and "This is " on the about screen. Add link to + "http://www.gnu.org/software/emacs/" for "GNU Emacs". + For the about screen move emacs version to the header from + `fancy-splash-tail' (as it's done already for normal about screen). + (fancy-splash-tail): Insert emacs version only for startup screen. + (normal-splash-screen): Remove duplicate empty lines. + (normal-about-screen): Add links "Authors" and "Contributing". - * emacs-lisp/generic.el: Improve commentary section. - (define-generic-mode): Improve docstring. + * menu-bar.el (menu-bar-help-menu): + Move "About Emacs" and "About GNU" to the end of the Help menu. + Move "Emacs Psychotherapist" after "Send Bug Report...". + Move "External Packages" after "Find Emacs Packages". + +2007-09-09 Michael Albinus + + * net/tramp.el (top): Remove declarations of `tramp-gw-*' symbols, + they are useless with the byte compiler. + (tramp-make-temp-file, tramp-make-tramp-temp-file): Move up. + (tramp-do-copy-or-rename-file-directly): Rearrange let-bindings. + (tramp-compute-multi-hops): Mask `tramp-gw-*' symbols. + (tramp-file-name-real-host, tramp-file-name-port) + (tramp-find-method, tramp-find-user, tramp-find-host): Make them + defuns. -2005-04-29 Carsten Dominik + * net/tramp-cache.el (top): Improve error message when + `tramp-persistency-file-name' is corrupted. + +2007-09-09 Carsten Dominik + + * textmodes/org.el (org-re): Also replace the :alpha: class. + (org-todo-tag-alist): Variable removed. + (org-todo-key-alist, org-todo-key-trigger) New variables. + (org-use-fast-todo-selection): New option. + (org-log-done): Docstring fixed. + (org-deadline-warning-days): New default value 14. + (org-edit-timestamp-down-means-later) New option. + (org-tag-alist): Docstring fixed. + (org-fast-tag-selection-include-todo): New option. + (org-export-language-setup): New languages added. + (org-set-regexps-and-options): Compute the new variables. + (org-paste-subtree): Cleaning up. + (org-remember-apply-template): New escape %A. + (org-todo): Call fast TODO selection. + (org-fast-todo-selection): New function. + (org-add-log-note): Allow prefix for abort exit. + (org-at-property-p, org-entry-properties) + (org-columns-get-autowidth-alist): Use :alpha: class. + (org-get-wdays): New function. + (org-agenda-remove-date): New variable. + (org-agenda-get-deadlines): Use `org-get-wdays'. + (org-agenda-get-deadlines): Reverse ee before returning. + (org-format-agenda-item): New argument REMOVE-RE. + (org-agenda-convert-date): Baha'i calendar added. + (org-infile-export-plist): Also find DATE line. + (org-get-min-level): New function. + (org-export-as-html, org-export-as-ascii): Use the date format. + (org-shiftup, org-shiftdown): Use. + `org-edit-timestamp-down-means-later'. + (org-assign-fast-keys): New function. + +2007-09-08 Fredrik Axelsson + + * cus-start.el (all): Add prefer-window-split-horizontally from + window.c. + +2007-09-08 Eli Zaretskii + + * net/browse-url.el (browse-url-galeon): Fix last change. + (top-level): Require cl when compiling. + +2007-09-08 Carsten Dominik + + * textmodes/org-export-latex.el: arch-tag restored. + + * textmodes/org-publish.el: arch-tag restored. + +2007-09-08 Masatake YAMATO + + * progmodes/which-func.el (which-func-modes): Add diff-mode. + + * progmodes/cc-langs.el: Support new keywords added to + objective-c frontend of gcc. + (c-simple-stmt-kwds): Add @throw. + (c-block-stmt-2-kwds): Add @synchronized. + (c-block-stmt-1-kwds): Add @finally and @try. + +2007-09-07 Carsten Dominik + + * textmodes/org.el (org-edit-timestamp-down-means-later): New option. + (org-agenda-after-show-hook): New variable. + (org-columns-compile-format) + (org-columns-get-autowidth-alist, org-buffer-property-keys) + (org-entry-properties, org-at-property-p): Allow [:alnum:] in + property names. + (org-get-wdays): New function. - * textmodes/org.el (many places): Change to quiet the byte compiler. - (org-prefix-format-compiled): New variable. - (org-compile-prefix-format): New function. - (org-timeline, org-agenda, org-diary): Call org-compile-prefix-format. - (org-agenda-prefix-format, org-timeline-prefix-format): New options. - (org-agenda-get-scheduled): Check if file is opened in `org-mode'. - (org-get-entries-from-diary): Use `org-get-time-of-day' for - consistency with entries from `org-mode' files. - (org-get-time-of-day): Fix bug with partial matches early in a line. - (org-non-link-chars): New constant. - (org-link-regexp): Respect `org-non-link-chars'. - (org-agenda-day-view): Remove command. - (org-agenda-toggle-week-view): Rename from `org-agenda-week-view'. - (org-follow-bbdb-link, org-store-link): Search also company field. - (org-highlight-overlay): New variable. - (org-highlight, org-unhighlight): New functions. - (org-agenda-mode): Add pre-command-hook to remove highlight. - (org-evaluate-time-range): Behavior depends upon whether time stamp - contains a time or not. - (org-show-subtree, org-show-entry): New functions. - (org-agenda-cleanup-fancy-diary): Remove empty lines. +2007-09-07 Stefan Monnier -2005-04-28 Luc Teirlinck + * simple.el (normal-erase-is-backspace-setup-frame): Massage. - * comint.el (comint-output-filter-functions): Add autoload cookie. + * term/xterm.el (xterm-function-map): Initialize in the declaration. -2005-04-28 Kim F. Storm + * vc-arch.el (vc-arch-checkin): Fix typo. - * ido.el (ido-everywhere): Fix last change. +2007-09-07 Johan Bockg,Ae(Brd -2005-04-28 Arne J,Ax(Brgensen + * cus-face.el (custom-theme-set-faces): Set face attributes + locally for each frame. - * international/latexenc.el: New file. - * international/mule-conf.el (file-coding-system-alist): For .tex, - .ltx, .dtx and .drv extensions, use `latexenc-find-file-coding-system'. +2007-09-07 Stefan Monnier -2005-04-28 Lute Kamstra + * progmodes/fortran.el (fortran-mode): Set font-lock-syntactic-keywords + via font-lock-defaults. - * font-lock.el (font-lock-add-keywords) - (font-lock-remove-keywords): Clarify docstring. - (font-lock-keywords-alist, font-lock-removed-keywords-alist): - Don't start docstrings with a `*'. - (font-lock-update-removed-keyword-alist): Give it a docstring. + * emacs-lisp/bytecomp.el (byte-compile-log-file): Check major-mode via + derived-mode-p. - * generic-x.el: Update commentary section. - Only require font-lock when compiling. - Define all modes conditionally. - Place all generic modes in the generic-x-modes customization group. - (generic-x-modes): New customization group. - (generic-default-modes, generic-mswindows-modes) - (generic-unix-modes, generic-other-modes): New constants. - (generic-define-mswindows-modes, generic-define-unix-modes): - Update docstrings. Make them obsolete. - (generic-extras-enable-list): New default value. Update docstring. - Improve :type. Change :set function. - (bat-generic-mode-syntax-table, rul-generic-mode-syntax-table): - Fix docstring. +2007-09-07 Thien-Thi Nguyen - * emacs-lisp/generic.el (generic-mode-internal): - Simplify font-lock-defaults. - (define-generic-mode): Fix docstring. + * progmodes/autoconf.el (autoconf-definition-regexp): + Handle optional square brackets around definition name. -2005-04-28 Stefan Monnier +2007-09-07 Johannes Weiner - * progmodes/grep.el (grep-mode-font-lock-keywords): Use the - font-lock-face property to highlight matches. + * net/browse-url.el (browse-url-browser-function): Add elinks. + (browse-url-elinks-wrapper): New option. + (browse-url-encode-url, browse-url-elinks) + (browse-url-elinks-sentinel): New functions. + (browse-url-file-url, browse-url-netscape, browse-url-mozilla) + (browse-url-firefox, browse-url-galeon, browse-url-epiphany): + Use new function browse-url-encode-url. -2005-04-28 Nick Roberts +2007-09-07 Glenn Morris - * progmodes/cc-mode.el (cc-create-define-alist): New function. - (cc-define-alist): New variable. - (c-mode): Make it local and initialize it. + * version.el (emacs-version): Revert 2007-08-29 change: no need to + say if multi-tty is present. - * progmodes/gdb-ui.el (gdb-active-process): New variable. - (gdb-exited): New function. - (gdb-annotation-rules): Use it. - (gdb-starting): Set gdb-active-process to t. - (gdb-stopping): Amend doc string. - (gdb-reset): Set gdb-active-process to nil. +2007-09-07 Stefan Monnier - * tooltip.el (tooltip-gud-tips): Show the associated #define - directives when a C program under GDB is not executing. + * cus-start.el (split-window-preferred-function): Add custom info. -2005-04-27 Stefan Monnier + * calendar/holidays.el (holiday-list, calendar-check-holidays) + (calendar-mark-holidays, calendar-list-holidays) + (holiday-filter-visible-calendar): New names to clean up namespace. + (filter-visible-calendar-holidays, list-calendar-holidays) + (mark-calendar-holidays, check-calendar-holidays, list-holidays): + Add compatibility aliases. + (calendar-check-holidays, calendar-mark-holidays) + (calendar-holiday-list, holiday-filter-visible-calendar): Use dolist. + (holiday-sexp): Replace append with list. + (holiday-filter-visible-calendar): Replace append with push. - * progmodes/cperl-mode.el (cperl-mode): Don't precompile the - font-lock-fontify-syntactic-keywords. + * woman.el: Remove spurious * in docstrings. + (woman-mini-help, woman-non-underline-faces, woman0-rename) + (woman-topic-all-completions-merge, woman-file-name-all-completions) + (woman-select-symbol-fonts, woman-expand-directory-path): Use dolist. + (woman-write-directory-cache, woman-display-extended-fonts) + (WoMan-log-begin, WoMan-log-1): Use with-current-buffer. + (woman-really-find-file): Use pop-to-buffer if switch-to-buffer fails. + (woman-mode): Use inhibit-read-only. + (woman-negative-vertical-space): Use dotimes. + (woman2-tagged-paragraph, woman-tab-to-tab-stop): Use insert-char. - * font-lock.el (font-lock-default-fontify-region): Don't force - parse-sexp-lookup-properties to nil. +2007-09-06 Romain Francoise -2005-04-27 Alexander Klimov (tiny change) + * vc-bzr.el (vc-bzr-admin-lastrev): New defconst. + (vc-bzr-workfile-version): Use it. - * man.el (man-mode-syntax-table): Set up `:' to have - word-constituent syntax. +2007-09-06 Sean O'Rourke -2005-04-27 Lute Kamstra + * complete.el (PC-do-completion): Don't try to treat + empty string as an abbreviation. - * novice.el (disable-command): Don't add spurious newlines to the - init file. Reported by Dan Jacobson . +2007-09-06 Johan Bockg,Ae(Brd -2005-04-26 Jay Belanger + * help-fns.el (describe-variable): Keep doc's text properties. - * calc/calc-yank.el (calc-edit-finish): Make sure there is more - than one window before deleting window. +2007-09-06 Dan Nicolaescu -2005-04-26 Luc Teirlinck + * vc.el (vc-default-diff-tree): Pass a list to the diff vc command + instead of a file. - * shell.el (shell-prompt-pattern): Doc fix. - (shell-mode): Set paragraph-separate buffer locally to "\\'". +2007-09-06 Glenn Morris - * comint.el (comint-prompt-regexp, comint-get-old-input) - (comint-use-prompt-regexp) - (comint-use-prompt-regexp-instead-of-fields) - (comint-replace-by-expanded-history, comint-send-input) - (comint-output-filter, comint-get-old-input-default) - (comint-line-beginning-position, comint-bol, comint-show-output) - (comint-backward-matching-input, comint-forward-matching-input) - (comint-next-prompt, comint-previous-prompt): - Rename `comint-use-prompt-regexp-instead-of-fields' to - `comint-use-prompt-regexp'. Keep old name as alias and declare - obsolete. - (comint-use-prompt-regexp): Shorten first line of doc string. + * emacs-lisp/checkdoc.el (checkdoc-minor-mode-string): New. + (checkdoc-minor-mode): Allow user to specify lighter via + checkdoc-minor-mode-string. - * ielm.el (inferior-emacs-lisp-mode): Adapt to above name change. - Set paragraph-separate buffer locally to "\\'". +2007-09-05 Richard Stallman - * hippie-exp.el (try-expand-line, try-expand-line-all-buffers): - Adapt to above name change. + * startup.el (fancy-startup-text): Rename from fancy-splash-text. + Several items removed, simplified, or put on one line. + (fancy-about-text): Add substantial contents, part of startup text. + (fancy-splash-head): Make "GNU" or "GNU/Linux" a link. + (normal-splash-screen): Call normal-mouse-startup-screen, + normal-no-mouse-startup-screen, or normal-about-screen. + (normal-mouse-startup-screen): New fn, broken out, shortened. + (normal-no-mouse-startup-screen): New fn, broken out. + (normal-about-screen): New function, contents all new. - * net/net-utils.el (nslookup-prompt-regexp, ftp-prompt-regexp) - (smbclient-prompt-regexp): Ditto. +2007-09-05 Micha,Ak(Bl Cadilhac - * progmodes/inf-lisp.el (inferior-lisp-prompt): Ditto. + * emacs-lisp/rx.el (rx): Fix typo in docstring. -2005-04-27 Nick Roberts +2007-09-05 Glenn Morris - * progmodes/gdb-ui.el (gdb-location-alist): Rename from - gdb-location-list. - Break lines that are over 80 characters wide. + * cus-edit.el (custom-buffer-create-internal): Check tool-bar-mode + is bound. -2005-04-26 Stefan Monnier +2007-09-05 Johan Bockg,Ae(Brd - * pcvs-info.el (cvs-fileinfo->full-path, cvs-display-full-path): - New fun and var, to preserve compatibility. + * emacs-lisp/advice.el (ad-make-advised-docstring): Highlight note + in doc string. - * pcvs.el, pcvs-info.el: Rename "full-path" -> "full-name". +2007-09-04 Dan Nicolaescu + + * server.el (server-start, server-unload-hook): Undo previous change. + + * xt-mouse.el: Undo previous change. + +2007-09-04 Juri Linkov + + * startup.el (fancy-about-text): New variable. + (fancy-splash-delay, fancy-splash-max-time): Remove user options. + (fancy-current-text, fancy-splash-stop-time) + (fancy-splash-outer-buffer): Remove variables. + (fancy-splash-head, fancy-splash-tail): Add new optional argument + `startup' and use it to conditionally display different texts for + Startup and About screens. Don't display Help commands on the About + screen. + (fancy-splash-screens-1): Remove function and move its content to + `fancy-splash-screens' to the part that dislpays the About screen. + (exit-splash-screen): Don't treat specially exiting from + alternating screens. + (fancy-splash-screens): Rename argument `static' to `startup'. + Fix docstring. Remove code for displaying alternating screens. + Use arg `startup' in calls to `fancy-splash-head', `fancy-splash-tail'. + Remove let-bind for `fancy-splash-outer-buffer' and add let-bind + for `inhibit-read-only'. + (normal-splash-screen): Rename argument `static' to `startup'. + Fix docstring. Use argument `startup' to conditionally display + different texts for Startup and About screens. Don't display Help + commands on the About screen. Remove `unwind-protect' `sit-for' + delay and `kill-buffer' after it. + (display-startup-echo-area-message): Remove call to + `use-fancy-splash-screens-p' because image.el is preloaded and + doesn't display "Loading image... done". + (display-splash-screen): Rename argument `static' to `startup'. + Fix docstring. -2005-04-26 Dominique de Waleffe (tiny change) +2007-09-04 Dan Nicolaescu - * pcvs-info.el (cvs-fileinfo->backup-file): Don't pass the full file - name to file-newer-than-file-p. + * server.el (server-start, server-unload-hook): + suspend-tty-functions has been renamed to suspend-tty-hook. -2005-04-26 Richard M. Stallman + * xt-mouse.el: Likewise. resume-tty-functions has been renamed to + resume-tty-hook. - * simple.el (line-move-1): Avoid using vertical-motion in easy cases. +2007-09-03 Emanuele Giaquinta (tiny change) - * progmodes/python.el (python-mode): - Use new name eldoc-documentation-function. + * loadup.el: Fix merge problem, only load "button" once. - * hexl.el (hexl-mode): Use new name eldoc-documentation-function. +2007-09-03 Glenn Morris - * emacs-lisp/eldoc.el (eldoc-mode): Doc fix. - (eldoc-documentation-function): - Rename from eldoc-print-current-symbol-info-function. Calls changed. + * vc-svn.el (vc-svn-print-log): If there is only one file, use + "Working file:" as the prefix, for the sake of + log-view-current-file. -2005-04-26 Nick Roberts +2007-09-02 Dan Nicolaescu - * emacs-lisp/byte-run.el (define-obsolete-function-alias): New macro. + * term/xterm.el (xterm-modify-other-keys-terminal-list): New variable. + (xterm-turn-on-modify-other-keys): Only turn on modify-other-keys + if the selected frames is in + xterm-modify-other-keys-terminal-list. + (xterm-turn-off-modify-other-keys): Add an optional frame + parameter. Only turn off modify-other-keys if FRAME is in + xterm-modify-other-keys-terminal-list. + (xterm-remove-modify-other-keys): New function. + (terminal-init-xterm): Use it. Deal with delete-frame hook. + Add the selected frame to xterm-modify-other-keys-terminal-list. -2005-04-25 Dan Nicolaescu +2007-09-02 Jan Dj,Ad(Brv - * term/xterm.el (function-key-map): Fix strings for - {C,S,A,C-S}-f[1-4]. Use substitute-key-definition to bind - {C,S,A,C-S}-{f1-f12}. + * term/x-win.el (x-gtk-stock-map): Map diropen to system-file-manager. + (icon-map-list): New variable. + (x-gtk-map-stock): Use icon-map-list. -2005-04-26 Kenichi Handa +2007-09-02 Romain Francoise - * international/mule-cmds.el (select-safe-coding-system): - Fix previous change. + * log-view.el (log-view-current-file): Balance parens. -2005-04-26 Lute Kamstra +2007-09-02 Glenn Morris - * emacs-lisp/easy-mmode.el (define-minor-mode): Fix docstring. + * comint.el (comint-mode): Don't set scroll-conservatively. - * font-lock.el (font-lock-fontify-region-function): Fix docstring. - (font-lock-comment-delimiter-face): Ditto. + * eshell/em-unix.el (eshell/time): Stringify and flatten the + non-command arguments. - * calc/calc.el (calc-trail-mode): Don't set font-lock-defaults. + * log-view.el (log-view-current-file): Give a more explicit error + if log-view-file-re fails to find a match. -2005-04-25 Jay Belanger +2007-09-01 Thien-Thi Nguyen - * calc/calc-help.el (calc-view-news): Let-bind inhibit-read-only - to t while inserting information; use help-mode. + * emacs-lisp/bytecomp.el (byte-recompile-directory): + Fix bug: Don't expand top-level file name more than once. + Reported by Dmitry Antipov . -2005-04-25 Dan Nicolaescu +2007-09-01 Stefan Monnier - * term.el (ansi-term-color-vector): Use the xterm colors. - (term-raw-map): Don't add mappings for \eO and \e[. Map deletechar. + * server.el (server-process-filter): Don't display the splash screen. + It's annoying enough on the initial screen and becomes positively + obnoxious here. -2005-04-25 Lute Kamstra +2007-08-31 Stefan Monnier - * font-core.el (font-lock-defaults): Fix docstring. + * emacs-lisp/avl-tree.el: Use defstruct rather than macros. + Change naming to use "avl-tree--" for internal functions. - * font-lock.el (font-lock-syntactic-face-function): Fix docstring. +2007-08-31 Dan Nicolaescu -2005-04-25 Kenichi Handa + * term/x-win.el (x-menu-bar-open): Delete duplicated function from + the merge. + (global-set-key): Delete f10 mapping, now done in menu-bar.el. + (provide): Move to the end of file. - * international/mule-cmds.el (select-safe-coding-system): - Don't check consistency with coding: spec, etc if raw-text or - no-conversion was found to be safe. + * vc-svn.el (vc-svn-diff-tree): Pass a list to vc-svn-diff. -2005-04-24 Richard M. Stallman +2007-08-31 Micha,Ak(Bl Cadilhac - * mail/sendmail.el (mail-font-lock-keywords): Match any number of - citation markers at start of each line. + * textmodes/flyspell.el (flyspell-mark-duplications-exceptions): + New variable. List of exceptions for the duplicated word rule. + (flyspell-mark-duplications-flag): Mention it. + (flyspell-word): Treat it. - * mail/rmail.el (rmail-font-lock-keywords): Match any number of - citation markers at start of each line. + * files.el (create-file-buffer): If the filename sans directory starts + with spaces, remove them. - * font-lock.el (font-lock-comment-delimiter-face): Doc fix. +2007-08-31 Jan Dj,Ad(Brv - * files.el (mode-require-final-newline): Fix previous change. - (require-final-newline): Fix type label. + * term/x-win.el (x-gtk-stock-map): Add etc/images to keys. + (x-gtk-map-stock): Use two directory elements when matching + file name. -2005-04-24 Glenn Morris +2007-08-31 James Wright - * progmodes/f90.el (f90-calculate-indent): Fix treatment of first - statement in buffer (broken by 2004-11-24 change). + * eshell/em-unix.el (eshell/info): New function. -2005-04-24 Kim F. Storm +2007-08-31 Stefan Monnier - * ido.el (ido-everywhere): Save and restore old read-buffer-function - and read-file-name-function values. Don't overwrite existing - non-nil values if ido-mode is enabled without ido-everywhere. + * frame.el (frame-initialize, make-frame): + * server.el (server-process-filter): + * faces.el (tty-set-up-initial-frame-faces): Don't set + term-environment-variable since it's not used any more. + + * env.el (setenv): Don't treat $TERM specially. + + * startup.el (normal-top-level): Set $TERM to `dumb' so that unless + stated otherwise, subprocesses do not send back escape sequences + corresponding to the terminal from which Emacs was started. + +2007-08-31 Thien-Thi Nguyen + + * calculator.el: Require cl for compilation. + +2007-08-30 Daniel Pfeiffer + + * outline.el (outline-font-lock-levels): Comment out unused var. + (outline-font-lock-face): Wrap around face list to handle any + nesting depth gracefully. + +2007-08-30 Michael Albinus + + * net/ange-ftp.el: Add ange-ftp property to `set-file-modes' and + `set-file-times'. + +2007-08-30 Carsten Dominik + + * textmodes/org.el (org-export-visible): Fix drawers before export. + (org-do-sort): Allow sorting by priority. + (org-agenda-files): Ignore non-existing files. + (org-agenda-skip-unavailable-files): New variable. + (org-ellipsis): All a face as value. + (org-mode): Interprete the face value of `org-ellipsis'. + (org-archive-save-context-info): New option. + (org-archive-subtree): Store context info in archived entry. + (org-fast-tag-selection-can-set-todo-state): New variable. + (org-fast-tag-selection): Allow setting TODO states through this + interface. + (org-cycle): Docstring updated. + (org-todo-keyword-faces): New option. + (org-get-todo-face): New function. + (org-set-font-lock-defaults, org-agenda-highlight-todo): + Use `org-get-todo-face'. + (org-switch-to-buffer-other-window): New function. + (org-table-edit-field, org-table-show-reference) + (org-table-edit-formulas, org-add-log-note) + (org-fast-tag-selection, org-agenda, org-prepare-agenda) + (org-timeline): Use `org-switch-to-buffer-other-window' instead of + `switch-to-buffer-other-window' to make sure that the temporary + windows show up on the current frame. + (org-mhe-get-message-real-folder, org-batch-store-agenda-views) + (org-get-entries-from-diary, org-replace-region-by-html): + Don't allow pop-up frames. + (org-agenda-get-deadlines, org-agenda-get-scheduled): + Fix problems with time-of-day. + (org-export-get-title-from-subtree): New function. + (org-agenda-get-scheduled, org-agenda-get-deadlines): Fix problems + with listing items that are DONE. + (org-change-tag-in-region): New command. + (org-agenda-skip-scheduled-if-done) + (org-agenda-skip-deadline-if-done): Docstring clarified. + (org-mode): Hide drawers on startup. + (org-get-todo-face): New function. + (org-todo-keyword-faces): New option. + (org-set-regexps-and-options): Use `org-remove-keyword-keys'. + (org-remove-keyword-keys): New function. + +2007-08-30 Jari Aalto (tiny change) -2005-04-24 Luc Teirlinck + * progmodes/grep.el (grep-find-ignored-directories): + Add monotone _MTN bookkeeping directory in workspaces. + Add RCS control directory. List items in alphabetical order. - * files.el (mode-require-final-newline): Minor doc fix. + * progmodes/grep.el (grep-files-aliases): Add cc alias. + Sort items in alphabetical order. Fix parens. -2005-04-24 Eli Zaretskii +2007-08-29 Dan Nicolaescu - * subr.el (syntax-after): Doc fix. - (syntax-class): If argument is nil, return nil. Mask off upper 16 - bits, not 8 bits. + * vc-hg.el (vc-hg-extra-menu-map): New variable. + (vc-hg-extra-menu, vc-hg-outgoing, vc-hg-incoming, vc-hg-push) + (vc-hg-pull): New functions. + (vc-hg-outgoing-mode, vc-hg-incoming-mode): New derived modes. - * files.el (mode-require-final-newline): Doc fix. - (backup-buffer-copy): Fix last change. + * term/mac-win.el: Don't require url, only autoloaded url + functions are used in this file. -2005-04-24 YAMAMOTO Mitsuharu +2007-08-29 Andreas Schwab - * term/mac-win.el: Require select. Set selection-coding-system to - mac-system-coding-system. Call menu-bar-enable-clipboard. - (x-last-selected-text-clipboard, x-last-selected-text-primary) - (x-select-enable-clipboard): New variables. - (x-select-text, x-get-selection, x-selection-value) - (x-get-selection-value, mac-select-convert-to-string) - (mac-services-open-file, mac-services-open-selection) - (mac-services-insert-text): New functions. - (CLIPBOARD, FIND): Put mac-scrap-name property. - (com.apple.traditional-mac-plain-text, public.utf16-plain-text) - (public.tiff): Put mac-ostype property. - (selection-converter-alist): Add entries for them. - (mac-application-menu-map): New keymap. - (interprogram-cut-function, interprogram-paste-function): Set to - x-select-text and x-get-selection-value, respectively. - (split-window-keep-point): Set to t. + * shell.el (shell): Return correct value from interactive spec. -2005-04-23 Richard M. Stallman +2007-08-29 Glenn Morris - * files.el (read-directory-name): Always pass non-nil - DEFAULT-FILENAME arg to read-file-name. - (backup-buffer-copy, basic-save-buffer-2): Take care against - writing thru an unexpected existing symlink. - (revert-buffer): In indirect buffer, revert the base buffer. - (magic-mode-alist): Doc fix. - (buffer-stale-function): Doc fix. - (minibuffer-with-setup-hook): Avoid warning. - (mode-require-final-newline): Doc and custom fix. + * version.el (emacs-version): Increase to 23.0.50. - * follow.el (follow-end-of-buffer): Use with-no-warnings. +2007-08-29 Jan Dj,Ad(Brv - * font-lock.el (font-lock-comment-face): On terminals with few colors, - use the default appearance. - (font-lock-comment-delimiter-face): New face, new variable. + * term/x-win.el (x-gtk-stock-map): :version changed to 23.1. - * imenu.el (imenu--generic-function): The official position of a - definition is the start of the line that BEG is in. +2007-08-29 Juri Linkov - * midnight.el (midnight-timer): Move defvar up. + * loadup.el: Add "button" loading after "faces" and move "startup" + to load after "button". - * mouse.el (mouse-drag-region-1): Delete some debugging code. +2007-08-29 Dan Nicolaescu - * saveplace.el (save-place-to-alist): Use with-no-warnings. + * loadup.el: Load term/mac-win on a Mac using Carbon. - * startup.el (command-line): Use with-no-warnings. + * term/mac-win.el: Provide mac-win. + (mac-initialized): New variable. + (mac-initialize-window-system): New function. Move global setup here. + (handle-args-function-alist, frame-creation-function-alist): + (window-system-initialization-alist): Add mac entries. + (x-setup-function-keys): New function containing all the + top level function key definitions. - * window.el (window-size-fixed): New defvar. + * term/x-win.el (x-menu-bar-open): Use accelerate-menu. - * emacs-lisp/easymenu.el (easy-menu-do-define): Use defalias, not fset. + * env.el (read-envvar-name): Don't consider the environment frame param. - * mail/rmail.el (rmail-font-lock-keywords): - Use font-lock-comment-delimiter-face. + * env.el (setenv): + * frame.el (frame-initialize, make-frame): + * faces.el (tty-set-up-initial-frame-faces): + * server.el (server-process-filter): Set + display-environment-variable and term-environment-variable. - * mail/sendmail.el (mail-font-lock-keywords): - Use font-lock-comment-delimiter-face. + * server.el (server-process-filter): Set COLORFGBG and COLORTERM. - * progmodes/compile.el (next-error-highlight-timer): New defvar. +2007-08-29 Jason Rumney -2005-04-23 SAITO Takuya (tiny change) + * loadup.el: Only load term/x-win when X is compiled in. + Load term/w32-win and dependencies on windows-nt. - * progmodes/compile.el (compilation-mode-font-lock-keywords): - Specify t for LAXMATCH when matching directories. - Save match data around compilation-compat-error-properties form. + * term/w32-win.el: Reorder to match x-win.el more closely. + Provide w32-win. Don't throw error when global window-system not w32. + (internal-face-interactive): Remove obsolete function. + (x-setup-function-keys): Use local-function-key-map. + (w32-initialized): New variable. + (w32-initialize-window-system): Set it. + Move more global setup here. + (x-setup-function-keys): New function. + (w32-initialize-window-system): Move non function key global setup here. + (x-cut-buffer-max): Remove. + (w32-initialize-window-system): New function. + (handle-args-function-alist, frame-creation-function-alist): + (window-system-initialization-alist): Add w32 entries. -2005-04-23 David Kastrup +2007-08-29 David Kastrup - * textmodes/tex-mode.el (TeX-mode, plain-TeX-mode, LaTeX-mode): - Mention that the autoloaded aliases should be kept for AUCTeX. + * env.el (getenv): Pass frame to getenv-internal. -2005-04-23 Andreas Schwab +2007-08-29 Karoly Lorentey - * isearch.el (isearch-forward): Doc fix. + * version.el (emacs-version): Show if multi-tty is present. -2005-04-23 Eli Zaretskii + * loadup.el: Delay loading env; mule-conf gets confused by cl + during bootstrap. Also load termdev and term/x-win. - * jit-lock.el (jit-lock-stealth-time): Change default value to 16. - (jit-lock-stealth-nice): Change default value to 0.5. + * bindings.el (mode-line-client): New variable. + (help-echo): Add it to the default mode-line format. -2005-04-23 Eric Hanchrow (tiny change) + * cus-start.el: Remove bogus window-system reference from GTK test. - * abbrev.el (write-abbrev-file): Write table entries in - alphabetical order by table name. + * ebrowse.el (ebrowse-electric-list-mode-map) + (ebrowse-electric-position-mode-map): + * ebuff-menu.el (electric-buffer-menu-mode-map): + * echistory.el (electric-history-map): Bind C-z to `suspend-frame', + not `suspend-emacs'. -2005-04-22 Kim F. Storm + * ediff-wind.el (ediff-setup-windows-automatic): New function. + (ediff-window-setup-function): Use it as default. - * ido.el (ido-read-internal): Fix `list' completion. + * files.el (save-buffers-kill-terminal): New function. + (ctl-x-map): Change binding of C-x C-c to save-buffers-kill-terminal. -2005-04-22 Kenichi Handa + * font-lock.el (lisp-font-lock-keywords-2): Add `let-environment' + and `with-selected-frame'. - * recentf.el (recentf-save-file-coding-system): New variable. - (recentf-save-list): Encode the file by - recentf-save-file-coding-system and add coding: tag. + * help-fns.el (describe-variable): Describe frame-local variables + correctly. -2005-04-22 Nick Roberts + * simple.el (normal-erase-is-backspace-mode): Rewrite for multiple + display support. + (normal-erase-is-backspace-setup-frame): New function. + + * subr.el (with-selected-frame): New function. + (read-quoted-char): Use terminal-local binding of + local-function-key-map instead of function-key-map. + + * talk.el (talk): New function. + (talk-handle-delete-frame): New function. + (talk-add-display): Open a new frame only if FRAME was not a frame. + + * termdev.el: New file. + + * menu-bar.el (menu-bar-open): New function. Bind it to f10. + * term/x-win.el: Don't bind f10. + * tmm.el: Remove autoload binding for f10. + + * international/encoded-kb.el (encoded-kbd-setup-display): Use + `set-input-meta-mode'. Fix broken condition before set-input-mode. + Store the saved input method as a terminal parameter. Add keymap + parameter. Use it instead of changing key-translation-map directly. + (saved-key-translation-map, encoded-kbd-mode, saved-input-mode): + Remove. + (encoded-kbd-setup-display): New function. + + * international/mule-cmds.el (set-locale-environment): Fix getenv + call. Use save-buffers-kill-terminal. Ignore window-system; always + set the keyboard coding system. Add DISPLAY parameter. + (set-display-table-and-terminal-coding-system): Add DISPLAY + parameter. Pass it to set-terminal-coding-system. + + * international/mule.el (keyboard-coding-system): Test for + encoded-kbd-setup-display, not encoded-kbd-mode. + (set-terminal-coding-system, set-keyboard-coding-system): Add + DISPLAY parameter. + (set-keyboard-coding-system): Use encoded-kbd-setup-display. + + * term/README: Update. + + * term/linux.el (terminal-init-linux): Use `set-input-meta-mode'. + + * term/x-win.el (x-setup-function-keys): New function. Move + function-key-map tweaks here. Protect against multiple calls on + the same terminal. Use terminal-local binding of + local-function-key-map instead of function-key-map. + (x-initialize-window-system): Make a copy of pure list. Pass a + frame getenv. + + * term/vt200.el, term/vt201.el, term/vt220.el, term/vt240.el: + * term/vt300.el, term/vt320.el, term/vt400.el, term/vt420.el: + * term/AT386.el, term/internal.el, term/iris-ansi.el, term/lk201.el: + * term/mac-win.el, term/news.el, term/rxvt.el, term/sun.el: + * term/tvi970.el, term/wyse50.el: Use terminal-local binding of + local-function-key-map instead of function-key-map. + + * term/rxvt.el, term/xterm.el: Speed up load time by protecting + `substitute-key-definition' and `define-key' calls against + multiple execution. Use terminal-local binding of + local-function-key-map instead of function-key-map. Pass a frame + to getenv. + + * edmacro.el (edmacro-format-keys): + * emulation/cua-base.el (cua--pre-command-handler): + * isearch.el (isearch-other-meta-char): + * xt-mouse.el: Use terminal-local binding of + local-function-key-map instead of function-key-map. + + * fringe.el (set-fringe-mode): Simplify and fix using + `modify-all-frames-parameters'. + * scroll-bar.el (set-scroll-bar-mode): Ditto. + * tool-bar.el (tool-bar-mode): Ditto. Remove 'tool-bar-map length + check before calling `tool-bar-setup'. + (tool-bar-setup): New variable. + (tool-bar-setup): Use it to guard against multiple calls. Add + optional frame parameter, and select that frame before adding items. + (toggle-tool-bar-mode-from-frame): New function. + + * menu-bar.el (toggle-menu-bar-mode-from-frame): New function. + (menu-bar-showhide-menu): Use toggle-menu-bar-mode-from-frame and + toggle-tool-bar-mode-from-frame to change "Menu-bar" and + "Tool-bar" toggles to reflect the state of the current frame. + (menu-bar-mode): Simplify and fix using `modify-all-frames-parameters'. + + * env.el: Require cl for byte compilation (for `block' and `return'). + (environment, setenv-internal): New functions. + (let-environment): New macro. + (setenv, getenv): Add optional terminal parameter. Update docs. + (setenv): Use setenv-internal. Always set process-environment. + Handle `local-environment-variables'. + (read-envvar-name, setenv, getenv): Use frame parameters + to store the local environment, not terminal parameters. Include + `process-environment' as well. + + * faces.el (tty-run-terminal-initialization): New function. + (tty-create-frame-with-faces): Use it. Set up faces and + background mode only after the terminal has been initialized. + Call terminal-init-*. Don't load the initialization file more + than once. Call set-locale-environment. + (frame-set-background-mode): Handle the 'background-mode terminal + parameter. + (tty-find-type): New function. + (x-create-frame-with-faces): Remove bogus check for + first frame. Call `tool-bar-setup'. Don't make frame visible + until we are done setting up all its parameters. Call + x-setup-function-keys. + + * frame.el (make-frame): Always inherit 'environment and 'client + parameters. Set up the 'environment frame parameter, when needed. + Also inherit 'client parameter. Don't override explicitly + specified values with inherited ones. Add 'terminal frame + parameter. Append window-system-default-frame-alist to parameters + before calling frame-creation-function. + (frame-initialize): Copy the environment from the initial frame. + (window-system-default-frame-alist): Enhance doc string. + (frame-notice-user-settings): Don't put 'tool-bar-lines in + `default-frame-alist' when initial frame is on a tty. + (modify-all-frames-parameters): Simplify using `assq-delete-all'. + Remove specified parameters from `window-system-default-frame-alist'. + (make-frame-on-tty, framep-on-display, suspend-frame): + Extend doc string, update parameter names. + (frames-on-display-list): Use terminal-id to get the display id. + (frame-notice-user-settings): Extend to apply + settings in `window-system-default-frame-alist' as well. + (terminal-id, terminal-parameters, terminal-parameter) + (set-terminal-parameter, terminal-handle-delete-frame): New functions. + (delete-frame-functions): Add to `delete-frame-functions' hook. + (blink-cursor-mode): Adapt blink-cursor-mode default + value from startup.el. + (make-frame-on-display): Protect condition on x-initialized when + x-win.el is not loaded. Update doc. + (suspend-frame): Use display-controlling-tty-p to decide between + suspend-emacs and suspend-tty. + (frames-on-display-list): Update for display ids. + (framep-on-display): Ditto. + (suspend-frame): Use display-name, not frame-tty-name. + (selected-terminal): New function. + + * server.el: Use `device' instead of `display' or `display-id' in + variable and client parameter names. + (server-select-display): Remove (unused). + (server-tty-live-p, server-handle-delete-tty): Remove. + (server-unquote-arg, server-quote-arg, server-buffer-clients): + Update docs. + (server-getenv-from, server-with-environment, server-send-string) + (server-save-buffers-kill-terminal): New functions. + (server-delete-client): Handle quits in kill-buffer. Don't kill + modified buffers. Add extra logging. Delete frames after + deleting the tty. Clear 'client parameter before deleting a frame. + Use delete-display, not delete-tty. + (server-visit-files): Don't set `server-existing-buffer' if the + buffer already has other clients. Return list of buffers + created. Update doc. Don't set client-record when nowait. + (server-handle-delete-frame): Delete the client if this was its + last frame. Check that the frame is alive. Remove bogus comment. + Add note on possible race condition. Delete tty clients, if needed. + (server-handle-suspend-tty): Use server-send-string. Kill the + client in case of errors from process-send-string. Use the display + parameter. + (server-unload-hook): Remove obsolete delete-tty hook. + (server-start): Ask before restarting if the old server still has + clients. Add feedback messages. Remove obsolete delete-tty hook. + (server-process-filter): Use server-send-string. Accept `-dir' + command. Switch to *scratch* immediately after creating the frame, + before evaluating any -evals. Protect `display-splash-screen' + call in a condition-case. Explain why. Call + `display-startup-echo-area-message' before + `display-splash-screen'. Don't display the splash screen when no + frame was created. Show the Emacs splash screen and startup echo + area message. Display the *scratch* buffer by default. Store the + local environment in a frame (not terminal) parameter. Do not try + to decode environment strings. Fix reference to the 'display + frame parameter. Change syntax of environment variables. Put + environment into terminal parameters, not client parameters. Use + a dummy client with --no-wait's X frames. In `-position LINE' + handler, don't ruin the request string until the line number is + extracted. Log opened files. Handle -current-frame command. + Don't create frames when it is given. Don't bind X frames to the + client when we are in -no-wait mode. Set locale environment + variables from client while creating tty frames. Disable call to + configure-display-for-locale. When processing -position command, + don't change the request string until the parameters are + extracted. Don't try to create an X frame when Emacs does not + support it. Improve logging. Temporarily set ncurses-related + environment variables to those of the client while creating a new + tty frame. Select buffers opened by nowait clients, don't leave + them buried under others. Set the display parameter, and use it + when appropriate. - * emacs-lisp/byte-run.el (define-obsolete-variable-alias): New macro. + * startup.el (display-startup-echo-area-message): Handle + `inhibit-startup-echo-area-message' here. + (command-line-1): Moved from here. + (fancy-splash-screens): Use `overriding-local-map' instead of + `overriding-terminal-local-map' for now; the latter doesn't work + right, it looses keypresses to another terminal. Use + `overriding-terminal-local-map' to set up keymap. Install a + `delete-frame-functions' hook to catch `delete-frame' events. + Ignore `select-window' events to cope better with + `focus-follows-mouse'. Don't switch back to the original buffer + if the splash frame has been killed. Restore previous buffer, even + if it's *scratch*. + (normal-splash-screen): Don't let-bind `mode-line-format'; it + changes the global binding - setq it instead. Use + `save-buffers-kill-terminal'. + (display-splash-screen): Don't do anything if the splash screen is + already displayed elsewhere. + (fancy-splash-exit, fancy-splash-delete-frame): New functions. + (command-line): Replace duplicated code with a call to + tty-run-terminal-initialization. Don't load the terminal + initialization file more than once. Remove call to nonexistent + function `set-locale-translation-file-name'. + + * xt-mouse.el (xterm-mouse-x, xterm-mouse-y): Convert to terminal + parameters. + (xterm-mouse-position-function, xterm-mouse-event): Update. + (xterm-mouse-mode): Don't depend on current value of window-system. + (turn-on-xterm-mouse-tracking, turn-off-xterm-mouse-tracking): + Update for multi-tty. + (turn-on-xterm-mouse-tracking-on-terminal) + (turn-off-xterm-mouse-tracking-on-terminal) + (xterm-mouse-handle-delete-frame): New functions. + (delete-frame-functions, after-make-frame-functions) + (suspend-tty-functions, resume-tty-functions): Install extra hooks + for multi-tty. + +2007-08-29 Stefan Monnier + + * simple.el (invisible-p): Remove: implemented in C now. + (line-move-invisible-p): Remove obsolete alias. + +2007-08-28 Juri Linkov + + * image-mode.el (image-type): New variable. + (image-mode): Set default major mode name to "Image[text]". + (image-minor-mode): Change LIGHTER to display image-type in the + mode line. + (image-minor-mode): Set default image-type to "text". + (image-toggle-display): After switching to text mode, set + image-type to "text" and major mode name to "Image[text]". + After switching to image mode, set image-type to actual image + type, and add image type to major mode name. Let-bind the same + variable names as arguments of `image-type' and `create-image'. + Bind `type' to the result of `image-type' and use it as arg + of `create-image' to not determine the image type twice. + +2007-08-28 Michael Albinus + + * net/tramp.el (tramp-handle-set-file-times): Flush the file properties. + (tramp-set-file-uid-gid, tramp-get-local-uid) + (tramp-get-local-gid): New defuns. + (tramp-handle-copy-file): Handle new parameter PRESERVE-UID-GID. + (tramp-do-copy-or-rename-file): New parameter PRESERVE-UID-GID. + Improve fast track. + (tramp-do-copy-or-rename-file-directly): Sync parameter list with + the other tramp-do-copy-or-rename-file-* functions. Major rewrite. + (tramp-handle-file-local-copy, tramp-handle-insert-file-contents) + (tramp-handle-write-region): Improve fast track. + (tramp-handle-file-remote-p): IDENTIFICATION can also be `localname'. + (tramp-maybe-open-connection): Let `process-adaptive-read-buffering' + be nil. + +2007-08-28 Ivan Kanis + + * time.el: New feature to display several time zones in a buffer. + (display-time-world-mode, display-time-world-display) + (display-time-world, display-time-world-timer): New functions. + (display-time-world-list, display-time-world-time-format) + (display-time-world-buffer-name, display-time-world-timer-enable) + (display-time-world-timer-second, display-time-world-mode-map): + New variables. -2005-04-21 Lute Kamstra +2007-08-28 Jan Dj,Ad(Brv - * loadhist.el (unload-feature): Don't remove a function from hooks - if it is about to be restored to an autoload . Remove functions - that will become unbound from auto-mode-alist. Simplify the code. + * term/x-win.el (x-gtk-stock-map): New variable. + (x-gtk-map-stock): New function. - * subr.el (assq-delete-all): New implementation that is linear, - not quadratic. Suggested by David Kastrup . - (rassq-delete-all): New function. + * info.el (info-tool-bar-map): Add :rtl keyword to right/left-arrow and + prev/next-node. - * menu-bar.el (menu-bar-options-save, menu-bar-showhide-menu): - Add size-indication-mode. +2007-08-28 Johan Bockg,Ae(Brd (tiny change) -2005-04-21 Kenichi Handa + * play/gamegrid.el (gamegrid-init): Set line-spacing to 0. - * international/mule-cmds.el: Add autoload for widget-value in - eval-when-compile. +2007-08-28 Glenn Morris -2005-04-21 Nick Roberts + * progmodes/cc-langs.el (c-constant-kwds): Add java: null, true, false. - * menu-bar.el (menu-bar-options-save, menu-bar-showhide-menu): - Add tooltip-mode. +2007-08-27 Thien-Thi Nguyen - * bindings.el (mode-line-mode-menu): Remove tooltip-mode. + * progmodes/modula2.el (m2-definition, m2-module): + Don't use previous-line. Reported by T. V. Raman. -2005-04-20 Luc Teirlinck +2007-08-27 YAMAMOTO Mitsuharu - * progmodes/inf-lisp.el (inferior-lisp): New defgroup. - (inferior-lisp-filter-regexp, inferior-lisp-program) - (inferior-lisp-load-command, inferior-lisp-prompt) - (inferior-lisp-mode-hook, lisp-source-modes) - (inferior-lisp-load-hook): defvar->defcustom. - (inferior-lisp-program, inferior-lisp-prompt) - (inferior-lisp-load-hook): Doc fixes. - (inferior-lisp-install-letter-bindings): Small change in - introductory comment. + * term/mac-win.el (mac-handle-toolbar-switch-mode): Add explicit + argument to tool-bar-mode call. -2005-04-20 Dan Nicolaescu +2007-08-27 Glenn Morris - * vc.el (vc-annotate-color-map): Change some colors so that text - using them as foreground is readable on both white and black - backgrounds. + * diff-mode.el (diff-find-file-name): Only accept regular files, + to rule out /dev/null, directories, etc. -2005-04-20 Stefan Monnier + * vc-svn.el (vc-svn-diff): If the repository version of all the + files is the same as the specified OLDVERS, do a local diff. - * international/mule-conf.el (translation-table-for-input): - Remove redundant declaration. +2007-08-25 Stefan Monnier -2005-04-20 Nick Roberts + * uniquify.el (uniquify-rationalize-file-buffer-names): Check liveness + of buffers in uniquify-managed. - * progmodes/gud.el (gud-menu-map): Add tooltip-toggle-gud-tips. + * simple.el (invisible-p): Rename from text-invisible-p. + Update callers. - * tooltip.el (tooltip-gud-tips-p): Expand documentation. - (tooltip-toggle-gud-tips): New function. +2007-08-23 Stefan Monnier -2005-04-20 YAMAMOTO Mitsuharu + * progmodes/cperl-mode.el (defcustom, x-color-defined-p, cperl-is-face) + (cperl-is-face, cperl-force-face, cperl-etags-snarf-tag, cperl-mode) + (cperl-etags-snarf-tag, cperl-etags-goto-tag-location, cperl-init-faces) + (cperl-etags-goto-tag-location): Use new style backquotes. - * term/mac-win.el (mac-symbol-encoder): Fix mappings of left and - right angle brackets. + * net/browse-url.el: Remove spurious * in custom docstrings. + (browse-url-filename-alist): Use new-style backquote. -2005-04-20 Nick Roberts + * emacs-lisp/backquote.el (backquote-unquote-symbol) + (backquote-splice-symbol): Clarify they're not new-style unquotes. - * tooltip.el (tooltip-use-echo-area): Replace as alias and deprecate. + * emacs-lisp/edebug.el (edebug-list-form, edebug-match-symbol, \,) + (\,@): Backslash the , and ,@ which are not new-style unquotes. -2005-04-19 Stefan Monnier + * textmodes/texinfmt.el (\,): Clarify it's not a new-style unquote. - * progmodes/flymake.el (flymake-get-absolute-file-name-basedir): - Remove. Update callers to use expand-file-name instead. + * net/socks.el (socks-username/password-auth-filter): + Remove unused vars `state' and `desired-len'. + (socks-parse-services, socks-nslookup-host): Use with-current-buffer. + (socks-wait-for-state-change): Use new-style backquotes. - * subr.el (syntax-class): New function. + * pcvs.el (cvs-mode-status): Fix long-standing typo. - * simple.el (blink-matching-open): Use it. + * emacs-lisp/bytecomp.el (byte-compile-from-buffer): Check old-style + backquotes after each `read' rather than once per buffer. - * paren.el (show-paren-function): Use it to recognize parens that are - also used in 2-char comment markers. + * dframe.el: Remove spurious * in custom docstrings. + (dframe-xemacsp): Remove, use (featurep 'xemacs) instead. + (dframe-xemacs20p): Remove, inline at the sole use point. + (defface): Don't defvar the face, don't use old-style backquote. + (defcustom): Don't use old-style backquote. + (dframe-frame-parameter, dframe-mouse-event-p): + Make it obvious that it's always defined. + (dframe-popup-kludge): New function to replace + dframe-xemacs-popup-kludge and dframe-xemacs-popup-kludge. + (dframe-frame-mode, dframe-set-timer-internal) + (dframe-mouse-set-point): Remove use of with-no-warnings from + XEmacs-specific code. + (dframe-set-timer-internal): Fix very old bug with + post-command-idle-hook. -2005-04-19 Lute Kamstra + * emacs-lisp/byte-opt.el (byte-optimize-featurep): Handle `sxemacs'. - * loadhist.el (unload-feature): Update for new format of - load-history. Simplify the code. +2007-08-27 Thien-Thi Nguyen -2005-04-19 YAMAMOTO Mitsuharu + * emacs-lisp/avl-tree.el: New file. - * term/mac-win.el: Add coding: tag and set it to iso-2022-7bit. - (mac-add-charset-info): New function. Initialize variable - mac-charset-info-alist using it. - (mac-centraleurroman, mac-cyrillic): Do not use UCS in table data - for translation. - (mac-symbol-encoder, mac-dingbats-encoder): New translation table. - (mac-font-encoder-list): Add entries for mac-symbol and mac-dingbats. - (ccl-encode-mac-symbol-font, ccl-encode-mac-dingbats-font): - New CCL programs. +2007-08-26 Micha,Ak(Bl Cadilhac -2005-04-19 Kim F. Storm + * hi-lock.el (hi-lock-unface-buffer): Show a x-menu only if the mouse + was used. - * simple.el (next-buffer, prev-buffer, next-error) - (scroll-other-window, keyboard-quit, keyboard-escape-quit) - (clone-indirect-buffer-other-window): Move bindings to bindings.el. +2007-08-26 Sean O'Rourke - * bindings.el (next-buffer, prev-buffer, next-error) - (scroll-other-window, keyboard-quit, keyboard-escape-quit) - (clone-indirect-buffer-other-window): Move bindings from simple.el. - (next-buffer, prev-buffer): Add C-x C-right and C-x C-left bindings. - (next-error, previous-error): Add M-g M-n/n and M-g M-p/p bindings. + * complete.el (PC-do-completion): Make RET accept a non-unique but + complete expansion again. -2005-04-18 Stefan Monnier +2007-08-26 Thien-Thi Nguyen - * isearch.el (isearch-edit-string): Make the search-ring available for - minibuffer history commands. - (minibuffer-local-isearch-map): Remove bindings for M-p and M-n, - the default history commands now work just as well. - (isearch-ring-retreat-edit, isearch-ring-advance-edit): Remove. + * eshell/esh-opt.el (eshell-eval-using-options): + Add debug declaration. -2005-04-18 Kim F. Storm +2007-08-26 Dan Nicolaescu - * emulation/cua-base.el (cua--pre-command-handler): Add more - elaborate check for shift modifier on non-window systems. + * log-view.el (log-view-toggle-mark-entry): Add docstring. + (log-view-get-marked): Likewise. -2005-04-18 Lars Hansen + * vc-hooks.el (vc-registered): Use mapc instead of mapcar. + (vc-delete-automatic-version-backups): Likewise. - * desktop.el: Make "--no-desktop" turn off `desktop-save-mode'. + * vc.el (vc-dired-buffers-for-dir): Likewise. -2005-04-18 Kim F. Storm +2007-08-25 Dan Nicolaescu - * tooltip.el (tooltip-show): Change second arg to USE-ECHO-AREA - and make it optional. Don't test tooltip-gud-echo-area here. - (tooltip-gud-process-output, gdb-tooltip-print): - Pass tooltip-gud-echo-area to tooltip-show. - (tooltip-help-tips): Remove second optional arg to tooltip-show. + * progmodes/cperl-mode.el (cperl-indent-level): Autoload the + safe-local-variable setting. + * progmodes/perl-mode.el (perl-indent-level): Likewise. -2005-04-18 YAMAMOTO Mitsuharu + * log-view.el (log-view-marked-list): Delete variable. + (log-view-mode): Don't use it. + (log-view-toggle-mark-entry): Likewise, simplify. + (log-view-current-tag): Don't return properties. + (log-view-get-marked): New function. - * tooltip.el (tooltip-mode): `emacs-quick-startup' and - `display-graphic-p' may not be bound yet. +2007-08-25 Alexandre Julliard -2005-04-17 Luc Teirlinck + * vc-git.el (vc-git-mode-line-string): New function. - * startup.el (command-line): No longer enable Xterm Mouse mode by - default in terminals compatible with xterm. +2007-08-25 Alan Mackenzie - * xt-mouse.el (xterm-mouse-mode): Set init value back to nil. + * progmodes/cc-langs.el (c-other-decl-block-key-in-symbols-alist): + new language variable. -2005-04-18 Nick Roberts + * progmodes/cc-engine.el (c-brace-anchor-point): new function. + (c-add-stmt-syntax): Give accurate anchor points for "namespace", + "extern" etc., rather than BOI. Fix addition of spurious + syntactic-symbol 'defun-block-intro, replacing it with + 'innamespace, etc. - * tooltip.el (tooltip-gud-echo-area): Rename from - tooltip-use-echo-area. - (tooltip-show, tooltip-gud-process-output, gdb-tooltip-print) - (tooltip-help-tips): Allow GUD tooltips to be displayed in echo - area independently of where help tooltips are displayed. +2007-08-25 Juri Linkov -2005-04-17 David Kastrup + * files.el (auto-mode-alist): Move "\\.x[bp]m\\'" to image-mode.el. - * cus-theme.el (custom-theme-write-variables): Quote variables - where necessary. + * image-mode.el: Add autoloads to put associations in auto-mode-alist: + associate "\\.x[bp]m\\'" with c-mode and image-mode-maybe, and + "\\.svgz?\\'" with xml-mode and image-mode-maybe. -2005-04-17 Richard M. Stallman + * image.el (image-type-header-regexps): Use more complex regexp for svg. + (image-type-file-name-regexps): Add ("\\.svgz?\\'" . svg). + (image-type-auto-detectable): Add (svg . maybe). - * simple.el (yank-excluded-properties): Add follow-link to value. + * jka-cmpr-hook.el (jka-compr-compression-info-list): Add .svgz + to treat it like .tgz. - * jka-compr.el (jka-compr-compression-info-list): Fix custom type. + * calendar/cal-bahai.el: Add file coding cookie. - * startup.el (fancy-splash-max-time): Just 30 seconds. - (fancy-splash-delay): Just 7. - (fancy-splash-screens): No time limit other than fancy-splash-max-time. +2007-08-25 Reiner Steib - * loadhist.el (unload-feature): Update for new format of load-history. - Simplify the code. + * pcvs.el (cvs-query-directory): Only prompt when prefix is given. + Don't behave differently when executed via M-x. Add doc string. - * mail/rmail.el (rmail-ignored-headers): Ignore more headers - (rmail-font-lock-keywords): Don't fontify the text of a citation. + * sort.el (sort-fold-case, sort-numeric-base): Mark as + safe-local-variable. - * mail/sendmail.el (mail-font-lock-keywords): - Don't fontify subject text. - Don't fontify the text of a citation. +2007-08-25 Jay Belanger -2005-04-17 Mark H. Weaver (tiny change) + * calc/calc-forms.el (var-TimeZone): Make nil explicitly + the default value. + (math-calendar-tzinfo): New variable. + (math-get-calendar-tzinfo): New function. + (calcFunc-tzone, calcFunc-dst): Use Emacs's calendar + to get information when zone is nil. - * comint.el (comint-output-filter): Run comint-output-filter-functions - with point where the user had it. +2007-08-24 Dan Nicolaescu -2005-04-16 Stefan Monnier + * log-view.el (log-view-toggle-mark-entry): New function. + (log-view-mode-map): Bind it. + (log-view-marked-list): New variable. + (log-view-mode): Make it local. - * international/ucs-tables.el (ucs-set-table-for-input): - Disable when using unify-on-decoding. +2007-08-24 Thien-Thi Nguyen -2005-04-16 Dan Nicolaescu + * play/zone.el (zone-pgm-rat-race): New func. + (zone-programs): Add `zone-pgm-rat-race'. - * emulation/cua-base.el (cua-global-mark-face): Add special case - for displays supporting a high number of colors. +2007-08-24 Stefan Monnier -2005-04-16 Matt Hodges (tiny change) + * emacs-lisp/byte-opt.el (byte-optimize-if): Don't presume `clause' is + a list. - * repeat.el (repeat): Invoke pre-command-hook and post-command-hook. +2007-08-24 Thien-Thi Nguyen -2005-04-16 Chong Yidong + * progmodes/hideshow.el (hs-match-data): Delete alias. + (hs-hide-block-at-point, hs-find-block-beginning) + (hs-show-block): Use `match-data' directly. - * filesets.el (filesets-add-buffer): If user supplies a name of a - non-existing fileset, create a new fileset. +2007-08-24 Martin Rudalics -2005-04-16 Carsten Dominik + * format.el (format-alist): Fix typo in doc-string. - * textmodes/org.el (org-up-heading-all): Fix bug with - `outline-up-heading-all'. +2007-08-24 Michael Albinus -2005-04-16 Andreas Schwab + * net/tramp.el (tramp-local-host-p): New defun. + (tramp-handle-file-local-copy, tramp-handle-write-region): + Implement fast track when being on the local host. + (tramp-file-name-handler): Don't set "started" property. It shall + be reserved for the "ftp" method. + (tramp-make-copy-program-file-name): Use `tramp-file-name-real-host'. - * files.el (auto-mode-alist): Handle /etc/sysconfig/*, - /etc/permissions.d/* and /etc/aliases.d/*. + * net/tramp-ftp.el (top): Autoload `tramp-set-connection-property'. + (tramp-ftp-file-name-handler): Set "started" property. -2005-04-16 Kenichi Handa +2007-08-24 Ulrich Mueller (tiny change) - * international/code-pages.el (cp-make-coding-system): - Set `translation-table-for-input' property value to the symbol - ucs-mule-to-mule-unicode, not to that value. - (pt154): Escape guillemet by `\'. + * files.el (backup-buffer-copy): Don't wrap delete in + condition-case, only try to delete if file exists. -2005-04-15 Luc Teirlinck +2007-08-24 Glenn Morris - * loadup.el: Load tooltip if x-show-tip is fboundp. + * files.el (backup-buffer-copy): Revert 2007-08-22 change. - * startup.el (command-line): Add comment. + * startup.el (tutorial-directory): Set with eval-at-startup so it + gets the right value in an installed Emacs. - * tooltip.el (tooltip-mode): Specify correct standard value for - Custom in init-value. +2007-08-24 Nikolaj Schumacher (tiny change) -2005-04-15 Nick Roberts + * emacs-lisp/eldoc.el (eldoc-highlight-function-argument): New face. + (eldoc-highlight-function-argument): Use it. - * progmodes/gud.el (gud-goto-info): Use existing Info buffer, if - possible. +2007-08-23 Masatake YAMATO -2005-04-15 Carsten Dominik + * progmodes/cc-fonts.el (gtkdoc-font-lock-doc-comments): Highlight + name of parameters in document body. - * textmodes/org.el (org-agenda-date-prompt): Rename from - `org-agenda-date-today'. - (org-evaluate-time-range): Insert at point instead of directly - after time range. - (org-first-headline-recenter, org-subtree-end-visible-p) - (org-optimize-window-after-visibility-change): New functions - (org-agenda-post-command-hook): Don't allow point at end of line, - to make sure it always hits the text properties. - (org-agenda-next-date-line, org-agenda-previous-date-line): - New commands. - (org-set-regexps-and-options): Category may contain white space. - (org-agenda-get-deadlines, org-agenda-get-scheduled): - Improve marker positions. - (org-agenda-new-marker): Argument POS made optional. - (org-agenda-get-timestamps): Deadlines which are done are listed - in org-done-face now. - (org-agenda-get-todos, org-agenda-get-timestamps) - (org-agenda-get-deadlines, org-agenda-get-scheduled): - Set `undone-face' and `done-face' properties. - (org-last-todo-state-is-todo): New variable. - (org-todo): Set `org-last-todo-state-is-todo'. - (org-agenda-todo): Change face according to - `org-last-todo-state-is-todo'. And change other lines referring to - the same entry. - (org-calendar-goto-agenda): New command. - (org-calendar-to-agenda-key): New option. - (org-startup-folded): New allowed value `content'. - (org-set-regexps-and-options): Accept new value `content' for - `org-startup-folded'. - (org-get-current-options): Handle new value `content' for - `org-startup-folded'. - (org-insert-todo-heading): New command. - (org-mode): Insert first line "*-* mode: org-mode -*-" when called - interactively in empty file and option - `org-insert-mode-line-in-empty-file' has been set. - (org-agenda-todo, org-agenda-priority): Modify to use - `org-agenda-change-all-lines'. - (org-warning-face): Change color on dark background. - -2005-04-14 YAMAMOTO Mitsuharu - - * international/mule-cmds.el (set-locale-environment): On Mac OS, - use preferences AppleLocale and AppleLanguages, and variable - mac-system-locale for default locale. On Mac OS Classic, use - mac-system-coding-system for default coding systems. - - * term/mac-win.el: Don't set file-name-coding-system. - Decode variables system-name, emacs-build-system, user-login-name, and - user-full-name by mac-system-coding-system on Mac OS Classic. - (mac-system-coding-system): New variable. - -2005-04-13 Luc Teirlinck - - * startup.el (command-line): Handle `xterm-mouse-mode' before - reading init file. - - * xt-mouse.el (xterm-mouse-mode): Adapt to above change. - -2005-04-13 Glenn Morris - - * progmodes/sh-script.el (sh-here-document-word): Make it a - defcustom. Doc fix. - (sh-add): Bash uses $(( )) for arithmetic. - (sh-while-getopts) : Set OPTIND back to 1 at end. - (sh-maybe-here-document): Remove quotes and leading whitespace - from heredoc word when closing. Indent heredoc with tabs if word - starts with "-". - -2005-04-13 Richard M. Stallman - - * simple.el (undo): Fix previous change. +2007-08-23 Stefan Monnier - * custom.el (defface): Doc fix. + * emacs-lisp/bytecomp.el (byte-compile-output-docform) + (byte-compile-output-as-comment): Use with-current-buffer rather than + a weird set-buffer&prog1 combination. -2005-04-13 Lute Kamstra + * emacs-lisp/byte-opt.el (byte-optimize-if): Move `progn' out of the + test so as to optimise cases where the `progn's result is constant. - * Makefile.in (DONTCOMPILE): Remove list. - (compile, compile-always): Don't use DONTCOMPILE. - (update-authors): Load the library in which batch-update-authors - is defined. - * makefile.w32-in (DONTCOMPILE): Remove list. - (compile, compile-always): Fix comments. - (update-authors): Load the library in which batch-update-authors - is defined. +2007-08-23 Thien-Thi Nguyen - * generic-x.el (generic-mode-ini-file-find-file-hook): - Rename to ini-generic-mode-find-file-hook. - Keep generic-mode-ini-file-find-file-hook as an alias. - (ini-generic-mode-find-file-hook): Rename from - generic-mode-ini-file-find-file-hook. Fix docstring. - (ini-generic-mode): Docstring change. - (bat-generic-mode-run-as-comint): Silence the byte compiler. + * locate.el (locate-get-file-positions): + Use line-beginning-position and line-end-position. - * help.el (describe-key-briefly): UNTRANSLATED can be nil when - called from lisp. +2007-08-23 John Wiegley - * generic.el: Move to the emacs-lisp subdir. + * calendar/cal-bahai.el: Added in the diacriticals that were + missing for many of the month names. -2005-04-12 Dan Nicolaescu +2007-08-22 Jason Rumney - * term/xterm.el (function-key-map): Add mappings for A-, C-, S- - and C-S- function and cursor motion keys. + * vc-hooks.el (vc-menu-map-filter): Reapply 2007-08-06 bugfix. -2005-04-12 Luc Teirlinck +2007-08-22 Chong Yidong - * startup.el (command-line): Enable Xterm Mouse mode by default. - * xt-mouse.el (xterm-mouse-mode): Provide correct standard value - for Custom. No longer show "Mouse" in mode line when enabled. - Doc fix. + * image-mode.el (image-minor-mode): Use image-mode-text-map. -2005-04-12 Kim F. Storm +2007-08-22 Sean O'Rourke + + * dabbrev.el (dabbrev--progress-reporter): New variable. + (dabbrev--scanning-message): Delete func. + (dabbrev--find-expansion): Use a progress reporter + instead of dabbrev--scanning-message. + +2007-08-22 Michael Albinus + + * comint.el (comint-exec-1): Raise an error if + `start-file-process' does not return a process object. + + * shell.el (shell): Prompt for `default-directory' if it is a + remote file name, and if called with a prefix arg. + +2007-08-22 Sam Steingold + + * pcvs.el (cvs-vc-command-advice): Fix a typo in code (file->files). + +2007-08-22 Carsten Dominik + + * textmodes/org-export-latex.el: New file. + + * textmodes/org-publish.el (org-publish-org-to-latex): New function. + + * textmodes/org.el (org-agenda-skip): Allow a form for + `org-agenda-skip-function'. + (org-agenda-redo): Re-use local settings. + (org-agenda): Store local settings. + (org-agenda-deadline-faces): New option. + (org-agenda-deadline-face): New function. + (org-agenda-get-deadlines, org-agenda-get-scheduled): Also handle + entries on their due date. + (org-agenda-get-timestamps): No longer handle the due dates of + schedules and deadline items. + (org-insert-link-global, org-open-at-point-global): New commands. + (org-export-as-ascii): Call `org-cleaned-string-for-export' with a + :for-ascii parameter. + (org-skip-comments): Function removed. + (org-cleaned-string-for-export): Handle special table lines. + (org-global-properties): New option. + (org-entry-get-with-inheritance): Check global properties. + (org-local-properties): New variable. + (org-set-regexps-and-options): Find the #+PROPERTY line. + (org-link-types): Change type into variable (was constant). + (org-make-link-regexps): New function. + (org-link-re-with-space, org-link-re-with-space2) + (org-angle-link-re, org-plain-link-re, org-bracket-link-regexp) + (org-bracket-link-analytic-regexp, org-any-link-re): Creation of + these regular expressions happens now in the function + `org-make-link-regexps'. + (org-store-link): Call the functions in + `org-store-link-functions'. + (org-add-link-type): New function. + (org-store-link-functions): New variable. + (org-activate-tags): Force matches to be in headlines. + (org-batch-store-agenda-views): Fix bug with killing agenda buffer. + (org-columns-display-here): Make sure this works in a narrowed + buffer by checking for point-min. + (org-columns-display-here): Make the rest of the line intangible, + so that point never can be there. + (org-cleaned-string-for-export): Use `with-current-buffer'. + (org-replace-region-by-html): Use `with-current-buffer'. + (org-unfontify-region, org-do-occur, org-columns-display-here) + (org-columns-remove-overlays, org-columns-quit) + (org-columns-edit-value, org-columns-next-allowed-value) + (org-eval-in-calendar, org-agenda-undo, org-no-read-only) + (org-finalize-agenda, org-remove-subtree-entries-from-agenda) + (org-agenda-todo, org-agenda-change-all-lines) + (org-agenda-align-tags, org-agenda-priority) + (org-agenda-set-tags, org-agenda-toggle-archive-tag) + (org-agenda-show-new-time, org-cleaned-string-for-export) + (org-export-grab-title-from-buffer) + (org-export-as-ascii, org-export-as-html): Use `inhibit-read-only' + instead of `buffer-read-only'. + (org-export-as-html): Set `coding-system-for-write'. + (org-remember-store-without-prompt): New option. + (org-archive-subtree): Fixed bug with modifying TODO keyword. + (org-beginning-of-line): Also treat C-a special in items. + (org-table-convert-refs-to-rc): Fixed problem with column + reference after "..". + (org-columns-compute): Don't mark buffer modified because of text + properties. + (org-batch-store-agenda-views): Use the variable + `default-directory', not the function. + (org-clock-out-if-current): Respect `org-clock-out-when-done'. + (org-clock-out-when-done): New option. + (org-html-entities): Added HTML entities for smileys. - * emulation/cua-base.el (cua-rectangle-face) - (cua-rectangle-noselect-face): Define face attributes here. +2007-08-22 Glenn Morris - * emulation/cua-rect.el (cua--init-rectangles): Remove face setup. + * image.el (create-image): Doc fix. -2005-04-12 Jan Dj,Ad(Brv + * startup.el (tutorial-directory): New constant. + (fancy-splash-text): Tutorials now in tutorial-directory. + * tutorial.el (help-with-tutorial): Tutorials now in + tutorial-directory. - * startup.el (command-line): Turn off blinking cursor if - cursorBlink in resources is off or false. +2007-08-22 Michael Albinus -2005-04-12 YAMAMOTO Mitsuharu + * net/tramp.el (top): Require cl.el, when `copy-tree' is not available + otherwise. + (tramp-get-remote-path): New defun. Replace occurrences of + `tramp-default-remote-path' by this function. + (tramp-set-remote-path): Move most of the code to + `tramp-get-remote-path'. + (tramp-get-ls-command, tramp-get-remote-id): Don't check for not + existing directories, this is done already in + `tramp-get-remote-path'. - * term/mac-win.el (dnd): Require dnd. - (mac-drag-n-drop): Call dnd-handle-one-url. - (kTextEncodingMacRoman, kTextEncodingISOLatin1) - (kTextEncodingISOLatin2): Remove constants. - (mac-script-code-coding-systems): New constant. - (mac-handle-language-change): New function. - (special-event-map): Bind it to `language-change' event. - (mac-centraleurroman, mac-cyrillic): New coding systems. - (mac-font-encoder-list, ccl-encode-mac-centraleurroman-font) - (ccl-encode-mac-cyrillic-font): Rename mac-centraleurroman-encoder - and mac-cyrillic-encoder to encode-mac-centraleurroman and - encode-mac-cyrillic, respectively. +2007-08-22 Paul Pogonyshev -2005-04-12 Nick Roberts + * image-file.el (image-file-name-extensions): Add "svg". + * image.el (image-type-header-regexps): Add svg entry. - * progmodes/gud.el, progmodes/gdb-ui.el (gdb-assembler-mode): - Don't set overlay-arrow-string to "=>" as this is done - globally in C now. +2007-08-22 Glenn Morris -2005-04-12 Lute Kamstra + * files.el (backup-buffer-copy): Check backup directory is + writable, to avoid infloop deleting old backup. - * generic-x.el (rc-generic-mode, rul-generic-mode): - Fix auto-mode-alist entries. - (etc-fstab-generic-mode): Tweak fontification. + * mail/rmail.el (rmail-movemail-variant-p): Call on load to set + movemail related variables. + (rmail-insert-inbox-text): Use only rmail-movemail-program, which + will now be set before this is called. - * generic.el (generic-make-keywords-list): Fix docstring. - (generic-mode-internal): Simplify generic-font-lock-keywords. +2007-08-21 Juri Linkov -2005-04-11 Rajesh Vaidheeswarran + * delsel.el (delete-selection-pre-hook): + * emulation/cua-base.el (cua-paste): Use `mouse-region-match' + instead of checking last-command. - * whitespace.el (whitespace-buffer-leading) - (whitespace-buffer-trailing): Revert the incorrect test inversion. - However, fix the highlight area for the leading and - trailing whitespaces to show space. +2007-08-21 Juri Linkov -2005-04-11 Rajesh Vaidheeswarran + * loadup.el: Preload "button". - * whitespace.el (whitespace-version): Bump to 3.5. +2007-08-21 Stefan Monnier - (whitespace-buffer-leading, whitespace-buffer-trailing): - Invert sense of the test to highlight the whitespace. + * emacs-lisp/bytecomp.el (byte-compile-interactive-only-functions): + Add previous-line and next-line. -2005-04-12 Nick Roberts + * vc-arch.el (vc-arch-extra-menu-map): New var and fun. + (vc-arch-find-file-not-found-hook): Remove, it's now the default. - * progmodes/gud.el (gud-display-line): GUD uses its own - overlay arrow now so don't set overlay-arrow-string. - (gud-pdb-command-name): Revert back to "pdb" (2004-04-26). + * vc-hooks.el (vc-menu-entry): New var. + (vc-mode-line-map): Use it so that this menu also uses the extra-menu. + (menu-bar-tools-menu): Add the VC menu here rather than in menu-bar.el. + (vc-menu-map): Declare and initialize in one step. + (vc-menu-map-filter): Move&rename from menu-bar.el:menu-bar-vc-filter. -2005-04-11 Dan Nicolaescu + * menu-bar.el (vc-menu-map): Don't setup any more. + Instead, just create the proper spot in the menu. - * term.el (term-ansi-current-bold, term-ansi-current-underline) - (term-ansi-current-reverse, term-ansi-current-invisible) - (term-ansi-face-already-done): Change to boolean. - (term-reset-terminal, term-handle-colors-array): Handle the above - vars accordingly. - (term-buffer-vertical-motion): Rename from buffer-vertical-motion. - (term-emulate-terminal): Use the new name. +2007-08-20 Stefan Monnier - * faces.el (secondary-selection): Use yellow1, not yellow. - (trailing-whitespace): Use red1, not red. + * smerge-mode.el (smerge-resolve): New arg `safe'. + (smerge-resolve-all, smerge-batch-resolve): New function. + (smerge-refine): Make sure `diff' returns the expected result. + (smerge-parsep-re): New const. + (smerge-mode): Use it to adjust paragraph-separate. -2005-04-11 Jan Dj,Ad(Brv + * progmodes/perl-mode.el (perl-font-lock-syntactic-keywords): + Correctly match / regexp matchers as first char on a line when + fontifying only that line. - * dired.el (dired-mode): Use dnd-* instead of x-dnd-* - (dired-dnd-handle-local-file): Call dnd-get-local-file-name. - (dired-dnd-handle-file): Call dnd-get-local-file-uri. + * emacs-lisp/cl-macs.el (cl-transform-lambda): Preserve the match-data. - * cus-edit.el (dnd): New group. +2007-08-20 Stefan Monnier - * term/w32-win.el (dnd): Require dnd - (w32-drag-n-drop): Call dnd-handle-one-url. + * vc-bzr.el: Don't fiddle with vc-handled-backend. + (vc-bzr-registered): Don't redundantly protect against + file-error. Actually use the format-specific code. + (vc-bzr-buffer-nonblank-p): Remove. + (vc-bzr-status): Change `kindchange' -> `kindchanged'. - * x-dnd.el: Require dnd. - (x-dnd-handle-uri-list, x-dnd-handle-file-name): - Call dnd-handle-one-url. - (x-dnd-types-alist, x-dnd-insert-utf8-text) - (x-dnd-insert-utf16-text, x-dnd-insert-ctext): Change x-dnd-insert-text - to dnd-insert-text. - (x-dnd-protocol-alist, x-dnd-open-file-other-window) - (x-dnd-handle-one-url, x-dnd-get-local-file-uri) - (x-dnd-get-local-file-name, x-dnd-open-local-file) - (x-dnd-open-file, x-dnd-insert-text): Move to dnd.el (without x-). +2007-08-20 Juri Linkov - * dnd.el (dnd-protocol-alist): New file with generic DND functions. + * startup.el (fancy-splash-text): Change multiple tabs into one + tab. Remove "Useful File menu items" section (with "Exit Emacs" + and "Recover Crashed Session"). + (fancy-splash-screens): Set tab-width to 22. + (normal-splash-screen): Replace literal tabs with \t and + fix whitespace. Remove "Useful File menu items" section (with + "Exit Emacs" and "Recover Crashed Session"). -2005-04-11 JUAN-LEON Lahoz Garcia +2007-08-20 Johannes Weiner (tiny change) - * wdired.el: Doc fixes. - (wdired-confirm-overwrite): Rename from wdired-is-ok-overwrite. - (wdired-use-dired-vertical-movement): Rename from - wdired-always-move-to-filename-beginning. - (wdired-mode-map): Use `ignore' instead of `wdired-newline'. - (wdired-change-to-wdired-mode): Change mode name. - (wdired-newline): Delete. + * emacs-lisp/lisp-mode.el (preceding-sexp): New fun, the code was + extracted from `eval-last-sexp-1'. + (eval-last-sexp-1): Call `preceding-sexp'. -2005-04-11 Richard M. Stallman +2007-08-20 Thien-Thi Nguyen - * whitespace.el (whitespace-highlight-the-space): - Don't call whitespace-unhighlight-the-space here. + * vc-rcs.el (vc-rcs-annotate-command): + Fix bug introduced 2007-07-18T16:32:40Z!esr@snark.thyrsus.com: + Add back :vc-annotate-prefix propertization. - * simple.el (undo): Record t in undo-equiv-table - for the redo record made by an undo-in-region. +2007-08-20 Andreas Schwab -2005-04-12 Nick Roberts + * mail/rmail.el (rmail-autodetect): Doc fix. - * progmodes/gdb-ui.el (gdb-display-inferior-io-buffer) - (gdb-frame-inferior-io-buffer): New Functions to control - display of separate IO buffer. - (menu): Add them to menu-bar. - (gdb-display-buffer): Check for buffer another frame. - Protect GUD buffer. - (gdb-setup-windows): Create IO buffer if not already there. - (gdb-memory-mode): Remove purecopy noops. +2007-08-19 Juri Linkov -2005-04-11 Glenn Morris + * startup.el (normal-splash-screen): Add more links. - * progmodes/f90.el (f90-electric-insert): Add optional prefix arg, - and pass to self-insert-command. +2007-08-19 Juri Linkov -2005-04-11 Lute Kamstra + * startup.el (splash-screen-keymap): Rename from `fancy-splash-keymap' + because it's common to both types of splash screen: fancy and normal. + Bind SPC to scroll-up, DEL to scroll-down and `q' to exit-splash-screen. + (exit-splash-screen): Rename from `fancy-splash-quit'. + Use `quit-window' instead of `kill-buffer'. + (fancy-splash-head): Use make-button to insert GNU image link. + (fancy-splash-screens, normal-splash-screen): Rename " About GNU + Emacs" to "*About GNU Emacs*", and " GNU Emacs" to "*GNU Emacs*". + (normal-splash-screen): Put "Browse manuals" on the same line with + "Emacs manual". Remove descriptions from "Useful tasks" and put + all links in two columns on two lines. - * generic.el: Commentary section cleanup. - (generic): Delete. - (generic-use-find-file-hook, generic-lines-to-scan) - (generic-find-file-regexp, generic-ignore-files-regexp) - (default-generic-mode, generic-mode-find-file-hook) - (generic-mode-ini-file-find-file-hook): Move to generic-x.el. - * generic-x.el (generic-x): Docstring fix. Put it in the data group. - (generic-use-find-file-hook, generic-lines-to-scan) - (generic-find-file-regexp, generic-ignore-files-regexp) - (default-generic-mode, generic-mode-find-file-hook) - (generic-mode-ini-file-find-file-hook): Move from generic.el. +2007-08-19 Michael Kifer -2005-04-10 Karl Fogel + * viper.el (viper-remove-hooks): Remove some additional viper hooks + when the user calls viper-go-away. + (viper-go-away): Restore the default of default-major-mode. + Save the value of default-major-mode before vaperization. - * bookmark.el (bookmark-write-file): Catch errors writing file. - This is the same change as saveplace.el at 2005-04-10T23:32:00Z!rms@gnu.org. + * viper-cmd.el: Replace error "" with "Viper bell". -2005-04-10 Richard M. Stallman + * viper-ex.el: Replace error "" with "Viper bell". - * startup.el (fancy-splash-tail): Update copyright year. - (command-line): Split part of -Q into -D. - (emacs-basic-display): New defvar. - (fancy-splash-text): Correct name of menu item. + * ediff-util.el (ediff-make-temp-file): Use the coding system of the + buffer for which file is created. - * saveplace.el (save-place-alist-to-file): Catch errors writing file. +2007-08-19 Glenn Morris - * info.el (Info-fontify-node): Handle fontification of multiple * Menu - lines in one node. + * Makefile.in (custom-deps, finder-data, autoloads, recompile) + (progmodes/cc-mode.elc, mh-e/mh-loaddefs.el): Use $(emacs) rather + than $(EMACS), so that EMACSLOADPATH is set. Prevents any system + shadow files messing up the compilation. - * comint.el (comint-send-input): New arg ARTIFICIAL. - Callers in this file changed. +2007-08-18 Glenn Morris - * abbrev.el (define-abbrevs): Read system abbrevs properly. + * emacs-lisp/eldoc.el (eldoc-get-fnsym-args-string): Add doc + string. Also apply eldoc-argument-case in the help-split-fundoc + case. Adapt for changed behavior of eldoc-function-argstring, + eldoc-function-argstring-format, and + eldoc-highlight-function-argument. + (eldoc-highlight-function-argument): Handle nil INDEX argument, + just call eldoc-docstring-format-sym-doc in that case. + (eldoc-function-argstring): Change the behavior. Now it converts + an argument list to a string. + (eldoc-function-argstring-format): Change the behavior. Now it + applies `eldoc-argument-case' to a string. + + * progmodes/scheme.el (scheme-mode-variables): Set + font-lock-comment-start-skip. - * emacs-lisp/map-ynp.el (map-y-or-n-p): Clarify RET/q in help message. +2007-08-18 Martin Rudalics -2005-04-10 Chong Yidong + * progmodes/ada-mode.el (ada-create-syntax-table): Move + set-syntax-table from here to ... + (ada-mode): ... here. Do not change global value of + comment-multi-line. Call new function + ada-initialize-syntax-table-properties and add new function + ada-handle-syntax-table-properties to font-lock-mode-hook. + (ada-deactivate-properties, ada-initialize-properties): Replace + by new functions ... + (ada-handle-syntax-table-properties) + (ada-initialize-syntax-table-properties) + (ada-set-syntax-table-properties): ... to set up syntax-table + properties uniformly, independently from whether font-lock-mode + is enabled or not. Handle read-only buffers and do not change + undo-list when setting syntax-table properties. + (ada-after-change-function): Use ada-set-syntax-table-properties. - * url/url-ldap.el (url-ldap): Add docstring. Fix call to - `ldap-search-internal'. +2007-08-18 Micha,Ak(Bl Cadilhac -2005-04-10 Stefan Monnier + * progmodes/meta-mode.el (meta-indent-calculate-last): Remove. + (meta-indent-current-nesting): Use a computation of the nesting + instead. + (meta-indent-current-indentation): Indentation is given according + to nesting and if the previous line was finished or not. + (meta-indent-unfinished-line): Tell if the current line ends with + a finished expression. + (meta-indent-looking-at-code): Like `looking-at', but checks if + the point is in a string before. + (meta-indent-level-count): Use it. Don't count parenthesis as it's + done in the nesting function. + (meta-indent-in-string-p): Tell if the current point is in a + string. + (meta-indent-calculate): Treat b-o-b as a special case. Use the + previous functions. + +2007-08-17 Thien-Thi Nguyen + + * emacs-lisp/copyright.el (copyright-limit): New defsubst. + (copyright-update-year, copyright-update) + (copyright-fix-years): Use it. + +2007-08-17 Kimit Yada (tiny change) + + * emacs-lisp/copyright.el (copyright-update-year): + Fix bug: Handle nil copyright-limit. + +2007-08-17 Jay Belanger + + * calc/calc-units.el (math-standard-units): Give exact + conversion for tsp. + + * calc/calc.el (math-bignum-digit-length): Compute the + appropriate value. + + * calc/calc-bin.el (math-bignum-logb-digit-size) + (math-bignum-digit-power-of-two): + * calc/calc-comb.el (math-small-factorial-table): + * calc/calc-ext.el (math-approx-pi, math-approx-sqrt-e) + (math-approx-gamma-const): + * calc/calc-funcs.el (math-besJ0, math-besJ1, math-besY0) + (math-besY1, math-bernoulli-b-cache): + * calc/calc-math.el (math-approx-ln-10, math-approx-ln-2): + Remove `eval-when-compile's. - * files.el (set-auto-mode-1): Use line-end-position. +2007-08-17 Bob Rogers (tiny change) - * international/latin-1.el: - * international/latin-2.el: - * international/latin-3.el: - * international/latin-4.el: - * international/latin-5.el: - * international/latin-8.el: - * international/latin-9.el: Give punctuation syntax to NBSP. + * progmode/cperl-mode.el (cperl-look-at-leading-count) + (cperl-find-pods-heres): Fix an error when typing expressions like + `s{a}{b}'. - * textmodes/bibtex.el (bibtex-autokey-titleword-ignore) - (bibtex-reference-key, bibtex-autokey-demangle-name, bibtex-mode): - Use char-classes to accept non-ascii letters, accepted in some recent - bibtex implementations. +2007-08-17 Micha,Ak(Bl Cadilhac -2005-04-10 Luc Teirlinck + * mail/emacsbug.el (report-emacs-bug): Remove the last number of + `emacs-version', use the topic prefix ``version; ''. Make MS-DOS + a special case (there's no build number). - * custom.el (custom-set-minor-mode): Any non-nil value for the - variable should enable the mode when set through Custom. +2007-08-17 T. V. Raman (tiny change) -2005-04-10 Stefan Monnier + * completion.el (symbol-under-point, symbol-before-point) + (symbol-before-point-for-complete): Use buffer-substring-no-properties. - * progmodes/vhdl-mode.el (vhdl-mode-map-init): Don't override default - TAB binding so tab-always-indent is obeyed. - (vhdl-minibuffer-local-map): Move initialization into declaration. - (vhdl-mode-abbrev-table-init): Mark the abbrevs as `system'. - (vhdl-run-when-idle, vhdl-create-mode-menu, vhdl-character-to-event) - (vhdl-hooked-abbrev): Avoid test for XEmacs. - (vhdl-current-line): Use line-beginning-position. - (vhdl-doc-variable, vhdl-doc-mode): Call help-setup-xref before - with-output-to-temp-buffer, so the current position can be recorded. +2007-08-17 Glenn Morris -2005-04-10 Masatake YAMATO + * progmodes/compile.el (compilation-get-file-structure): Make use + of the directory part when checking for an existing entry, to + handle files with same basename in different directories. - * progmodes/compile.el (compilation-error-regexp-alist-alist): - Add regexp for gcov. +2007-08-17 Jay Belanger -2005-04-06 Katsumi Yamaoka + * calc/calc.el (calc-language-alist): Add texinfo-mode. - * calendar/time-date.el (time-to-seconds, seconds-to-time) - (days-to-time, time-subtract, time-add): Don't use the #xhhhh - syntax which Emacs 20 doesn't support. +2007-08-16 Vinicius Jose Latorre -2005-04-09 Richard M. Stallman + * ps-print.el (ps-header-font-size, ps-header-title-font-size) + (ps-footer-font-size, ps-line-number-font-size, ps-line-spacing) + (ps-paragraph-spacing): Docstring fix. - * help.el (describe-key-briefly, describe-key): - Replace strings as event types with "(any string)". +2007-08-16 Glenn Morris -2005-04-09 Stefan Monnier + * ps-print.el (ps-font-size): Doc fix. - * arc-mode.el (archive-mode-map): Move initialization into - the declaration. Override *all* bindings of `undo'. - (archive-lemacs): Remove, use (featurep 'xemacs) instead. +2007-08-16 Richard Stallman + + * emacs-lisp/copyright.el (copyright-names-regexp): Add custom group. + +2007-08-15 Juri Linkov + + * startup.el (initialization): Change parent group from `internal' + to `environment'. + (initial-buffer-choice): New variable. + (command-line): Revert 2007-07-02 change that sets + buffer-offer-save in *scratch* and enables auto-save in it. + (fancy-splash-text): Add links to existing items. Add new items + with links for useful tasks. Move information about Control-g to + fancy-splash-head. Move "Emacs Guided Tour" to the end. + (fancy-splash-keymap): New variable. + (fancy-splash-last-input-event): Remove variable. + (fancy-splash-insert): Add processing of `:link' element. + (fancy-splash-head): Replace "Type Control-l to begin editing" + with "Type `q' to exit". + (fancy-splash-screens-1): Let-bind inhibit-read-only to t. + (fancy-splash-default-action, fancy-splash-special-event-action): + Remove functions. + (fancy-splash-quit): New function. + (fancy-splash-screens): Rename input arg from `hide-on-input' to + `static' and reverse the condition of its usage. Don't preserve + original values of `minor-mode-map-alist', + `emulation-mode-map-alists', `special-event-map'. + Rename startup-buffer from "*About GNU Emacs*" to " GNU Emacs". + Rename about-buffer from " GNU Emacs" to " About GNU Emacs". + Remove processing of special events. Use local key map + `fancy-splash-keymap'. Set buffer to read-only. + (normal-splash-screen): Rename input arg from `hide-on-input' to + `static' and reverse the condition of its usage. + Rename startup-buffer from "*About GNU Emacs*" to " GNU Emacs". + Rename about-buffer from " GNU Emacs" to " About GNU Emacs". + Add links to existing items. Add new items with links for useful + tasks. Use local key map `fancy-splash-keymap'. + (display-splash-screen): Rename input arg from `hide-on-input' to + `static'. + (about-emacs): Add alias to display-splash-screen. + (command-line-1): Use `initial-buffer-choice'. -2005-04-09 Jay Belanger + * menu-bar.el (menu-bar-help-menu): + * term/mac-win.el (mac-apple-event-map): Bind About Emacs menu + item to about-emacs instead of display-splash-screen. - * calc/calc-units.el (math-standard-units): Redefine Watt hour as W*hr. +2007-08-15 Jay Belanger -2005-04-09 Dan Nicolaescu + * calc/calc-units.el (math-standard-units): Update values. + Put in exact, rational values when possible. + (math-unit-prefixes): Replace floats with powers of ten. + (math-standard-units-systems): Replace floats with integers. + (math-make-unit-string): Remove extra spaces in output. - * term/xterm.el (xterm-rgb-convert-to-16bit): Simplify. - (xterm-register-default-colors): Update color values computation - to match xterm-200. +2007-08-15 Glenn Morris -2005-04-09 Kenichi Handa + * mail/undigest.el (rmail-digest-parse-rfc1153sloppy): Be even + sloppier, for the sake of GNU Mailman. + (rmail-digest-rfc1153): Initialize `result' correctly. - * international/code-pages.el (iso-latin-7): Fix the map. +2007-08-15 Micha,Ak(Bl Cadilhac -2005-04-08 Luc Teirlinck + * mail/emacsbug.el (report-emacs-bug): Put `Bug: emacs-version; ' + in the mail title. Suggested by Reiner Steib. - * emacs-lisp/lisp.el (defun-prompt-regexp) - (parens-require-spaces, buffer-end, end-of-defun) - (insert-parentheses): Doc fixes. +2007-08-14 Chris Hecker (tiny change) -2005-04-08 Kim F. Storm + * calc/calc-aent.el (calc-do-quick-calc): Add binary + representation of integers to the list of outputs. - * comint.el (comint-highlight-prompt): Fix face spec. - * hi-lock.el (hi-green): Likewise. +2007-08-14 Glenn Morris -2005-04-08 Dan Nicolaescu + * simple.el (bad-packages-alist): New constant. + (bad-package-check): New function. Together, these two add elements + to `after-load-alist' to check for problematic external packages. + * emulation/cua-base.el: Move CUA-mode check to `bad-packages-alist'. - * cus-edit.el (custom-modified-face): - * comint.el (comint-highlight-input): Fix previous changes. - * term.el (term-handle-ansi-escape): Add a comment. +2007-08-14 Jay Belanger + + * calc/calc-units.el (math-get-standard-units) + (math-get-units, math-make-unit-string) + (math-get-default-units, math-put-default-units): New functions. + (math-default-units-table): New variable. + (calc-convert-units, calc-convert-temperature): Add machinery + to supply default values. + +2007-08-14 Stefan Monnier + + * emulation/tpu-edt.el: Add tpu-extras's autoloads. + (tpu-gold-map, tpu-global-map): Comment-out the bindings to nil. + (tpu-gold-map): Bind F to tpu-cursor-free-mode. + (minibuffer-local-map): Use funkey symbols rather than esc-sequence. + + * emulation/tpu-extras.el: Remove spurious * in docstrings. + Put its autoloads into tpu-edt.el rather than loaddefs.el. + (tpu-cursor-free-mode): Rename from tpu-cursor-free. + Make into a proper minor-mode. + (tpu-backward-char, tpu-next-line, tpu-previous-line) + (tpu-next-end-of-line, tpu-current-end-of-line): Use new name. + (tpu-trim-line-ends-if-needed): Rename from tpu-before-save-hook. + (tpu-set-cursor-free, tpu-set-cursor-bound): + Delegate to tpu-cursor-free-mode. + (tpu-next-line, tpu-previous-line, tpu-forward-line) + (tpu-backward-line, tpu-scroll-window-down, tpu-scroll-window-up): + Use line-move or forward-line instead of next-line-internal. -2005-04-08 Stefan Monnier +2007-08-13 Nick Roberts - * whitespace.el (whitespace-highlight-the-space): Put the same overlay - in the buffer and in whitespace-highlighted-space. - (whitespace-unhighlight-the-space): Simplify. - (whitespace-buffer): Simplify. + * progmodes/gdb-ui.el (gdb-send): Handle CTRL-D more carefully. -2005-04-08 Dan Nicolaescu +2007-08-12 Richard Stallman - * textmodes/table.el (table-cell-face): Add special case for - displays supporting a high number of colors. - * progmodes/vhdl-mode.el (vhdl-font-lock-prompt-face) - (vhdl-font-lock-reserved-words-face) - (vhdl-speedbar-architecture-face) - (vhdl-speedbar-instantiation-face) - (vhdl-speedbar-architecture-selected-face) - (vhdl-speedbar-instantiation-selected-face): Likewise. - * progmodes/sh-script.el (sh-heredoc-face): Likewise. - * progmodes/idlw-help.el (idlwave-help-link-face): Likewise. - * progmodes/ebrowse.el (ebrowse-tree-mark-face) - (ebrowse-root-class-face, ebrowse-member-attribute-face) - (ebrowse-progress-face): Likewise. - * progmodes/compile.el (compilation-info-face): Likewise. - * progmodes/cc-fonts.el (c-invalid-face): Likewise. - * emacs-lisp/re-builder.el (reb-match-3): Likewise. - * calendar/calendar.el (diary-face): Likewise. - * woman.el (woman-italic-face, woman-bold-face) - (woman-unknown-face): Likewise. - * wid-edit.el (widget-button-pressed-face): Likewise. - * whitespace.el (whitespace-highlight-face): Likewise. - * smerge-mode.el (smerge-mine-face, smerge-base-face): Likewise. - * pcvs-info.el (cvs-marked-face): Likewise. - * info.el (info-xref): Likewise. - * ido.el (ido-subdir-face, ido-indicator-face): Likewise. - * hilit-chg.el (highlight-changes-face) - (highlight-changes-delete-face): Likewise. - * hi-lock.el (hi-yellow, hi-green, hi-blue-b, hi-green-b) - (hi-red-b): Likewise. - * generic-x.el (show-tabs-tab-face, show-tabs-space-face): Likewise. - * font-lock.el (font-lock-keyword-face) - (font-lock-function-name-face, font-lock-warning-face): Likewise. - * cus-edit.el (custom-invalid-face, custom-modified-face) - (custom-set-face, custom-changed-face, custom-variable-tag-face) - (custom-group-tag-face-1, custom-group-tag-face): Likewise. - * comint.el (comint-highlight-prompt): Likewise. + * pcvs.el (cvs-reread-cvsrc, cvs-checkout, cvs-mode-checkout) + (cvs-execute-single-file): Use new name split-string-and-unquote. + (cvs-header-msg): Use new name combine-and-quote-strings. -2005-04-08 Lute Kamstra + * emulation/vi.el (vi-next-line): Ignore return value of line-move. - * font-lock.el (font-lock-keywords): Docstring fixes. + * progmodes/gud.el (gud-common-init): Use new name + split-string-and-unquote. -2005-04-08 Kenichi Handa + * progmodes/flymake.el (flymake-err-line-patterns): Fix infloop + in javac regexp. - * ps-mule.el (ps-mule-show-warning): If the number of unprintable - chars are more than a limit, print " and more..." at the tail. + * pcvs-util.el (cvs-qtypedesc-strings): Use new names + combine-and-quote-strings and split-string-and-unquote. -2005-04-08 Kim F. Storm + * subr.el (combine-and-quote-strings): Rename from strings->string. + (split-string-and-unquote): Rename from string->strings. - * emacs-lisp/authors.el (authors-aliases): Update list. - (authors-ignored-files): New list. - (authors-fixed-entries): Fix typo. - (authors-renamed-files-alist): Update list. - (authors-add): Check authors-ignored-files. +2007-08-10 Stefan Monnier -2005-04-08 Carsten Dominik + * log-view.el (log-view-font-lock-keywords): Use `eval' so as to adapt + to buffer-local settings. - * calendar/diary-lib.el (add-to-diary-list): MARKER argument made - optional, to ensure backward compatibility. + * emacs-lisp/backquote.el (backquote-delay-process): New function. + (backquote-process): Add internal arg `level'. Use the two to + correctly handle nested backquotes. -2005-04-08 Stephen Eglen +2007-08-09 Riccardo Murri - * textmodes/flyspell.el (flyspell-large-region): Doc fix. + * vc-bzr.el (vc-bzr-registered): Use \0 instead of literal NULs. + (vc-bzr-state-words): Add "kind changed" state word. + (vc-bzr-status): New function. Return Bzr idea of file status, + which is different from VC's. + (vc-bzr-state): Use vc-bzr-status. + (vc-workfile-unchanged-p): Use vc-bzr-status. + (vc-bzr-revert): Use synchronous process; expect exitcode 0. + (vc-dired-state): Process "kind changed" state word. -2005-04-08 Kim F. Storm +2007-08-09 Stefan Monnier - * buff-menu.el (Buffer-menu-mode-map): Map follow-link to mouse-face. + * vc-hooks.el (vc-default-find-file-not-found-hook): Do nothing. - * mouse.el (mouse-on-link-p): Doc fix. + * vc-rcs.el (vc-rcs-find-file-not-found-hook): + Move from vc-default-find-file-not-found-hook. -2005-04-07 Luc Teirlinck +2007-08-08 Stefan Monnier - * ielm.el (ielm-prompt-read-only): Doc fix. + * man.el: Remove spurious * in docstrings. + Merge defvars and toplevel setq-defaults. + (Man-highlight-references0): Limit=nil rather than point-max. + (Man-mode-map): Move initialization into the declaration. + (Man-strip-page-headers, Man-unindent): Use dolist & inhibit-read-only. + (Man-view-header-file): Use expand-file-name rather than concat. + (Man-notify-when-ready, Man-bgproc-sentinel): Use with-current-buffer. - * comint.el (comint-prompt-read-only): Doc fix. + * man.el (Man-next-section): Make sure we do not move backward. -2005-04-07 Benjamin Rutt +2007-08-08 Stefan Monnier - * ffap.el (ffap-pass-wildcards-to-dired): New user option to - ensure dired always handles wildcards passed to ffap. - (find-file-at-point): Use it. - (ffap-dired-wildcards): Doc fix. + * files.el (auto-mode-alist): Use the purecopied text (duh!). -2005-04-07 Juri Linkov +2007-08-08 Glenn Morris - * simple.el (next-error-overlay-arrow-position): New defvar. - Put "=>" on its property `overlay-arrow-string'. Add it to - `overlay-arrow-variable-list'. + * Replace `iff' in doc-strings and comments. - * progmodes/compile.el (compilation-setup): - Set `next-error-overlay-arrow-position' to nil. Also set it to - nil in the local hook `kill-buffer-hook'. Make local variable - `overlay-arrow-string' and set it to "=>". - (compilation-goto-locus): Set BOL position to - `next-error-overlay-arrow-position' instead of - `overlay-arrow-position'. +2007-08-08 Martin Rudalics - * info.el (Info-mode): Add `Info-kill-buffer' to `kill-buffer-hook' - locally instead of adding it to the global hook. - (Info-kill-buffer): Move up. + * dired.el (dired-pop-to-buffer): + * mouse-drag.el (mouse-drag-should-do-col-scrolling): + * calendar/calendar.el (generate-calendar-window): + * progmodes/compile.el (compilation-set-window-height): + * textmodes/two-column.el (2C-two-columns, 2C-merge): + Use window-full-width-p instead of comparing frame-width and + window-width. -2005-04-06 Dan Nicolaescu + * progmodes/compile.el (compilation-find-buffer): Remove extra + argument in call to compilation-buffer-internal-p. - * term/xterm.el (xterm-standard-colors): Update color values from - xterm-200. +2007-08-07 Tom Tromey -2005-04-06 Stefan Monnier + * progmodes/tcl.el (tcl-indent-level, tcl-continued-indent-level): + Add safe-local-variable property. - * textmodes/tex-mode.el (tex-font-lock-keywords-2): Add \bfseries. +2007-08-07 Chong Yidong - * fast-lock.el: - * lazy-lock.el: Move them to the obsolete subdir. + * image-mode.el (image-toggle-display): Use image-refresh. -2005-04-06 JUAN-LEON Lahoz Garcia +2007-08-07 Riccardo Murri - * wdired.el (wdired-advise-functions, wdired-add-skip-in-replace) - (wdired-add-replace-advice): Remove. - (wdired-change-to-wdired-mode): Use query-replace-skip-read-only. + * vc-bzr.el: Remove comments about vc-bzr.el being a modified + unofficial version. + (vc-bzr-command): Remove redundant setting of process-connection-type. + (vc-bzr-admin-checkout-format-file): Add autoload. + (vc-bzr-root-dir): Remove in favor of vc-bzr-root. + (vc-bzr-root): Switch to implementation of vc-bzr-root-dir. + (vc-bzr-registered): Compare dirstate format tag with known good + value, abort parsing if match fails. Warn user in docstring. + (vc-bzr-workfile-version): Case for different Bzr branch formats. + See bzrlib/branch.py in Bzr sources. + (vc-bzr-diff): First argument FILES may be a string rather than a list. + (vc-bzr-shell-command): Remove in favor of + vc-bzr-command-discarding-stderr. + (vc-bzr-command-discarding-stderr): New function. -2005-04-06 Kim F. Storm +2007-08-06 Riccardo Murri - * startup.el (command-line): Add --bare-bones alias for -Q. + * vc-bzr.el (vc-bzr-registered): Gracefully handle missing "bzr" + program, and return nil. + (vc-bzr-state): Gracefully handle missing "bzr" program, and return nil. + (vc-bzr-state): Look for path names relative to the repository + root after status keyword. + (vc-bzr-file-name-relative): New function. + (vc-bzr-admin-dirname): Reinstate, as other vc-bzr-admin-... paths + depend on it. + (vc-bzr-admin-dirname, ...-checkout-format-file) + (...-branch-format-file, ...-revhistory): Paths to some Bzr internal + files that we now parse directly for speed. + (vc-bzr-root-dir): Use `vc-bzr-admin-checkout-format-file' as witness. + (vc-bzr-registered): Only parse vc-bzr-admin-dirstate file if it exists. + (vc-bzr-state): "bzr status" successful only if exitcode is 0. + (vc-bzr-root): Use `vc-bzr-shell-command'. Stderr may contain + Bzr warnings, so we must discard it. + (vc-bzr-workfile-version): Speedup counting lines from + `vc-bzr-admin-revhistory' file, but fallback to spawning "bzr revno" + if that file doesn't exist. + (vc-bzr-responsible-p): Use `vc-bzr-root' instead of + `vc-bzr-root-dir' for speed. Add `vc-bzr-admin-dirname' (not ".bzr"!) + to `vc-directory-exclusion-list'. + (vc-bzr-shell-command): New function. -2005-04-06 YAMAMOTO Mitsuharu +2007-08-06 Tom Tromey - * term/mac-win.el: Use create-fontset-from-mac-roman-font to - create the startup fontset if a font specification ends with - `mac-roman'. + * diff-mode.el (diff-unified->context, diff-reverse-direction) + (diff-fixup-modifs): Typo in docstring. -2005-04-06 Lute Kamstra +2007-08-06 Stefan Monnier - * add-log.el (change-log-font-lock-keywords): Complete 2005-04-03 - change. + * emulation/tpu-edt.el (tpu-current-line): Use posn-at-point and + count-screen-lines. + (tpu-edt-off): Disable relevant pieces of advice. - * emacs-lisp/copyright.el (copyright-update-year): Replace the - right subexpression. Suggested by Jay Bingham . + * emulation/tpu-extras.el (tpu-before-save-hook): Rename from + tpu-write-file-hook. Activate it with add-hook on buffer-save-hook. + (newline, newline-and-indent, do-auto-fill): Use advice instead of + redefining the function. + (tpu-set-scroll-margins): Activate the pieces of advice. -2005-04-05 Lute Kamstra +2007-08-06 Martin Rudalics - * generic.el (generic-mode-internal): Fix 2005-03-31 change. - (define-generic-mode): Ditto. Fix debug declaration. + * help.el (resize-temp-buffer-window): Use window-full-width-p + instead of comparing frame-width and window-width. - * generic-x.el (show-tabs-tab-face, show-tabs-space-face): - Put them in the generic-x group. +2007-08-13 Stephen Leake - * calendar/timeclock.el (timeclock): Doc fix. + * pcvs-parse.el (cvs-parse-table): Handle additional instance of + optional quotes around files in NEED-UPDATE . REMOVED case. - * generic.el (define-generic-mode): Don't use custom-current-group. - Document default :group value. - * emacs-lisp/easy-mmode.el (define-minor-mode): Ditto. - (define-global-minor-mode): Don't use custom-current-group. + * progmodes/ada-xref.el (ada-gnatls-args): Fix docstring. + (ada-treat-cmd-string): Improve error message. + (ada-do-file-completion): Call `ada-require-project-file', so + project variables are set properly. + (ada-prj-find-prj-file): Delete Emacs 20.2 support. + (ada-gnatfind-buffer-name): New constant. + (ada-find-any-references): Use new constant. Set buffer name + properly in compilation-start. Toggle read-only properly. + (ada-find-in-src-path): Fix spelling error in docstring. -2005-04-05 Glenn Morris + * progmodes/vhdl-mode.el (vhdl-update-progress-info): Avoid divide + by zero error. - * startup.el (command-line-1): Display startup-echo-area-message - when fancy splash screen is in use. +2007-08-13 Stefan Monnier - * progmodes/sh-script.el (sh-builtins) : Add `caller'. - (sh-escaped-newline): New face. - (sh-font-lock-keywords) : Improve regexp for escaped - newline, and use sh-escaped-newline face. + * emacs-lisp/autoload.el (autoload-print-form): Use print-quoted. - * progmodes/tcl.el (tcl-escaped-newline): New face. - (tcl-builtin-list): New variable. - (tcl-set-font-lock-keywords): Add builtins, variables, and escaped - newlines. Fix keywords subexpression number. +2007-08-12 Richard Stallman -2005-04-05 Carsten Dominik + * progmodes/sh-script.el (sh): Delete group `unix'. - * textmodes/org.el (org-diary-default-entry): Fix call to - `add-to-diary-entry'. + * progmodes/gud.el (gud): Change to group `processes'. -2005-04-05 Kim F. Storm +2007-08-11 Glenn Morris - * ediff-init.el: Use (featurep 'xemacs). + * progmodes/compile.el (compilation-buffer-name): Don't check + compilation-arguments. It is superfluous, and the variable isn't + even set when this function is called. -2005-04-05 David Ponce +2007-08-10 YAMAMOTO Mitsuharu - * cus-edit.el (face): Derive from symbol widget. Display sample - of the current face on the fly. - (widget-face-sample-face-get, widget-face-notify): New functions. - (widget-face-value-create): Remove. + * term/mac-win.el (mac-ae-reopen-application): New function. + (mac-apple-event-map): Bind "reopen application" Apple event to it. - * wid-edit.el (widget-field-end): Temporarily remove field - narrowing before to call `get-char-property'. +2007-08-10 Stefan Monnier -2005-04-04 Jay Belanger + * textmodes/tex-mode.el (tex-font-lock-unfontify-region): Fix to + take tex-font-script-display into account. + (tex-font-script-display, tex-font-lock-suscript): Change from a cons + cell to a list of 2 elements to simplify the unfontify code. - * calc/calc-aent.el (math-read-replacement-list): Add subscripts. - (math-read-subscripts): New variable. - (math-read-preprocess-string): Process subscripts. +2007-08-08 Vinicius Jose Latorre -2005-04-04 Luc Teirlinck + * ps-print.el (ps-default-fg, ps-default-bg): Docstring fix. + (ps-begin-job): Use ps-default-fg and ps-default-bg only when + ps-print-color-p is neither nil nor black-white. Reported by Christian + Schlauer . - * comint.el (comint-prompt-read-only): Doc fix. +2007-08-08 Andreas Schwab - * dired.el (dired-copy-filename-as-kill): Make `-' arg behave like - `-1'. Doc fix. + * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook): Check for + self-insert-command, not self-insert. -2005-04-04 Carsten Dominik +2007-08-08 Glenn Morris - * textmodes/org.el (org-insert-mode-line-in-empty-file): - Change default value to nil. + * emacs-lisp/eldoc.el (eldoc-get-fnsym-args-string): Make second + argument optional, for backwards compatibility, and only highlight + args when present. Fix symbol name typo (doc/args). -2005-04-04 Lute Kamstra + * help-mode.el (help-make-xrefs): Search for symbol constituents, + rather than just `-'. - * autorevert.el (auto-revert-mode): Specify :group. - * battery.el (display-battery-mode): Specify :group. - * diff-mode.el (diff-minor-mode): Specify :group. - * font-core.el (font-lock-mode): Specify :group. - * hl-line.el (hl-line-mode): Specify :group. - * iimage.el (iimage): New customization group. - (iimage-mode): Specify :group. - * longlines.el (longlines-mode): Specify :group. - * master.el: Don't require easy-mmode. - (master): New customization group. - (master-mode): Specify :group. - * msb.el (msb-mode): Specify :group. - * reveal.el (reveal-mode): Specify :group. - * simple.el (next-error-follow-minor-mode): Specify :group. - * smerge-mode.el (smerge-mode): Specify :group. - * emacs-lisp/eldoc.el (eldoc-mode): Specify :group. - * emulation/cua-base.el (cua-mode): Specify :group. - * international/encoded-kb.el (encoded-kbd-mode): Specify :group. - * language/thai-util.el (thai-auto-composition-mode) - (thai-word-mode): Specify :group. - * mail/supercite.el (sc-minor-mode): Specify :group. - * progmodes/cwarn.el (cwarn-mode): Specify :group. - * progmodes/flymake.el (flymake-mode): Specify :group. - * progmodes/glasses.el (glasses-mode): Specify :group. - * progmodes/hideif.el (hide-ifdef-mode): Specify :group. - * textmodes/enriched.el (enriched-mode): Specify :group. - * textmodes/refill.el (refill-mode): Specify :group. +2007-08-07 Jay Belanger - * add-log.el (change-log-font-lock-keywords): Names in - parenthesized lists can contain spaces. + * calc/calc-units.el (calc-convert-temperature): + Use `/' to create fractions. -2005-04-04 Thien-Thi Nguyen +2007-08-07 Michael Albinus - * startup.el (fancy-splash-text): Shorten default text of - "Emacs Tutorial" line. Also, if the current language env - indicates an available tutorial file other than TUTORIAL, - extract its title and append it to the line in parentheses. - (fancy-splash-insert): If arg is a thunk, funcall it. + * net/tramp.el (tramp-wrong-passwd-regexp): Make the regexp more + global matching. + (tramp-handle-shell-command): Handle OUTPUT-BUFFER and + ERROR-BUFFER more robust. Display output. + (tramp-file-name-handler): Add a connection property when we found + a foreign file name handler. This allows backends like ftp to + profit also from usr/host name completion based on connection + cache. + (tramp-send-command-and-read): Search for trash after the regexp + until eol only. In XEmacs, there is a problem with \n. -2005-04-04 Jay Belanger + * net/tramp-cache.el (top): Read persistent connection history + when cache is empty. - * calc.el (calc-language-alist): Add tags to customization type. +2007-08-07 Nic Ferrier (tiny change) -2005-04-03 Luc Teirlinck + * net/tramp.el (tramp-handle-process-file): Fix bug inserting + resulting output. - * xt-mouse.el (xterm-mouse-mode): Add explicit Custom group, mouse. - Doc fix. +2007-08-07 Sam Steingold -2005-04-03 Marcelo Toledo + * progmodes/compile.el (compilation-start): Pass nil as startfile + to comint-exec. - * add-log.el (change-log-font-lock-keywords): The manual - describing a Change Log entry, says: (...) "Aside from these - header lines, every line in the change log starts with a space or - a tab.". The font-lock was not highlighting lines started with - spaces, added support for it. +2007-08-07 Chong Yidong -2005-04-03 Roland Winkler + * longlines.el (longlines-decoded): New variable. + (longlines-mode): Avoid encoding or decoding the buffer twice. - * textmodes/bibtex.el (bibtex-url): Use format to generate the url. - (bibtex-generate-url-list): Update docstring accordingly. Put the - complex example in the docstring. - (bibtex-font-lock-url): Use pop. +2007-08-07 Martin Rudalics -2005-04-03 Stefan Monnier + * format.el (format-insert-file): Make sure that at most one undo + entry is recorded for the insertion. Inhibit point-motion and + modification hooks around call to insert-file-contents. - * progmodes/tcl.el (tcl-set-font-lock-keywords): Use new \_< ops. +2007-08-07 Stefan Monnier - * pcvs.el (cvs-checkout): Prompt for cvsroot as well. + * vc.el (vc-annotate): Select temp-buffer before running vc-exec-after. + Select the buffer's window before moving point. -2005-04-03 Glenn Morris +2007-08-07 Richard Stallman - * filesets.el (filesets-set-default): Doc fix. + * term.el (term): Remove parent group `unix'. -2005-04-03 Lute Kamstra + * simple.el (default-indent-new-line): New function. + It calls comment-line-break-function if there are comments. + (do-auto-fill): Use that. - * generic.el (define-generic-mode): Add argument to specify - keywords for defcustom. - (default-generic-mode): Specify :group. +2007-08-07 Sean O'Rourke - * generic-x.el: Specify :group for all generic modes. + * complete.el (PC-lisp-complete-symbol): Complete symbol around point. + (PC-do-completion): Add "acronym completion" for symbols and + filenames, so e.g. "mvbl" expands to "make-variable-buffer-local". - * desktop.el (desktop-no-desktop-file-hook) - (desktop-after-read-hook): Doc fix. +2007-08-06 Sam Steingold -2005-04-02 Luc Teirlinck + * mouse.el (mouse-buffer-menu): Pass mode-name through + format-mode-line because it may be a list, + e.g., (sgml-xml-mode "XML" "SGML"), and not a string. - * simple.el (visible-mode): Use explicit :group keyword. - This changes the group of `visible-mode-hook' from paren-blinking - to editing-basics. +2007-08-06 Vinicius Jose Latorre -2005-04-02 Sergey Poznyakoff (tiny change) + * printing.el (pr-update-menus): Docstring fix. - * mail/rmail.el (rmail-parse-url): Bugfix. Parse traditional - mailbox specifications as well as URLs. - (rmail-insert-inbox-text): Remove unused conditional branches. +2007-08-06 Jason Rumney -2005-04-01 Jay Belanger + * menu-bar.el (menu-bar-vc-filter): Use vc-call-backend. - * calc/calc-graph.el (calc-gnuplot-name, calc-gnuplot-plot-command) - (calc-gnuplot-print-command): Move definitions to calc.el. + * vc-hooks.el (vc-call): Add doc string. - * calc/calc-embed.el (calc-embedded-announce-formula) - (calc-embedded-open-formula, calc-embedded-close-formula) - (calc-embedded-open-word, calc-embedded-close-word) - (calc-embedded-open-plain, calc-embedded-close-plain) - (calc-embedded-open-new-formula, calc-embedded-close-new-formula) - (calc-embedded-open-mode, calc-embedded-close-mode): - Move definitions to calc.el. +2007-08-06 Michael Albinus - * calc/calc.el (calc-settings-file, calc-language-alist): - Make customizable. - (calc-embedded-announce-formula, calc-embedded-open-formula) - (calc-embedded-close-formula, calc-embedded-open-word) - (calc-embedded-close-word, calc-embedded-open-plain) - (calc-embedded-close-plain, calc-embedded-open-new-formula) - (calc-embedded-close-new-formula, calc-embedded-open-mode) - (calc-embedded-close-mode, calc-gnuplot-name) - (calc-gnuplot-plot-command, calc-gnuplot-print-command): Move here - from other files and make customizable. + * net/ange-ftp.el (ange-ftp-hook-function): Catch also errors in + process-filter. -2005-04-01 Stefan Monnier +2007-08-06 Kenichi Handa - * pcvs.el (cvs-temp-buffer, cvs-mode-kill-process, cvs-buffer-check): - Use buffer-live-p. - (cvs-mode-run): Don't call cvs-update-header here. - (cvs-run-process): Call cvs-update-header. - Use process properties for cvs-postprocess and cvs-buffer so that - the sentinel can behave better if the temp buffer is killed. - Use a pipe rather than a tty, to better handle unexpected prompts. - (cvs-sentinel): Rewrite. Call cvs-update-header. + * international/quail.el: Wrap (require 'help-mode) by + eval-when-compile. + (quail-help-init): New function. + (quail-help): Call quail-help-init. + (quail-store-decode-map-key): Change it to a function. -2005-04-01 Andre Spiegel +2007-08-05 Jason Rumney - * vc-hooks.el (vc-workfile-unchanged-p): Disable mtime check when - we go via Tramp or Ange-FTP. Suggested by Kai Grossjohann. + * vc.el (vc-rollback): Add norevert argument back. + (vc-revert-buffer): Add back as obsolete alias. -2005-03-31 Stefan Monnier +2007-08-05 Peter Povinec (tiny change) - * generic.el (define-generic-mode): Add indentation rule. + * term.el: Honor term-default-fg-color and term-default-bg-color + settings when modifying term-current-face. + (term-default-fg-color, term-default-bg-color): Initialize from + default term-current-face. + (term-mode, term-reset-terminal): Set term-current-face with + term-default-fg-color and term-default-bg-color. + (term-handle-colors-array): term-current-face has term-default-fg-color + and term-default-bg-color after reset escape sequence. + (term-handle-colors-array): Set term-current-color with + term-default-fg/bg-color instead of ansi-term-color-vector when the + index (term-ansi-current-color or term-ansi-current-bg-color) is zero. -2005-03-31 Luc Teirlinck +2007-08-05 Jay Belanger - * files.el (mode-require-final-newline): Make Custom correctly - report a nil value and allow to set it to nil via Custom. - Doc fix. + * calc/calc-nlfit.el (math-nlfit-curve): Remove unnecessary variables. + (math-nlfit-givens): Let bind free variables. -2005-04-01 Kenichi Handa +2007-08-05 Vinicius Jose Latorre - * international/characters.el: Enable the correct case setting for - dotless-i and dotted-I. + * printing.el: Require lpr and ps-print when loading printing package. + Reported by Glenn Morris . -2005-04-01 Kim F. Storm +2007-08-05 Michael Albinus - * ido.el (ido-file-internal): Fall back to non-ido command if - initial directory is on slow ftp (or tramp) host. + * files.el (set-auto-mode): Handle also remote files wrt + `auto-mode-alist'. -2005-03-31 Richard M. Stallman +2007-08-04 Jay Belanger - * emacs-lisp/autoload.el (make-autoload): - Handle define-global-minor-mode. + * calc/calcalg3.el (calc-curve-fit): Add support for nonlinear + curves and plotting. - * emacs-lisp/easy-mmode.el (define-global-minor-mode): - Rename from easy-mmode-define-global-mode. - (easy-mmode-define-global-mode): Alias for define-global-minor-mode. + * calc/calc-nlfit.el: New file. - * progmodes/scheme.el (scheme-mode-syntax-table): - Update syntax of | and # for two-character comment syntax. +2007-08-04 Glenn Morris -2005-03-31 Lute Kamstra + * autorevert.el (auto-revert-tail-mode): auto-revert-tail-pos is + zero, not nil, when the library is first loaded. Check for a file + that has been modified on disk. - * emacs-lisp/easy-mmode.el (easy-mmode-define-global-mode) - (define-minor-mode): Call custom-current-group at load-time. + * progmodes/cperl-mode.el (cperl-compilation-error-regexp-alist): + Remove duplicate defvar preventing initialization. + (cperl-mode): Fix compilation-error-regexp-alist-alist setting. - * generic.el (define-generic-mode): Add debug declaration. - Add defcustom for the mode hook. - (generic-mode-internal): Use run-mode-hooks. +2007-08-03 Stefan Monnier -2005-03-31 Kim F. Storm + * diff-mode.el (diff-font-lock-keywords): Fix up false positives. + (diff-beginning-of-file): Adjust to the fact that diff-file-header-re + may match up to 4 lines. + (diff-beginning-of-file-and-junk): Rewrite. - * mouse.el (mouse-1-click-follows-link): Increase to 450 ms. - (mouse-fixup-help-message): New defun called by show_help_echo - to fixup mouse-2 prefix in help messages when applicable. +2007-08-03 Vinicius Jose Latorre - * tooltip.el (tooltip-show-help-function): Don't fixup message here. + * printing.el: Evaluate require only during compilation. + (pr-version): New version 6.9.1. + (deactivate-mark): Replace (defvar VAR nil) by (defvar VAR). + (pr-global-menubar): Fix code. -2005-03-31 Kenichi Handa +2007-08-03 Dan Nicolaescu - * language/thai-word.el (thai-find-word-ends): Pay attention to - the case that we reach the end of buffer. + * term.el (term-erase-in-display): Fix case when point is not at + the beginning of the line. - * textmodes/fill.el (fill-text-properties-at): New function. - (fill-newline): Use fill-text-properties-at instead of - text-properties-at. +2007-08-03 Jay Belanger -2005-03-31 Olive Lin (tiny change) + * calc/calc-ext.el (math-get-value, math-get-sdev) + (math-contains-sdev): New functions. - * textmodes/tex-mode.el (tex-start-tex): Use shell-quote-argument, - not comint-quote-filename. + * calc/calc-graph.el (calc-graph-format-data) + (calc-graph-add-curve): Check for error forms. + (calc-graph-set-styles): Add option for error forms. -2005-03-31 Thien-Thi Nguyen +2007-08-03 Miles Bader - * help-fns.el (help-with-tutorial): Revert last change. + * vc-hooks.el (vc-handled-backends): Change capitalization of VC + backend names for new backends to `Git', `Hg', and `Bzr'. + * vc-hg.el (vc-hg-dired-state-info): Use `Hg' as VC backend name, + not `HG'. + * vc-git.el (vc-git-dired-state-info): Use `Git' as VC backend + name, not `GIT'. + * vc-bzr.el (vc-bzr-dir-state, vc-bzr-dired-state-info) + (vc-bzr-unload-hook): Use `Bzr' as VC backend name, not `BZR'. -2005-03-31 Kim F. Storm +2007-08-03 Richard Stallman - * emulation/cua-base.el (cua-scroll-down): Add CUA property. + * mail/rmailsum.el (rmail-make-summary-line): Find end of msg number + to update deleted flag. -2005-03-30 Paul Eggert + * cus-edit.el (customize-apropos, customize-apropos-options) + (customize-apropos-faces, customize-apropos-groups): Improve prompt. - * calendar/cal-china.el: Update reference to "Calendrical - Calculations" book; there's a new edition. - * calendar/cal-coptic.el: Likewise. - * calendar/cal-french.el: Likewise. - * calendar/cal-hebrew.el: Likewise. - * calendar/cal-islam.el: Likewise. - * calendar/cal-iso.el: Likewise. - * calendar/cal-julian.el: Likewise. - * calendar/cal-mayan.el: Likewise. - * calendar/cal-persia.el: Likewise. - * calendar/calendar.el: Likewise. - * calendar/holidays.el: Likewise. - * calendar/lunar.el: Likewise. - * calendar/solar.el: Likewise. + * menu-bar.el (menu-bar-help-menu): Add "About GNU" menu item. - * calendar/calendar.el (calendar-day-abbrev-array): Remove trailing - white space from doc string. + * startup.el (fancy-splash-head, startup-echo-area-message): + Change message text. -2005-03-30 Jay Belanger + * emulation/tpu-edt.el (next-line-internal): Setting deleted. + All callers use line-move. - * calc/calc-help.el (calc-full-help): Remove email address. + * progmodes/compile.el (compilation-find-buffer): Return current + buffer immediately if suitable. + (compile, compilation-buffer-name, compilation-start): Doc fixes. -2005-03-30 Thien-Thi Nguyen +2007-08-03 Daiki Ueno - * help-fns.el (help-with-tutorial): Delete title line. + * faces.el (face-normalize-spec): New function. + (frame-set-background-mode): Normalize face-spec before calling + face-spec-match-p. -2005-03-30 Glenn Morris +2007-08-03 Stefan Monnier - * calendar/cal-x.el (calendar-one-frame-setup) - (calendar-only-one-frame-setup, calendar-two-frame-setup): Use t - rather than `symbol' for set-window-dedicated-p. + * server.el (server-window): Add switch-to-buffer-other-frame option. - * calendar/appt.el (appt-buffer-name): Make it a constant. - (appt-add): Doc fix. +2007-08-03 Glenn Morris - * filesets.el (filesets-menu-path, filesets-menu-before) - (filesets-menu-in-menu): Doc fix. Now valid in GNU Emacs. - (filesets-menu-cache-file): Use directory ~/.emacs.d. - (filesets-add-submenu): Delete and use add-submenu instead. + * cus-edit.el (customize-apropos): Make the error message indicate + what kind of thing the user was trying to customize. -2005-03-30 Carsten Dominik + * net/telnet.el (telnet-mode): Set comint-use-prompt-regexp to t. - * org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset) - (org-agenda-convert-date, org-agenda-goto-calendar): New commands. - (org-diary-default-entry): New function. - (org-get-entries-from-diary): Better parsing of diary entries. - (org-agenda-check-no-diary): New function. - ("diary-lib"): Advice to function `add-to-diary-list', to allow - linking to diary entries. - (org-agenda-execute-calendar-command): New function. - (org-agenda): Improve visible section in window. - Use `org-fit-agenda-window'. - (org-fit-agenda-window): New option. - (org-move-subtree-down): Better handling of empty lines - at end of subtree. - (org-cycle): Numeric prefix is interpreted now as show-subtree N - levels up. - (org-fontify-done-headline): New option. - (org-headline-done-face): New face. - (org-set-font-lock-defaults): Use `org-headline-done-face'. - (org-table-copy-down): Rename from `org-table-copy-from-above'. - When current field is non-empty, it is copied to next row. - (org-table-copy-from-above): Fix bug which made it - impossible to copy fields containing only a single non-white character. + * progmodes/fortran.el (fortran-font-lock-syntactic-keywords): + Fix off-by-one error in previous change. -2005-03-30 Kim F. Storm +2007-08-03 Drew Adams - * kmacro.el (kmacro-end-macro): Isearch may store this command - into the macro -- so ignore it when executing keyboard macro. + * emacs-lisp/pp.el (pp-eval-expression): Add progress message. + Make buffer writable. -2005-03-30 Nick Roberts +2007-08-01 Jay Belanger - * tooltip.el (tooltip-gud-display): Use gud-overlay-arrow-position. + * calc/calc-math.el (math-sqrt-raw, math-sin-raw-2) + (math-cos-raw-2, math-arctan-raw, math-ln-raw): + Use native Emacs functions, when appropriate. -2005-03-29 Kenichi Handa +2007-08-01 Dan Nicolaescu + Stefan Monnier - * language/thai.el ("Thai"): Set setup-function and exit-function - for Thai language environment. + * vc.el: Document new VC operation `extra-menu'. - * language/thai-util.el: Require thai-word. - (thai-word-mode-map): New variable. - (thai-word-mode): New minor mode. - (setup-thai-language-environment-internal): New function. - (exit-thai-language-environment-internal): New function. + * vc-hooks.el (vc-default-extra-menu): New function. - * language/thai-word.el (thai-word-table): Declare it by defvar, - use dolist to initialize it. - (thai-kill-word, thai-backward-kill-word, thai-transpose-words) - (thai-fill-find-break-point): New functions. + * menu-bar.el (menu-bar-vc-filter): New function. + (menu-bar-tools-menu): Use it as a filter. -2005-03-29 Richard M. Stallman +2007-08-01 Eric Hanchrow (tiny change) - * simple.el (idle-update-delay): Move definition up. - (set-mark): Doc fix. + * ibuf-ext.el (ibuffer-mark-old-buffers): Docstring fix. -2005-03-29 Chong Yidong +2007-08-01 Glenn Morris + + * progmodes/fortran.el: Remove leading `*' from all defcustom doc + strings. + (fortran-tab-mode-default): Remove needless autoload. + (fortran-tab-mode-string): Add help-echo and mouse properties, and + mark as risky. + (fortran-line-length): New buffer-local variable, safe if integer. + (fortran-if-start-re, fortran-end-prog-re1, fortran-end-prog-re): + Change from variables to constants. + (fortran-font-lock-syntactic-keywords): Delete as a variable, + replace with a new function definition. + (fortran-mode): Use fortran-line-length, and + fortran-font-lock-syntactic-keywords as a function. Add a + hack-local-variables-hook function. + (fortran-line-length, fortran-hack-local-variables): New functions. + (fortran-window-create, fortran-strip-sequence-nos): Doc fix. + Use fortran-line-length rather than 72. + (fortran-window-create-momentarily): Doc fix. + +2007-07-31 Drew Adams (tiny change) - * longlines.el: New file. + * cus-edit.el (custom-group-value-create, custom-goto-parent): + Fix parent groups link. - * simple.el (buffer-substring-filters): New variable. - (filter-buffer-substring): New function. - (kill-region, copy-region-as-kill): Use it. +2007-07-31 Paul Pogonyshev - * register.el (copy-to-register, append-to-register) - (prepend-to-register): Use filter-buffer-substring. + * progmodes/python.el (python-current-defun): Adjust to never fall + into infinite loop. -2005-03-30 Nick Roberts +2007-07-31 Stefan Monnier - * progmodes/gud.el (gdb): (Re)-initialize gud-filter-pending-text. - (gud-filter-pending-text): Move in front of gdb. - (gud-overlay-arrow-position): New variable. - (gud-sentinel, gud-display-line): Use it in place of - overlay-arrow-position. + * pcvs.el (cvs-vc-command-advice): Handle the new fileset case. -2005-03-29 Glenn Morris +2007-07-29 Kimit Yada (tiny change) - * progmodes/fortran.el (fortran-if-indent): Doc fix. - (fortran-font-lock-keywords-2): Add "where", "elsewhere". - (fortran-font-lock-keywords-4): New variable. - (fortran-blocks-re, fortran-end-block-re) - (fortran-start-block-re): New constants, for hideshow. - (hs-special-modes-alist): Add a Fortran entry. - (fortran-mode-map): Bind fortran-end-of-block, - fortran-beginning-of-block to \M-\C-n, \M-\C-p. - (fortran-mode): Doc fix. Add fortran-font-lock-keywords-4. - (fortran-looking-at-if-then, fortran-end-of-block) - (fortran-beginning-of-block): New functions, for hideshow. + * emacs-lisp/copyright.el (copyright-update-year, copyright-update) + (copyright-fix-years, copyright): Correctly handle the case where + copyright-limit is nil. - * progmodes/f90.el (f90-end-block-re, f90-start-block-re): - Doc fix. Tweak regexp. - (f90-beginning-of-block): Push mark first. +2007-07-28 Konstantin Novitsky (tiny change) -2005-03-29 Jay Belanger + * progmodes/python.el (run-python): Fix path separator under w32. - * calc/calc.el: Update copyright date. - (calc-version): Increase to 2.1. - (calc-version-date): Remove. +2007-07-30 Richard Stallman - * calc/calc-help.el: Update copyright date. - (calc-full-help): Remove reference to calc-version-date. - Update copyright date. + * emacs-lisp/lisp-mode.el (emacs-lisp-mode-syntax-table): + Treat non-break space as whitespace in Lisp. -2005-03-29 Stefan Monnier +2007-07-30 Stefan Monnier - * vc.el (vc-do-command): Use a pipe for async processes, so password - prompts don't show up at places where the user can't reply. + * vc.el (vc-dired-hook): Use inhibit-read-only. -2005-03-29 Olive Lin (tiny change) + * progmodes/compile.el (compilation-forget-errors): + Reset compilation-auto-jump-to-next. - * textmodes/tex-mode.el (tex-send-command): shell-quote-argument - on the file name we pass to the inferior shell. +2007-07-30 Michael Olson -2005-03-29 Stephan Stahl (tiny change) + * cus-edit.el (custom-group-save): Fix void function definition + error. Thanks to Zhang Wei for the report. - * progmodes/which-func.el (which-function): Be robust in the face of an - imenu--make-index-alist failure. + * ps-print.el: Check in trivial changes to the autoloads section + caused by the build process. These autoloads really ought to be + placed in a separate file, methinks. -2005-03-29 Stefan Monnier +2007-07-29 Stefan Monnier - * reveal.el (reveal-mode-map): Don't override C-a and C-e. + * calendar/calendar.el (calendar-mode): Make sure + displayed-(month|year) are set. + (calendar-basic-setup): Display buffer before adjusting window sizes. + (generate-calendar-window): Use inhibit-read-only. Simplify. + Generate buffer and set displayed-month and displayed-year before + calling update-calendar-mode-line. - * progmodes/python.el (python-preoutput-filter): Fix last change. +2007-07-29 Michael Albinus -2005-03-29 Lute Kamstra + * net/tramp.el: + * net/tramp-uu.el: + * net/trampver.el: Use utf-8 encoding with coding cookie. - * emacs-lisp/debug.el (debug-on-entry): Handle autoloaded - functions and compiled macros. - (debug-convert-byte-code): Handle macros too. - (debug-on-entry-1): Don't signal an error when trying to clear a - function that is not set to debug on entry. + * net/tramp-cache.el: + * net/tramp-fish.el: + * net/tramp-ftp.el: + * net/tramp-gw.el: + * net/tramp-smb.el: Remove coding cookie. -2005-03-29 Jay Belanger + * net/tramp.el (tramp-handle-verify-visited-file-modtime): + Flush buffer file-name's file property. + (tramp-handle-file-remote-p): The first parameter is FILENAME. - * calc/calc-lang.el: Add functions to math-function-table - properties of tex and math. + * net/trampver.el: Update release number. -2005-03-29 Kenichi Handa +2007-07-29 Juri Linkov - * ps-mule.el (ps-mule-plot-string): Translate characters by - ps-print-translation-table. - (ps-mule-begin-job): Call find-charset-region/string with - ps-print-translation-table. - (ps-mule-printable-p): Return t if CHARSET is ascii or latin-iso8859-1. + * dired.el (dired-mode-map): Bind C-x C-q to dired-toggle-read-only. + Filter out menu item "Edit File Names" `wdired-change-to-wdired-mode' + when major-mode is not dired-mode. + (dired-toggle-read-only): New function. + (dired-recursive-deletes): Remove obsolete comments about old + default value. + (dired-do-flagged-delete, dired-do-delete): Refill docstring. - * ps-print.el (ps-print-translation-table): New variable. - (ps-plot-region): Translate characters by ps-print-translation-table. + * wdired.el (wdired-exit): New function. + (wdired-mode-map): Bind C-x C-q to wdired-exit. -2005-03-29 Juri Linkov +2007-07-28 Stefan Monnier - * simple.el (next-error-highlight-timer): New variable. + * cus-edit.el (customize-read-group): New fun. + (customize-group-other-window, customize-face-other-window): + Prompt before delegating to customize-(group|face). + Bind pop-up-windows rather than use the other-window argument. + (customize-group, customize-face): Prompt from the interactive spec. + Remove args `prompt-for-group' and `other-window'. - * progmodes/compile.el (compilation-goto-locus): - Use `next-error-highlight-timer' instead of `sit-for'. + * emacs-lisp/advice.el (ad-interactive-form): Re-introduce. + (ad-body-forms, ad-advised-interactive-form): Revert this part of + last change. -2005-03-28 Stefan Monnier +2007-07-28 Masatake YAMATO - * mail/supercite.el (sc-mail-field): Use assoc-string. - (sc-get-address): Simplify regexps. + * vc.el (vc-dired-mode): Add a menu for VC related operation. + Use backend name as the menu label. Suggested by David Kastrup. - * files.el (minibuffer-with-setup-hook): New macro. - (find-file-read-args): Use it to avoid let-binding - minibuffer-with-setup-hook (which breaks turning on/off - file-name-shadow-mode while in the prompt). +2007-07-28 Alan Mackenzie - * complete.el (PC-read-include-file-name-internal): - Use test-completion. + Fix problem with modes derived from CC Mode: + * progmodes/cc-mode.el (c-make-emacs-variables-local): Move this + macro to cc-langs. + (c-init-language-vars-for): Remove call to above macro. + * progmodes/cc-langs.el (c-make-emacs-variables-local): Macro has + been moved to here. + (c-make-init-lang-vars-fun): Call c-make-emacs-variables-local. -2005-03-28 Luc Teirlinck +2007-07-28 Eli Zaretskii - * font-lock.el: Bind `font-lock-fontify-block' to M-o M-o. + * net/trampver.el: Fix the `coding' cookie. -2005-03-28 Stefan Monnier +2007-07-28 Dan Nicolaescu - * window.el (window-buffer-height): Use count-screen-lines. + * vc-git.el (vc-git-print-log): Support both the old single file + interface and the new one. - * progmodes/python.el (python-preoutput-leftover): New var. - (python-preoutput-filter): Use it. - (python-send-receive): Loop until all the result has been received. +2007-07-28 Nick Roberts -2005-03-28 Juri Linkov + * bindings.el (mode-line-remote): Use updated %@ construct. - * dired.el (dired-mode-map): Add ellipsis to "Compare directories". +2007-07-27 Stefan Monnier - * menu-bar.el (menu-bar-file-menu): Remove ellipsis from - "Recover Crashed Session". - (menu-bar-search-menu): Add ellipsis to "Search tagged files". - (menu-bar-replace-menu): Add ellipsis to "Replace in tagged files". - (menu-bar-goto-menu): Add ellipsis to "Set Tags File Name". - (menu-bar-goto-menu): Add ellipsis to "Tags Apropos". - (menu-bar-options-menu): Add ellipsis to "Set Font/Fontset". - (menu-bar-manuals-menu): Add ellipsis to "Find Command in Manual". - (menu-bar-manuals-menu): Add ellipsis to "Find Key in Manual". - (menu-bar-help-menu): Remove ellipsis from "Find Emacs Packages". + * calendar/cal-bahai.el (calendar-bahai-month-name-array) + (calendar-bahai-epoch, calendar-bahai-leap-year-p) + (calendar-bahai-leap-base, calendar-bahai-prompt-for-date) + (diary-list-bahai-entries, diary-bahai-mark-entries) + (calendar-bahai-mark-date-pattern, diary-insert-bahai-entry) + (diary-bahai-insert-monthly-entry, diary-bahai-insert-yearly-entry): + New names to clean up namespace. + (list-bahai-diary-entries, mark-bahai-diary-entries) + (insert-bahai-diary-entry, insert-monthly-bahai-diary-entry) + (insert-yearly-bahai-diary-entry, mark-bahai-calendar-date-pattern): + Add compatibility aliases. - * ediff-hook.el (menu-bar-ediff-misc-menu, ediff-misc-menu): - Remove ellipsis from "Ediff Manual", "Customize Ediff", "List - Ediff Sessions", "Toggle use of separate control buffer frame", - "Use separate frame for Ediff control buffer". + * calendar/appt.el: Don't wrap defvar within eval-when-compile. - * bookmark.el (menu-bar-bookmark-map): Add ellipsis to "Jump to - Bookmark", "Set Bookmark", "Insert Contents", "Insert Location", - "Rename Bookmark", "Delete Bookmark". + * calendar/cal-move.el (calendar-scroll-left, calendar-scroll-right) + (calendar-scroll-left-three-months) + (calendar-scroll-right-three-months): Clean up namespace. + (scroll-calendar-left, scroll-calendar-right) + (scroll-calendar-left-three-months) + (scroll-calendar-right-three-months): Add compatibility aliases. - * info.el (Info-mode-menu): Remove ellipsis from "Index". - Add ellipsis to "Lookup a String", "Lookup a string in all indices". - Add `:active Info-index-alternatives' to "Next Matching Item". + * calendar/cal-move.el (calendar-scroll-left, calendar-scroll-right): + Behave like mouse-scroll-calendar-* when used from the mouse. - * wdired.el (wdired-change-to-wdired-mode): - Mention `wdired-abort-changes' key in the initial message. + * calendar/cal-menu.el (cal-menu-scroll-menu) + (cal-menu-global-mouse-menu): + * calendar/calendar.el (calendar-mode-map): + Use new calendar-scroll-* names. + (mouse-scroll-calendar-left, mouse-scroll-calendar-right): + Remove. Use calendar-scroll-* directly instead. + +2007-07-26 Stefan Monnier + + * emacs-lisp/advice.el (ad-interactive-p, ad-interactive-form): Remove. + (ad-body-forms, ad-advised-interactive-form, ad-make-cache-id) + (ad-make-advised-definition, ad-cache-id-verification-code): + Use commandp and interactive-form instead. + +2007-07-26 Dan Nicolaescu + + * vc-git.el: Relicense to GPLv3 or later. + (vc-directory-exclusion-list, vc-handled-backends): Remove. + + * vc-hooks.el (vc-handled-backends): Add GIT. + + * vc.el (vc-directory-exclusion-list): Add .git. + +2007-07-26 Alexandre Julliard + + * vc-git.el (vc-git-revision-table) + (vc-git-revision-completion-table): New functions. + +2007-07-26 Vinicius Jose Latorre + + * progmodes/ebnf-abn.el (ebnf-abn-skip-comment): + * progmodes/ebnf-bnf.el (ebnf-bnf-skip-comment): + * progmodes/ebnf-dtd.el (ebnf-dtd-skip-comment): + * progmodes/ebnf-ebx.el (ebnf-ebx-skip-comment): + * progmodes/ebnf-iso.el (ebnf-iso-skip-comment): + * progmodes/ebnf-yac.el (ebnf-yac-skip-comment): New version. + New command actions for EPS header and EPS footer. + + * progmodes/ebnf2ps.el: New command actions for EPS header and EPS + footer. Fix some problems with one-or-more, zero-or-more and + alternative constructions generation. Some log messages + implementation. Doc fix. + (ebnf-version): New version 4.4. + (ebnf-eps-header-font, ebnf-eps-header, ebnf-eps-footer-font) + (ebnf-eps-footer, ebnf-log): New options. + (ebnf-find-style, ebnf-eps-header-footer, ebnf-eps-header) + (ebnf-eps-footer, ebnf-eps-string, ebnf-eps-header-footer-comment) + (ebnf-eps-header-footer-p, ebnf-eps-header-comment) + (ebnf-eps-footer-comment, ebnf-eps-header-footer-file) + (ebnf-eps-header-footer-set, ebnf-log-header, ebnf-log): New funs. + (ebnf-style-custom-list, ebnf-style-database): Put new values. + (ebnf-print-directory, ebnf-print-file, ebnf-print-buffer) + (ebnf-print-region, ebnf-spool-directory, ebnf-spool-file) + (ebnf-spool-buffer, ebnf-spool-region, ebnf-eps-directory) + (ebnf-eps-file, ebnf-eps-buffer, ebnf-eps-region) + (ebnf-syntax-directory, ebnf-syntax-file, ebnf-syntax-buffer) + (ebnf-syntax-region, ebnf-parse-and-sort, ebnf-begin-job) + (ebnf-dimensions, ebnf-production-dimension, ebnf-terminal-dimension) + (ebnf-non-terminal-dimension, ebnf-special-dimension) + (ebnf-terminal-dimension1, ebnf-repeat-dimension) + (ebnf-except-dimension, ebnf-alternative-dimension) + (ebnf-optional-dimension, ebnf-one-or-more-dimension) + (ebnf-zero-or-more-dimension, ebnf-sequence-dimension): Insert log + message fun. + (ebnf-setup, ebnf-generate-one-or-more, ebnf-generate-zero-or-more) + (ebnf-begin-job, ebnf-begin-file, ebnf-eps-finish-and-write) + (ebnf-insert-ebnf-prologue, ebnf-production-dimension) + (ebnf-terminal-dimension1, ebnf-alternative-dimension) + (ebnf-one-or-more-dimension, ebnf-zero-or-more-dimension) + (ebnf-eps-add-context, ebnf-eps-add-production): Fix code. + (ebnf-eps-filename, ebnf-trim-right): Replace `?\s' by `?\ ' to keep + compatibility with Emacs 20 & 21. + (ebnf-eps-header-comment, ebnf-eps-footer-comment) + (ebnf-eps-file-alist, ebnf-basic-width-extra) + (ebnf-basic-empty-height): New vars. + (ebnf-prologue): Fix PostScript code. + (ebnf-make-empty, ebnf-make-terminal1, ebnf-make-or-more1) + (ebnf-make-production, ebnf-make-alternative, ebnf-make-optional) + (ebnf-make-except, ebnf-make-repeat, ebnf-make-sequence) + (ebnf-make-dup-sequence, ebnf-token-alternative): Add comments. - * international/mule.el (auto-coding-alist): Associate non-ascii - image filename extensions with `no-conversion'. +2007-07-25 Glenn Morris -2005-03-27 Stefan Monnier + * Relicense all FSF files to GPLv3 or later. - * international/iso-acc.el: - * obsolete/iso-acc.el: Move iso-acc to the obsolete subdir. + * COPYING: Switch to GPLv3. -2005-03-26 Luc Teirlinck +2007-07-25 Stefan Monnier - * textmodes/sgml-mode.el (html-mode): Doc update. + * pcvs.el (cvs-temp-buffer): Undo last ill-conceived change. + Replace it with another one which disables undo before calling + erase-buffer and then turns it back on if needed. - * autorevert.el (auto-revert-check-vc-info): Minor doc fix. +2007-07-24 Vinicius Jose Latorre -2005-03-26 Dan Nicolaescu + * ps-print.el: Problem with foreground and background color when + printing a buffer with and without faces. Reported by Christian + Schlauer . + (ps-print-version): New version 6.7.5. + (ps-default-fg): Change default value to nil, so black color is used + when a face does not specify a foreground color. + (ps-default-bg): Change default value to nil, so white color is used + for background color. + (ps-begin-job): Fix code. - * term.el (term-move-columns): Fix face after extending a line. - (term-insert-spaces): Likewise. - (term-reset-terminal): Fix off by one error. +2007-07-24 Dan Nicolaescu -2005-03-26 Eli Zaretskii + * vc-hg.el (vc-hg-revision-completion-table): Temporarily comment out. - * international/mule.el (auto-coding-alist): Add .xpi files. +2007-07-24 Glenn Morris - * files.el (auto-mode-alist): Add .xpi files. + * calendar/cal-tex.el (cal-tex-holidays, cal-tex-diary) + (cal-tex-rules, cal-tex-buffer, cal-tex-24) + (cal-tex-cursor-month-landscape, cal-tex-cursor-month) + (cal-tex-cursor-week, cal-tex-cursor-week2) + (cal-tex-cursor-week-iso, cal-tex-week-hours) + (cal-tex-cursor-week-monday, cal-tex-weekly4-box) + (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week) + (cal-tex-cursor-filofax-daily, cal-tex-daily-page): Doc fix. -2005-03-26 Jure Cuhalev (tiny change) +2007-07-25 Stefan Monnier - * textmodes/ispell.el (ispell-dictionary-alist-6): Add slovenian. + * calendar/calendar.el (calendar-mode-map): Move initialization + into declaration. Add menu bindings (used to be done in cal-menu). + (calendar-mode): Don't add an activate-menubar-hook. + + * calendar/cal-menu.el: Break dependency on calendar.el (i.e. do not + modify calendar-mode-map), use easy-menu, and make sure that C-h k + can be used on the menu entries. + (cal-menu-holiday-window-suffix, cal-menu-set-date-title): New funs. + (cal-menu-moon-menu, cal-menu-diary-menu, cal-menu-holidays-menu) + (cal-menu-goto-menu, cal-menu-scroll-menu): New consts. + (cal-menu-context-mouse-menu, cal-menu-global-mouse-menu): New menus. + (calendar-flatten, cal-menu-update): Remove. + (calendar-mouse-insert-hebrew-diary-entry) + (calendar-mouse-insert-islamic-diary-entry) + (calendar-mouse-insert-bahai-diary-entry): + Remove (fold into cal-menu-diary-menu). + (calendar-mouse-2-date-menu, calendar-mouse-cal-tex-menu) + (cal-tex-mouse-filofax): Remove (fold into cal-menu-context-mouse-menu). + (calendar-mouse-3-map): Remove (turn into cal-menu-global-mouse-menu). + (calendar-mouse-view-diary-entries): Minor simplifications. + (calendar-event-to-date): Use with-current-buffer. -2005-03-26 Eli Zaretskii +2007-07-25 Nick Roberts - * term/bobcat.el: Don't use keyswap.el, since it is now obsolete. + * add-log.el (change-log-redate): Remove (not needed anymore and + doesn't appear to work). -2005-03-26 Glenn Morris +2007-07-25 Stefan Monnier - * calendar/cal-menu.el (top level): Delete local C-down-mouse-3 - binding. Suggested by Stephan Stahl . + * frame.el: Use mapc and dolist instead of mapcar where possible. + (close-display-connection): New command. - * calendar/cal-move.el (calendar-beginning-of-year): Move the - cursor to Jan 1 when needed. - (calendar-end-of-year): Fix -/+ typo. - Reported by Chong Yidong . +2007-07-25 Alexandre Julliard -2005-03-26 Stefan Monnier + * vc-git.el (vc-git-log-view-mode): Port to the multi-file vc interface. + (vc-git-create-snapshot, vc-git-retrieve-snapshot): New functions. - * progmodes/flymake.el (flymake-mode): Add autoload cookie. +2007-07-25 Vinicius Jose Latorre - * emacs-lisp/debug.el (debugger-record-expression): Add a missing - format to `message'. Inspired by Deepak Goel . + * ps-print.el (ps-multibyte-buffer): Docstring fix. -2005-03-25 Richard M. Stallman + * ps-mule.el: Doc fix. + (ps-multibyte-buffer, ps-mule-font-info-database-default) + (ps-mule-external-libraries, ps-mule-begin-job): Docstring fix. - * filesets.el (filesets-init): Add autoload. +2007-07-25 Glenn Morris - * mail/mailalias.el (mail-directory): Doc fix. + * calendar/cal-tex.el (cal-tex-which-days, cal-tex-holidays) + (cal-tex-diary, cal-tex-daily-string, cal-tex-daily-start) + (cal-tex-daily-end, cal-tex-hook) + (cal-tex-cal-one-month, cal-tex-cal-multi-month) + (cal-tex-year, cal-tex-cursor-week, cal-tex-cursor-week2) + (cal-tex-cursor-week-iso, cal-tex-week-hours) + (cal-tex-cursor-week-monday, cal-tex-weekly4-box) + (cal-tex-cursor-day, cal-tex-insert-preamble): Doc fix. + (cal-tex-day-prefix, cal-tex-day-name-format) + (cal-tex-cal-one-month, cal-tex-cal-multi-month, cal-tex-myday) + (cal-tex-caldate, cal-tex-LaTeX-hourbox) + (cal-tex-LaTeX-subst-list): Change from variables to constants. + (cal-tex-preamble, cal-tex-arg, cal-tex-nl): Simplify with `format'. + (cal-tex-cursor-filofax-year, cal-tex-weekly4-box): Use \textbf, + etc, rather than \bf. + (cal-tex-mini-calendar): Fix typos in previous change. + (cal-tex-latexify-list): Remove inner let binding. + (cal-tex-end-document, cal-tex-banner): Use multi-line + cal-tex-comment. + (cal-tex-comment): Handle embedded newlines. + (cal-tex-LaTeXify-string): Use substring-no-properties. + +2007-07-25 Joakim Verona (tiny change) -2005-03-25 Frederik Fouvry + * progmodes/compile.el (compilation-error-regexp-alist-alist): + Add support for the Maden build tool. - * mail/mailalias.el (mail-directory-process): Do nothing if - mail-directory-process is an atom. - (mail-get-names): Ignore mail-directory-names if it is an atom. - (mail-directory-process defvar): Doc fix. - (mail-names): Doc fix. +2007-07-25 William Xu (tiny change) -2005-03-25 Johan Bockg,Ae(Brd (tiny change) + * net/webjump.el (webjump-url-encode): Fix for non-ASCII characters. - * textmodes/flyspell.el (mail-mode-flyspell-verify): Fix regexp syntax. +2007-07-24 Stefan Monnier -2005-03-26 Kenichi Handa + * pcvs.el (cvs-temp-buffer): Disable undo in temp buffers. - * international/mule-util.el (detect-coding-with-priority): - Call update-coding-systems-internal before detect-coding-region. +2007-07-24 Dan Nicolaescu -2005-03-26 Nick Roberts + * dired.el (dired-mode-map): Bind wdired-change-to-wdired-mode to + C-x C-q. - * progmodes/gdb-ui.el (gdb-breakpoints-mode-map) - (gdb-frames-mode-map): Add follow-link property. + * vc-git.el (vc-git-print-log): Fix previous change. -2005-03-25 Jay Belanger +2007-07-24 Stefan Monnier - * calc/calcalg2.el (calc-solve-for): Use "Variable(s)" to prompt - for variables. + * window.el (save-selected-window): Minor optimization. + (bw-adjust-window): If operation failed, try with a smaller delta. + (window-fixed-size-p): New function. + (window-area-factor): New var. + (balance-windows-area): New command. -2005-03-25 Juri Linkov + * ps-mule.el (ps-multibyte-buffer): Docstring fixes. + (ps-mule-encode-ethiopic): Make it clear that it's always defined. + (ps-mule-prepare-font-for-components, ps-mule-encode-header-string) + (ps-mule-encode-bit, ps-mule-encode-ucs2): Use dotimes. + (ps-mule-begin-job): Use dolist. - * image-mode.el: Optimize image filename extension regexps in - autoload cookies. Associate .x[bp]m with `image-mode-maybe' - in `auto-mode-alist'. - (image-mode): Add `image-toggle-display-text' to local hook - `change-major-mode-hook'. Display the image as an image by - default. Set `cursor-type' and `truncate-lines' if the image - is already displayed. Take into account the current mode (image - or text) in message. - (image-minor-mode): New minor mode. - (image-mode-maybe, image-toggle-display-text): New functions. - (image-toggle-display): Use called-interactively-p. - Let-bind `inhibit-read-only' to t. +2007-07-24 Michael Albinus - * image-mode.el (image-minor-mode): Set `cursor-type' and - `truncate-lines' if the image is already displayed. Add turning - image-minor-mode off to `change-major-mode-hook'. Add message. - Call `image-toggle-display-text' after turning image-minor-mode off. + * subr.el (start-file-process-shell-command) + (process-file-shell-command): New defuns. -2005-03-25 Stefan Monnier + * progmodes/compile.el (compilation-start): + Apply `start-file-process-shell-command'. - * international/mule-cmds.el (set-locale-environment): For Mac OS X's - Terminal.app, use utf-8. - (set-display-table-and-terminal-coding-system): Add coding-system arg. - (set-locale-environment): Use it. +2007-07-24 Alexandre Julliard - * term/xterm.el: Undo last change, better done in mule-cmds.el. + * vc-git.el (vc-git-checkout, vc-directory-exclusion-list): Fix typos. - * emacs-lisp/rx.el (rx-constituents): Add symbol-start and symbol-end. +2007-07-24 Alan Mackenzie - * progmodes/python.el (python-close-block-statement-p) - (python-outdent-p, python-current-defun): Use symbol-end. + * emacs-lisp/bytecomp.el (byte-compile-from-buffer): + Initialise byte-compile-unresolved-functions before rather than + after a compilation. + (byte-compile-unresolved-functions): Amplify doc string. -2005-03-25 Karl Chen +2007-07-24 Glenn Morris - * files.el (save-some-buffers): Doc fix. + * startup.el (normal-splash-screen): Use `emacs-copyright'. -2005-03-25 Werner Lemberg + * calendar/cal-tex.el (cal-tex-holidays, cal-tex-diary) + (cal-tex-rules, cal-tex-buffer, cal-tex-24) + (cal-tex-cursor-month-landscape, cal-tex-cursor-month) + (cal-tex-cursor-week, cal-tex-cursor-week2) + (cal-tex-cursor-week-iso, cal-tex-week-hours) + (cal-tex-cursor-week-monday, cal-tex-weekly4-box) + (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week) + (cal-tex-cursor-filofax-daily, cal-tex-daily-page): Doc fix. - * complete.el, thumbs.el: Replace `legal' with `valid'. - * calendar/calendar.el: Replace `legal' with `valid'. - * emacs-lisp/advice.el: Replace `legal' with `valid'. - * mail/supercite.el: Replace `legal' with `valid'. - * progmodes/cperl-mode.el, progmodes/idlw-shell.el - * progmodes/idlwave.el, progmodes/vhdl-mode.el: - Replace `legal' with `valid'. - * textmodes/reftex-vars.el, textmodes/reftex.el: - Replace `legal' with `valid'. + * calendar/cal-tex.el: Remove leading `*' from defcustom docs. + (cal-tex-daily-string, cal-tex-daily-start, cal-tex-daily-end) + (cal-tex-day-name-format, cal-tex-cal-one-month) + (cal-tex-cal-multi-month, cal-tex-myday, cal-tex-preamble) + (cal-tex-comment, cal-tex-nl, cal-tex-cmd, cal-tex-e-parbox) + (cal-tex-mini-calendar, cal-tex-em): Doc fix. + (cal-tex-list-holidays, cal-tex-cursor-year) + (cal-tex-cursor-year-landscape, cal-tex-year) + (cal-tex-cursor-filofax-year, cal-tex-cursor-month-landscape) + (cal-tex-cursor-month, cal-tex-insert-days) + (cal-tex-insert-day-names, cal-tex-insert-blank-days) + (cal-tex-first-blank-p, cal-tex-cursor-week) + (cal-tex-cursor-week2, cal-tex-cursor-week-iso) + (cal-tex-week-hours, cal-tex-cursor-week-monday) + (cal-tex-weekly4-box, cal-tex-cursor-filofax-2week) + (cal-tex-cursor-filofax-week, cal-tex-cursor-filofax-daily) + (cal-tex-cursor-day, cal-tex-daily-page, cal-tex-mini-calendar) + (cal-tex-latexify-list, cal-tex-previous-month) + (cal-tex-next-month, cal-tex-insert-preamble): General tidy-up and + modernization, including using dotimes rather than + calendar-for-loop. + (cal-tex-LaTeX-subst-list): Remove `@'. + (cal-tex-em, cal-tex-bf, cal-tex-Huge-bf, cal-tex-large-bf): + Use \textit and \textbf rather than \em and \it. + + * calendar/cal-bahai.el (list-bahai-diary-entries) + * calendar/cal-hebrew.el (list-hebrew-diary-entries) + * calendar/cal-islam.el (list-islamic-diary-entries) + * calendar/calendar.el (generate-calendar, generate-calendar-month) + * calendar/diary-lib.el (diary-list-entries) + (mark-calendar-date-pattern): Use `dotimes' rather than + `calendar-for-loop'. + + * calendar/calendar.el (calendar-for-loop): Doc fix. -2005-03-25 Werner Lemberg +2007-07-23 Stefan Monnier - * calc/calc-forms.el, calc/calc-sel.el - * midnight.el, vc-cvs.el - * emacs-lisp/cl-macs.el - * emulation/vip.el - * eshell/esh-io.el, eshell/esh-var.el - * mail/supercite.el - * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el - * progmodes/ebnf-ebx.el, progmodes/ebnf-dtd.el, progmodes/ebnf-iso.el - * progmodes/ebnf-yac.el, progmodes/ebnf2ps.el, progmodes/idlwave.el - * progmodes/sh-script.el, progmodes/xscheme.el - * textmodes/refbib.el, textmodes/refer.el, textmodes/reftex-cite.el - * textmodes/reftex-index.el, textmodes/reftex-parse.el - * textmodes/reftex-ref.el, textmodes/reftex-vars.el - * textmodes/reftex.el, textmodes/org.el: - Replace `illegal' with `invalid'. + * ses.el (ses-cleanup): Prevent Emacs from spuriously checking if the + underlying file is uptodate. -2005-03-24 Stefan Monnier +2007-07-23 Christopher J. Madsen - * progmodes/flymake.el (flymake-get-file-name-mode-and-masks) - (flymake-find-buildfile, flymake-find-possible-master-files) - (flymake-check-include, flymake-parse-line): Replace loops over the - length of lists, by loops over lists, to remove silly O(n,A2(B) behavior. + * replace.el (perform-replace): Use isearch-no-upper-case-p. - * progmodes/flymake.el (flymake-ensure-ends-with-slash): Remove. - Substitute file-name-as-directory in the rest of the file. - (flymake-get-common-file-prefix): Rewrite, using compare-strings. - (flymake-replace-region): Remove unused arg `buffer'. - (flymake-check-patch-master-file-buffer): Update calls to it. - (flymake-add-err-info): Remove unused var `count'. - (flymake-mode): Use define-minor-mode. +2007-07-23 Stefan Monnier - * progmodes/flymake.el: Use with-current-buffer. - (flymake-float-time, flymake-get-temp-dir, flymake-line-end-position) - flymake-replace-regexp-in-string, flymake-line-beginning-position) - (flymake-popup-menu, flymake-current-row, flymake-selected-frame): - Avoid testing for `xemacs'. - (flymake-nop): Move. - (flymake-region-has-flymake-overlays): Return the computed value. - (flymake-reformat-err-line-patterns-from-compile-el): Use dolist. - Remove unused var `endline'. - (flymake-get-line-count): Remove unused function. - (flymake-display-err-menu-for-current-line): Unused var move-mouse-pos. - - * emulation/vi.el: - * generic.el: - * hilit-chg.el (global-highlight-changes): - * hi-lock.el (hi-lock-mode): - * follow.el: find-file-hooks -> find-file-hook. - - * comint.el (comint-insert-input): Obey mouse-yank-at-point. - -2005-03-24 Juri Linkov - - * dired.el (dired-mode-map): Add menu item "Compare directories" - for dired-compare-directories. - - * dired-aux.el (dired-compare-directories): Add autoload cookie. - Doc fix. Replace `read-file-name' with `read-directory-name'. - -2005-03-24 Stefan Monnier - - * term/xterm.el: If running in Terminal.app set coding-system to utf-8. + * vc-hooks.el (vc-mode-line-map): New const. + (vc-mode-line): Use it. -2005-03-24 Jay Belanger +2007-07-23 Alexandre Julliard - * calc/calc-embed.el (calc-embedded-mode-change): Save all - relevant mode settings in calc-embedded-original-modes when modes - are permanently changed. + * vc-git.el (vc-git-delete-file, vc-git-rename-file) + (vc-git-unregister): New functions. + (vc-git-find-version): Use the result of ls-files as a parameter + for cat-file. -2005-03-24 Stefan Monnier +2007-07-23 Michael Albinus - * autoinsert.el: find-file-hooks -> find-file-hook. + * net/tramp.el (tramp-perl-file-attributes) + (tramp-perl-directory-files-and-attributes) + (tramp-handle-file-attributes-with-stat) + (tramp-handle-directory-files-and-attributes-with-stat) + (tramp-convert-file-attributes): Handle huge file sizes. -2005-03-24 Lute Kamstra +2007-07-23 Juri Linkov - * generic.el (generic-font-lock-defaults): Make it obsolete. - (generic-font-lock-keywords): New variable to replace - generic-font-lock-defaults. - (generic-mode-set-font-lock): Delete it. - (generic-mode-internal): Don't call generic-mode-set-font-lock. - (generic-bracket-support): Add docstring. + * isearch.el (isearch-message-function): New variable. + (isearch-update, isearch-search): Use it. - * generic-x.el: Rename generic-font-lock-defaults to - generic-font-lock-keywords throughout. - (mailagent-rules-setup-function): Delete it. - (mailagent-rules-generic-mode): Use anonymous function instead. - (show-tabs-generic-mode-font-lock-defaults-1) - (show-tabs-generic-mode-font-lock-defaults-2): Make them constants. - Quote faces. - (show-tabs-tab-face, show-tabs-space-face): Specify background, - not foreground. + * simple.el (goto-history-element): New function created from + next-history-element. + (next-history-element): Most code moved to goto-history-element. + Call goto-history-element with (- minibuffer-history-position n). + (previous-history-element): Call goto-history-element with (+ + minibuffer-history-position n). + (minibuffer-setup-hook): Add minibuffer-history-isearch-setup. + (minibuffer-history-isearch-message-overlay): New buffer-local variable. + (minibuffer-history-isearch-setup, minibuffer-history-isearch-end) + (minibuffer-history-isearch-search, minibuffer-history-isearch-message) + (minibuffer-history-isearch-wrap, minibuffer-history-isearch-push-state) + (minibuffer-history-isearch-pop-state): New functions. - * emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression): - Recognize define-generic-mode. +2007-07-23 Thien-Thi Nguyen -2005-03-23 Stefan Monnier + * vc-hooks.el (vc-stay-local-p): Fix bug: Avoid remove-if-not. + Also, if FILE is a list, return non-nil if any of its elements + should stay local. Update docstring. - * icomplete.el (icomplete-simple-completing-p): Don't turn on icomplete - if there's no completion table. +2007-07-23 Stefan Monnier -2005-03-23 Miles Bader + * emacs-lisp/copyright.el (copyright-update-year): Fix 2007-05-25 + change by reverting a small part. - * progmodes/gdb-ui.el (breakpoint-enabled, breakpoint-disabled): - Remove tty-specific variants, as they're no longer needed. +2007-07-23 Richard Stallman -2005-03-23 Lute Kamstra + * progmodes/octave-inf.el (inferior-octave-prompt): Accept .exe. - * generic-x.el: Code cleanup: make args constant whenever possible. - (installshield-statement-keyword-list) - (installshield-system-functions-list) - (installshield-system-variables-list, installshield-types-list) - (installshield-funarg-constants-list): Make them constants. +2007-07-23 Dan Nicolaescu - * generic.el (generic-make-keywords-list): Add autoload cookie. + * vc-git.el (vc-git-checkin): Delete unused parameter and the code + handling it. Use vc-git-command. + (vc-git-find-version, vc-git-diff-tree): New functions. + (vc-git-revert): Use vc-git-command. + (vc-git--run-command): Delete. - * calendar/time-date.el: Add comment on time value formats. - Don't require parse-time. - (with-decoded-time-value): New macro. - (encode-time-value): New function. - (time-to-seconds, time-less-p, time-subtract, time-add): Use them. - (days-to-time): Return a valid time value when arg is huge. - (time-since): Use time-subtract. - (time-to-number-of-days): Use time-to-seconds. +2007-07-23 Alexandre Julliard -2005-03-23 David Ponce + * vc-git.el (vc-git-workfile-unchanged-p): Update comment. - * recentf.el (recentf-keep): New option. - (recentf-menu-action): Default to `find-file'. - (recentf-keep-non-readable-files-flag) - (recentf-keep-non-readable-files-p) - (recentf-file-readable-p, recentf-find-file) - (recentf-cleanup-remote): Remove. - (recentf-include-p): More robust. - (recentf-keep-p): New function. - (recentf-remove-if-non-kept): Rename from - `recentf-remove-if-non-readable'. Use `recentf-keep-p'. - All callers updated. - (recentf-menu-items-for-commands): Fix help string. - (recentf-track-closed-file): Update. Doc fix. - (recentf-cleanup): Update. Count removed files. Doc fix. +2007-07-20 Kenichi Handa -2005-03-23 Kim F. Storm + * international/utf-8.el (utf-8-post-read-conversion): + Temporarily bind utf-8-compose-scripts to nil while running + *-compose-region functions. - * progmodes/gdb-ui.el (breakpoint-enabled, breakpoint-disabled): - Don't inherit from fringe face (now happens automatically). +2007-07-23 Dan Nicolaescu -2005-03-22 Kim F. Storm + * vc-git.el: Update status. + (vc-directory-exclusion-list): Use eval-after-load. - * tooltip.el (tooltip-show-help-function): Ignore negative mouse - position values. +2007-07-22 Nick Roberts -2005-03-22 Stefan Monnier + * bindings.el (mode-line-remote): New variable. + (help-echo): Add to default values of mode-line-format. - * menu-bar.el (showhide-date-time): Remove. - (menu-bar-showhide-menu): Use menu-bar-make-mm-toggle. - (menu-bar-make-mm-toggle): Simplify. + * files.el: Mark mode-line-remote as risky. -2005-03-22 JUAN-LEON Lahoz Garcia +2007-07-22 Juri Linkov - * progmodes/perl-mode.el (perl-font-lock-keywords-2): - Accept qualified variable and function names. + * isearch.el (isearch-edit-string): Save old point and + isearch-other-end to old-point and old-other-end before reading + the search string from minibuffer. After exiting minibuffer set + point to old-other-end if point and the search direction is the + same as before reading the search string. + (isearch-del-char): Don't set isearch-yank-flag to t. Put point + to isearch-other-end. Instead of isearch-search-and-update call + three functions isearch-search, isearch-push-state and isearch-update. -2005-03-22 Thien-Thi Nguyen +2007-07-22 Dan Nicolaescu - * bindings.el (completion-ignored-extensions): - Remove ".lis" for `vax-vms'. + * vc-git.el (vc-git-register, vc-git-checkin): Use vc-git-command, + deal with multiple file arguments. + (vc-git-print-log): Deal with multiple file arguments. -2005-03-22 Andreas Schwab +2007-07-22 Stefan Monnier - * generic-x.el: Revert last change. - * ldefs-boot.el: Update. + * diff-mode.el (diff-refine-ignore-spaces-hunk): Rename from + diff-refine-hunk. Adjust users. + (diff-unified-hunk-p, diff-splittable-p): New functions. + (diff-mode-menu): Use it to disable Split when it doesn't work. -2005-03-22 Jay Belanger +2007-07-22 Dan Nicolaescu - * calc/calc-embed.el (calc-embedded-original-modes): New variable. - (calc-embedded-save-original-modes) - (calc-embedded-restore-original-modes): New functions. - (calc-do-embedded): Save original modes when entering embedded mode - and restore when leaving embedded mode. - (calc-embedded-modes-change): Change the value of - calc-embedded-original-modes to reflect permanent changes. + * diff-mode.el (diff-mode-menu): New entries. -2005-03-22 Lute Kamstra +2007-07-22 Stefan Monnier - * generic-x.el: Require generic again. + * diff-mode.el (diff-unified->context): Use the new `apply' undo entry + if applicable, so as to save undo-log space. -2005-03-22 Miles Bader + * diff-mode.el (diff-find-file-name): Add arg `batch'. - * progmodes/gdb-ui.el (breakpoint-enabled, breakpoint-disabled): - Tweak details to look good on both ttys and bitmap displays, light - or dark background, etc. + * diff-mode.el (diff-beginning-of-file-and-junk): New function. + (diff-file-kill): Use it. + (diff-beginning-of-hunk): Add arg `try-harder' using it. + (diff-restrict-view, diff-find-source-location, diff-refine-hunk): + Use it so they find the hunk even when we're in the file header. -2005-03-21 Kim F. Storm +2007-07-22 Dan Nicolaescu - * tooltip.el (tooltip-show-help-function): Check car and cdr of - mouse position. + * vc-git.el (vc-git-revision-granularity, vc-git-root) + (vc-git-command, vc-git-dir-state, vc-git-dired-state-info) + (vc-git-create-repo): New functions. + (vc-git-registered): New autoloaded function definition. + (vc-git-registered): Use vc-git-root. + (vc-git-responsible-p): New defalias. + (vc-git-annotate-extract-revision-at-line): Uncomment. + (vc-git-print-log): Add the file name to the log. + (vc-git-log-view-mode): New derived mode. + (vc-git-diff, vc-git-annotate-command): Use vc-git-command. -2005-03-21 Stefan Monnier +2007-07-22 Michael Albinus - * icomplete.el: Don't forcibly turn on the mode upon load. - (icomplete-mode): Use define-minor-mode. - (icomplete-eoinput): Default to nil. - (icomplete-minibuffer-setup): Remove autoload. - (icomplete-tidy): Simplify. - (icomplete-exhibit): Use buffer-undo-list to determine if we're still - in the initial state or if the user has modified the field. - Fix handling of icomplete-max-delay-chars. - Remove code that handles the oddball case where - minibuffer-completion-table is an integer. - Wrap icomplete-completions in while-no-input in case building - completions takes more time than expected. - (icomplete-completions): Simplify. + * progmodes/grep.el (grep-compute-defaults): Keep default values. -2005-03-21 Richard M. Stallman +2007-07-22 Ralf Angeli - * jka-compr.el (jka-compr-really-do-compress): - Make variable buffer-local. + * textmodes/reftex.el (reftex-access-parse-file): Create parse + file in a way that does not interfere with recentf mode. + (reftex-access-parse-file): Do not risk destroying an existing + buffer. - * image-mode.el: Handle .xpm files too. - (image-toggle-display): Preserve modification flag. +2007-07-22 Alexandre Julliard - * help.el (where-is): Don't mention aliases with no key bindings. + * vc-git.el: New file. -2005-03-21 Lute Kamstra +2007-07-22 Stefan Monnier - * generic.el: Fix commentary section. Don't require cl for - compilation. - (generic-mode-list): Add autoload cookie. - (generic-use-find-file-hook, generic-lines-to-scan) - (generic-find-file-regexp, generic-ignore-files-regexp) - (generic-mode, generic-mode-find-file-hook) - (generic-mode-ini-file-find-file-hook): Fix docstrings. - (define-generic-mode): Make it a defmacro. Fix docstring. - (generic-mode-internal): Code cleanup. Add autoload cookie. - (generic-mode-set-comments): Code cleanup. - * generic-x.el: Don't prevent compilation. Don't require generic. - Follow coding conventions. Minor code cleanup. - (etc-fstab-generic-mode): Add some keywords. - * font-lock.el (lisp-font-lock-keywords-1): Font lock a call to - define-generic-mode like a function declaration. + * textmodes/tex-mode.el (tex-font-script-display): Change default. -2005-03-21 Jay Belanger +2007-07-22 Dan Nicolaescu - * calc/calc-embed.el (calc-do-embedded): Put data on stack before - changing modes. + * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips + for branches and new files. -2005-03-21 Sam Steingold + * vc-hooks.el (vc-default-mode-line-string): Move mouse-face and + local-map handling ... + (vc-mode-line): ... here. Improve handling of help-echo. - * add-log.el (add-log-current-defun): Support more C DEFUN forms. + * vc.el (mode-line-string): Document help-echo usage. -2005-03-21 Thien-Thi Nguyen +2007-07-22 Michael Albinus - * progmodes/dcl-mode.el (dcl-font-lock-keywords): - Add underscore to "f$ lexicals" regexp. + Sync with Tramp 2.1.10. -2005-03-20 Juri Linkov + * net/tramp.el (tramp-get-ls-command): Fix typo. - * subr.el (progress-reporter-do-update): When `min-value' is equal - to `max-value', set `percentage' to 0 and prevent division by zero. + * net/trampver.el: Update release number. -2005-03-20 Michael Albinus +2007-07-22 Jan Dj,Ad(Brv - Sync with Tramp 2.0.48. + * startup.el (command-line-x-option-alist): Use x-handle-no-bitmap-icon. - * net/tramp.el (all): Change all addresses to .gnu.org. - (tramp-append-tramp-buffers): New defun. - (tramp-bug): Apply `tramp-append-tramp-buffers' as post-hook. - Catch `dont-send' signal. - (tramp-set-auto-save-file-modes): Set always permissions, because - there might be an old auto-saved file belonging to another - original file. This could be a security threat. Reported by - Kjetil Kjernsmo . - Check for Emacs 21.3.50 removed. + * term/x-win.el (x-handle-no-bitmap-icon): New function. - * net/tramp-smb.el (all): Remove debug construct for - `with-parsed-tramp-file-name'. - (tramp-smb-prompt): Prompt can contain spaces inside directory names. - (tramp-smb-handle-delete-directory, tramp-smb-handle-delete-file): - No error message if DIRECTORY or FILENAME doesn't exist. - (tramp-smb-open-connection): Check existence of - `tramp-smb-program'. +2007-07-22 Martin Rudalics -2005-03-20 Stefan Monnier + * add-log.el (change-log-fill-parenthesized-list): New function. + (change-log-indent): Call change-log-fill-parenthesized-list. + (change-log-fill-paragraph): Bind fill-indent-according-to-mode to t. + Have lines with leading asterisk start a paragraph. - * progmodes/perl-mode.el (perl-font-lock-syntactic-face-function): - Properly handle the case where the `m' or `s' command's argument is not - yet terminated. - (perl-indent-new-calculate): New function. - (perl-indent-line): Use it. +2007-07-21 Jay Belanger -2005-03-20 Miles Bader + * calc/calc-math.el (math-emacs-precision) + (math-largest-emacs-expt, math-smallest-emacs-expt): + New variables. + (math-use-emacs-fn): New function. + (math-exp-raw): Evaluate with `math-use-emacs-fn', when + appropriate. - * progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Use breakpoint faces - in text-mode too. Change to new face names. - (breakpoint-enabled): Rename from `breakpoint-enabled-bitmap-face'. - Add `:weight bold' attribute. - (breakpoint-disabled): Rename from `breakpoint-disabled-bitmap-face'. +2007-07-21 Thien-Thi Nguyen -2005-03-19 Juri Linkov + * image-dired.el (image-dired-sane-db-file): New func. + (image-dired-write-tags, image-dired-remove-tag) + (image-dired-list-tags, image-dired-write-comments) + (image-dired-get-comment, image-dired-mark-tagged-files) + (image-dired-create-gallery-lists): Call new func. + Reported by Dieter Wilhelm . - * files.el (auto-mode-alist): Add comment. Optimize jar/ear/war. +2007-07-21 Dan Nicolaescu - * international/mule.el (auto-coding-alist): Sync with - `auto-mode-alist' by adding upper case archive file extensions - and adding ear/war to jar extension. + * vc-hg.el (vc-hg-dir-state): Fix loop. + (vc-hg-print-log): Fix expected return value for vc-hg-command. + (vc-hg-next-version, vc-hg-delete-file, vc-hg-rename-file) + (vc-hg-register, vc-hg-create-repo, vc-hg-checkin) + (vc-hg-revert): Likewise. + (vc-hg-revision-table, vc-hg-revision-completion-table): New + functions. -2005-03-19 David Casperson (tiny change) +2007-07-20 Stefan Monnier - * textmodes/tex-mode.el (tex-view): If tex-shell process is not - running, restart it. + * add-log.el (change-log-resolve-conflict): Don't lose data if the + merge fails. -2005-03-19 Yoichi NAKAYAMA (tiny changes) +2007-07-20 Dan Nicolaescu - * finder.el (finder-current-item): Throw an error on an empty line. + * progmodes/compile.el (compilation-auto-jump-to-first-error): + Add group and version. - * man.el (Man-follow-manual-reference): If current-word returns - nil, use "". +2007-07-20 Stefan Monnier -2005-03-19 Matt Hodges + * add-log.el (add-log-file-name): Use file-relative-name. + (add-change-log-entry): Delay reading + add-log-(full-name|mailing-address) to after we've switched to the + ChangeLog buffer so we get the right value. + (add-change-log-entry, add-log-current-defun, change-log-merge): + Use derived-mode-p rather than checking major-mode directly. - * simple.el (goto-line): Doc fix. + * pcvs.el (cvs-mode-add-change-log-entry-other-window): Use a directory + name for buffer-file-name if it refers to a directory. -2005-03-19 Aaron S. Hawley + * vc-arch.el (vc-arch-diff): Fix last change. - * files.el (save-buffer): Doc fix. + * progmodes/compile.el (compilation-start): Remember the original + directory in a buffer-local compilation-directory. + (compile): Set the global value of compilation-directory. + (recompile): Use compilation-directory even in the compilation buffer. -2005-03-19 Michael R. Mauger +2007-07-20 Dan Nicolaescu - * recentf.el (recentf-cleanup-remote): New variable. - (recentf-cleanup): Use it to conditionally check availability of - remote files. + * vc-hg.el (vc-hg-diff): Use vc-hg-command. -2005-03-19 Joe Edmonds (tiny change) +2007-07-20 Vinicius Jose Latorre - * emacs-lisp/lisp-mode.el (lisp-mode-variables): Recognize `@' in - function names. + * ps-print.el: Problem with foreground and background color when + printing a buffer with and without faces. Reported by Christian + Schlauer . + (ps-print-version): New version 6.7.5. + (ps-default-fg): Change default value to nil, so black color is used + when a face does not specify a foreground color. + (ps-default-bg): Change default value to nil, so white color is used + for background color. + (ps-begin-job): Fix code. -2005-03-19 Eli Zaretskii +2007-07-20 Eli Zaretskii - * language/thai-word.el: New file. + * makefile.w32-in (install-lisp-SH): Don't create subdirectories + in $(INSTALL_DIR)/lisp/ if they already exist. -2005-03-19 JUAN-LEON Lahoz Garcia +2007-07-20 Dhruva Krishnamurthy (tiny change) - * files.el (backup-buffer): If the file's directory is not - writable, use copy instead of move to backup the file. + * makefile.w32-in (install-lisp-CMD): Don't create subdirectories + in $(INSTALL_DIR)/lisp/ if they already exist. -2005-03-19 Eli Zaretskii +2007-07-20 Stefan Monnier - * obsolete/keyswap.el: Moved to obsolete/ from term/. + * progmodes/vera-mode.el (vera-re-search-forward) + (vera-re-search-backward): Remove use of store-match-data. + (vera-mode-map): Move initialization into declaration. -2005-03-19 Vinicius Jose Latorre + * progmodes/flymake.el (flymake-buildfile-dirs): Remove. + (flymake-find-buildfile): Use locate-dominating-file. - * ps-print.el (ps-generate-string-list, ps-generate-header-line): - Use functionp instead of symbolp and fboundp. Reported by Drkm - . - (ps-print-version): New version 6.6.6. + * vc.el (vc-delistify): Use mapconcat. + (vc-do-command): Minor simplification. + (vc-expand-dirs): Use push. -2005-03-18 Tak Ota + * vc-mcvs.el (vc-mcvs-create-repo): + * vc-cvs.el (vc-cvs-create-repo): Remove. - * textmodes/table.el (table--line-column-position): New idiom. - (table--row-column-insertion-point-p): New function to test - validity of row and column insertion operation at a location. - (table-global-menu, table-cell-menu): Use above functions for - deterministic test operation. - (table--editable-cell-p): Behave in deterministic fashion. + * vc-hooks.el (vc-find-root): Fix case where `file' is the current + directory and the root as well. -2005-03-18 Juri Linkov +2007-07-20 Dan Nicolaescu - * isearch.el (isearch-lazy-highlight-new-loop): - Make arguments beg and end optional. - (isearch-update): Remove optional arguments nil from - isearch-lazy-highlight-new-loop. - (isearch-lazy-highlight-search): Let-bind case-fold-search to - isearch-lazy-highlight-case-fold-search instead of - isearch-case-fold-search, and let-bind isearch-regexp to - isearch-lazy-highlight-regexp. - Use isearch-lazy-highlight-last-string instead of isearch-string. + * vc-hooks.el (vc-default-workfile-unchanged-p): Pass a list + instead of a file. - * replace.el (perform-replace): Remove bindings of global - variables isearch-string, isearch-regexp, isearch-case-fold-search. - Add three new arguments to `replace-highlight'. - (replace-highlight): Add arguments string, regexp, case-fold. - Let-bind isearch-string, isearch-regexp, isearch-case-fold-search - to allow isearch-lazy-highlight-new-loop to use these values - to set corresponding isearch-lazy-highlight-* internal - variables whose values lazy highlighting will use regardless of - changes to global variables isearch-string, isearch-regexp, - isearch-case-fold-search during lazy highlighting loop. - (replace-dehighlight): Rename `isearch-lazy-highlight-cleanup' - to `lazy-highlight-cleanup'. + * vc-hg.el (vc-hg-print-log): Deal with multiple file arguments. + (vc-hg-registered): Replace if with when. + (vc-hg-state): Deal with nonexistent files and handle removed files. + (vc-hg-dir-state, vc-hg-dired-state-info): New functions. + (vc-hg-checkout): Re-enable. + (vc-hg-create-repo): Fix typos. + (vc-hg-print-log): Fix for multiple files. + (vc-hg-workfile-unchanged-p): New function. - * textmodes/ispell.el (ispell-lazy-highlight): New defcustom. - (ispell-highlight-face): Set default face to `isearch' when - lazy highlighting is enabled. - (ispell-highlight-spelling-error-overlay): Set `ispell-overlay' - priority to 1. Add lazy highlighting. - (ispell-highlight-spelling-error-xemacs): Remove obsolete arg - from `isearch-dehighlight'. + * vc.el: Fix typo. + (vc-print-log): Fix call to print-log. + (vc-default-comment-history): Likewise. + (vc-directory-exclusion-list): Add .hg and .bzr. + (vc-diff-internal): Pass a list instead of a file. -2005-03-18 David Ponce + * vc-mcvs.el (vc-mcvs-create-repo): Fix typos. - * files.el (hack-local-variables): Do a case-insensitive search - for End. + * vc-bzr.el (vc-bzr-create-repo): New function. -2005-03-18 Juri Linkov +2007-07-19 Stefan Monnier - * isearch.el (lazy-highlight-cleanup) : Rename from - `isearch-lazy-highlight-cleanup', add alias to old name and - declare obsolete. Add release numbers to other obsolete vars. - (isearch-done, isearch-lazy-highlight-new-loop): - Rename `isearch-lazy-highlight-cleanup' to `lazy-highlight-cleanup'. - (lazy-highlight-cleanup) : Doc fix. - (isearch-lazy-highlight-update): Rename obsolete - `isearch-lazy-highlight-face' to `lazy-highlight-face'. + * vc-hooks.el (vc-find-root): Walk up the tree to find an existing + `file' from which to start the search. -2005-03-18 Kenichi Handa +2007-07-19 Eric S. Raymond - * language/thai-util.el: Fix categorization of Thai characters in - thai-category-table. - (thai-composition-pattern): Adjust it for the above change. - (thai-self-insert-command, thai-compose-syllable): New functions. - (thai-compose-region): Use thai-compose-syllable. - (thai-compose-string): Likewise. - (thai-composition-function): Likewise. - (thai-auto-composition): New function. - (thai-auto-composition-mode): New minor mode. + * vc-cvs.el (vc-cvs-checkin, vc-cvs-diff): Finish transition from + having a single file argument to having a list of files as the + first argument. - * language/thai.el: Fix patterns to be registered in - composition-function-table. +2007-07-19 Stefan Monnier - * international/quail.el (quail-input-method): Locally bind - inhibit-modification-hooks to t. + * files.el (locate-dominating-file): New function. -2005-03-17 Richard M. Stallman +2007-07-18 Michael Albinus - * progmodes/perl-mode.el (perl-mode-hook): Defvar it. - (perl-mode): Use run-mode-hooks. + * progmodes/grep.el (grep-host-defaults-alist): New defvar. + (grep-compute-defaults): Use it. - * mail/rmail.el (rmail-movemail-program, rmail-pop-password) - (rmail-pop-password-required, rmail-remote-password): Doc fixes. - (rmail-preserve-inbox, rmail-probe, rmail-autodetect): Doc fix. +2007-07-18 Stefan Monnier - * mail/sendmail.el (sendmail-send-it): Reenable the code - to compute resend-to-address and use it. + * uniquify.el: Docstring fixes. - * tar-mode.el (tar-mode): Turn off undo unconditionally. +2007-07-18 Eric S. Raymond - * image-mode.el: New file. + * vc.el (revision-granularity, create-repo): Document new vc + backend properties. + (vc-rollback): Renamed from vc-cancel-version. Update + references. Pass a list instead of a file. + (vc-revert): Renamed from vc-revert-buffer. Update references. + (vc-delistify, vc-expand-dirs): New functions. + (vc-do-command): Rename FILE to FILE-OR-LIST and deal with a list + of files instead of a single file. + (vc-position-context, vc-resync-window, vc-diff-internal) + (vc-print-log): Pass a list instead of a file. - * image.el (insert-sliced-image): Add autoload cookie. + * vc-hooks.el (vc-stay-local-p, vc-backend) + (vc-backend-subdirectory-name): Work on a file list, not a single + file. + (vc-workfile-version): Update docstring. + (vc-menu-map): Use vc-rollback instead of vc-cancel-version and + vc-revert instead of vc-revert-buffer. + (vc-prefix-map): Likewise. Bind vc-update. - * font-lock.el (font-lock-lines-before): New user option. - (font-lock-after-change-function): Obey it. - - * bindings.el (esc-map): Make M-g a prefix. - Bind M-g g and M-g M-g to goto-line. + * vc-svn.el (vc-svn-revision-granularity, vc-svn-create-repo) + (vc-svn-wash-log): New functions. + (vc-svn-register, vc-svn-checkin, vc-svn-print-log) + (vc-svn-command): Deal with a list of files, not a single file. - * faces.el (face-id): Doc fix. - -2005-03-17 Frederik Fouvry - - * mail/rmail.el (rmail-unknown-mail-followup-to): New function. - (rmail-show-message): Use rmail-unknown-mail-followup-to. - (rmail-reply): Recognize Mail-Followup-To and Mail-Reply-To headers. - - * mail/sendmail.el (mail-yank-ignored-headers) - (mail-font-lock-keywords, mail-mode-fill-paragraph): - Add Mail-Followup-To and Mail-Reply-To headers. - (mail-citation-hook): Add autoload cookie. - (mail-mode): Doc fix. - (mail-mode-map): Bind mail-mail-followup-to and mail-mail-reply-to. - (mail-send): Compute Mail-Followup-To and Mail-Reply-To headers. - (mail-mode-fill-paragraph): Handle those headers. - (mail-mailing-lists): New variable. - (mail-mail-reply-to, mail-mail-followup-to): New functions. + * vc-rcs.el (vc-rcs-revision-granularity, vc-rcs-create-repo) + (vc-rcs-wash-log): New functions. + (vc-rcs-register, vc-rcs-checkin, vc-rcs-diff, vc-rcs-print-log): + Deal with a list of files, not a single file. + (vc-rcs-rollback): Likewise. Rename from vc-rcs-cancel-version. -2005-03-17 Juri Linkov + * vc-sccs.el (vc-sccs-revision-granularity, vc-sccs-wash-log): New + functions. + (vc-sccs-register, vc-sccs-checkin, vc-sccs-diff): Deal with a + list of files, not a single file. - * isearch.el (isearch-fallback): Check for `(car previous)' - before calling `isearch-other-end-state'. + * vc-mcvs.el (vc-mcvs-revision-granularity, vc-mcvs-create-repo): + New functions. + (vc-mcvs-register, vc-mcvs-checkin, vc-mcvs-print-log) + (vc-mcvs-diff): Deal with a list of files, not a single file. -2005-03-17 Kim F. Storm + * vc-hg.el (vc-hg-revision-granularity, vc-hg-create-repo): New + functions. + (vc-hg-print-log): Deal with a list of files, not a single file. + (vc-hg-diff-tree): New function, replace defalias with the same + name. + (vc-hg-register, vc-hg-checkin, vc-hg-command): Rename FILE to + FILES to denote that it is a file list, not a single file. - * simple.el (move-beginning-of-line): Move to beginning of buffer - line, as well as beginning of screen line. + * vc-cvs.el (vc-cvs-create-repo, vc-cvs-wash-log): New functions. + (vc-cvs-register, vc-cvs-checkin): Deal with a list of files, not + a single file. + (vc-cvs-print-log, vc-cvs-command): Rename FILE to FILES to denote + that it is a file list, not a single file. + (vc-cvs-diff): Likewise. Simplify. -2005-03-16 Glenn Morris + * vc-arch.el (vc-arch-register, vc-arch-checkin, vc-arch-diff): + Deal with a list of files, not a single file. - * calendar/diary-lib.el (mark-diary-entries): Use new optional - argument REDRAW rather than calendar-redrawing variable. - * calendar/calendar.el (calendar-redrawing): Delete. - (redraw-calendar): Do not bind calendar-redrawing. + * vc-bzr.el (vc-bzr-register, vc-bzr-command, vc-bzr-checkin) + (vc-bzr-print-log): Update FILE parameter name to denote that it + is a file list, not a single file. + (vc-bzr-diff): Likewise. Use the car of files. -2005-03-16 Matt Hodges +2007-07-18 Juanma Barranquero - * calendar/diary-lib.el (diary-redraw-calendar): Preserve point in - diary-file buffer. + * follow.el (follow-mode-hook, follow-mode-off-hook, follow-mode) + (follow-delete-other-windows-and-split, follow-recenter) + (follow-windows-aligned-p, follow-point-visible-all-windows-p) + (follow-redisplay, follow-estimate-first-window-start) + (follow-xemacs-scrollbar-support, follow-intercept-process-output): + Fix typos in docstrings. -2005-03-16 Stefan Monnier +2007-07-18 Martin Rudalics - * help.el (describe-mode): Allow a :minor-mode-function property to - specify a different minor mode toggle function than the variable. - * simple.el (auto-fill-function): - * subr.el (add-minor-mode): Use it. + * add-log.el (change-log-mode): Use fill-nobreak-predicate to + avoid that filling introduces lines with a single asterisk. -2005-03-16 Kenichi Handa + * kmacro.el (kmacro-end-macro): When ignoring empty macro + avoid incorrect kmacro-ring-empty-p messages. + Reported by Michael Schierl . - * language/ethio-util.el (sera-being-called-by-w3): New variable. - (ethio-sera-to-fidel-ethio): Check also sera-being-called-by-w3. - (ethio-fidel-to-sera-buffer): Likewise. +2007-07-17 Dan Nicolaescu -2005-03-16 Juri Linkov + * vc.el: Add more info about the vc-registered function. - * emacs-lisp/find-func.el (find-function-regexp): - Add defun-emitting macro `menu-bar-make-toggle'. +2007-07-17 Michael Albinus - * isearch.el: Put `isearch-scroll' property to - `split-window-horizontally'. + * files.el (file-remote-p): Introduce optional parameter + IDENTIFICATION. - * info.el: Update error messages for `debug-ignored-errors'. - (Info-isearch-search): Doc fix. - (Info-find-node): Move up code to go into info buffer before - recording the node to the history. - (Info-fontify-node): Fontify titles only if the next line - has two or more `*', `=', `-', `.'. - Display "go to this node" for empty (match-string 3). + * recentf.el (recentf-keep-default-predicate): Adapt call of + `file-remote-p'. -2005-03-16 YAMAMOTO Mitsuharu + * progmodes/grep.el (grep-probe): Use `process-file'. + (grep-compute-defaults): Handle variables host specific. - * term/mac-win.el: Add mouse pointer shape constants. + * net/ange-ftp.el (ange-ftp-file-remote-p): Handle optional + parameter IDENTIFICATION. -2005-03-15 Kim F. Storm + * net/tramp.el (tramp-handle-file-remote-p): Handle optional + parameter IDENTIFICATION. + (tramp-handle-set-file-times): New defun. Replaces `tramp-touch'. + (tramp-file-name-handler-alist, tramp-file-name-for-operation): + Add entry for `set-file-times'. + (tramp-do-copy-or-rename-file-via-buffer) + (tramp-do-copy-or-rename-file-out-of-band): Use `set-file-times'. + (tramp-handle-unhandled-file-name-directory): Rewrite. + (tramp-convert-file-attributes): Add error handling when inode is + extraordinary big. + (tramp-get-inode): Change parameter from FILE to VEC. + (tramp-handle-start-file-process): Use (current-buffer) if BUFFER + is nil. This is according to the specification. Goto (point-max) + when ready. + (tramp-handle-shell-command): Rewrite completely, using + `process-file' and `start-file-process'. + (tramp-methods, tramp-find-shell) + (tramp-open-connection-setup-interactive-shell) + (tramp-maybe-open-connection): Guard against $PROMPT_COMMAND shell + var. Reported by Steve Youngs . + + * net/tramp-fish.el (tramp-fish-file-name-handler-alist): Add + entry for `set-file-times'. Rename `start-process' into + `start-file-process'. Remove `call-process' entry. + (tramp-fish-handle-set-file-times): New defun. + (tramp-fish-handle-executable-find): Use `process-file'. + (tramp-fish-handle-process-file): New defun. Replaces + `tramp-fish-handle-call-process'. + (tramp-fish-do-copy-or-rename-file-directly): Use + `set-file-times'. + (tramp-fish-get-file-entries): Change `tramp-get-inode' parameter. + + * net/tramp-smb.el (tramp-smb-handle-file-attributes): Change + `tramp-get-inode' parameter. + +2007-07-17 Stefan Monnier + + * vc-bzr.el (vc-bzr-version, vc-bzr-at-least-version) + (vc-bzr-post-command-function): Remove. Version 0.8 is already old + nowadays, and by the time Emacs-23 comes out, nobody will even remember + it has ever existed. - * simple.el (move-beginning-of-line): Use vertical-motion. +2007-07-17 Dan Nicolaescu -2005-03-15 Juri Linkov + * vc.el: Undo previous change. - * isearch.el (isearch-error): New variable. - (isearch-invalid-regexp, isearch-within-brackets): Remove. - (isearch-error-state): Rename from `isearch-invalid-regexp-state'. - (isearch-within-brackets-state): Remove. - (isearch-case-fold-search-state, isearch-pop-fun-state): - Decrease frame index. - (isearch-mode, isearch-top-state, isearch-push-state) - (isearch-edit-string, isearch-abort, isearch-search-and-update) - (isearch-fallback, isearch-message-prefix, isearch-message-suffix) - (isearch-search, isearch-lazy-highlight-new-loop): - Replace `isearch-invalid-regexp' with `isearch-error'. - Remove `isearch-within-brackets'. - (isearch-search): Add `search-failed' handler to `condition-case'. - (isearch-lazy-highlight-search): Add `condition-case' to catch - errors and allow `isearch-lazy-highlight-update' to try - highlighting from the beginning of the window. - (isearch-repeat): Move up code to set isearch-wrapped to t - before calling isearch-wrap-function. +2007-07-16 Eli Zaretskii - * info.el (Info-isearch-initial-node): New internal variable. - (Info-search): Signal an error in isearch mode when search leaves - the initial node. Signal an error when `bound' is non-nil and - nothing was found in the current subfile. - (Info-isearch-search): Remove `condition-case'. - (Info-isearch-wrap): Don't wrap when search failed during leaving - the initial node. If `Info-isearch-search' is nil, wrap around - the current node. - (Info-isearch-start): New fun. - (Info-mode): Add buffer-local hook `Info-isearch-start' to - `isearch-mode-hook'. + * makefile.w32-in (clean): Don't delete *~. -2005-03-15 YAMAMOTO Mitsuharu +2007-07-16 Stefan Monnier - * simple.el (normal-erase-is-backspace): Set default to t if - running on Mac. + * textmodes/tex-mode.el (tex-verbatim-environments): + Add safe-local-variable property. + (tex-font-lock-syntactic-keywords): Lookup tex-verbatim-environments + when starting font-lock rather than when loading tex-mode.el. - * term/mac-win.el (function-key-map): Sync with x-win.el. + * progmodes/sh-script.el (sh-font-lock-quoted-subshell): Skip over the + whole $( rather than just the $. Rename from sh-quoted-subshell. + (sh-font-lock-syntactic-keywords): Adjust call accordingly. -2005-03-15 Kenichi Handa +2007-07-16 Thien-Thi Nguyen - * international/mule-cmds.el (locale-language-names): Modify the - format of elements and add more entries. - (locale-preferred-coding-systems): Add more entries. - (set-locale-environment): Adjust for the change of - locale-language-names. + * bookmark.el (bookmark-maybe-sort-alist): Don't modify + bookmark-alist. Instead, if not sorting, simply return it. + (bookmark-bmenu-list): Call bookmark-maybe-sort-alist + for its return value, not for its side effect. -2005-03-14 Stefan Monnier + * emacs-lisp/lisp-mode.el (calculate-lisp-indent): In the + case of alignment under a constant symbol, find and consider + the sexp actually at indentation to be the "last sexp". - * pcvs.el (smerge-ediff): Remove bogus autoload. +2007-07-16 Drew Adams -2005-03-14 Lute Kamstra + * mouse.el (mouse-yank-secondary): Better error message if no + secondary selection. - * emacs-lisp/debug.el (debugger-make-xrefs): Docstring fix. - Ignore a `*' at the beginning of a line. +2007-07-16 Dan Nicolaescu - * subr.el (macro-declaration-function): Move to emacs-lisp/byte-run.el. - * emacs-lisp/byte-run.el (macro-declaration-function): Move from - subr.el. - (dont-compile, eval-when-compile, eval-and-compile): Use declare - to specify indentation. + * vc-hooks.el (vc-handled-backends): Move BZR later in the list. - * generic.el (define-generic-mode): Let generic-mode-list be a - list of strings; test membership with equal. + * term/xterm.el (xterm-turn-on-modify-other-keys) + (xterm-turn-off-modify-other-keys): New functions. + (terminal-init-xterm): Enable the modifyOtherKeys feature if the + terminal supports it. -2005-03-14 Kim F. Storm +2007-07-16 Thien-Thi Nguyen - * simple.el (next-line, previous-line): Add optional try-vscroll - arg to recognize interactive use. Pass it on to line-move. - (line-move): Don't perform auto-window-vscroll when defining or - executing keyboard macro to ensure consistent behavior. + * bookmark.el (bookmark-show-all-annotations): + Make sure each inserted annotation ends with newline. -2005-03-13 Stefan Monnier +2007-07-15 Richard Stallman - * pcvs-util.el (cvs-string->strings): Strip trailing whitespace. + * kmacro.el (kmacro-bind-to-key): Avoid comparisons on function keys. -2005-03-13 Lute Kamstra + * tutorial.el (tutorial--find-changed-keys): + Handle C-x specially like ESC. - * emacs-lisp/debug.el (debug): Set debug-on-exit before calling - debugger-setup-buffer so that backtrace marks the frames set to - debug-on-exit and we don't have to do it manually. Set an extra - debug-on-exit for macro's. - (debugger-setup-buffer): Don't mark the top frame manually. +2007-07-15 Aaron Hawley -2005-03-12 Lute Kamstra + * tar-mode.el (tar-get-descriptor): No error for zero-length file. - * emacs-lisp/byte-run.el: Replace lisp-indent-hook with - lisp-indent-function throughout. - (with-no-warnings): Set lisp-indent-function property. +2007-07-15 Juri Linkov -2005-03-12 Thien-Thi Nguyen + * delsel.el (delete-selection-pre-hook): + * emulation/cua-base.el (cua-paste): Before a yank command, + check also whether last-command is one of mouse-save-then-kill, + mouse-secondary-save-then-kill, mouse-set-region, mouse-drag-region. - * progmodes/dcl-mode.el (dcl-mode-syntax-table): - Add entry for backslash. +2007-07-15 Michael Albinus -2005-03-12 Juri Linkov + * recentf.el (recentf-keep-default-predicate): New defun. + (recentf-keep): Use it as initial value. - * info.el (Info-search): Four fixes for backward search. +2007-07-15 Karl Fogel -2005-03-11 Jay Belanger + * bookmark.el: Revert 2007-07-13T18:16:17Z!kfogel@red-bean.com, + thus restoring bookmark bindings to three slots under C-x r. See + http://lists.gnu.org/archive/html/emacs-devel/2007-07/msg00705.html. - * calc/calc.el (calc-language-alist): New variable. - * calc/calc-embed.el (calc-embedded-language-alist): Remove. - (calc-embedded-find-modes): Use calc-language-alist instead of - calc-embedded-language-alist. +2007-07-15 Jeff Miller (tiny change) -2005-03-11 Glenn Morris + * calendar/calendar.el (calendar-goto-bahai-date): Autoload it. - * calendar/calendar.el (calendar-redrawing): New internal - variable. - (redraw-calendar): Remove bogus save-excursion from previous - change. Bind calendar-redrawing to t for mark-diary-entries. - * calendar/diary-lib.el (mark-diary-entries): No need to redraw - calendar if that is why we were called. +2007-07-15 Jason Rumney -2005-03-11 Kenichi Handa + * w32-fns.el (set-default-process-coding-system): Use dos line ends + for input to cmdproxy on all versions of Windows. + Use dos line ends for input to plink. - * international/mule.el (make-coding-system): Set property - coding-system-define-form to nil. - (define-coding-system-alias): Likewise. + * comint.el (comint-simple-send): Concat newline before sending. + (comint-password-prompt-regexp): Recognize plink's passphrase prompt. -2005-03-11 Kenichi Handa +2007-07-14 Stefan Monnier - These changes are suggested by Dave Love . + * emacs-lisp/autoload.el (generated-autoload-file): Autoload the + safe-local-variable setting. - * textmodes/fill.el: Change encoding to iso-2022-7bit and add - coding: tag. - (adaptive-fill-regexp): Add more bullets. - (fill-french-nobreak-p): Add Latin-1 and Latin-9 guillemets in - regexps. +2007-07-14 David Kastrup -2005-03-10 Stefan Monnier + * emacs-lisp/advice.el (defadvice): Doc fix. - * help.el (describe-mode): Properly handle non-trivial lighters. - Don't ignore minor modes that are not listed in minor-mode-list. +2007-07-14 Juanma Barranquero - * tooltip.el (tooltip-mode): Don't complain that you can't turn the - feature ON when the user requests to turn it OFF. + * subr.el (when, unless): Doc fix. -2005-03-10 Lute Kamstra +2007-07-13 Dan Nicolaescu - * emacs-lisp/debug.el (debug-entry-code): Delete it. - (implement-debug-on-entry): New function to replace debug-entry-code. - (debug-on-entry-1): Use implement-debug-on-entry. Delete the - second argument as the 2005-03-07 change makes it obsolete. - (debug-on-entry, cancel-debug-on-entry): Update call to - debug-on-entry-1. - (debug, debugger-setup-buffer): Comment update. - (debugger-frame-number): Update to work with implement-debug-on-entry. + * replace.el (match): Use yellow1 instead of yellow. -2005-03-10 Jay Belanger + * progmodes/gdb-ui.el (breakpoint-enabled): Use red1 instead of + red. - * calc/calc-embed.el (math-ms-args): Declare it. - (calc-embedded-eval-expr, calc-embedded-eval-get-var): Use variable - math-ms-args. - (calc-embedded-subst): Use math-multi-subst-rec to substitute - variables. + * pcvs-info.el (cvs-unknown): Likewise. -2005-03-10 Nick Roberts +2007-07-13 Eli Zaretskii - * progmodes/gdb-ui.el (gdb-var-create-handler, gdb-get-location): - Use message-box. + * makefile.w32-in (install-lisp-SH, install-lisp-CMD): New targets. + (install): Use them to copy all *.el files before *.elc. - * tooltip.el (tooltip-mode): Use define-minor-mode and simplify. - (tooltip-activate-mouse-motions-if-enabled): Use dolist. - (tooltip-gud-tips): Simplify. - (tooltip-gud-tips-p): Remove superfluous :set. - (tooltip-gud-modes): Add fortran-mode. - (gdb-tooltip-print): Remove newline for tooltip-use-echo-area. +2007-07-13 Drew Adams - * bindings.el (mode-line-mode-menu): Add tooltip-mode to mode-line. + * bookmark.el (bookmark-jump-other-window): New function. + (bookmark-map): Bind it to "o". -2005-03-09 Kim F. Storm + http://lists.gnu.org/archive/html/emacs-devel/2007-07/msg00633.html + and its thread contains discussion about this change. + The original patch was slightly tweaked by Karl Fogel + before committing. - * play/animate.el (animate-place-char): Use forward-line instead - of next-line to improve performance. +2007-07-13 Karl Fogel -2005-03-09 Simon Josefsson + * bookmark.el: Shorten some comments to fit within 80 lines. - * net/browse-url.el (browse-url-default-browser): Doc fix. +2007-07-13 Karl Fogel -2005-03-09 Miles Bader + * bookmark.el: Don't define bookmark keys under the "C-xr" map; + instead, make "C-xp" a prefix for bookmark-map. Patch by Drew + Adams , mildly tweaked by me. See + http://lists.gnu.org/archive/html/emacs-devel/2007-07/msg00633.html. - * emacs-lisp/bytecomp.el (byte-compile-variable-ref) - (byte-compile-obsolete): Change " since VER" to " (as of Emacs VER)". +2007-07-13 Carsten Dominik -2005-03-09 Kenichi Handa + * textmodes/org.el: Bug fixes. + (org-end-of-line): Move to end of line if in headline without tags. - * international/latin-1.el: Set case and syntax for 255 only if - set-case-syntax-set-multibyte is nil. +2007-07-13 Stefan Monnier - * textmodes/ispell.el (ispell-insert-word): New function. - (ispell-word): Use ispell-insert-word to insert a new word. - (ispell-process-line): Likewise. - (ispell-complete-word): Likewise. + * vc-hooks.el: Remove spurious * in docstrings. + (vc-handled-backends): Add BZR. -2005-03-09 Glenn Morris + * vc-hooks.el (vc-find-file-hook): Use with-demoted-errors. - * calendar/calendar.el (redraw-calendar): Preserve point. - Reported by Matt Hodges . - (calendar-week-start-day): Move after definition of - redraw-calendar. Delete buffer test, since redraw-calendar has - that now. +2007-07-12 Davis Herring - * calendar/diary-lib.el (mark-diary-entries): Only call - redraw-calendar in the first of any recursive calls. - Reported by Alan Shutko . + * desktop.el (desktop-buffer-info, desktop-save): + Use `desktop-dirname' instead of `dirname'. -2005-03-08 Juri Linkov +2007-07-12 Paul Pogonyshev - * textmodes/sgml-mode.el (sgml-tag, html-tag-alist) - (html-horizontal-rule, html-line, html-image, html-checkboxes) - (html-radio-buttons): Add a space before the trailing `/>' where - sgml-xml-mode is non-nil. - (sgml-delete-tag): Check if the tag ends with `/>' to not delete - the subsequent tag of the empty XML tag. - (html-href-anchor): Don't set initial input to "http:". - (html-image): Ask for the image URL and set point inside alt="". - (html-name-anchor): Duplicate the name in the `id' attribute when - sgml-xml-mode is non-nil. - (html-paragraph): Remove \n before

. - (html-checkboxes, html-radio-buttons): Insert `checked="checked"' - instead of `checked' when sgml-xml-mode is non-nil. + * progmodes/which-func.el (which-func-modes): Add `python-mode'. - * facemenu.el (list-colors-print): Print #RRGGBB in default face. - Remove 1 space before #RRGGBB to not truncate it on terminal - windows w/o fringes. Remove 1 space between bg and fg examples - to get more space. - (list-colors-duplicates): Replace `and' with `if' for `boundp' to - avoid byte-compile warnings. + * progmodes/python.el (python-which-func-length-limit): New var. + (python-which-func): New function. + (python-current-defun): Add optional `length-limit' and try to fit + computed function name to that length. + (python-mode): Hook `python-which-func' up. - * image-file.el (image-file-handler): Put `safe-magic' property to - `image-file-handler'. +2007-07-12 Sean O'Rourke (tiny change) - * info.el (Info-isearch-search): Emulate word search in - isearching through multiple Info nodes with Info-search. - (Info-isearch-wrap): Allow isearch-word. + * pcomplete.el (pcomplete-entries): Obey pcomplete-ignore-case. -2005-03-08 Lute Kamstra + * comint.el (comint-dynamic-complete-as-filename): + Use read-file-name-completion-ignore-case. - * emacs-lisp/debug.el (debugger-step-through): Make sure that - stepping into the debugger's code is not possible. - (debugger-jumping-flag): Docstring update. +2007-07-12 Stefan Monnier -2005-03-08 Jay Belanger + * comint.el (comint-dynamic-list-filename-completions): + Use read-file-name-completion-ignore-case. - * calc/calc-embed.el (calc-do-embedded): Reset mode line when - embedded mode begins. - (calc-embedded-language-alist): New variable. - (calc-embedded-find-modes): Use calc-embedded-language-alist to - set default language mode. + * vc-cvs.el: Require CL. + (vc-cvs-revision-table, vc-cvs-revision-completion-table): + New functions to provide completion of revision names. -2005-03-08 Kenichi Handa + * vc-cvs.el (vc-functions): Clear up the cache when reloading the file. + (vc-cvs-annotate-first-line-re): New const. + (vc-cvs-annotate-process-filter): New fun. + (vc-cvs-annotate-command): Use them and run the command asynchronously. - * international/ccl.el (define-ccl-program): Fix docstring about - extra 256 bytes assured for the output buffer. +2007-07-12 Paul Pogonyshev - * international/utf-16.el (ccl-encode-mule-utf-16le-with-signature): - Fix BUFFER_MAGNIFICATION to 2. - (ccl-encode-mule-utf-16be-with-signature): Likewise. + * emacs-lisp/eldoc.el (eldoc-last-data): Revise documentation. + (eldoc-print-current-symbol-info): Adjust for changed helper + function signatures. + (eldoc-get-fnsym-args-string): Add `args' argument. Use new + `eldoc-highlight-function-argument'. + (eldoc-highlight-function-argument): New function. + (eldoc-get-var-docstring): Format documentation with + `font-lock-variable-name-face'. + (eldoc-docstring-format-sym-doc): Add `face' argument and apply it + where suited. + (eldoc-fnsym-in-current-sexp): Return a list with argument index. + (eldoc-beginning-of-sexp): Return number of skipped sexps. -2005-03-07 Karl Chen +2007-07-11 Michael Albinus - * align.el (align-rules-list): Added an alignment rule for CSS - declarations (applies to css-mode and html-mode buffers). + * progmodes/compile.el (compilation-start): `start-process' must + still be redefined when calling `start-process-shell-command'. -2005-03-07 Stefan Monnier + * progmodes/gud.el (gud-file-name): When `default-directory' is a + remote file name, prepend its remote part to the filename. + (gud-common-init): When `default-directory' is a remote file name, + make the filename relative to it. + Based on a patch by Nick Roberts . - * emacs-lisp/debug.el (debug-on-entry-1): Fix handling of macros. +2007-07-11 Dan Nicolaescu -2005-03-07 Kim F. Storm + * vc-hooks.el (vc-default-mode-line-string): Add a mouse face, + mouse binding and a tooltip. - * simple.el (move-beginning-of-line): New command. +2007-07-11 Stefan Monnier - * bindings.el (global-map): Bind C-a to move-beginning-of-line. + * menu-bar.el (vc-menu-map): New defalias. - * reveal.el (reveal-mode-map): Bind C-a to beginning-of-line. +2007-07-10 Richard Stallman - * emulation/cua-base.el: Put CUA move property on move-end-of-line - and move-beginning-of-line. + * emacs-lisp/lisp-mode.el (eval-defun): + Explain special handling of `defface'. - * apropos.el (apropos-print): Omit command from M-x ... RET. +2007-07-10 Jim Meyering (tiny change) -2005-03-07 Nick Roberts + * emacs-lisp/copyright.el (copyright-current-gpl-version): Set to 3. - * progmodes/gdb-ui.el (gdb-var-create-handler): Handle just MI case. - (gdb-send, gdb-send-item): Log items sent from gdb-send too. + * autoinsert.el (auto-insert-alist): s/2/3/ in the generated comment. -2005-03-06 Richard M. Stallman +2007-07-10 Stefan Monnier - * bindings.el (esc-map): Bind M-g to goto-line. + * emacs-lisp/cl.el: Load cl-loaddefs.el quietly. - * facemenu.el (global-map): Bind M-o, not M-g. + * vc-arch.el (vc-arch-complete): Remove. + (vc-arch-revision-completion-table): Use complete-with-action. -2005-03-06 Jan Dj,Ad(Brv + * subr.el (condition-case-no-debug, with-demoted-errors): New macros. + (complete-with-action): New function. + (dynamic-completion-table): Use it. - * menu-bar.el (menu-bar-file-menu): Add the same :enable to - "Open Directory" as for "Open File". +2007-07-10 Michael Albinus -2005-03-06 Chong Yidong + * comint.el (make-comint, make-comint-in-buffer) + (comint-exec-1): Replace `start-process' by `start-file-process'. - * simple.el (activate-mark-hook, deactivate-mark-hook): Add defvars. - (push-mark-command): Run activate-mark-hook. + * progmodes/compile.el (compilation-start): Revert redefining + `start-process'. -2005-03-06 Richard M. Stallman +2007-07-10 Stefan Monnier - * help-mode.el (help-mode-finish): Don't alter the element - in view-return-to-alist if there already is one. + * emacs-lisp/autoload.el (autoload-generate-file-autoloads): Be careful + with EOLs when generating MD5 checksums. - * jit-lock.el (jit-lock-stealth-fontify): When calling sit-for, - make sure the current buffer is the expected one. + * follow.el: Don't change the global map from the follow-mode-map + defvar, but from the toplevel. Use easy-menu to unify the Emacs and + XEmacs code. + (turn-on-follow-mode, turn-off-follow-mode): Remove interactive spec + since `follow-mode' should be used instead for that. + + * emacs-lisp/easymenu.el (easy-menu-binding): New function. + (easy-menu-do-define): Use it. + (easy-menu-do-add-item): Inline into easy-menu-add-item and then remove. + + * progmodes/compile.el (compilation-auto-jump-to-first-error) + (compilation-auto-jump-to-next): New vars. + (compilation-auto-jump): New function. + (compilation-error-properties): Use them to jump to first error. + (compilation-start): Set the var if requested. + + * emacs-lisp/autoload.el (update-directory-autoloads): Remove + duplicates without also removing entries from other directories. + +2007-07-10 Carsten Dominik + + * textmodes/org.el (org-agenda-day-view, org-agenda-week-view): + Remember span as default. + (org-columns-edit-value): Rename from `org-column-edit'. + (org-columns-display-here-title): Rename from + `org-overlay-columns-title'. + (org-columns-remove-overlays): Rename from org-remove-column-overlays. + (org-columns-get-autowidth-alist): Rename from + `org-get-columns-autowidth-alist'. + (org-columns-display-here): Rename from `org-overlay-columns'. + (org-columns-new-overlay): Rename from `org-new-column-overlay'. + (org-columns-quit): Rename from `org-column-quit'. + (org-columns-show-value): Rename from `org-column-show-value'. + (org-columns-content, org-columns-widen) + (org-columns-next-allowed-value) + (org-columns-edit-allowed, org-columns-store-format) + (org-columns-uncompile-format, org-columns-redo) + (org-columns-edit-attributes, org-delete-property) + (org-set-property, org-columns-update) + (org-columns-compute, org-columns-eval) + (org-columns-not-in-agenda, org-columns-compute-all) + (org-property-next-allowed-value) + (org-columns-compile-format) + (org-fill-paragraph-experimental) + (org-string-to-number, org-property-action) + (org-columns-move-left, org-columns-new) + (org-column-number-to-string) + (org-property-previous-allowed-value) + (org-at-property-p, org-columns-delete) + (org-columns-previous-allowed-value) + (org-columns-move-right, org-columns-narrow) + (org-property-get-allowed-values) + (org-verify-version, org-column-string-to-number) + (org-delete-property-globally): New functions. + (org-columns-current-fmt): Rename from `org-current-columns-fmt'. + (org-columns-overlays): Rename from `org-column-overlays'. + (org-columns-map): Rename from `org-column-map'. + (org-columns-current-maxwidths): Rename from + `org-current-columns-maxwidths'. + (org-columns-begin-marker, org-columns-current-fmt-compiled) + (org-previous-header-line-format) + (org-columns-inhibit-recalculation) + (org-columns-top-level-marker): New variables. + (org-columns-default-format): Rename from `org-default-columns-format'. + (org-property-re): New constant. + +2007-07-10 Guanpeng Xu + + * subr.el (looking-at-p, string-match-p): New functions. + +2007-07-09 Reiner Steib + + * textmodes/tex-mode.el (tex-fontify-script) + (tex-font-script-display): New variables to make display of + superscripts and subscripts customizable. + (tex-font-lock-suscript, tex-font-lock-match-suscript): Use them. - * novice.el (disabled-command-function): Output in *Disabled Command*. - Explicitly ignore non-keyboard events, and explicitly handle C-g. +2007-07-09 Richard Stallman - * textmodes/flyspell.el (flyspell-large-region): - Pass args differently for aspell. + * isearch.el (isearch-edit-string): Call to isearch-push-state + after the search. - * files.el (mode-require-final-newline): Doc fix. +2007-07-09 Jan Dj,Ad(Brv -2005-03-03 Stephan Stahl (tiny change) + * window.el (fit-window-to-buffer): Remove setting of window-min-height + to 1 as enlarge-window uses the value to resize/shrink windows other + than WINDOW if needed. - * progmodes/which-func.el (which-function): - Specify NOERROR when calling imenu--make-index-alist. +2007-07-08 Katsumi Yamaoka -2005-03-05 Stefan Monnier + * cus-start.el (file-coding-system-alist): Fix custom type. - * simple.el (normal-erase-is-backspace): Define default value. +2007-07-08 Chong Yidong - * custom.el (custom-theme-set-variables): Remove unused var - `immediate'. - (custom-reevaluate-setting): Simple function to handle variables - that are defined before their default value can really be - computed. + * longlines.el (longlines-wrap-region): Avoid marking buffer as + modified. + (longlines-auto-wrap, longlines-window-change-function): + Remove unnecessary calls to set-buffer-modified-p. - * startup.el (command-line): Use it for temporary-file-directory, - small-emporary-file-directory, auto-save-file-name-transforms, - blink-cursor-mode, and normal-erase-is-backspace. +2007-07-08 Katsumi Yamaoka - * font-lock.el (font-lock-fontify-keywords-region): Ensure forward - progress, even with buggy anchored keywords. + * cus-start.el (file-coding-system-alist): Fix custom type. -2005-03-05 Luc Teirlinck +2007-07-08 Stefan Monnier - * simple.el (goto-line): Remove unbalanced final parenthesis. + * vc-cvs.el (vc-cvs-revert): Use vc-default-revert. + (vc-cvs-checkout): Remove last arg now unused; simplify. -2005-03-05 Richard M. Stallman +2007-07-08 Michael Albinus - * simple.el (goto-line): Use a number at point as the default. - With C-u as arg, switch buffers. + * files.el (file-remote-p): Introduce optional parameter CONNECTED. -2005-03-05 Juri Linkov + * net/tramp.el: + * net/tramp-ftp.el: + * net/tramp-smb.el: + * net/tramp-uu.el: + * net/trampver.el: Migrate to Tramp 2.1. - * frame.el (blink-cursor-mode): Replace `emacs-quick-startup' - with `no-blinking-cursor'. + * net/tramp-cache.el: + * net/tramp-fish.el: + * net/tramp-gw.el: New Tramp packages. - * startup.el (no-blinking-cursor): New defvar. - (command-line): Add `--no-blinking-cursor' to longopts. - Set `no-blinking-cursor' to t for command line arguments - -Q, -nbc, --no-blinking-cursor. Replace `emacs-quick-startup' - with `no-blinking-cursor' in the condition for calling - `blink-cursor-mode'. + * net/tramp-util.el: + * net/tramp-vc.el: Removed. -2005-03-04 Luc Teirlinck + * net/ange-ftp.el: Add ange-ftp property to 'start-file-process. + (ange-ftp-file-remote-p): Handle optional parameter CONNECTED. - * menu-bar.el (menu-bar-make-mm-toggle): Doc fix. - (menu-bar-options-save): Add blink-cursor-mode. - (menu-bar-options-menu): Add blink-cursor-mode. + * net/rcompile.el (remote-compile): Handle Tramp 2.1 arguments. -2005-03-04 Ulf Jasper + * progmodes/compile.el (compilation-start): Redefine + `start-process' temporarily when `default-directory' is remote. + Remove case of synchronous compilation, this won't happen ever. + (compilation-setup): Make local variable `comint-file-name-prefix' + for remote compilation. - * calendar/icalendar.el (icalendar-version): Increase to 0.11. - (icalendar-export-file, icalendar-export-region) - (icalendar-import-file, icalendar-import-buffer): Add autoload cookies. - (icalendar--convert-ical-to-diary): Fix problem with DURATION. +2007-07-08 Martin Rudalics -2005-03-04 Lute Kamstra + * novice.el (disabled-command-function): Fit window to buffer to + make last line visible. + Reported by Stephen Berman . - * emacs-lisp/debug.el (debugger-step-after-exit): Make it a defvar. - (debug-function-list): Ditto. + * mouse.el (mouse-drag-track): Reset transient-mark-mode to nil + when handling the terminating event. -2005-03-04 Robert J. Chassell +2007-07-07 Jay Belanger - * textmodes/texinfmt.el (texinfo-append-refill): - Redefine the types of line to which @refill - is not appended by replacing a search for `@refill\\|@bye' with - `@refill\\|^[ \t]*@'. The intent is to solve both the `@end - itemize@refill' bug and the unfilled long lines bug. - (texinfmt-version): Update number and date. + * calc/calc.el (math-read-number-simple): Remove leading 0s. + (math-bignum-digit-length): Change to optimal value. -2005-03-04 Reiner Steib + * calc/calc-bin.el (math-bignum-logb-digit-size) + (math-bignum-digit-power-of-two): Evaluate when compiled. - * international/code-pages.el (windows-1250, windows-125[2-8]) - (iso-8859-10, -13, -16, georgian-ps): Add autoload cookies. + * calc/calc-comb.el (math-small-factorial-table) + (math-init-random-base, math-prime-test): Remove unnecessary calls + to `math-read-number-simple'. -2005-03-03 Stefan Monnier + * calc/calc-ext.el (math-approx-pi, math-approx-sqrt-e) + (math-approx-gamma-const): Add docstrings. - * frame.el (blink-cursor-mode): `emacs-quick-startup' may not be - bound yet. + * calc/calc-forms.el (math-julian-date-beginning) + (math-julian-date-beginning-int): New constants. + (math-format-date-part, math-parse-standard-date, calcFunc-julian): + Use the new constants. -2005-03-02 Romain Francoise + * calc/calc-funcs.el (math-gammap1-raw): Add docstring. - * ibuf-ext.el (ibuffer-filter-disable): Move back to the current - buffer after removing limits. - (ibuffer-pop-filter): Ditto. - Update copyright. + * calc/calc-math.el (math-approx-ln-10, math-approx-ln-2): + Add docstrings. -2005-03-02 Miles Bader +2007-07-07 Tom Tromey - * button.el (make-text-button): If the user doesn't specify a - type, use the default. Rewrite to use `add-text-properties' and - plist functions. + * vc.el (vc-annotate): Jump to line and output message only after the + process is really all done. -2005-03-01 Lute Kamstra +2007-07-07 Stefan Monnier - * emacs-lisp/debug.el (inhibit-debug-on-entry): Add docstring. - (debugger-jumping-flag): New var. - (debug-entry-code): Use it. - (debugger-jump): Use debugger-jumping-flag and add - debugger-reenable to post-command-hook. - (debugger-reenable): Use debugger-jumping-flag and remove itself - from post-command-hook. - (debug, debug-on-entry, cancel-debug-on-entry): Remove call to - debugger-reenable. + * vc.el (vc-exec-after): Don't move point from the sentinel. + Forcefully read all the remaining text in the pipe upon process exit. + (vc-annotate-display-autoscale, vc-annotate-lines): + Don't stop at the first unrecognized line. + (vc-annotate-display-select): Run autoscale after the process is done + since it depends on the whole result. -2005-03-01 Robert J. Chassell +2007-07-07 Eli Zaretskii - * textmodes/texinfmt.el (texinfo-no-refill-regexp): Comment out - inclusion of "itemize\\|", which may be unnecessary, is certainly - inelegant, and stops refilling in itemize lists when formatting - Japanese Texinfo files to Info. - Update copyright to 2005. + * term/w32-win.el (menu-bar-open): New function. + Bind to it. -2005-03-01 Nick Roberts +2007-07-07 Michael Albinus - * progmodes/gdb-ui.el (gdb-get-location): Use a warning instead - of an error if GDB can't find the source file. + * simple.el (start-file-process): New defun. -2005-03-01 Glenn Morris +2007-07-07 Stefan Monnier - * calendar/calendar.el (redraw-calendar): Work from any buffer, - not just the calendar. + * files.el (find-file-confirm-nonexistent-file): Rename from + find-file-confirm-inexistent-file. Update users. - * calendar/diary-lib.el (mark-diary-entries): Remove any old marks - first. - (diary-redraw-calendar): New function. - (make-diary-entry): Add diary-redraw-calendar to local - write-contents-functions. Turn off selective display before - inserting in diary. + * emacs-lisp/autoload.el (autoload-find-destination): Understand a new + format of autoload block where the file's time-stamp is replaced by its + MD5 checksum. + (autoload-generate-file-autoloads): Use MD5 checksum instead of + time-stamp for secondary autoloads files. + (update-directory-autoloads): Remove duplicate entries. + Use time-less-p for time-stamps, as done in autoload-find-destination. -2005-03-01 Kim F. Storm +2007-07-07 Jay Belanger - * emacs-lisp/copyright.el (copyright-fix-years): New command. + * calc/calc.el (math-read-number): Replace number by variable. + (math-read-number-simple): Properly parse small integers. -2005-03-01 Lute Kamstra +2007-07-07 Dan Nicolaescu - * emacs-lisp/debug.el (debug-on-entry-1): Reimplement to make sure - that debug-entry-code can be safely removed from a function while - this code is being evaluated. Revert the 2005-02-27 change as the - new implementation no longer requires it. Make sure that a - function body containing just a string is not mistaken for a docstring. - (debug): Skip one more frame in case of debug on entry. - (debugger-setup-buffer): Delete one more frame line in case of - debug on entry. - (debugger-frame-number): Update to use the new text introduced by - the 1999-11-03 change. Skip one more frame in case of debug on entry. + * vc.el: Fix doc for the checkout function. -2005-02-28 Kim F. Storm +2007-07-06 Dan Nicolaescu - * double.el (double-translate-key): Call force-window-update after - read-event to avoid crash in redisplay. + * vc-hg.el (vc-hg-root): New function. + (vc-hg-registered): Use it. + (vc-hg-diff-tree): New defalias. + (vc-hg-responsible-p): Likewise. + (vc-hg-checkout): Comment out, not needed. + (vc-hg-delete-file, vc-hg-rename-file, vc-hg-could-register) + (vc-hg-find-version, vc-hg-next-version): New functions. -2005-02-28 Stefan Monnier +2007-07-06 Andreas Schwab - * emacs-lisp/debug.el (inhibit-debug-on-entry): New var. - (debug): Use it. Move the inhibit-trace earlier. - (debug-entry-code): New const. - (debug-on-entry-1): Use it. + * emacs-lisp/lisp-mode.el (eval-last-sexp): Avoid introducing any + dynamic bindings around the evaluation of the expression. + Reported by Jay Belanger . -2005-02-28 Chong Yidong +2007-07-06 Stefan Monnier - * international/utf-16.el (ccl-encode-mule-utf-16le): - Fix BUFFER_MAGNIFICATION to 2. - (ccl-encode-mule-utf-16be): Likewise. + * autorevert.el (auto-revert-tail-handler): Use inhibit-read-only. + Run before-revert-hook. Suggested by Denis Bueno . + Use run-hooks rather than run-mode-hooks. -2005-02-28 Kenichi Handa +2007-07-05 Jay Belanger - * international/utf-16.el (ccl-encode-mule-utf-16le-with-signature): - Fix BUFFER_MAGNIFICATION to 4. - (ccl-encode-mule-utf-16be-with-signature): Likewise. + * calc/calc-comb.el (math-random-digit): Rename to + `math-random-three-digit-number'. + (math-random-digits): Don't depend on representation of integer. -2005-02-28 Nick Roberts + * calc/calc-bin.el (math-bignum-logb-digit-size) + (math-bignum-digit-power-of-two): New constants. + (math-and-bignum, math-or-bignum, math-xor-bignum, math-diff-bignum) + (math-not-bignum, math-clip-bignum): Use the constants + `math-bignum-digit-power-of-two' and `math-bignum-logb-digit-size' + instead of their values. + (math-clip): Use math-small-integer-size instead of its value. - * speedbar.el (speedbar-update-flag): Doc fix. - (speedbar-show-info-under-mouse): Give set-mouse-position the right - argument. + * calc/calc.el (math-add-bignum): Replace number by constant. -2005-02-27 Stefan Monnier +2007-07-05 Chong Yidong - * reveal.el (reveal-post-command): Don't try to reveal overlays which - have a non-nil `invisible' property but are actually visible. + * wid-edit.el (widget-documentation-string-value-create): + Insert indentation spaces. - * progmodes/perl-mode.el (perl-imenu-generic-expression): Add entries - for perldoc sections. - (perl-outline-regexp, perl-outline-level): New var and function. - (perl-mode): Use them. +2007-07-05 Thien-Thi Nguyen -2005-02-27 Glenn Morris + * emacs-lisp/byte-opt.el: Revert last change. - * calendar/diary-lib.el (diary-remind): Discard any mark portion - from diary-entry. Reported by Andrew Kemp . +2007-07-05 Dan Nicolaescu -2005-02-27 Luc Teirlinck + * vc-hooks.el (vc-handled-backends): Add HG. - * cus-edit.el: Comment change. - (custom-buffer-create-internal): Slightly reword text at top of - Custom buffers. Mention there that saving an option edits the - init file. Add link to Emacs manual node on `custom-file'. - (custom-magic-alist): Rewrite individual State messages to use - capitalized keywords. Doc fix. + * vc-hg.el (vc-handled-backends): Remove, done in vc-hooks.el now. -2005-02-27 Matt Hodges +2007-07-05 Stefan Monnier - * calendar/calendar.el (calendar-buffer): Move above - calendar-week-start-day. - (calendar-week-start-day): Doc fix. Add :set function. - (calendar-minimum-window-height): New variable. - (generate-calendar-window): Only resize window if selected-window - is displaying the calendar buffer. Use new variable - calendar-minimum-window-height. - (generate-calendar): Reword error message. - (calendar-mode-map): Bind DEL to scroll-other-window-down. + * complete.el (PC-do-complete-and-exit): Add support for the new + `confirm-only' confirmation mode. -2005-02-27 Andreas Schwab +2007-07-05 Chong Yidong - * vc.el (vc-do-command): Don't run command asynchronously when - operating in a remote directory. + * cus-edit.el (custom-commands): New variable. + (custom-tool-bar-map): New variable. Initialize using + `custom-commands'. + (custom-mode): Use `custom-tool-bar-map'. + (custom-buffer-create-internal): Insert action buttons only if + tool bar is not used. Use `custom-commands'. + (Custom-help, custom-command-apply): New function. + (custom-command-apply, Custom-set, Custom-save) + (Custom-reset-current, Custom-reset-saved, Custom-reset-standard): + Use `custom-command-apply' instead of duplicating code. + (customize-group-other-window): Call `customize-group' instead of + duplicating code. + (customize-face-other-window): Call `customize-face' instead of + duplicating code. + (customize-group, customize-face): Add optional args for opening + in another window. + (custom-variable-tag): Don't inherit `variable-pitch' face. + (custom-group-tag): Inherit `variable-pitch' face. + (custom-variable-value-create): Set documentation indentation. + (custom-group-value-create): Make group name a link, instead of + using an extra "go to group" button. + (custom-prompt-variable, custom-group-set, custom-group-save) + (custom-group-reset-current, custom-group-reset-saved) + (custom-group-reset-standard): Minor cleanup. - * net/tramp.el (tramp-file-name-for-operation): Fix misapplied - change from sync with Tramp 2.0.47. +2007-07-05 Thien-Thi Nguyen -2005-02-27 Richard M. Stallman + * Makefile.in (bootstrap-prepare): When copying from + ldefs-boot.el, make sure loaddefs.el is writeable. - * textmodes/ispell.el (ispell-change-dictionary): Doc fix. + (bootstrap-prepare): Make $(lisp)/ps-print.el + and $(lisp)/emacs-lisp/cl-loaddefs.el writable, as well. - * textmodes/flyspell.el (flyspell-mode-on): - Call ispell-change-dictionary only if necessary. +2007-07-05 Dan Nicolaescu - * emacs-lisp/re-builder.el (regexp-builder): New function. + * vc-hg.el (vc-hg-internal-status): Inline in `vc-hg-state', the + only caller, and delete. + (vc-hg-state): Deal with exceptions and only parse the output on + successful return. + (vc-hg-internal-log): Inline in `vc-hg-workfile-version', the only + caller, and delete. + (vc-hg-workfile-version): Deal with exceptions and only parse the + output on successful return. + (vc-hg-revert): New function. - * register.el (describe-register-1): Explicitly handle - yank-excluded-properties = t. +2007-07-04 Jay Belanger - * cus-edit.el (custom-buffer-create-internal): Improve progress msgs. - (custom-magic-alist): Change the status descriptions again. - (face widget-type): Total rewrite based on `restricted-sexp' - to eliminate the confusing double hiding levels. + * calculator.el (calculator-expt): Use more cases to determine + the value. - * emacs-lisp/debug.el (debug-on-entry-1): - If function body is empty, add nil as body form. +2007-07-03 Dan Nicolaescu -2005-02-26 Stefan Monnier + * progmodes/gud.el (auto-mode-alist): Match more valid gdb init + file names. - * emacs-lisp/trace.el (inhibit-trace): New var. - (trace-make-advice): Use it. +2007-07-03 Jay Belanger - * emacs-lisp/debug.el (debug): Put back the inhibit-trace. + * calculator.el (calculator-expt, calculator-integer-p): + New functions. + (calculator-fact): Check to see if the factorial will be too + large before computing it. + (calculator-initial-operators): Use `calculator-expt' to + compute "^". + (calculator-mode): Mention that results which are too large + will return inf. + * calc/calc-comb.el (math-small-factorial-table): Replace list + by vector. + +2007-07-03 David Kastrup + + * shell.el: On request of the authors, remove their addresses for + the sake of bug reports, and add the developer list address as + maintainer information. + +2007-07-03 Richard Stallman + + * files.el (make-directory): Doc fix. + (find-file-confirm-inexistent-file): Make it a defcustom. + Make nil the default. + +2007-07-02 Richard Stallman + + * startup.el (command-line): Set buffer-offer-save in *scratch* + and enable auto-save in it. + +2007-07-02 Carsten Dominik + + * textmodes/org.el (orgstruct-mode-map): New variable. + (orgstruct-mode): New minor mode. + (turn-on-orgstruct, orgstruct-error, orgstruct-setup) + (orgstruct-make-binding, org-context-p, org-get-local-variables) + (org-run-like-in-org-mode): New functions. + (org-cycle-list-bullet): New command. + (org-special-properties, org-property-start-re) + (org-property-end-re): New constants. + (org-with-point-at): New macro. + (org-get-property-block, org-entry-properties, org-entry-get) + (org-entry-delete, org-entry-get-with-inheritance) + (org-entry-put, org-buffer-property-keys): New functions. + (org-insert-property-drawer): New command. + (org-entry-property-inherited-from): New variable. + (org-column): New face. + (org-column-overlays, org-current-columns-fmt) + (org-current-columns-maxwidths, org-column-map): New variables. + (org-column-menu): New menu. + (org-new-column-overlay, org-overlay-columns) + (org-overlay-columns-title, org-remove-column-overlays) + (org-column-show-value, org-column-quit, org-column-edit): New + functions. + (org-columns, org-agenda-columns): New commands. + (org-get-columns-autowidth-alist): New functions. + (org-properties): New customize group. + (org-default-columns-format): New option. + (org-priority): Realign tags after changing priority. + (org-preserve-lc): New macro. + (org-update-checkbox-count): Catch case when there is no headline. + (org-agenda-quit): Remove any column overlays. + (org-beginning-of-item-list): Fixed bug when non-item line is + indented too deep. + (org-cached-props): New variable. + (org-cached-entry-get): New function. + (org-make-tags-matcher): Handle property matches. + (org-table-recalculate): Swap evaluation order: Field formula + first, then column formulas, but don't allow them to overwrite the + field formulas. + (org-table-eval-formula): New argument untouchable. + (org-table-put-field-property): New function. -2005-02-26 Kim F. Storm +2007-07-02 Martin Rudalics - * mouse.el (mouse-1-click-in-non-selected-windows): New defcustom. - (mouse-on-link-p, mouse-drag-region-1): Use it. + * help-mode.el (help-make-xrefs): Skip spaces too when + skipping tabs. -2005-02-25 Lute Kamstra + * ffap.el (dired-at-point-prompter): Improve prompt in + list-directory case. - * replace.el (query-replace-read-from): Fix 2005-02-19 change. +2007-07-01 Richard Stallman -2005-02-24 Luc Teirlinck + * files.el (find-file-visit-truename): Fix safe-local-variable value. - * frame.el (blink-cursor-mode): Add :group keyword. +2007-07-01 Richard Stallman -2005-02-24 Ulf Jasper + * cus-start.el (max-mini-window-height): Added. - * calendar/icalendar.el (icalendar--decode-isodatetime): - New optional argument DAY-SHIFT. - (icalendar-export-region): Fix coding-system-for-write. - (icalendar--convert-ical-to-diary): Shift end-day of all-day - events by one. +2007-07-01 Sean O'Rourke (tiny change) -2005-02-24 Stefan Monnier + * complete.el (partial-completion-mode): Remove advice of + read-file-name-internal. + (PC-do-completion): Rebind minibuffer-completion-table. + (PC-read-file-name-internal): New function doing what + read-file-name-internal advice did. - * textmodes/tex-mode.el (tex-font-lock-keywords-3): #n is atomic. +2007-07-01 Paul Pogonyshev -2005-02-24 Kim F. Storm + * emacs-lisp/byte-opt.el: Set `binding-is-magic' + property on a few symbols. + (byte-compile-side-effect-free-dynamically-safe-ops): New defconst. + (byte-optimize-lapcode): Remove bindings that are not referenced + and certainly will not effect through dynamic scoping. - * international/iso-acc.el (iso-accents-compose): Fix crash - during redisplay. Call force-window-update after read-event - and delete-region to signal that window is not accurate. +2007-07-01 Stefan Monnier -2005-02-23 Stefan Monnier + * files.el (find-file-confirm-inexistent-file): New var. + (find-file, find-file-other-window, find-file-other-frame) + (find-file-read-only, find-file-read-only-other-window) + (find-file-read-only-other-frame): Use it. - * emacs-lisp/debug.el (debug): Hide the buffer if it's not killed. - Remove unused and inexistent var `inhibit-trace'. - (debugger-mode): Use run-mode-hooks. - (debugger-list-functions): Add buttons; setup xref stack. +2007-06-30 Stefan Monnier -2005-02-23 Richard M. Stallman + * emacs-lisp/rx.el (rx-constituents): Fix up `anything'. - * calendar/appt.el (appt-time-msg-list): 3rd elt of each - appointment says it was explicitly made. - (appt-add): Set the 3rd element. - (appt-make-list): Preserve explicit appointments. +2007-06-29 Juanma Barranquero - * subr.el (find-tag-default): Catch errors in forward-sexp. + * generic-x.el (generic-define-mswindows-modes) + (generic-define-unix-modes, apache-log-generic-mode) + (bat-generic-mode-keymap, java-manifest-generic-mode) + (show-tabs-generic-mode): Fix typos in docstrings. -2005-02-23 Juri Linkov +2007-06-29 Ryan Yeske - * info.el (Info-isearch-search): New defcustom. - (Info-isearch-search): Call the default isearch function - when Info-isearch-search is nil. - (Info-isearch-wrap): Use variable Info-isearch-search. + * net/rcirc.el (rcirc-server-alist): Rename from rcirc-connections. + (rcirc-default-full-name): Rename from rcirc-default-user-full-name. + (rcirc-clear-activity): Make sure RCIRC-ACTIVITY isn't modified. + (rcirc-print): Never ignore messages from ourself. -2005-02-22 Luc Teirlinck +2007-06-29 Stefan Monnier - * cus-edit.el: Comment change. + * font-lock.el (lisp-font-lock-keywords-2): Recognize the new \(?1:..\) + syntax as well. Reported by Juri Linkov . -2005-02-22 Kim F. Storm +2007-06-28 Jan Dj,Ad(Brv - * progmodes/hideif.el (hide-ifdef-use-define-alist): - Use completing-read. Suggested by Juan-Leon Lahoz Garcia. + * dnd.el (dnd-get-local-file-name): Set fixcase to t in call to + replace-regexp-in-string. -2005-02-22 Simon Josefsson +2007-06-28 Stefan Monnier - * net/browse-url.el (browse-url-netscape-new-window-is-tab): - New variable. - (browse-url-netscape): Use it. Suggested by "Johann 'Myrkraverk' - Oskarsson" . + * emacs-lisp/cl.el: Set edebug and indentation before loading + cl-loaddefs.el so that its use of dolist doesn't load cl-macs. -2005-02-22 Kim F. Storm +2007-06-28 Andreas Schwab - * mouse.el (mouse-on-link-p): If arg POS is a mouse event, - check that window of that event is the selected window. - (mouse-drag-region-1): Compare mouse event window to selected - window before setting point. + * Makefile.in ($(lisp)/mh-e/mh-loaddefs.el): Depend on + $(lisp)/subdirs.el. - * tooltip.el (tooltip-show-help-function): Pass event to - mouse-on-link-p so it can check selected window. +2007-06-28 Juanma Barranquero -2005-02-22 Kenichi Handa + * speedbar.el (speedbar-handle-delete-frame): Don't try to delete + the speedbar frame if nil; that deletes the current frame or + causes an error if it is the only frame. + Reported by Angelo Graziosi . - * ps-mule.el (ps-mule-header-string-charsets): Delete it. - (ps-mule-show-warning): New function. - (ps-mule-begin-job): Use ps-mule-show-warning if unprintable - characters are found. +2007-06-28 Kevin Ryde - * ps-print.el (ps-header-footer-string): Return a list of header - and footer strings. + * textmodes/nroff-mode.el: Groff \# comments. + (nroff-mode-syntax-table): \# comment intro, + plain # as punct per global table. + (nroff-font-lock-keywords): Add # as a single char escape. + (nroff-mode): In comment-start-skip, match \#. -2005-02-21 Wolfgang Jenkner (tiny change) +2007-06-28 Stefan Monnier - * pcvs.el (cvs-retrieve-revision): Fix thinko. + * vc-bzr.el (vc-functions): Clear up the cache when reloading the file. + (vc-bzr-workfile-version, vc-bzr-could-register): Don't hardcode + point-min == 1. -2005-02-21 Stefan Monnier +2007-06-28 Nick Roberts - * frame.el (blink-cursor-mode): Use define-minor-mode. + * pcvs-util.el (cvs-strings->string, cvs-string->strings): + Rename and move to... - * term/mac-win.el (function-key-map): Use char-names more consistently. - (file-name-coding-system): Only set it for MacOS-9. The other case is - already handled in mule-cmds.el (where it also works when mac-win.el - is not used). + * subr.el (strings->string, string->strings): ...here. -2005-02-21 Kenichi Handa + * pcvs.el (cvs-reread-cvsrc, cvs-header-msg, cvs-checkout) + (cvs-mode-checkout, cvs-execute-single-file): Use new function names. - * international/mule.el (ctext-pre-write-conversion): Always use - " *code-converting-work*" buffer for work. + * progmodes/gud.el (gud-common-init): Call string->strings instead + of split-string. - * textmodes/ispell.el (ispell-dictionary-alist): Fix docstring. +2007-06-27 Michael Albinus -2005-02-20 Thien-Thi Nguyen + * dired-aux.el: Remove `dired-call-process'. + (dired-check-process): Call `process-file'. - * progmodes/scheme.el (scheme-font-lock-keywords-2): Handle named-let. + * wdired.el (wdired-do-perm-changes): Call `process-file'. -2005-02-20 Jonathan Yavner + * net/ange-ftp.el (ange-ftp-dired-call-process): Reimplement it as + `ange-ftp-process-file'. - * ses.el (undo-more): Restore defadvice, but only the part that - allows changes outside the restricted area of the buffer. +2007-06-27 Stefan Monnier -2005-02-20 Kim F. Storm + * emacs-lisp/cl.el: Use cl-loaddefs.el rather than manual autoloads. - * simple.el (line-move): Add fourth optional arg try-vscroll which - must be set to perform auto-window-vscroll. - When moving backwards and doing auto-window-vscroll, automatically - vscroll to the last part of lines which are taller than the window. - (next-line, previous-line): Set try-vscroll arg on line-move. + * emacs-lisp/cl-extra.el: + * emacs-lisp/cl-seq.el: + * emacs-lisp/cl-macs.el: Set generated-autoload-file to cl-loaddefs.el. + Add autoload cookies on all defs autoloaded manually in cl.el. -2005-02-19 Dan Nicolaescu + * emacs-lisp/cl-loaddefs.el: New file. - * replace.el (query-replace, query-replace-regexp) - (replace-string, replace-regexp): When operating on region, make - the minibuffer prompt say so. + * textmodes/texinfmt.el (texinfo-raisesections-alist) + (texinfo-lowersections-alist): Merge definition and declaration. + (texinfo-start-of-header, texinfo-end-of-header): Remove. + (texinfo-format-syntax-table): Merge init into declaration. + (texinfo-format-parse-line-args, texinfo-format-parse-args) + (texinfo-format-parse-defun-args, texinfo-format-node) + (texinfo-push-stack, texinfo-multitable-widths) + (texinfo-define-info-enclosure, texinfo-alias) + (texinfo-format-defindex, batch-texinfo-format): Use push. + (texinfo-footnote-number): Remove duplicate declaration. - * isearch.el (isearch-forward): Document isearch-query-replace and - isearch-query-replace-regexp keybindings. + * ps-print.el: Update with auto-generated autoloads. -2005-02-19 Jay Belanger + * ps-mule.el: Set generated-autoload-file to "ps-print.el". - * calc/calc-aent.el (math-read-token): Add local variable. +2007-06-26 Stefan Monnier - * calc/calc-prog.el (calc-user-define-edit): Add local variable. - (calc-edit-top): Move declaration to earlier in file. - (calc-edit-macro-repeats): Add local variables. + * emacs-lisp/autoload.el (autoload-generated-file): Interpret names + relative to current dir for file-local settings. + (autoload-generate-file-autoloads): Add `outfile' arg. + (update-directory-autoloads): Use it to directly call + autoload-generate-file-autoloads instead of going through + update-file-autoloads so we avoid redundant searches and so we can know + the set of buffers changed so we can save them all. - * calc/calcalg2.el: Add differentiation rule for calcFunc-coth. - Adjust differentiation rules for calcFunc-tan, calcFunc-cot, - calcFunc-tanh. - Adjust integration rule for calcFunc-tan. + * emacs-lisp/autoload.el (autoload-find-destination): Return nil + rather than throwing `up-to-date'. + (autoload-generate-file-autoloads): Adjust correspondingly. + (update-file-autoloads): Be careful to let-bind + autoload-modified-buffers and adjust to new calling conventions. + (autoload-modified-buffers): Make it a dynamically scoped var. + (update-directory-autoloads): Use file-relative-name instead of + autoload-trim-file-name. + (autoload-insert-section-header): Don't use autoload-trim-file-name + since the file is already relative now. + (autoload-trim-file-name): Remove. -2005-02-19 Michael Kifer + * vc-arch.el (vc-arch-add-tagline): Do a slightly cleaner job. + (vc-arch-complete, vc-arch--version-completion-table) + (vc-arch-revision-completion-table): New functions to provide + completion of revision names. + (vc-arch-trim-find-least-useful-rev, vc-arch-trim-make-sentinel) + (vc-arch-trim-one-revlib, vc-arch-trim-revlib): New functions + to let the user trim the revlib. - * viper-cmd.el (viper-prefix-commands): Make into a defconst. - (viper-exec-buffer-search): Use regexp-quote to quote buffer string. - (viper-minibuffer-setup-sentinel): Make some variables buffer-local. - (viper-skip-separators): Bug fix. - (viper-set-searchstyle-toggling-macros): Allow to unset macros in a - particular major mode. - (viper-del-backward-char-in-replace): Don't put deleted char on the - kill ring. + * vc.el: Add new VC operation `revision-completion-table'. + (vc-default-revision-completion-table): New function. + (vc-version-diff, vc-version-other-window): Use it to provide + completion of revision names if the backend provides it. - * viper-ex.el (viper-color-display-p): New function. - (viper-has-face-support-p): Use viper-color-display-p. + * log-edit.el (log-edit-changelog-entries): Use with-current-buffer. - * viper-keym.el (viper-gnus-modifier-map): New keymap. + * vc-svn.el (vc-svn-repository-hostname): Adjust to non-XML format + of newer .svn/entries. - * viper-macs.el (viper-unrecord-kbd-macro): Bug fix. +2007-06-25 David Kastrup - * viper-util.el (viper-glob-unix-files): Fix shell status check. - (viper-file-remote-p): Make equivalent to file-remote-p. + * calc/calc-poly.el (math-padded-polynomial) + (math-partial-fractions): Add some function comments. - * viper.el (viper-major-mode-modifier-list): - Use viper-gnus-modifier-map. +2007-06-25 Stefan Monnier -2005-02-19 David Kastrup + * emacs-lisp/autoload.el (autoload-generate-file-autoloads): + Make `outbuf' optional. + (update-file-autoloads): Use it. - * subr.el (subregexp-context-p): Fix garbled doc string by adding - quoting. +2007-06-25 Stefan Monnier -2005-02-19 Jay Belanger + * emacs-lisp/autoload.el (autoload-modified-buffers): New var. + (autoload-find-destination): Keep it uptodate. + (autoload-save-buffers): New fun. + (update-file-autoloads): Use it. Re-add the "up to date" message. - * calc/calc-math.el (calc-arctan, calc-tanh, calc-arctanh): - Remove extra definitions. - (calc-coth): New function. - (calcFunc-cot): Fix `let'. + * emacs-lisp/autoload.el: Refactor for upcoming changes. + (autoload-find-destination): New function extracted from + update-file-autoloads. + (update-file-autoloads): Use it. + (autoload-generate-file-autoloads): New function extracted from + generate-file-autoloads. Use file-relative-name. Delay computation of + output-start to the first cookie. Remove done-any, replaced by + output-start. + (generate-file-autoloads): Use it. -2005-02-19 Eli Zaretskii +2007-06-24 Jay Belanger - * faces.el (escape-glyph, minibuffer-prompt): Add commentary for - the reasons we use "type pc" in these faces. + * calc/calc-comb.el (math-init-random-base, math-prime-test): + Use math-read-number-simple to insert constants. + (math-prime-test): Redo calculation of sum. - * button.el (button): Ditto. + * calc/calc-misc.el (math-div2-bignum): Use math-bignum-digit-size. -2005-02-19 Michael Mauger + * calc/calc-math.el (math-scale-bignum-digit-size): Rename from + math-scale-bignum-3. + (math-isqrt-bignum): Use math-scale-bignum-digit-size and + math-bignum-digit-size. + (math-isqrt-small): Add another possible initial guess. - * replace.el (query-replace-read-from): Set the value of - query-replace-from-history-variable to handle the case of an empty - string entered to accept the suggested default. +2007-06-23 Roland Winkler - * net/tramp.el (tramp-file-name-for-operation): - Use dired-call-process instead of dired-call-process-command. + * textmodes/bibtex.el (bibtex-entry-format): New options + `whitespace', `braces', and `string'. + (bibtex-field-braces-alist, bibtex-field-strings-alist) + (bibtex-field-braces-opt, bibtex-field-strings-opt) + (bibtex-cite-matcher-alist): New variables. + (bibtex-font-lock-keywords): Use bibtex-cite-matcher-alist. + (bibtex-flash-head): Use blink-matching-delay. + (bibtex-insert-kill, bibtex-mark-entry): Use push-mark. + (bibtex-format-entry, bibtex-reformat): Handle new options of + bibtex-entry-format. + (bibtex-field-re-init, bibtex-font-lock-cite, bibtex-dist): + New functions. + (bibtex-complete-internal): Do not display messages while + minibuffer is used. Do not leave around a completions buffer + that is out of date. + (bibtex-copy-summary-as-kill): New optional arg. + (bibtex-font-lock-url): New optional arg no-button. + (bibtex-find-crossref): Use `bibtex-cite-matcher-alist'. + (bibtex-url): Allow multiple URLs per entry. + +2007-06-23 Stefan Monnier + + * emacs-lisp/autoload.el (autoload-generated-file): New function. + (update-file-autoloads, update-directory-autoloads): Use it. + (autoload-file-load-name): New function. + (generate-file-autoloads, update-file-autoloads): Use it. + (autoload-find-file): Accept non-absolute argument. Set default-dir. + (generate-file-autoloads): If the autoloaded form is malformed, + indicate the problem with a warning instead of aborting. -2005-02-19 Jay Belanger +2007-06-23 Thien-Thi Nguyen - * calc/calc-arith.el (math-trig-inverses, math-div-trig) - (math-div-non-trig): New variables. - (math-combine-prod-trig, math-div-new-trig, math-div-new-non-trig) - (math-div-isolate-trig, math-div-isolate-trig-term): New functions. - (math-combine-prod, math-div-symb-fancy): Add simplifications for - trig expressions. + * simple.el (next-error-recenter): Accept `(4)' as well; + also, specify `integer' instead of `number'. -2005-02-19 Nick Roberts +2007-06-23 Eli Zaretskii - * progmodes/gdb-ui.el (gdb-var-update-handler) - (gdb-speedbar-timer-fn): Ensure speedbar updates with new values - for watch expressions, - (gdb-var-create-handler): Don't set speedbar-update-flag. - (gdb-post-prompt): Simplify test for speedbar. + * ls-lisp.el (insert-directory): If an invalid regexp error is + thrown, try using FILE as a literal file name, not a wildcard. -2005-02-19 Michael Kifer +2007-06-23 Juanma Barranquero - * ediff.el (ediff-set-diff-overlays-in-one-buffer) - (ediff-set-fine-overlays-in-one-buffer, ediff-goto-word): Make sure - we use the syntax table of the correct buffer. - (ediff-same-file-contents, ediff-same-contents): Enhancements thanks to - Felix Gatzemeier. + * ruler-mode.el (ruler-mode): Prevent clobbering the original + `header-line-format' when reentering ruler mode. - * ediff-init.el (ediff-hide-face): Check for definedness of functions. - (ediff-file-remote-p): Make synonymous with file-remote-p. - In all deffaces ediff-*-face-*, use min-colors. +2007-06-23 Eli Zaretskii - * ediff-mult.el (ediff-meta-mark-equal-files): Make use of - ediff-recurse-to-subdirectories. - (ediff-mark-if-equal): Check that the arguments are strings, use - ediff-same-contents (after to Felix Gatzemeier). + * ls-lisp.el (insert-directory): Don't treat FILE as a wildcard if + FILE exists as a file. - * ediff.el (ediff-merge-on-startup): Don't set buffer-modified-p to - nil. +2007-06-22 Jay Belanger -2005-02-18 Stefan Monnier + * calc/calc.el (math-bignum-digit-length) + (math-bignum-digit-size, math-small-integer-size): + New constants. + (math-normalize, math-bignum-big, math-make-float) + (math-div10-bignum, math-scale-left, math-scale-left-bignum) + (math-scale-right, math-scale-right-bignum, math-scale-rounding) + (math-add, math-add-bignum, math-sub-bignum, math-sub, math-mul) + (math-mul-bignum, math-mul-bignum-digit, math-idivmod) + (math-quotient, math-div-bignum, math-div-bignum-digit) + (math-div-bignum-part, math-format-bignum-decimal) + (math-read-bignum): Use math-bignum-digit-length, + math-bignum-digit-size and math-small-integer-size. - * log-view.el (log-view-message-re): Fix up Subversion regexp. + * calc/calc-ext.el (math-fixnum-big): Use the variable + math-bignum-digit-size. -2005-02-18 David Kastrup +2007-06-23 Dan Nicolaescu - * progmodes/meta-mode.el (meta-mark-active): Fix condition to just - use `mark-active' when defined. + * log-view.el (log-view-mode-menu): New menu. -2005-02-18 Kenichi Handa +2007-06-22 Stefan Monnier - * ps-print.el (ps-font-info-database): New entry - ZapfChancery-MediumItalic with correct font name. Fix font name - of the entry Zapf-Chancery-MediumItalic. + * diff-mode.el (diff-font-lock-keywords): Fix M. Kifer's last change + differently. -2005-02-16 Luc Teirlinck + * vc-hg.el (vc-hg-registered): Add an autoloaded version. + (vc-hg-log-view-mode): Use log-view-font-lock-keywords. - * autorevert.el (auto-revert-stop-on-user-input): Further doc fix. +2007-06-22 Dan Nicolaescu -2005-02-16 Kim F. Storm + * vc-hg.el (vc-hg-print-log): Insert the file name. + (vc-hg-log-view-mode): Fontify the file name. - * ido.el (ido-fallback-command): Pass user input to fallback command. +2007-06-22 Jay Belanger -2005-02-16 Nick Roberts + * calc/calc-forms.el (math-format-date-part, calc-parse-standard-date) + (calcFunc-julian): Fix incorrect number used in calculations. - * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers) - (gdb-find-file-hook): Add server prefix. +2007-06-22 Thien-Thi Nguyen -2005-02-16 Richard M. Stallman + * simple.el (next-error-recenter): New defcustom. + (next-error, next-error-internal): Recenter if specified, + immediately prior to running `next-error-hook'. - * replace.el (perform-replace): Pass new args to replace-highlight. - (replace-highlight): Take region args, - and pass them to isearch-lazy-highlight-new-loop. + * progmodes/hideshow.el (hs-show-block): Use line-end-position. + (hs-hide-block-at-point, hs-hide-comment-region): Likewise. - * novice.el (disabled-command-hook): Autoload the defalias - and the make-obsolete-variable call. + * progmodes/hideshow.el (hs-hide-all): Use progress reporter. - * menu-bar.el (menu-bar-select-frame): FRAME defaults to selected. +2007-06-22 Jay Belanger - * isearch.el (isearch-lazy-highlight-start-limit) - (isearch-lazy-highlight-end-limit): New variables limit - the region for highlighting. - (isearch-lazy-highlight-new-loop): New args BEG and END. - (isearch-lazy-highlight-search): Use the new vars. - (isearch-lazy-highlight-update): Likewise. + * calc/calc-comb.el (math-small-factorial-table): New variable. + (calcFunc-fact): Use `math-small-factorial-table'. - * dired.el (dired-build-subdir-alist): Bind buffer-undo-list to t. + * calc/calc-ext.el (math-defcache): Allow forms to evaluate + initial values. + (math-approx-pi, math-approx-sqrt-e, math-approx-gamma-const): + New variables to use in caches. - * cus-start.el (all): Use default-boundp. + * calc/calc-forms.el (math-format-date-part, math-parse-standard-date) + (calcFunc-julian): Use `math-read-number-simple' to insert bignums. -2005-02-15 David Casperson (tiny change) + * calc/calc-func.el (math-besJ0, math-besJ1, math-besY0, math-besY1) + (math-bernoulli-b-cache): Use math-read-number-simple to insert + bignums. - * menu-bar.el (menu-bar-select-frame): Handle current frame. + * calc/calc-math.el (math-approx-ln-10, math-approx-ln-2): + New variables to use in caches. -2005-02-15 Luc Teirlinck +2007-06-22 Dan Nicolaescu - * autorevert.el (auto-revert-stop-on-user-input) - (auto-revert-verbose): Doc fixes. + * vc-bzr.el (vc-bzr-log-view-mode): Add + to the email address regexp. -2005-02-15 Benjamin Riefenstahl + * vc-hg.el (vc-hg-log-view-mode): New mode. - * international/mule-cmds.el (set-locale-environment): Remove call - to set-selection-coding-system on Windows. +2007-06-21 Jay Belanger -2005-02-15 Jay Belanger + * calc/calc.el (math-read-number-simple): New function. - * calc/calc-alg.el: Add simplification rules for calcFunc-sec, - calcFunc-csc, calcFunc-cot, calcFunc-sech, calcFunc-csch, and - calcFunc-coth. - (math-simplify-sqrt): Add simplifications. +2007-06-21 Stefan Monnier - * calc/calc-arith.el (math-real-if-arg-functions): Add functions - to list. + * vera-mode.el (vera-mode): Fix `commend-end-skip' setting. + (vera-font-lock-match-item): Fix doc string. + (vera-in-comment-p): Remove unused function. + (vera-skip-forward-literal, vera-skip-backward-literal): Improve code, + use `syntax-ppss'. + (vera-forward-syntactic-ws): Fix argument order. + (vera-prepare-search): Use `with-syntax-table'. + (vera-indent-line): Fix doc string. + (vera-electric-tab): Fix doc string. + (vera-expand-abbrev): Define alias instead of using `fset'. + (vera-comment-uncomment-region): Use `comment-start-skip'. - * calc/calc-ext.el: Add functions to autoloads. +2007-06-21 Carsten Dominik - * calc/calc-math.el (calc-sec, calc-csc, calc-cot, calc-sech) - (calc-csch, calc-coth, calcFunc-sec, calcFunc-csc, calcFunc-cot) - (calcFunc-sech, calcFunc-csch, calcFunc-coth, math-sec-raw) - (math-csc-raw, math-cot-raw): New functions. + * textmodes/org.el (org-export-with-footnotes): New option. + (org-export-as-html): Fix replacement bug for XEmacs. + (org-agenda-default-appointment-duration): New option. - * calc/calc-rules.el (calc-DistribRules, calc-NegateRules): Add rules. +2007-06-21 Dan Nicolaescu - * calc/calc-undo.el (calc-handle-undo): Remove prefix from - the variable name in a message. + * vc-hg.el: Add to do items. + (vc-hg-diff): Add support for comparing different revisions. + (vc-hg-diff, vc-hg-annotate-command, vc-hg-annotate-time) + (vc-hg-annotate-extract-revision-at-line) + (vc-hg-previous-version, vc-hg-checkin): New functions. + (vc-hg-annotate-re): New constant. - * calc/calc-units.el: Add simplification rules for calcFunc-sec, - calcFunc-csc, calcFunc-cot. +2007-06-20 Jay Belanger - * calc/calcalg2.el: Add derivative and integration rules for - calcFunc-sec, calcFunc-csc, calcFunc-cot, calcFunc-sech, - calcFunc-csch, calcFunc-coth. - (math-do-integral-methods): Add to checks for when to use - substitutions. + * calc/calc.el (math-standard-ops): Fix precedence of multiplication. - * calc/calccomp.el (math-eqn-special-funcs): Add functions to list. +2007-06-20 Stefan Monnier -2005-02-15 Lute Kamstra + * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the + buffer-local value of log-view-*-re if applicable. + + * vc-bzr.el (vc-bzr-dir-state): Use setq rather than set. + Use vc-bzr-command rather than the ill defined vc-bzr-command*. + (vc-bzr-command*): Remove both (incompatible) versions. + (vc-bzr-do-command*): Remove. + (vc-bzr-with-process-environment, vc-bzr-std-process-invocation): + Remove by folding into its only caller vc-bzr-command. + (vc-bzr-command): Always set the environment, even when ineffective. + (vc-bzr-version): Minor fix up. + (vc-bzr-admin-dirname): New var. + (vc-bzr-bzr-dir): Remove. + (vc-bzr-root-dir): New fun. + (vc-bzr-registered): Use it. Add an autoloaded version. + (vc-bzr-responsible-p): Use vc-bzr-root-dir as well. + (vc-bzr-view-log-function): Remove. + (vc-bzr-log-view-mode): New major mode to replace it. + (vc-bzr-print-log): Only activate the old hack if needed. - * emacs-lisp/lisp-mode.el (lisp-mode-variables): - Add ;;;###autoload to `outline-regexp'. Suggested by Stefan Monnier - . - (lisp-outline-level): Improve efficiency. Suggested by David - Kastrup . + * vc.el (vc-default-log-view-mode): New function. + (vc-print-log): Add new `log-view-mode' VC operation. -2005-02-15 Nick Roberts +2007-06-20 Juanma Barranquero - * progmodes/gdb-ui.el (gdb-find-file-unhook): New variable. - (gdb-set-gud-minor-mode, gdb-set-gud-minor-mode-1) - (gdb-set-gud-minor-mode-existing-buffers): New functions. - (gdb-find-file-hook): New hook. Add it to find-file-hook. - (gdb-info-breakpoints-custom, gdb-source-info): Simplify. + * ido.el (ido-find-file-in-dir): Don't signal an error for + empty directories. -2005-02-14 Luc Teirlinck + * add-log.el (change-log-mode): Set `show-trailing-whitespace'. - * cus-start.el (all): Comment change. + * desktop.el (desktop-read): Run `desktop-not-loaded-hook' in the + directory where the desktop file was found, as the docstring says. + (desktop-kill): Use `read-directory-name'. -2005-02-14 Lute Kamstra +2007-06-20 Alan Mackenzie - * cus-start.el (all): Check if symbol is void. + * progmodes/cc-mode.el (c-remove-any-local-eval-or-mode-variables): + When removing lines, also remove the \n. Correction of patch of + 2007-04-21. -2005-02-14 Carsten Dominik +2007-06-20 Martin Rudalics - * textmodes/reftex-cite.el (reftex-do-citation): Cleanup single - optional argument to \cite. + * mouse.el (mouse-drag-mode-line-1): Quit mouse tracking when + event is not a cons cell. Do not unread drag-mouse-1 events. + Select right window in check whether space was stolen from + window above. -2005-02-14 Richard M. Stallman + * help-mode.el (help-make-xrefs): Adjust position of new forward + button. - * cus-edit.el (custom-buffer-create-internal): Update help message. - (custom-magic-alist): Update help messages. +2007-06-20 Riccardo Murri - * cus-start.el (all): Allow a var to specify a standard value. + * vc-bzr.el (vc-bzr-with-process-environment) + (vc-bzr-std-process-invocation): New macros. + (vc-bzr-command, vc-bzr-command*): Use them. + (vc-bzr-with-c-locale): Remove. + (vc-bzr-dir-state): Replace its use with vc-bzr-command. + (vc-bzr-buffer-nonblank-p): New function. + (vc-bzr-state-words): New const. + (vc-bzr-state): Look for `bzr status` keywords in output. + Display everything else as a warning message to the user. + Fix status report with bzr >= 0.15. -2005-02-12 Luc Teirlinck +2007-06-20 Dan Nicolaescu - * custom.el (custom-theme-set-variables): Handle variable aliases. + * vc-hg.el (vc-hg-global-switches): Simplify. + (vc-hg-state): Handle more states. + (vc-hg-diff): Fix doc-string. + (vc-hg-register): New function. + (vc-hg-checkout): Likewise. - * frame.el (blink-cursor-timer): Doc fix. - (blink-cursor): Make it an alias for `blink-cursor-mode' and - declare obsolete. - (blink-cursor-mode): Define with defcustom and use correct - standard expression in that defcustom. - * startup.el (command-line): Adapt to above changes in frame.el. +2007-06-20 Reto Zimmermann -2005-02-11 Lute Kamstra + * progmodes/vera-mode.el: New file. - * apropos.el (apropos-score-doc): Prevent division by zero. +2007-06-19 Jay Belanger -2005-02-11 Ulf Jasper + * calc/calc.el (calc-multiplication-has-precendence): + New variable. + (math-standard-ops, math-standard-ops-p, math-expr-ops): + New functions. + (math-expr-opers): Define using math-standard-ops rather than + math-standard-opers. + * calc/calc-aent.el (calc-do-calc-eval): Let math-expr-opers + equal the function math-standard-ops rather than the variable + math-standard-opers. + (calc-algebraic-entry): Let math-expr-opers equal + math-standard-ops or math-expr-ops, as appropriate. + (math-expr-read-level, math-read-factor): Let math-expr-opers + equal math-expr-ops. + * calc/calc-embed.el (calc-embedded-finish-edit): + Let math-expr-opers equal the function math-standard-ops + rather than the variable math-standard-opers. + * calc/calc-ext.el (math-read-plain-expr) + (math-format-flat-expr-fancy): Let math-expr-opers equal the + function math-standard-ops rather than the variable + math-standard-opers. + * calc/calc-lang.el (calc-set-language, math-read-big-rec): + Let math-expr-opers equal the function math-standard-ops rather + than the variable math-standard-opers. + * calc/calc-prog.el (calc-read-parse-table): Let math-expr-opers + equal the function math-standard-ops rather than the variable + math-standard-opers. + * calc/calc-yank.el (calc-finish-stack-edit): Let math-expr-opers + equal the function math-standard-ops rather than the variable + math-standard-opers. + * calc/calccomp.el (math-compose-expr): Let math-expr-opers equal + math-expr-ops. + +2007-06-19 Ivan Kanis - * calendar/icalendar.el (icalendar--get-event-property): Doc fix. - (icalendar--get-event-property-attributes) - (icalendar--get-event-properties) - (icalendar--datetime-to-diary-date): New functions. - (icalendar--split-value): Doc fix. - (icalendar--datetime-to-noneuropean-date) - (icalendar--datetime-to-european-date): New optional argument - SEPARATOR. Return result as a string instead of a list. - (icalendar--get-weekday-number): Check if ABBREVWEEKDAY is nil. - (icalendar--convert-string-for-export): Rename arg S to STRING. - (icalendar-export-region): Doc fix. Change name of error buffer. - Save output buffer. - (icalendar-import-file): Add blank at end of prompt. - (icalendar-import-buffer): Doc fix. Do not switch to error - buffer. Indicate status in return value. - (icalendar--convert-ical-to-diary): Doc fix. Change name of error - buffer. Save output buffer. Handle exception from recurrence - rules (EXDATE, EXRULE). Handle start- and end-date of recurring - events. Fix problems with weekly all-day events. + * vc-hg.el: New file. -2005-02-10 Richard M. Stallman +2007-06-18 Stefan Monnier - * simple.el (eval-expression-print-format): - Avoid warning about edebug-active. + * progmodes/sh-script.el (sh-font-lock-paren): Mark the relevant text + with font-lock-multiline. - * help.el (help-for-help-internal): Rename from help-for-help. - (help-for-help): Define with defalias. +2007-06-17 Glenn Morris - * font-core.el (font-lock-default-function): Use with-no-warnings. + * lpr.el (lpr-page-header-switches): Move %s to separate element + for correct quoting. Doc fix. - * cus-edit.el (custom-buffer-create-internal): Improve help-echo. +2007-06-17 Stefan Monnier - * custom.el (defface): Doc fix. + * textmodes/sgml-mode.el (sgml-xml-guess): Return the result rather + than setting sgml-xml-mode. + (sgml-mode, html-mode): Set sgml-xml-mode. + (sgml-skip-tag-backward): Tell if we skipped over matched tags. + (sgml-skip-tag-backward, sgml-electric-tag-pair-overlays): New var. + (sgml-electric-tag-pair-before-change-function) + (sgml-electric-tag-pair-flush-overlays): New functions. + (sgml-electric-tag-pair-mode): New minor mode. + (sgml-font-lock-keywords-2, sgml-get-context, sgml-unclosed-tag-p) + (sgml-calculate-indent): Use assoc-string. + +2007-06-16 Karl Fogel + + * thingatpt.el (thing-at-point-email-regexp): Don't require two + chars before the "@" in an email address. Andreas Roehler noticed + this problem. + +2007-06-15 Karl Fogel + + * thingatpt.el: Add support for email addresses (`email'). + (thing-at-point, bounds-of-thing-at-point): Document `email' support. + (thing-at-point-email-regexp): New variable. + (`email'): Put `bounds-of-thing-at-point' and `thing-at-point' + properties on this symbol, with lambda forms for values. + +2007-06-15 Masatake YAMATO + + * vc-bzr.el (vc-bzr-root): Cache the output of shell command execution. + + * vc.el (vc-dired-hook): Check the backend returned from + `vc-responsible-backend' can really handle `subdir'. + +2007-06-15 Chong Yidong + + * wid-edit.el (widget-add-documentation-string-button): + Fix handling of documentation indent. + +2007-06-15 Miles Bader + + * mb-depth.el: New file. + +2007-06-15 Masatake YAMATO + + * vc.el (vc-dired-mode): Show backend name as part of mode name. + +2007-06-14 Chong Yidong + + * wid-edit.el (widget-default-create): Move ?h handling here... + (widget-default-format-handler): ...from here. + (widget-docstring, widget-add-documentation-string-button): New funs. + (documentation-string): Add :visibility-widget property. + (widget-documentation-string-value-create): Use it. + + * cus-edit.el (custom-split-regexp-maybe): Simplify. + (custom-buffer-create-internal): Simplify message. + (custom-variable-tag): Reduce height to normal. + (custom-variable-value-create, custom-face-value-create) + (custom-visibility): New widget. + (custom-visibility): New face. + (custom-group-value-create): + Call widget-add-documentation-string-button, using `custom-visibility'. + +2007-06-14 Stefan Monnier + + * emacs-lisp/bytecomp.el (byte-compile-current-group) + (byte-compile-nogroup-warn, byte-compile-file): Revert part of last + change. Apparently the "warning even if the group is implicit" is + a feature rather than a bug. + +2007-06-14 Michael Kifer + + * viper.el (viper-describe-key-ad, viper-describe-key-briefly-ad): + Different advices for Emacs and XEmacs. Compile them conditionally. + (viper-version): Belated version change. + +2007-06-14 Juanma Barranquero + + * follow.el (follow-all-followers, follow-generic-filter): + * pcomplete.el (pcomplete-restore-windows): + * x-dnd.el (x-dnd-maybe-call-test-function, x-dnd-save-state) + (x-dnd-drop-data): + * emacs-lisp/edebug.el (edebug-pop-to-buffer, edebug-display): + * progmodes/python.el (python-complete-symbol): + * term/mac-win.el (mac-dnd-drop-data): Remove redundant check. + +2007-06-13 Ryan Yeske + + * rcirc.el (rcirc-format-response-string): Use rcirc-nick-syntax + around bright and dim regexps. Make sure bright and dim matches + use word anchors. Send text through rcirc-markup functions. + (rcirc-url-regexp): Add single quote character. + (rcirc-connect): Write logs to disk on auto-save-hook. + Make server a non-optional argument. + (rcirc-log-alist): New variable. + (rcirc-log-directory): Make customizable. + (rcirc-log-flag): New customizable variable. + (rcirc-log): New function. + (rcirc-print): Use above function. + (rcirc-log-write): New function. + (rcirc-generate-new-buffer-name): Strip text properties. + (rcirc-switch-to-buffer-function): Remove variable. + (rcirc-last-non-irc-buffer): Remove variable. + (rcirc-non-irc-buffer): Add function. + (rcirc-next-active-buffer): Use above function. + (rcirc-keepalive): Send KEEPALIVE ctcp instead of a PING. + (rcirc-handler-ctcp-KEEPALIVE): Add handler. + (rcirc-handler-CTCP): Don't print KEEPALIVE responses. + (rcirc-omit-mode): Add minor-mode. + (rcirc-mode-map): Change C-c C-o binding. + (rcirc-mode): Clear mode-line-process. Use a custom + fill-paragraph-function. Set up buffer-invisibility-spec. + (rcirc-response-formats): Remove timestamp code. + (rcirc-omit-responses): Add variable. + (rcirc-print): Don't put the overlay arrow on potentially omitted + lines. Log line to disk. Record activity for private messages + from /dim nicks. Facify the fill-prefix with rcirc-timestamp face. + (rcirc-jump-to-first-unread-line): Print message if there is no + unread text. + (rcirc-clear-unread): New function. + (rcirc-markup-text-functions): Add variable. + (rcirc-markup-timestamp, rcirc-markup-fill): Add functions. + (rcirc-debug): Don't mess with window configuration. + (rcirc-send-message): Send message before printing locally. + Add SILENT argument, do not print message if non-nil. + (rcirc-visible-buffers): New function and variable. + (rcirc-window-configuration-change-1): Add function. + (rcirc-target-buffer): Make sure ACTIONs don't get sent to the + server buffer. + (rcirc-clean-up-buffer): Set rcirc-target to nil when finished. + (rcirc-fill-paragraph): Add function. + (rcirc-record-activity, rcirc-window-configuration-change-1): + Only update the activity string if it has actually changed. + (rcirc-update-activity-string): Remove padding characters from the + mode-line string. + (rcirc-disconnect-buffer): New function to be called when a + channel is parted or the user quits. + (rcirc-server-name): Warn when the server-name hasn't been set. + (rcirc-window-configuration-change): Postpone work until + post-command-hook. + (rcirc-window-configuration-change-1): Update mode-line and + overlay arrows here. + (rcirc-authenticate): Fixc hanserv identification. + (rcirc-default-server): Remove variable. + (rcirc): Connect according to rcirc-connections. + (rcirc-connections): Add variable. + (rcirc-startup-channels-alist): Remove variable. + (rcirc-startup-channels): Remove function. + +2007-06-13 Stefan Monnier + + * diff-mode.el (diff-font-lock-keywords): Fix M. Kifer's last change. + +2007-06-13 Johan Bockg,Ae(Brd (tiny change) -2005-02-10 Nick Roberts + * term/xterm.el (terminal-init-xterm): Escape parens in character + constants. - * progmodes/gdb-ui.el (gdb-ann3): Re-instate GDB command "set - width 0" to prevent word wrapping problems. +2007-06-13 Stefan Monnier + + * progmodes/sh-script.el: Remove unneeded * from docstrings. + Use [:alpha:] and [:alnum:] where applicable. + (sh-quoted-subshell): Rewrite to correctly + handle nested mixes of `...` and $(...). + (sh-apply-quoted-subshell): Remove. + (sh-font-lock-syntactic-keywords): Adjust call to sh-quoted-subshell. + + * vc-arch.el (vc-arch-command): Remove bzr. It's a different program. + +2007-06-13 Michael Kifer + + * ediff-ptch.el (ediff-context-diff-label-regexp): Partially undo + previous change. + +2007-06-12 Tom Tromey + + * subr.el (user-emacs-directory): New defconst. + * cmuscheme.el (scheme-start-file): + * shell.el (shell): + * completion.el (save-completions-file-name): + * custom.el (custom-theme-directory): + * term/x-win.el (emacs-session-filename): + * filesets.el (filesets-menu-cache-file): + * thumbs.el (thumbs-thumbsdir): + * server.el (server-auth-dir): + * image-dired.el (image-dired-dir): + (image-dired-db-file): + (image-dired-temp-image-file): + (image-dired-gallery-dir): + (image-dired-temp-rotate-image-file): + * play/gamegrid.el (gamegrid-user-score-file-directory): + * savehist.el (savehist-file): + * tutorial.el (tutorial--saved-dir): + * startup.el (auto-save-list-file-prefix): Use user-emacs-directory. -2005-02-09 Kim F. Storm +2007-06-12 Ralf Angeli - * ido.el (ido-file-extensions-order): New defcustom. - (ido-file-extension-lessp, ido-file-extension-aux) - (ido-file-extension-order): New advanced file ordering. - (ido-file-lessp): New simple file ordering. - (ido-sort-list): Remove. - (ido-make-file-list): Use ido-file-lessp or ido-file-extension-lessp. - (ido-make-dir-list, ido-completion-help): Use ido-file-lessp. + * scroll-lock.el (scroll-lock-mode): Doc fix. -2005-02-08 Dan Nicolaescu +2007-06-12 Michael Kifer - * progmodes/grep.el (grep-regexp-alist): Match an optional ^[[K - that some versions of grep produce. - (grep-mode-font-lock-keywords): Likewise. + * ediff-ptch.el (ediff-context-diff-label-regexp): Spurious parenthesis. -2005-02-09 Nick Roberts + * ediff-init.el: Doc strings. - * progmodes/gdb-ui.el (gdb-location-list): New variable. - (gdb-cdir): Delete. - (gdb-info-breakpoints-custom, gdb-goto-breakpoint) - (gdb-source-info): Treat case when source file is in another - directory properly. - (gdb-get-location): New function. +2007-06-12 Stefan Monnier -2005-02-07 Jay Belanger + * emacs-lisp/bytecomp.el (byte-compile-current-group): New var. + (byte-compile-file): Bind it. + (byte-compile-nogroup-warn): Use it to avoid spurious warnings when the + group argument is provided implicitly. + (byte-compile-format-warn, byte-compile-from-buffer) + (byte-compile-insert-header): Don't hardcode point-min==1. + (byte-compile-file-form-require): Remove unused var old-load-list. + (byte-compile-eval): Remove unused vars old-autoloads and hist-nil-new. - * calc/calc-prog.el (calc-write-parse-table-part) - (calc-fix-token-name): Fix a check for language type. +2007-06-12 Michael Kifer - * calc/calccomp.el (math-compose-expr): Fix a check for language type. + * emulation/viper-cmd.el (viper-prefix-arg-com, viper-prefix-arg-value): + Display error messages. + (viper-prev-destructive-command, viper-insert-prev-from-insertion-ring): + Get rid of cl.el dependencies. -2005-02-07 Andre Spiegel + * emulation/viper-init.el (viper-suppress-input-method-change-message): + New variable. + (viper-activate-input-method-action) + (viper-inactivate-input-method-action): + Use viper-suppress-input-method-change-message. - * vc-hooks.el (vc-make-version-backup): Ignore file-errors such - as directory not writable. + * emulation/viper-kem.el (viper-vi-basic-map): Disable the bindings + for C-s, C-r. -2005-02-07 Kim F. Storm + * emulation/viper-util.el (viper-set-cursor-color-according-to-state): + Use viper-replace-overlay-cursor-color instead of + viper-replace-overlay-cursor-color. + (viper-sit-for-short): Use sit-for with 3 arguments. - * emulation/cua-base.el (cua-max-undo, cua-undo): Remove. - (cua--standard-movement-commands): Remove list. - Instead, set CUA property value to move for movement commands. - (cua-movement-commands): Remove. Users must set CUA prop instead. - (cua--pre-command-handler): Check CUA property. - (cua--init-keymaps): Don't remap undo commands. - (cua-mode): Don't call cua--rectangle-on-off. + * emulation/viper.el (viper-insert-state-mode-list): Add gud-mode. + (viper-major-mode-modifier-list): Add viper-comint-mode-modifier-map + to gud-mode. - * emulation/cua-rect.el (cua--undo-list, cua--tidy-undo-counter) - (cua--rect-undo, cua--tidy-undo-lists, cua--rectangle-on-off): Remove. - (cua--rect-undo-set-point): New var. - (cua--rectangle-undo-boundary): Setup undo apply entry. - (cua--rect-undo-handler): New function for rectangle undo. - (cua--rect-start-position, cua--rect-end-position): Add. - (cua--rectangle-post-command): Call cua--rectangle-set-corners - for restored rectangle. Set point if cua--rect-undo-set-point. + * ediff-mult.el (ediff-meta-buffer-brief-message) + (ediff-meta-buffer-verbose-message): New variables. + (ediff-meta-buffer-message): Variable deleted. + (ediff-verbose-help-enabled): New variable. + (ediff-toggle-verbose-help-meta-buffer): New function. + (ediff-redraw-directory-group-buffer): Made aware of short/verbose + message options. -2005-02-06 Jay Belanger + * ediff-ptch.el (ediff-context-diff-label-regexp): Better regexp. + (ediff-fixup-patch-map): Improve heuristic. - * calc/calc-lang.el (calc-tex-language): Display more information - in messages. +2007-06-12 Stefan Monnier - * calc/calccomp.el (math-compose-expr): Allow multiline matrices - in TeX mode. + * log-view.el (log-view-file-re, log-view-message-re): Use \(?1:...\). + (log-view-font-lock-keywords): Simplify. + (log-view-current-file, log-view-current-tag): Simplify. -2005-02-06 Richard M. Stallman +2007-06-12 Sam Steingold - * emacs-lisp/lisp.el (buffer-end): Doc fix. + * vc-arch.el (vc-arch-command): Also try "baz" and "bzr". -2005-02-05 Arne J,Ax(Brgensen (tiny change) +2007-06-12 Juanma Barranquero - * net/ldap.el (ldap-search-internal): Support attributes with - optional descriptions separated by a semi-colon, as in - "userCertificate;binary". + * desktop.el (desktop-load-locked-desktop): New option. + (desktop-read): Use it. + (desktop-truncate, desktop-outvar, desktop-restore-file-buffer): + Use `when'. -2005-02-05 Jan Dj,Ad(Brv +2007-06-12 Davis Herring - * x-dnd.el (x-dnd-handle-xdnd): Handle the case where the flags - isn't a cons (i.e. the version is 0). + * desktop.el (desktop-save-mode-off): New function. + (desktop-base-lock-name, desktop-not-loaded-hook): New variables. + (desktop-full-lock-name, desktop-file-modtime, desktop-owner) + (desktop-claim-lock, desktop-release-lock): New functions. + (desktop-kill): Tell `desktop-save' that this is the last save. + Release the lock afterwards. + (desktop-buffer-info): New function. + (desktop-save): Use it. Run `desktop-save-hook' where the doc + says to. Detect conflicts, and manage the lock. + (desktop-read): Detect conflicts. Manage the lock. -2005-02-05 Eli Zaretskii +2007-06-12 Stefan Monnier - * help.el (help-for-help): Doc fix. + * emulation/tpu-mapper.el (tpu-emacs-map-key): Use new keymap names. -2005-02-05 Nick Roberts + * emulation/tpu-edt.el (tpu-gold-map): Rename from GOLD-map. + (tpu-lucid-emacs-p): Remove. Use (featurep 'xemacs) instead. + (CSI-map, GOLD-CSI-map, GOLD-SS3-map, SS3-map): Delete vars. + (tpu-gold-map, tpu-global-map): Add all the SS3 and CSI bindings, using + keysyms rather than byte sequences. + (tpu-copy-keyfile): Don't force the user to use tpu-mapper.el. - * progmodes/gdb-ui.el: Update copyright. Put GDB-Frames before - GDB-Windows on the menu-bar as this works better. +2007-06-11 Stefan Monnier -2005-02-04 Jay Belanger + * font-lock.el (font-lock-add-keywords): In case font-lock was only + half-activated, forcefully activate it completely. - * calc/calc-embed.el (calc-embedded-update): Don't put in - unnecessary newlines. Adjust the end of formula marker. +2007-06-11 Richard Stallman - * calc/calc-lang.el (math-latex-parse-frac): Don't use arguments. - (math-latex-parse-two-args): New function. + * cus-edit.el (custom-variable-type): Doc fix. -2005-02-03 Lute Kamstra +2007-06-11 Stefan Monnier - * help-fns.el (help-with-tutorial): Make sure that users cannot - remove the entire text of the tutorial by means of `undo'. + * progmodes/sh-script.el (sh-font-lock-backslash-quote) + (sh-font-lock-flush-syntax-ppss-cache): New functions. + (sh-font-lock-syntactic-keywords): Use them to distinguish the + different possible cases for \'. -2005-02-03 Stefan Monnier + * complete.el (PC-bindings): Don't bind things already bound in the + parent keymap. - * textmodes/ispell.el (ispell-internal-change-dictionary): Fix problem - in recent changes, where the ispell process was repeatedly - killed & restarted. + * textmodes/bibtex-style.el: New file. - * international/mule-cmds.el (set-locale-environment): Set file-name - coding system to utf-8 on Darwin systems. - (set-default-coding-systems): Don't set default-file-name-coding-system - on Darwin systems. +2007-06-11 Riccardo Murri -2005-02-03 Richard M. Stallman + * vc-bzr.el: New file. - * hi-lock.el (hi-lock-mode): Turning on Hi-Lock turns on Font-Lock. +2007-06-11 Stefan Monnier -2005-02-03 Matt Hodges + * vc-svn.el (vc-svn-program): New var. + (vc-svn-command): Use it. - * faces.el (list-faces-display): Add optional argument. +2007-06-11 Juanma Barranquero -2005-02-02 Stefan Monnier + * server.el (server-switch-buffer): Remove redundant check. - * font-core.el (font-lock-default-function): Handle the rare case where - only font-lock-keywords is set. +2007-06-10 Martin Rudalics -2005-02-02 Kenichi Handa + * emacs-lisp/bytecomp.el (byte-compile-find-cl-functions): + Match against file-name-nondirectory. + Fix text on user customization variables. + Reported by Johan Bockg,Ae(Brd . - * international/characters.el: Cancel previous change for - I-WITH-DOT-ABOVE and DOTLESS-i. +2007-06-09 Alfred M. Szmidt (tiny change) - * international/latin-5.el: Cancel previous change. + * mail/rmail.el (rmail-movemail-variant-in-use): Fix doc typo. -2005-02-02 Nick Roberts +2007-06-09 Davis Herring - * progmodes/gud.el: Correction to syntax in gud-menu-map. + * desktop.el (desktop-minor-mode-table): Doc fix. -2005-02-02 Kenichi Handa +2007-06-08 Stefan Monnier - * international/latin-5.el (tbl): Setup cases of I-WITH-DOT-ABOVE, - DOTLESS-i. + * textmodes/css-mode.el (css-navigation-syntax-table): + Use set-char-table-range so it also works in the unicode branch. - * international/characters.el: Setup cases of GREEK-FINAL-SIGMA, - Y-WITH-DIAERESIS, I-WITH-DOT-ABOVE, DOTLESS-i. +2007-06-08 Nick Roberts - * case-table.el (get-upcase-table): New function. - (copy-case-table): Copy upcaes table too if non-nil. - (set-case-syntax-delims): Maintain upcase table too. - (set-case-syntax-pair): Likewise. - (set-upcase-syntax, set-downcase-syntax): New functions. - (set-case-syntax): Maintain upcase table too. + * help-mode.el (help-xref-forward-stack) + (help-xref-stack-forward-item, help-forward-label): New variables. + (help-forward): New button type. + (help-setup-xref): Initialise help-xref-forward-stack. + (help-make-xrefs): Add forward button, if appropriate. + (help-xref-go-back): Push item on forward stack. + (help-xref-go-forward, help-go-forward): New functions. -2005-02-02 Nick Roberts +2007-06-07 Chong Yidong - * progmodes/gdb-ui.el (gdb-goto-info): Delete. + * dired.el (dired-mode-map): Remove spurious separator. - * progmodes/gud.el (gud-goto-info): New function. - (gud-tool-bar-map): Use correct icon. +2007-06-07 Juanma Barranquero -2005-02-01 Thien-Thi Nguyen + * progmodes/ebrowse.el (ebrowse-draw-file-member-info): Doc fix. - * emacs-lisp/lisp-mode.el (lisp-indent-function): Fix bug: - When delegating, order args in the funcall correctly. + * progmodes/mixal-mode.el (mixal-operation-codes-alist): + * progmodes/idlwave.el (idlwave-one-key-select): Fix typo in docstring. -2005-02-01 Thien-Thi Nguyen +2007-06-07 Carsten Dominik - * emacs-lisp/lisp-mode.el (lisp-indent-function): Doc fix. + * textmodes/org.el: Version number fixed. -2005-02-01 Carsten Dominik +2007-06-07 Glenn Morris - * textmodes/reftex.el (reftex-access-scan-info): Error out in a - buffer not visiting a file. + * version.el (emacs-copyright): New constant. + * startup.el (fancy-splash-tail): Use emacs-copyright. + * calc/calc-help.el (calc-full-help): Use emacs-copyright. -2005-01-31 Jay Belanger + * emacs-lisp/bytecomp.el (byte-compile-warnings): Add new option + `make-local'. + (byte-compile-warnings-safe-p): Add `make-local'. + (byte-compile-make-variable-buffer-local): + Allow byte-compile-warnings to suppress this warning. - * calc/calc-embed.el (calc-embedded-find-bounds): Set the formula - bound on the line with the formula. + * tutorial.el (tutorial--describe-nonstandard-key): Adjust for new + format of "menu" description. + (tutorial--find-changed-keys): Describe the specific menu a + command is in. -2005-01-31 Kim F. Storm + * dframe.el (dframe-frame-parameter, dframe-mouse-event-p): + Rewrite compatibility functions to silence byte-compiler. - * ses.el (ses-create-cell-variable-range) - (ses-destroy-cell-variable-range, ses-reset-header-string) - (ses-set-with-undo, ses-unset-with-undo, ses-aset-with-undo) - (ses-insert-row): Fix format of apply undo entries. +2007-06-07 Alfred M. Szmidt (tiny change) -2005-01-31 Jay Belanger + * mail/rmailsum.el (rmail-summary-save-buffer): New command. + (rmail-summary-mode-map): Add rmail-summary-save-buffer. - * calc/calc-aent.el (math-read-token): Separate the TeX and LaTeX - parts. +2007-06-07 Eric M. Ludlam - * calc/calc-embed.el (calc-embedded-open-formula) - (calc-embedded-close-formula): Ignore matrix environments. + * emacs-lisp/checkdoc.el (checkdoc-ispell-lisp-words): Remove "iff". - * calc/calc-ext.el (math-read-big-expr): Make LaTeX the default - TeX mode. +2007-06-07 Juanma Barranquero - * calc/calc-lang.el (math-function-table, math-oper-table) - (math-variable-table): Adjust the LaTeX portions. + * progmodes/ebrowse.el (ebrowse-member-table): + * textmodes/org.el (org-export-ascii-bullets, org-batch-agenda) + (org-batch-agenda-csv): Fix typos in docstrings. - * calc/calc.el (math-tex-ignore-words): Remove LaTeX portion. - (math-latex-ignore-words): New constant. +2007-06-06 Juanma Barranquero -2005-01-31 Richard M. Stallman + * international/mule-cmds.el (toggle-enable-multibyte-characters) + (sort-coding-systems, search-unencodable-char): Doc fixes. + (coding-system-change-eol-conversion, set-default-coding-systems) + (prefer-coding-system, find-multibyte-characters, princ-list) + (leim-list-entry-regexp, set-input-method, locale-language-names) + (input-method-exit-on-first-char, exit-language-environment-hook) + (locale-charset-language-names): Fix typos in docstrings. - * textmodes/ispell.el (ispell-local-dictionary-overridden): New var. - (ispell-local-dictionary): Doc fix. - (ispell-dictionary-alist): Don't include ispell-local-dictionary-alist. - Don't reinitialize at run time. Don't defcustom. - All uses changed to append ispell-local-dictionary-alist, - or check it first. - (ispell-current-dictionary): New variable for dictionary in use. - (ispell-dictionary): Now used only for global default. - (ispell-start-process): Set ispell-current-dictionary, - not ispell-dictionary. - (ispell-change-dictionary): Use this only for setting - user preferences. - (ispell-internal-change-dictionary): New function - to change the current dictionary in use. - (ispell-region, ispell-process-line, ispell-buffer-local-dict): - Use ispell-current-dictionary. - Handle ispell-local-dictionary-overridden. - (ispell-buffer-local-dict): Call ispell-internal-change-dictionary. +2007-06-06 Juanma Barranquero -2005-01-31 Jay Belanger + * pgg.el (pgg-sign-region, pgg-sign): + * ses.el (ses-call-printer): + * calendar/icalendar.el (icalendar--diarytime-to-isotime): + * textmodes/org.el (org-cycle): Fix typos in docstrings. - * calc/calc-aent.el (math-read-token): Add support for LaTeX. +2007-06-06 Carsten Dominik + + * textmodes/org.el + (org-export-region-as-html, org-replace-region-by-html) + (org-number-to-letters, org-table-fedit-finish) + (org-normalize-color, org-table-fedit-ref-right) + (org-date-to-gregorian, org-table-fedit-move) + (org-table-convert-refs-to-rc, org-calendar-holiday) + (org-table-fedit-toggle-ref-type, org-write-agenda) + (org-colgroup-info-to-vline-list, org-agenda-todo-previousset) + (org-defkey, org-encode-for-stdout) + (org-indent-line-function, org-export-as-html-to-buffer) + (org-store-agenda-views, org-update-mode-line) + (org-find-if, org-delete-all) + (org-table-fedit-convert-buffer, org-emphasize) + (org-uniquify, org-table-fedit-lisp-indent) + (org-table-fedit-scroll, org-get-todo-sequence-head) + (org-table-fedit-scroll-down, org-table-fedit-line-down) + (org-table-fedit-ref-left, org-agenda-export-csv-mapper) + (org-table-fedit-toggle-coordinates, org-dvipng-color) + (org-table-fedit-line-up, org-table-fedit-ref-down) + (org-table-formula-from-user, org-mode-flyspell-verify) + (org-cycle-show-empty-lines, org-ctrl-c-ret) + (org-table-formula-to-user, org-diary-to-ical-string) + (orgtbl-export, org-table-fedit-post-command) + (org-closed-in-range, org-shiftcontrolright) + (org-table-convert-refs-to-an, org-table-hline-and-move) + (org-table-formula-less-p, org-format-table-ascii) + (org-agenda-get-sexps, org-shift-refpart) + (org-diary-sexp-entry, org-time-string-to-absolute) + (org-table-show-reference, org-letters-to-number) + (org-fix-agenda-info, org-table-fedit-ref-up) + (org-table-fedit-shift-reference, org-table-fedit-abort) + (org-closest-date, org-shiftcontrolleft) + (org-at-heading-or-item-p, org-rematch-and-replace) + (org-agenda-todo-nextset, org-export-grab-title-from-buffer): + New functions. + (org-table-edit-scroll-down, org-finish-edit-formulas) + (org-table-edit-next-field, org-abort-edit-formulas) + (org-font-lock-level, org-export-find-first-heading-line) + (org-table-edit-line-down, org-table-edit-backward-field) + (org-edit-formula-lisp-indent, org-table-edit-move) + (org-check-log-option, org-this-word) + (org-table-edit-line-up, org-table-edit-formulas-post-command) + (org-agenda-file-to-end, org-expand-file-name) + (org-fake-empty-table-line, org-table-edit-scroll) + (org-toggle-log-option, org-show-reference): Function removed. + (org-inhibit-invisibility, org-table-formula-make-cmp-string): + New defsubsts. + (org-unmodified, org-batch-store-agenda-views) + (org-batch-agenda-csv): New macro. + (org-agenda-export): New customization group. + (org-agenda-skip-deadline-if-done, org-agenda-remove-tags) + (org-highest-priority, org-agenda-exporter-settings) + (org-log-done-with-time, org-replace-disputed-keys) + (org-format-latex-header, org-export-table-header-tags) + (org-cycle-separator-lines, org-export-table-data-tags) + (org-icalendar-include-sexps) + (org-empty-line-terminates-plain-lists) + (org-log-repeat, org-special-ctrl-a) + (org-table-use-standard-references, org-disputed-keys) + (org-export-skip-text-before-1st-heading, org-agenda-with-colors) + (org-agenda-export-html-style): New option. + (org-allow-auto-repeat, org-agenda-remove-tags-when-in-prefix) + (org-CUA-compatible): Option removed. + (org-agenda-structure, org-sexp-date): New face. + (org-todo-keywords-for-agenda, org-not-done-keywords) + (org-planning-or-clock-line-re, org-agenda-name) + (org-table-colgroup-info, org-todo-sets) + (constants-unit-system, org-clock-mode-line-entry) + (org-mode-line-timer, org-table-current-begin-pos) + (org-todo-keywords-1, org-mode-line-string) + (org-table-clean-did-remove-column, org-table-fedit-map) + (org-clock-heading, org-table-buffer-is-an) + (org-agenda-info, org-done-keywords) + (org-done-keywords-for-agenda, org-todo-heads) + (org-todo-kwd-alist, org-clock-start-time): New variable. + (org-todo-kwd-priority-p, org-edit-formulas-map) + (org-repeat-re, org-todo-kwd-max-priority) + (org-version, org-done-string) + (org-table-clean-did-remove-column-1, org-disputed-keys): + Remove variables. + (org-table-translate-regexp, org-repeat-re, org-version): New consts. + (org-ts-lengths): Constant removed. + (org-follow-gnus-link): Don't ask how many articles to read. + (org-export-find-first-export-line): Rename from + `org-export-find-first-heading'. + Use `org-export-skip-text-before-1st-heading'. + (org-table-fedit-post-command): Rename from + `org-table-edit-formulas-post-command'. + (org-table-fedit-finish): Rename from `org-finish-edit-formulas'. + (org-table-fedit-abort): Rename from `org-abort-edit-formulas'. + (org-table-fedit-lisp-indent): Rename from + `org-edit-formula-lisp-indent'. + (org-table-show-reference): Rename from `org-show-reference'. + (org-table-store-formulas): Use `org-table-formula-less-p'. + (org-table-edit-formulas): Position cursor to current field equation. + (org-update-checkbox-count, org-hide-archived-subtrees) + (org-timestamp-up-day, org-timestamp-down-day) + (org-shiftmetaleft, org-shiftmetaright, org-shiftmetaup) + (org-shiftmetadown, org-metaleft, org-metaright, org-metaup) + (org-metadown, org-shiftup, org-shiftdown, org-shiftright) + (org-shiftleft, org-ctrl-c-ctrl-c, org-context): + Let `org-on-heading-p' also check for invisible heading. + (org-read-date): Match am/pm times. + (org-eval-in-calendar): Fix default date in prompt. - * calc/calc-ext.el: Add calc-latex-language to autoloads. - (calc-mode-map): Add calc-latex-language. +2007-06-05 Chong Yidong - * calc/calc-lang.el (calc-latex-language, math-latex-parse-frac) - (math-latex-print-frac): New functions. - (math-oper-table, math-function-table, math-variable-table) - (math-complex-format, math-input-filter): Add latex properties. - (calc-set-language): Set math-expr-special-function-mapping. + * files.el (auto-mode-alist): Separate "ChangeLog.1" and + "ChangeLog.a" entries, giving the latter lower priority. - * calc/calc-prog.el (calc-edit-user-syntax, calc-fix-token-name) - (calc-write-parse-table-part): Add LaTeX support. +2007-06-05 Juanma Barranquero - * calc/calc.el (calc-language): Adjust docstring. - (calc-set-mode-line): Add LaTeX support. - (math-expr-special-function-mapping): New variable. - (math-tex-ignore-words): Add to list. + * faces.el (face-id): If the argument is a face alias, + return the ID of the target face. - * calc/calccomp.el (math-compose-expr, math-compose-rows): - Add LaTeX support. - (math-compose-expr): Add support for special functions. +2007-06-05 Michael Albinus - * calc/calc-help.el (calc-d-prefix-help): Add LaTeX. + * net/socks.el (top): Remove unnecessary copyright line. -2005-01-31 Nick Roberts +2007-06-04 Chong Yidong - * progmodes/gdb-ui.el (gdb-memory-address) - (gdb-memory-repeat-count, gdb-memory-format, gdb-memory-unit) - (gdb-memory-mode-map, gdb-memory-format-keymap) - (gdb-memory-format-menu, gdb-memory-unit-keymap) - (gdb-memory-unit-menu): New variables for a buffer - that lets the user examine program memory. - (gdb-memory-set-address, gdb-memory-set-repeat-count) - (gdb-memory-format-binary, gdb-memory-format-octal) - (gdb-memory-format-unsigned, gdb-memory-format-signed) - (gdb-memory-format-hexadecimal, gdb-memory-format-menu) - (gdb-memory-format-menu-1, gdb-memory-unit-giant) - (gdb-memory-unit-word, gdb-memory-unit-halfword) - (gdb-memory-unit-byte, gdb-memory-unit-menu) - (gdb-memory-unit-menu-1, gdb-make-header-line-mouse-map) - (gdb-memory-mode, gdb-memory-buffer-name) - (gdb-display-memory-buffer, gdb-frame-memory-buffer): - New functions for above buffer. + * longlines.el (longlines-auto-wrap): Handle argument correctly. -2005-01-30 Richard M. Stallman +2007-06-04 Michael Albinus - * cus-edit.el (custom-bury-buffer): Function deleted. - (custom-buffer-done-function): Option deleted. - (custom-buffer-done-kill): New replacement option. - (Custom-buffer-done): Call quit-window. - (custom-buffer-create-internal): Update for above changes. + * net/socks.el: New file, taken from w3 repository. + (top): Update Copyright. Don't load cl.el. + (all): Replace `case' by `cond', `string-to-int' by + `string-to-number', and `process-kill-without-query' by + `set-process-query-on-exit-flag'. + (socks-char-int): Remove defalias and all occurrences. -2005-01-29 Luc Teirlinck +2007-06-04 Juanma Barranquero - * simple.el (undo-ask-before-discard): New var. - (undo-outer-limit-truncate): Implement it. - (undo-extra-outer-limit): Doc update. + * progmodes/compile.el (compilation-find-file, compilation-handle-exit): + Fix typos in docstrings. + (compilation-search-path, compilation-buffer-name-function): Doc fixes. + (compilation-finish-function): Fix typo in obsolescence declaration. -2005-01-29 Richard M. Stallman +2007-06-03 Sam Steingold - * ses.el (undo-more): Delete defadvice. - (ses-begin-change): Doc fix. + * progmodes/compile.el: Add TIMESTAMP to the LOC data structure, to + handle unending automatic recompilation of changed files (`omake -P'). + (compilation-loop): VISITED is now 5th CDR. + (compilation-next-error-function): Set TIMESTAMP. - * dired.el (dired-mode-map): Remap `undo' and `advertised-undo' - instead of rebinding C-x u and C-_. +2007-06-03 Sam Steingold - * files.el (normal-backup-enable-predicate): Return nil for files - in /tmp, regardless of temporary-file-directory. + * files.el (kill-buffer-ask): New function. + (kill-some-buffers): Use it. + (kill-matching-buffers): New user command. - * man.el (Man-getpage-in-background): Disable undo in Man buffer. +2007-06-01 David Kastrup - * rect.el (delete-rectangle-line, delete-extract-rectangle-line) - (open-rectangle, delete-whitespace-rectangle-line) - (clear-rectangle-line): If FILL, pass t instead of FILL - for move-to-column's 2nd arg. + * dired.el (dired-recursive-deletes, dired-recursive-copies): + Change default to `top'. - * simple.el (undo): Fix the test for continuing a series of undos. - (undo-more): Set pending-undo-list to t when we reach end. - (pending-undo-list): Move up defvar. +2007-05-31 Richard Stallman - * wid-edit.el (widget-button-click): - Shorten the range of the track-mouse binding. + * dired.el (dired-do-flagged-delete, dired-do-delete): Doc fix. - * comint.el (comint-insert-input): Undo previous changes; - use last-input-event in interactive spec. +2007-05-31 Stefan Monnier -2005-01-29 Eli Zaretskii + * textmodes/css-mode.el: New file. - * progmodes/compile.el (compilation-start): Bind buffer-read-only - to nil before invoking call-process. Reset buffer's modified flag - after fontifying it in the no-async branch. +2007-05-30 Michael Olson - * wid-edit.el (widget-specify-button): If mouse pointer shape - cannot be changed, use mouse face instead. + * emacs-lisp/tq.el (tq-queue-pop): Stifle error when a process has + died and we are trying to send a signal to it. The program using + tq.el should periodically check to see whether the process has + died and react appropriately -- this is not the responsibility of + tq.el, and is consistent with the rest of the tq.el source code. -2005-01-29 Nick Roberts +2007-05-29 Martin Rudalics - * progmodes/gdb-ui.el (gdb-info-breakpoints-custom) - (gdb-goto-breakpoint): Make breakpoint handling work on template - functions in C++. Reported by Martin Reed . - (gdb-assembler-custom): Update to recognize breakpoint information - added on 2005-01-19. + * textmodes/table.el (table--point-entered-cell-function) + (table--point-left-cell-function): + Bind `inhibit-point-motion-hooks' to t. -2005-01-28 Stefan Monnier +2007-05-29 Nikolaj Schumacher (tiny change) - * progmodes/scheme.el (scheme-mode-variables): Set comment-add. - (dsssl-mode): Use define-derived-mode. - (scheme-mode-initialize): Remove. - (scheme-mode): Use run-mode-hooks. + * emacs-lisp/rx.el (rx): Doc fix. - * cus-edit.el (customize-group-other-window) - (custom-buffer-create-other-window): Don't override special-display-*. - (custom-mode-map): Make it dense. +2007-05-28 Juanma Barranquero - * emacs-lisp/lisp-mode.el (eval-defun-1): Make sure `defvar' always - sets the default value. + * progmodes/idlwave.el (idlwave-routines): Fix typo in docstring. -2005-01-28 Eli Zaretskii +2007-05-28 Michael Albinus - * descr-text.el: Add more keywords. + Sync with Tramp 2.0.56. -2005-01-27 Stefan Monnier + * net/tramp.el: + * net/tramp-ftp.el: + * net/tramp-smb.el: + * net/tramp-util.el: + * net/tramp-vc.el: + Don't load cl.el, because that pollutes the namespace. Replace cl + macros by their implementations where necessary. Requested by + Richard Stallman . - * speedbar.el: Avoid unnecessary use of locate-library. + * net/tramp.el (top): Make `set-buffer-multibyte' an alias if it + doesn't exist. + (with-parsed-tramp-file-name): Protect debug spec during compilation. + (tramp-handle-insert-directory): Check (featurep 'ls-lisp). + (tramp-file-name-p, tramp-file-name-multi-method) + (tramp-file-name-method, tramp-file-name-user) + (tramp-file-name-host, tramp-file-name-localname): New defuns, + replacing defstruct `tramp-file-name'. + (tramp-handle-file-remote-p, tramp-completion-dissect-file-name1) + (tramp-dissect-file-name, tramp-dissect-multi-file-name): + Apply `vector' instead of `make-tramp-file-name'. + (tramp-handle-make-auto-save-file-name): + Apply `tramp-temporary-file-directory' for compatibility reasons. + (tramp-completion-mode): Use `natnump' instead of `wholenump' + because of XEmacs. + (tramp-completion-mode): `last-input-event' is nil when XEmacs is + started. - * international/mule-cmds.el (standard-display-european-internal): - Don't fiddle with latin-1 non-break space any more since it's now - special cased in the C code. - Don't "do&undo" setting for 160 (especially, don't undo incorrectly). +2007-05-28 Chong Yidong -2005-01-26 Luc Teirlinck + * textmodes/sgml-mode.el (sgml-point-entered): Use condition-case. - * cus-start.el (all): Add `undo-outer-limit'. +2007-05-27 Tetsurou Okazaki (tiny change) -2005-01-25 Roland Winkler + * log-edit.el (log-edit-changelog-paragraph): Return point-max + as the end of the ChangeLog paragraph when it ends without a line + termination. - * textmodes/bibtex.el (bibtex-format-entry): - Use `bibtex-empty-field-re' only on the text of fields, not on entire - field lines. - (bibtex-autofill-entry): Use `bibtex-empty-field-re' on a string, - not on part of a buffer. +2007-05-27 Ryan Yeske -2005-01-25 Lute Kamstra + * net/webjump.el (webjump-sample-sites): + Add simple Wikipedia query. - * textmodes/bibtex.el (bibtex-empty-field-re): Don't match - nonempty field text strings like "{letters\\macro{}more letters}". - Clarify docstring. - (bibtex-sort-entry-class, bibtex-autokey-titleword-ignore) - (bibtex-entry-offset, bibtex-parse-association) - (bibtex-parse-field-name): Fix typos in docstrings. - (bibtex-field-list, bibtex-find-crossref): Fix typos in error messages. +2007-05-25 Stefan Monnier -2005-01-24 Carsten Dominik + * emacs-lisp/derived.el (define-derived-mode): Remove bogus + compatibility code. - * textmodes/reftex-global.el (reftex-isearch-push-state-function) - (reftex-isearch-pop-state-function, reftex-isearch-isearch-search) - (reftex-isearch-switch-to-next-file, reftex-isearch-turn-off) - (reftex-isearch-turn-on, reftex-isearch-minor-mode): New functions. + * emacs-lisp/copyright.el (copyright-names-regexp): New var. + (copyright-update-year): Use it. - * textmodes/reftex.el (reftex-mode-menu): Add entry for reftex - isearch minor mode. + * edmacro.el (edmacro-format-keys): Use current-active-maps. -2005-01-24 Luc Teirlinck + * ediff-init.el (ediff-defvar-local, ediff-with-current-buffer): + Add indentation and debugging info. Fix up comment convention. - * help-at-pt.el (help-at-pt-display-when-idle): Add autoload cookie. + * cus-dep.el (custom-make-dependencies): Simplify. -2005-01-24 Lute Kamstra + * composite.el (compose-region, decompose-region): + Use inhibit-read-only and restore-buffer-modified-p. - * textmodes/ispell.el (ispell-dictionary-alist-4): Rewrite the - CASECHARS and NOT-CASECHARS regular expressions of the - "nederlands" and "nederlands8" dictionaries to prevent a "Range - striding over charsets" error. + * xt-mouse.el (xterm-mouse-truncate-wrap): New function. + (xterm-mouse-event): Use it. -2005-01-24 Jay Belanger +2007-05-25 Juanma Barranquero - * calc/calc-store.el (calc-declare-variable): Use calc-var-name to - display variable name. + * bs.el (bs-cycle-previous): Don't modify the cycle list until + `switch-to-buffer' has returned succesfully. + (bs-cycle-next): Ditto. Also, don't bury the buffer when the + window is dedicated (it could iconify the frame). -2005-01-24 Kenichi Handa +2007-05-25 Miles Bader - * international/encoded-kb.el (encoded-kbd-iso2022-single-shift): - Fix setting of the element of encoded-kbd-iso2022-invocations. + * vc-hooks.el (vc-find-root): Fix file attribute test. -2005-01-24 Nick Roberts +2007-05-24 Richard Stallman - * progmodes/gdb-ui.el (gdb-goto-breakpoint, gdb-frames-select) - (gdb-threads-select): Change to also accept mouse events. - (gdb-mouse-goto-breakpoint, gdb-frames-mouse-select) - (gdb-threads-mouse-select): Delete. + * textmodes/flyspell.el (flyspell-correct-word-before-point): + Don't let opoint be nil. + (flyspell-emacs-popup): Explicit error if no dialogs. -2005-01-23 Luc Teirlinck +2007-05-24 Chong Yidong - * files.el (insert-directory): Take care of empty directory, - listed without -a switch. + * image-mode.el (image-forward-hscroll, image-backward-hscroll) + (image-next-line, image-previous-line, image-scroll-up) + (image-scroll-down, image-bol, image-eol, image-bob, image-eob): + New functions. + (image-mode-map): Remap motion commands. + (image-mode-text-map): New keymap for viewing images as text. + (image-mode): Use image-mode-map. + (image-toggle-display): Toggle auto-hscroll-mode and mode keymaps. -2005-01-23 Stefan Monnier +2007-05-24 Stefan Monnier - * textmodes/refill.el (refill-post-command-function): - Add `indent-new-comment-line' and `reindent-then-newline-and-indent' - to the list of functions that we should be careful not to undo. - (refill-late-fill-paragraph-function): Remove. - (refill-saved-state): New var. - (refill-mode): Use it to save fill-paragraph-function. - Save also the value of auto-fill-function. + * textmodes/fill.el (canonically-space-region): Make the second arg + a marker if it's not already the case. - * term/w32-win.el: Simplify code. +2007-05-23 Eli Zaretskii -2005-01-23 Kim F. Storm + * tar-mode.el (tar-header-block-summarize, tar-summarize-buffer) + (tar-get-descriptor): Handle type 55, an extended pax header. - * simple.el (line-move): Adapt to new return value from - pos-visible-in-window-p. +2007-05-23 Stefan Monnier - * simple.el (line-move): Fix last change. Check partial - visibility at point rather than at window-start. + * autoinsert.el (auto-insert-alist): Quote elisp sample code so as not + to confuse outline-minor-mode. -2005-01-22 Jason Rumney +2007-05-23 Eli Zaretskii - * term/w32-win.el (xw-defined-colors): Remove debug-message. + * tar-mode.el (tar-file-name-handler): New function. + (tar-extract): Bind file-name-handler-alist to it to force + find-buffer-file-type-coding-system behave as if the file being + extracted existed. Use last-coding-system-used to force + buffer-file-coding-system to what decode-coding-region actually + used to decode the file. -2005-01-22 David Kastrup +2007-05-23 Nikolaj Schumacher (tiny change) - * progmodes/grep.el: Add alias `find-grep' for `grep-find'. + * progmodes/compile.el (compilation-handle-exit): + `compilation-finish-function' may change the current buffer. -2005-01-22 Eli Zaretskii +2007-05-22 Richard Stallman - * type-break.el (type-break-mode): Add a test for - type-break-file-name being non-nil. + * files.el (set-auto-mode): Doc fix. -2005-01-22 Toby Allsopp (tiny change) +2007-05-22 Jan Dj,Ad(Brv - * net/eudc.el (top level): Call (message "") via progn, so that - eudc-options-file is loaded. + * help-fns.el (find-source-lisp-file): New function. + (describe-function-1): Use find-source-lisp-file to find source + file in compile tree. -2005-01-22 Kim F. Storm +2007-05-22 Eli Zaretskii - * simple.el (line-move-1): Rename from line-move. - (line-move): New function that adjusts vscroll for partially - visible rows, and calls line-move-1 otherwise. + * dos-w32.el (find-buffer-file-type-coding-system): Doc fix. -2005-01-21 Ren,Ai(B Kyllingstad +2007-05-22 Juanma Barranquero - * pcomplete.el: Define pcomplete-read-event instead of read-event, - since it's not a complete read-event implementation. + * emacs-lisp/easy-mmode.el (define-minor-mode) + (easy-mmode-define-navigation): Fix typos in docstrings. -2005-01-20 Jay Belanger +2007-05-22 Glenn Morris - * calc/calc-ext.el (calc-fancy-prefix-other-key): Set prefix arg - for called function. + * files.el (auto-mode-alist): Open `.asd' files in lisp-mode. -2005-01-20 Steven Tamm +2007-05-22 Katsumi Yamaoka - * term/mac-win.el (process-connection-type): Remove. - Controlled now by s/darwin.h:PTY_ITERATION. + * mail/mail-extr.el (mail-extract-address-components): + Recognize non-ASCII characters except for NBSP as words. -2005-01-20 Stefan Monnier +2007-05-21 Trent Buck (tiny change) - * window.el (handle-select-window): Don't switch window when we're - in the minibuffer. + * net/rcirc.el (rcirc-fill-column): Allow `window-width'. + (rcirc-print): Handle `window-width'. + (rcirc-buffer-maximum-lines): Doc fix. -2005-01-10 Paul Pogonyshev +2007-05-21 Chong Yidong - * subr.el (dotimes-with-progress-reporter): New macro. + * image-mode.el (image-toggle-display): Don't clear image cache. + Only use filename in image spec if the file is readable. + Call image-refresh. - * ses.el (ses-dotimes-msg): Remove macro. - Use `dotimes-with-progress-reporter' instead. + * image.el (image-type-from-file-name, image-type): Simplify. + (image-type-auto-detected-p): Don't scan auto-mode-alist. -2005-01-19 Steven Tamm + * files.el (magic-mode-alist): Remove image-type-auto-detected-p. + (magic-fallback-mode-alist): Add image-type-auto-detected-p. - * term/mac-win.el (process-connection-type): Use new - operating-system-release variable to use ptys on Darwin 7 (OS X - 10.3) when using carbon build. +2007-05-20 Nick Roberts -2005-01-19 Jay Belanger + * t-mouse.el (t-mouse-mode): Reset t-mouse-mode to nil if there + is an error. - * calc/calc-ext.el (calc-fancy-prefix-other-key): Don't clear - flags if the last command was a tab or M-tab. + * term/linux.el (terminal-init-linux): Don't signal an error + if gpm isn't running. - * calc/calc-prog.el (calc-user-define-edit): Put original formula - in formula editing buffer. +2007-05-20 Nick Roberts -2005-01-19 Nick Roberts + * t-mouse.el: Reduce to a minor-mode macro call. + (t-mouse-mode): Remove the lighter. - * progmodes/gdb-ui.el (gdb-put-breakpoint-icon): Add help-echo for - breakpoint image symbol in margin. + * term/linux.el (terminal-init-linux): Enable t-mouse by default. -2005-01-19 Jay Belanger +2007-05-19 Dan Nicolaescu - * calc/calc-prog.el (calc-execute-kbd-macro): - Ignore calc-keep-arg-flag. + * files.el (auto-mode-alist): Change the regexp so that + ChangeLog.unicode and ChangeLog.multi-tty use change-log-mode. -2005-01-19 Kenichi Handa +2007-06-02 Chong Yidong - * textmodes/ispell.el (ispell-looking-at): New function. - (ispell-process-line): Use ispell-looking-at to compare the ispell - output and the buffer contents. + * Version 22.1 released. -2005-01-18 Jay Belanger +2007-05-19 Chong Yidong - * calc/calc.el (calc-display-raw): Fix docstring. + * paren.el (show-paren-function): Undo 2007-04-19 and 2007-04-20 + changes. -2005-01-18 Stefan Monnier +2007-05-19 Kevin Ryde - * simple.el (blink-matching-open): Strip extra info from syntax. + * info.el (Info-fontify-node): Fontify https as well as http and ftp. - * progmodes/sh-script.el (sh-here-doc-open-re): Don't allow | or other - funny chars in the end-of-here-doc marker. +2007-05-18 Thien-Thi Nguyen -2005-01-19 Nick Roberts + * textmodes/sgml-mode.el: Revert last change. - * progmodes/gdb-ui.el (gdb-put-string): Copy/create strings so - that enable/disabled state of breakpoints is shown correctly in - fringe and on ttys. - (gdb-put-breakpoint-icon, gdb-info-breakpoints-custom): - Add breakpoint information as text properties. - (gdb-mouse-toggle-breakpoint): - Rename to gdb-mouse-set-clear-breakpoint. - (gdb-mouse-toggle-breakpoint): New function. Enable/disable - breakpoints in the margin. - (gdb-remove-strings): Simplify. +2007-05-18 Richard Stallman -2005-01-17 Jay Belanger + * simple.el (push-mark): Doc fix. - * calc/calc-yank.el (calc-edit-mode): Inhibit read-only when - erasing buffer. +2007-05-18 Rob Riepel -2005-01-17 Richard M. Stallman + * emulation/tpu-edt.el (CSI-map, SS3-map): Move from global-map to + tpu-global-map. + (tpu-original-global-map): Variable deleted. + (tpu-control-keys-map): New keymap variable. + (tpu-set-control-keys): Use tpu-reset-control-keys rather than + setting keymapping directly. + (tpu-reset-control-keys): Use tpu-control-keys-map instead of + tpu-global-map. + (tpu-edt-on): Activate the tpu-global-map. + (tpu-edt-off): Deactivate the tpu-global-map. - * progmodes/grep.el (grep-find): Copy from `grep' the condition - for calling grep-compute-defaults. +2007-05-18 Ryan Yeske - * play/decipher.el (decipher-mode): Don't call decipher-read-alphabet - if buffer is empty. + * textmodes/ispell.el (ispell-get-word): Return markers + for start and end positions. + (ispell-word): Assume END is a marker. - * emacs-lisp/lisp.el (backward-kill-sexp, kill-sexp): Doc fixes. +2007-05-17 Vinicius Jose Latorre -2005-01-17 Stefan Monnier + * printing.el: Group together all XEmacs/Emacs definitions. + (pr-version): New version 6.9. + (pr-global-menubar, pr-menu-char-height, pr-menu-char-width): New funs. + (pr-menu-char-height, pr-menu-char-width): Fix initialization code. + (pr-menu-bind): Fix code. + (pr-e-frame-char-height, pr-e-frame-char-width) + (pr-e-mouse-pixel-position, pr-x-add-submenu, pr-x-event-function) + (pr-x-event-object, pr-x-find-menu-item, pr-x-font-height) + (pr-x-font-width, pr-x-get-popup-menu-response, pr-x-make-event) + (pr-x-misc-user-event-p, pr-x-relabel-menu-item, pr-x-event-x-pixel) + (pr-x-event-y-pixel): Aliases eliminated. + (pr-xemacs-global-menubar): Macro moved. + (current-menubar, current-mouse-event, zmacs-region-stays) + (deactivate-mark, pr-menu-position, pr-menu-state, pr-ps-name-old) + (pr-txt-name-old, pr-ps-utility-old, pr-even-or-odd-old, pr-temp-menu): + Vars moved. + (pr-region-active-p, pr-menu-position, pr-menu-lookup, pr-menu-lock) + (pr-update-mode-line, pr-do-update-menus, pr-menu-alist) + (pr-relabel-menu-item, pr-menu-set-ps-title, pr-menu-set-txt-title) + (pr-menu-set-utility-title, pr-even-or-odd-pages) + (pr-f-set-keymap-parents, pr-f-set-keymap-name, pr-f-read-string) + (pr-keep-region-active, pr-menu-get-item, pr-menu-set-item-name): Funs + moved. + +2007-05-17 Christian Plate (tiny change) + + * textmodes/sgml-mode.el (sgml-tag): + Fix bug: Call sgml-transformation-function. - * hilit-chg.el (highlight-changes-mode): Don't autoload. +2007-05-17 Martin Rudalics - * bindings.el (mode-line-mode-menu): Use bound-and-true-p for all the - non-preloaded variables. + * hilit-chg.el (highlight-changes-rotate-faces): Don't set + modified flag of buffer. Use `inhibit-modification-hooks'. -2005-01-17 Steven Tamm +2007-05-16 Richard Stallman - * textmodes/tex-mode.el (tex-start-shell): Adding -i to the - tex-shell cause to force interactivity when using pipes. + * buff-menu.el (Buffer-menu-sort-column): Doc fix. -2005-01-17 Kim F. Storm +2007-05-16 Stefan Monnier - * simple.el (just-one-space): Make arg optional. + * files.el (magic-mode-alist, magic-fallback-mode-alist): + Move the *ml, Postscript, and XmCD entries to the fallback part. -2005-01-17 Nick Roberts + * files.el (magic-fallback-mode-alist): + Rename from file-start-mode-alist. - * xt-mouse.el (xterm-mouse-event): Set new optional fourth arg in - posn-at-x-y to t to access left-margin. +2007-05-16 Nikolaj Schumacher (tiny change) -2005-01-16 Michael Albinus + * progmodes/compile.el (compilation-handle-exit): Quote first + argument of `run-hook-with-args'. - Sync with Tramp 2.0.47. +2007-05-16 Juanma Barranquero - * net/tramp.el (tramp-operation-not-permitted-regexp): New defcustom, - catching keep-date problems in cp/scp operations. - (tramp-handle-copy-file): Don't call `set-file-modes' - unconditionally. Specialized functions should know better what is - necessary. This improves performance a little bit, and the - functions could catch errors with `cp -p' and `scp -p'. - (tramp-do-copy-or-rename-file-via-buffer) - (tramp-do-copy-or-rename-file-out-of-band): Call `set-file-modes' - when appropriate. - (tramp-do-copy-or-rename-file-directly): Mask `cp -p' error. - Call `set-file-modes' when appropriate. - (tramp-action-out-of-band): Mask `scp -p' error. Reported by Isak - Johnsson . - (tramp-get-buffer, tramp-get-debug-buffer): Discard the undo list - of both Tramp buffer and debug buffer. Reported by Joakim Verona - . - (tramp-file-name-for-operation): Mark `shell-command' as magic for - Emacs only. + * buff-menu.el (Buffer-menu-sort-column): + * dabbrev.el (dabbrev-upcase-means-case-search): + * dired.el (dired-recursive-deletes, dired-recursive-copies): + * info.el (Info-current-subfile): + * ls-lisp.el (ls-lisp-verbosity): + * msb.el (msb-menu-cond): + * pcvs.el (cvs-dired-use-hook): + * simple.el (set-mark-command-repeat-pop): + * time.el (display-time-24hr-format, display-time-mail-file): + Doc fixes. - * net/tramp-util.el (tramp-minor-mode): New minor mode. Add it to - `find-file-hooks' and `dired-mode-hook'. - (tramp-minor-mode-map): Respective map. Add remapping for - `compile' and `recompile'. - (tramp-remap-command, tramp-recompile): New defuns. - (tramp-compile): Enable `tramp-minor-mode' and `compilation-mode' - in buffer "*Compilation*". Call the commands asynchronously. + * tutorial.el (get-lang-string, tutorial--find-changed-keys): + * printing.el (pr-ps-fast-fire): Fix typos in docstrings. - * net/tramp-vc.el (tramp-vc-do-command, tramp-vc-do-command-new) - (tramp-vc-simple-command): Call `tramp-handle-shell-command' but - `shell-command', because it isn't magic in XEmacs. Reported by - Adrian Aichner . + * view.el (view-inhibit-help-message): Fix typo in docstring. + (view-scroll-auto-exit, view-try-extend-at-buffer-end): Doc fixes. - * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add entry for - `substitute-in-file-name. - (tramp-smb-handle-substitute-in-file-name): New defun. - (tramp-smb-advice-PC-do-completion): Delete advice. - -2005-01-16 Kai Grossjohann - - * net/tramp.el (tramp-wait-for-output): Fix typo in echo processing. - Fix error in deleting region. - -2005-01-15 Richard M. Stallman - - * emacs-lisp/lisp-mnt.el (lm-with-file): Use Lisp mode in temp buffer. - In non-temp buffer, switch syntax table temporarily. - - * emacs-lisp/lisp-mode.el (indent-pp-sexp): Doc fix. - - * replace.el (occur-accumulate-lines, occur-engine): Avoid warnings. - - * tar-mode.el (tar-extract): Bind buffer-undo-list to t. - - * imenu.el (imenu--split-menu): Copy menulist before sorting. - (imenu--generic-function): Use START, not BEG, as pos of definition. - - * simple.el (just-one-space): Argument specifies number of spaces. - - * simple.el (eval-expression-print-format): Avoid warning - about edebug-active. - -2005-01-15 James R. Van Zandt (tiny change) - - * progmodes/sh-script.el: Code copied from make-mode.el - with small changes, - (sh-mode-map): Bind C-c C-\. - (sh-backslash-column, sh-backslash-align): New variables. - (sh-backslash-region, sh-append-backslash): New functions. - -2005-01-15 Sergey Poznyakoff - - * mail/rmail.el: Updated to work with movemail from GNU Mailutils - (rmail-pop-password, rmail-pop-password-required): Move to - rmail-obsolete group. - (rmail-set-pop-password): Rename to rmail-set-remote-password. - All callers updated. - (rmail-get-pop-password): Rename to rmail-get-remote-password. - Take an argument specifying whether it is POP or IMAP mailbox we - are using. All callers updated. - (rmail-pop-password-error): Rename to - rmail-remote-password-error. Added mailutils-specific error message. - (rmail-movemail-search-path) - (rmail-movemail-variant-in-use): New variables. - (rmail-remote-password, rmail-remote-password-required): - New customization variables. - (rmail-probe, rmail-autodetect, rmail-movemail-variant-p): New funs. - (rmail-parse-url): New function. - (rmail-get-new-mail, rmail-insert-inbox-text): Update for use - with GNU mailutils movemail. - -2005-01-15 Kevin Ryde - - * info-look.el (c-mode/symbol): Add ^` to prefix, and change - suffix to space, $ or '$, to correctly position point when going - to @table style constants like DBL_MAX. - -2005-01-15 Jorgen Schaefer (tiny change) - - * type-break.el (type-break-mode, type-break-file-time) - (type-break-file-keystroke-count, type-break-choose-file): - Don't store data in or load data from the file if type-break-file-name - is nil. - (type-break-file-name): Doc update as per the above. - -2005-01-15 Stephen Eglen (tiny change) - - * woman.el (woman-dired-define-key-maybe): If KEY is undefined, - lookup-key might return nil; handle that. - -2005-01-15 Alan Mackenzie - - * ebrowse.el (ebrowse-class-in-tree): Return the tail of the tree - rather than the element found, thus enabling the tree to be setcar'd. - -2005-01-14 Carsten Dominik +2007-05-16 Martin Rudalics - * textmodes/org.el (org-show-following-heading): New option. - (org-show-hierarchy-above): Use `org-show-following-heading'. - (org-cycle): Documentation fix. + * textmodes/ispell.el (ispell-start-process): Defend against bad + default-directory. - * textmodes/org.el (orgtbl-optimized): New option - (orgtbl-mode): New command, a minor mode. - (orgtbl-mode-map): New variable. - (turn-on-orgtbl, orgtbl-mode, orgtbl-make-binding) - (orgtbl-error, orgtbl-self-insert-command) - (orgtbl-delete-backward-char, orgtbl-delete-char): New functions. +2007-05-14 Eli Zaretskii - * textmodes/org.el (org-mode): `org-table-may-need-update' is now - a local variable in each org-mode buffer. + * mail/rmail.el (rmail-convert-to-babyl-format): Check + content-transfer-encoding _last_, because it's its position that + we need as value of base64-header-field-end. - * textmodes/org.el (org-set-regexps-and-options): Rename from - `org-set-regexps'. Added checking for STARTUP keyword. - (org-get-current-options): Add STARTUP options. - (org-table-insert-row): Make mode intelligent about when - realignment is needed. - (org-self-insert-command, org-delete-backward-char, org-delete-char): - New commands. - (org-enable-table-editor): New default value `optimized'. - (org-table-blank-field): Support blanking regions if active. +2007-05-14 Juanma Barranquero -2005-01-14 Carsten Dominik + * files.el (mode-require-final-newline, require-final-newline) + (enable-local-variables, enable-local-eval): Doc fixes. - * textmodes/reftex-cite.el (reftex-bib-sort-year): Catch the case - if the year is not given. +2007-05-13 Vinicius Jose Latorre - * textmodes/reftex-ref.el (reftex-replace-prefix-escapes): - Add new escapes %m and %M, fixed bug with %F by adding - save-match-data. - (reftex-reference): Remove ?. from list of spaces. - (reftex-label-info): Add automatic label prefix recognition. - - * textmodes/reftex-index.el (reftex-index-next-phrase): - Add slave parameter to call of `reftex-index-this-phrase'. - (reftex-index-this-phrase): New optional argument. - (reftex-index-region-phrases): Add slave parameter to call of - `reftex-index-this-phrase'. - (reftex-display-index): New argument redo. - (reftex-index-rescan): Add `redo' to arguments of - `reftex-display-index'. - (reftex-index-Rescan, reftex-index-revert) - (reftex-index-switch-index-tag): Add `redo' to arguments of - `reftex-display-index'. - (reftex-index-make-phrase-regexp): Fix bug with case-sensitive - indexing. Fix bug with matching is there is a quote before or - after the word. - - * textmodes/reftex-cite.el (reftex-all-used-citation-keys): - Fix bug when collecting citation keys in lines with comments. - (reftex-citation): Prefix argument no longer rescans the document, - but forces prompting for optional arguments of cite macros. - (reftex-do-citation): Prompting for optional arguments implemented. - - * textmodes/reftex-vars.el (reftex-cite-format-builtin): - Add optional arguments to most cite commands. - (reftex-cite-cleanup-optional-args): New option - (reftex-cite-prompt-optional-args): New option. - (reftex-trust-label-prefix): New option. - - * textmodes/reftex-toc.el (reftex-toc-find-section): - Add push-mark before changing the position in the buffer. - - * textmodes/reftex.el (reftex-prefix-to-typekey-alist): New variable. - (reftex-compile-variables): Compute reftex-prefix-to-typekey-alist. - -2005-01-14 Nick Roberts - - * xt-mouse.el (xterm-mouse-event): Compute window co-ordinates - more carefully. - -2005-01-13 Stefan Monnier - - * textmodes/sgml-mode.el (sgml-fill-nobreak): New fun. - (sgml-mode): Use it. - (sgml-get-context): Better keep track of implicitly closed tags. - -2005-01-13 Kenichi Handa - - * textmodes/ispell.el: These changes are to fix misalignment error - caused by equivalent characters of different Emacs charsets. - (ispell-unified-chars-table): New variable. - (ispell-get-decoded-string): New function. - (ispell-get-casechars, ispell-get-not-casechars) - (ispell-get-otherchars): Call ispell-get-decoded-string. - -2005-01-12 Johan Bockg,Ae(Brd - - * custom.el (custom-declare-variable): Just put symbol instead - of (defvar . symbol) in `current-load-list'. - -2005-01-12 Reiner Steib - - * emacs-lisp/elint.el: Fixed typo in Commentary section. - -2005-01-12 Jay Belanger - - * calc/calc-help.el (calc-describe-key): Use temporary info buffer - to create a Calc summary. - -2005-01-12 Kim F. Storm - - * mouse.el (mouse-on-link-p): Change functionality and doc - string to comply with latest description in lisp ref. - -2005-01-12 Nick Roberts - - * xt-mouse.el (xterm-mouse-translate, xterm-mouse-event): - Enable mouse clicks on mode-line, header-line and margin. - (event-type): Give mouse event symbols an `event-kind' property - with value `mouse-click'. - -2005-01-12 Juri Linkov - - * facemenu.el (list-colors-display): Add new arg buffer-name. - Use it. Fix docstring. Replace code for identifying duplicate - colors by the name with call to `list-colors-duplicates' which - identifies duplicate colors by the value unless the color - is one of special Windows colors. Set truncate-lines to t. - Print sorted duplicate color names on each line. Indent to 22 - \(the longest color name in rgb.txt) instead of 20. Optimize. - (list-colors-duplicates): New function. - (facemenu-color-name-equal): Delete function. + * ps-print.el: Use default color when foreground or background color + are unspecified. Reported by Leo . + (ps-print-version): New version 6.7.4. + (ps-rgb-color): New argument. Use default color when color is + unspecified. + (ps-begin-job): Fix code. - * facemenu.el (list-colors-print): New function created from code - in list-colors-display. Print #RRGGBB at the window right edge. - (list-colors-display): When temp-buffer-show-function is not - defined, call list-colors-print from temp-buffer-show-hook - to get the right value of window-width in list-colors-print - after the buffer is displayed. - - * simple.el (pop-mark): Move deactivate-mark out of conditional - part to deactivate the active mark regardless of the state of the - mark ring. - - * desktop.el (desktop-save): Add `mode: emacs-lisp' to the local - variables line in desktop files. - -2005-01-12 Juri Linkov - - * isearch.el (search-highlight, isearch, isearch-lazy-highlight): - Bring together isearch highlight related options. - (lazy-highlight): Replace group `replace' by `matching'. - (lazy-highlight-cleanup, lazy-highlight-initial-delay) - (lazy-highlight-interval, lazy-highlight-max-at-a-time) - (lazy-highlight): Add aliases to old names isearch-lazy-highlight-... - and declare them obsolete. - (lazy-highlight-face): Rename from isearch-lazy-highlight-face. - (isearch-faces): Remove defgroup. - (isearch-overlay, isearch-highlight, isearch-dehighlight): - Move isearch highlighting code closer to lazy highlighting code. - - * replace.el (query-replace-lazy-highlight): Add lazy-highlight group. - (query-replace-highlight, query-replace-lazy-highlight) - (query-replace): Move definitions to the beginning of the file. - -2005-01-11 Juri Linkov - - * toolbar/back_arrow.xpm, toolbar/back_arrow.pbm - * toolbar/lc-back_arrow.xpm, toolbar/lc-fwd_arrow.xpm - * toolbar/fwd_arrow.xpm, toolbar/fwd_arrow.pbm: New icons. - - * info.el (Info-history-forward): New variable. - (Info-select-node): Reset Info-history-forward to nil. - (Info-last): Turn into defalias. - (Info-history-back): Rename from Info-last. - Add current node to Info-history-forward. - (Info-history-forward): New fun. - (Info-mode-map): Replace Info-last by Info-history-back. - Bind Info-history-forward to "r". - (Info-mode-menu): Replace Info-last by Info-history-back. - Fix menu item text. Add menu item for Info-history-forward. - (info-tool-bar-map): Replace Info-last by Info-history-back. - Replace its icon "undo" by "back_arrow". Add icon "fwd_arrow" - for Info-history-forward. - (Info-mode): Replace Info-last by Info-history-back in docstring. - Add local variable Info-history-forward. - (Info-goto-emacs-command-node): Replace Info-last by Info-history-back. - -2005-01-11 Stefan Monnier - - * mouse.el (mouse-drag-mode-line-1, mouse-drag-vertical-line) - (mouse-drag-region, mouse-drag-region-1, mouse-drag-secondary): - Ignore select-window events rather than fiddle with - mouse-autoselect-window. - -2005-01-11 Matthew Mundell - - * type-break.el (type-break-mode): Fix previous change. - -2005-01-10 Jay Belanger - - * calc/calc-ext.el (calc-reset): Reset when inside embedded - calculator; only reset when point is inside a calculator. - Don't adjust the window height if the window takes up the whole height - of the frame. - -2005-01-10 Thien-Thi Nguyen - - * ebuff-menu.el (Electric-buffer-menu-mode): - Preserve value of buffer-local var header-line-format. - -2005-01-09 Jay Belanger - - * calc/calc.el (calc-mode-var-list-restore-saved-values): - Make sure settings file exists before accessing it. - - * calc/calc-embed.el (calc-embedded-subst): - Replace math-multi-subst-rec, which is only supposed to be called - by math-multi-subst, by math-multi-subst. - -2005-01-09 Andre Spiegel - - * vc.el (vc-allow-async-revert): New user option. - (vc-disable-async-diff): New internal variable. - (vc-revert-buffer): Use them to disable asynchronous diff. - - * vc-cvs.el, vc-arch.el, vc-svn.el, vc-mcvs.el (vc-cvs-diff) - (vc-arch-diff, vc-svn-diff, vc-mcvs-diff): Don't diff - asynchronously if vc-disable-async-diff is t. - -2005-01-09 Jay Belanger - - * calc/calc.el (defcalcmodevar): New macro. - (calc-mode-var-list-restore-default-values) - (calc-mode-var-list-restore-saved-values): New functions. - (calc-mode-var-list): Use defcalcmodevar to define it. - (calc-always-load-extensions, calc-line-numbering) - (calc-line-breaking, calc-display-just, calc-display-origin) - (calc-number-radix, calc-leading-zeros, calc-group-digits) - (calc-group-char, calc-point-char, calc-frac-format) - (calc-prefer-frac, calc-hms-format, calc-date-format) - (calc-float-format, calc-full-float-format, calc-complex-format) - (calc-complex-mode, calc-infinite-mode, calc-display-strings) - (calc-matrix-just, calc-break-vectors, calc-full-vectors) - (calc-full-trail-vectors, calc-vector-commas, calc-vector-brackets) - (calc-matrix-brackets, calc-language, calc-language-option) - (calc-left-label, calc-right-label, calc-word-size) - (calc-previous-modulo, calc-simplify-mode, calc-auto-recompute) - (calc-display-raw, calc-internal-prec, calc-angle-mode) - (calc-algebraic-mode, calc-incomplete-algebraic-mode) - (calc-symbolic-mode, calc-matrix-mode, calc-shift-prefix) - (calc-window-height, calc-display-trail, calc-show-selections) - (calc-use-selections, calc-assoc-selections) - (calc-display-working-message, calc-auto-why, calc-timing) - (calc-mode-save-mode, calc-standard-date-formats, calc-autorange-units) - (calc-was-keypad-mode, calc-full-mode, calc-user-parse-tables) - (calc-gnuplot-default-device, calc-gnuplot-default-output) - (calc-gnuplot-print-device, calc-gnuplot-print-output) - (calc-gnuplot-geometry, calc-graph-default-resolution) - (calc-graph-default-resolution-3d, calc-invocation-macro) - (calc-show-banner): Use defcalcmodevar to declare them and set - their default values. +2007-05-12 Chong Yidong - * calc/calc-ext.el (calc-reset): Restore saved values of variables - instead of default values (but restore default values if there is - an argument of 0). + * longlines.el (longlines-mode): Make longlines-auto-wrap + buffer-local. Add hooks unconditionally. + (longlines-auto-wrap): Toggle wrapping. + (longlines-after-change-function) + (longlines-post-command-function): Check longlines-auto-wrap. -2005-01-09 David Kastrup +2007-05-12 Nick Roberts - * desktop.el (desktop-restore-eager): Fix typo in type. + * xt-mouse.el (xterm-mouse-debug-buffer): New variable. + (xterm-mouse-translate): Use it. -2005-01-08 Richard M. Stallman +2007-05-10 Richard Stallman - * cus-edit.el (customize): Delete :link. + * international/iso-cvt.el (iso-cvt-read-only): Ignore arguments. + (iso-cvt-write-only): Likewise. -2005-01-08 Jay Belanger + * emacs-lisp/easy-mmode.el (define-minor-mode): + Fix generated doc string. - * calc/calc.el (calc-mode): Remove the extension from the - `calc-settings-file' file name when loading it. + * startup.el (fancy-splash-text): Add URL of guided tour. + Adjust horizontal and vertical whitespace. -2005-01-08 Kim F. Storm + * progmodes/compile.el (compilation-handle-exit): + Use run-hook-with-args to run compilation-finish-functions. - * info.el (Info-mode-map, Info-next-link-keymap) - (Info-prev-link-keymap, Info-up-link-keymap): - Map follow-link to mouse-face. - (Info-fontify-node): Add "mouse-2: " prefix to tooltip. + * files.el (file-start-mode-alist): New variable. + (magic-mode-regexp-match-limit): Doc fix. + (set-auto-mode): Handle file-start-mode-alist. + A little cleanup of structure. -2005-01-08 Jay Belanger + * dabbrev.el (dabbrev-eliminate-newlines): + Renamed from dabbrev--eliminate-newlines. All uses changed. - * calc/calc.el (calc-settings-file): Change default value. - Suggested by cgw in a comment in calc-mode.el. +2007-05-10 Micha,Ak(Bl Cadilhac - * calc/calc-mode.el (calc-settings-file-name): - Compare calc-settings-file to user-init-file instead of ~/.emacs. - Replace ~/.emacs in a prompt by calc-settings-file. + * man.el (Man-next-section): Don't consider the last line of the page + as being part of any section. -2005-01-07 Lars Hansen +2007-05-10 Stefan Monnier - * desktop.el (desktop-restore-eager, desktop-lazy-verbose) - (desktop-lazy-idle-delay): New customizable variables. - (desktop-buffer-args-list): New variable. - (desktop-append-buffer-args): New function. - (desktop-save): Call desktop-append-buffer-args for some buffers. - (desktop-lazy-create-buffer): New function. - (desktop-idle-create-buffers): New function. - (desktop-read): Add message about buffers to restore lazily. - (desktop-lazy-abort): New command. - (desktop-clear): Call desktop-lazy-abort. - (desktop-lazy-complete): New command. + * textmodes/sgml-mode.el (sgml-value): Fix handling of attributes which + can take any number of values. -2005-01-06 Richard M. Stallman +2007-05-09 Stefan Monnier - * emacs-lisp/find-func.el (find-face-definition): - Rename from find-face. + * textmodes/tex-mode.el (tex-font-lock-keywords-2): Add citet and citep + to the list of citation commands. -2005-01-06 Kim F. Storm +2007-05-09 Stefan Monnier - * simple.el (completion-list-mode-map): Map follow-link to mouse-face. + * vc-hooks.el (vc-find-root): Stop searching when the user changes. - * man.el (Man-xref-man-page, Man-xref-header-file) - (Man-xref-normal-file): Add follow-link property. +2007-05-09 Edward O'Connor (tiny change) -2005-01-06 Jay Belanger + * progmodes/python.el (python-font-lock-keywords) + (python-open-block-statement-p, python-mode): Add support for the new + "with" keyword. - * calc/calc-units.el: Make sure the proper macro definitions are - available when compiling. +2007-05-08 Stefan Monnier -2005-01-06 Juri Linkov + * diff-mode.el (diff-apply-hunk, diff-test-hunk): Don't do by default + the exact opposite of diff-goto-source. - * isearch.el (isearch-lazy-highlight-update): - Rename `isearch-lazy-highlight-interval' to `lazy-highlight-interval'. + * emacs-lisp/advice.el (ad-special-forms): Remove. + (ad-special-form-p): Use subr-arity. -2005-01-06 Miles Bader + * newcomment.el (comment-search-forward): Make sure we search forward. + (comment-enter-backward): Try and distinguish the non-matching case at + EOB from the non-matching case with a missing comment-end-skip for + a 2-char comment ender. + (comment-choose-indent): New function extracted from comment-indent. + Improve the alignment algorithm. + (comment-indent): Use it. - * isearch.el (lazy-highlight): Rename from `lazy-highlight-face'. - (isearch-lazy-highlight-face): Use new name. + * textmodes/sgml-mode.el (sgml-lexical-context): Add handling of + XML style Processing Instructions. + (sgml-parse-tag-backward): Handle XML-style PIs. Also ensure progress. + (sgml-calculate-indent): Handle `pi' context. -2005-01-05 Stefan Monnier + * vc.el: Ensure that update-changelog issues an error when used with + a backend that does not implement it. + (vc-update-changelog-rcs2log): Rename from vc-default-update-changelog. + Remove `backend' argument. Use expand-file-name. + (vc-cvs-update-changelog, vc-rcs-update-changelog): New aliases. - * uniquify.el (uniquify-rationalize-file-buffer-names): - Re-add an interactive spec. - (uniquify-rationalize-file-buffer-names): Fix corner case when renaming - to the same name. + * progmodes/python.el (python-end-of-block): Revert last change. + (python-end-of-statement): Make sure we move *forward*. - * isearch.el (isearch-dehighlight): Remove unused arg `totally'. - (isearch-update, isearch-done): Adjust calls accordingly. +2007-05-08 Richard Stallman -2005-01-05 Richard M. Stallman + * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook): + Don't include non-self-insert commands in the exception for `-'. - * custom.el (custom-set-variables, custom-theme-set-variables): - Clarify documentation. +2007-05-08 David Reitter - * emacs-lisp/find-func.el (find-variable) - (find-variable-other-window, find-variable-other-frame): - Fix the TYPE args to find-function-read and find-function-do-it. - (find-function): Doc fix. - (find-function-at-point): Replace function-at-point alias. + * progmodes/python.el (python-guess-indent): Check non-nullness + before comparing indent against the 2..8 interval. -2005-01-04 Richard M. Stallman +2007-05-07 YAMAMOTO Mitsuharu - * cus-face.el (custom-declare-face): - Record defface in current-load-list. + * term/mac-win.el (mac-ts-unicode-for-key-event): Check if text is + available. - * help-fns.el (variable-at-point): New arg ANY-SYMBOL. +2007-05-06 Richard Stallman - * emacs-lisp/find-func.el: Doc fixes. - (find-face-regexp): New variable. - (find-function-regexp-alist): New variable. - (find-function-C-source): Third arg is now TYPE. - (find-function-search-for-symbol): Handle general TYPE. - (find-function-read, find-function-do-it): Handle general TYPE. - (find-definition-noselect, find-face): New functions. - (function-at-point): Alias deleted. + * emacs-lisp/eldoc.el (turn-on-eldoc-mode): Doc fix. -2005-01-04 Stefan Monnier +2007-05-05 Stefan Monnier - * battery.el (display-battery-mode): Rename from display-battery. - Handle the case where it gets turned off. + * diff.el (diff): Use buffer-local vars diff-old-file and diff-new-file + rather than storing their value in the revert-buffer function. -2005-01-04 Richard M. Stallman +2007-05-04 Nick Roberts - * cus-edit.el (customize): Make :link point to user doc. + * t-mouse.el (t-mouse-mode): Do nothing on a graphical display + when disabling t-mouse-mode. - * man.el (Man-fontify-manpage): Turn off undo generation. +2007-05-01 Davis Herring - * add-log.el (change-log-font-lock-keywords): Don't match just "From". + * calendar/timeclock.el: Update version number. + (timeclock-modeline-display): Mention timeclock-use-display-time + in explanatory message. + (timeclock-in): Fix non-interactive workday specifications. + (timeclock-log): Don't kill the log buffer if it already existed. + Suppress warnings when finding the log. Don't check for a nil + project twice. Run hooks after killing the buffer (if applicable). + (timeclock-geometric-mean): Rename to `timeclock-mean' (it never + was geometric). All uses changed. + (timeclock-generate-report): Support prefix argument. -2005-01-04 Andreas Schwab +2007-05-03 Ryan Yeske - * files.el (insert-directory): Only look for error lines in - inserted text. Don't move too far after processing --dired markers. + * net/rcirc.el (rcirc-timeout-seconds): Increase to prevent unwanted + disconnections. -2005-01-04 Richard M. Stallman +2007-05-01 Romain Francoise - * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook): - Don't expand if the character is @, period, dash, etc. - (define-mail-abbrev): Quote names that contain problem characters. + * dired-x.el: Revert 2007-04-06 change. -2005-01-04 Thien-Thi Nguyen +2007-04-29 Stephen Berman - * progmodes/hideshow.el: No longer require `cl'; `dolist' is standard. + * find-dired.el (find-dired-filter): Propertize all text down to eob. -2005-01-03 Richard M. Stallman +2007-04-29 Richard Stallman - * replace.el (replace-dehighlight): Use lazy-highlight-cleanup. - (query-replace-highlight, query-replace-lazy-highlight) - (query-replace): Definitions moved up. Doc fix. + * international/mule.el (auto-coding-alist): Add pdf => no-conversion. -2005-01-03 Richard M. Stallman +2007-04-28 Stefan Monnier - * isearch.el (lazy-highlight): Group renamed from isearch-lazy-... - (lazy-highlight-cleanup, lazy-highlight-initial-delay) - (lazy-highlight-interval, lazy-highlight-max-at-a-time) - (lazy-highlight-face): Rename from isearch-lazy-... - Change all references to them. + * progmodes/cc-mode.el (c-before-change): Use point-min rather + than 1. -2005-01-03 Luc Teirlinck +2007-04-28 Richard Stallman - * cus-edit.el (custom-file): Doc fix for defcustom. - (custom-file): The function no longer sets the variable - `custom-file' to its return value. + * progmodes/sh-script.el (sh-mode): Recognize .profile as sh style. - * startup.el (command-line): No longer load `custom-file'. +2007-04-28 Nick Roberts -2005-01-03 Stefan Monnier + * progmodes/gud.el (gud-menu-map): Pdb can't handle SIGINT so + don't put stop on toolbar. - * emacs-lisp/find-func.el (find-variable-regexp): Avoid defface. +2007-04-28 Stefan Monnier - * progmodes/perl-mode.el (perl-nochange, perl-calculate-indent): - Don't confuse module-prefixed identifiers for labels. - Reported by Juan-Leon Lahoz Garcia . + * vc-hooks.el (vc-ignore-dir-regexp): Add /.../ for the DFS filesystem. -2005-01-02 Richard M. Stallman +2007-04-28 Eli Zaretskii - * files.el (basic-save-buffer-1): Fix previous change. + * makefile.w32-in ($(lisp)/mh-e/mh-loaddefs.el): Use ./mh-e + instead of $(lisp)/mh-e. - * loadhist.el (file-loadhist-lookup): New function. - (file-provides, file-requires): Use it. +2007-04-28 Glenn Morris - * electric.el (Electric-pop-up-window): Use fit-window-to-buffer - instead of calculating the right size. + * image-dired.el (image-dired-cmd-create-thumbnail-options) + (image-dired-cmd-create-temp-image-options): Replace option + +profile "*" with -strip. -2005-01-02 Karl Chen +2007-04-27 Chong Yidong - * vc-svn.el (vc-svn-diff): Stay local if possible. + * textmodes/flyspell.el (flyspell-auto-correct-previous-word): + Use window-start and window-end. -2005-01-02 Stefan Monnier +2007-04-27 Andreas Schwab - * vc-arch.el (vc-arch-workfile-version): Handle the empty-branch case. + * emacs-lisp/sregex.el (sregexq): Fix doc string quoting. - * files.el (hack-local-variables): Fix last change. +2007-04-27 Eli Zaretskii -2005-01-02 Jay Belanger + * textmodes/fill.el (fill-paragraph): Doc fix. - * calc/calc-yank.el (calc-edit-top): New variable. - (calc-edit-mode): Set calc-edit-top to be the beginning of the edited - object. Change header properties. - (calc-edit-finish, calc-edit-finish-stack-object) - (calc-edit-show-buffer): Use calc-edit-top to find the beginning of the - edited object. - * calc/calc-sel.el (calc-finish-selection-edit): Use calc-edit-top - for the beginning of the edited object. - * calc/calc-embed.el (calc-embedded-finish-edit): Use calc-edit-top - for the beginning of the edited object. - * calc/calc-prog.el (calc-edit-macro-finish-edit) - (calc-finish-formula-edit, calc-macro-repeats) - (calc-edit-macro-adjust-buffer, calc-edit-format-macro-buffer) - (calc-edit-macro-pre-finish-edit): Use calc-edit-top for the - beginning of the edited object. - (calc-user-define-edit): Change the header for editing macros. - Remove unnecessary variable. +2007-04-26 Luc Teirlinck -2005-01-01 Jay Belanger + * locate.el (locate-in-alternate-database): Doc fix. - * calc/calc-yank.el (calc-edit-mode): Change default header. - (calc-edit-finish, calc-show-edit-buffer): Adjust to handle new header. - * calc/calc-store.el (calc-edit-variable): Change title to match new - header. - * calc/calc-prog.el (calc-edit-user-syntax): Change title in edit - mode to match new header. - (calc-user-define-edit): Change titles to include names of commands. - (calc-finish-formula-edit): Adjust to handle new header. - (calc-finish-macro-edit): Remove. - (calc-edit-macro-repeats, calc-edit-macro-adjust-buffer) - (calc-edit-macro-command, calc-edit-macro-command-type) - (calc-edit-macro-combine-alg-ent, calc-edit-macro-combine-ext-command) - (calc-edit-macro-combine-var-name, calc-edit-macro-combine-digits) - (calc-edit-format-macro-buffer, calc-edit-macro-pre-finish-edit) - (calc-edit-macro-finish-edit): New functions. - (calc-user-define-edit): Use new functions to edit named calc macros. +2007-04-26 Glenn Morris -2005-01-01 Stefan Monnier + * button.el (button): Use underline if supported, else fall back + to color. - * files.el (hack-local-variables): Cleanup prefix/suffix matching. + * version.el (emacs-version): Increase to 22.1.50. - * ses.el (copy-region-as-kill): Deactivate mark. +2007-04-25 Richard Stallman -2005-01-01 Richard M. Stallman + * hi-lock.el (hi-lock-file-patterns-policy): Default to `ask'. - * replace.el (occur-1): If the output buffer is also an input, - don't kill it, rename it. +2007-04-25 J.D. Smith - * faces.el (set-face-background, set-face-foreground): Doc fix. + * progmodes/idlwave.el (idlwave-beginning-of-subprogram) + (idlwave-end-of-subprogram): Take optional NOMARK arg to prevent + pushing mark. + (idlwave-current-routine): Don't push mark. - * cus-face.el (custom-face-attributes): Fix :help-echo strings - for :foreground and :background. +2007-04-25 Mathias Dahl - * dired.el (dired-view-command-alist): Variable deleted. - (dired-view-file, dired-mouse-find-file-other-window): - Delete the code to use it. + * image-dired.el (image-dired-display-image): Derive image-type from + filename rather than assuming jpeg, in case no resizing was needed. -2005-01-01 Kim F. Storm +2007-04-25 Johan Bockg,Ae(Brd - * image.el (insert-sliced-image): Use t for line-height property. + * custom.el (defface): Doc fix. -See ChangeLog.11 for earlier changes. +See ChangeLog.12 for earlier changes. ;; Local Variables: ;; coding: iso-2022-7bit diff --cc lisp/files.el index 33bf434a9f6,054f0e7d3a0..f4881911381 --- a/lisp/files.el +++ b/lisp/files.el @@@ -1177,11 -1141,9 +1186,11 @@@ file names with wildcards. (defun find-file-read-only (filename &optional wildcards) "Edit file FILENAME but don't allow changes. - Like \\[find-file] but marks buffer as read-only. + Like \\[find-file], but marks buffer as read-only. Use \\[toggle-read-only] to permit editing." - (interactive (find-file-read-args "Find file read-only: " nil)) + (interactive + (find-file-read-args "Find file read-only: " + (if find-file-confirm-nonexistent-file 'confirm-only))) (unless (or (and wildcards find-file-wildcards (not (string-match "\\`/:" filename)) (string-match "[[*?]" filename)) @@@ -1194,11 -1156,9 +1203,11 @@@ (defun find-file-read-only-other-window (filename &optional wildcards) "Edit file FILENAME in another window but don't allow changes. - Like \\[find-file-other-window] but marks buffer as read-only. + Like \\[find-file-other-window], but marks buffer as read-only. Use \\[toggle-read-only] to permit editing." - (interactive (find-file-read-args "Find file read-only other window: " nil)) + (interactive + (find-file-read-args "Find file read-only other window: " + (if find-file-confirm-nonexistent-file 'confirm-only))) (unless (or (and wildcards find-file-wildcards (not (string-match "\\`/:" filename)) (string-match "[[*?]" filename)) @@@ -1211,11 -1171,9 +1220,11 @@@ (defun find-file-read-only-other-frame (filename &optional wildcards) "Edit file FILENAME in another frame but don't allow changes. - Like \\[find-file-other-frame] but marks buffer as read-only. + Like \\[find-file-other-frame], but marks buffer as read-only. Use \\[toggle-read-only] to permit editing." - (interactive (find-file-read-args "Find file read-only other frame: " nil)) + (interactive + (find-file-read-args "Find file read-only other frame: " + (if find-file-confirm-nonexistent-file 'confirm-only))) (unless (or (and wildcards find-file-wildcards (not (string-match "\\`/:" filename)) (string-match "[[*?]" filename)) diff --cc lisp/gnus/ChangeLog index b92df11778b,1def50da1e3..89d9d75c60e --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@@ -1,19 -1,48 +1,64 @@@ +2007-10-04 Juanma Barranquero + + * sieve-manage.el (sieve-manage-interactive-login): Doc fix. + (sieve-manage-open): Use `mapc' instead of `mapcar'. + +2007-10-02 Stefan Monnier + + * gnus-uu.el (gnus-uu-reginize-string, gnus-uu-expand-numbers): + Don't hardcode point-min==1. + +2007-09-30 David Kastrup + + * gnus-art.el (gnus-article-reply-with-original) + (gnus-article-followup-with-original): When `transient-mark-mode' is + off, refrain from active-region behavior for followups. + + 2007-10-08 Reiner Steib + + * mm-util.el (mm-charset-synonym-alist): Alias gbk to cp936. + + 2007-10-04 Reiner Steib + + * Relicense "GPLv2 or later" files to "GPLv3 or later". + + 2007-09-13 Katsumi Yamaoka + + * gnus-sum.el (gnus-newsgroup-maximum-articles): Move from gnus.el. + Suggested by Leo . + + * gnus.el: Do. + + 2007-09-13 Katsumi Yamaoka + + * gnus.el (gnus-newsgroup-maximum-articles): Rename from + gnus-maximum-newsgroup. Suggested by Leo . + + * gnus-agent.el (gnus-agent-fetch-headers): Do. + + * gnus-sum.el (gnus-articles-to-read, gnus-list-of-unread-articles) + (gnus-list-of-read-articles, gnus-sequence-of-unread-articles): Do. + + 2007-09-13 Katsumi Yamaoka + + * nnmbox.el (nnmbox-request-article): Don't assume delim regexp matches + newline. + (nnmbox-request-accept-article): Don't change article in source buffer; + narrow to header to use message-fetch-field rather than + nnmail-fetch-field; use with-current-buffer instead of save-excursion. + (nnmbox-request-replace-article): Quote lines that'll be misidentified + as delimiters; make sure article ends with newline. + (nnmbox-delete-mail): Correct last position of article to be deleted; + ignore X-Gnus-Newsgroup header in article body. + (nnmbox-save-mail): Quote lines looking like delimiters at the right + positions; make sure article ends with newline. + + 2007-09-05 Katsumi Yamaoka + + * gnus-cus.el (gnus-score-extra): New widget. + (gnus-score-extra-convert): New function. + (gnus-score-customize): Use it for Extra. + 2007-08-23 Katsumi Yamaoka * mml.el (mml-generate-mime): Make sure it uses multibyte temp buffer. diff --cc lisp/log-view.el index 65a0dacd794,99f7ad7e764..b215917a559 --- a/lisp/log-view.el +++ b/lisp/log-view.el @@@ -89,9 -89,10 +89,10 @@@ (easy-mmode-defmap log-view-mode-map '(("q" . quit-window) ("z" . kill-this-buffer) - ("m" . set-mark-command) + ("m" . log-view-toggle-mark-entry) ;; ("e" . cvs-mode-edit-log) ("d" . log-view-diff) + ("a" . log-view-annotate-version) ("f" . log-view-find-version) ("n" . log-view-msg-next) ("p" . log-view-msg-prev) @@@ -238,49 -245,51 +246,94 @@@ The match group number 1 should match t (unless (re-search-forward log-view-file-re pt t) rev)))))) +(defun log-view-toggle-mark-entry () + "Toggle the marked state for the log entry at point. +Individual log entries can be marked and unmarked. The marked +entries are denoted by changing their background color. +`log-view-get-marked' returns the list of tags for the marked +log entries." + (interactive) + (save-excursion + (forward-line 1) + (let ((pt (point))) + (when (re-search-backward log-view-message-re nil t) + (let ((beg (match-beginning 0)) + end ov ovlist found tag) + (unless (re-search-forward log-view-file-re pt t) + ;; Look to see if the current entry is marked. + (setq found (get-char-property (point) 'log-view-self)) + (if found + (delete-overlay found) + ;; Create an overlay that covers this entry and change + ;; it's color. + (setq tag (log-view-current-tag (point))) + (forward-line 1) + (setq end + (if (re-search-forward log-view-message-re nil t) + (match-beginning 0) + (point-max))) + (setq ov (make-overlay beg end)) + (overlay-put ov 'face 'log-view-file) + ;; This is used to check if the overlay is present. + (overlay-put ov 'log-view-self ov) + (overlay-put ov 'log-view-marked tag)))))))) + +(defun log-view-get-marked () + "Return the list of tags for the marked log entries." + (save-excursion + (let ((pos (point-min)) + marked-list ov) + (while (setq pos (next-single-property-change pos 'face)) + (when (setq ov (get-char-property pos 'log-view-self)) + (push (overlay-get ov 'log-view-marked) marked-list) + (setq pos (overlay-end ov)))) + marked-list))) + + (defun log-view-beginning-of-defun () + ;; This assumes that a log entry starts with a line matching + ;; `log-view-message-re'. Modes that derive from `log-view-mode' + ;; for which this assumption is not valid will have to provide + ;; another implementation of this function. `log-view-msg-prev' + ;; does a similar job to this function, we can't use it here + ;; directly because it prints messages that are not appropriate in + ;; this context and it does not move to the beginning of the buffer + ;; when the point is before the first log entry. + + ;; `log-view-beginning-of-defun' and `log-view-end-of-defun' have + ;; been checked to work with logs produced by RCS, CVS, git, + ;; mercurial and subversion. + + (re-search-backward log-view-message-re nil 'move)) + + (defun log-view-end-of-defun () + ;; The idea in this function is to search for the beginning of the + ;; next log entry using `log-view-message-re' and then go back one + ;; line when finding it. Modes that derive from `log-view-mode' for + ;; which this assumption is not valid will have to provide another + ;; implementation of this function. + + ;; Look back and if there is no entry there it means we are before + ;; the first log entry, so go forward until finding one. + (unless (save-excursion (re-search-backward log-view-message-re nil t)) + (re-search-forward log-view-message-re nil t)) + + ;; In case we are at the end of log entry going forward a line will + ;; make us find the next entry when searching. If we are inside of + ;; an entry going forward a line will still keep the point inside + ;; the same entry. + (forward-line 1) + + ;; In case we are at the beginning of an entry, move past it. + (when (looking-at log-view-message-re) + (goto-char (match-end 0)) + (forward-line 1)) + + ;; Search for the start of the next log entry. Go to the end of the + ;; buffer if we could not find a next entry. + (when (re-search-forward log-view-message-re nil 'move) + (goto-char (match-beginning 0)) + (forward-line -1))) + (defvar cvs-minor-current-files) (defvar cvs-branch-prefix) (defvar cvs-secondary-branch-prefix) diff --cc lisp/menu-bar.el index 9a4e25ce4ef,51855d4db8e..d0da787b8a9 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@@ -1362,32 -1366,29 +1363,32 @@@ key, a click, or a menu-item") (view-file (expand-file-name "MORE.STUFF" data-directory)) (goto-address))) -(define-key menu-bar-help-menu [about-emacs] - '(menu-item "About Emacs" display-splash-screen - :help "Display version number, copyright info, and basic help")) (define-key menu-bar-help-menu [sep2] '("--")) -(define-key menu-bar-help-menu [find-emacs-packages] +(define-key menu-bar-help-menu [more] + '(menu-item "External Packages" menu-bar-help-extra-packages + :help "Lisp packages distributed separately for use in Emacs")) +(define-key menu-bar-help-menu [finder-by-keyword] '(menu-item "Find Emacs Packages" finder-by-keyword :help "Find packages and features by keyword")) - (define-key menu-bar-help-menu [manuals] + (define-key menu-bar-help-menu [more-manuals] (list 'menu-item "More Manuals" menu-bar-manuals-menu)) (define-key menu-bar-help-menu [emacs-manual] '(menu-item "Read the Emacs Manual" info-emacs-manual :help "Full documentation of Emacs features")) (define-key menu-bar-help-menu [describe] (list 'menu-item "Describe" menu-bar-describe-menu)) - (define-key menu-bar-help-menu [apropos] - (list 'menu-item "Search Documentation" menu-bar-apropos-menu)) + (define-key menu-bar-help-menu [search-documentation] + (list 'menu-item "Search Documentation" menu-bar-search-documentation-menu)) (define-key menu-bar-help-menu [sep1] '("--")) -(define-key menu-bar-help-menu [send-emacs-bug-report] +(define-key menu-bar-help-menu [eliza] + '(menu-item "Emacs Psychotherapist" doctor + :help "Our doctor will help you feel better")) +(define-key menu-bar-help-menu [report-emacs-bug] '(menu-item "Send Bug Report..." report-emacs-bug :help "Send e-mail to Emacs maintainers")) - (define-key menu-bar-help-menu [emacs-problems] + (define-key menu-bar-help-menu [emacs-known-problems] '(menu-item "Emacs Known Problems" view-emacs-problems :help "Read about known problems with Emacs")) (define-key menu-bar-help-menu [emacs-news] diff --cc lisp/term/x-win.el index 3310bc5507e,8de5b902e18..8c183db6dea --- a/lisp/term/x-win.el +++ b/lisp/term/x-win.el @@@ -2574,110 -2546,72 +2574,167 @@@ order until succeed." (add-hook 'after-make-frame-functions 'x-dnd-init-frame) (define-key special-event-map [drag-n-drop] 'x-dnd-handle-drag-n-drop-event) -;; Let F10 do menu bar navigation. -(defun x-menu-bar-open (&optional frame) - "Open the menu bar if `menu-bar-mode' is on. otherwise call `tmm-menubar'." - (interactive "i") - (if menu-bar-mode (menu-bar-open frame) - (tmm-menubar))) - -(and (fboundp 'menu-bar-open) - (global-set-key [f10] 'x-menu-bar-open)) +(defcustom x-gtk-stock-map + '( + ("etc/images/new" . "gtk-new") + ("etc/images/open" . "gtk-open") + ("etc/images/diropen" . "n:system-file-manager") + ("etc/images/close" . "gtk-close") + ("etc/images/save" . "gtk-save") + ("etc/images/saveas" . "gtk-save-as") + ("etc/images/undo" . "gtk-undo") + ("etc/images/cut" . "gtk-cut") + ("etc/images/copy" . "gtk-copy") + ("etc/images/paste" . "gtk-paste") + ("etc/images/search" . "gtk-find") + ("etc/images/print" . "gtk-print") + ("etc/images/preferences" . "gtk-preferences") + ("etc/images/help" . "gtk-help") + ("etc/images/left-arrow" . "gtk-go-back") + ("etc/images/right-arrow" . "gtk-go-forward") + ("etc/images/home" . "gtk-home") + ("etc/images/jump-to" . "gtk-jump-to") + ("etc/images/index" . "gtk-index") + ("etc/images/search" . "gtk-find") + ("etc/images/exit" . "gtk-quit") + ;; Used in Gnus and/or MH-E: + ("etc/images/attach.xpm" . "gtk-attach") + ("etc/images/connect.xpm" . "gtk-connect") + ("etc/images/contact.xpm" . "gtk-contact") + ("etc/images/delete.xpm" . "gtk-delete") + ("etc/images/describe.xpm" . "gtk-properties") + ("etc/images/disconnect.xpm" . "gtk-disconnect") + ;; ("etc/images/exit.xpm" . "gtk-exit") + ("etc/images/lock-broken.xpm" . "gtk-lock_broken") + ("etc/images/lock-ok.xpm" . "gtk-lock_ok") + ("etc/images/lock.xpm" . "gtk-lock") + ("etc/images/next-page.xpm" . "gtk-next-page") + ("etc/images/refresh.xpm" . "gtk-refresh") + ("etc/images/sort-ascending.xpm" . "gtk-sort-ascending") + ("etc/images/sort-column-ascending.xpm" . "gtk-sort-column-ascending") + ("etc/images/sort-criteria.xpm" . "gtk-sort-criteria") + ("etc/images/sort-descending.xpm" . "gtk-sort-descending") + ("etc/images/sort-row-ascending.xpm" . "gtk-sort-row-ascending") + ("images/gnus/toggle-subscription.xpm" . "gtk-task-recurring") + ("images/mail/compose.xpm" . "gtk-mail-compose") + ("images/mail/copy.xpm" . "gtk-mail-copy") + ("images/mail/forward.xpm" . "gtk-mail-forward") + ("images/mail/inbox.xpm" . "gtk-inbox") + ("images/mail/move.xpm" . "gtk-mail-move") + ("images/mail/not-spam.xpm" . "gtk-not-spam") + ("images/mail/outbox.xpm" . "gtk-outbox") + ("images/mail/reply-all.xpm" . "gtk-mail-reply-to-all") + ("images/mail/reply.xpm" . "gtk-mail-reply") + ("images/mail/save-draft.xpm" . "gtk-mail-handling") + ("images/mail/send.xpm" . "gtk-mail-send") + ("images/mail/spam.xpm" . "gtk-spam") + ;; No themed versions available: + ;; mail/preview.xpm (combining stock_mail and stock_zoom) + ;; mail/save.xpm (combining stock_mail, stock_save and stock_convert) + ) + "How icons for tool bars are mapped to Gtk+ stock items. +Emacs must be compiled with the Gtk+ toolkit for this to have any effect. +A value that begins with n: denotes a named icon instead of a stock icon." + :version "22.2" + :type '(choice (repeat (choice symbol + (cons (string :tag "Emacs icon") + (string :tag "Stock/named"))))) + :group 'x) + +(defcustom icon-map-list '(x-gtk-stock-map) + "A list of alists that maps icon file names to stock/named icons. +The alists are searched in the order they appear. The first match is used. +The keys in the alists are file names without extension and with two directory +components. For example, to map /usr/share/emacs/22.1.1/etc/images/open.xpm +to stock item gtk-open, use: + + (\"etc/images/open\" . \"gtk-open\") + +Themes also have named icons. To map to one of those, use n: before the name: + + (\"etc/images/diropen\" . \"n:system-file-manager\") + +The list elements are either the symbol name for the alist or the +alist itself. + +If you don't want stock icons, set the variable to nil." + :version "22.2" + :type '(choice (const :tag "Don't use stock icons" nil) + (repeat (choice symbol + (cons (string :tag "Emacs icon") + (string :tag "Stock/named"))))) + :group 'x) + +(defun x-gtk-map-stock (file) + "Map icon with file name FILE to a Gtk+ stock name, using `x-gtk-stock-map'." + (let* ((file-sans (file-name-sans-extension file)) + (key (and (string-match "/\\([^/]+/[^/]+/[^/]+$\\)" file-sans) + (match-string 1 file-sans))) + (value)) + (mapc (lambda (elem) + (let ((assoc (if (symbolp elem) (symbol-value elem) elem))) + (or value (setq value (assoc-string (or key file-sans) assoc))))) + icon-map-list) + (and value (cdr value)))) + +(provide 'x-win) + (defcustom x-gtk-stock-map + '( + ("etc/images/new" . "gtk-new") + ("etc/images/open" . "gtk-open") + ("etc/images/diropen" . "n:system-file-manager") + ("etc/images/close" . "gtk-close") + ("etc/images/save" . "gtk-save") + ("etc/images/saveas" . "gtk-save-as") + ("etc/images/undo" . "gtk-undo") + ("etc/images/cut" . "gtk-cut") + ("etc/images/copy" . "gtk-copy") + ("etc/images/paste" . "gtk-paste") + ("etc/images/search" . "gtk-find") + ("etc/images/print" . "gtk-print") + ("etc/images/preferences" . "gtk-preferences") + ("etc/images/help" . "gtk-help") + ("etc/images/left-arrow" . "gtk-go-back") + ("etc/images/right-arrow" . "gtk-go-forward") + ("etc/images/home" . "gtk-home") + ("etc/images/jump-to" . "gtk-jump-to") + ("etc/images/index" . "gtk-index") + ("etc/images/search" . "gtk-find") + ("etc/images/exit" . "gtk-quit")) + "How icons for tool bars are mapped to Gtk+ stock items. + Emacs must be compiled with the Gtk+ toolkit for this to have any effect. + A value that begins with n: denotes a named icon instead of a stock icon." + :version "22.2" + :type 'alist + :group 'x) + + (defvar icon-map-list nil + "*A list of alists that maps icon file names to stock/named icons. + The alists are searched in the order they appear. The first match is used. + The keys in the alists are file names without extension and with two directory + components. For example, to map /usr/share/emacs/22.1.1/etc/images/open.xpm + to stock item gtk-open, use: + + (\"etc/images/open\" . \"gtk-open\") + + Themes also have named icons. To map to one of those, use n: before the name: + + (\"etc/images/diropen\" . \"n:system-file-manager\") + + The list elements are either the symbol name for the alist or the alist itself.") + + (defun x-gtk-map-stock (file) + "Map icon with file name FILE to a Gtk+ stock name, using `x-gtk-stock-map'." + (let* ((file-sans (file-name-sans-extension file)) + (key (and (string-match "/\\([^/]+/[^/]+/[^/]+$\\)" file-sans) + (match-string 1 file-sans))) + (value)) + (mapc (lambda (elem) + (let ((assoc (if (symbolp elem) (symbol-value elem) elem))) + (or value (setq value (assoc-string (or key file-sans) assoc))))) + icon-map-list) + (and value (cdr value)))) + ;; arch-tag: f1501302-db8b-4d95-88e3-116697d89f78 ;;; x-win.el ends here diff --cc lisp/textmodes/css-mode.el index e90fa615039,d21559411e7..079c362b504 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@@ -173,11 -169,10 +173,11 @@@ "word-spacing" "z-index") "Identifiers for properties.") - (defcustom css-electrick-keys '(?\} ?\;) ;; '() + (defcustom css-electric-keys '(?\} ?\;) ;; '() "Self inserting keys which should trigger re-indentation." :type '(repeat character) - :options '((?\} ?\;))) + :options '((?\} ?\;)) + :group 'css) (defvar css-mode-syntax-table (let ((st (make-syntax-table))) diff --cc lisp/vc-git.el index 32d8d48299c,88946f160ff..d68b33be76a --- a/lisp/vc-git.el +++ b/lisp/vc-git.el @@@ -189,37 -190,8 +190,20 @@@ 'implicit) (defun vc-git-workfile-unchanged-p (file) - ;; The reason this does not use the result of vc-git-state is that - ;; git-diff-index (used by vc-git-state) doesn't refresh the cached - ;; stat info, so if the file has been modified it will always show - ;; up as modified in vc-git-state, even if the change has been - ;; undone, until git-update-index --refresh is run. - - ;; OTOH the vc-git-workfile-unchanged-p implementation checks the - ;; actual content, so it will detect the case of a file reverted - ;; back to its original state. - - ;; The ideal implementation would be to refresh the stat cache and - ;; then call vc-git-state, but at the moment there's no git command - ;; to refresh a single file, so this will have to be added first. - (let ((sha1 (vc-git--run-command-string file "hash-object" "--")) - (head (vc-git--run-command-string file "ls-tree" "-z" "HEAD" "--"))) - (and head - (string-match "[0-7]\\{6\\} blob \\([0-9a-f]\\{40\\}\\)\t[^\0]+\0" head) - (string= (car (split-string sha1 "\n")) (match-string 1 head))))) + (eq 'up-to-date (vc-git-state file))) +(defun vc-git-mode-line-string (file) + "Return string for placement into the modeline for FILE." + (let* ((branch (vc-git-workfile-version file)) + (def-ml (vc-default-mode-line-string 'Git file)) + (help-echo (get-text-property 0 'help-echo def-ml))) + (if (zerop (length branch)) + (propertize + (concat def-ml "!") + 'help-echo (concat help-echo "\nNo current branch (detached HEAD)")) + (propertize def-ml + 'help-echo (concat help-echo "\nCurrent branch: " branch))))) + (defun vc-git-dired-state-info (file) "Git-specific version of `vc-dired-state-info'." (let ((git-state (vc-state file))) diff --cc nt/ChangeLog index ab8240e42b4,b85b743937f..4a8f353782b --- a/nt/ChangeLog +++ b/nt/ChangeLog @@@ -1,15 -1,9 +1,21 @@@ + 2007-09-27 Jason Rumney + + * gmake.defs (COMCTL32): New system library. + + * nmake.defs (COMCTL32): New system library. + +2007-09-06 Glenn Morris + + * configure.bat: + * makefile.w32-in (info-nmake, info-gmake) + (clean-other-dirs-nmake): Change from ../man to ../doc/emacs and + ../doc/misc; and from ../lispref, ../lispintro to ../doc/lispref, + ../doc/lispintro. + +2007-08-29 Glenn Morris + + * emacs.rc: Increase version to 23.0.50. + 2007-08-14 Dhuvra Krishnamurthy (tiny change) * makefile.w32-in (bootstrap-nmake): Change directories once more. diff --cc src/ChangeLog index 6374b29aedc,1a535bc7872..4160a53e9d7 --- a/src/ChangeLog +++ b/src/ChangeLog @@@ -1,2342 -1,28493 +1,2428 @@@ -2007-10-09 Richard Stallman - - * xdisp.c (handle_invisible_prop): After setting up an ellipsis, - return HANDLED_RETURN. - -2007-10-06 Martin Rudalics - - * keyboard.c (kbd_buffer_get_event): Break loop waiting for input - when there's an unread command event. - - * frame.c (focus_follows_mouse): Moved here from frame.el to allow - window autoselection act appropriately when leaving selected frame. - (syms_of_frame): Initialize focus_follows_mouse. - * frame.h (focus_follows_mouse): Extern it. - * macterm.c (XTread_socket): When focus_follows_mouse is nil - make SELECT_WINDOW_EVENT only if we don't leave the selected - frame. - * msdos.c (dos_rawgetc): Likewise. - * w32term.c (w32_read_socket): Likewise. - * xterm.c (handle_one_xevent): Likewise. - * xdisp.c (syms_of_xdisp): In doc-string of - mouse-autoselect-window mention focus-follows-mouse. - -2007-10-06 Andreas Schwab - - * fileio.c (Fwrite_region): Ignore EINVAL error from fsync. - -2007-10-05 YAMAMOTO Mitsuharu - - * macterm.c (mac_load_query_font): Fix missing return value. - [USE_CG_DRAWING] (mac_define_fringe_bitmap, mac_destroy_fringe_bitmap): - Add BLOCK_INPUT. - -2007-10-04 Juanma Barranquero - - * image.c (syms_of_image) : Fix typo in docstring. - -2007-10-02 Richard Stallman - - * xdisp.c (get_window_cursor_type): Implement documented behavior - for cursor-in-non-selected-windows = t. - -2007-10-01 Juanma Barranquero - - * lread.c (Fload): Fix typo in docstring. - -2007-09-29 Juri Linkov - - * emacs.c (standard_args): Change priority of "--no-splash" - from 40 to 3. Add "--no-desktop" with the same priority. - -2007-09-29 Jason Rumney - - * w32.c (w32_get_resource): Always close registry keys. - -2007-09-27 Jason Rumney - - * makefile.w32-in (LIBS): Add COMCTL32. - - * w32fns.c (globals_of_w32fns): Init common controls. - -2007-09-21 Richard Stallman - - * image.c (our_memory_buffer): Renamed from omfib_buffer. - -2007-09-21 Juanma Barranquero - - * w32term.c (x_draw_glyph_string): Use strike_through_color, not - underline_color, to draw strike-through. - -2007-09-20 Glenn Morris - - * process.c (Fmake_network_process): Doc fix. - -2007-09-19 Richard Stallman - - * buffer.c (Foverlays_at): Doc fix. - -2007-09-18 Stefan Monnier - - * fns.c (Fplist_put): Preserve uneven tail data. - -2007-09-16 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_image_for_pixmap): Always create a GdkPixbuf - when we have no file name for the icon. - (xg_tool_bar_expose_callback): Remove. - (xg_create_tool_bar): Don't connect expose signal to - xg_tool_bar_expose_callback. - -2007-09-16 Andreas Schwab - - * alloc.c (reset_malloc_hooks): Set the hooks to the previous - values instead of zapping them. - -2007-09-15 Glenn Morris - - * s/hpux.h: No longer define `static' as nothing. - -2007-09-14 Glenn Morris - - * fringe.c (init_fringe_bitmap) : Move to file scope. - * gtkutil.c (xg_separator_p) : Move to file scope. - * image.c (our_memory_fill_input_buffer) : Move to file - scope and rename to omfib_buffer for clarity. - (gif_load) : Move to file scope. - -2007-09-14 Peter O'Gorman (tiny change) - - * gtkutil.c (xg_get_file_with_chooser): Move GCPRO1 after declarations. - - * termhooks.h (enum event_kind): Remove trailing comma. - - * frame.h (enum): Remove trailing comma. - -2007-09-14 Jan Dj,Ad(Brv - - * keyboard.c, xterm.c, xfaces.c (abs): #undef before #define. - -2007-09-12 Glenn Morris - - * gtkutil.c (cnt): Rename to menu_grab_callback_cnt for clarity. - (menu_grab_callback): All uses changed. - - * xselect.c (cnt): Rename to x_reply_selection_request_cnt for clarity. - (x_reply_selection_request): All uses changed. - -2007-09-06 Pixel (tiny change) - - * image.c (gif_load): Fix bug: Handle nonexistent colormap. - -2007-09-06 Glenn Morris - - * gtkutil.c (menu_grab_callback) : - * xselect.c (x_reply_selection_request) : Move static - variable to file scope. - -2007-09-02 Dhuvra Krishnamurthy (tiny change) - - * w32proc.c (delete_child): Don't terminate threads of zombies. - -2007-09-02 Jan Dj,Ad(Brv - - * keyboard.c: Qrtl is new. - (parse_tool_bar_item): Handle :rtl keyword. - (syms_of_keyboard): Intern :rtl keyword. - - * dispextern.h (enum tool_bar_item_idx): Add TOOL_BAR_ITEM_RTL_IMAGE. - - * gtkutil.c (file_for_image, find_rtl_image): New functions. - (xg_get_image_for_pixmap): Use file_for_image - (update_frame_tool_bar): If direction is RTL, use RTL image if - defined. Use Gtk stock images or named theme icons if defined. - -2007-08-29 Martin Rudalics - - * keyboard.h (struct kboard): New elt Vlast_repeatable_command. - - * keyboard.c (syms_of_keyboard): Set up new Lisp variable - last-repeatable-command. - (init_kboard): Initialize Vlast_repeatable_command. - (command_loop_1): Set it to real_this_command unless that was - bound to an input event. - (mark_kboards): Mark it. - -2007-08-28 Juanma Barranquero - - * image.c (syms_of_image) : - Doc fixes. - -2007-08-28 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_expose_callback): Just do SET_FRAME_GARBAGED - so no Lisp code is executed. - -2007-08-27 YAMAMOTO Mitsuharu - - * macterm.c (x_draw_composite_glyph_string_foreground): Draw rectangle - for nonexistent or zero-width glyph in composition glyph. - -2007-08-27 Richard Stallman - - * eval.c (condition-case): Doc fix. - -2007-08-27 Masatake YAMATO - - * xfaces.c (tty_supports_face_attributes_p): Fix code - for LFACE_INVERSE_INDEX and LFACE_BACKGROUND_INDEX; code - was copied and not edited. - -2007-08-23 Stefan Monnier - - * lread.c (load_warn_old_style_backquotes): Fix up array size typo. - -2007-08-22 Stefan Monnier - - * lread.c (Qold_style_backquotes): New var. - (syms_of_lread): Init and staticpro it. - (load_warn_old_style_backquotes): New fun. - (Fload): Use them to warn about old style backquotes. - (end_of_file_error, Fload): Remove unused vars. - - * lisp.h (Fclear_face_cache, Fx_send_client_event): Declare. - - * lread.c (Vold_style_backquotes): New var. - (syms_of_lread): Init and export it to Elisp. - (read1): Set it when we find an old-style (back)quote. - -2007-08-22 Jason Rumney - - * w32reg.c (SYSTEM_DEFAULT_RESOURCES): Add missing NULL terminator. - -2007-08-21 Stefan Monnier - - * insdel.c (reset_var_on_error): New fun. - (signal_before_change, signal_after_change): - Use it to reset (after|before)-change-functions to nil in case of error. - Bind inhibit-modification-hooks to t. - Don't bind (after|before)-change-functions to nil while they run. - -2007-08-19 Andreas Schwab - - * alloc.c (pure): Round PURESIZE up. - -2007-08-17 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Remove check that mouse click is in - active frame. - -2007-08-15 Philippe Waroquiers - - * term.c (tty_default_color_capabilities): Declare static - variables in file scope, to avoid HPUX compiler problem. - -2007-08-13 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Use -1 as index - to gtk_toolbar_insert. - -2007-08-11 YAMAMOTO Mitsuharu - - * xterm.c (x_draw_image_glyph_string): Adjust stipple origin when - filling pixmap with stippled background. - -2007-08-10 Stefan Monnier - - * print.c (new_backquote_output): Rename from old_backquote_output. - (print): Inverse its logic (according to its name) so as to match the - behavior of new_backquote_flag in lread.c. - -2007-08-09 YAMAMOTO Mitsuharu - - * gmalloc.c (posix_memalign): New function. - -2007-08-08 Glenn Morris - - * Replace `iff' in doc-strings and comments. - -2007-08-07 Chong Yidong - - * dispextern.h (struct image): New members. - - * image.c: Sync to trunk version. - (search_image_cache, uncache_image, image-refresh): New functions. - Check for fg and bg colors. - (lookup_image): Use search_image_cache. Cache fg and bg colors. - (pbm_load): Another check for invalid image data. - (png_load): Ignore default background field. - - * xdisp.c (move_it_by_lines): Remove incorrect optimization. - -2007-08-07 Jan Dj,Ad(Brv - - * gmalloc.c (__malloc_initialize): Remove pthread_once. Not needed. - -2007-08-07 Sam Steingold - - * gmalloc.c (__morecore): Fix the declaration to comply with the - definition. - -2007-08-07 YAMAMOTO Mitsuharu - - * emacs.c (main) - [HAVE_GTK_AND_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]: - Call malloc_enable_thread on interactive startup. - - * gmalloc.c (_malloc_thread_enabled_p) [USE_PTHREAD]: New variable. - (LOCK, UNLOCK, LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS) - [USE_PTHREAD]: Conditionalize with it. - (malloc_atfork_handler_prepare, malloc_atfork_handler_parent) - (malloc_atfork_handler_child, malloc_enable_thread) [USE_PTHREAD]: - New functions. - -2007-08-06 Chong Yidong - - * xdisp.c (redisplay_window): When restoring original buffer - position, make sure it is still valid. - -2007-08-06 Martin Rudalics - - * window.c (window_min_size_2): New function. - (window_min_size_1, size_window, Fdisplay_buffer) - (Fsplit_window, adjust_window_trailing_edge): Use it to avoid - windows without mode- or header-lines when window-min-height is - too small. - (size_window): Reset nodelete_p after testing it, following an - earlier note by Kim F. Storm. - (display_buffer): Do not set split_height_threshold to twice the - value of window_min_height to avoid changing the value of a - customizable variable. Rather explicitly check whether the - height of the window that shall be splitted is at least as large - as split_height_threshold. - (Fwindow_full_width_p): New defun. - (syms_of_window): Defsubr it. - - * window.h: Add EXFUN for Fwindow_full_width_p. - -2007-08-06 Andreas Schwab - - * window.c (Fdisplay_buffer): Use NILP. - (Fset_window_scroll_bars): Likewise. - -2007-08-03 Richard Stallman - - * fileio.c (Fvisited_file_modtime): Use make_time. - -2007-08-01 Ryo Yoshitake (tiny change) - - * mac.c (init_mac_osx_environment): Adjust load-path on self-contained - build. - -2007-07-30 Stefan Monnier - - * eval.c (init_eval_once): Bump max_lisp_eval_depth to 400. - -2007-07-25 Glenn Morris - - * Relicense all FSF files to GPLv3 or later. - - * COPYING: Switch to GPLv3. - -2007-07-24 Jason Rumney - - * w32fns.c (x_real_positions): Get real position from OS instead of - calculating it. - -2007-07-23 Jason Rumney - - * filelock.c (current_lock_owner): Allow for @ sign in username. - -2007-07-20 Eli Zaretskii - - * makefile.w32-in (clean): Don't delete *~. - - * w32proc.c (IMAGE_NT_OPTIONAL_HDR32_MAGIC, IMAGE_OPTIONAL_HEADER32): - Define if not defined. - -2007-07-18 Jason Rumney - - * w32proc.c (w32_executable_type): Handle 64 bit executables. - -2007-07-16 Juanma Barranquero - - * coding.c (Ffind_operation_coding_system): - * eval.c (For, Fand, Fprogn): - * keyboard.c (Ftrack_mouse): - * print.c (Fwith_output_to_temp_buffer): - * window.c (Fsave_window_excursion): Doc fixes (some reported - by Johan Bockg,Ae(Brd). - -2007-07-15 Richard Stallman - - * data.c (Fsetq_default): Doc fix. - - * eval.c (Fsetq): Doc fix. - -2007-07-11 Jason Rumney - - * makefile.w32-in (LIBS): Include OLE32. - - * w32fns.c (w32_msg_pump) : Initialize COM. - (w32_msg_pump) : Uninitialize COM. - -2007-06-28 YAMAMOTO Mitsuharu - - * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event): - Check WINDOWP before using XWINDOW. - -2007-06-27 Juanma Barranquero - - * buffer.c (syms_of_buffer) : Fix typo in docstring. - -2007-06-26 YAMAMOTO Mitsuharu - - * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Check this after including config.h. - (_aligned_blocks_mutex) [USE_PTHREAD]: New variable. - (LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS): New macros. - (_free_internal, memalign): Use them. - (_malloc_mutex, _aligned_blocks_mutex) [USE_PTHREAD]: - Initialize to PTHREAD_MUTEX_INITIALIZER. - (malloc_initialize_1) [USE_PTHREAD]: Don't use recursive mutex. - (morecore_nolock): Rename from morecore. All uses changed. - Use only nolock versions of internal allocation functions. - (_malloc_internal_nolock, _realloc_internal_nolock) - (_free_internal_nolock): New functions created from - _malloc_internal, _realloc_internal, and _free_internal. - (_malloc_internal, _realloc_internal, _free_internal): Use them. - Copy hook value to automatic variable before its use. - (memalign): Copy hook value to automatic variable before its use. - -2007-06-21 Jason Rumney - - * image.c (convert_mono_to_color_image): Swap fore and background. - -2007-06-20 Jason Rumney - - * w32bdf.c (w32_BDF_to_x_font): Unmap memory when finished. - (w32_free_bdf_font): Unmap memory not handle. - -2007-06-20 Juanma Barranquero - - * w32.c (_wsa_errlist): Fix typo in error message. - (init_environment): Ignore any environment variable from the - registry having a null value. - -2007-06-17 Jason Rumney - - * w32menu.c (add_menu_item): Don't use multibyte string functions on - unicode strings. - -2007-06-17 Juanma Barranquero - - * xdisp.c (syms_of_xdisp) : - Fix typo in docstring. - -2007-06-16 Eli Zaretskii - - * w32menu.c (add_menu_item): Escape `&' characters in menu items - and their keybindings. - -2007-06-14 Chong Yidong - - * composite.c (update_compositions): Check validity of compositions. - -2007-06-10 Jason Rumney - - * w32fns.c (Fx_file_dialog): Take size from struct not pointer. - -2007-06-06 Jason Rumney - - * s/ms-w32.h: Don't define HAVE_TZNAME. - -2007-06-06 Chong Yidong - - * image.c (xpm_load): Remove spurious call to - xpm_init_color_cache. - -2007-06-06 Martin Rudalics - - * syntax.c (scan_words): Fix arg to UPDATE_SYNTAX_TABLE_BACKWARD. - -2007-06-05 Dan Nicolaescu - - * xfaces.c (syms_of_xfaces): Delete stray semicolon. - * xdisp.c (next_element_from_buffer): - * window.c (delete_window): - * term.c (term_mouse_highlight): - * msdos.c (getdefdir): - * macterm.c (mac_create_bitmap_from_bitmap_data) - (init_font_name_table): - * fns.c (Fsxhash): - * data.c (Fmake_local_variable): - * ccl.c (ccl_driver): Likewise. - -2007-06-04 Juanma Barranquero - - * window.c (Fshrink_window): Reflow docstring. - -2007-06-02 Chong Yidong - - * Version 22.1 released. - - * xfns.c (x_set_name_internal): Undo last change. - -2007-06-01 Richard Stallman - - * xfns.c (x_encode_text): Add GCPRO. - (x_set_name_internal): Separate USE_GTK and non-USE_GTK cases. - -2007-06-01 YAMAMOTO Mitsuharu - - * xfns.c (x_set_name_internal): Save encoded name before - x_encode_text in case string data is relocated. - -2007-05-31 Richard Stallman - - * buffer.c (syms_of_buffer): Doc fix. - -2007-05-28 YAMAMOTO Mitsuharu - - * xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t - around current_column call. - -2007-05-24 Chong Yidong - - * xdisp.c (redisplay_window): If first window line is a - continuation line, recompute the new window start instead of - recentering. - -2007-05-24 YAMAMOTO Mitsuharu - - * macterm.c [USE_CARBON_EVENTS] (mac_handle_window_event): - Call mac_wakeup_from_rne on window size change. - -2007-05-22 Richard Stallman - - * xterm.c (x_connection_closed): Remove NO_RETURN. - -2007-05-19 Stefan Monnier - - * syntax.c (skip_chars): Update syntax-table only after we checked that - the new location is valid. - -2007-05-19 YAMAMOTO Mitsuharu - - * macterm.c (x_calc_absolute_position): Add BLOCK_INPUT around - mac_get_window_bounds. - -2007-05-17 Glenn Morris - - * m/macppc.h (ORDINARY_LINK): No longer define on OpenBSD. - -2007-05-16 YAMAMOTO Mitsuharu - - * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Also convert - dead key repeat and up events. - -2007-05-13 Chong Yidong - - * xterm.c (XTread_socket): Revert last change. - -2007-05-12 Chong Yidong - - * image.c (pbm_load): Correctly check image size for greyscale pbm. - - * xterm.c (XTread_socket): Yet Another Uncaught X Error Crash (YAUXEC). - -2007-05-07 Stefan Monnier - - * editfns.c (Ftranspose_regions): Yet another int/Lisp_Object mixup (YAILOM) - -2007-05-06 Richard Stallman - - * process.c: Undo May 3 change. - -2007-05-03 Per Cederqvist (tiny change) - - * process.c (Faccept_process_output): Revert 2006-03-22 change so - that the third argument once again is in microseconds (not - milliseconds). This makes it compatible with Emacs 21 and - earlier. Problem found by Henrik Rindl,Av(Bw. - -2007-05-01 YAMAMOTO Mitsuharu - - * macmenu.c (mac_dialog_show): Apply 2007-04-27 change for xmenu.c. - (Fx_popup_dialog) [MAC_OSX]: Likewise. - -2007-04-29 Richard Stallman - - * insdel.c (replace_range): For undo, record insertion first. - -2007-04-29 YAMAMOTO Mitsuharu - - * xdisp.c (try_window_reusing_current_matrix): Fix number of - disabled lines. - -2007-04-27 Jan Dj,Ad(Brv - - * xmenu.c (xdialog_show): Call Fredisplay before showing the dialog. - - * gtkutil.c (xg_update_menubar, create_menus): Create empty - submenu for menu bar items. - -2007-04-24 Chong Yidong - - * xdisp.c (redisplay_window): Use BEG_UNCHANGED and END_UNCHANGED - values of the actual window. - -2007-04-23 Richard Stallman - - * process.c (Fstart_process): Doc fix. - -2007-04-23 Eli Zaretskii - - * process.c (Fstart_process): Doc fix. - -2007-04-22 Richard Stallman - - * abbrev.c (Fdefine_abbrev): Doc fix. - - * keymap.c (Fdefine_key): Minor doc fix. - -2007-04-21 Glenn Morris - - * keymap.c (Fdefine_key): Fix info ref in doc string. - -2007-04-20 Glenn Morris - - * sysdep.c (init_system_name): Don't accept localhost.localdomain. - -2007-04-19 Juanma Barranquero - - * minibuf.c (Fminibuffer_contents, Fminibuffer_contents_no_properties) - (Fminibuffer_completion_contents, Fdelete_minibuffer_contents): - Doc fixes. - -2007-04-16 Chong Yidong - - * dispnew.c (adjust_frame_glyphs_for_frame_redisplay): - Set garbaged flag in presence of window margins. - (showing_window_margins_p): New function. - - * xdisp.c (cursor_row_p): Only end row on newline if it's a - display string. Suggested by Lennart Borgman. - -2007-04-16 YAMAMOTO Mitsuharu - - * alloc.c (mem_insert): Set min_heap_address and max_heap_address - if they are not yet initialized. - -2007-04-15 Chong Yidong - - * xdisp.c (redisplay_window): When deciding whether or not to - recenter, don't use the reset values of BEG_UNCHANGED and - END_UNCHANGED. - -2007-04-13 Kim F. Storm - - * buffer.c (Fkill_buffer): gcpro BUF during kill_buffer_processes - and check that buffer is still alive upon return. - -2007-04-13 YAMAMOTO Mitsuharu - - * macterm.c [!TARGET_API_MAC_CARBON]: Include Displays.h. - (mac_screen_config_changed): New variable. - (mac_handle_dm_notification, init_dm_notification_handler) - (mac_get_screen_info): New functions. - [MAC_OS8] (main): Call init_dm_notification_handler. - (mac_initialize) [MAC_OSX]: Likewise. - (XTread_socket): Call mac_get_screen_info if screen config changed. - (mac_initialized): Make static. - (mac_initialize_display_info): Remove function. - (mac_term_init): Call mac_get_screen_info. Add partial contents of - mac_initialize_display_info. - -2007-04-12 YAMAMOTO Mitsuharu - - * mac.c (xrm_get_preference_database, Fmac_get_preference) - [TARGET_API_MAC_CARBON]: Use CFPreferencesAppSynchronize. - - * macterm.c [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event): - Use GetGlobalMouse instead of GetMouse and LocalToGlobal. - (mac_initialize_display_info) [MAC_OSX]: Use CGRectZero. - (mac_initialize_display_info) [!MAC_OSX]: dpyinfo->height and - dpyinfo->width are those of whole screen. - -2007-04-10 Chong Yidong - - * xdisp.c (note_mode_line_or_margin_highlight): Don't decrement - glyph pointer before start of glyph row. - -2007-04-09 YAMAMOTO Mitsuharu - - * s/darwin.h (__restrict, struct kboard): Remove outdated workarounds. - (C_SWITCH_SYSTEM): Remove `-I../mac/src'. - -2007-04-09 Martin Rudalics - - * indent.c (Fmove_to_column): Set next_boundary with correct start pt. - -2007-04-08 Richard Stallman - - * xdisp.c (syms_of_xdisp) : Default 100. - -2007-04-07 Chong Yidong - - * editfns.c (Ftranspose_regions): Validate interval before setting - text properties. - -2007-04-03 Eli Zaretskii - - * emacs.c (main): Fix instructions for building Emacs for profiling. - -2007-04-03 Jan Dj,Ad(Brv - - * gtkutil.c (xg_update_menubar): Call g_list_next after moving - menu bar item. - -2007-04-02 Juanma Barranquero - - * print.c (Fprin1_to_string): Use macro SPECPDL_INDEX. - -2007-04-01 Chong Yidong - - * keymap.c (Fcommand_remapping): New optional argument. - (where_is_internal): Use new keymaps argument. - (Fkey_binding): Caller changed. - - * keyboard.c (command_loop_1): Caller changed. - -2007-03-31 Eli Zaretskii - - * window.c (Fget_lru_window): Doc fix. - -2007-03-30 Chong Yidong - - * undo.c (Fprimitive_undo): Give clearer error message when trying - to change text properties outside accessible part of buffer. - -2007-03-29 Kim F. Storm - - * process.c (wait_reading_process_output) [HAVE_PTYS]: - When EIO happens, clear channel from descriptor masks before raising - SIGCHLD signal to avoid busy loop between read and sigchld_handler. - (sigchld_handler): Remove sleep (2007-03-11 & 2007-03-26 changes). - -2007-03-29 Juanma Barranquero - - * buffer.c (Fset_buffer_major_mode): Check that BUFFER is valid. - - * process.c (Fformat_network_address): Return nil when the - argument vector contains invalid values. - -2007-03-28 YAMAMOTO Mitsuharu - - * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Define USE_PTHREAD. - [USE_PTHREAD]: Include pthread.h. - (malloc_init_once_control, _malloc_mutex) [USE_PTHREAD]: New variables. - (malloc_initialize_1): New function created from __malloc_initialize. - (__malloc_initialize): Use it. - (LOCK, UNLOCK): New macros to make malloc etc. thread safe. - (_malloc_internal, _free_internal, _realloc_internal): Use them. - - * lread.c (readchar): Extend BLOCK_INPUT block to ferror/clearerr. - -2007-03-27 Juanma Barranquero - - * process.c (Fformat_network_address): Make args array big enough - to format IPv6 addresses. - -2007-03-27 Glenn Morris - - * m/hp800.h: Restore HP-UX support (removed 2007-01-29). - -2007-03-26 YAMAMOTO Mitsuharu - - * macfns.c (Fx_display_mm_height, Fx_display_mm_width): Scale whole - screen size in pixels by millimeters per pixel of main display. - - * macselect.c (get_scrap_target_type_list, x_own_selection): - Move assignments outside predicate macros. - (Vselection_converter_alist): Doc fix. - - * macterm.c (create_text_encoding_info_alist): Move assignments - outside predicate macros. - (mac_initialize_display_info) [MAC_OSX]: dpyinfo->height and - dpyinfo->width are those of whole screen. - -2007-03-26 Sam Steingold - - * process.c (sigchld_handler): Delay by 1ms instead of 1s to - alleviate sluggishness (the original problem is still fixed). - -2007-03-25 Kim F. Storm - - * intervals.c (merge_properties): Use explicit loop instead of - Fplist_member to avoid QUIT. Don't use Fcdr. - (intervals_equal): Likewise. Rewrite loop to perform length check - on the fly rather than calling Flength. Don't use Fcar. - -2007-03-24 Eli Zaretskii - - * editfns.c (Fgoto_char): Doc fix. - - * indent.c (Findent_to): Doc fix. - -2007-03-24 Chong Yidong - - * editfns.c (Ftranspose_regions): Use set_text_properties_1 - instead of Fset_text_properties to avoid GC. Signal after change. - -2007-03-24 Eli Zaretskii - - * xfns.c (Fx_show_tip): Doc fix. - - * macfns.c (Fx_show_tip): Doc fix. - - * w32fns.c (Fx_show_tip): Doc fix. - -2007-03-23 Kim F. Storm - - * intervals.c (merge_properties, intervals_equal): - Use Fplist_member instead of Fmemq to find properties. - -2007-03-23 Glenn Morris - - * unexhp9k800.c: Restore file with clarified legal status. - * m/sr2k.h: Restore since dependency unexhp9k800.c is restored. - -2007-03-22 Chong Yidong - - * widget.c (EmacsFrameSetCharSize): Catch X errors. - -2007-03-22 Kenichi Handa - - * fileio.c (Fcopy_file): Call barf_or_query_if_file_exists with - non-encoded file name. - (Frename_file): Likewise. - (Fadd_name_to_file): Likewise. - (Fmake_symbolic_link): Likewise. - -2007-03-20 YAMAMOTO Mitsuharu - - * Makefile.in (alloca.o, gtkutil.o): Depend on systime.h. - (dired.o, editfns.o, fileio.o, msdos.o): Depend on atimer.h. - (dosfns.o, window.o, fns.o, macselect.o): Depend on atimer.h and - systime.h. - (term.o, print.o, lread.o): Depend on blockinput.h, atimer.h, and - systime.h. - (macfns.o): Remove duplicate dependency on systime.h. - - * dispnew.c (Fopen_termscript): Add BLOCK_INPUT around fclose. - (Fsend_string_to_terminal): Add BLOCK_INPUT around fwrite. - - * fileio.c (do_auto_save_unwind): Add BLOCK_INPUT around fclose. - (Fdo_auto_save): Add BLOCK_INPUT around fwrite. - - * keyboard.c (record_char): Add BLOCK_INPUT around fwrite. - (Fopen_dribble_file): Add BLOCK_INPUT around fclose. - - * lread.c: Include blockinput.h. - (readchar, Fget_file_char): Add BLOCK_INPUT around getc. - (unreadchar): Add BLOCK_INPUT around ungetc. - (load_unwind): Add BLOCK_INPUT around fclose. - - * print.c: Include blockinput.h. - (Fredirect_debugging_output): Add BLOCK_INPUT around fclose. - - * process.c (Fmake_network_process) [HAVE_GETADDRINFO]: - Clear immediate_quit before calling freeaddrinfo. - Add BLOCK_INPUT around freeaddrinfo. - - * term.c: Include blockinput.h. - (write_glyphs, insert_glyphs): Add BLOCK_INPUT around fwrite. - -2007-03-19 Richard Stallman - - * keyboard.c (NUM_RECENT_KEYS): Bump up to 300. - - * buffer.c (syms_of_buffer): Doc fix. - -2007-03-18 Chong Yidong - - * image.c (pbm_load): Signal error for invalid image size. - -2007-03-18 YAMAMOTO Mitsuharu - - * macterm.c (note_mouse_movement): Don't return immediately for - LeaveNotify case. - - * macmenu.c (popup_activated_flag): New variable. - (x_activate_menubar, mac_menu_show): Set it during menu tracking. - (popup_activated): New function. - - * xdisp.c (redisplay_internal, note_mouse_highlight): - Check popup_activated for MAC_OS. - -2007-03-17 Juanma Barranquero - - * buffer.c (syms_of_buffer) : Doc fix. - Reported by Nikolaj Schumacher . - -2007-03-17 Richard Stallman - - * dired.c (file_name_completion): gcpro NAME. - -2007-03-17 Chong Yidong - - * xdisp.c (try_window_id): Increment matrix positions if the - buffer's byte count has increased, but not the character count. - -2007-03-12 Andreas Schwab - - * lisp.h: Declare check_obarray. - - * process.c (Fdelete_process): Properly handle deletion of first - element of deleted_pid_list. - (create_process): Declare pid as pid_t. - -2007-03-12 Kim F. Storm - - * process.c (sigchld_handler): Change type of pid to pid_t. - Scan deleted_pid_list explicitly to avoid using Fmember which don't - know about mark bits and make_fixnum_or_float which may malloc. - Reported by Andreas Schwab. - - * keyboard.c (read_key_sequence): Store original event into keybuf - when replaying sequence with local keymap(s) from string. - -2007-03-12 Glenn Morris - - * editfns.c (Fdecode_time, Fencode_time): Doc fix ("daylight - savings" to "daylight saving"). - -2007-03-11 Sam Steingold - - * process.c (sigchld_handler): Sleep before wait3 to avoid a busyloop. - -2007-03-11 YAMAMOTO Mitsuharu - - * macfns.c (Fx_server_vendor): Change vendor string to "Apple Inc.". - -2007-03-10 YAMAMOTO Mitsuharu - - * macterm.c [USE_CARBON_EVENTS] (mac_handle_mouse_event): - Ignore mouse wheel movement on title bar or tool bar. - -2007-03-10 Chong Yidong - - * keyboard.c (help_form_saved_window_configs): New var. - (read_char_help_form_unwind): New function. - (read_char): Don't restore window configuration if a mouse click - arrives while the help form is being displayed. - -2007-03-10 Kim F. Storm - - * xdisp.c (redisplay_window): Don't automatically select a new window - start for a contination line during mouse-click. - -2007-03-09 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Ignore buttons > 3 for the tool bar. - -2007-03-09 Juanma Barranquero - - * keymap.c (Fdescribe_buffer_bindings): Check that BUFFER is valid. - -2007-03-08 Richard Stallman - - * keyboard.c (syms_of_keyboard): Doc fix. - -2007-03-08 Chong Yidong - - * minibuf.c (Ftry_completion): Don't short circuit if - completion-ignore-case is non-nil. - -2007-03-07 YAMAMOTO Mitsuharu - - * macfns.c (mac_set_scroll_bar_width, mac_frame_parm_handlers): - Undo 2006-03-06 changes. - - * macterm.c (XTset_vertical_scroll_bar) [MAC_OSX]: Don't show scroll - bar if its width is smaller than that of Aqua small scroll bar. - -2007-03-07 Stefan Monnier - - * minibuf.c (read_minibuf): Bind inhibit-read-only a bit longer so as - to handle correctly prompts with read-only property. - -2007-03-06 Jan Dj,Ad(Brv - - * sound.c (wav_play): Check header->data_length to see how much we - shall read. - (alsa_period_size): Convert ALSA period size in frames to bytes. - (alsa_write): Return if frames is zero. - -2007-03-06 Kenichi Handa - - * xselect.c (Vselection_coding_system): Documentation improved. - -2007-03-05 YAMAMOTO Mitsuharu - - * macterm.c (x_scroll_bar_create, XTread_socket): Replace #if - USE_TOOLKIT_SCROLL_BARS with #ifdef USE_TOOLKIT_SCROLL_BARS. - (x_set_window_size): Call SET_FRAME_GARBAGED. Clear window if - internal border width has changed. - - * macterm.h (struct mac_output): New member `internal_border_width'. - -2007-03-04 Richard Stallman - - * window.c (Fdisplay_buffer): Doc fix. - -2007-03-03 Glenn Morris - - * Makefile.in: Don't clear out LIB_X11_LIB, since XFT_LIBS does - not include -lX11 on Solaris. - -2007-03-02 Stuart D. Herring - - * keymap.c (Fkey_binding): Don't consider one-element lists as events. - -2007-03-01 Kenichi Handa - - * process.c (send_process_object): Check the process status and - signal an error if something is wrong. - -2007-02-28 Chong Yidong - - * insdel.c (Fcombine_after_change_execute): Return nil if - combine_after_change_buffer has been invalidated. - -2007-02-25 Dan Nicolaescu - - * m/xtensa.h: New file. - -2007-02-24 Nick Roberts - - * .gdbinit (xprintstr): Ensure GDB (> 6.6) prints symbol name - as strings and not character arrays. - -2007-02-24 YAMAMOTO Mitsuharu - - * macterm.c [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_drag) - (x_set_toolkit_scroll_bar_thumb): Add bar->min_handle as margin to - scroll bar handle size in order to avoid `scroll backward' problem. - (x_scroll_bar_create, XTset_vertical_scroll_bar) - [USE_TOOLKIT_SCROLL_BARS]: Initialize bar->min_handle. - - * macterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: - New member `min_handle'. - -2007-02-23 Kim F. Storm - - * print.c (print): Reset print_number_index if Vprint_number_table - is nil. - -2007-02-23 Eli Zaretskii - - * w32.c (stat, get_long_basename, is_unc_volume): Use _mbspbrk - instead of strpbrk. - -2007-02-23 YAMAMOTO Mitsuharu - - * macmenu.c (mac_menu_show): Call unbind_to early. Use variable - `menu_item_selection' as in W32 version. - [TARGET_API_MAC_CARBON] (mac_handle_dialog_event): Add explicit - braces to avoid ambiguous `else'. - - * macterm.c (mac_display_info_for_display): Remove function. - (mac_flush_display_optional) [USE_CG_DRAWING]: New function. - (x_redisplay_interface) [USE_CG_DRAWING]: Set it as handler for - flush_display_optional. - [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_press): - New argument MOUSE_POS. All uses changed. Set bar->dragging to - negative integer if scroll bar handle is pressed. - [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_release): - Negative bar->dragging means scroll bar handle is not dragged. - [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_drag): Get initial - offset of scroll bar handle from negative bar->dragging. - (XTread_socket) [USE_TOOLKIT_SCROLL_BARS]: Modifiers for scroll - bar click is compared against mapped one. Set down/up_modifier - for scroll bar click event with control key. - - * macterm.h (x_display_info_for_display): Remove extern. - (SCROLL_BAR_UNPACK, SET_SCROLL_BAR_CONTROL_HANDLE): Don't limit - value to be unpacked to 32-bit on LP64 model. - -2007-02-23 Kenichi Handa - - * process.c (send_process_object_unwind): New function. - (send_process_object): New function. - (Fprocess_send_region): Call send_process_object. - (Fprocess_send_string): Likewise. - -2007-02-22 Jason Rumney - - * w32menu.c (w32_menu_show): Mark the frame's menu as inactive - when popup menu finishes. - - * w32fns.c (menubar_in_use): New flag. - (w32_wnd_proc) : - Use it. - - * w32menu.c (Fx_popup_menu): Don't free menu strings here. - (w32_menu_show): Do it here instead. - - * w32fns.c (w32_wnd_proc) : Set menubar_active frame - parameter. - - * w32menu.c (current_popup_menu): Make available globally. - (menubar_selection_callback): Free menu strings before pushing the - menu event into the keyboard buffer. Remove menu_command_in_progress. - - * w32fns.c (current_popup_menu): Use from w32menu.c. - (w32_wnd_proc) : Use menubar_active - and current_popup_menu to determine whether a menubar menu has - been cancelled. - - * w32term.h (w32_output): Remove menu_command_in_progress. - -2007-02-22 Kim F. Storm - - * dispnew.c (update_frame, update_single_window): Set force_p here if - redisplay_dont_pause is set or Vredisplay_preemption_period is nil... - (update_window, update_frame_1): ... instead of here. - (update_text_area): Clear mouse face on header lines. - -2007-02-21 Kim F. Storm - - * minibuf.c (Fassoc_string): Doc fix. Allow symbol for KEY too. - -2007-02-21 YAMAMOTO Mitsuharu - - * macterm.c (WINDOW_RESOURCE, TERM_WINDOW_RESOURCE): Remove macros. - [USE_MAC_TSM] (mac_handle_text_input_event): Remove unused variable - `mapped_modifiers'. - (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1020]: Use Keyboard - Layout Services routines to get current Unicode keyboard layout. - -2007-02-20 Chong Yidong - - * frame.c (x_set_screen_gamma): Apply gamma value to the frame's - bgcolor. - -2007-02-19 Kim F. Storm - - * minibuf.c (Fassoc_string): Allow symbols as keys. - - * w32term.c (w32_set_scroll_bar_thumb): Don't resize scroll-bar - handle while dragging, except when we get close to eob. - Fix position and size calculations so we don't scroll backwards - just by clicking on the handle. - -2007-02-17 YAMAMOTO Mitsuharu - - * Makefile.in (${emacsapp}Contents/Resources/Emacs.rsrc) - [HAVE_CARBON]: Remove target. - (macosx-app) [HAVE_CARBON]: Don't depend on it. - -2007-02-17 Juanma Barranquero - - * callproc.c (syms_of_callproc) : - : - (Fgetenv_internal): Fix typos in docstrings. - - * doc.c (Fsubstitute_command_keys): Fix typo in docstring. - -2007-02-16 Andreas Schwab - - * frame.c (Fmodify_frame_parameters): Return a value. - - * editfns.c (Fformat): Add support for '+' flag. - * doprnt.c (doprnt1): Likewise. Fix overflow checking. - -2007-02-14 Chong Yidong - - * s/umips.h: Unused file removed. - -2007-02-14 Juanma Barranquero - - * xfaces.c (Fcolor_distance): Don't continue checking a color for - errors after it has been correctly parsed as an RGB list. - -2007-02-14 Jan Dj,Ad(Brv - - * xterm.c (do_ewmh_fullscreen): Also check for _NET_WM_STATE_FULLSCREEN. - -2007-02-13 YAMAMOTO Mitsuharu - - * macfns.c (Fx_focus_frame): Move current process to foreground if - it is not. - [TARGET_API_MAC_CARBON] (Fx_file_dialog): Replace #if MAC_OSX with - #ifdef MAC_OSX. - (Fmac_set_font_panel_visible_p) [USE_MAC_FONT_PANEL]: Rename from - Fmac_set_font_panel_visibility. All uses changed. Rename argument - VISIBLE to FLAG. - - * macterm.c (MakeMeTheFrontProcess) [MAC_OSX]: Remove function. - (mac_initialize) [MAC_OSX]: Call SetFrontProcess instead of - MakeMeTheFrontProcess. - -2007-02-12 Chong Yidong - - * frame.c (x_set_screen_gamma): Clear face cache. - -2007-02-11 Juanma Barranquero - - * buffer.c (Fgenerate_new_buffer_name, Fbuffer_modified_tick): - Reflow docstrings. - -2007-02-10 Eli Zaretskii - - * window.c (Fwindow_height, Fwindow_hscroll) - (Fwindow_redisplay_end_trigger, Fwindow_point, Fwindow_start) - (Fwindow_end, Fwindow_display_table, Fwindow_text_height): - Document the effect of WINDOW arg being nil. - -2007-02-08 Kim F. Storm - - * minibuf.c (read_minibuf): Fix 2007-01-30 change. - Use Qlambda as interim value of Vminibuffer_completing_file_name. - (Fcompleting_read): Use non-filename maps if value is Qlambda (or Qnil). - (syms_of_minibuf) : Document lambda. - -2007-02-07 Juanma Barranquero - - * makefile.w32-in ($(TRES)): Use literal "../nt/emacs.rc" instead - of $(ALL_DEPS). - -2007-02-07 Eli Zaretskii - - * makefile.w32-in ($(TRES)): Depend on stamp_BLD, since $(TRES) is - put into $(BLD). - -2007-02-06 Chong Yidong - - * frame.c (Fmodify_frame_parameters): Don't bind - Qinhibit_default_face_x_resources, which has no effect. - (Qinhibit_default_face_x_resources): Symbol deleted. - -2007-02-03 Eli Zaretskii - - * indent.c (Fmove_to_column): Document that the argument COLUMN is - taken from prefix numeric argument. - -2007-02-03 Juanma Barranquero - - * lread.c (syms_of_lread) : Doc fix. - -2007-01-29 Andreas Seltenreich (tiny change) - - * xterm.c [!USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_expose): - Use the foreground color of the scroll-bar face when drawing - the scroll-bar's border. - -2007-02-02 Jan Dj,Ad(Brv - - * xterm.c (do_ewmh_fullscreen): Check that what != NULL before - calling wm_supports. - -2007-02-01 Juanma Barranquero - - * lread.c (syms_of_lread) : Doc fix. - Wording by Eli Zaretskii. - -2007-01-31 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Initialize h/vmargin to 0. - -2007-01-30 Richard Stallman - - * minibuf.c (read_minibuf): - Save and clear Vminibuffer_completing_file_name. - (read_minibuf_unwind): Restore it. - (Vminibuffer_completion_table, Qminibuffer_completion_table) - (Vminibuffer_completion_predicate, Qminibuffer_completion_predicate) - (Vminibuffer_completion_confirm, Qminibuffer_completion_confirm) - (Vminibuffer_completing_file_name): Definitions moved up. - -2007-01-29 Chong Yidong - - * m/hp800.h: Restore, removing HP-UX support. - -2007-01-29 Jan Dj,Ad(Brv - - * Makefile.in: Use a variable, XFT_LIBS, instead #define LIB_X11_LIB. - -2007-01-28 Richard Stallman - - * minibuf.c (Ftry_completion, Fall_completions) - (Fcompleting_read, Ftest_completion): - Rename arg ALIST or TABLE to COLLECTION. - -2007-01-27 Chong Yidong - - * unexhp9k800.c: Remove due to lack of legal papers. - - * m/sr2k.h, m/hp800.h: Remove due to dependence on above. - -2007-01-27 Eli Zaretskii - - * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector): Doc fix. - - * minibuf.c (Fcompleting_read): Doc fix. - -2007-01-26 Jan Dj,Ad(Brv - - * gtkutil.c (xg_initialize): Call XftInit if HAVE_XFT. - - * Makefile.in: Use XFT_LIBS if defined. - -2007-01-26 YAMAMOTO Mitsuharu - - * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Use - BLOCK_INPUT/UNBLOCK_INPUT. - - * blockinput.h (interrupt_input_blocked): Declare volatile. - - * keyboard.c (interrupt_input_blocked): Declare volatile. - - * syssignal.h (SIGNAL_THREAD_CHECK): Use pthread_equal. - -2007-01-24 Kim F. Storm - - * keymap.c (describe_map): Don't consider prefix keys to be shadowed. - -2007-01-23 Juanma Barranquero - - * editfns.c (Finsert_char): Doc fix. - (Fget_internal_run_time, Fdecode_time): Fix typos in docstrings. - -2007-01-22 YAMAMOTO Mitsuharu - - * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag): - Don't pass keyboard modifiers to mac_store_drag_event, but put - them as kEventParamKeyModifiers Apple event parameter. - -2007-01-21 Chong Yidong - - * xdisp.c (try_window): Revert previous change. - - * dispnew.c (update_text_area): Revert 2006-09-17 change. - Always redraw non-mode-line rows with mouse-face. - -2007-01-20 Chong Yidong - - * xdisp.c (try_window): Clear mouse-face highlights first. - - * window.c (set_window_buffer): Revert 2006-11-22 change. - -2007-01-20 Eli Zaretskii - - * .gdbinit (ppt, xtype, xmisctype, xint, xptr, xmarker, xframe) - (xbuffer, xcons, xcar, xcdr): Fix doc strings. - -2007-01-20 Chong Yidong - - * keyboard.c (read_key_sequence): Extract local map only if the - given position is in an accessible buffer region. - -2007-01-19 Nick Roberts - - * .gdbinit: Reformat documentation so that first sentence - displays properly with "help user-defined" (like apropos). - -2007-01-18 Bruno Haible (tiny change) - - * epaths.in: Move PATH_DOC from local/info to local/share/info. - -2007-01-15 YAMAMOTO Mitsuharu - - * macmenu.c (create_and_show_dialog) [TARGET_API_MAC_CARBON]: - Create movable modal window instead of movable alert window. - (create_and_show_dialog) [!MAC_OSX]: Use DeactivateControl instead - of DisableControl. - - * macselect.c (Fmac_resume_apple_event): Set error number when - descriptor type of reply is non-null. - -2007-01-14 YAMAMOTO Mitsuharu - - * macmenu.c (create_and_show_dialog) [TARGET_API_MAC_CARBON]: - Use DisableControl for disabled items. Set default button to first - enabled one. Use icon of application in execution. - -2007-01-13 Eli Zaretskii - - * process.c (Fdelete_process, Fprocess_id, sigchld_handler): - Copy PID into EMACS_INT to avoid GCC warnings. - - * fns.c (maybe_resize_hash_table): Copy new size of hash table - into EMACS_INT to avoid GCC warnings. - - * editfns.c (Fuser_uid, Fuser_real_uid): Copy values returned by - geteuid and getuid into EMACS_INT to avoid GCC warnings. - - * dired.c (Ffile_attributes): Fix last change. - -2007-01-12 Eli Zaretskii - - * dired.c (Ffile_attributes): Copy some members of `struct stat' - into int's to avoid GCC warnings about limited range of short in - arguments to FIXNUM_OVERFLOW_P. - -2007-01-12 YAMAMOTO Mitsuharu - - * macmenu.c (HAVE_DIALOGS): Define if TARGET_API_MAC_CARBON. - (mac_handle_dialog_event, install_dialog_event_handler) - (create_and_show_dialog) [TARGET_API_MAC_CARBON]: New functions. - (DIALOG_LEFT_MARGIN, DIALOG_TOP_MARGIN, DIALOG_RIGHT_MARGIN) - (DIALOG_BOTTOM_MARGIN, DIALOG_MIN_INNER_WIDTH) - (DIALOG_MAX_INNER_WIDTH, DIALOG_BUTTON_BUTTON_HORIZONTAL_SPACE) - (DIALOG_BUTTON_BUTTON_VERTICAL_SPACE, DIALOG_BUTTON_MIN_WIDTH) - (DIALOG_TEXT_MIN_HEIGHT, DIALOG_TEXT_BUTTONS_VERTICAL_SPACE) - (DIALOG_ICON_WIDTH, DIALOG_ICON_HEIGHT, DIALOG_ICON_LEFT_MARGIN) - (DIALOG_ICON_TOP_MARGIN) [TARGET_API_MAC_CARBON]: New macros. - (mac_dialog) [TARGET_API_MAC_CARBON]: Remove function. - (mac_dialog_show) [TARGET_API_MAC_CARBON]: Use create_and_show_dialog. - - * macterm.c (x_free_frame_resources) [USE_CG_DRAWING]: - Call mac_prepare_for_quickdraw. - (quit_char, make_ctrl_char) [TARGET_API_MAC_CARBON]: Move externs - outside #ifdef MAC_OSX. - (mac_quit_char_key_p) [TARGET_API_MAC_CARBON]: Move function - outside #ifdef MAC_OSX. - (mac_check_bundle) [MAC_OSX]: Remove unused function. - - * macterm.h (mac_quit_char_key_p): Move extern outside #ifdef MAC_OSX. - (HOURGLASS_WIDTH, HOURGLASS_HEIGHT): Parenthesize definitions. - -2007-01-11 Jan Dj,Ad(Brv - - * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Use pthread_equal, - block/unblock SIGIO. - -2007-01-10 Stefan Monnier - - * editfns.c (Fformat): Allow integer-format to work with floats of size - larger than most-positive-fixnum (but still smaller than MAXINT). - - * dired.c (Ffile_attributes): Use floats for large uids/gids. - -2007-01-09 Eli Zaretskii - - * emacs.c (syms_of_emacs) : Doc fix. - -2007-01-09 YAMAMOTO Mitsuharu - - * callproc.c (Fcall_process_region) [HAVE_MKSTEMP]: Add BLOCK_INPUT - around mkstemp. - - * image.c (XDrawLine) [MAC_OS]: Remove macro. - (XCreateGC_pixmap) [!HAVE_NTGUI]: Likewise. - (x_disable_image) [!HAVE_NTGUI]: Use XCreateGC instead of - XCreateGC_pixmap. - - * macgui.h (Display): Typedef to opaque type. - - * macmenu.c (mac_dialog_modal_filter) [MAC_OSX]: New function. - (Fx_popup_dialog) [MAC_OSX]: Use standard alert if called from - Fmessage_box, Fyes_or_no_p, or Fy_or_n_p. - [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030] (menu_quit_handler): - Use mac_quit_char_key_p. - - * macterm.c (XDrawLine): Rename from mac_draw_line_to_pixmap. - (XCreateGC): Change type of 2nd argument to void *. - (XFreeGC) [USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: - Fix last change. - (mac_to_emacs_modifiers): Change return type to int. - [USE_CARBON_EVENTS] (mac_event_to_emacs_modifiers): Likewise. - (mac_mapped_modifiers): New function. - (XTread_socket): Use it. - [USE_TSM] (mac_handle_text_input_event): Likewise. - (do_window_update) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw. - (mac_quit_char_modifiers, mac_quit_char_keycode) [MAC_OSX]: - Remove variables. - (mac_determine_quit_char_modifiers, init_quit_char_handler) - [MAC_OSX]: Remove functions. - (make_ctrl_char) [MAC_OSX]: Add extern. - (mac_quit_char_key_p) [MAC_OSX]: New function. - (mac_initialize) [MAC_OSX]: Don't call init_quit_char_handler. - - * macterm.h (FONT_MAX_WIDTH): Remove unused macro. - (XCreateGC): Change type in extern. - (XDrawLine): Rename from mac_draw_line_to_pixmap. - (mac_quit_char_key_p) [MAC_OSX]: Add extern. - -2007-01-08 Jan Dj,Ad(Brv - - * keyboard.c (init_keyboard): Initialize interrupt_input_blocked and - interrupt_input_pending. - - * xterm.h (x_display_info): New: net_supported_atoms, - nr_net_supported_atoms and net_supported_window. - - * xterm.c (last_user_time): New variable. - (handle_one_xevent): Set last_user_time from events that have Time. - Set net_supported_window to 0 when reparented. - (wm_supports): New function. - (do_ewmh_fullscreen): Use wm_supports to check for _NET_WM_STATE. - (x_term_init): Initialize net_supported_atoms, nr_net_supported_atoms - and net_supported_window. - -2007-01-05 Kim F. Storm - - * indent.c (Fvertical_motion): Fix it overshoot check for overlay - strings without embedded newlines immediately followed by newline. - -2007-01-05 YAMAMOTO Mitsuharu - - * editfns.c (Fformat_time_string, Fdecode_time, Fencode_time) - (Fcurrent_time_string, Fcurrent_time_zone): Add BLOCK_INPUT around - gmtime/localtime/emacs_memftimeu/mktime. - - * mac.c (Fmac_set_file_creator): Use MAC_EMACS_CREATOR_CODE - instead of 'EMAx'. - [!MAC_OSX] (sys_open, sys_creat, sys_fopen): Likewise. - - * macgui.h (struct _XGC) [USE_CG_DRAWING - && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: New members cg_fore_color - and cg_back_color. - - * macmenu.c (Vshow_help_function) [TARGET_API_MAC_CARBON]: Add extern. - (restore_show_help_function, menu_target_item_handler) - [TARGET_API_MAC_CARBON]: New functions. - (install_menu_target_item_handler): New function. - (add_menu_item) [TARGET_API_MAC_CARBON]: Set help string as menu - item property. - - * macterm.c (CG_SET_FILL_COLOR_MAYBE_WITH_CGCOLOR) - (CG_SET_FILL_COLOR_WITH_GC_FOREGROUND) - (CG_SET_FILL_COLOR_WITH_GC_BACKGROUND) - (CG_SET_STROKE_COLOR_MAYBE_WITH_CGCOLOR) - (CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND): New macros. - (mac_cg_color_space_rgb) [USE_CG_DRAWING]: New variable. - (mac_cg_color_black) [USE_CG_DRAWING - && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: New variable. - (init_cg_color) [USE_CG_DRAWING]: New function. - (mac_draw_line, mac_draw_rectangle) [USE_CG_DRAWING]: Use - CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND instead of CG_SET_STROKE_COLOR. - (mac_erase_rectangle, mac_clear_window, mac_draw_cg_image) - (mac_fill_rectangle, mac_draw_image_string_cg) [USE_CG_DRAWING]: - Use CG_SET_FILL_COLOR_WITH_GC_FOREGROUND or - CG_SET_FILL_COLOR_WITH_GC_BACKGROUND instead of CG_SET_FILL_COLOR. - (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Likewise. - (XCreateGC, XFreeGC, XSetForeground, XSetBackground) [USE_CG_DRAWING - && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Use gc->cg_fore_color and/or - gc->cg_back_color. - (install_drag_handler, remove_drag_handler): Make extern. - (install_menu_target_item_handler): Add extern. - (install_window_handler): Call install_menu_target_item_handler. - [MAC_OS8] (main): Use MAC_EMACS_CREATOR_CODE instead of 'EMAx'. - (mac_initialize) [USE_CG_DRAWING]: Call init_cg_color. - - * macterm.h (MAC_EMACS_CREATOR_CODE): New enumerator. - -2007-01-04 Juanma Barranquero - - * window.c (Fwindow_end): Fix use of >= operator. - -2007-01-03 Richard Stallman - - * window.c (Fwindow_end): Check BUF_OVERLAY_MODIFF like BUF_MODIFF. - -2007-01-02 Jan Dj,Ad(Brv - - * gtkutil.h (xg_menu_item_cb_data_): Remove highlight_id and - unhighlight_id. - - * gtkutil.c (menuitem_highlight_callback): Invoked widget is the - parent of the menu item. Get menu item widget from event. - (xg_create_one_menuitem, xg_update_menu_item): highlight_id and - unhighlight_id has been removed. - (create_menus): Connect enter/leave-notify-event to the menu instead - of individual items. - -2006-12-31 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Connect create-menu-proxy with - xg_tool_bar_menu_proxy. - (xg_tool_bar_menu_proxy): New function. - (xg_tool_bar_proxy_callback): New function. - -2006-12-30 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_button_cb): Save last modifier on widget. - (xg_tool_bar_callback): Remove check for button. - (update_frame_tool_bar): Put an event box in the tool bar and a button - in the event box. Attach enter/leave-notify-event to the event box. - -2006-12-30 Richard Stallman - - * keymap.c (Fdefine_key): Doc fix. - -2006-12-29 Kim F. Storm - - * frame.h (struct frame): New member minimize_tool_bar_window_p. - - * xdisp.c (auto_resize_tool_bars_p): Replace with ... - (Vauto_resize_tool_bars): ... this. - (syms_of_xdisp): DEFVAR_LISP and initialize it. Update doc string - to describe new value `grow-only', and use of C-l. - (display_tool_bar_line): Only use default face for border below - toolbar if not grow-only (to get acceptable visual appearence). - Explicitly set visible_height for empty toolbar lines. - (redisplay_tool_bar): Handle `grow-only' setting. Check and clear - minimize_tool_bar_window_p flag. - - * window.c (Frecenter): Set minimize_tool_bar_window_p flag - when called without arg to redraw with minimum toolbar height. - Update doc string. - -2006-12-29 Jason Rumney - - * s/ms-w32.h (tzname): Do not define in msvc8. - (utime): Do not define in msvc8. - - * regex.c (regerror): Change parameter name err_code. - -2006-12-26 Richard Stallman - - * search.c (Fsearch_forward): Doc fix. - - * callint.c (Finteractive): Doc fix. - -2006-12-25 Kim F. Storm - - * s/ms-w32.h (BROKEN_DATAGRAM_SOCKETS): Define it. - -2006-12-23 Eli Zaretskii - - * keyboard.c (some_mouse_moved): Fix last change. - -2006-12-22 Eli Zaretskii - - * callproc.c (syms_of_callproc) : Doc fix. - -2006-12-22 Mark Davies - - * m/amdx86-64.h, m/hp800.h: Add support for NetBSD. - * m/sh3el.h: New file. - -2006-12-22 Eli Zaretskii - - * makefile.w32-in (emacs, temacs): Depend on stamp_BLD instead of - $(BLD). - ($(OBJ0) $(OBJ1) $(WIN32OBJ)): New dependency on stamp_BLD. - (bootstrap-temacs): Pass $(XMFLAGS) to sub-make. - ($(OBJ0) $(OBJ1) $(WIN32OBJ)): Add lastfile.$(O) and firstfile.$(O). - (clean): Delete stamp_BLD. - -2006-12-22 YAMAMOTO Mitsuharu - - * macfns.c (mac_update_title_bar) [TARGET_API_MAC_CARBON]: - Call mac_update_proxy_icon also when buffer modification flag changed. - [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): Don't update alias, - but compare FSRef/FSSpec of resolved alias. - -2006-12-21 Kim F. Storm - - * w32.c (_sys_wait_accept): Fix handle leak. - -2006-12-20 Jan Dj,Ad(Brv - - * sound.c: Include if ALSA_SUBDIR_INCLUDE is - defined. - -2006-12-20 Kim F. Storm - - * s/ms-w32.h (BROKEN_NON_BLOCKING_CONNECT): Define it. - -2006-12-19 Juanma Barranquero - - * keyboard.c (syms_of_keyboard) : - * mac.c (Fmac_code_convert_string): - * search.c (Fsearch_forward): Doc fixes. - -2006-12-19 Kim F. Storm - - Rework 2006-12-04 change. A SIGUSR1 (SIGUSR2) signal now generates - a sigusr1 event instead of [signal usr1] sequence, and signal events - are now supposed to be handled via special-event-map. - - * keyboard.c (kbd_buffer_store_event_hold): Undo 2006-12-04 change. - (make_lispy_event): Don't generate Qsignal prefix for code 0. - Abort if signal code is unknown. - (store_user_signal_events): Don't make Qsignal prefix (code 0). - (Qsignal): Move declaration back to process.c. - (syms_of_keyboard): Don't intern or staticpro it here. - - * process.c (Qsignal): Declare here. - (syms_of_process): Intern or staticpro it. - - * emacs.c (main): Rename user signals to sigusr1 and sigusr2. - - * .gdbinit: Pass on SIGUSR1 and SIGUSR2 to Emacs. - -2006-12-19 Juanma Barranquero - - * buffer.c (syms_of_buffer) : - : Doc fixes. - -2006-12-17 Richard Stallman - - * fileio.c (Fread_file_name_internal): Pass Vread_file_name_predicate - to Ffile_name_completion. - - * dired.c (file_name_completion): New arg PREDICATE. Some cleanup. - (Ffile_name_completion): New arg PREDICATE. - -2006-12-17 Juanma Barranquero - - * buffer.c (Fkill_buffer): Doc fix. - (syms_of_buffer) : Doc fix. - -2006-12-16 Juanma Barranquero - - * minibuf.c (Ftry_completion): Check that obarray buckets are symbols. - -2006-12-16 Eli Zaretskii - - * w32fns.c (w32-window-exists-p): New function. - (syms_of_w32fns): Defsubr it. - - * prefix-args.c [STDC_HEADERS]: Include stdlib.h. - -2006-12-16 Juanma Barranquero - - * minibuf.c (Ftry_completion): Use `check_obarray' if ALIST is a vector. - -2006-12-15 Eli Zaretskii - - * emacs.c (USAGE3): Clarify documentation of --color. - -2006-12-15 YAMAMOTO Mitsuharu - - * mac.c (wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: - New variable. - (ENABLE_WAKEUP_FROM_RNE, DISABLE_WAKEUP_FROM_RNE): New macros. - [!MAC_OSX] (select): Use them. - [MAC_OSX] (select_and_poll_event, sys_select): Likewise. - (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: New function. - - * macfns.c (mac_atsu_font_face_attributes) [USE_ATSUI]: Add extern. - (Fmac_atsu_font_face_attributes) [USE_ATSUI]: New function. - (syms_of_macfns) [USE_ATSUI]: Defsubr it. - - * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag): - Use mac_wakeup_from_rne instead of mac_post_mouse_moved_event. - - * macterm.c (mac_query_char_extents) [USE_ATSUI]: Don't call - ATSUGetGlyphBounds if not necessary. - (Vmac_atsu_font_table) [USE_ATSUI]: Remove variable. - (syms_of_macterm) [USE_ATSUI]: Don't defvar it. - (fm_get_style_from_font, atsu_find_font_from_family_name) - (atsu_find_font_family_name, mac_atsu_font_face_attributes) - [USE_ATSUI]: New functions. - (init_font_name_table) [USE_ATSUI]: Use atsu_find_font_family_name. - (mac_load_query_font) [USE_ATSUI]: Use atsu_find_font_from_family_name. - Don't get metrics for Latin-1 right half characters. - (mac_load_query_font): Don't load font if space width is not positive. - [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event): - Use mac_wakeup_from_rne instead of mac_post_mouse_moved_event. - (XTread_socket): Call SelectWindow when unfocused frame is clicked. - - * macterm.h (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: Add extern. - -2006-12-15 Kim F. Storm - - * keyboard.c (ignore_mouse_drag_p): New global var. - (some_mouse_moved): Return 0 if it is non-zero. - (make_lispy_event): Generate click event on mouse up if - ignore_mouse_drag_p is non-zero, even if mouse moved. - Clear ignore_mouse_drag_p on mouse down/up. - - * xdisp.c (redisplay_window): Set ignore_mouse_drag_p if tool-bar - is resized to avoid generating a mouse drag event. - -2006-12-14 Juanma Barranquero - - * w32fns.c (w32_wnd_proc): Force non-tooltip frames to respect the - minimum tracking size. Remove non-working old hack to do the same. - -2006-12-14 YAMAMOTO Mitsuharu - - * emacs.c (handle_user_signal): Move function to keyboard.c. - (main): Use add_user_signal for SIGUSR1 and SIGUSR2. - - * keyboard.c (make_lispy_event): Use find_user_signal_name. - (read_avail_input): Store pending user signal events. - (struct user_signal_info): New struct. - (user_signals): New variable. - (add_user_signal, store_user_signal_events) - (find_user_signal_name): New functions. - (handle_user_signal): Move function from emacs.c. Don't store - USER_SIGNAL_EVENT here, but increment number of pending signals. - - * keyboard.h (add_user_signals): Add extern. - -2006-12-11 Juanma Barranquero - - * buffer.c (syms_of_buffer) : - : - : Doc fixes. - - * xdisp.c (syms_of_xdisp) : Doc fix. - -2006-12-10 Kim F. Storm - - * xdisp.c (show_mouse_face): Never use text cursor in tool-bar. - -2006-12-10 Juanma Barranquero - - * abbrev.c (syms_of_abbrev) : - * buffer.c (syms_of_buffer) : - * keymap.c (Flookup_key): - * lread.c (Feval_buffer, Feval_region): - * macterm.c (syms_of_macterm) : - : - * marker.c (Fmarker_insertion_type): - * minibuf.c (syms_of_minibuf) : - * msdos.c (syms_of_msdos) : - * w32term.c (syms_of_w32term) : - : - * xdisp.c (format-mode-line): - * xterm.c (syms_of_xterm) : - : Doc fixes. - -2006-12-10 Andreas Schwab - - * systime.h (EMACS_GET_TIME): Remove check for - HAVE_STRUCT_TIMEZONE which is never defined. - -2006-12-10 Alan Mackenzie - - * syntax.c (Fpartial_parse_sexp): Correct Docco: Elt 8 of the - result is now neither the last elt nor optional for OLDSTATE. - -2006-12-09 Eli Zaretskii - - * process.c (Fsignal_process): Doc fix. Use XFLOAT_DATA to - extract the process ID from a Lisp float. - -2006-12-09 Chong Yidong - - * xterm.c (XTframe_raise_lower): Comment out _NET_ACTIVE_WINDOW code. - -2006-12-08 Eli Zaretskii - - * frame.h (PIX_TYPE): Redefine as `unsigned long', for 64-bit - platforms where long is 64-bit. - - * msdos.h (PIX_TYPE): Redefine as `unsigned long'. - -2006-12-08 NAKAJI Hiroyuki (tiny change) - - * m/amdx86-64.h: Add support for Solaris 10 on x86-64. - -2006-12-08 Kenichi Handa - - * xterm.c (x_query_font): Use xstricmp instead off strcasecmp. - -2006-12-08 Juanma Barranquero - - * emacs.c (syms_of_emacs) : Doc fix. - -2006-12-07 Kim F. Storm - - * process.c (parse_signal): Use xstricmp instead of strcasecmp. - (Fsignal_process): Don't use strncasecmp. - -2006-12-05 Glenn Morris - - * abbrev.c (Qforce): New Lisp_Object. - (Fdefine_abbrev): Do not overwrite non-system abbrevs with system - abbrevs, unless 'force is applied. - (syms_of_abbrev): Add Qforce. - -2006-12-04 Kim F. Storm - - * process.c (parse_signal): Rename macro from handle_signal. - (Fsignal_process): Also accept lower-case variants of signal - names (to align with signal names generated by Emacs itself). - - * emacs.c (handle_USR1_signal, handle_USR2_signal): Replace by... - (handle_user_signal): ... this, which generates two USER_SIGNAL_EVENTs - first with code == 0 [signal] and one with code == sig number. - (main): Use it as handler for SIGUR1 and SIGUSR2. - - * keyboard.c (kbd_buffer_store_event_hold): Don't throw-on-input - if first event in [signal xxx] sequence. - (lispy_user_signals, Qusr1_signal, Qusr2_signal): Remove. - (syms_of_keyboard): Don't intern and staticpro them. - (Qsignal): Declare here. - (syms_of_keyboard): Intern and staticpro it. - (make_lispy_event): Use it. Intern symbols on the fly for other - USER_SIGNAL_EVENTs events. - - * process.c (Qsignal): Declare extern. - (syms_of_process): Don't intern/staticpro it here. - - * process.c (read_process_output): Abort if carryover < 0. - -2006-12-04 YAMAMOTO Mitsuharu - - * config.in: Regenerate. - - * fileio.c [__NetBSD__]: Don't define `unix'. - (Funix_sync, syms_of_fileio): Use `#ifdef HAVE_SYNC' instead of - `#ifdef unix'. - -2006-12-04 Glenn Morris - - * Makefile.in (version): New variable, set by configure. - (bootstrapclean, mostlyclean): Also remove emacs-${version}. - -2006-12-03 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Handle modifying a toolbar item - without an image. - -2006-12-01 Eli Zaretskii - - * w32fns.c (Fw32_shell_execute): Doc fix. - -2006-11-30 Chong Yidong - - * xdisp.c (move_it_to): Correctly count tab glyphs for continued - lines ending in tab. - -2006-11-30 Jan Dj,Ad(Brv - - * xterm.c (x_raise_frame): Move setting of _NET_ACTIVE_WINDOW - property ... - (XTframe_raise_lower): ... to here. - -2006-11-30 Kenichi Handa - - * regex.c (regex_compile): Fix previous change. - -2006-11-29 Juanma Barranquero - - * sound.c (Fplay_sound_internal): Remove spurious newline in docstring. - -2006-11-28 Chong Yidong - - * config.in: Regenerate. - -2006-11-28 Kenichi Handa - - * regex.c (regex_compile): Don't call SET_LIST_BIT with a - multibyte character. - -2006-11-27 Chong Yidong - - * s/aix4-2.h: Undefine _NO_PROTO. Suggested by Joe Buehler. - -2006-11-27 Kim F. Storm - - * window.c (set_window_buffer): Refactor recent changes. - -2006-11-27 Jason Rumney - - * w32term.c (w32_msg_worker): Declare correctly. - (w32_initialize): Don't cast w32_msg_worker. - - * w32fns.c (w32_msg_worker): Define as WINAPI and arg as void pointer. - -2006-11-26 Chong Yidong - - * m/amdx86-64.h: Look for standard libs in /usr/lib64 only if that - directory exists. - -2006-11-25 Eli Zaretskii - - * w16select.c (Fw16_set_clipboard_data): Fix the call to sit_for - as per the calling sequence change on 2006-07-11. - -2006-11-25 Chong Yidong - - * window.c (set_window_buffer): Use BLOCK_INPUT. - -2006-11-24 Juanma Barranquero - - * fns.c (substring_both): Add missing address operator. - -2006-11-24 Stefan Monnier - - * fns.c: Use AREF/ASIZE macros. - (concat): Provide the full ANSI prototype. - -2006-11-24 Juanma Barranquero - - * buffer.c (syms_of_buffer) : Doc fix. - -2006-11-23 William Smith (tiny change) - - * strftime.c (HAVE_SYS__MBSTATE_T_H): Fix typo. - -2006-11-22 Alfred M. Szmidt (tiny change) - - * s/openbsd.h (LD_SWITCH_SYSTEM): Remove /usr/pkg/lib and - /usr/pkg/lib from the library search path. - (LD_SWITCH_X_DEFAULT): New macro. - -2006-11-22 Chong Yidong - - * window.c (set_window_buffer): Clear mouse highlight if it is in - this window. - -2006-11-21 Chong Yidong - - * xfaces.c (realize_default_face): Check if the default font name - exists on this display before trying to use it. - -2006-11-21 Richard Stallman - - * fileio.c: Break line before &&, not after. - -2006-11-20 Eli Zaretskii - - * fns.c (concat) [!__GNUC__]: Add prototype. - -2006-11-20 Kenichi Handa - - * fileio.c (Fread_file_name_internal): Use SBYTES (not SCHARS) to - check the tailing slash of a filename. - -2006-11-20 KOBAYASHI Yasuhiro (tiny change) - - * indent.c (Fvertical_motion): Include composition in the case of - overshoot expected. - -2006-11-19 Andreas Schwab - - * xfaces.c (Fdisplay_supports_face_attributes_p): Initialize supports. - - * xmenu.c (Fx_popup_menu): Initialize selection. - -2006-11-18 Andreas Schwab - - * s/gnu-linux.h (GC_MARK_SECONDARY_STACK): Update call to mark_memory. - -2006-11-17 Tetsurou Okazaki (tiny change) - - * xterm.c (do_ewmh_fullscreen): Declare variable before XSETFRAME - to avoid gcc 2.96 error. - -2006-11-17 NIIMI Satoshi (tiny change) - - * search.c (simple_search): In the loop of backward searching, - check also the byte position against the limit. - -2006-11-14 Romain Francoise - - * minibuf.c (Fcompleting_read): Fix typo in docstring. - -2006-11-14 Kenichi Handa - - * coding.c (code_convert_region): Initialize coding->heading_ascii. - (decode_coding_string, code_convert_region): Likewise. - -2006-11-14 YAMAMOTO Mitsuharu - - * config.in: Regenerate. - - * macfns.c (Fx_display_mm_height, Fx_display_mm_width) - [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 - && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if - CGDisplayScreenSize is available. - - * macmenu.c (menu_quit_handler, install_menu_quit_handler): - Replace `#ifdef HAVE_CANCELMENUTRACKING' with - `#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030'. - (install_menu_quit_handler) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 - && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if - CancelMenuTracking is available. - - * macterm.c [USE_CG_TEXT_DRAWING] (mac_draw_image_string_cg) - [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 - && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if - CGContextShowGlyphsWithAdvances is available. - -2006-11-13 Jason Rumney - - * s/ms-w32.h: Define HAVE_INET_SOCKETS. - -2006-11-13 Nozomu Ando - - * alloc.c (mark_memory): New argument OFFSET. All uses changed. - Fix address calculations for case END < START. - (mark_stack): Impose Lisp_Object alignment on jmp_buf. - -2006-11-12 Juanma Barranquero - - * coding.c (Fencode_sjis_char, Fencode_big5_char): - Improve argument/docstring consistency. - - * editfns.c (Fmessage): Doc fixes. - - * process.c (syms_of_process) : Doc fix. - -2006-11-12 Chong Yidong - - * xmenu.c (popup_activated): Define outside HAVE_MENUS. - -2006-11-12 Romain Francoise - - * xselect.c (selection-coding-system): Fix docstring. - -2006-11-12 Juanma Barranquero - - * category.c (Fchar_category_set): Improve arg/docstring consistency. - - * data.c (Flogxor): - * fns.c (Frandom, Flength, Fsafe_length, Fstring_bytes) - (Fstring_equal, Fcompare_strings, Fstring_lessp, Fcopy_sequence) - (Fstring_make_unibyte): Fix typos in docstrings. - -2006-11-10 Jan Dj,Ad(Brv - - * xterm.h (struct x_display_info): Fix indentation. - - * xterm.c (do_ewmh_fullscreen, XTfullscreen_hook): New functions. - (x_check_fullscreen): Call do_ewmh_fullscreen. - (x_initialize): Set fullscreen_hook to XTfullscreen_hook. - - * frame.c (x_set_fullscreen): Call fullscreen_hook if set. - - * term.c: Define fullscreen_hook. - (syms_of_term): Initialize fullscreen_hook to NULL. - - * termhooks.h: Add fullscreen_hook. - -2006-11-08 Juanma Barranquero - - * bytecode.c (Fbyte_code): - * data.c (Fmakunbound): Use SYMBOL_CONSTANT_P macro. - -2006-11-06 Juanma Barranquero - - * lread.c (syms_of_lread): - * xsmfns.c (syms_of_xsmfns): Fix typo in docstring. - -2006-11-06 Martin Rudalics - - * macmenu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS. - - * w32menu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS. - Return nil if building without menus. - - * xmenu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS. - Return nil if building without menus. - -2006-11-05 Mark Davies (tiny change) - - * s/netbsd.h (POSIX_SIGNALS): Define. - -2006-11-05 Martin Rudalics - - * macmenu.c (Fmenu_or_popup_active_p): New function. - (syms_of_macmenu): Defsubr it. - - * w32menu.c (Fmenu_or_popup_active_p): New function. - (syms_of_w32menu): Defsubr it. - (popup_activated_flag, popup_activated): Remove. - - * xdisp.c (note_mouse_highlight) [HAVE_NTGUI]: Don't bother to - check popup_activated. - - * xmenu.c (Fmenu_or_popup_active_p): New function. - (syms_of_xmenu): Defsubr it. - -2006-11-05 YAMAMOTO Mitsuharu - - * unexmacosx.c (malloc_cookie): Remove unused variable. - (region_list_head, region_list_tail, lca, nlc, infile_lc_highest_addr) - (text_seg_lowest_offset, mh, curr_header_offset, infd, outfd) - (emacs_zone, data_segment_old_fileoff, data_segment_scp) - (num_unexec_regions, unexec_regions): Make variables static. - (print_regions, find_emacs_zone_regions): Make static. - (unexec_region_info): New typedef. - (unexec_regions): Change type from vm_range_t[] to unexec_region_info[]. - All uses changed. - (unexec_regions_recorder): Subtract size of trailing null pages from - filesize. Show filesize. - (unexec_regions_merge): Don't merge if null pages of preceding region - is not too small. Use long format in printf. - (copy_segment, copy_data_segment): Show filesize. - (copy_data_segment): Write filesize bytes of region data. - Adjust filesize in segment command accordingly. - (dump_it): Use long format in printf. - -2006-11-05 Juanma Barranquero - - * dosfns.c (Finsert_startup_screen): - * fns.c (Ffeaturep, syms_of_fns): - * frame.c (syms_of_frame): Fix typos in docstrings. - - * unexcw.c (unexec): Fix typo in output message. - -2006-11-04 Ralf Angeli - - * w32fns.c (w32_createwindow): Remove code for handling -geometry - command line option and `initial-frame-alist' which is superfluous - after the last change to `w32_createwindow'. - -2006-11-04 Slawomir Nowaczyk (tiny change) - - * w32proc.c (sys_wait): Only wait for processes with fd<0. - Others should be handled by sys_select instead. Fixes problems - with (progn (start-process "" nil "ls") (call-process "ls")). - -2006-11-04 Giorgos Keramidas (tiny change) - - * xmenu.c (Fmenu_bar_open): Declare variable before BLOCK_INPUT to - avoid gcc 2.95 error. - -2006-11-04 Chong Yidong - - * gtkutil.c (update_frame_tool_bar): If icon image is invalid and - wicon is null, insert an empty button. - -2006-11-03 Jan Dj,Ad(Brv - - * xterm.c (x_raise_frame): Send _NET_ACTIVE_WINDOW when raising the - window. - -2006-11-02 Juanma Barranquero - - * emacs.c (Fkill_emacs): Fix typo in docstring. - -2006-11-02 Nozomu Ando - - * unexmacosx.c (mach_header, segment_command, vm_region, section) - [_LP64]: New defines. - (VM_REGION_BASIC_INFO_COUNT, VM_REGION_BASIC_INFO, LC_SEGMENT) - (MH_MAGIC) [_LP64]: Redefine. - (delta): Remove variable. - (curr_file_offset, pagesize): New variables. - (ROUNDUP_TO_PAGE_BOUNDARY): New macro. - (data_segment_old_fileoff): Initialize explicitly. - (print_region, unexec_regions_recorder, print_load_command_name) - (copy_segment, copy_data_segment): Use long format in printf. - (MAX_UNEXEC_REGIONS): Increase to 400. - (unexec_regions_recorder): Don't warn too many regions here. - (find_emacs_zone_regions): Warn too many regions here. - (print_load_command_name) [_LP64]: Show correct load command name. - (copy_segment, copy_data_segment): Use variable `curr_file_offset'. - Show starting virtual memory address. Don't show ending file offset. - (copy_symtab, copy_dysymtab, copy_twolevelhints): New argument DELTA. - (dump_it): Use new local variable `linkedit_delta' and pass to them. - Error if trying to handle multiple DATA segments. - (unexec): Initialize variable `pagesize'. - -2006-11-01 Juanma Barranquero - - * eval.c (Fcatch): Doc fix. - -2006-10-31 YAMAMOTO Mitsuharu - - * image.c [MAC_OS] (image_load_qt_1, xpm_scan, xpm_make_color_table_v) - (xpm_put_color_table_v, xpm_get_color_table_v, xpm_make_color_table_h) - (xpm_put_color_table_h, xpm_get_color_table_h, xpm_str_to_color_key) - (xpm_load_image): Add const qualifier to arguments. - [MAC_OS] (xpm_color_key_strings): Make static const. - - * mac.c (create_apple_event_from_event_ref) - (create_apple_event_from_drag_ref, skip_white_space, parse_comment) - (parse_include_file, parse_binding, parse_component) - (parse_resource_name, parse_value, parse_resource_line) - (xrm_merge_string_database, xrm_get_resource) - (xrm_get_preference_database): Add const qualifier to arguments. - [MAC_OSX] (sys_select): Make variable `context' static const. - - * macfns.c (mac_color_map): Make static const. - (mac_color_map_lookup): Add const qualifier to arguments. - - * macmenu.c (install_menu_quit_handler): Make variable `typesList' - static const. - (name_is_separator): Add const qualifier to arguments. - - * macselect.c (init_service_handler): Make variable `specs' static - const. - - * macterm.c (mac_create_bitmap_from_bitmap_data): Make variable - `swap_nibbles' static const. - (atsu_get_text_layout_with_text_ptr): Make variables `lengths', - `tags', `sizes', `values' static const. - (mac_draw_string_common): Make variables `context' static. - Make variables `tags', `sizes', and `values' static const. - (pcm_get_status, x_detect_focus_change, x_scroll_bar_handle_click) - (xlfdpat_create, xlfdpat_block_match_1, xlfdpat_match) - (mac_to_x_fontname, parse_x_font_name, add_mac_font_name) - (mac_do_list_fonts, is_fully_specified_xlfd, do_grow_window) - (mac_store_event_ref_as_apple_event, mac_make_rdb): Add const - qualifier to arguments. - (xlfd_scalable_fields, keycode_to_xkeysym_table) - (fn_keycode_to_keycode_table): Make static const. - (mac_load_query_font): Make variables `tags', `sizes', `values', - `types', and `selectors' static const. - (mac_handle_command_event, mac_handle_window_event): - Make variables `names' and `types' static const. - (init_command_handler, install_window_handler): Make variables - `specs*' static const. - (mac_handle_font_event, mac_handle_text_input_event) - (mac_store_service_event): Make variables `names' and `types' - const. Make variables `names_*' and `types_*' static const. - - * macterm.h (create_apple_event_from_event_ref) - (create_apple_event_from_drag_ref, xrm_merge_string_database) - (xrm_get_resource, xrm_get_preference_database): Add const - qualifier to arguments in externs. - -2006-10-31 Kenichi Handa - - * xfns.c (xic_create_xfontset): Fix previous change. - -2006-10-30 Chong Yidong - - * s/openbsd.h (LD_SWITCH_SYSTEM): Add /usr/pkg/lib and - /usr/pkg/lib to library search path. - -2006-10-29 Mark Davies (tiny change) - - * ralloc.c (relinquish): Use a long for excess space counter to - handle 64-bit case correctly. - -2006-10-29 Jeramey Crawford - - * m/amdx86-64.h: Add defines for OpenBSD x86-64. - -2006-10-29 Juanma Barranquero - - * window.c (Fdisplay_buffer): Fix typo in docstring. - -2006-10-27 Ben North (tiny change) - - * w32term.c (x_draw_glyph_string_foreground): Set background mode - to TRANSPARENT before using overstrike to simulate bold faces. - - * xfaces.c (best_matching_font): Fix logic to decide whether to - use overstriking to simulate bold-face (it was reversed). - -2006-10-23 Kim F. Storm - - * xdisp.c (remember_mouse_glyph): Do nothing if glyphs are not - initialized. - - * keyboard.c (read_char): Make an element (t . EVENT) in - unread-command-events add EVENT to the current command's key sequence. - (syms_of_keyboard) : Update doc. - -2006-10-21 Richard Stallman - - * minibuf.c (Vread_expression_map): Define here. - (Qread_expression_history): New variable. - (syms_of_minibuf): Initialize them. - (Feval_minibuffer): Use Vread_expression_map and - Qread_expression_history. - -2006-10-21 Kenichi Handa - - * xfns.c (xic_create_fontsetname): If ADSTYLE field is not a wild - card, change it to "*". - (xic_create_xfontset): Call XCreateFontSet for each single - fontname in fontsetname. - -2006-10-19 Chong Yidong - - * callint.c (callint_message): Convert to a Lisp string. - (syms_of_callint): Initialize it. - (callint_message_size): Var deleted. - (Fcall_interactively): Use Fformat instead of doprnt to construct - prompt string. - -2006-10-19 YAMAMOTO Mitsuharu - - * xdisp.c (display_mode_line): Clear enabled_p flag on mode-line row. - -2006-10-19 YAMAMOTO Mitsuharu - - * macfns.c (Vmac_carbon_version_string) [TARGET_API_MAC_CARBON]: - New variable. - (syms_of_macfns) [TARGET_API_MAC_CARBON]: Defvar it. - -2006-10-19 Jan Dj,Ad(Brv - - * xselect.c (x_handle_selection_request): If the converted_selection - is nil or XCDR (converted_selection) is nil, decline the request. - -2006-10-16 Jan Dj,Ad(Brv - - * gtkutil.c (get_utf8_string): Remove warnings with casts. - (xg_tool_bar_button_cb): Ditto. - (xg_tool_bar_callback): Ditto. - -2006-10-16 YAMAMOTO Mitsuharu - - * dispnew.c (adjust_frame_glyphs_for_frame_redisplay): Remove unused - variable ch_dim. - (adjust_frame_glyphs_for_window_redisplay): Likewise. Don't allocate - menu bar window matrices on non-X systems. - - * mac.c (Fmac_get_preference, Fmac_code_convert_string): Add GCPROs. - - * macterm.c (mac_query_char_extents): Don't return glyph ID if layout - adjustment is needed. - (mac_load_query_font): Check if width and height are positive. - -2006-10-14 Richard Stallman - - * sysdep.c (init_sys_modes): Delete DEFVAR_LISP in the wrong place. - -2006-10-13 Chong Yidong - - * xdisp.c (decode_mode_spec): Ignore %c and %l constructs in frame - title. - -2006-10-12 Chong Yidong - - * keymap.c (Fkey_binding): Check Lisp_Object types before doing - XCAR and XINT. - -2006-10-12 Romain Francoise - - * image.c (xbm_read_bitmap_data): Delete extra semicolon. - -2006-10-10 Stefan Monnier - - * eval.c: Include xterm.h for x_fully_uncatch_errors and friends. - - * dispextern.h: Declare x_create_bitmap_from_xpm_data. - - * xterm.c (x_check_expected_move): Remove unused var `count'. - - * xmenu.c (syms_of_xmenu): Use Ffset rather than Fdefalias, since - Fdefalias is not declared in any *.h file. - -2006-10-09 Chong Yidong - - * dispnew.c (sit_for): Sit forever if TIMEOUT is t. - - * keyboard.c (command_loop_1): Handle non-number values of - `minibuffer-message-timeout'. - (Fexecute_extended_command): Fix typo. - - * minibuf.c (temp_echo_area_glyphs): Sit for - `minibuffer-message-timeout' seconds. - -2006-10-08 YAMAMOTO Mitsuharu - - * macterm.c (mac_draw_image_string, mac_draw_image_string_16): - Add argument OVERSTRIKE_P. - (mac_draw_string_common, mac_draw_image_string_cg): Likewise. - Support overstrike. - (mac_draw_string, mac_draw_string_16): Remove functions. - (x_draw_glyph_string_foreground): Use overstrike when needed. - (x_draw_composite_glyph_string_foreground): Likewise. - Use mac_draw_image_string_16 instead of mac_draw_string_16. - (mac_load_query_font): Rename from XLoadQueryFont. Take argument - F instead of DPY. All uses changed. Don't save/restore font. - -2006-10-07 Ralf Angeli - - * w32fns.c (w32_createwindow): Honour left and top positions if - supplied explicitly. - -2006-10-06 Kim F. Storm - - * xdisp.c (pos_visible_p): Fix value when EOB is visible. - -2006-10-05 Chong Yidong - - * frame.c (Qinhibit_face_set_after_frame_default): New var. - (syms_of_frame): Initialize it. - (x_set_frame_parameters): Avoid resetting :font attributes to the - new-frame defaults. - -2006-10-03 Stefan Monnier - - * lisp.h (clear_regexp_cache): Declare. - - * search.c (compile_pattern): Only check `cp->syntax_table' if needed. - (compile_pattern_1): Remember `used_syntax' in `cp->syntax_table'. - (clear_regexp_cache): Only flush those regexps which depend on - a syntax-table. - - * regex.c (regex_compile): Set the new `used_syntax' bit. - - * regex.h: Remove file local variables. - (struct re_pattern_buffer): New field `used_syntax'. - -2006-10-03 Kim F. Storm - - * process.c (list_processes_1): Run sentinels before removing dead - processes. Also remove `closed' network connections. - -2006-10-01 Stefan Monnier - - * xdisp.c (handle_fontified_prop): Don't fontify at EOB. - -2006-09-30 Eli Zaretskii - - * config.in: Regenerated. - -2006-09-29 Juri Linkov - - * buffer.c (syms_of_buffer): Reorder coding systems in the - docstring of %z to the real order displayed in the modeline. - -2006-09-28 Stefan Monnier - - * keymap.c (Fdefine_key): Yet another int/Lisp_Object mixup (YAILOM). - -2006-09-26 Chong Yidong - - * indent.c (Fvertical_motion): Do move back if the Lisp string - being displayed contains newlines. - -2006-09-26 YAMAMOTO Mitsuharu - - * macterm.c (mac_compute_glyph_string_overhangs, XLoadQueryFont) - [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw before QDTextBounds. - -2006-09-26 Kenichi Handa - - * keymap.c (Fsingle_key_description): For an invalid char, return - "Invalid char code NNNNN". - -2006-09-25 Chong Yidong - - * callint.c (Fcall_interactively): Doc fix. - -2006-09-25 YAMAMOTO Mitsuharu - - * macterm.c (x_underline_at_descent_line): New variable. - (syms_of_macterm): DEFVAR_BOOL it. - (x_draw_glyph_string): Use it. - (XLoadQueryFont): Calculate min_bounds.descent and max_bounds.descent. - -2006-09-25 Kenichi Handa - - * keymap.c (Fsingle_key_description): Return unique names for - generic characters. - -2006-09-24 Richard Stallman - - * search.c (compile_pattern_1): Don't BLOCK_INPUT. - -2006-09-24 Eli Zaretskii - - * makefile.w32-in ($(BLD)/fns.$(O), $(BLD)/w32proc.$(O)): - Depend on nt/inc/langinfo.h and nt/inc/nl_types.h. - - * w32proc.c (nl_langinfo): New function. - - * w32fns.c (w32-pass-alt-to-system, w32-alt-is-meta) - (w32-pass-lwindow-to-system, w32-enable-num-lock) - (w32-enable-caps-lock, w32-scroll-lock-modifier) - (w32-lwindow-modifier, w32-rwindow-modifier) - (w32-apps-modifier, w32-mouse-button-tolerance): Doc fix. - -2006-09-23 Juanma Barranquero - - * minibuf.c (Finternal_complete_buffer, Fread_minibuffer) - (Fdisplay_completion_list): Fix typos in docstrings. - -2006-09-23 Romain Francoise - - * s/gnu-linux.h (MAIL_USE_FLOCK): Check for HAVE_LIBLOCKFILE too. - -2006-09-23 Kenichi Handa - - * keymap.c (Fmap_keymap): Docstring mentions about generic character. - -2006-09-22 Stefan Monnier - - * regex.c (analyse_first): For eight-bit-control chars, mark both the - char's value and its leading byte in the fastmap. - (re_search_2): When fast-scanning without translation, be careful to - check that we only match the leading byte of a multibyte char. - - * charset.h (PREV_CHAR_BOUNDARY): Make it work from within a char's - byte sequence. - (AT_CHAR_BOUNDARY): New macro. - -2006-09-22 Kenichi Handa - - * fns.c (optimize_sub_char_table): Don't optimize a sub-char-table - whose default value is non-nil. - -2006-09-22 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_with_chooser): Only show C-l help for - Gtk+ versions < 2.10. - - * xfns.c (syms_of_xfns): Fix typo in help text for - x-gtk-file-dialog-help-text. - -2006-09-21 Kim F. Storm - - * fns.c (Fmemq): Refill doc string. - (Fmemql): New defun, like memq but using eql. - (syms_of_fns): Defsubr it. - -2006-09-20 Kim F. Storm - - * xdisp.c (pos_visible_p): CHARPOS < 0 means return info for - last visible glyph in window. - - * window.c (Fset_window_hscroll, Fwindow_line_height): - Doc fix. Use "off-window" instead of "off-screen". - (Fpos_visible_in_window_p): Likewise. - If POS is t, return info for last visible glyph in window. - -2006-09-19 Chong Yidong - - * search.c (struct regexp_cache): New entry syntax_table. - (compile_pattern_1): Set it. - (syms_of_search): Initialize it. - (compile_pattern): Require the syntax_table entry of the cache - element to match the current syntax table entry. - -2006-09-19 Stefan Monnier - - * window.c (Fwindow_end): Fix recent change. - -2006-09-19 Kim F. Storm - - * window.c (Fset_window_hscroll, Fpos_visible_in_window_p): - Doc fix. Use "off-screen" instead of "invisible". - (Fwindow_line_height): Make line numbers 0-based. Make line arg - optional; if nil, use current cursor row. Handle text terminals - properly. Return nil if non-interactive or pseudo-window. - -2006-09-19 Stefan Monnier - - * keymap.c: Include alloca.h if available. - (Fkey_binding): Only use AREF after checking it's a vector. - Remove unused var `window'. - -2006-09-19 YAMAMOTO Mitsuharu - - * emacs.c (shut_down_emacs) [!subprocesses]: Don't set - inhibit_sentinels. - - * mac.c [!MAC_OSX] (select): Fix argument name. - - * macmenu.c (enum mac_menu_kind, min_menu_id): New enumerator and - menu ID for Apple menu. - (menubar_selection_callback): Remove function. - (find_and_call_menu_selection): New function from xmenu.c. - (x_activate_menubar): Use it. - (set_frame_menubar): Don't use f->output_data.mac->menubar_active. - - * macterm.c (menubar_selection_callback): Remove extern. - (M_APPLE): Change to 234. - (do_apple_menu) [!TARGET_API_MAC_CARBON]: Make non-static. - (do_menu_choice): Remove function. - - * macterm.h (struct mac_output): Remove member menubar_active. - (do_menu_choice): Remove extern. - (do_apple_menu) [!TARGET_API_MAC_CARBON]: Add extern. - -2006-09-18 Jan Dj,Ad(Brv - - * xfns.c (syms_of_xfns): Rename x_gtk_show_chooser_help_text to - x_gtk_file_dialog_help_text. - - * gtkutil.c (xg_uses_old_file_dialog): Rename x-use-old-gtk-file-dialog - to x-gtk-use-old-file-dialog. - (xg_get_file_with_chooser): Rename x_gtk_show_chooser_help_text to - x_gtk_file_dialog_help_text. - - * xfns.c (syms_of_xfns): Ditto. - -2006-09-18 Kim F. Storm - - * window.c (Fwindow_line_visibility): Remove. - (Fwindow_line_height): New defun replacing it. - (syms_of_window): Defsubr it. - -2006-09-18 YAMAMOTO Mitsuharu - - * mac.c (SELECT_USE_CFSOCKET) [MAC_OSX]: Set default to 1. - [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Fix pointer type. - -2006-09-17 Jay Belanger - - * gmalloc.c: - * md5.c: - * md5.h: - * strftime.c: Replace "GNU Library General Public License" by "GNU - General Public License" throughout. - -2006-09-17 Kim F. Storm - - * dispnew.c (update_text_area): Undo 2000-07-18 change. - Always redrawing whole row if line has mouse-face in it causes - excessive flickering of the mode line. - -2006-09-17 Chong Yidong - - * search.c (clear_regexp_cache): New function. - - * syntax.c (Fmodify_syntax_entry): Clear regexp cache. - -2006-09-16 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_with_chooser): - Check x-gtk-show-chooser-help-text before adding the help text. - - * xfns.c (syms_of_xfns): New variable: x-gtk-show-chooser-help-text. - - * gtkutil.c (get_utf8_string): Try harder to convert to UTF8. Gtk+ - will simply crash if we fail. - -2006-09-16 Richard Stallman - - * regex.c (re_compile_pattern): Set gl_state.current_syntax_table. - -2006-09-15 Kim F. Storm - - * window.c (Fwindow_line_visibility): New defun for line-move-partial. - (syms_of_window): Defsubr it. - (Fwindow_end): Use window's buffer rather than current buffer. - -2006-09-15 Jay Belanger - - * COPYING: Replace "Library Public License" by "Lesser Public - License" throughout. - -2006-09-15 David Kastrup - - * Makefile.in (keymap.o): Add "keymap.h" and "window.h" dependencies. - - * keymap.c: include "window.h". - (Fcommand_remapping): New optional POSITION argument. - (Fkey_binding): New optional POSITION argument. Completely rework - handling of mouse clicks to get the same order of keymaps as - `read-key-sequence' and heed POSITION. Also temporarily switch - buffers to location of mouse click and back. - - * keyboard.c (command_loop_1): Adjust call of `Fcommand_remapping' - for additional argument. - (parse_menu_item): Adjust call of `Fkey_binding' for additional - argument. - (read_key_sequence): If there are both `local-map' and `keymap' - text properties at some buffer position, heed both. - - * keymap.h: Declare additional optional arguments of - `Fcommand_remapping' and `Fkey_binding'. - -2006-09-15 Juanma Barranquero - - * indent.c (Fcurrent_column, Findent_to): Fix typos in docstring. - -2006-09-14 Andreas Schwab - - * print.c: Whitespace fixup. - -2006-09-14 Kim F. Storm - - * xdisp.c (produce_image_glyph): Automatically crop wide images at - right window edge so we can draw the cursor on the same row to - avoid confusing redisplay by placing the cursor outside the visible - window area. - -2006-09-13 YAMAMOTO Mitsuharu - - * xterm.c (x_initialize): Don't install Xt event timer here. - (x_timeout_atimer_activated_flag): New var. - (x_activate_timeout_atimer): New function to install Xt timer. - (x_send_scroll_bar_event, x_process_timeouts): Use it. - - * xmenu.c (x_menu_set_in_use, popup_activate_callback) - (create_and_show_popup_menu, create_and_show_dialog): Use it. - - * xterm.h (x_activate_timeout_atimer): Add prototype. - -2006-09-13 Richard Stallman - - * print.c (print_string): When printcharfun is t, - copy string contents and call strout on the copy. - - * keyboard.c (read_char): If end_time specified, don't put the - event into this_command_keys. - (read_key_sequence): If Voverriding_terminal_local_map is specified, - don't check Voverriding_local_map at all. - -2006-09-12 Stefan Monnier - - * textprop.c (Fnext_property_change, Fnext_single_property_change) - (Fprevious_property_change, Fprevious_single_property_change): - Avoid changing limit, so we can correctly catch the case where the - property is constant up to limit. - -2006-09-12 YAMAMOTO Mitsuharu - - * macfns.c (mac_window) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: - * macterm.c (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: - Undo 2006-09-08 change. - -2006-09-11 Chong Yidong - - * keymap.c (Fkey_binding): Use string position for string objects. - -2006-09-11 Kim F. Storm - - * keymap.c (Fkey_binding): Fix last change. - - * editfns.c (Fmessage): Recommend using (message "%s" ...). - -2006-09-10 Chong Yidong - - * keymap.c (Fkey_binding): Check for local keymap for mouse click - events. - -2006-09-10 Kim F. Storm - - * keyboard.c (Finput_pending_p): Check Vunread_input_method_events - and Vunread_post_input_method_events. - - * dispnew.c (Fredisplay): Document return value. - -2006-09-10 Jan Dj,Ad(Brv - - * xfns.c (Fx_close_connection): Call xg_display_close when USE_GTK. - - * gtkutil.c (xg_display_close): Always change default display if needed, - check for < Gtk+ version 2.10 before calling gdk_display_close. - -2006-09-10 YAMAMOTO Mitsuharu - - * mac.c [MAC_OSX] (sys_select): Check argument `nfds' more rigidly. - Make variable `ofds' static. Remove variable `maxfd'. - - * macfns.c (Fx_file_dialog): Remove unused variable `f'. - Call check_mac. - - * macmenu.c (Vmenu_updating_frame, syms_of_macmenu): - * w32menu.c (Vmenu_updating_frame, syms_of_w32menu): - Apply 2006-09-08 change for xmenu.c. - - * xfns.c (Fx_file_dialog): Call check_x. - -2006-09-10 Kim F. Storm - - * xdisp.c (get_window_cursor_type): Use hollow cursor on - non-transparent images. - -2006-09-09 Eli Zaretskii - - * editfns.c (Fsystem_name): Mention "host" in the doc string. - (syms_of_editfns) : Likewise. - -2006-09-08 Martin Rudalics - - * xdisp.c (mouse_autoselect_window): Remove. - (Vmouse_autoselect_window): New variable. DEFVAR_LISP it. - - * dispextern.h (mouse_autoselect_window): Remove extern. - (Vmouse_autoselect_window): Add extern. - - * macterm.c (XTread_socket): Test Vmouse_autoselect_window - instead of mouse_autoselect_window. - - * msdos.c (dos_rawgetc): Likewise. - - * w32term.c (w32_read_socket): Likewise. - - * xterm.c (handle_one_xevent): Likewise. - -2006-09-08 Richard Stallman - - * xdisp.c (Vmenu_updating_frame): Define here. - (syms_of_xdisp): DEFVAR it here. - (update_menu_bar): Always return hooks_run. - Set Vmenu_updating_frame. - - * xdisp.c (redisplay_internal): Test Vinhibit_redisplay - before calculating SELECTED_FRAME. - - * xmenu.c (Vmenu_updating_frame): Don't define here. - (syms_of_xmenu): Don't DEFVAR it here. - - * xterm.c (x_error_quitter): For BadName error, just return. - - * eval.c (find_handler_clause): Give up on debugger if INPUT_BLOCKED_P. - - * casetab.c (init_casetab_once): Call set_case_table. - - * emacs.c (shut_down_emacs): Set inhibit_sentinels. - - * process.c (inhibit_sentinels): New variable. - (exec_sentinel): Test inhibit_sentinels. - (init_process): Initialize it. - - * process.h (inhibit_sentinels): Add decl. - - * search.c (looking_at_1, string_match_1, search_command): - Make syntax table's canon table point to eqv table. - -2006-09-08 Andreas Schwab - - * print.c (strout): Fix whitespace. - -2006-09-08 Kim F. Storm - - * xterm.c (x_draw_glyph_string): Fix 2006-08-24 change. - -2006-09-08 YAMAMOTO Mitsuharu - - * mac.c [!MAC_OSX]: Don't include keyboard.h. - [!MAC_OSX] (select): Try detect_input_pending before ReceiveNextEvent - in the same BLOCK_INPUT block, in case that some input has already - been read asynchronously. Pretend to be interrupted by a signal - if some input is available. - [MAC_OSX] (select_and_poll_event, sys_select): Likewise. - (SELECT_POLLING_PERIOD_USEC) [SELECT_USE_CFSOCKET]: Change to 100000. - Now used for ReceiveNextEvent timeout instead of select timeout. - (EVENT_CLASS_SOCK) [SELECT_USE_CFSOCKET]: Remove macro. - [SELECT_USE_CFSOCKET] (socket_callback): Add non-blocking connect - support. Quit event loop. - [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Add non-blocking - connect support. Reuse previously allocated CFRunLoopSource. - (Fmac_process_hi_command) [TARGET_API_MAC_CARBON]: New function. - (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it. - - * macfns.c (mac_window) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: - Specify kWindowAsyncDragAttribute. - - * macterm.c (mac_handle_origin_change, mac_handle_size_change) - (mac_get_ideal_size): New functions. - (x_set_offset, x_set_window_size, x_make_frame_visible) - (do_zoom_window, mac_handle_window_event, XTread_socket): Use them. - (install_window_handler, mac_handle_window_event) - [USE_CARBON_EVENTS]: Handle kEventWindowGetIdealSize and - kEventWindowBoundsChanged. - (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Don't call - DragWindow. - -2006-09-07 Andreas Schwab - - * m/ibms390x.h (START_FILES, LIB_STANDARD): Override to - use lib64 instead of lib. - -2006-09-06 Stefan Monnier - - * Makefile.in: Avoid double quotes when possible. - -2006-09-06 Kenichi Handa - - * editfns.c (Fformat_time_string): Use make_unibyte_string to make - a Lisp string from the result of emacs_memftimeu call. - -2006-09-06 Kim F. Storm - - * xdisp.c (pos_visible_p): Remove exact_mode_line_heights_p arg; - so calculate heights even when pos-visible-in-window-p is called - with partially = t. Don't overshoot last_visible_y in move_it_to. - Return row height and row number in new rowh and vpos args. - (cursor_row_fully_visible_p): First line is always "fully visible". - (try_window): Don't clear matrix if vscrolled. - - * lisp.h (pos_visible_p): Update prototype. - - * window.c (Fpos_visible_in_window_p): Adapt to new pos_visible_p. - Return row height and row number for partially visible rows. - Modify return value to a 2 element list for fully visible rows and - 6 for partially visible row. - (window_scroll_pixel_based): Use pos_visible_p directly instead of - Fpos_visible_in_window_p. Fix auto vscrolling for partially - visible lines. Only vscroll backwards if already vscrolled - forwards. Unconditionally vscroll forwards if PT is first (and - only) line. Set new window start instead of scrolling at - start/end of tall line. - -2006-09-05 YAMAMOTO Mitsuharu - - * macterm.c (install_window_handler, mac_handle_window_event) - [USE_CARBON_EVENTS]: Handle kEventWindowClose. - [USE_MAC_TSM] (mac_handle_text_input_event): Set modifiers for - ASCII keystroke event. - -2006-09-04 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_with_chooser): Don't mention specific keys in - the file chooser message. Only call gtk_file_chooser_set_current_name - when action is SAVE. - -2006-09-04 Andreas Schwab - - * Makefile.in: Double all single and back quotes in C-style - comments to help fontifier. - -2006-09-03 Jason Rumney - - * w32.c (shutdown_handler): New function to exit cleanly on shutdown. - (globals_of_w32): Register it as a signal handler. - -2006-09-02 Juri Linkov - - * marker.c (Fmarker_position): Doc fix. - -2006-09-03 Eli Zaretskii - - * window.c (syms_of_window) : - : Doc fix. - -2006-09-02 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_with_chooser): Change file chooser message - for writing files. Call gtk_file_chooser_set_current_name to keep - default filename. - - * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls - -2006-09-02 Jindrich Makovicka (tiny change) - - * fns.c (concat) [__GNUC__]: Declare with - `__attribute__((noinline))'. - - * eval.c (apply1, call2) [__GNUC__]: Declare with - `__attribute__((noinline))'. - -2006-09-02 Stuart D. Herring - - * minibuf.c (Finternal_complete_buffer): New function. - (syms_of_minibuf): Defsubr it. - (Fread_buffer): Use it, instead of Vbuffer_alist. - -2006-09-01 Martin Rudalics - - * buffer.h (struct buffer_text): New field chars_modiff. - (CHARS_MODIFF, BUF_CHARS_MODIFF): New macros. - * buffer.c (Fbuffer_chars_modified_tick): New function returning - value of BUF_CHARS_MODIFF. - (syms_of_buffer): Defsubr it. - (Fget_buffer_create): Initialize BUF_CHARS_MODIFF. - * insdel.c (modify_region): New argument preserve_chars_modiff. - Set CHARS_MODIFF to MODIFF provided preserve_chars_modiff is zero. - (insert_1_both, insert_from_string_1, insert_from_buffer_1) - (adjust_after_replace, adjust_after_replace_noundo) - (replace_range, replace_range_2, del_range_2): Reset CHARS_MODIFF. - * lisp.h (modify_region): Add fourth argument in extern. - * casefiddle.c (casify_region): Call modify_region with fourth - argument zero to assert that CHARS_MODIFF is updated. - * editfns.c (Fsubst_char_in_region, Ftranslate_region_internal) - (Ftranspose_regions): Likewise. - * textprop.c (Fadd_text_properties, Fset_text_properties) - (Fremove_text_properties, Fremove_list_of_text_properties): - Call modify_region with fourth argument 1 to avoid that - CHARS_MODIFF is updated. - -2006-08-31 Richard Stallman - - * editfns.c (Fformat): Don't sign-extend for %o or %x. - -2006-08-29 Chong Yidong - - * indent.c (Fvertical_motion): Don't move back if we were - displaying a Lisp string, either. - -2006-08-28 Kim F. Storm - - * xdisp.c (get_window_cursor_type) [!HAVE_WINDOW_SYSTEM]: - Don't attempt to replace cursor on image glyphs. - -2006-08-28 Kenichi Handa - - * coding.c (Fdetect_coding_region, Fdetect_coding_string): - Fix docstring about ISO-2022 control characters. - -2006-08-28 Kim F. Storm - - * xdisp.c (get_window_cursor_type): Replace BOX cursor on images - with a hollow box cursor if image is larger than 32x32 (or the default - frame font if that is bigger). Replace any other cursor on images - with hollow box cursor, as redisplay doesn't support bar and hbar - cursors on images. - -2006-08-27 YAMAMOTO Mitsuharu - - * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Undo previous - change. Move mutex lock/unlock operations inside BLOCK_INPUT. - - * dired.c (directory_files_internal_unwind, directory_files_internal) - (file_name_completion): Add BLOCK_INPUT around opendir/closedir. - - * image.c [MAC_OS] (image_load_qt_1): Use ComponentResult instead - of OSErr. - - * keyboard.c (in_sighandler): Remove variable. - (Fcurrent_idle_time): Add missing `doc:'. - (input_available_signal, init_keyboard): Undo previous change. - - * keyboard.h (in_sighandler): Remove extern. - - * mac.c (create_apple_event_from_event_ref, select) - (Fmac_get_file_creator, Fmac_get_file_type, Fmac_set_file_creator) - (Fmac_set_file_type, cfstring_create_normalized) - (mac_get_system_locale, select_and_poll_event, sys_select): - Use OSStatus instead of OSErr. - - * macfns.c [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): - Don't use FRAME_FILE_NAME. Use (FS)UpdateAlias. - (Fx_create_frame): Apply 2006-07-03 for xfns.c. - - * macselect.c (get_scrap_from_symbol, clear_scrap, put_scrap_string) - (put_scrap_private_timestamp, scrap_has_target_type, get_scrap_string) - (get_scrap_private_timestamp, get_scrap_target_type_list) - (x_own_selection, x_get_foreign_selection) - (Fx_disown_selection_internal, Fx_selection_owner_p) - (Fx_selection_exists_p): Use OSStatus instead of OSErr. - - * macterm.c (mac_draw_string_common, mac_query_char_extents) - (x_iconify_frame, XLoadQueryFont, install_window_handler) - (mac_handle_command_event, init_command_handler, init_menu_bar): - Use OSStatus instead of OSErr. - (x_free_frame_resources) [TARGET_API_MAC_CARBON]: Don't use - FRAME_FILE_NAME. - (x_query_font): Apply 2006-08-04 change for xterm.c. - (Qhi_command): Rename from Qhicommand. All uses changed. - - * macterm.h (struct mac_output) [TARGET_API_MAC_CARBON]: Remove member - file_name. - (FRAME_FILE_NAME): Remove macro. - (install_window_handler, create_apple_event_from_event_ref): - Return OSStatus instead of OSErr. - -2006-08-26 Kim F. Storm - - * buffer.c (Fset_buffer_multibyte): - * editfns.c (Fcurrent_time, Fget_internal_run_time): - * macfns.c (Fxw_color_values): - * w32fns.c (Fxw_color_values): - * xfns.c (Fxw_color_values): Simplify; use list3. - - * fileio.c (Fmake_directory_internal, Fdelete_directory) - (Fdelete_file): Simplify; use list1. - (Frename_file, Fadd_name_to_file, Fmake_symbolic_link): - Simplify; remove NO_ARG_ARRAY stuff, use list2. - -2006-08-25 Richard Stallman - - * buffer.c (Fswitch_to_buffer): Fix previous change. - -2006-08-25 Kim F. Storm - - * keyboard.c (Fcurrent_idle_time): Simplify. - -2006-08-25 Richard Stallman - - * fns.c (sxhash_string): Rotate properly; don't lose bits. - -2006-08-24 Francesc Rocher - - * xdisp.c (overline_margin): New variable. - (x_produce_glyphs): Use it. - (syms_of_xdisp): DEFVAR_INT it. - - * xterm.c (x_underline_at_descent_line): New variable. - (syms_of_xterm): DEFVAR_BOOL it. - (x_draw_glyph_string): Use it. - Draw underline and overline up to the end of line if the face - extends to the end of line. - - * macterm.c: Likewise. - - * w32term.c: Likewise. - -2006-08-24 Nick Roberts - - * buffer.c (Fswitch_to_buffer): Move buffer to front of - buffer-alist if necessary. - -2006-08-22 Kim F. Storm - - * xdisp.c (update_tool_bar): Redisplay toolbar also when only - number of items changes. - -2006-08-22 Stefan Monnier - - * buffer.c (Fset_buffer_multibyte): Record proper undo entry. - -2006-08-21 Jan Dj,Ad(Brv - - * keyboard.c: Clarify difference between in_sighandler and - handling_signal. - -2006-08-21 Kim F. Storm - - * macterm.c (x_draw_stretch_glyph_string): - * w32term.c (x_draw_stretch_glyph_string): - * xterm.c (x_draw_stretch_glyph_string): It is ok to draw a - stretch glyph in left marginal areas on header and mode lines. - -2006-08-21 Kenichi Handa - - * keyboard.c (syms_of_keyboard): Docstring of - Vunread_post_input_method_events and Vunread_input_method_events - fixed. - -2006-08-20 Chong Yidong - - * keyboard.c (show_help_echo): Preserve mouse movement flag if - tracking mouse. - -2006-08-20 Richard Stallman - - * xfaces.c (load_pixmap): Add quotes in error message. - - * keyboard.c (Fcurrent_idle_time): New function. - (syms_of_keyboard): defsubr it. - -2006-08-18 Nick Roberts - - * window.c (Fset_window_fringes): Do nothing on a tty. - (Fwindow_fringes): Put ? operator after the line break. - -2006-08-16 Andreas Schwab - - * print.c (debug_output_compilation_hack): Fix return type. - -2006-08-16 Richard Stallman - - * print.c (debug_output_compilation_hack): New function. - -2006-08-16 Kenichi Handa - - * fileio.c (choose_write_coding_system): Use LF for end-of-line - in auto-saving. - -2006-08-15 Chong Yidong - - * keyboard.c (read_char): Don't change idle timer state at all if - end_time is supplied. - -2006-08-15 Kenichi Handa - - * coding.c (ONE_MORE_BYTE_CHECK_MULTIBYTE): New arg RET. If SRC - is exhausted, return with RET. - (detect_coding_emacs_mule, detect_coding_iso2022) - (detect_coding_sjis, detect_coding_big5, detect_coding_utf_8) - (detect_coding_utf_16, detect_coding_ccl): Adjusted for the above - change. - -2006-08-14 Chong Yidong - - * keyboard.c (read_char): Don't reset idle timers if a time limit - is supplied. - -2006-08-14 Kim F. Storm - - * .gdbinit (pitx): Print iterator position. - Limit stack dump in case iterator is not initialized. - -2006-08-12 Eli Zaretskii - - * frame.c (Fmouse_position, Fmouse_pixel_position) - (Fset_mouse_position, Fset_mouse_pixel_position): Doc fix. - -2006-08-11 Jan Dj,Ad(Brv - - * xselect.c (Fx_register_dnd_atom): New function. - (syms_of_xselect): Defsubr it. - (x_handle_dnd_message): Check that message_type is in - dpyinfo->x_dnd_atoms before generating lisp event. - - * xterm.h (struct x_display_info): Add x_dnd_atoms* to keep track - of drag and drop Atoms. - - * xterm.c (x_term_init): Initialize dpyinfo->x_dnd_atoms* - -2006-08-10 Jan Dj,Ad(Brv - - * keyboard.c: Define in_sighandler. - (input_available_signal): Set in_sighandler. - (init_keyboard): Initialize in_sighandler. - - * keyboard.h: Declare in_sighandler. - - * alloc.c (UNBLOCK_INPUT_ALLOC, BLOCK_INPUT_ALLOC): Use in_sighandler - to check if mutex should be locked or not. - -2006-08-09 Richard Stallman - - * keyboard.c (keyremap_step): No-op if fkey->parent = nil. - (read_key_sequence): Always start fkey.start and fkey.end at 0, - and likewise for keytran. - -2006-08-09 Kenichi Handa - - * coding.c (syms_of_coding): Improve the docstring - of file-coding-system-alist. - -2006-08-07 Andreas Schwab - - * puresize.h (BASE_PURESIZE): Increase to 1120000. - -2006-08-06 Chong Yidong - - * buffer.c (Vchange_major_mode_hook, Qchange_major_mode_hook): New vars. - (Fkill_all_local_variables): Use it. - (syms_of_buffer): Defvar it. - -2006-08-05 Eli Zaretskii - - * w32.c (w32_valid_pointer_p): New function. - - * w32.h: Add prototype for w32_valid_pointer_p. - - * alloc.c: Include w32.h. - (valid_lisp_object_p) [WINDOWSNT]: Call w32_valid_pointer_p to do - the job. - - * keyboard.c (kbd_buffer_get_event): Return Qnil when current time - is exactly equal to end_time, not only when it is past that. - -2006-08-04 Chong Yidong - - * keyboard.c (read_char): Rebalance specpdl after receiving jump. - - * process.c: Reapply 2006-08-01 change. - -2006-08-04 Eli Zaretskii - - * w32fns.c (w32_query_font): Fix last change: use stricmp. - -2006-08-04 Stefan Monnier - - * editfns.c (Fsubst_char_in_region): Redo the setup work after running - the before-change-functions since they may have altered the buffer. - -2006-08-04 Ralf Angeli - - * w32fns.c (w32_createwindow): Handle -geometry command line option - and the geometry settings in the Registry. - -2006-08-04 Kenichi Handa - - * w32fns.c (w32_query_font): Compare names by ignoring case. - - * xterm.c (x_query_font): Compare names by ignoring case. - -2006-08-03 Jason Rumney - - * w32menu.c (w32_menu_show, w32_dialog_show): Call Fsignal to quit - when no option selected. - -2006-08-03 Chong Yidong - - * process.c: Revert last change. - -2006-08-01 Kim F. Storm - - * process.c (wait_reading_process_output_unwind): New function. - Restores waiting_for_user_input_p to saved value. - (wait_reading_process_output): Unwind protect waiting_for_user_input_p - instead of save/restore old value on stack. - -2006-07-30 Thien-Thi Nguyen - - * editfns.c: Undo 2006-06-27 change. - -2006-07-29 Eli Zaretskii - - * coding.c (Ffind_operation_coding_system): Revert the change from - 2006-05-29. - - * alloc.c [WINDOWSNT]: Include fcntl.h, to fix last change. - -2006-07-28 Richard Stallman - - * xfaces.c (lookup_named_face, Fdisplay_supports_face_attributes_p): - Add conditional aborts for clarity. - - * xdisp.c (update_menu_bar): New arg HOOKS_RUN. Callers changed. - Used to avoid running the hooks over and over for each frame. - (prepare_menu_bars): Pass value from update_menu_bar - as HOOKS_RUN of next call. - - * keyboard.c (safe_run_hooks_1): Don't crash if Vrun_hooks is nil. - -2006-07-28 Kim F. Storm - - * alloc.c (valid_pointer_p): New function (from valid_lisp_object_p). - (valid_lisp_object_p): Use it to check for valid SUBRP obj. - -2006-07-26 Chong Yidong - - * keyboard.c (read_char): New arg END_TIME specifying timeout. - All callers changed. Turn off echoing if END_TIME is non-NULL. - (kbd_buffer_get_event): New arg END_TIME. - - * lread.c (read_filtered_event): New arg SECONDS to wait until. - (Fread_char, Fread_event, Fread_char_exclusive): New arg SECONDS. - - * lisp.h: Update read-char, read-event, and read_filtered_event - prototypes. - - * keyboard.h: Include systime.h. Update read_char prototype. - -2006-07-25 YAMAMOTO Mitsuharu - - * alloc.c (find_string_data_in_pure): New function. - (make_pure_string): Use it to reuse existing string data if possible. - - * puresize.h (BASE_PURESIZE): Decrease to 1102000. - -2006-07-22 Stefan Monnier - - * keymap.c (Fdefine_key): If the key binding definition looks like an - XEmacs-style key sequence, convert it to Emacs's format. - -2006-07-22 Ralf Angeli - - * w32fns.c (w32_createwindow): If `left' and/or `top' frame - parameters are bound to some values, use that instead of - CW_USEDEFAULT. - -2006-07-21 Eli Zaretskii - - * w32.c (convert_time): Use explicit long double constants to - ensure long double arithmetics is used throughout. - -2006-07-20 YAMAMOTO Mitsuharu - - * alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp): New vars. - (init_alloc_once): Initialize them. - (pure_alloc): Allocate non-Lisp objects from the end of pure storage - without alignment. - - * puresize.h (BASE_PURESIZE): Decrease to 1141000. - -2006-07-18 Francis Litterio - - * w32term.c (x_calc_absolute_position): Fix frame positioning - with negative X/Y coordinates. - -2006-07-18 Dan Nicolaescu - - * xterm.c (x_connection_closed, x_error_quitter): Mark as NO_RETURN. - - * textprop.c (text_read_only): Likewise. - - * lread.c (end_of_file_error): Likewise. - - * lisp.h (circular_list_error, memory_full, buffer_memory_full): - Likewise. - - * eval.c (unwind_to_catch): Likewise. - - * buffer.h (buffer_slot_type_mismatch): Likewise. - -2006-07-18 Kim F. Storm - - Cleanup Fsignal calls that never returns; now only use it for Qquit. - - * eval.c (xsignal): New func. Like Fsignal, but marked no-return. - (xsignal0, xsignal1, xsignal2, xsignal3): New no-return functions. - (signal_error): New no-return function (from xfaces.c). - (Fthrow): Use xsignal2 instead of Fsignal + abort. - (error): Use xsignal1 instead of Fsignal + abort. - (FletX, Flet, grow_specpdl): Use signal_error. - (Feval, Ffuncall, funcall_lambda): Use xsignal1, xsignal2. - - * alloc.c (buffer_memory_full, memory_full): Use xsignal. Remove loop. - (list1): New function. - - * lisp.h (list1): Add EXFUN. - (xsignal, xsignal0, xsignal1, xsignal2, xsignal3, signal_error): - Add prototypes. Mark them as no-return. - - * buffer.c (Fbuffer_local_value, Fbarf_if_buffer_read_only): - Use xsignal1. - - * callint.c (check_mark): Use xsignal0. - - * casefiddle.c (casify_object): wrong_type_argument is no-return. - - * cmds.c (Fforward_char, Fdelete_char): Use xsignal0. - - * coding.c (Fcheck_coding_system): Use xsignal1. Remove loop. - (Fdefine_coding_system_internal): Use xsignal1. - - * data.c (circular_list_error): Use xsignal. - (wrong_type_argument): Use xsignal2. Don't care about return value. - (args_out_of_range, args_out_of_range_3): Use xsignal2, xsignal3. - Remove loop around Fsignal. - (indirect_variable, Fsymbol_value, set_internal, Fdefault_value) - (indirect_function, Findirect_function, Fstring_to_number) - (Fmakunbound, Ffmakunbound, Fsymbol_function, Ffset): Use xsignal1. - (arith_driver, float_arith_driver, Frem, Fmod, arith_error): - Use xsignal0. - - * doc.c (Fdocumentation): Use xsignal1. - - * editfns.c (region_limit, Fget_internal_run_time): Use xsignal0. - - * fileio.c (report_file_error): Use xsignal. - (barf_or_query_if_file_exists, Fcopy_file, Fdelete_file) - (Finsert_file_contents): Use xsignal2. - (syms_of_fileio): Use list2, list3. - - * floatfns.c (arith_error, range_error, domain_error): Use xsignal2. - (range_error2, domain_error2): Use xsignal3. - (rounding_driver, fmod_float): Use xsignal0. - (float_error): Use xsignal1. - (matherr): Use xsignal. - - * fns.c (Flength): wrong_type_argument is no-return. - (hashfn_user_defined, Fmake_hash_table): Use signal_error. - (Fmd5): Use xsignal1. - - * frame.c (x_set_line_spacing, x_set_screen_gamma): Use signal_error. - - * keyboard.c (recursive_edit_1): Use xsignal1. - - * keymap.c (Fmap_keymap): Use xsignal1. - - * lread.c (Fload): Use xsignal2, signal_error. - (end_of_file_error): Use xsignal0, xsignal1. - (read0): Use xsignal1. - (invalid_syntax): New error function marked no-return. - (read_integer, read1, read_list): Use it. - - * macselect.c (x_get_local_selection): Use signal_error. - - * msdos.c (Fmsdos_set_mouse_buttons): Use xsignal2. - - * search.c (compile_pattern_1): Use xsignal1. - (signal_failure): Remove (was only called once). - (search_command): Use xsignal1 instead of signal_failure. - - * syntax.c (scan_lists): Use xsignal3. - - * textprop.c (text_read_only): Use xsignal0, xsignal1. - - * unexsol.c (unexec): Use xsignal. - - * window.c (window_scroll_pixel_based, window_scroll_line_based): - Use xsignal0. - - * xfaces.c (signal_error): Move to eval.c. - (resolve_face_name): Use xsignal1. - - * xfns.c (x_decode_color): Use signal_error. - - * xselect.c (x_get_local_selection, copy_multiple_data) - (x_get_window_property_as_lisp_data) - (lisp_data_to_selection_data, CHECK_CUT_BUFFER) - (Fx_get_cut_buffer_internal): Use signal_error. - -2006-07-18 YAMAMOTO Mitsuharu - - * macterm.c (XTread_socket): Undo previous change. - -2006-07-18 YAMAMOTO Mitsuharu - - * macterm.c (keycode_to_xkeysym): Remove function. All uses now - directly lookup keycode_to_xkeysym_table. - [USE_MAC_TSM] (mac_handle_text_input_event): Don't construct - ASCII_KEYSTROKE_EVENT for non-zero keycode_to_xkeysym_table entries. - (XTread_socket): Use character codes to construct keypad key events. - (mac_initialize_display_info) [MAC_OSX]: Use CGDisplaySamplesPerPixel. - (x_delete_display): Apply 2006-07-04 change for xterm.c. - -2006-07-17 Richard Stallman - - * keyboard.c (Vcommand_error_function): New variable. - (syms_of_keyboard): Defvar it. - (cmd_error_internal): Simplify, and handle Vcommand_error_function. - - * dispnew.c (init_display): Mention DISPLAY as well as TERM in err msg. - -2006-07-17 Kim F. Storm - - * xdisp.c (handle_single_display_spec): Ensure the right value of - it->position is saved by push_it. - (pop_it): Restore it->object for GET_FROM_BUFFER and GET_FROM_STRING. - (reseat_1): Don't setup it->object twice. - (set_iterator_to_next): No need to set it->object after pop_it. - (move_it_to): Explicitly check to see if last move reached to_charpos. - -2006-07-17 Thien-Thi Nguyen - - * xdisp.c (display_mode_line): Preserve match data. - -2006-07-14 Kim F. Storm - - * w32.c (pfn_WSACreateEvent, pfn_WSACloseEvent): New func ptrs. - (init_winsock): Load them. Use ws2_32.dll. - (sys_listen): Undo last change. Just set FILE_LISTEN flag. - (sys_accept): Undo last change. Instead, set child status to - STATUS_READ_ACKNOWLEDGED and reset char_avail event so next - sys_select will wakeup the reader thread. - (_sys_wait_accept): New function used by reader thread to wait for - an incoming connection on a server socket. - - * w32.h (_sys_read_ahead, _sys_wait_accept): Add prototypes. - - * w32proc.c (reader_thread): Use _sys_wait_accept to wait on a - server socket (FILE_LISTEN flag). - -2006-07-14 Jan Dj,Ad(Brv - - * sound.c (alsa_init): Call snd_pcm_close after successful snd_pcm_open. - -2006-07-14 Kim F. Storm - - * w32.c: Fix high cpu load for server sockets. - (pfn_WSAEventSelect): New function ptr. - (init_winsock): Load it. - (sys_listen): Set FILE_LISTEN flag. Set event mask for socket's - char_avail event object to FD_ACCEPT. - (sys_accept): Check FILE_LISTEN flag. Set event mask on new - socket's char_avail event object to FD_READ|FD_CLOSE. - - * w32.h (FILE_LISTEN): New filedesc flag value. - -2006-07-13 Kim F. Storm - - * bytecode.c (Fbyte_code): Use CAR, CDR for Bcar, Bcdr. - Use CAR_SAFE, CDR_SAFE for Bcar_safe, Bcdr_safe. - Simplify loops and use CAR for Bnth and Belt. - - * data.c (Findirect_function): Optimize for no indirection. - - * eval.c (Fthrow): Remove loop around Fsignal. - (Feval, Fapply, Ffuncall): Optimize for no function indirection. - Use original function name in all signaled errors. - Simplify Fsignal calls (no return). - (funcall_lambda): Simplify Fsignal calls (no return). - -2006-07-13 Andreas Schwab - - * syntax.c (scan_sexps_forward): Use EMACS_INT for out_bytepos and - out_charpos. - -2006-07-13 Kenichi Handa - - * editfns.c (Fformat): Fix calculation of text property positions - of format string. - -2006-07-12 Kim F. Storm - - * lisp.h (CHECK_TYPE): New macro for generic type checking. - (CAR_SAFE, CDR_SAFE): New macros. - (ARRAYP, CHECK_ARRAY): New macros. - (CHECK_VECTOR_OR_STRING, CHECK_SUBR): New macros. - (CHECK_WINDOW_CONFIGURATION): New macro. - (CHECK_LIST_CONS, CHECK_LIST_END): New checks for list traversal. - (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST) - (CHECK_STRING, CHECK_STRING_CAR, CHECK_CONS, CHECK_SYMBOL) - (CHECK_CHAR_TABLE, CHECK_VECTOR, CHECK_VECTOR_OR_CHAR_TABLE) - (CHECK_BUFFER, CHECK_WINDOW, CHECK_LIVE_WINDOW, CHECK_PROCESS) - (CHECK_NUMBER, CHECK_NATNUM, CHECK_MARKER, CHECK_OVERLAY) - (CHECK_NUMBER_COERCE_MARKER, CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT) - (CHECK_NUMBER_OR_FLOAT_COERCE_MARKER): Use CHECK_TYPE. - - * category.h (CHECK_CATEGORY, CHECK_CATEGORY_SET): - * frame.h (CHECK_FRAME, CHECK_LIVE_FRAME): Use CHECK_TYPE. - - * callint.c (Fcall_interactively): - * casefiddle.c (casify_object): - * editfns.c (general_insert_function): - * fns.c (Flength, Felt, Ffillarray): - * data.c (Fcar, Fcdr): Remove loop around wrong_type_argument. - - * data.c (wrong_type_argument): Remove loop around Fsignal. - (Farrayp, Fsequencep): Use ARRAYP. - (Fcar): Use CAR. - (Fcar_safe): Use CAR_SAFE. - (Fcdr): Use CDR. - (Fcdr_safe): Use CDR_SAFE. - (Fsetcar, Fsetcdr): Use CHECK_CONS. - (Fsubr_arity, Fsubr_name): Use CHECK_SUBR. - (Faset): Use CHECK_ARRAY. - - * fns.c (Felt): Use CHECK_ARRAY. - (concat): Use CHECK_NUMBER. - (Fsubstring, substring_both): Use CHECK_VECTOR_OR_STRING. - (Fmemq): Use CHECK_LIST. - (Fassq, Fassoc, Frassq, Frassoc): Use CAR. - (assq_no_quit): Use CAR_SAFE. - (Fnthcdr, Fmember, Fdelq, Fdelete, Fnreverse, Fnconc): - Use CHECK_LIST_CONS. - (Freverse, Fplist_get, Flax_plist_get): Use CHECK_LIST_END. - - * bytecode.c (Fbyte_code): Use CHECK_VECTOR. - - * casetab.c (check_case_table): - * category.c (check_category_table): - * marker.c (Fcopy_marker): - * syntax.c (check_syntax_table): - * xfaces.c (load_pixmap): Use CHECK_TYPE. - - * fns.c (Fcopy_sequence, concat): - * fringe.c (Fdefine_fringe_bitmap): - * lread.c (check_obarray): Cleanup wrong_type_argument use. - - * keyboard.c (access_keymap_keyremap): Use ARRAYP. - - * keymap.c (Fdefine_key, Flookup_key): - * macros.c (Fstart_kbd_macro): Use CHECK_VECTOR_OR_STRING. - - * mac.c (Fmac_get_preference): Use CHECK_LIST_END. - - * search.c (Fset_match_data): Use CHECK_LIST. - - * sunfns.c (sun_item_create): Use CHECK_LIST_CONS. - - * window.c (Fwindow_configuration_frame, Fset_window_configuration): - (compare_window_configurations): Use CHECK_WINDOW_CONFIGURATION. - -2006-07-12 YAMAMOTO Mitsuharu - - * Makefile.in (dired.o, editfns.o, fileio.o): Depend on blockinput.h. - - * dired.c: Include blockinput.h. - (Ffile_attributes): Add BLOCK_INPUT around getpwuid/getgrgid. - - * editfns.c: Include blockinput.h. - (Fuser_login_name, Fuser_full_name): Add BLOCK_INPUT around - getpwuid/getpwnam. - - * fileio.c: Include blockinput.h. - (Fexpand_file_name, search_embedded_absfilename): Add BLOCK_INPUT - around getpwnam. - (search_embedded_absfilename): Remove spurious xfree. - -2006-07-11 Kim F. Storm - - * dispnew.c (sit_for): Reduce number of args from 5 to 3. - Now just one TIMEOUT arg that can be a Lisp float or Lisp int. - Combine args DISPLAY and INITIAL_DISPLAY into one arg DO_DISPLAY. - Signal error if TIMEOUT is not a number. - Undo 2006-06-14 change for non-preemptive display if TIMEOUT < 0. - The rework of sit_for args also fixes several incorrect Qt args - which should have been 1. - (Fredisplay): Pass 1 instead of Qt to swallow_events and - detect_input_pending_run_timers. - - * lisp.h (sit_for): Update prototype. - (Fredisplay): Add EXFUN. - - * dispextern.h (sit_for): Remove prototype. - - * callint.c (Fcall_interactively): - * minibuf.c (temp_echo_area_glyphs): - * keyboard.c (command_loop_1, read_char, Fexecute_extended_command): - * fileio.c (Fdo_auto_save): Update/simplify sit_for calls. - -2006-07-11 Stefan Monnier - - * syntax.c (forw_comment): Also use EMACS_INT for buffer positions. - -2006-07-11 Kim F. Storm - - * dispnew.c (Fredisplay): Add FORCE argument to force redisplay when - input is available. Fix test for redisplay_dont_pause non-nil. - Specbind redisplay-dont-pause to t if FORCE non-nil. - -2006-07-10 Chong Yidong - - * puresize.h (BASE_PURESIZE): Increment to 1211000. - - * dispnew.c (Fredisplay): New function, equivalent to (sit-for 0). - (Fsit_for): Function deleted. - - * keyboard.c (command_loop_1, Fexecute_extended_command): - Call sit_for instead of Fsit_for. - - * minibuf.c (temp_echo_area_glyphs): Likewise. - -2006-07-09 Stefan Monnier - - * syntax.c (Fforward_comment): Revert the reversion. - (back_comment, scan_lists): Also use EMACS_INT for buffer positions. - -2006-07-09 John Paul Wallington - - * syntax.c (Fforward_comment): Revert previous change. - -2006-07-09 Kim F. Storm - - * window.c (Fforce_window_update): Doc fix. - -2006-07-08 Stephen Gildea - - * fileio.c (do_auto_save_make_dir): Make the auto-save-list-file - directory unreadable for better user privacy. - -2006-07-07 Stefan Monnier - - * syntax.c (Fforward_comment): Fix int-32 vs EMACS_INT-64 mixup. - - * lread.c (read_filtered_event): Remove `register' qualifier because it - causes compilation problem with gcc-4.0.2-20051125 on amd64. - (readevalloop): Remove unused var `bpos'. - Yet another int/Lisp_Object mixup (YAILOM). - -2006-07-07 Eli Zaretskii - - * keyboard.c (Fexecute_extended_command): Mention the argument - PREFIXARG in the doc string. - -2006-07-07 Kim F. Storm - - * fringe.c (Fdefine_fringe_bitmap): Doc fix. - -2006-07-05 Chong Yidong - - * insdel.c (prepare_to_modify_buffer): For an indirect buffer, do - clash detection using the base buffer. - - * puresize.h (BASE_PURESIZE): Increment to 1210500. - -2006-07-04 Kim F. Storm - - * xterm.c (x_delete_display): Don't free or derefence NULL pointers. - -2006-07-04 Kenichi Handa - - * fontset.c (Fset_overriding_fontspec_internal): Check if we need - to update Voverriding_fontspec_alist. - -2006-07-03 Richard Stallman - - * xfns.c (Fx_create_frame): Move unwind_create_frame setup down. - - * xfaces.c (Fface_attribute_relative_p): Doc fix. - - * textprop.c (Fget_char_property_and_overlay): Doc fix. - - * eval.c (Fdefvaralias): Doc fix. - -2006-07-03 Kim F. Storm - - * dispnew.c (sit_for): Fix preempt condition. - -2006-07-02 Stefan Monnier - - * lread.c (read_filtered_event): Treat select-window just like - switch-frame. - -2006-07-02 Kim F. Storm - - * xdisp.c (display_tool_bar_line): Skip glyphs which are too big - to ever fit the tool-bar, - (MAX_FRAME_TOOL_BAR_HEIGHT): New macro. - (tool_bar_lines_needed): Use unused mode-line row as temp_row. - (redisplay_tool_bar): Only clear desired matrix if we actually - change the tool-bar window height. Only try to make the tool-bar - window bigger if there is actually room for it. - -2006-06-30 Ralf Angeli - - * w32term.c (x_make_frame_visible): Use SystemParametersInfo with - SPI_GETWORKAREA to find the dimensions of the screen work area, - and adjust vertical position of the frame in order to avoid being - covered by the task bar. - - * w32fns.c (w32_createwindow): Use CW_USEDEFAULT instead of - f->left_pos and SH_SHOW instead of f->top_pos in the call to - CreateWindow. Record the actual position in f->left_pos and - f->top_pos. - -2006-06-30 John Paul Wallington - - * w32console.c (syms_of_ntterm) : - Doc fix - default value has changed. - -2006-06-28 YAMAMOTO Mitsuharu - - * mac.c [!TARGET_API_MAC_CARBON]: Don't include FixMath.h or Scrap.h. - - * macfns.c (Fx_create_frame): Apply 2006-06-24 change for xfns.c. - - * macgui.h (USE_MAC_TSM) [TARGET_API_MAC_CARBON]: Set default to 1. - - * macterm.c (Qeql): Add extern. - (x_set_mouse_pixel_position) [MAC_OSX]: Use CGWarpMouseCursorPosition. - (fm_style_face_attributes_alist) [USE_ATSUI]: New variable. - (syms_of_macterm) [USE_ATSUI]: Initialize and staticpro it. - Change keys of Vmac_atsu_font_table from strings to numbers. - (fm_style_to_face_attributes) [USE_ATSUI]: New function. - (init_font_name_table) [USE_ATSUI]: Use it. - (saved_ts_script_language_on_focus) [USE_MAC_TSM]: New variable. - (syms_of_macterm) [USE_MAC_TSM]: Initialize and staticpro it. - [USE_MAC_TSM] (mac_tsm_resume): Restore script and language codes - only when saved_ts_script_language_on_focus coincides with - Vmac_ts_script_language_on_focus. - [USE_MAC_TSM] (mac_tsm_suspend): Save value of - Vmac_ts_script_language_on_focus to saved_ts_script_language_on_focus. - (XTread_socket) [USE_MAC_TSM]: Add Mac OS Classic support. - [USE_MAC_TSM] (mac_handle_text_input_event, init_tsm): Likewise. - -2006-06-27 Chong Yidong - - * editfns.c (Fdelete_field, Ffield_string, Ffield_beginning) - (Ffield_string_no_properties, Ffield_end): Mention - args-out-of-range error condition in docstring. - -2006-06-27 Kim F. Storm - - * xdisp.c (handle_composition_prop): Set stop_charpos before push_it. - -2006-06-25 Kim F. Storm - - * s/gnu-linux.h (SIGNALS_VIA_CHARACTERS): Define for Linux kernel - version 2.4 and later. - -2006-06-24 Chong Yidong - - * xfns.c (Fx_create_frame): Set font parameter directly instead of - using x_default_parameter, since x_get_args clears the parm alist. - -2006-06-24 Eli Zaretskii - - * dired.c (directory_files_internal) [WINDOWSNT]: Find files - case-insensitively. - -2006-06-24 Aidan Kehoe - - * lread.c (read_escape): When an unknown Unicode code point is - encountered as a string or character escape, signal an error. - -2006-06-23 Kim F. Storm - - * .gdbinit (pitx): Dump iterator stack. - - * xdisp.c (handle_composition_prop): Push iterator on stack. - (set_iterator_to_next): Pop iterator at end of composition. - -2006-06-23 Martin Rudalics - - * fileio.c (Frename_file) [DOS_NT]: Don't try to move directory to - itself on DOS_NT platforms, if the old and new names are identical - but for the letter-case. - -2006-06-21 Kim F. Storm - - * dispextern.h (struct it): Add `position' member to iterator stack. - Rename `pos' member to `current'. Rearrange and add comments. - - * xdisp.c (handle_stop): Set it->ignore_overlay_strings_at_pos_p - if we get any overlays. - (set_cursor_from_row): Don't clobber `end' if we rescan from - start_string. - (push_it, pop_it): Save it->position. - -2006-06-19 Richard Stallman - - * window.c (size_window): New arg FIRST_ONLY. All callers changed. - (adjust_window_trailing_edge): Specially compute FIRST_PARALLEL - for the case of a top-level window and the following minibuffer. - Don't exit because of no `next' when there is a parent. - Use the FIRST_ONLY feature when resizing following windows. - - * syntax.c (init_syntax_once): Give most control chars' syntax Spunct. - -2006-06-17 Kim F. Storm - - * dispnew.c (update_frame): Check for input pending on entry. - (update_window, update_frame_1): Break loop if input is detected. - -2006-06-16 Francis Litterio - - * xterm.c (x_check_expected_move, handle_one_xevent) - (x_set_offset, x_check_fullscreen): Extensive changes to make - frame positioning deterministic under X. - - * xterm.h (x_output): Add members left_before_move and - top_before_move. Removed members expected_left and expected_top. - -2006-06-16 Kim F. Storm - - * dispextern.h (struct it): Add union to iterator stack to save - image, composition, and stretch specific paramters. - - * xdisp.c (next_overlay_string): Fix assert. - (push_it, pop_it): Handle composition and stretch specific values. - Only handle it->slice in image (for now). - (back_to_previous_visible_line_start): Continue search if newline is - part of a compisition. Simplify. - (reseat_1): Set it->object to buffer. - (set_iterator_to_next): Set it->object to string or buffer, when - setting it->method to GET_FROM_STRING or GET_FROM_BUFFER. - (next_element_from_composition): Set it->object to buffer if not - from string. - (set_cursor_from_row): Only save start of string if not already - done to handle multiple strings in a row. - - * .gdbinit (pitx): Show composition parameters. - (pgx, pg): New commands to print a glyph structure. - (pgi, pgn): New commands to print specific/next glyph. - (pgrowx, pgrow): New commands to print all glyphs in a row. - -2006-06-16 YAMAMOTO Mitsuharu - - * macfns.c (Fx_display_mm_height, Fx_display_mm_width) - [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Use CGDisplayScreenSize. - - * macterm.c (do_app_resume, do_app_suspend): Remove functions. - (mac_tsm_resume, mac_tsm_suspend) [USE_MAC_TSM]: New functions. - (mac_handle_window_event, XTread_socket) [USE_MAC_TSM]: Use them. - (Vmac_ts_script_language_on_focus) [USE_MAC_TSM]: New variable. - (syms_of_macterm) [USE_MAC_TSM]: Defvar it. - (saved_ts_language, saved_ts_component) [USE_MAC_TSM]: New variables. - (mac_initialize_display_info) [MAC_OSX]: Use Quartz Display - Services functions to get size of main display in pixels. - -2006-06-14 Chong Yidong - - * xdisp.c (back_to_previous_visible_line_start): - Reset it->continuation_lines_width. - -2006-06-14 Richard Stallman - - * eval.c (Fdefconst): Mark variable as risky. - - * callproc.c (Fcall_process): Doc fix. - - * window.c (adjust_window_trailing_edge): Don't break out of the loop - because there's no next window, if there are parallel windows. - Do break out when WINDOW is nil. - -2006-06-14 Kim F. Storm - - * dispextern.h (IT_STACK_SIZE): New macro specifying size of - iterator stack (instead of hardcoded number). Increase from 2 to - 4 to make room for propertized overlay strings before and after a - display string, image or composition. - (struct it): Add image_id and method members to iterator stack. - - * xdisp.c (init_from_display_pos): Don't set it->method and - overlay_string_index after pop_it. Add asserts. - (handle_stop): Look for overlay strings around a display string, - image, or composition. Handle properties on those strings. - (next_overlay_string): Don't set string, pos or method after pop_it. - (get_overlay_strings_1): Split from get_overlay_strings; don't - modify it if no overlay strings are found. - (get_overlay_strings): Use get_overlay_strings_1. Always set - it->string and it->method. - (push_it): Push it->image_id and it->method. Push it->object - instead of it->string if method is GET_FROM_IMAGE. - (pop_it): Pop it->image_id and it->method. Ppo it->object - instead of it->string if method is GET_FROM_IMAGE. - Reset it->current.string_pos if popped it->string is nil. - (reseat_1): Remove comment dated 19 May 2003. It expressed doubt - whether a given change was correct; but the change is correct. - Clear it->string_from_display_prop_p. - (set_iterator_to_next): Rely on it->method and it->image_id from - iterator stack, instead of setting them explicitly after pop_it. - - * dispnew.c (sit_for): Undo 2006-06-01 change. Instead, a - negative time forces redisplay even when input is available. - (Fsit_for): Doc fix. - -2006-06-13 Kim F. Storm - - * dispnew.c: Modify preemptive redisplay to be based on periodic - checks for input. - (PERIODIC_PREEMPTION_CHECKING): Define to 1 iff EMACS_HAS_USECS. - (Vredisplay_preemption_period): New variable. - (syms_of_display): DEFVAR_LISP and initialize it. - (preemption_period, preemption_next_check): New variables. - (update_frame, update_single_window): Initialize them based on - Vredisplay_preemption_period if !force_p. - (update_window, update_frame_1): Use them to determine when to - check for input. - -2006-06-03 Aidan Kehoe - - * lread.c (read_escape): Provide a Unicode character escape - syntax; \u followed by exactly four or \U followed by exactly - eight hex digits in a comment or string is read as a Unicode - character with that code point. - -2006-06-09 Eli Zaretskii - - * window.c (window_scroll_pixel_based): Signal "Beginning of - buffer" when scroll-down at the beginning of an empty buffer. - -2006-06-06 YAMAMOTO Mitsuharu - - * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event): - Exclude 0x7f from ASCII range. - -2006-06-05 Jason Rumney - - * w32term.c (w32_set_scroll_bar_thumb, x_scroll_bar_create) - (w32_set_vertical_scroll_bar, w32_scroll_bar_handle_click) - (x_scroll_bar_report_motion): Remove workarounds for - versions of Windows NT < 3.51. - [!SIF_ALL]: Remove. - (pfnSetScrollInfo, pfnGetScrollInfo): Remove. - (w32_initialize): Don't dynamically load Get/SetScrollInfo. - -2006-06-04 David Kastrup - - * dispnew.c: Mention `redisplay-dont-pause' in doc string of - `sit-for'. - -2006-06-03 YAMAMOTO Mitsuharu - - * macfns.c (x_set_icon_name): Apply 2006-06-02 change for xfns.c. - - * macgui.h (USE_MAC_TSM): Set default to 1 on Mac OS X. - - * macterm.c (tsm_document_id) [USE_MAC_TSM]: New variable. - (Qtext_input, Qupdate_active_input_area, Qunicode_for_key_event) - [USE_MAC_TSM]: Likewise. - (syms_of_macterm) [USE_MAC_TSM]: Intern and staticpro them. - (Qbefore_string) [USE_MAC_TSM]: Add extern. - (do_app_resume, do_app_suspend) [USE_MAC_TSM]: Call - ActivateTSMDocument/DeactivateTSMDocument. - (mac_store_event_ref_as_apple_event): Call mac_post_mouse_moved_event. - (mac_handle_window_event) [USE_MAC_TSM]: Handle - kEventWindowFocusAcquired/kEventWindowFocusRelinquish. - (mac_handle_text_input_event) [USE_MAC_TSM]: New function. - (install_window_handler) [USE_MAC_TSM]: Install it. Register - kEventWindowFocusAcquired/kEventWindowFocusRelinquish. - (keycode_to_xkeysym_table): Add entry for f16. - (XTread_socket) [USE_MAC_TSM]: Set/reset read_socket_inev - before/after passing keystroke event to toolbox dispatcher. - (init_tsm) [USE_MAC_TSM]: New function. - (mac_initialize) [USE_MAC_TSM]: Call it. - (Vmac_ts_active_input_overlay) [USE_MAC_TSM]: New defvar. - - * macterm.h (EVENT_PARAM_TEXT_INPUT_SEQUENCE_NUMBER): New enumerator. - -2006-06-02 John Paul Wallington - - * xfns.c (x_set_name_internal): Set icon to `text', derived from - name, when frame's icon_name isn't a string rather than only when - it is nil. - -2006-06-03 Eli Zaretskii - - * w32fns.c (x_set_icon_name): Don't use arg if it's not a string - and not nil. - -2006-06-02 Chong Yidong - - * xfns.c (x_set_icon_name): No-op if arg is non-nil and not a - string. - -2006-06-02 YAMAMOTO Mitsuharu - - * xdisp.c (next_element_from_composition): Set it->object to - it->string if composition is coming from string. - (set_cursor_from_row): Don't return 0 unless row displays a - continued line. - (dump_glyph): Dump composite glyph. - -2006-06-02 Jan Dj,Ad(Brv - - * gtkutil.c (menu_nav_ended): Check that menubar_widget is not NULL. - -2006-06-01 Richard Stallman - - * window.c (Fsplit_window): Doc fix. - -2006-06-01 Micha,Ak(Bl Cadilhac - - * process.c (deleted_pid_list): New variable to store the pids - of deleted processes. Declare it only if SIGCHLD is defined. - (init_process): Initialize it. - (syms_of_process): Staticpro it. - (Fdelete_process): Add pid of the deleted process to it. Check after - the addition and before the kill if the process is already stopped, - in which case it is deleted from the list and not killed. - (sigchld_handler): Define it only if SIGCHLD is. Search the process - that signaled Emacs in `deleted_pid_list' before `Vprocess_alist'. - Original idea by Stefan Monnier. - -2006-06-01 Kim F. Storm - - * dispnew.c (sit_for): Perform redisplay even if input is pending - when redisplay-dont-pause is non-nil. - -2006-06-01 YAMAMOTO Mitsuharu - - * macterm.c (mac_handle_visibility_change): Set buf.arg to Qnil. - (XTread_socket): Remove obsolete comment. - -2006-06-01 Jan Dj,Ad(Brv - - * xmenu.c (syms_of_xmenu): Make accelerate-menu an alias for - menu-bar-open. - -2006-06-01 Jan Dj,Ad(Brv - - * xmenu.c (Fmenu_bar_open, syms_of_xmenu): Change menu-bar-start to - menu-bar-open. - - * gtkutil.c (menu_nav_ended): Change x-menu-bar-start to menu-bar-open. - -2006-05-31 Juri Linkov - - * minibuf.c (Vhistory_add_new_input): New variable. - (read_minibuf): Use it. - (syms_of_minibuf) : New Lisp variable. - (syms_of_minibuf) : Doc fix. - -2006-05-31 Kim F. Storm - - * process.c (select_wrapper): Add wrapper around select to work around - "incomplete backtrace" bug in gdb 5.3, when emacs is stopped inside - select called from wait_reading_process_output. - -2006-05-30 Andreas Schwab - - * xmenu.c (Fmenu_bar_start): Return a value. - -2006-05-30 Richard Stallman - - * coding.c (Ffind_operation_coding_system): Doc fix. - -2006-05-30 Eli Zaretskii - - * w32term.c (x_draw_hollow_cursor): Fix last change. - -2006-05-29 Kim F. Storm - - * w32term.c (x_draw_stretch_glyph_string): Fix last change. - -2006-05-29 Eli Zaretskii - - * coding.c (Ffind_operation_coding_system): Doc fix. - -2006-05-29 YAMAMOTO Mitsuharu - - * macfns.c [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): - Call mac_set_font_info_for_selection if font panel is made visible. - - * macterm.c (font_panel_shown_p) [USE_MAC_FONT_PANEL]: New variable. - (mac_font_panel_visible_p, mac_show_hide_font_panel) - [USE_MAC_FONT_PANEL]: New functions. - [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): - Return immediately if font panel is not visible. - - * macterm.h (mac_font_panel_visible_p, mac_show_hide_font_panel): - Add externs. - -2006-05-29 Dan Nicolaescu - - * search.c (matcher_overflow): Mark as NO_RETURN. - - * xterm.c (x_connection_closed): Likewise. - - * sysdep.c (croak): Likewise. - - * sound.c (sound_perror, alsa_sound_perror): Likewise. - - * lisp.h (die, nsberror): Likewise. - -2006-05-29 Jan Dj,Ad(Brv - - * sound.c (alsa_open, alsa_configure, alsa_write): - Move assignment to err out of if-statement. - - * gtkutil.c (menu_nav_ended): New function. - (create_menus): Connect menu_nav_ended to "selection-done" to fix - grabs. - - * xmenu.c (Fmenu_bar_start): New function for USE_GTK and USE_X_TOOLKIT. - -2006-05-28 Dan Nicolaescu - - * charset.h (invalid_character): Mark as NO_RETURN. - -2006-05-29 Kenichi Handa - - * coding.c (Ffind_operation_coding_system): Call a function by - safe_call1 instead of call1. - -2006-05-28 Stefan Monnier - - * window.c (struct saved_window): Add `dedicated'. - (Fset_window_configuration, save_window_save): Save/restore the - `dedicated' flag. - -2006-05-28 Kim F. Storm - - * xdisp.c (set_cursor_from_row): If cursor cannot be set in row, - don't update w->cursor and return 0. Return 1 on success. - (try_cursor_movement): Repeat set_cursor_from_row on successive rows - until it succeeds. - - * dispextern.h (set_cursor_from_row): Update prototype. - -2006-05-28 Kim F. Storm - - * xdisp.c (get_phys_cursor_geometry): Return computed x and y through - parameters. Adjust x and width in case cursor in on a partially - visible stretch glyph on the left edge. - (erase_phys_cursor): Don't erase into left fringe/margin in case - previous cursor glyph is a partially visible stretch glyph on left. - - * dispextern.h (get_phys_cursor_geometry): Update prototype. - - * xterm.c (x_draw_stretch_glyph_string): Fix problems with invisible - cursor and erasing cursor on partially visible stretch glyph on left. - (x_draw_hollow_cursor): Compute x via get_phys_cursor_geometry. - - * macterm.c: Likewise. - - * w32term.c: Likewise. - -2006-05-27 YAMAMOTO Mitsuharu - - * macselect.c (mac_handle_apple_event): - Return errAEEventNotHandled if key binding is not found. - -2006-05-26 Eli Zaretskii - - * emacs.c (main) [PROFILING]: Enable also for __MINGW32__. - [__MINGW32__]: MinGW-specific declaration of `etext'. - - * w32heap.c (etext, edata): Remove unused definitions. - -2006-05-26 Chong Yidong - - * fileio.c (Fcopy_file): Delete argument MUSTBENEW. - Incorporate the exclusive file-opening functionality into the behavior - when OK-IF-ALREADY-EXISTS is nil. - (Frename_file): Call Fcopy_file without MUSTBENEW argument. - -2006-05-26 Jan Dj,Ad(Brv - - * sound.c (alsa_configure): Move get period/buffer_size after - setting hwparams. - -2006-05-26 Kenichi Handa - - * coding.c (Ffind_operation_coding_system): Allow (FILENAME - . BUFFER) in TARGET. - -2006-05-25 Chong Yidong - - * image.c (png_load): Don't call fclose on NULL. - -2006-05-25 Luc Teirlinck - - * fns.c (Fyes_or_no_p): - * callint.c (Fcall_interactively): Fread_from_minibuffer now takes - only seven args. - -2006-05-25 Juri Linkov - - * lisp.h (Fread_from_minibuffer): Decrement number of args. - - * minibuf.c (read_minibuf): Remove arg KEEP_ALL. Callers changed. - (Fread_from_minibuffer): Remove arg KEEP_ALL. Callers changed. - - * buffer.c (mode-line-format): Fix docstring. - -2006-05-25 Richard Stallman - - * emacs.c (main, Fdump_emacs): Don't test __linux or __linux__. - -2006-05-24 Luc Teirlinck - - * puresize.h (BASE_PURESIZE): Increase to 1210000. - -2006-05-24 Alan Mackenzie - - * lread.c (Vload_history): Enhance doc-string to say that the file - is the absolute truename of the loaded file. - - * lread.c (Vafter_load_alist): doc-string: state that an element - now has a regexp to match file names, not a file name as such. - - * lread.c (readevalloop): Call file-truename on the name for - load-history, except at preloading time. - - * lread.c (Fload): At preloading time, preserve the extension of - the filename which goes into load-history. New var hist_file_name. - - * lread.c (Fload): Do eval-after-load stuff by calling the lisp - function do-after-load-evaluation. - -2006-05-24 YAMAMOTO Mitsuharu - - * mac.c (ae_attr_table): New variable. - (syms_of_mac): Intern and staticpro its elements. - (mac_aelist_to_lisp): Also convert Apple event attributes. - (mac_ae_put_lisp): New function. - (create_apple_event_from_event_ref) [MAC_OSX]: Use typeUTF8Text. - - * macfns.c (Fx_server_version): Use gestaltSystemVersionMajor etc. - - * macselect.c (Qemacs_suspension_id): New variable. - (syms_of_macselect): Intern and staticpro it. - (struct suspended_ae_info): New struct. - (deferred_apple_events, defer_apple_events) - (Fmac_process_deferred_apple_events): Use it. - (suspended_apple_events): New variable. - (mac_handle_apple_event_1): New function. - (mac_handle_apple_event): Use it. Don't process previously - suspended events. - (cleanup_suspended_apple_events, get_suspension_id) - (cleanup_all_suspended_apple_events): New functions. - (init_apple_event_handler): Call cleanup_all_suspended_apple_events - at exit. - (Fmac_cleanup_expired_apple_events, Fmac_ae_set_reply_parameter) - (Fmac_resume_apple_event): New defuns. - (syms_of_macselect): Defsubr them. - - * macterm.c (fn_keycode_to_keycode_table, XTread_socket) [MAC_OSX]: - Fix last change. Don't map `fn' modifier if pressed with F1 ... F12. - - * macterm.h (TYPE_FILE_NAME): Change from macro to enumerator. - (KEY_EMACS_SUSPENSION_ID_ATTR): New enumerator. - (keyReplyRequestedAttr) [MAC_OS_X_VERSION_MAX_ALLOWED < 1030]: Likewise. - (gestaltSystemVersionMajor, gestaltSystemVersionMinor) - (gestaltSystemVersionBugFix) [MAC_OS_X_VERSION_MAX_ALLOWED < 1040]: - Likewise. - (typeUTF8Text, kEventParamWindowMouseLocation) - [MAC_OSX && MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Likewise. - (x_get_focus_frame, mac_ae_put_lisp): Add externs. - -2006-05-23 YAMAMOTO Mitsuharu - - * macterm.c (fn_keycode_to_xkeysym_table, convert_fn_keycode): Remove. - (fn_keycode_to_keycode_table) [MAC_OSX]: New variable. - (mac_set_unicode_keystroke_event) [TARGET_API_MAC_CARBON]: New function. - (XTread_socket) [TARGET_API_MAC_CARBON]: Use it. - (XTread_socket) [MAC_OSX]: Try 'uchr' Unicode keyboard-layout - resource to backtranslate key with modifiers. - (XTread_socket): Don't set read_socket_inev around AEProcessAppleEvent. - -2006-05-23 Jan Dj,Ad(Brv - - * xterm.c: Remove declarations already in xterm.h - - * xterm.h: Add extern declarations for x_clear_errors, - x_fully_uncatch_errors, x_catching_errors and - x_alloc_lighter_color_for_widget. Remove duplicated declarations. - -2006-05-21 Richard Stallman - - * xfaces.c (best_matching_font): Abort for best == NULL - before we start to use it. - - * buffer.c (syms_of_buffer, Fmake_overlay): Doc fixes. - -2006-05-20 Kim F. Storm - - * xfaces.c (best_matching_font): Fix crash in 2006-05-17 change. - -2006-05-20 YAMAMOTO Mitsuharu - - * macterm.c (convert_fn_keycode): Fix last change. - -2006-05-19 Eli Zaretskii - - * w32.c (init_environment): Perform the processing of environment - variables on a copy of default variables and their values, not on - the original. Simplify code that calls ExpandEnvironmentStrings - and make buf1[] and buf2[] more visible for easier debugging. - -2006-05-19 YAMAMOTO Mitsuharu - - * frame.c (x_set_border_width): Remove #ifndef MAC_OS. - - * image.c [MAC_OS] (gif_load): Allocate Lisp string first. - - * macfns.c (Fx_focus_frame): Don't check dpyinfo->x_focus_frame. - - * macterm.c (XTread_socket) [TARGET_API_MAC_CARBON && MAC_OSX]: - Forward keyUp events to toolbox_dispatcher. - - * window.c (foreach_window): Check WINDOWP (FRAME_ROOT_WINDOW (f)). - -2006-05-18 Jan Dj,Ad(Brv - - * config.in: Regenerated (HAVE_ALSA). - - * sound.c (alsa_sound_perror, alsa_open, alsa_period_size) - (alsa_configure, alsa_close, alsa_choose_format, alsa_write) - (snd_error_quiet, alsa_init): New functions. - (vox_init): Return 0 if unable to open device. - (Fplay_sound_internal): Test for alsa first and use vox (oss) as - a fallback. - (struct sound_device): Add period_size. - (wav_play, au_play): Use period_size if set. - - * Makefile.in (CFLAGS_SOUND): New flags for ALSA. - (ALL_CFLAGS): Add CFLAGS_SOUND. - -2006-05-18 Kenichi Handa - - * callproc.c (Fcall_process): Reject encoding arguments by - ascii-incompatible coding systems (e.g. utf-16). - - * coding.c (Qascii_incompatible): New variable. - (syms_of_coding): Setup Qascii_incompatible. - (setup_coding_system): Be sure to initialize coding->common_flags. - Check `ascii-incompatible' property of the coding system. - - * coding.h (CODING_ASCII_INCOMPATIBLE_MASK): New macro. - -2006-05-18 Kim F. Storm - - * xdisp.c (display_tool_bar_line): Restore entire tool-bar - geometry when backtracking in case last image doesn't fit on line. - -2006-05-18 MIYOSHI Masanori (tiny change) - - * xdisp.c (display_tool_bar_line): Don't adjust tool-bar height by - more than height of one frame default line. - -2006-05-17 Richard Stallman - - * xfaces.c (better_font_p): Any font beats no font. - (best_matching_font): Simplify based on above change. - - * buffer.c (Fprevious_overlay_change, Fnext_overlay_change): Doc fixes. - -2006-05-16 Kim F. Storm - - * xterm.c (handle_one_xevent): Check that f is not NULL before - calling x_kill_gs_process. - -2006-05-14 Richard Stallman - - * textprop.c (Fnext_single_char_property_change) - (Fprevious_single_char_property_change): Don't allow returning - value beyond LIMIT in any cases. - (Fnext_char_property_change, Fprevious_char_property_change): Doc fix. - - * intervals.c (get_local_map): Abort if POSITION outside BEGV, ZV. - -2006-05-14 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Check that f is not NULL before - calling _XEditResCheckMessages. - -2006-05-14 Kim F. Storm - - * xterm.c (handle_one_xevent): Fix crash in 2006-03-24 change. - -2006-05-13 Eli Zaretskii - - * frame.c (x_set_border_width): Fix error message to say "frame", - not "window". - - * Makefile.in (SOME_MACHINE_LISP): Add fringe.elc. - -2006-05-12 Chong Yidong - - * intervals.c (set_point_both): Fix mixup before before and after - in variable names. - - * editfns.c (Fline_beginning_position): Inhibit point-motion hooks - while setting point temporarily. - -2006-05-11 Richard Stallman - - * lread.c (readevalloop): Abort if START non-nil for non-buffer input. - -2006-05-11 Kim F. Storm - - * xdisp.c (redisplay_tool_bar): Handle large tool-bar-border values. - -2006-05-11 Kenichi Handa - - * fileio.c (Finsert_file_contents): Fix for the case of IO error - while handling replace operation. - -2006-05-10 Kenichi Handa - - * xfaces.c (realize_default_face) [HAVE_X_WINDOWS]: If the font - chosen for the default face was different from the frame font, - adjust the frame font. - -2006-05-10 YAMAMOTO Mitsuharu - - * image.c (Qduration) [MAC_OS]: Undo previous change. - (syms_of_image) [MAC_OS]: Likewise. - [MAC_OS] (gif_load): Emulate Graphic Control Extension block. - - * macfns.c (x_to_mac_color): Fix shift amount change. - (mac_set_font) [USE_MAC_FONT_PANEL]: Use x_get_focus_frame. - [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): Doc fix. - - * macselect.c (Vmac_service_selection) [MAC_OSX]: Rename from - Vmac_services_selection. All uses changed. - (mac_store_service_event): Rename from mac_store_services_event in - extern and calls. - - * macterm.c (Qservice) [MAC_OSX]: Rename from Qservices. All uses - changed. - [MAC_OSX] (mac_store_service_event): Rename from - mac_store_services_event. All callers changed. - [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): Add args - FACE_ID and C. All callers changed. - (x_free_frame_resources) [USE_MAC_FONT_PANEL]: Call - mac_set_font_info_for_selection when focus frame is destroyed. - (XTread_socket): Revert to FrontNonFloatingWindow/FrontWindow. - - * macterm.h (mac_set_font_info_for_selection): Add 2nd and 3rd - args in extern. - -2006-05-09 Chong Yidong - - * keymap.c (describe_map): Avoid generating duplicate entries if - the shadowed binding has the same definition. - -2006-05-09 Kenichi Handa - - * keymap.c (push_key_description): Handle invalid character key. - -2006-05-08 Kenichi Handa - - * callproc.c (Fcall_process): Use system_eol_type for encoding - arguments if eol_type is not yet decided. - - * coding.h (system_eol_type): Extern it. - - * coding.c (setup_coding_system): For invalid coding-system, set - coding->eol_type to CODING_EOL_UNDECIDED. - (encode_coding): Cancel previous change. - (shrink_encoding_region): Likewise. - (code_convert_region1): Likewise. - (code_convert_string1): Likewise. - (code_convert_string_norecord): Likewise. - - * fileio.c (choose_write_coding_system): Use system_eol_type for - encoding if eol_type is not yet decided. - - * process.c (setup_process_coding_systems): Use system_eol_type - for encoding if eol_type is not yet decided. - (read_process_output): Likewise. - (send_process): Likewise. - -2006-05-07 Juanma Barranquero - - * minibuf.c (syms_of_minibuf) : Fix typo in doc. - -2006-05-07 YAMAMOTO Mitsuharu - - * mac.c (Fmac_clear_font_name_table): Move defun to macfns.c. - (syms_of_mac): Likewise for defsubr. - - * macfns.c (mac_set_font): New function. - (mac_frame_parm_handlers, syms_of_macfns): Replace x_set_font with it. - (mac_window) [TARGET_API_MAC_CARBON && MAC_OSX]: Specify - kWindowToolbarButtonAttribute when creating window. - (Fmac_clear_font_name_table): Move from macfns.c. - (syms_of_macfns): Likewise for defsubr. - [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): New defun. - (syms_of_macfns) [USE_MAC_FONT_PANEL]: Defsubr it. - - * macgui.h (USE_MAC_FONT_PANEL): Define to 1 if USE_ATSUI is set - and build is done on Mac OS X 10.2 and later. - - * macselect.c (mac_do_receive_drag): Remove unused variable `index'. - (mac_store_services_event): Change return type in extern. - - * macterm.c (XLoadQueryFont) [USE_ATSUI]: Set font->mac_fontnum to - FMFontFamily value. - [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): New function. - (x_new_focus_frame) [USE_MAC_FONT_PANEL]: Use it. - (QCfamily, QCweight, QCslant, Qnormal, Qbold, Qitalic): Add extern. - (QWindow) [MAC_OSX]: Likewise. - (Qfont) [USE_MAC_FONT_PANEL]: Likewise. - (Vmac_atsu_font_table) [USE_ATSUI]: New variable. - (syms_of_macterm) [USE_ATSUI]: Defvar it. - (Qtoolbar_switch_mode) [MAC_OSX]: New variable. - (Qpanel_closed, Qselection) [USE_MAC_FONT_PANEL]: Likewise. - (syms_of_macterm): Intern and staticpro them. - (init_font_name_table) [USE_ATSUI]: Add data to Vmac_atsu_font_table. - [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event): - New function. - [USE_CARBON_EVENTS] (mac_handle_command_event): Use it. - [MAC_OSX] (mac_store_services_event): Likewise. - [USE_CARBON_EVENTS] (mac_handle_window_event) [MAC_OSX]: Handle - kEventWindowToolbarSwitchMode event. - (install_window_handler) [USE_CARBON_EVENTS && MAC_OSX]: Register it. - [MAC_OSX] (mac_store_services_event): Change return type to OSStatus. - [USE_MAC_FONT_PANEL] (mac_handle_font_event): New function. - (install_window_handler) [USE_MAC_FONT_PANEL]: Install it. - (XTread_socket): Select window on mouse click if x_focus_frame is NULL. - - * macterm.h (mac_set_font_info_for_selection): Add extern. - -2006-05-06 YAMAMOTO Mitsuharu - - * image.c (Qduration) [MAC_OS]: New variable. - (syms_of_image) [MAC_OS]: Intern and staticpro it. - [MAC_OS] (gif_load): Save image extension data in img->data.lisp_val. - [MAC_OSX] (image_load_quartz2d): Use cfstring_create_with_utf8_cstring - instead of cfstring_create_with_string. - -2006-05-06 Kim F. Storm - - * .gdbinit (xframe): Print frame name. - (xlist): New command to print a list (max 10 elements). - (xpr): Print lisp object of any type. - (pitx): Print it->pixel_width. - -2006-05-05 Kenichi Handa - - * xdisp.c (handle_composition_prop): Fix for the case of empty - composition component. - -2006-05-05 YAMAMOTO Mitsuharu - - * keyboard.c (make_lispy_event) [MAC_OS]: Get Apple event info - from event->arg. - - * termhooks.h (enum event_kind) [MAC_OS]: Update comment for - MAC_APPLE_EVENT. - - * macterm.h (mac_make_lispy_event_code): Remove extern. - (mac_post_mouse_moved_event): Add extern. - (mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to - `const AEDesc *' in externs. - (create_apple_event_from_drag_ref) [TARGET_API_MAC_CARBON]: New extern. - - * mac.c (mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to - `const AEDesc *'. - [TARGET_API_MAC_CARBON] (create_apple_event): New function. - [TARGET_API_MAC_CARBON] (create_apple_event_from_event_ref): Use it. - Use xrealloc instead of repeated xmalloc/xfree. - [TARGET_API_MAC_CARBON] (create_apple_event_from_drag_ref): - New function. - - * macmenu.c (restore_menu_items, cleanup_popup_menu): Return a value. - - * macselect.c: Update copyright year. - (mac_store_apple_event): Change return type to void in extern. - (mac_handle_apple_event): Don't get return value from - mac_store_apple_event. - [TARGET_API_MAC_CARBON] (Vmac_dnd_known_types): New variable. - (syms_of_macselect) [TARGET_API_MAC_CARBON]: Defvar it. - [TARGET_API_MAC_CARBON] (mac_do_track_drag): Move function from - macterm.c. Use Vmac_dnd_known_types as acceptable flavors. - [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise. New - implementation using create_apple_event_from_drag_ref. - [TARGET_API_MAC_CARBON] (mac_do_track_dragUPP) - (mac_do_receive_dragUPP): Move variables from macterm.c. - (install_drag_handler, remove_drag_handler): New functions. - - * macterm.c (XTread_socket) [TARGET_API_MAC_CARBON]: Try window - path select also for proxy icon click. - [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event): New function. - [USE_TOOLKIT_SCROLL_BARS] (scroll_bar_timer_callback): Use it. - (xlfdpat_create): Remove unused label `error' and trailing sentences. - (mac_do_track_drag, mac_do_receive_drag): Move functions to macselect.c. - (mac_do_track_dragUPP, mac_do_receive_dragUPP): Move variables to - macselect.c. - (install_drag_handler, remove_drag_handler): Add extern. - (mac_store_apple_event): Change return type to void. All uses changed. - Create Lisp object from Apple event and store it into input event. - (mac_make_lispy_event_code): Remove function. - [TARGET_API_MAC_CARBON] (mac_store_drag_event): New function. - (install_window_handler): Call install_drag_handler. - (remove_window_handler): Call remove_drag_handler. - -2006-05-03 Richard Stallman - - * sound.c (Fplay_sound_internal): Dynamically allocate - current_sound_device and current_sound. - (sound_cleanup): Free them. - - * minibuf.c (read_minibuf): Don't use read_minibuf_noninteractive - when inside a keyboard macro. - -2006-05-02 Andreas Schwab - - * xmenu.c (restore_menu_items): Return a value. - -2006-05-01 Martin Rudalics - - * syntax.c (Fforward_comment): Detect generic comment at beginning of - buffer when moving backwards. - -2006-05-01 YAMAMOTO Mitsuharu - - * dispnew.c (update_window): Don't set changed_p when mode/header - line is updated. - - * xdisp.c (prepare_menu_bars) [MAC_OS]: Call mac_update_title_bar. - (get_glyph_face_and_encoding, get_char_face_and_encoding): - Don't distinguish known faces from others. - - * mac.c (mac_coerce_file_name_ptr): Try typeFSRef if coercion - through typeFileURL failed. - - * macfns.c (mac_update_title_bar): New function. - [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): New function. - (show_hourglass, hide_hourglass) [USE_CG_DRAWING]: - Call mac_prepare_for_quickdraw. - - * macgui.h (USE_ATSUI): Set default to 1 if MAC_OSX is defined. - (USE_CG_DRAWING): Don't define if compiled on Mac OS X 10.1. - (enum pcm_status): New enum. - (XCHARSTRUCTROW_CHAR_VALID_P, XCHARSTRUCTROW_SET_CHAR_VALID) - (XCharStructRow): Remove. Now validity is represented by - non-negativeness of sum of ascent and descent. - (struct MacFontStruct): Change type of member `rows'. - (struct _XGC) [USE_CG_DRAWING]: Add member `clip_rects'. - - * macterm.c (mac_draw_line, mac_draw_line_to_pixmap): - Adjust endpoints of strictly horizontal/vertical lines. - (mac_set_clip_rectangles) [USE_CG_DRAWING]: Set clip_rects. - (pcm_init, pcm_get_status): New functions. - (x_per_char_metric, XLoadQueryFont): Use them instead of - XCharStructRow and related macros. - (x_draw_relief_rect): Don't adjust arguments of mac_draw_line. - (x_free_frame_resources) [TARGET_API_MAC_CARBON]: Free FRAME_FILE_NAME. - (XTread_socket) [TARGET_API_MAC_CARBON]: Handle proxy icon drag - and window path pop-up menu on title bar. - (mac_use_core_graphics) [USE_CG_DRAWING]: Set default to 1. - - * macterm.h (mac_update_title_bar): Add extern. - (struct mac_output) [TARGET_API_MAC_CARBON]: New member `file_name'. - (FRAME_FILE_NAME): New macro. - - * unexmacosx.c (unexec): Error if trying unexec from dumped executable. - -2006-04-30 Richard Stallman - - * keymap.c (Fdefine_key): Improve error message - when KEY begins with a non-prefix key. - -2006-04-30 Martin Rudalics - - * syntax.c (Fforward_comment): Don't forget to break out of the loop - when we skipped backward over a generic comment. - -2006-04-27 Nick Roberts - - * .gdbinit (pp1, pv1): Only print value as expression is now - printed out by gud-print. - (pv1): Correct doc string. - -2006-04-26 Stefan Monnier - - * keymap.c (store_in_keymap): Change `def' arg to not be `register'. - Seems to trigger a bug in gcc-amd64 4.0.2 20051125 (Red Hat 4.0.2-8): - keymap.c:895: error: address of register variable `def' requested. - -2006-04-26 Jason Rumney - - * w32term.c (construct_mouse_wheel): Handle negative coordinates. - - * w32fns.c (w32_wnd_proc) : - : Call signal_user_input in the cases - where we preempt mouse_button_timer. - -2006-04-25 Miles Bader - - * editfns.c (Ffield_beginning, find_field): Undo change of 2006-04-23. - -2006-04-24 Stefan Monnier - - * process.h: Include headers for pid_t. - -2006-04-24 Kim F. Storm - - * xdisp.c (fill_stretch_glyph_string): Set s->nchars = 1 for code which - does last_glyph=s->first_glyph+s->nchars-1, e.g. if stretch has relief. - (produce_stretch_glyph): Assume that face box height and width is - already included in stretch glyph size so caller doesn't have to - consider the extra space otherwise added (fixes problem in ses.el). - - * frame.c (x_set_font): Clear f->n_tool_bar_rows and current frame - matrices to force recalculation of tool-bar height after font change. - - * xdisp.c (tool_bar_lines_needed): New local `temp_row' for clarity. - Clear it when done, so we don't accidentally draw a second copy of - the tool-bar after resetting f->n_tool_bar_rows. - (redisplay_tool_bar): Update tool-bar-lines frame parameter whenever - we recalculate f->n_tool_bar_rows. - -2006-04-23 Lars Hansen - - * editfns.c (find_field): Fix comment. - (Ffield_beginning): Fix bug when POS is at field beginning. - -2006-04-22 Eli Zaretskii - - * puresize.h (BASE_PURESIZE): Increase to 1205000. - -2006-04-21 Kim F. Storm - - * xdisp.c (redisplay_window): Fix last change. Don't recenter if - window start is at BEGV. - - * dispextern.h (struct image): New member `corners'. - (TOP_CORNER, LEFT_CORNER, BOT_CORNER, RIGHT_CORNER): New macros. - - * image.c (four_corners_best): New arg CORNERS specifies what pixels - to look at in case image has margin. - (x_create_bitmap_mask): Pass NULL for CORNERS to four_corners_best. - (image_background, image_background_transparent) - (x_build_heuristic_mask): Pass img->corners to four_corners_best. - (gif_load): Set img->corners according to image's margin spec. - Use img->corners values directly where applicable. - Save image extension data in img->data.lisp_val. - (gif_clear_image): New function to free img->data.lisp_val. - (gif_type): Use it instead of generic x_clear_image. - (Fimage_extension_data): New defun. - (syms_of_image): Defsubr it. - -2006-04-21 John Sullivan (tiny change) - - * window.c (Fdisplay_buffer): Doc fix. - -2006-04-21 Eli Zaretskii - - * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Increase to 25000. - -2006-04-21 YAMAMOTO Mitsuharu - - * image.c [MAC_OS] (xpm_load_image): Fill in background field - while we have ximg handy. - - * macmenu.c (restore_menu_items, save_menu_items): New functions - from xmenu.c. - (set_frame_menubar, digest_single_submenu): Apply 2006-04-18 - changes for xmenu.c. - - * macterm.c (x_per_char_metric): Return NULL if glyph width is 0. - (add_mac_font_name): New function. - (init_font_name_table): Use it. Adopt the first found font from - those having the same family name. - -2006-04-21 Nick Roberts - - * xdisp.c (note_mouse_highlight): Use build_string. - -2006-04-20 Lars Hansen - - * textprop.c (Fremove_list_of_text_properties): - Ensure modify_region is called only when buffer is modified and that - signal_after_change is allways called in that case. - - * print.c (PRINTFINISH): Call signal_after_change. - -2006-04-20 Kim F. Storm - - * xdisp.c (redisplay_window): Fix last change. - - * xdisp.c (redisplay_window): If current window start is not at the - beginning of a line, select a new window start if buffer is modified - and window start is in the modified region, but the first change is - before window start. - -2006-04-18 Richard Stallman - - * xmenu.c (restore_menu_items, save_menu_items): New fns. - (set_frame_menubar): Use save_menu_items. Save updated vector in - the frame before unwinding it. Don't use unuse_menu_items. - Don't use discard_menu_items. - (digest_single_submenu): Abort if an item is not in a pane. - (init_menu_items): Put the error check at the top. - - * keymap.c (describe_map): Make "shadowed" warning more verbose. - - * window.c (adjust_window_trailing_edge): Correctly distinguish - series vs parallel cases, even when window has no parent. - - * abbrev.c (record_symbol): New function. - (Finsert_abbrev_table_description): Sort the abbrevs alphabetically. - -2006-04-18 YAMAMOTO Mitsuharu - - * image.c (x_create_bitmap_from_data) [MAC_OS]: Don't check return - value of xmalloc. - - * mac.c (mac_coerce_file_name_ptr, mac_coerce_file_name_desc) - (create_apple_event_from_event_ref, xrm_get_preference_database) - (cfstring_create_normalized): Don't check return value of xmalloc. - - * macselect.c (get_scrap_target_type_list, defer_apple_events) - (copy_scrap_flavor_data, mac_handle_service_event): Don't check - return value of xmalloc/xrealloc. - - * macterm.c (XCreateGC, x_per_char_metric, xlfdpat_create) - (init_font_name_table, init_font_name_table, mac_do_list_fonts) - (XLoadQueryFont, mac_store_apple_event): Don't check return value - of xmalloc. - -2006-04-17 Kim F. Storm - - * window.c (coordinates_in_window): On the vertical border, - calculate the row number measured from the top of the window, not - the top of the frame. - (window_loop): Test w->dedicated with !NILP instead of EQ Qt. - (window_scroll_pixel_based): Fix off-by-one bug in 2002-12-23 change. - -2006-04-16 Eli Zaretskii - - * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Reduce to 24000. - -2006-04-16 Romain Francoise - - * puresize.h (BASE_PURESIZE): Decrement back to 1200000. - -2006-04-16 Andreas Schwab - - * puresize.h (PURESIZE_RATIO): Reduce to 10/6. - -2006-04-15 Romain Francoise - - * puresize.h (BASE_PURESIZE): Increment to 1210000. - -2006-04-13 Micha,Ak(Bl Cadilhac - - * print.c (Fprin1_to_string): Mention in the `doc' that the - behavior is modified by `print-level' and `print-length'. - -2006-04-13 Kenichi Handa - - * coding.c (setup_coding_system): If eol-type is not yet decided - and system_eol_type is not LF, set CODING_REQUIRE_ENCODING_MASK. - If coding_system is nil, return 0. - (code_convert_region1): Even if coding_system is nil, don't skip - conversion if system_eol_type is not LF. - (code_convert_string1): Likewise. - (code_convert_string_norecord): Likewise. - -2006-04-13 Kenichi Handa - - * coding.c (setup_coding_system): Fix previous change. - (encode_coding): If eol_type is not yet decided, use system_eol_type. - (shrink_encoding_region): If eol_type is not yet decided and - system_eol_type is not LF, don't shrink. - -2006-04-13 Nick Roberts - - * xdisp.c (note_mouse_highlight): Add help echo for dragging vertical - line. - -2006-04-12 Richard Stallman - - * keyboard.c (read_key_sequence): Explicitly avoid keybuf[-1]. - - * process.c (conv_lisp_to_sockaddr): If FAMILY unknown, just return. - (Fprocess_send_eof): Abort if fail to open null device. - -2006-04-12 YAMAMOTO Mitsuharu - - * fns.c [HAVE_MENUS && MAC_OS]: Include macterm.h. - - * image.c [MAC_OS] (xpm_load_image): Add parentheses around - assignment used as truth value. Add explicit braces to avoid - ambiguous `else'. - [MAC_OS] (gif_load): Remove unused variable `gcpro1'. - - * lisp.h (syms_of_fontset, Fset_fontset_font): Put extern and - EXFUN in #ifdef HAVE_WINDOW_SYSTEM. - (syms_of_xfns, syms_of_xsmfns, syms_of_xselect, syms_of_xterm): - Put externs in #ifdef HAVE_X_WINDOWS. - (syms_of_macfns, syms_of_macselect, syms_of_macterm) - (syms_of_macmenu, syms_of_mac) [MAC_OS]: Add externs. - (init_mac_osx_environment) [MAC_OSX]: Add extern. - - * mac.c (init_process): Remove undef. - (select) [MAC_OSX]: Undefine before including sysselect.h. - (posix_pathname_to_fsspec, fsspec_to_posix_pathname) [MAC_OSX]: - Remove functions and prototypes. - (parse_value): Add parentheses around + inside shift. - (path_from_vol_dir_name): Make static. - (get_temp_dir_name): Remove unused variables `cpb' and `dir_name'. - [!MAC_OSX] (get_path_to_system_folder): Likewise. - (Fmac_get_file_creator, Fmac_get_file_type): Remove unused - variable `cCode'. - (Fmac_coerce_ae_data): Remove unused variables `fref' and `fs'. - (Fmac_get_preference): Add explicit braces to avoid ambiguous `else'. - - * macfns.c (x_to_mac_color): Remove unused variable `tail'. - (x_set_mouse_color): Remove unused variable `dpy'. - (Fx_create_frame): Remove unused variable `x_frame_count'. - (Fx_server_version): Add explicit braces to avoid ambiguous `else'. - (x_sync): Move from macterm.c. - (Fx_file_dialog): Remove unused variable `default_filter_index'. - - * macmenu.c (min_menu_id): Make element type explicit. - - * macselect.c (get_flavor_type_from_symbol): Remove unused - variable `val'. - (get_scrap_private_timestamp, x_get_foreign_selection) - (copy_scrap_flavor_data): Add explicit braces to avoid ambiguous `else'. - (Fmac_process_deferred_apple_events): Remove unused variables - `keyword', `reply', `apple_event', `count', and `err'. - - * macterm.c: Don't include gnu.h. - (x_io_error_quitter, x_draw_image_foreground_1): Remove prototypes. - (x_sync): Move to macfns.c. - [USE_CG_DRAWING] (mac_define_fringe_bitmap): Remove unused - variable `mask_bits'. - (mac_compute_glyph_string_overhangs): Avoid ambiguous `else'. - (x_draw_image_glyph_string): Remove unused variable `pixmap'. - (x_mac_to_emacs_modifiers): Remove function. - (XTset_vertical_scroll_bar, mac_handle_visibility_change) - (x_make_frame_visible, xlfdpat_create, mac_handle_command_event): - Add explicit braces to avoid ambiguous `else'. - (x_make_frame_visible): Remove unused variables `type', - `original_top', and `original_left'. - (mac_do_list_fonts, XTread_socket): Add parentheses around && within ||. - (x_load_font): Remove unused variables `full_name', and `value'. - (do_get_menus, do_init_managers, do_check_ram_size) [!MAC_OS8]: - Remove functions. - (do_zoom_window): Reorganize variables with respect to conditionals. - (init_command_handler): Remove unused variable `err'. - [MAC_OSX] (mac_check_bundle): Remove unused variable `child'. - - * macterm.h (x_set_mouse_position, x_set_mouse_pixel_position) - (x_make_frame_invisible, x_iconify_frame, x_free_frame_resources) - (x_destroy_window, x_wm_set_size_hint, x_delete_display, XFreeGC) - (do_menu_choice, have_menus_p, x_real_positions) - (x_set_menu_bar_lines, x_pixel_width, x_pixel_height, x_char_width) - (x_char_height, x_sync, x_set_tool_bar_lines, x_activate_menubar) - (free_frame_menubar): Add externs. - - * unexmacosx.c: Include config.h before using HAVE_MALLOC_MALLOC_H. - (malloc, realloc, free): Add undefs. - (read_load_commands): Remove unused variable `n' and `j'. - (copy_data_segment): Remove unused variable `r'. - - * xdisp.c (get_glyph_string_clip_rects): Add parentheses around && - within ||. Add explicit braces to avoid ambiguous `else'. - (dump_glyph_row): Remove label for `inverse_p' from legend. - - * xfaces.c (Finternal_merge_in_global_face, try_font_list): - Add explicit braces to avoid ambiguous `else'. - -2006-04-11 Micha,Ak(Bl Cadilhac - - * dispnew.c (init_display): Don't init X display if the user asked - for a non-X display. - -2006-04-12 Kenichi Handa - - * coding.c (setup_coding_system): Use system_eol_type for default - coding->eol_type. - -2006-04-11 Dan Nicolaescu - - * lisp.h (wrong_type_argument): Mark as NO_RETURN. - - * data.c (wrong_type_argument): Try to avoid compiler warnings due - to the fact the function is now marked as NO_RETURN. - -2006-04-10 Eli Zaretskii - - * s/ms-w32.h (pid_t) [_MSC_VER]: New typedef. - -2006-04-10 Romain Francoise - - * xrdb.c (gethomedir): Use xstrdup. - -2006-04-10 Andreas Schwab - - * xrdb.c (gethomedir): Make sure to always return a pointer that - can be passed to free. - -2006-04-09 Richard Stallman - - * lisp.h (Fkill_emacs): Undo previous change. - -2006-04-08 Richard Stallman - - * search.c (boyer_moore): Test ch >= 0400, not >. - -2006-04-09 Dan Nicolaescu - - * puresize.h (pure_write_error): Mark as NO_RETURN. - - * lisp.h (args_out_of_range, args_out_of_range_3) - -2006-04-08 Eli Zaretskii - - * w32fns.c (w32_wnd_proc) : Ignore mouse movements - if a menu is active on this frame. - -2006-04-08 Dan Nicolaescu - - * lisp.h (report_file_error): Mark as NO_RETURN. - -2006-04-08 Eli Zaretskii - - * alloc.c [STDC_HEADERS]: Include stddef.h. - - * lisp.h (PSEUDOVECSIZE): Fix last change. - -2006-04-08 Stefan Monnier - - * process.h (struct Lisp_Process): Replace Lisp_Objects `pid', - `raw_status_high', and `raw_status_low' with plain integers, and move - them to the end of the structure. - - * alloc.c (allocate_process): Use PSEUDOVECSIZE to initialize the - pseudovector's size field so only the Lisp_Object fields get GC'd. - - * process.c (update_status, make_process, Fdelete_process) - (Fprocess_status, list_processes_1, start_process_unwind) - (create_process, Fmake_network_process, server_accept_connection) - (wait_reading_process_output, send_process, Fprocess_running_child_p) - (process_send_signal, proc_encode_coding_system, Fprocess_send_eof) - (sigchld_handler, status_notify): Adjust to new non-Lisp fields for - `pid' and `raw_status'. - (Fprocess_id, Fsignal_process): Same, and additionally use floats when - representing PIDs that are larger than most-positive-fixnum. - - * keymap.c (describe_map): Only use XINT if we checked INTEGERP. - - * lisp.h (OFFSETOF, PSEUDOVECSIZE): New macros. - -2006-04-08 Eli Zaretskii - - * w32fns.c (Fx_show_tip): Add 3 to the 5th arg of SetWindowPos. - -2006-04-03 Paul Eggert - - * editfns.c (TM_YEAR_IN_ASCTIME_RANGE): New macro, identical to - ../lib-src/b2m.c and ../lib-src/editfns.c. - (Fcurrent_time_string): Use it. - Document that the year might not consume 4 columns if it's outside - the range 1000-9999. - Check for asctime failure. - Don't assume that the output string length is always exactly 24. - -2006-04-03 YAMAMOTO Mitsuharu - - * macterm.c (XTread_socket): Initialize variable `f' before its use. - -2006-04-03 Kenichi Handa - - * image.c: Include "charset.h" and "coding.h". - (x_find_image_file): Return an encoded file name. - -2006-04-01 Eli Zaretskii - - * configure: Regenerated. - -2006-03-31 Kenichi Handa - - * xfns.c (xg_set_icon): Delete superfluous UNGCPRO. - -2006-03-30 Dan Nicolaescu - - * xdisp.c (syms_of_xdisp): Fix variable name. - -2006-03-30 Kenichi Handa - - * xterm.c (x_term_init): Delete superfluous UNGCPRO. - -2006-03-29 Juanma Barranquero - - * keyboard.c (process_tool_bar_item): Reorder dummy args. - -2006-03-29 Stefan Monnier - - * keyboard.c (tool_bar_items): Use map_keymap. - (process_tool_bar_item): Add dummy args to fit the required interface. - -2006-03-25 Eli Zaretskii - - * .gdbinit (pr, pp, pp1, pv, pv1): Force print_output_debug_flag - to zero before calling debug_print or safe_debug_print. - - * print.c (print_output_debug_flag): New global variable. - (Fexternal_debugging_output) [WINDOWSNT]: Don't call - OutputDebugString if print_output_debug_flag is zero. - -2006-03-24 Paul Eggert - - * editfns.c (TM_YEAR_BASE): Move up, so the changes below can use it. - (Fdecode_time, Fencode_time): Use TM_YEAR_BASE instead of 1900. - (Fdecode_time): Cast tm_year to EMACS_INT. - (Fcurrent_time_string): Report an invalid time specification if - the argument is invalid. Also, check for out-of-range time stamps. - -2006-03-24 Kim F. Storm - - * xterm.c (handle_one_xevent): - * w32term.c (w32_read_socket): - * macterm.c (XTread_socket): Don't let key-press clear mouse face - on in toolbar window if mouse-highlight is an integer. - - * fns.c (sxhash_list): Include last non-nil CDR in hash. - -2006-03-24 YAMAMOTO Mitsuharu - - * macmenu.c (enum mac_menu_kind): New enum. - (min_menu_id): New variable. - (POPUP_SUBMENU_ID, MIN_POPUP_SUBMENU_ID, MIN_MENU_ID) - (MIN_SUBMENU_ID): Remove defines. All uses are replaced with - min_menu_id and enumerators in enum mac_menu_kind. - (fill_menu, dispose_menus, install_menu_quit_handler): New arg KIND. - All uses changed. Add range check for menu ID. - (fill_menubar): Add range check for menu ID. - [HAVE_CANCELMENUTRACKING] (menu_quit_handler): Check error code of - GetEventParameter. - (set_frame_menubar, mac_menu_show): Call install_menu_quit_handler - for each menu kind. - -2006-03-22 Kim F. Storm - - * xdisp.c: Undo 2006-03-21 change. - - * term.c: Define aliases for append_glyph and produce_stretch_glyph - when `static' is defined to avoid name clash with those in xdisp.c. - - * process.c (Faccept_process_output): Fix to comply with lisp - reference. Change arg "timeout" to "seconds" and allow both - integer and float value. Change arg "timeout-msec" to "millisec" - and interpret" as milliseconds rather than microseconds. Fix doc - string accordingly. - -2006-03-21 Ken Raeburn - - * xdisp.c (store_next_glyph): Rename from append_glyph. - (generate_stretch_glyph): Rename from produce_stretch_glyph. - All callers changed accordingly. - -2006-03-21 Jan Dj,Ad(Brv - - * xterm.c: x_session_initialized new variable. - (x_term_init): Use x_session_initialized to check if - x_session_initialize should be called. - (x_initialize): Initialize x_session_initialized. - -2006-03-21 Kim F. Storm - - * fringe.c (draw_fringe_bitmap): Don't calculate default overlay arrow - bitmap here, but ... - (update_window_fringes): ... here, so we can test if it has changed. - -2006-03-20 Andreas Schwab - - * dispnew.c (init_display): Check DISPLAY here. - - * emacs.c (main): Don't check here. - - * xterm.c (x_display_ok): Don't use DISPLAY env var. - -2006-03-20 Stefan Monnier - - * window.c (window_scroll_pixel_based): Yet another int/Lisp_Object - mixup (YAILOM). - -2006-03-20 Eli Zaretskii - - * emacs.c (main): Fix last change. - -2006-03-20 Kenichi Handa - - * fileio.c (Fwrite_region): Set visit_file to Qnil before GCPRO it. - - * keymap.c (map_keymap): Set tail to Qnil before GCPRO it. - - * xfns.c (xg_set_icon): Remove unnecessary GCPRO. - - * xterm.c (x_term_init): Remove unnecessary GCPRO. - -2006-03-19 Kim F. Storm - - * xdisp.c (set_cursor_from_row): Fix cursor property on overlay string, - so it doesn't associate overlay string with following glyph by default. - Allow integer property value to specify explicit number of buffer - positions associate with overlay string. - -2006-03-18 Chong Yidong - - * xterm.c (x_display_ok): Fix minor bug and compilation warnings. - -2006-03-18 Nozomu Ando - - * m/pmax.h (BROKEN_NOCOMBRELOC) [__NetBSD__]: Define. - (LIB_STANDARD, START_FILES) [__NetBSD__]: Don't define. - (START_FILES, RUN_TIME_REMAP, UNEXEC) [__NetBSD__, __OpenBSD__]: - Don't redefine. - - * m/mips.h: Don't use unexmips on NetBSD. - (LIBS_MACHINE): Move definition lower, so it doesn't use - LD_SWITCH_MACHINE, START_FILES, LIB_STANDARD, LIBS_TERMCAP, - C_SWITCH_MACHINE, and C_DEBUG_SWITCH. - - * unexelf.c [BROKEN_NOCOMBRELOC]: Include assert.h. - (unexec) [BROKEN_NOCOMBRELOC]: Handle platforms whose nocombreloc - option is broken (e.g., MIPS/NetBSD). - -2006-03-18 Craig McDaniel (tiny change) - - * sheap.c (STATIC_HEAP_SIZE): Enlarge STATIC_HEAP_SIZE to 12MB. - Remove the HAVE_X_WINDOWS conditional. - -2006-03-18 Vivek Dasmohapatra (tiny change) - - * emacs.c (main): If user asks for a display that is unavailable, - simulate -nw. - - * xterm.c (x_display_ok): New function. - - * xterm.h: Add prototype for x_display_ok. - -2006-03-18 Eli Zaretskii - - * w32fns.c (Fw32_select_font): Doc fix. - -2006-03-16 YAMAMOTO Mitsuharu - - * image.c [MAC_OS] (XPutPixel, XGetPixel) - [!WORDS_BIG_ENDIAN && USE_CG_DRAWING]: Don't use specialized - version when depth is 32. - (mac_create_cg_image_from_image) [MAC_OS && USE_CG_DRAWING]: - New function. - (prepare_image_for_display) [MAC_OS && USE_CG_DRAWING]: Use it. - (x_clear_image_1) [MAC_OS && USE_CG_DRAWING]: Release CGImage. - - * macterm.c (XCreatePixmap) [!WORDS_BIG_ENDIAN && USE_CG_DRAWING]: - Create GWorld in ARGB pixel format. - (mac_copy_area, mac_copy_area_with_mask) [USE_CG_DRAWING]: - Remove functions. - (x_draw_image_foreground) [USE_CG_DRAWING]: Use mac_draw_cg_image - instead of mac_copy_area/mac_copy_area_with_mask. - -2006-03-15 Kim F. Storm - - * xdisp.c (extend_face_to_end_of_line): Always add space glyph to - empty row. Fixes memory corruption revealed by 2006-03-02 change. - (display_tool_bar_line): Skip empty tool-bar line if HEIGHT < 0. - (tool_bar_lines_needed): Fix tool-bar display in case the tool-bar - width is exactly the same as the window width. Don't count a final - empty tool-bar line (pass HEIGHT = -1 to display_tool_bar_line). - -2006-03-15 Juanma Barranquero - - * fringe.c (w32_init_fringe, w32_reset_fringes): Revert to being - conditional on HAVE_NTGUI, not WINDOWS_NT. - -2006-03-15 YAMAMOTO Mitsuharu - - * dispextern.h (mac_init_fringe) [MAC_OS]: Add prototype. - - * fringe.c (mac_init_fringe) [MAC_OS]: New function. - - * macterm.c (mac_initialize) [USE_CG_DRAWING]: Call mac_init_fringe. - (max_fringe_bmp, fringe_bmp) [USE_CG_DRAWING]: New variables. - (mac_define_fringe_bitmap, mac_destroy_fringe_bitmap) - (mac_draw_cg_image) [USE_CG_DRAWING]: New functions. - (mac_draw_bitmap) [USE_CG_DRAWING]: Remove function. - (x_draw_fringe_bitmap) [USE_CG_DRAWING]: Use mac_draw_cg_image - instead of mac_draw_bitmap. - (x_redisplay_interface) [USE_CG_DRAWING]: Set handlers for - define_fringe_bitmap and destroy_fringe_bitmap. - -2006-03-14 Chong Yidong - - * xterm.c (x_uncatch_errors): Block input for entire function. - -2006-03-12 Jason Rumney - - * w32fns.c (Fx_create_frame): Remove call to - Qface_set_after_frame_default (from xfns.c 2003-05-26). - - * w32menu.c (Fx_popup_menu): Call w32_free_menu_strings when - finished with the menu. - - * w32term.c: Sync 2005-10-24 xterm.c changes. - (last_mouse_glyph_frame): New var. - (note_mouse_movement): Say mouse moved if current frame differs - from last_mouse_glyph_frame, and update last_mouse_glyph_frame. - (w32_mouse_position): Set last_mouse_glyph_frame. - Remove OLD_REDISPLAY_CODE block. - -2006-03-12 YAMAMOTO Mitsuharu - - * macgui.h [USE_ATSUI && MAC_OSX]: Define USE_CG_TEXT_DRAWING to 1. - - * macterm.h (struct mac_output) [USE_CG_DRAWING]: New member cg_context. - (mac_prepare_for_quickdraw) [USE_CG_DRAWING]: Add prototype. - - * mac.c (sys_select) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw. - - * macfns.c (x_create_tip_frame): Apply 2006-03-11 change for xfns.c. - - * macterm.c (mac_draw_rectangle, x_draw_glyph_string_foreground) - (x_draw_composite_glyph_string_foreground) - (x_draw_image_foreground): Undo previous changes. - (x_draw_hollow_cursor): Likewise. Subtract 1 from the last - argument of mac_draw_rectangle. - (CG_SET_FILL_COLOR, CG_SET_STROKE_COLOR): New macros. - (mac_draw_string_common, mac_draw_image_string_cg): Use them. - (FRAME_CG_CONTEXT) [USE_CG_DRAWING]: New macro. - (mac_begin_cg_clip, mac_end_cg_clip, mac_prepare_for_quickdraw) - [USE_CG_DRAWING]: New functions. - (mac_draw_line, mac_erase_rectangle, mac_clear_window) - (mac_fill_rectangle, mac_draw_rectangle, mac_draw_string_common) - (mac_draw_image_string_cg) [USE_CG_DRAWING]: Add Quartz 2D drawing part. - (mac_draw_bitmap, mac_invert_rectangle, mac_draw_string_common) - (mac_copy_area, mac_scroll_area, x_scroll_bar_create) - (x_scroll_bar_remove, XTset_vertical_scroll_bar, x_set_window_size) - (XTread_socket) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw. - -2006-03-12 L$,1 q(Brentey K,Aa(Broly - - * xfns.c (x_icon): Disable redundant call to `x_wm_set_window_state'. - -2006-03-11 Jason Rumney - - * w32fns.c (signal_user_input): New function. - (post_character_message): Use it for keyboard input. - (w32_msg_pump): Use it for mouse input. - -2006-03-11 Luc Teirlinck - - * window.c: Rename preserve_y to window_scroll_pixel_based_preserve_y. - (window_scroll_pixel_based, syms_of_window): Adapt to above change. - -2006-03-11 Eli Zaretskii - - * w32fns.c (w32_wnd_proc): Ignore middle and extra button events - if a menu is already active (the menubar_active flag is on). - -2006-03-11 David Ponce - - * xfns.c (x_create_tip_frame): Preserve received parms by copying them. - -2006-03-11 Eli Zaretskii - - * w32term.c: Add x_fully_uncatch_errors and x_catching_errors to - the list of unused display error handling functions. - - * eval.c (unwind_to_catch): Call x_fully_uncatch_errors only if - HAVE_X_WINDOWS. - (internal_condition_case, internal_condition_case_1) - (internal_condition_case_2): Call x_catching_errors only if - HAVE_X_WINDOWS. - - * vm-limit.c [HAVE_GETRLIMIT]: Don't define unconditionally. - Don't include sys/resource.h unless defined. - -2006-03-11 Richard Stallman - - * keymap.c (describe_map): Shorten string to indicate shadowed binding. - - * vm-limit.c (get_lim_data, lim_data, data_space_start): - Move from mem-limits.h. - (enum warnlevel): New data type. - (check_memory_limits): Rewrite the logic about warnings. - Use standard `struct rlimit'. Check return values for nonsense. - (memory_warnings): Always clear lim_data. - - * mem-limits.h (get_lim_data, lim_data, data_space_start): - Move to vm-limit.c. - - * xterm.c (x_fully_uncatch_errors, x_catching_errors): New functions. - - * eval.c (unwind_to_catch): Call x_fully_uncatch_errors. - (internal_condition_case_1, internal_condition_case_2): - Abort if within unclosed x_catch_errors. - -2006-03-11 Romain Francoise - - * process.c (Vprocess_adaptive_read_buffering): Doc fix. - -2006-03-11 Giorgos Keramidas (tiny change) - - * lisp.h: Remove duplicate prototypes. Make the prototype of - getloadavg be conditioned on HAVE_GETLOADAVG being undefined. - -2006-03-11 Eli Zaretskii - - * xterm.c (x_draw_hollow_cursor): Subtract 1 from the last - argument of XDrawRectangle. - - * xdisp.c (get_phys_cursor_geometry): Don't decrease height by 1. - - * macterm.c (mac_draw_rectangle): Don't add 1 to width and height. - (x_draw_glyph_string_foreground) - (x_draw_composite_glyph_string_foreground) - (x_draw_image_foreground): Don't subtract 1 from width and height - arguments to mac_draw_rectangle. - (x_draw_hollow_cursor): Add 1 to w->phys_cursor_width. - -2006-03-10 Kim F. Storm - - * alloc.c (USE_POSIX_MEMALIGN): Fix last change. - -2006-03-09 Stefan Monnier - - * alloc.c (USE_POSIX_MEMALIGN): New macro. - (ABLOCKS_BASE, lisp_align_malloc, lisp_align_free): Use it. - -2006-03-09 Kenichi Handa - - * coding.c (DECODE_EMACS_MULE_COMPOSITION_CHAR): Fix decoding - ASCII component of a composition. - -2006-03-08 Luc Teirlinck - - * window.c: Declare preserve_y as a static global variable. - (window_scroll_pixel_based): No longer declare preserve_y; - it is global now. - (syms_of_window): Set preserve_y to -1. - -2006-03-08 YAMAMOTO Mitsuharu - - * image.c [MAC_OS] (XPutPixel): Set alpha channel bits if pixmap - depth is 32. - [MAC_OS] (XGetPixel): Strip off alpha channel bits if pixmap - depth is 32. - -2006-03-06 Chong Yidong - - * xdisp.c (handle_invisible_prop): Don't update it->position with - a buffer position if we're in a display string. - -2006-03-06 YAMAMOTO Mitsuharu - - * macterm.h (MAC_AQUA_VERTICAL_SCROLL_BAR_WIDTH) - (MAC_AQUA_SMALL_VERTICAL_SCROLL_BAR_WIDTH): New defines. - - * macfns.c (x_default_scroll_bar_color_parameter) - (x_set_scroll_bar_foreground, x_set_scroll_bar_background): - Remove unnecessary prototypes. - (x_set_scroll_bar_default_width): - Use MAC_AQUA_VERTICAL_SCROLL_BAR_WIDTH. - (mac_set_scroll_bar_width): New function. - (mac_frame_parm_handlers): Set it as handler for scroll-bar-width. - - * macterm.c (get_control_part_bounds): Fix type of return value. - (x_set_toolkit_scroll_bar_thumb, x_scroll_bar_create) - (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: Don't show - scroll bar if it is not tall enough to display scroll bar thumb. - [USE_CARBON_EVENTS] (mac_convert_event_ref) - (mac_handle_command_event, mac_handle_window_event) - (mac_handle_mouse_event): Check error code of GetEventParameter. - (convert_fn_keycode) [MAC_OSX]: Likewise. - -2006-03-05 Andreas Schwab - - * xselect.c (x_catch_errors_unwind): Fix missing return value. - -2006-03-02 Kim F. Storm - - * frame.h (struct frame): New member n_tool_bar_rows. - - * xdisp.c: Minimize the unpleasent visual impact of the requirement - that non-toolkit tool-bars must occupy an integral number of screen - lines, by distributing the rows evenly over the tool-bar screen area. - (Vtool_bar_border): New variable. - (syms_of_xdisp): DEFVAR_LISP it. - (display_tool_bar_line): Add HEIGHT arg for desired row height. - Make tool-bar row the desired height. Use default face for border - below tool-bar. - (tool_bar_lines_needed): Add N_ROWS arg. Use it to return number of - actual tool-bar rows. - (redisplay_tool_bar): Calculate f->n_tool_bar_rows initially. - Adjust the height of the tool-bar rows to fill tool-bar screen area. - (redisplay_tool_bar): Calculate f->n_tool_bar_rows when tool-bar area - is resized. - -2006-03-01 Luc Teirlinck - - * search.c (Fregexp_quote): Do not precede a literal `]' with two - backslashes to try to make clear that it has a literal meaning; it - does not do that. (It could close a character alternative - containing a backslash.) - -2006-02-28 Chong Yidong - - * xselect.c (x_catch_errors_unwind): New function. - (x_reply_selection_request): Put x_uncatch_errors in an unwind. - (Fx_get_atom_name): Call x_uncatch_errors earlier. - - * window.c (Qscroll_up, Qscroll_down): New syms. - (window_scroll_pixel_based): Make preserve_y static to avoid - getting point stuck when scrolling 1 line. - -2006-02-26 Chong Yidong - - * xterm.h, xterm.c (x_uncatch_errors): Delete unneccessary argument. - - * xterm.c (x_load_font, x_term_init, XTmouse_position) - (handle_one_xevent, x_connection_closed, x_list_fonts): - No arg for x_uncatch_errors. - - * xselect.c (x_own_selection, x_decline_selection_request) - (x_reply_selection_request, x_get_foreign_selection) - (Fx_get_atom_name, Fx_send_client_event): Likewise. - - * xfns.c (x_real_positions, x_set_mouse_color, Fx_focus_frame): - Likewise. - -2006-02-26 Luc Teirlinck - - * lread.c: Declare Vload_file_rep_suffixes instead of - deleted variable default_suffixes. - (Fget_load_suffixes): New function. - (Fload): Use Fget_load_suffixes and Vload_file_rep_suffixes. - No longer use deleted variable default_suffixes. Update docstring. - (syms_of_lread): defsubr Sget_load_suffixes. - Expand `load-suffixes' docstring. - Delete default_suffixes and DEFVAR_LISP the new variable - `load-file-rep-suffixes'. - - * w32.c (check_windows_init_file): Use Fget_load_suffixes instead - of Vload_suffixes. - - * lisp.h: EXFUN Fget_load_suffixes. - Extern Vload_file_rep_suffixes. - - * eval.c (specpdl_ptr): Remove volatile qualifier for consistency - with lisp.h. - -2006-02-26 Stefan Monnier - - * lisp.h (struct specbinding, specpdl_ptr): Remove the volatile - qualifier which was trying to avoid the bug that was fixed by - yesterday's changes to xterm.c. - -2006-02-25 Chong Yidong - - * xterm.h (x_catch_errors) Return value changed to void. - (x_uncatch_errors): Delete unused count argument. - - * xterm.c (x_catch_errors): Don't use record_unwind_protect, since - it can be called in a signal handler. - (x_catch_errors_unwind): Function deleted. - (x_uncatch_errors): Deallocate last x_error_message_stack struct. - (x_check_errors): Call x_uncatch_errors before signalling error. - - (x_load_font, x_term_init, XTmouse_position, handle_one_xevent) - (x_connection_closed, x_list_fonts): Use new versions of - x_catch_errors and x_uncatch_errors. - - * xselect.c (x_own_selection, x_decline_selection_request) - (x_reply_selection_request, x_get_foreign_selection) - (Fx_get_atom_name, Fx_send_client_event): Likewise. - - * xfns.c (x_real_positions, x_set_mouse_color, Fx_focus_frame): - Likewise. - - * eval.c (record_unwind_protect): Add an assertion. - -2006-02-25 Stefan Monnier - - * process.c (Fmake_network_process): Init the process's mark. - -2006-02-25 Kim F. Storm - - * buffer.c (modify_overlay): Force redisplay if we modify an - overlay at the end of the buffer. - -2006-02-24 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_image_for_pixmap): If x_find_image_file returns - nil the image file has been removed, in that case use the (cached) - pixmap. - -2006-02-24 Kenichi Handa - - * fileio.c (Finsert_file_contents): When a text is replaced - partially, be sure to set point before the inserted characters. - -2006-02-23 Zhang Wei (tiny change) - - * xfns.c (Fx_file_dialog): Return a decoded file name. - -2006-02-23 YAMAMOTO Mitsuharu - - * dispnew.c (update_text_area): Avoid needless redraw of rightmost - glyph whose face is extended to the text area end. - - * macterm.c (x_set_toolkit_scroll_bar_thumb): Don't set control - values if control is not visible or values are not changed. - -2006-02-22 Stefan Monnier - - * window.c (Fwindow_list): Check `window' before doing XWINDOW. - The default `window' should not be "on a different frame". - -2006-02-22 Kim F. Storm - - * indent.c (Fvertical_motion): Only try to move back if we can. - -2006-02-22 YAMAMOTO Mitsuharu - - * macgui.h (struct _XGC) [!MAC_OSX || !USE_ATSUI]: New member - n_clip_rects. - - * macmenu.c (digest_single_submenu): Apply 2006-02-19 change for - xmenu.c. - - * macterm.c (GC_CLIP_REGION): Remove macro. - (mac_begin_clip, mac_end_clip): Take arg GC instead of REGION. - All uses changed. Don't do clipping if n_clip_rects is zero. - (mac_set_clip_rectangles): Use xassert instead of abort. - Set n_clip_rects. Don't make clip_region empty when number of - clipping rectangles is zero. - (mac_reset_clip_rectangles): Set n_clip_rects directly instead of - calling mac_set_clip_rectangles. - (x_set_toolkit_scroll_bar_thumb): Temporarily hide scroll bar to - avoid multiple redraws. - -2006-02-22 Kim F. Storm - - * fringe.c (draw_fringe_bitmap): Fix overlay-arrow display. - -2006-02-21 Kim F. Storm - - * fringe.c (syms_of_fringe) : Doc fix. - -2006-02-21 Zhang Wei - - * xfns.c (Fx_file_dialog, Motif and GTK): DECODE_FILE before - returning it. - -2006-02-21 Giorgos Keramidas (tiny change) - - * fringe.c (horizontal_bar_bits): Rename from `horisontal_bar_bits'. - (standard_bitmaps): Use it. - -2006-02-21 YAMAMOTO Mitsuharu - - * macterm.c (mac_draw_string_common): Remove arg MODE. New arg - BG_WIDTH. All uses changed. Draw background if BG_WIDTH is not zero. - (mac_draw_image_string, mac_draw_image_string_16): New arg BG_WIDTH. - [USE_CG_TEXT_DRAWING] (mac_draw_image_string_cg): Rename from - mac_draw_string_cg. New arg BG_WIDTH. All uses changed. - Draw background if BG_WIDTH is not zero. Use float constants as - divisors instead of double. Use alloca instead of xmalloc/xfree. - (x_draw_glyph_string_background, x_draw_glyph_string_foreground) - [!MAC_OS8 || USE_ATSUI]: Background may be drawn using - mac_draw_image_string* functions. - (XLoadQueryFont) [MAC_OS8 && USE_ATSUI]: Don't adjust heights of - some fonts when srcCopy text transfer mode might be used. - (mac_begin_clip, mac_end_clip): Check if region is empty. - (mac_set_clip_rectangles): When resetting clip region, make it - empty instead of disposing of it. - -2006-02-20 Kim F. Storm - - * Makefile.in: Add fringe.elc to WINDOW_SUPPORT. - - * buffer.h (struct buffer): New members fringe_indicator_alist and - fringe_cursor_alist. - - * buffer.c (init_buffer_once): Set dummy default values for - fringe-indicator-alist and fringe-cursor-alist. The proper - default values are set by pre-loading fringe.el. - (syms_of_buffer): defvar_per_buffer new fringe-indicator-alist and - fringe-cursor-alist buffer-local variables and defvar_lisp_nopro - corresponding default- variables. - - * fringe.c (enum fringe_bitmap_type): Remove. Change all uses - to use `int'. - (NO_FRINGE_BITMAP, UNDEF_FRINGE_BITMAP, MAX_STANDARD_FRINGE_BITMAPS): - Define explicitly. - (Qtruncation, Qcontinuation, Qempty_line, Qtop_bottom) - (Qhollow_small): New variables. - (syms_of_fringe): Intern and staticpro them. - (question_mark_bits): Rename from unknown_bits. - (left_curly_arrow_bits): Rename from continuation_bits. - (right_curly_arrow_bits): Rename from continued_bits. - (left_triangle_bits): Rename from ov_bits. - (right_triangle_bits): Add. - (filled_rectangle_bits): Rename from filled_box_cursor_bits. - (hollow_rectangle_bits): Rename from hollow_box_cursor_bits. - (filled_square_bits): Add. - (vertical_bar_bits): Rename from bar_cursor_bits. - (horizontal_bar_bits): Rename from hbar_cursor_bits. - (empty_line_bits): Rename from zv_bits. - (standard_bitmaps): Update to use new names. - (draw_fringe_bitmap_1): Make static. - (get_logical_cursor_bitmap, get_logical_fringe_bitmap): New functions - to map from logical cursors and indicators to physical bitmaps. - (draw_fringe_bitmap): Resolve fringe cursor and overlay-arrow - bitmaps using symbol names instead of bitmap numbers. - (update_window_fringes): Use logical indicator symbol names - instead of bitmap numbers for logical. Add bitmap cache. - (LEFT_FRINGE, RIGHT_FRINGE): New helper macros. - -2006-02-20 Chong Yidong - - * regex.c: Revert 2006-02-19 change. - (xmalloc, xrealloc): Define these when not linked to Emacs. - Redefine malloc -> xmalloc, realloc -> xrealloc as in Emacs case. - -2006-02-19 Luc Teirlinck - - * regex.c (extend_range_table_work_area): Fix typo. - -2006-02-19 Richard M. Stallman - - * xterm.c (x_catch_errors): Use xmalloc. - - * regex.c (extend_range_table_work_area): Call xmalloc and xrealloc. - (regex_compile): Likewise. - (regcomp): Use xmalloc. - - * gtkutil.c (malloc_widget_value): Use xmalloc. - - * vm-limit.c [HAVE_GETRLIMIT]: Include sys/resource.h. - (check_memory_limits) [HAVE_GETRLIMIT]: Use getrlimit. - - * xmenu.c (digest_single_submenu): When pane_string is empty, - do initialize save_wv. - -2006-02-19 YAMAMOTO Mitsuharu - - * xdisp.c (update_menu_bar) [MAC_OS]: Don't set - w->update_mode_line if arg F is not the selected frame. - - * macmenu.c (popup_activated_flag, submenu_id) - (next_menubar_widget_id): Remove variables. - (initialize_frame_menubar): Remove function. - (pop_down_menu, mac_menu_show): Simplify save value. - (dispose_menus): New function. - (pop_down_menu, fill_menubar): Use it. - (fill_submenu): Remove function. All uses changed to fill_menu. - (add_menu_item): Remove args SUBMENU and FORCE_DISABLE. New arg - POS. Don't call SetMenuItemHierarchicalID here. - (fill_menu): Add arg SUBMENU_ID. Return submenu_id that is to be - used next. Call SetMenuItemHierarchicalID here. - (fill_menubar): Add arg DEEP_P. All uses changed. Clean up menu - objects if needed. Reuse existing menu bar titles if possible. - (set_frame_menubar): Don't clean up menu objects here. - -2006-02-18 Chong Yidong - - * window.c (window_min_size_1): Ensure room for the scroll bar and - fringes. - -2006-02-17 Romain Francoise - - * puresize.h (BASE_PURESIZE): Increment to 1200000. - -2006-02-17 Stefan Monnier - - * alloc.c (Fmake_symbol): Comment-out left-over assert from before the - addition of the BLOCK_INPUTs. - -2006-02-17 Juanma Barranquero - - * window.c (Fset_window_scroll_bars): Doc fix. - -2006-02-17 Kenichi Handa - - * xdisp.c (display_mode_element): Call display_string with correct - PREC arg (which must be a number of characters, not column width). - -2006-02-15 YAMAMOTO Mitsuharu - - * frame.c (x_get_arg): Clear out PARAM in ALIST also on Mac. - - * macfns.c (x_set_menu_bar_lines): Menu bar is always shown on Mac. - - * macmenu.c (set_frame_menubar): Don't call DrawMenuBar. - -2006-02-14 Richard M. Stallman - - * frame.c (x_get_arg): Clear out all occurrences of PARAM in ALIST. - - * m/ibms390x.h: New file. - -2006-02-14 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_detach_callback): Set show-arrow to the - value of x-gtk-whole-detached-tool-bar. - (xg_tool_bar_attach_callback): Set show-arrow to TRUE. - - * xfns.c (syms_of_xfns): New variable: x-gtk-whole-detached-tool-bar. - -2006-02-14 Jan Dj,Ad(Brv - - * xterm.c (x_x_to_emacs_modifiers): Make non-static. - - * xterm.h: Declare x_x_to_emacs_modifiers. - - * gtkutil.c (xg_tool_bar_button_cb): New function. - (xg_tool_bar_callback): Call x_x_to_emacs_modifiers to - store modifiers in event. - (update_frame_tool_bar): Connect button-release-event to - xg_tool_bar_button_cb. - -2006-02-13 Richard M. Stallman - - * .gdbinit (xwindow): Update the code to show the window box. - -2006-02-13 Jan Dj,Ad(Brv - - * xterm.c (note_mouse_movement): Check for NULL FRAME_X_OUTPUT (frame). - -2006-02-12 Richard M. Stallman - - * cmds.c (internal_self_insert): Handle weird auto-fill-function. - -2006-02-11 Eli Zaretskii - - * keyboard.c (Venable_disabled_menus_and_buttons): New variable. - (syms_of_keyboard): DEVFAR_LISP and initialize it. - (parse_tool_bar_item, parse_menu_item): If that variable is - non-nil, don't disable menu items and tool-bar buttons. - -2006-02-11 Juanma Barranquero - - * doc.c (Fsubstitute_command_keys): Doc fix. - -2006-02-10 Thien-Thi Nguyen - - * data.c (Findirect_function): Rewrite docstring. - Fix omission bug: Declare new arg NOERROR. - -2006-02-10 YAMAMOTO Mitsuharu - - * macfns.c (x_set_mouse_color): Don't call rif->define_frame_cursor - if window_desc is not set yet. - (Fx_create_frame): Remove variable x_frame_name. Apply 2005-12-07 - and 2006-01-26 changes for xfns.c. Call x_iconify_frame if frame - parameter `visibility' is `icon'. - (Fx_create_frame, x_create_tip_frame): Use "fontset-standard" - instead of "fontset-mac". - (Fx_focus_frame): New defun. - (syms_of_macfns): Defsubr it. - - * macterm.c (mac_define_frame_cursor): Don't change pointer shape - for unfocused frame. - (x_raise_frame): Call BringToFront instead of SelectWindow. - (x_lower_frame): Use NULL instead of nil. - (x_make_frame_visible): Don't call SelectWindow. - (XTread_socket): Increment handling_signal at the start, decrement - it at the end. - [USE_CG_TEXT_DRAWING] (init_cg_text_anti_aliasing_threshold): Use - CFPreferencesGetAppIntegerValue instead of Fmac_get_preference. - -2006-02-10 Kim F. Storm - - * data.c (Findirect_function): Add NOERROR arg. All callers changed - to pass Qnil for NOERROR. - - * keymap.c (current_minor_maps_error): Remove. - (current_minor_maps): Pass Qt for NOERROR to Findirect_function - instead of using internal_condition_case_1+current_minor_maps_error. - -2006-02-09 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Must note mouse movement even for nil - frames for GTK, in that case it is the tool bar. This is so that - highlighted text get reset properly. - -2006-02-09 Juanma Barranquero - - * alloc.c (Fmake_bool_vector, Fpurecopy): Doc fixes. - -2006-02-08 Jan Dj,Ad(Brv - - * window.c (adjust_window_trailing_edge): Check that shrinking - does not set a window to size zero or less. - -2006-02-08 Miles Bader - - * editfns.c (Fconstrain_to_field): Use Fget_char_property instead - of Fget_text_property (other field functions work with overlays as - well as text-properties). - -2006-02-07 Kenichi Handa - - * dispextern.h (unibyte_display_via_language_environment): Extern it. - - * xterm.h (unibyte_display_via_language_environment): - * w32term.h (unibyte_display_via_language_environment): - * macterm.h (unibyte_display_via_language_environment): Delete extern. - -2006-02-07 Kenichi Handa - - * term.c (append_glyph): Refer to it->char_to_display instead of it->c. - (produce_glyphs): Set the character to print in - it->char_to_display. Handle unibyte-display-via-language-environment. - (produce_stretch_glyph): Set character to print in it->char_to_display. - -2006-02-06 Kenichi Handa - - * lread.c (openp): Initialize encoded_fn before GCPRO it. - -2006-02-05 Ken Raeburn - - * editfns.c (Fconstrain_to_field): Fix int/Lisp_Object mixup. - - * lisp.h (XPNTR) [!NO_UNION_TYPE && !HAVE_SHM && !DATA_SEG_BITS]: - Cast bitfield value to EMACS_INT, to suppress gcc warning. - - * xrdb.c (malloc, realloc, free) [emacs]: Undefine macros before - defining. - -2006-02-03 Kim F. Storm - - * xdisp.c: Cache last merged escape glyph face. - (last_escape_glyph_frame, last_escape_glyph_face_id) - (last_escape_glyph_merged_face_id): New variables. - (get_next_display_element): Use/update them. - (redisplay_internal): Reset them before redisplay. - - * xdisp.c (set_iterator_to_next): Optimize 2004-12-13 fix. - Only recheck faces after displaying ellipsis. - -2006-02-02 Kenichi Handa - - * coding.c (decode_composition_emacs_mule): Fix handling of - incorrect format data. - -2006-01-31 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Use new tool bar function - gtk_toolbar_insert() so we can have tool bars of different sizes. - -2006-01-30 Luc Teirlinck - - * data.c (Flistp): Doc fix. - -2006-01-30 Juanma Barranquero - - * window.c (Fother_window, Fwindow_vscroll, Fset_window_vscroll): - Fix typos in docstrings. - -2006-01-28 Luc Teirlinck - - * data.c (Fcar, Fcdr): Add links to Elisp manual to the docstrings. - -2006-01-27 Chong Yidong - - * alloc.c (make_interval, allocate_string) - (allocate_string_data, make_float, Fcons, allocate_vectorlike) - (Fmake_symbol, allocate_misc): Use BLOCK_INPUT when accessing - global variables. - -2006-01-27 Eli Zaretskii - - * dired.c (DIRENTRY_NONEMPTY) [__CYGWIN__]: Don't use d_ino; use - the MSDOS definition. - -2006-01-26 Richard M. Stallman - - * alloc.c (check_pure_size): Make overflow message an "error message". - - * keymap.c (Fmap_keymap): Doc fix. - - * xfns.c (Fx_create_frame): Put all specified parms into f->param_alist - unless they were cleared out. - - * frame.c (x_get_arg): "Clear out" the parm in ALIST if found there. - -2006-01-26 L$,1 q(Brentey K,Aa(Broly - - * editfns.c (Fconstrain_to_field): Fix behaviour on field boundaries. - (find_field): Set before_field to after_field when pos is at BEGV. - (Fline_beginning_position, Fline_end_position): - Clarify confusing doc string. - - * cmds.c (Fbeginning_of_line, Fend_of_line): Clarify confusing doc - string. - -2006-01-26 Kenichi Handa - - * callproc.c (Fcall_process): GCPRO error_file. Encode infile, - current_dir, and error_file. On reporting an error, decode them - back. - -2006-01-24 Stefan Monnier - - * regex.c (IMMEDIATE_QUIT_CHECK): Use it with SYNC_INPUT as well. - (re_match_2_internal) : - Don't check for quit, since any loop will go through fail or jump. - -2006-01-24 Chong Yidong - - * alloc.c (allocate_string_data): Update next_free immediately, to - reduce risk of memory clobberage. - -2006-01-24 L$,1 q(Brentey K,Aa(Broly - - * xdisp.c (handle_invisible_prop): Set it->position to fix cursor - display when point moves across an ellipsis. If there are - adjacent invisible texts, don't lose the second one's ellipsis. - (x_produce_glyphs): Doc fix. - -2006-01-23 Stefan Monnier - - * xterm.c (x_catch_errors_unwind): Yet another int/Lisp_Object mixup. - -2006-01-23 Kim F. Storm - - * xdisp.c (handle_single_display_spec): Fix handling of space - property on char from string: set *position rather than - it->current.pos. - (produce_stretch_glyph): Reduce width of stretch glyphs so they - don't get wider than the window (unless truncate-lines is on). - -2006-01-22 Stefan Monnier - - * xterm.c: Avoid allocating Lisp data from a signal handler. - (x_error_message): New var to replace x_error_message_string. - (x_error_catcher, x_catch_errors, x_catch_errors_unwind) - (x_check_errors, x_had_errors_p, x_clear_errors, x_error_handler) - (syms_of_xterm): Use it instead of x_error_message_string. - - * alloc.c (lisp_align_free): Add an assertion. - (make_interval, allocate_string, make_float, Fcons, Fmake_symbol) - (allocate_misc): If ENABLE_CHECKING is on, check we're not called from - a signal handler. - -2006-01-21 Luc Teirlinck - - * dired.c (syms_of_dired) : Doc fix. - -2006-01-21 Romain Francoise - - * xdisp.c (get_window_cursor_type): Fix last change. - Update copyright year. - -2006-01-20 Eli Zaretskii - - * lread.c (Fload): Don't leak the file descriptor returned by - openp if we are going to signal an error. - - * w32.c (sys_close): If FD is outside [0..MAXDESC) limits, pass it - directly to _close. - (sys_dup): Protect against new_fd larger than fd_info[] can handle. - (sys_read): If FD is outside [0..MAXDESC) limits, pass it directly - to _read. - (sys_write): If FD is outside [0..MAXDESC) limits, pass it - directly to _write. - - * .gdbinit: Don't dereference Vsystem_type's Lisp_Symbol pointer - if it is NULL. - -2006-01-20 Kenichi Handa - - * puresize.h (BASE_PURESIZE): Increment to 1190000. - -2006-01-19 Chong Yidong - - * xdisp.c (get_window_cursor_type): Use cursor type specified by - the selected buffer for the echo area too. - -2006-01-19 Richard M. Stallman - - * keymap.c (Fmap_keymap): Doc fix. - - * s/irix6-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): New definitions. - - * keyboard.c (echo_char): Don't omit the space between first two - echoed chars. - - * minibuf.c (read_minibuf): Fix previous change. - -2006-01-19 Kenichi Handa - - * xterm.c (handle_one_xevent): Handle keysyms 0x1000000..0x10000FF. - -2006-01-17 Richard M. Stallman - - * frame.c (x_frame_get_and_record_arg): Don't record Qunbound - value in f->param_alist. - -2006-01-15 Andreas Schwab - - * search.c (Freplace_match): Use UPPERCASEP instead of !NOCASEP. - -2006-01-13 Richard M. Stallman - - * Makefile.in: Define new macro WINDOW_SUPPORT. - (lisp): Use it. - (SOME_MACHINE_LISP): Add conditionally loaded files. - -2006-01-12 YAMAMOTO Mitsuharu - - * macterm.c [USE_ATSUI] (atsu_get_text_layout_with_text_ptr) - [MAC_OS_X_VERSION_MAX_ALLOWED >= 1020]: Specify kATSLineUseQDRendering. - (XLoadQueryFont) [USE_ATSUI]: Display diacritical marks in - decomposed form. - - * process.c [HAVE_INTTYPES_H]: Include inttypes.h. - (ifflag_table): Fix typo (IFF_OACTIV -> IFF_OACTIVE). - (Fnetwork_interface_info): Use HAVE_STRUCT_IFREQ_IFR_NETMASK - macro. Also try member ifr_addr when getting netmask. - -2006-01-10 Stefan Monnier - - * fileio.c (Fexpand_file_name): Remove redundant tests. - Fix elimination of // so that it doesn't prevent elimination of an - immediately following /. or /.. - -2006-01-09 Jan Dj,Ad(Brv - - * gtkutil.c (xg_toggle_notify_cb): New function. - (xg_toggle_visibility_cb): Move setting of x_gtk_show_hidden_files to - xg_toggle_notify_cb. - (xg_get_file_with_chooser): Add callback to xg_toggle_notify_cb when - parameter value changes so the toggle button gets updated. - -2006-01-06 Nick Roberts - - * .gdbinit: Fix typo. - -2006-01-05 Eli Zaretskii - - * .gdbinit: Fix last change. - -2006-01-05 Kim F. Storm - - * process.c (Fmake_network_process): Use AF_INET instead of - AF_UNSPEC when AF_INET6 is not defined. - -2006-01-05 YAMAMOTO Mitsuharu - - * mac.c (mac_coerce_file_name_ptr, mac_coerce_file_name_desc): - Don't check that the other type is known file-related one. - - * macfns.c (Fx_server_version): Use gestaltSystemVersionMajor, - gestaltSystemVersionMinor, and gestaltSystemVersionBugFix on Mac - OS X 10.4 and later. - -2006-01-04 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_image_for_pixmap): If the image is from a file, - let GTK do all image processing. Importing Emacs own pixmaps to GTK - looks bad for inactive tool bar items with some Gnome themes. - -2006-01-04 Eli Zaretskii - - * .gdbinit: Avoid a warning message when x_error_quitter is not - compiled in. - - * process.c [WINDOWSNT]: Undef AF_INET6 to disable IPv6 support - for w32. - -2006-01-04 Kim F. Storm - - * process.c: Add IPv6 support. - (Qipv4, Qipv6): New vars. - (syms_of_process): Intern and staticpro them. - (Fformat_network_address): Handle 9 or 8 element vector as IPv6 address - with or without port number. Handle 4 element vector as IPv4 address - without port number. - (conv_sockaddr_to_lisp, get_lisp_to_sockaddr_size) - (conv_lisp_to_sockaddr): Handle IPv6 addresses. - (Fmake_network_process): Use :family 'ipv4 and 'ipv6 to explicitly - request that address family only. :family nil or omitted means to - determine address family from the specified :host and :service. - (ifflag_table): Add missing OpenBSD IFF_ flags. - (server_accept_connection): Handle IPv6 addresses. - (init_process): Add (:family ipv4) and (:family ipv6) sub-features. - - * .gdbinit: Undo last change. Instead, look at Vsystem_type to - determine which breakpoints to set. - -2006-01-03 Stefan Monnier - - * keymap.c (describe_map_compare): Yet another int/Lisp_Object mixup. - - * window.h (Fwindow_minibuffer_p): Declare (for use in minibuf.c). - -2006-01-03 Romain Francoise - - * emacs.c (main): Update copyright year. - -2006-01-03 Ken Raeburn - - * callproc.c (delete_temp_file): Bind file-name-handler-alist to - nil for the call to internal_delete_file. - -2006-01-01 Ken Raeburn - - * callproc.c (Fcall_process_region): Bind file-name-handler-alist - to nil for the call to Fwrite_region. - -2005-12-31 Richard M. Stallman - - * minibuf.c (read_minibuf): Clear out all other minibuffer windows. - -2005-12-31 Eli Zaretskii - - * emacs.c (gdb_pvec_type): A dummy variable for GDB's sake. - -2005-12-30 Luc Teirlinck - - * textprop.c (set_text_properties): Reword description of return value. - Return Qnil if caller wants to remove all text properties from a - string and the string already has no intervals. - -2005-12-30 Stefan Monnier - - * term.c (visible_cursor): New boolean var. - (set_terminal_modes, tty_show_cursor): Use "vs" or "ve" depending on - visible_cursor. - (syms_of_term): Export the new var as "visible-cursor". - -2005-12-30 Eli Zaretskii - - * .gdbinit: Tell users not to worry about GDB warnings that some - functions do not exist in the binary. - -2005-12-30 Andreas Schwab - - * process.c (Fnetwork_interface_info): Correctly terminate the - loop over ifflag_table. - -2005-12-29 Richard M. Stallman - - * lread.c (readevalloop): Test for reading a whole buffer - before actually reading anything. Handle all cases, including - START = END = nil and an already-narrowed buffer. - Convert END to a marker if it is a number. - - * keymap.c (describe_map): Put sparse map elements into an array, - sort them, then output a sequence of identical bindings on one line. - (struct describe_map_elt): New data type. - (describe_map_compare): New function. - -2005-12-28 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_with_chooser): Change message shown - in file chooser. - -2005-12-27 Richard M. Stallman - - * lread.c (readevalloop): Set PT and ZV in the proper buffer, - not the current one. - - * minibuf.c (Fminibuffer_message): Doc fix. - (read_minibuf): Set current_buffer->enable_multibyte_characters sooner. - - * eval.c (do_autoload): Ignore elements of Vautoload_queue - where car is not symbol. - -2005-12-27 Kenichi Handa - - * charset.c (lisp_string_width): Check multibyteness of STRING. - -2005-12-27 Jan Dj,Ad(Brv - - * xfns.c (x_show_hidden_files): New variable. - (syms_of_xfns): Defvar it. - - * gtkutil.c (xg_toggle_visibility_cb): New function. - (xg_get_file_with_chooser): Add toggle hidden files and a message - to the new file chooser dialog. Show hidden files if - x_show_hidden_files is non-zero. - -2005-12-26 Richard M. Stallman - - * keyboard.h: Undo previous change. - - * Makefile.in (undo.o): Undo previous change. - - * undo.c: Undo previous change. - -2005-12-26 Luc Teirlinck - - * keyboard.h: extern last_point_position_window. - - * undo.c: include keyboard.h. - - * Makefile.in (undo.o): Depend on keyboard.h. - -2005-12-26 Richard M. Stallman - - * commands.h (last_point_position_window): Declare. - - * undo.c: Depend on window.h. - (record_point): Save old point from the correct window. - - * keyboard.c (last_point_position_window): New variable. - (command_loop_1): Set last_point_position_window. - (syms_of_keyboard): Init it. - - * Makefile.in (undo.o): Depend on window.h. - -2005-12-25 Richard M. Stallman - - * eval.c (un_autoload): Expect (0 . OFEATURES) in Vautoload_queue - to undo a `provide'. - - * fns.c (Fprovide): Store (0 . OFEATURES) in Vautoload_queue. - -2005-12-25 Giorgos Keramidas - - * m/amdx86-64.h [__FreeBSD__] (START_FILES, LIB_STANDARD): - define for FreeBSD on this platform. - -2005-12-24 YAMAMOTO Mitsuharu - - * macterm.h (TYPE_FILE_NAME): New define. - (posix_pathname_to_fsspec, fsspec_to_posix_pathname): Remove externs. - - * mac.c (posix_pathname_to_fsspec, fsspec_to_posix_pathname): - Add prototypes. Make static. - (mac_aedesc_to_lisp): Initialize err to noErr. - (mac_coerce_file_name_ptr, mac_coerce_file_name_desc) - (init_coercion_handler): New functions. - (Fmac_coerce_ae_data): Use coercion of Apple event data for - translation from/to file names. - - * macterm.c: Don't include sys/param.h. - (init_coercion_handler): Add extern. - [MAC_OS8] (main): Call init_coercion_handler. - (mac_initialize) [MAC_OSX]: Likewise. - [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Use coercion of - Apple event data for translation from/to file names. - - * macfns.c [TARGET_API_MAC_CARBON] (Fx_file_dialog): Likewise. - - * image.c [MAC_OS] (find_image_fsspec): Likewise. - -2005-12-23 Martin Rudalics - - * insdel.c (insert, insert_and_inherit, insert_before_markers) - (insert_before_markers_and_inherit): Make sure FROM is correct - when `after-change-functions' are called. - -2005-12-23 Jan Dj,Ad(Brv - - * xfns.c (Fx_uses_old_gtk_dialog): New function. - - * gtkutil.c (xg_uses_old_file_dialog): New function. - (xg_get_file_name): Use xg_uses_old_file_dialog. - - * gtkutil.h: Declare xg_uses_old_file_dialog. - -2005-12-22 Richard M. Stallman - - * xmenu.c (xmenu_show): Call inhibit_garbage_collection. - -2005-12-22 YAMAMOTO Mitsuharu - - * mac.c (Fmac_coerce_ae_data) [MAC_OSX]: Fix memory leak. - - * macgui.h (XCharStruct): Remove member `valid_p'. - (STORE_XCHARSTRUCT): Don't set member `valid_p'. - (XCharStructRow): New typedef. - (XCHARSTRUCTROW_CHAR_VALID_P, XCHARSTRUCTROW_SET_CHAR_VALID): - New macros. - (struct MacFontStruct): Add member `bounds'. Remove member - `per_char'. All uses for QuichDraw Text fonts are changed to - `bounds.per_char'. ATSUI font bounds are represented as an array - `bounds.rows' of XCharStructRow's, each of which consists of a - bitmap of valid entries and an array of char bounds. - - * macterm.c (mac_per_char_metric): Add prototype. - (x_per_char_metric) [USE_CG_TEXT_DRAWING]: Remove prototype. - (mac_query_char_extents): New function. - (x_per_char_metric): Use it. - (XLoadQueryFont): Likewise. Consolidate min/max_bounds calculations. - [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): - Use mac_per_char_metric instead of x_per_char_metric. - (mac_text_extents_16): New function. - (mac_compute_glyph_string_overhangs): Use it. - (mac_unload_font): Free member `bounds' in struct MacFontStruct. - -2005-12-21 Stefan Monnier - - * minibuf.c (Fdisplay_completion_list): Use XCAR/XCDR. - (Fminibuffer_completion_help): Remove duplicates before display. - -2005-12-21 L$,1 q(Brentey K,Aa(Broly - - * print.c (print_preprocess): Don't lose print_depth levels while - iterating. - -2005-12-21 YAMAMOTO Mitsuharu - - * macmenu.c (Qmac_apple_event): Add extern. - (set_frame_menubar, mac_menu_show keymp_panes) - (single_keymap_panes, list_of_panes, list_of_item) - (single_menu_item): Add argument types to prototypes. - (mac_dialog_show) [HAVE_DIALOGS]: Likewise. - (struct skp): New struct (from xmenu.c). - (single_keymap_panes, single_menu_item, list_of_panes) - (list_of_item): Sync with xmenu.c. - (Fx_popup_menu, Fx_popup_dialog): Likewise. Don't get window from - POSITION if it is mac-apple-event event. - (menubar_selection_callback): Don't use menu_command_in_progress. - (set_frame_menubar): First parse all submenus, then make - widget_value trees from them. Don't allocate any widget_value - objects until we are done with the parsing. - (parse_single_submenu, digest_single_submenu): New functions. - (single_submenu): Function deleted, replaced by those two. - (install_menu_quit_handler) [HAVE_CANCELMENUTRACKING]: Don't create - or dispose of EventHandlerUPP. Install hander to all submenus. - (mac_menu_show) [!HAVE_MULTILINGUAL_MENU]: Use ENCODE_MENU_STRING - instead of ENCODE_SYSTEM. - (free_frame_menubar, fill_submenu, fill_menu): Don't use NULL for - integer values. - [HAVE_DIALOGS] (mac_dialog_show): Sync with xdialog_show (in xmenu.c). - (add_menu_item) [TARGET_API_MAC_CARBON]: Use CFString functions to - format menu item string. Don't use NULL for integer value. - - * macterm.h (struct mac_output): Remove unused member - menu_command_in_progress. - -2005-12-20 Juri Linkov - - * xmenu.c (Fx_popup_menu): Set Vmenu_updating_frame to f if - position is non-nil, else set it to nil. - - * macmenu.c (Fx_popup_menu): Add `else' to set - Vmenu_updating_frame to nil only if position is nil. - - * w32menu.c (Fx_popup_menu): Add `else' to set - Vmenu_updating_frame to nil only if position is nil. - -2005-12-19 YAMAMOTO Mitsuharu - - * keyboard.c (make_lispy_event): Drag-and-drop items are now - stored in member `args' of struct input_event. - - * termhooks.h (struct input_event): Fix comment for DRAG_N_DROP_EVENT. - - * xselect.c (x_handle_dnd_message): Drag-and-drop items are now - stored in member `args' of struct input_event. - - * w32term.c (construct_drag_n_drop): Likewise. - - * macterm.c (mac_do_receive_drag): Likewise. - (x_use_underline_position_properties): Undo 2005-07-13 change. - (syms_of_macterm) : Likewise. - (mac_use_core_graphics, mac_wheel_button_is_mouse_2) - (mac_pass_command_to_system, mac_pass_control_to_system): - New boolean variables renamed from Lisp_Object ones - Vmac_use_core_graphics, Vmac_wheel_button_is_mouse_2, - Vmac_pass_command_to_system, and Vmac_pass_control_to_system. - All uses changed. - (syms_of_macterm): DEFVAR_BOOL them. Remove previous DEFVAR_LISPs. - Make them user options. - (mac_handle_command_event, mac_store_services_event): - Call create_apple_event_from_event_ref without 5th argument. - (backtranslate_modified_keycode): Mask off modifier keys that are - mapped to some Emacs modifiers before passing it to KeyTranslate. - (syms_of_macterm): Make variables `mac-emulate-three-button-mouse', - `mac-wheel-button-is-mouse-2', and `mac-*-modifier' user options. - Fix docstrings of `mac-*-modifier'. - - * mac.c (create_apple_event_from_event_ref): Remove arg `types'. - (do_applescript): Change argument types to Lisp_Object. - All uses changed. - - * macterm.h (create_apple_event_from_event_ref): Remove 5th - argument from extern. - -2005-12-18 Dan Nicolaescu - - * xfns.c (Fx_backspace_delete_keys_p): In case we cannot determine - the answer, return `lambda', not nil. - -2005-12-17 Eli Zaretskii - - * makefile.w32-in (bootstrap-temacs): Warn that parts of commands - enclosed in $(ARGQUOTE)s should not be split between two lines, as - that will break with GNU Make >3.80, when sh.exe is used and - arg quoting is with '..'. - -2005-12-17 Chong Yidong - - * print.c (print_preprocess): Just signal an error if print_depth - is exceeded. - -2005-12-17 Eli Zaretskii - - * .gdbinit: Set a breakpoint on w32_abort. - -2005-12-16 Juri Linkov - - * minibuf.c (Fminibuffer_completion_contents): New Lisp function - created from minibuffer_completion_contents. - (minibuffer_completion_contents): Remove. - (do_completion, Fminibuffer_complete_word) - (Fminibuffer_completion_help): Replace minibuffer_completion_contents - with Fminibuffer_completion_contents. - (syms_of_minibuf): Add Sminibuffer_completion_contents. - (Fdisplay_completion_list): Doc fix. - (display_completion_list_1): Use `nil' for second arg of - `Fdisplay_completion_list'. - -2005-12-14 Jan Dj,Ad(Brv - - * xfns.c (compute_tip_xy): Handle negative dx and dy. - - * w32fns.c (compute_tip_xy): Ditto. - - * macfns.c (compute_tip_xy): Ditto. - -2005-12-14 Chong Yidong - - * print.c (print_preprocess): Go to a deeper print_depth to avoid - print_object loop. - -2005-12-14 Kyotaro HORIGUCHI (tiny change) - - * coding.c (code_convert_region_unwind): GCPRO arg. - -2005-12-12 Jan Dj,Ad(Brv - - * xfns.c (compute_tip_xy): Calculate root_y the same way as root_x, - i.e. dy is offset from top of frame instead of bottom. - - * macfns.c (compute_tip_xy): Ditto. - - * w32fns.c (compute_tip_xy): Ditto. - - * gtkutil.c (SSDATA): New macro to remove compiler warnings. - (xg_get_image_for_pixmap, xg_create_frame_widgets) - (xg_get_file_with_chooser): Use SSDATA instead of SDATA. - - * xmenu.c (menubar_selection_callback): Do nothing if the callback - is for an unselected radio menu item. - -2005-12-11 Richard M. Stallman - - * xdisp.c (syms_of_xdisp) : Doc fix. - - * lisp.h [! NO_UNION_TYPE] (EQ): Use == so args are computed just once. - - * keymap.c (Fset_keymap_parent, store_in_keymap): Use CHECK_IMPURE. - (Flookup_key): Doc fix. - (syms_of_keymap) : Doc fix. - - * fns.c (Frequire): Treat evaluating from a source file - like loading the file. - - * floatfns.c (Flog): Doc fix. - - * fileio.c (Finsert_file_contents): Set Vdeactivate_mark - when we change the buffer. - -2005-12-11 Juri Linkov - - * minibuf.c (display_completion_list_1): - Call `minibuffer_completion_contents' instead of using `nil' as - second arg of `Fdisplay_completion_list'. - (keys_of_minibuf): Unbind SPC in - Vminibuffer_local_filename_completion_map (see also related - change on 2005-12-06). - -2005-12-11 YAMAMOTO Mitsuharu - - * emacs.c (main) [MAC_OS8]: Undo previous change. - - * macselect.c (syms_of_macselect) : - Initialize to nil. Keymap is now created in lisp/term/mac-win.el. - -2005-12-10 YAMAMOTO Mitsuharu - - * Makefile.in (macselect.o): Depend on keymap.h. - - * emacs.c (main) [MAC_OS8]: Call syms_of_keymap before - syms_of_macselect. - - * image.c (init_image) [MAC_OS]: Don't call EnterMovies. - [!HAVE_GIF && MAC_OS] (gif_load): Call EnterMovies. - - * keyboard.c (Qmac_apple_event) [MAC_OS]: New variable. - (syms_of_keyboard) [MAC_OS]: Initialize it. - (make_lispy_event) [MAC_OS]: Build lisp event for MAC_APPLE_EVENT. - - * mac.c (Qundecoded_file_name): New variable. - (syms_of_mac): Initialize it. - (mac_aelist_to_lisp, mac_aedesc_to_lisp): New functions. - [TARGET_API_MAC_CARBON] (create_apple_event_from_event_ref): New fun. - (Fmac_coerce_ae_data): New defun. - (syms_of_mac): Defsubr it. - - * macselect.c: Include keymap.h. - (mac_ready_for_apple_events): New variable. - (Vmac_apple_event_map, Qmac_apple_event_class) - (Qmac_apple_event_id): New variables. - (syms_of_macselect): Initialize them. - (Qundefined, mac_store_apple_event): Add externs. - (struct apple_event_binding): New struct. - (find_event_binding_fun, find_event_binding) - (mac_find_apple_event_spec, defer_apple_events) - (mac_handle_apple_event, init_apple_event_handler) - (copy_scrap_flavor_data): New functions. - (Fmac_process_deferred_apple_events): New defun. - (syms_of_macselect): Defsubr it. - (mac_store_services_event): Fix extern. - (mac_handle_service_event): Don't allocate Lisp objects during - asynchronous input processing. Use mac_store_services_event - instead of mac_store_application_menu_event. - - * macterm.c (Qmac_ready_for_drag_n_drop, Qapplication, Qabout) - (Qpreferences): Remove variables. - (syms_of_macterm) : Don't initialize them. - (Qhicommand) [USE_CARBON_EVENTS]: New variable. - (syms_of_macterm) [USE_CARBON_EVENTS]: Initialize it. - (init_required_apple_events, do_ae_open_application) - (do_ae_print_documents, do_ae_open_documents) - (do_ae_quit_application): Remove functions and prototypes. - (mac_ready_for_apple_events, Qundefined, init_apple_event_handler) - (mac_find_apple_event_spec): Add externs. - (mac_store_application_menu_event): Remove function. - (mac_store_apple_event, mac_make_lispy_event_code): New functions. - (mac_handle_command_event): Create Apple event from Carbon event. - Use mac_store_apple_event instead of mac_store_application_menu_event. - [MAC_OSX] (mac_store_services_event): Likewise. - (struct SelectionRange, SelectionRange): Remove struct and typedef. - [MAC_OS8] (main): Call init_apple_event_handler instead of - init_required_apple_events. - (mac_initialize) [MAC_OSX]: Likewise. - [!USE_CARBON_EVENTS] (mac_wait_next_event): - Use mac_ready_for_apple_events instead of Qmac_ready_for_drag_n_drop. - - * macterm.h (mac_make_lispy_event_code, mac_aedesc_to_lisp): - Add externs. - (create_apple_event_from_event_ref) [TARGET_API_MAC_CARBON]: Likewise. - (Fmac_get_preference): Add EXFUN. - - * termhooks.h (enum event_kind) [MAC_OS]: Add new MAC_APPLE_EVENT - event. - -2005-12-09 Richard M. Stallman - - * xfns.c (Fx_create_frame): Reinstate previous change. - -2005-12-09 Eli Zaretskii - - * w32fns.c (w32_abort) [__GNUC__]: Add instructions for attaching - GDB to the abort dialog. - -2005-12-09 Kyotaro HORIGUCHI (tiny change) - - * indent.c (Fvertical_motion): Force move if starting on - stretch glyph. - -2005-12-08 Richard M. Stallman - - * lread.c (read_escape) <\s>: Don't treat strings specially. - - * xfns.c (Fx_create_frame): Comment out previous change. - -2005-12-07 L$,1 q(Brentey K,Aa(Broly - - * xfns.c (Fx_create_frame): Initialize Vdefault_minibuffer_frame, - when needed. - -2005-12-06 Stefan Monnier - - * minibuf.c (keys_of_minibuf): Just unbind SPC in - Vminibuffer_local_filename_completion_map rather than forcing it - explicitly to the same binding as the global map. - -2005-12-06 Ken Raeburn - - * buffer.c (Fkill_buffer): Avoid dangerous side effects in NILP args. - * bytecode.c (Fbyte_code): Likewise. - * fileio.c (internal_delete_file, Fread_file_name_internal): Likewise. - * minibuf.c (Fminibuffer_complete_and_exit): Likewise. - * undo.c (truncate_undo_list): Likewise. - -2005-12-05 Richard M. Stallman - - * window.c (enlarge_window): Eliminate arg preserve_before. - Assume it is 0. All callers changed. - (Fenlarge_window, Fshrink_window): Likewise. - -2005-12-02 Eli Zaretskii - - * w32fns.c (compute_tip_xy): Put tip above pointer if it doesn't - fit below. - -2005-12-02 Jan Dj,Ad(Brv - - * xterm.h: Add prototype for xg_set_icon_from_xpm_data. - - * xfns.c (x_real_positions): int ign => unsigned int. - (xg_set_icon_from_xpm_data): Remove unused variable err. - (x_set_name_internal, Fx_create_frame, xg_set_icon): Add cast - to remove compiler warning. - (compute_tip_xy): Put tip above pointer if it doesn't fit below. - -2005-12-02 David Reitter - - * minibuf.c (Fcompleting_read): If Vminibuffer_completing_file_name is - non-nil, use the new keymaps Vminibuffer_local_filename_completion_map - and Vminibuffer_local_must_match_filename_map keymaps. - (keys_of_minibuf): Bind SPC in the new file-name completion keymaps. - - * keymap.c (Vminibuffer_local_filename_completion_map) - (Vminibuffer_local_must_match_filename_map): New variables. - (syms_of_keymap): DEFVAR_LISP them, initialize them, and set their - parent to be Vminibuffer_local_completion_map and - Vminibuffer_local_must_match_map, respectively. - - * commands.h (Vminibuffer_local_filename_completion_map) - (Vminibuffer_local_must_match_filename_map): Declare the new keymaps. - -2005-12-01 Stefan Monnier - - * window.c (Fset_window_configuration): Don't accidentally copy the - window-point of one window to another. - -2005-11-30 L$,1 q(Brentey K,Aa(Broly - - * buffer.c (Fpop_to_buffer): Remove superfluous call to record_buffer. - -2005-11-30 Kim F. Storm - - * alloc.c: Include fcntl.h. Define O_WRONLY if not defined. - (valid_lisp_object_p) [!GC_MARK_STACK]: Validate pointer by - passing it to `emacs_write'. - -2005-11-29 Ari Roponen (tiny change) - - * atimer.c (stop_other_atimers): Fix loop to correctly compute `prev'. - -2005-11-27 Richard M. Stallman - - * window.c (adjust_window_trailing_edge): New function. - (Fadjust_window_trailing_edge): New function. - (syms_of_window): Defsubr it. - (window_deletion_count): New variable. - (delete_window): Update window_deletion_count. - -2005-11-26 Eli Zaretskii - - * minibuf.c (syms_of_minibuf): Mention the extension of - `completion-auto-help's meaning by complete.el. - -2005-11-26 Henrik Enberg - - * xfaces.c (Finternal_set_lisp_face_attribute_from_resource): - Handle :inherit property as a lisp expression. - -2005-11-24 YAMAMOTO Mitsuharu - - * macterm.c (Qcontrol): Rename from Qctrl. All uses changed. - (syms_of_macterm): Staticpro Qcontrol, Qmeta, Qalt, Qhyper, - Qsuper, and Qmodifier_value. - (Vmac_control_modifier, Vmac_option_modifier) - (Vmac_command_modifier, Vmac_function_modifier) - (Vmac_emulate_three_button_mouse, Vmac_wheel_button_is_mouse_2) - (Vmac_pass_command_to_system, Vmac_pass_control_to_system) - (Vmac_charset_info_alist): Doc fixes. - -2005-11-23 YAMAMOTO Mitsuharu - - * emacs.c (main) [MAC_OSX]: Change working directory to home - directory if `-psn_*' option is specified. - - * mac.c (DECODE_UTF_8): Remove macro. - [TARGET_API_MAC_CARBON] (cfstring_to_lisp_nodecode): New function - created from cfstring_to_lisp. - [TARGET_API_MAC_CARBON] (cfstring_to_lisp): Use it. - (xrm_get_preference_database) [TARGET_API_MAC_CARBON]: Likewise. - - * macterm.h (cfstring_to_lisp_nodecode) [TARGET_API_MAC_CARBON]: - Add prototype. - -2005-11-21 Ken Raeburn - - * keymap.c (shadow_lookup): Use make_number to pass a number to - Fsubstring. - -2005-11-21 Juri Linkov - - * puresize.h (BASE_PURESIZE): Increment to 1180000. - -2005-11-20 Chong Yidong - - * xfaces.c (Finternal_set_lisp_face_attribute): - Use :ignore-defface for new frame defaults when `unspecified' is - supplied. - (Finternal_get_lisp_face_attribute): Hide :ignore-defface. - (merge_face_vectors): Don't do :ignore-defface overwriting here. - (Finternal_merge_in_global_face): Do it here. - -2005-11-20 Juri Linkov - - * charset.c (invalid_character): Use Lisp-readable syntax - for octal and hex. Reorder decimal, octal and hex values. - -2005-11-20 Nick Roberts - - * lisp.h: Use typedef when Lisp_Object is EMACS_INT so that - this type is recognised when debugging. - -2005-11-19 Andreas Schwab - - * .gdbinit (nextcons, xcdr, xfloat): Update for changes in - Lisp_Cons and Lisp_Float. - -2005-11-19 YAMAMOTO Mitsuharu - - * macterm.c [USE_CG_TEXT_DRAWING] (cg_text_anti_aliasing_threshold): - New variable. - [USE_CG_TEXT_DRAWING] (init_cg_text_anti_aliasing_threshold): New fun. - (init_font_name_table) [USE_ATSUI && USE_CG_TEXT_DRAWING]: Use it. - [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): Don't do antialiasing if - font size is smaller than or equal to cg_text_anti_aliasing_threshold. - -2005-11-17 Chong Yidong - - * image.c (x_create_bitmap_from_xpm_data): Free attributes on fail. - - * xfaces.c (Qignore_defface): New variable. - (syms_of_xfaces): Provide `:ignore-defface'. - (IGNORE_DEFFACE_P): New macro. - (check_lface_attrs, lface_fully_specified_p) - (Finternal_set_lisp_face_attribute) - (Fface_attribute_relative_p, Fmerge_face_attribute): - Handle Qignore_defface as a possible value. - (merge_face_vectors): The merged face is `unspecified' if the - mergee specifies `:ignore-defface'. - -2005-11-16 Stefan Monnier - - * lread.c (readevalloop): Add missing GCPROs. - -2005-11-16 Chong Yidong - - * xfns.c (xg_set_icon_from_xpm_data): New function. - - * gnu.h (gnu_xpm_bits): Rename from gnu_bits. - (gnu_xbm_bits): Rename from gnu_bits (xbm version). - - * xterm.c (x_bitmap_icon): Use the xpm if available. - - * image.c (x_create_bitmap_from_xpm_data): New function. - (x_create_bitmap_from_xpm_data): Initialize XpmAttributes. - -2005-11-15 Luc Teirlinck - - * Makefile.in (lisp, shortlisp): Add rfn-eshadow. - -2005-11-16 Nick Roberts - - * .gdbinit: Make SIGTSTP work like SIGINT normally does. - -2005-11-15 Andreas Schwab - - * lisp.h (struct Lisp_Cons): Make cdr a union. - (XCDR_AS_LVALUE): Adjust. - (struct Lisp_Float): Make data a union. - (XFLOAT_DATA): Adjust. - - * alloc.c (free_float): Make free list chaining aliasing-safe. - (make_float): Likewise. - (free_cons): Likewise. - (Fcons): Likewise. - (check_cons_list): Likewise. - (Fmake_symbol): Likewise. - (allocate_misc): Likewise. - (free_misc): Likewise. - (gc_sweep): Likewise. - -2005-11-15 YAMAMOTO Mitsuharu - - * mac.c (HASHKEY_QUERY_CACHE): New define. - (xrm_create_database, xrm_q_put_resource): Empty query cache. - (xrm_get_resource): Use query cache. - - * image.c (init_image) [MAC_OS]: Don't call EnterMovies if - inhibit_window_system is set. - -2005-11-13 YAMAMOTO Mitsuharu - - * macgui.h (USE_CG_TEXT_DRAWING): New define. - (struct MacFontStruct) [USE_CG_TEXT_DRAWING]: New members cg_font - and cg_glyphs. - - * macterm.c [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): New function. - (x_draw_glyph_string_foreground) [USE_CG_TEXT_DRAWING]: Use it. - (XLoadQueryFont) [USE_CG_TEXT_DRAWING]: Set members cg_font and - cg_glyphs in struct MacFontStruct if synthesized bold or italic is - not used and font substitution never occurs for ASCII and Latin-1 - characters. - (XLoadQueryFont): Maximum and minimum metrics are now those among - ASCII characters. - (XLoadQueryFont) [!MAC_OS8 || USE_ATSUI]: Apply WebKit-style - height adjustments for Courier, Helvetica, and Times. - - * s/darwin.h (LIBS_CARBON) [!HAVE_CARBON]: Remove `-framework Carbon'. - -2005-11-11 David Reitter - - * macterm.c (syms_of_macterm): Remove macCtrlKey, macShiftKey, - macMetaKey, macAltKey. Introduce Qctrl, Qmeta, - Vmac_control_modifier / mac-control-modifier, - Vmac_option_modifier / mac-option-modifier, - Vmac_command_modifier / mac-command-modifier. - (mac_to_emacs_modifiers): Use the new style modifier - variables. Return UInt32 (modifiers are longs now.) - (backtranslate_modified_keycode): New function (refactoring). - (XTread_socket): Use new modifier variables and refactored function. - (mac_determine_quit_char_modifiers): Remove macMetaKey (there is - no dedicated meta key. Not in use anyway.) - (convert_fn_keycode): Map Fn-keys to their original keycode - using a table (english keyboard only). - -2005-11-11 Kim F. Storm - - * .gdbinit (pitx): Fix output format if n_overlay_strings > 0. - Add post hook to "backtrace" to always dump lisp call stack to - increase chance of people sending it to us when reporting bugs. - - * doc.c (Fsubstitute_command_keys): Doc fix. - - * dispextern.h (struct it): New member ignore_overlay_strings_at_pos_p. - - * xdisp.c (handle_stop): Skip overlay string handling if - ignore_overlay_strings_at_pos_p is set. - (set_iterator_to_next): At end of display vector, set - ignore_overlay_strings_at_pos_p if dpvec came from an overlay - string, so we skip those overlay strings at current pos. - -2005-11-10 Lars Hansen - - * fileio.c (file-regular-p): Doc fix. - -2005-11-10 Kim F. Storm - - * alloc.c (valid_lisp_object_p): New function to validate that - an object is really a valid Lisp_Object. - - * lisp.h (valid_lisp_object_p): Add prototype. - - * print.c (safe_debug_print): New function to be called from gdb - to print Lisp objects; use valid_lisp_object_p to avoid crashing - if user tries to print something which is not a Lisp object. - - * .gdbinit (pp, pp1): Use safe_debug_print. - (pv, pv1): New commands to print value of a lisp variable. - -2005-11-10 Nick Roberts - - * .gdbinit (pp1): New user-defined function. - -2005-11-09 YAMAMOTO Mitsuharu - - * image.c [MAC_OSX] (image_load_quartz2d): Fix memory leak. - - * mac.c [MAC_OSX] (init_mac_osx_environment): Reinitialize locale - related variables for dumped executable. - - * unexmacosx.c (unexec_write_zero): New function. - (copy_data_segment): Clear uninitialized local variables in - statically linked libraries. - - * s/darwin.h (C_SWITCH_SYSTEM): Remove -fno-common. - -2005-11-09 Juri Linkov - - * keymap.c (shadow_lookup): If Flookup_key returns a number, - call it again with a sub-key-sequence, and if its return value - is non-nil (sub-key is bound), return nil. - -2005-11-08 Kim F. Storm - - * process.c (Fsignal_process): Recognize signal names with and - without SIG prefix, e.g. SIGHUP and HUP. - - * search.c (search_buffer): No need to initialize base_pat. - -2005-11-04 Stefan Monnier - - * window.c (Fget_lru_window, Fget_largest_window, window_loop): - Don't abuse the `mini' arg. Use the `obj' arg instead. - -2005-11-04 Kim F. Storm - - * xdisp.c (show_mouse_face): Clear mouse face to eol. - -2005-11-03 Dan Nicolaescu - - * Makefile.in (lisp, shortlisp): Add emacs-lisp/syntax.elc, - font-lock.elc and jit-lock.elc. - -2005-11-03 Richard M. Stallman - - * window.c (Fenlarge_window): Rename SIDE to HORIZONTAL. - (enlarge_window): Rename WIDTHFLAG to HORIZ_FLAG. - (CURBEG, CURSIZE): Use HORIZ_FLAG instead of WIDTHFLAG. - - * sheap.c (STATIC_HEAP_SIZE): Increment both definitions. - - * alloc.c (refill_memory_reserve): Move decl out of conditionals. - -2005-11-03 Stefan Monnier - - * window.c (Fdisplay_buffer): Fix last change to not use - a dedicated window. - -2005-11-01 Kim F. Storm - - * fringe.c (update_window_fringes): Undo 2005-10-27 change. - Instead, rotate the bottom angle bitmap 180 degrees to indicate - that the bottom row does not end in a newline. - -2005-11-01 Andreas Schwab - - * unexelf.c (unexec): Handle .plt section in BSS segment. - -2005-11-01 Stefan Monnier - - * lread.c (readevalloop): Yet another int/Lisp_Object mixup (YAILOM). - - * window.c (window_loop): For LRU and LARGEST, let the `mini' argument - determine whether to consider dedicated windows as well. - (Fget_lru_window, Fget_largest_window): Add `dedicated' argument. - (Fdisplay_buffer): Do consider dedicated windows in those cases where - we will split the window rather than reuse it. - Don't try to use windows on other displays. - -2005-10-31 Dan Nicolaescu - - * puresize.h (BASE_PURESIZE): Increment to 1170000. - -2005-10-31 Romain Francoise - - * macfns.c: Update copyright year. - * m/gould.h: Likewise. - -2005-10-30 Kim F. Storm - - * xdisp.c (display_line): Restore it->current_x and call - extend_face_to_end_of_line when last glyph doesn't fit on line. - (set_glyph_string_background_width): Remove specific tests here - to see if face background should extend to end of line. Simplify. - -2005-10-30 Richard M. Stallman - - * alloc.c (BYTES_USED): Use uordblks, not arena. - (bytes_used_when_reconsidered): New variable. - (emacs_blocked_free): Set that. - -2005-10-29 Chong Yidong - - * alloc.c (emacs_blocked_free): Fix typo. - -2005-10-29 Richard M. Stallman - - * data.c (Fmake_variable_frame_local): Doc fix. - - * xdisp.c (handle_fontified_prop): Do nothing if memory full. - (format_mode_line_unwind_data): New arg SAVE_PROPTRANS - controls whether to save and restore mode_line_proptrans_alist. - Callers changed. - (unwind_format_mode_line): Work with that feature. - (redisplay_internal): Don't call prepare_menu_bars if memory full. - (move_elt_to_front): New function. - (display_mode_element): Use move_elt_to_front. - Don't bother munging text props on a null string. - Delete obsolete elts from mode_line_proptrans_alist. - (decode_mode_spec): Test Vmemory_full, not spare_memory. - (Fformat_mode_line): Clear mode_line_proptrans_alist after saving. - - * lisp.h (memory_full_cons_threshold): Declare. - (internal_lisp_condition_case): Declare. - - * alloc.c (syms_of_alloc) : Doc fix. - (Fmemory_full_p): Function deleted. - (syms_of_alloc): Don't defsubr it. - (memory_full_cons_threshold): New variable. - (spare_memory): Now a vector of 7 elts. - (buffer_memory_full): Don't set Vmemory_full here. - (xfree): Don't try to refill here. - (emacs_blocked_free): Record BYTES_USED in local var. - (memory_full): Now free all the slots in spare_memory. - (refill_memory_reserve): Allocate each slot in spare_memory. - (init_alloc_once): Call refill_memory_reserve. - - * keyboard.c (command_loop_1): Don't set Vmemory_full here. - - * eval.c (internal_lisp_condition_case): New function. - (Fcondition_case): Use internal_lisp_condition_case. - (Feval): Test Vmemory_full and memory_full_cons_threshold. - (Ffuncall): Likewise. - - * bytecode.c (Fbyte_code): Use internal_lisp_condition_case. - -2005-10-29 Stefan Monnier - - * syntax.c (Fparse_partial_sexp): Fix docstring. - -2005-10-28 Romain Francoise - - * puresize.h (BASE_PURESIZE): Increment to 1130000. - -2005-10-28 Richard M. Stallman - - * xfns.c (syms_of_xfns): Provide `x' as feature. - - * xdisp.c (decode_mode_spec): Define %e to indicate memory full. - - * editfns.c (Fformat): Don't include string padding - between info[n].start and info[n].end. - - * alloc.c (spare_memory): No longer static. - (xfree) [!SYSTEM_MALLOC]: Call refill_memory_reserve. - - * puresize.h (BASE_PURESIZE): Increment to 1120000. - -2005-10-27 Chong Yidong - - * data.c (Fmake_variable_frame_local): Add clarification to docstring. - - * fringe.c (update_window_fringes): Handle case where buffer ends - with a newline. - -2005-10-27 Kenichi Handa - - * coding.h (DECODE_SYSTEM): Fix argument name; name->str. - -2005-10-24 Kenichi Handa - - * charset.h (charset_mule_unicode_0100_24ff) - (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff): - Extern them. - - * charset.c (charset_mule_unicode_0100_24ff) - (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff): - New variables. - (Fsetup_special_charsets): Initialize them. - - * xterm.c (handle_one_xevent): Handle keysyms directly mapped to - supported Unicode characters. - -2005-10-25 Jason Rumney - - * w32fns.c (w32_to_x_font): Avoid forcing font widths. - -2005-10-25 YAMAMOTO Mitsuharu - - * image.c [MAC_OS] (image_load_qt_1): Check image size. - Use GraphicsImportGetImageDescription instead of - GraphicsImportGetNaturalBounds. - [MAC_OSX] (image_load_quartz2d): Check image size. - [MAC_OS] (xpm_load_image): Likewise. - - * macterm.c (last_mouse_glyph_frame): New var. - (note_mouse_movement): Say mouse moved if current frame differs - from last_mouse_glyph_frame, and update last_mouse_glyph_frame. - (XTmouse_position): Set last_mouse_glyph_frame. - (XTread_socket): Clear last_mouse_glyph_frame on mouse up/down event. - (mac_draw_string_common) [USE_ATSUI && WORDS_BIG_ENDIAN]: Fix typo. - Use EndianU16_BtoN. - (mac_draw_string_common) [MAC_OSX]: Don't use ATSUClearLayoutControls. - (x_per_char_metric, XLoadQueryFont) - [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Use device origins to get - glyph bounds. - (mac_to_x_fontname, mac_do_list_fonts) - (mac_initialize_display_info): Change screen resolutions to 72dpi. - -2005-10-25 Masatake YAMATO - - * minibuf.c (Fdisplay_completion_list): Small doc fix. - -2005-10-24 Kim F. Storm - - * xterm.c: Undo 2005-10-23 change. - (last_mouse_glyph_frame): New var. - (note_mouse_movement): Say mouse moved if current frame differs - from last_mouse_glyph_frame, and update last_mouse_glyph_frame. - (XTmouse_position): Set last_mouse_glyph_frame. - (handle_one_xevent): Clear last_mouse_glyph_frame [instead of - last_mouse_glyph] on mouse up/down event. - - * editfns.c (Fcompare_buffer_substrings): Fix last change. - -2005-10-23 Stefan Monnier - - * editfns.c (Fcompare_buffer_substrings): Handle multibyte chars. - -2005-10-23 Jan Dj,Ad(Brv - - * xterm.c (note_mouse_movement): Always call note_mouse_highlight - so tool tips don't interfere with press on tool bar button. - -2005-10-23 Richard M. Stallman - - * casetab.c (Fset_case_table): Doc fix. - - * lread.c (build_load_history): Replace STREAM arg with ENTIRE. - (readevalloop): Compute ENTIRE properly. - (syms_of_lread) : Doc fix. - -2005-10-21 Richard M. Stallman - - * lread.c (Fload): Simplify gcpro structure. - Gcpro FOUND as well as FILE, but not EFOUND. - Unless preloading, record FOUND instead of FILE in Vload_history. - Rename repeat local FILE to MSG_FILE. - (syms_of_lread) : Doc fix. - -2005-10-21 Kenichi Handa - - * search.c (boyer_moore): Add parens to fix and/or precedence bug. - -2005-10-20 Kim F. Storm - - * buffer.c (clone_per_buffer_values): Remove unused var tem. - (init_buffer): Remove unused vars dotstat, pwdstat. - - * ccl.c (check_ccl_update): Remove unused var vp. - - * fileio.c (auto_save_error): Call SAFE_FREE. - - * fns.c (Fchar_table_range): Remove unused var i. - - * minibuf.c (display_completion_list_1): New wrapper function - for Fdisplay_completion_list. - (Fminibuffer_completion_help): Use it. - - * term.c (encode_terminal_code): Remove unused var src_start. - - * window.c (Fwindow_tree): Remove unused var alist. - - * xterm.c (x_calc_absolute_position): Remove unused vars win_x, win_y. - -2005-10-20 Aubrey Jaffer (tiny change) - - * unexelf.c (unexec): Fix calls to `fatal' with less than 3 arguments. - -2005-10-20 Olli Savia (tiny change) - - * syssignal.h [__Lynx__]: Undef SIGPOLL along with SIGIO. - -2005-10-20 Andreas Schwab - - * minibuf.c (Fdisplay_completion_list): Doc fix. - -2005-10-19 Kim F. Storm - - * image.c (check_image_size): Handle integer Vmax_image_size value - directly as max pixel value. Use default frame size for null frame. - (syms_of_image) : Describe integer value. - -2005-10-19 Romain Francoise - - * emacs.c (main): Update copyright year. - -2005-10-18 Chong Yidong - - * image.c (Vmax_image_size): New variable. - (check_image_size): New function. - (xbm_read_bitmap_data, pbm_load, png_load, jpeg_load, tiff_load) - (gif_load, gs_load): Use it. - (lookup_image): Try loading again if previous load failed. - (xbm_read_bitmap_data): Add a new argument, a pointer to the frame - to display in, NULL if none. - (xbm_load_image, xbm_file_p): Pass xbm_read_bitmap_data the new - argument. - -2005-10-18 Richard M. Stallman - - * search.c (Fstring_match): Doc fix. - -2005-10-18 YAMAMOTO Mitsuharu - - * macterm.c (note_mouse_movement): Use PtInRect. - (XTread_socket): Also ignore mouse motion just before a button - release event. Don't process button release event when mouse is - not grabbed. - -2005-10-16 Masatake YAMATO - - * minibuf.c (Fdisplay_completion_list): Add new optional - argument COMMON_SUBSTRING. Bind `completion-common-substring' - to the optional argument during running `completion-setup-hook'. - -2005-10-16 YAMAMOTO Mitsuharu - - * mac.c [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): - Allow nil as argument. - [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Regard nil - for encoding arguments as UTF-16 in native byte order, no BOM. - - * macfns.c (Fx_create_frame): Add debugging code. - (Fx_show_tip): Set frame pixel width and height. - - * macterm.c (MAC_WINDOW_NORMAL_GC): Remove macro. - (FRAME_NORMAL_GC): New macro. - (mac_draw_line, mac_clear_area, mac_clear_window) - (mac_fill_rectangle, mac_draw_string, mac_draw_string_16) - (mac_draw_image_string, mac_draw_image_string_16): Rename from - XDrawLine, XClearArea, XClearWindow, XFillRectangle, XDrawString, - XDrawString16, XDrawImageString, and XDrawImageString16, respectively. - All uses changed. - (mac_draw_line, mac_erase_rectangle, mac_clear_area) - (mac_clear_window, mac_draw_bitmap, mac_draw_rectangle) - (mac_invert_rectangle, mac_draw_string_common, mac_draw_string) - (mac_draw_string_16, mac_draw_image_string) - (mac_draw_image_string_16, mac_copy_area, mac_copy_area_with_mask) - (mac_scroll_area): Drawing functions now take frame as destination. - All uses changed. - (mac_draw_string_common): Get port height with FRAME_PIXEL_HEIGHT. - (x_draw_fringe_bitmap): Set clipping area in face->gc. - - * macterm.h (mac_clear_area): Add extern. - -2005-10-14 YAMAMOTO Mitsuharu - - * macterm.c (note_mouse_movement, XTread_socket): Apply 2005-10-14 - changes for xterm.c. - - * w32term.c (note_mouse_movement, w32_read_socket): Likewise. - -2005-10-14 Kenichi Handa - - * search.c (search_buffer): Give up BM search on case-fold-search - if one of a target character has a case-equivalence of different - charset even if that target charcter is an ASCII. - - * casefiddle.c (casify_object): Fix for the case that case - conversion change the byte length. - -2005-10-14 Kim F. Storm - - * xterm.c (note_mouse_movement): Return 1 if mouse moved; 0 otherwise. - (handle_one_xevent): Only clear help_echo_string; restore it if - note_mouse_movement didn't record any mouse movement. - - * xdisp.c (pos_visible_p): Convert w->hscroll to pixels before use. - (remember_mouse_glyph): Clear RECT if mouse is over an image glyph. - - * keyboard.c (make_lispy_position): Adjust wx for left margin if - ON_TEXT. - (Fposn_at_x_y): Fix calculation of x coordinate. - (Fposn_at_point): Return nil if point is hscrolled out of view. - -2005-10-13 Andreas Schwab - - * sysdep.c (request_sigio, unrequest_sigio): Do nothing in - non-interactive mode. - -2005-10-12 YAMAMOTO Mitsuharu - - * xterm.c, w32term.c, macterm.c (note_mouse_movement): Undo last change. - -2005-10-12 Kim F. Storm - - * xterm.c (handle_one_xevent): Clear last_mouse_glyph on mouse up/down. - -2005-10-12 Romain Francoise - - * buffer.c (init_buffer): Rename `rc' to `len' for clarity. - -2005-10-12 YAMAMOTO Mitsuharu - - * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to - get end of text rows. Obtain header-line/mode-line rows directly. - - * xterm.c, w32term.c, macterm.c (note_mouse_movement): - Restore help_echo_string if mouse is moved inside last_mouse_glyph. - -2005-10-12 Kim F. Storm - - * xdisp.c (remember_mouse_glyph): New generic version based on - glyph_rect and remember_mouse_glyph from xterm.c enhanced to - properly handle all different window areas. - - * dispextern.h (remember_mouse_glyph): Add prototype. - - * xterm.c (glyph_rect, remember_mouse_glyph): Remove X versions. - (note_mouse_movement, XTmouse_position): Use generic - remember_mouse_glyph, add last_mouse_glyph arg. - - * w32term.c (note_mouse_movement): Fix last_mouse_glyph check. - (glyph_rect, remember_mouse_glyph): Remove w32 specific versions. - (note_mouse_movement, w32_mouse_position): Use generic - remember_mouse_glyph, add last_mouse_glyph arg. - - * macterm.c (note_mouse_movement): Add call to remember_mouse_glyph. - (glyph_rect, remember_mouse_glyph): Remove mac specific versions. - (XTmouse_position): Adapt to use generic remember_mouse_glyph - instead of pixel_to_glyph_coords. - - * window.c (coordinates_in_window): Fix x position for ON_RIGHT_MARGIN. - Fix x position for ON_TEXT when left margin width > 0. - -2005-10-11 Kim F. Storm - - * window.c (coordinates_in_window): Fix y position for ON_SCROLL_BAR. - - * keyboard.c (make_lispy_position): Fix buffer calculations for - mouse click or movement in right fringe and the margins. - -2005-10-11 Juanma Barranquero - - * image.c (fn_jpeg_stdio_src): Don't define it. - (init_jpeg_functions): Don't initialize `fn_jpeg_stdio_src'. - (our_common_init_source): Rename from `our_init_source'. - (our_common_term_source): Rename from `our_term_source'. - (our_memory_fill_input_buffer): Rename from - `our_fill_input_buffer'. - (our_memory_skip_input_data): Rename from `our_skip_input_data'. - (jpeg_memory_src): Use the new names. - (struct jpeg_stdio_mgr): New struct. - (JPEG_STDIO_BUFFER_SIZE): New constant. - (our_stdio_fill_input_buffer, our_stdio_skip_input_data) - (jpeg_file_src): New functions. - (jpeg_load): Use `jpeg_file_src' instead of `fn_jpeg_stdio_src'. - -2005-10-11 YAMAMOTO Mitsuharu - - * macterm.c (PER_CHAR_METRIC): Remove unused macro. - (fm_font_family_alist): New variable. - (syms_of_macterm): Initialize and staticpro it. - (decode_mac_font_name): Replace '-' in family name with '_' if it - occurs just once. Lower family name. - (parse_x_font_name): Rename from x_font_name_to_mac_font_name. - All uses changed. Remove argument MF and code conversion for it. - Add argument SIZE. Rename argument MF_DECODED to FAMILY, and CS - to CHARSET. Parse font size. Lower family name. Return integer - value for status of parsing. - (init_font_name_table) [USE_ATSUI]: Use decode_mac_font_name. - Don't use Fdowncase because family name is already lowered by - decode_mac_font_name. - (init_font_name_table): Always call decode_mac_font_name. - Add pair of family name and its reference to fm_font_family_alist. - (mac_clear_font_name_table): Clear fm_font_family_alist. - (XLoadQueryFont): Move font size parsing part to parse_x_font_name. - Lookup fm_font_family_alist to get font family reference. - (XLoadQueryFont) [USE_ATSUI]: Don't use Fdowncase because family - name is already lowered by parse_x_font_name. - -2005-10-11 Kim F. Storm - - * xterm.c (glyph_rect): Return 0 if position is outside text area. - - * keyboard.c (make_lispy_position): Fix buffer position calculation for - mouse click or movement in fringe. - -2005-10-10 Jason Rumney - - * xterm.c (remember_mouse_glyph): New function. - (note_mouse_movement): Use it to remember the current glyph if changed. - (XTmouse_position): Fix calculation of fake glyph under mouse. - Move code to calculate glyph under mouse into remember_mouse_glyph. - -2005-10-10 Jan Dj,Ad(Brv - - * emacs.c (USAGE3, standard_args): -nb => -nbi. - -2005-10-10 Juanma Barranquero - - * frame.c (Fredirect_frame_focus): Fix typos in docstring. - (next_frame, prev_frame, set_term_frame_name): Make static. - - * window.c (Fwindow_tree): Fix spelling. - -2005-10-09 Romain Francoise - - * window.c (Fwindow_end): Don't try to redisplay if non-interactive. - -2005-10-09 Jan Dj,Ad(Brv - - * emacs.c (standard_args): Remove options -i, -itype, --icon-type. - Add options -nb, --no-bitmap-icon. - - * xfns.c (Fx_create_frame): Make bitmapIcon have default on. - -2005-10-08 YAMAMOTO Mitsuharu - - * macgui.h (MAX_CLIP_RECTS): New define. - (struct _XGC): New member clip_region. - (struct _XGC) [MAC_OSX && USE_ATSUI]: New members n_clip_rects and - clip_rects. - - * macterm.c (GC_CLIP_REGION): New macro. - (saved_port_clip_region): New variable. - (mac_begin_clip, mac_end_clip): New functions. - (XDrawLine, mac_erase_rectangle, mac_draw_bitmap, XFillRectangle) - (mac_draw_rectangle, mac_draw_string_common, mac_copy_area) - (mac_copy_area_with_mask, mac_scroll_area): Use them. - (mac_set_clip_rectangle, mac_reset_clipping): Remove functions. - [USE_ATSUI] (atsu_get_text_layout_with_text_ptr) - [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Specify kATSLineFractDisable. - (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Clip to clipping - rectangles stored in gc. - (XFreeGC): Dispose of clipping region. - (mac_set_clip_rectangles, mac_reset_clip_rectangles): New functions. - (x_draw_fringe_bitmap, x_set_glyph_string_clipping) - (x_draw_relief_rect, x_draw_box_rect, x_draw_stretch_glyph_string) - (x_draw_glyph_string, x_clip_to_row, x_draw_hollow_cursor) - (x_draw_bar_cursor): Use them. - (x_set_glyph_string_clipping): Use get_glyph_string_clip_rects to - get multiple clipping rectangles. - - * macterm.h (mac_term_init): Add types to extern. - (struct mac_output): Remove members mWP and pending_menu_activation. - Put members scroll_bar_foreground_pixel and - scroll_bar_background_pixel in #if 0. - (FRAME_MAC_WINDOW, FRAME_X_WINDOW): Use window_desc. - - * xfaces.c (x_create_gc, x_free_gc) [MAC_OS]: Add BLOCK_INPUT. - Add debugging code. - -2005-10-08 Kim F. Storm - - * window.c (window_tree, Fwindow_tree): Rename fns added 2005-10-04. - -2005-10-07 Kim F. Storm - - * dispnew.c (redraw_overlapped_rows, redraw_overlapping_rows) - [!HAVE_WINDOW_SYSTEM]: Don't declare them... - (update_window) [!HAVE_WINDOW_SYSTEM]: ...and don't call them. - -2005-10-07 YAMAMOTO Mitsuharu - - * dispextern.h (struct glyph_string): Rename member for_overlaps_p - to for_overlaps. Now occupy 3 bits. - (OVERLAPS_PRED, OVERLAPS_SUCC, OVERLAPS_BOTH) - (OVERLAPS_ERASED_CURSOR): New defines. - (struct redisplay_interface): Add new OVERLAPS arg to member - fix_overlapping_area. - (x_fix_overlapping_area): Add new OVERLAPS arg. - (get_glyph_string_clip_rects): Add extern. - - * dispnew.c (redraw_overlapping_rows): - Call rif->fix_overlapping_area with new OVERLAPS arg as redrawn part. - - * xdisp.c: Rename member for_overlaps_p in struct glyph_string to - for_overlaps. - (get_glyph_string_clip_rects): New function created from - get_glyph_string_clip_rect. Set clipping rectangles according to the - value of for_overlaps. Enable to store multiple clipping rectangles. - (get_glyph_string_clip_rect): Use get_glyph_string_clip_rects. - (fill_composite_glyph_string, fill_glyph_string, draw_glyphs): - Rename argument OVERLAPS_P to OVERLAPS. All uses in macros changed. - (x_fix_overlapping_area): Add OVERLAPS arg. Pass it to draw_glyphs. - (draw_phys_cursor_glyph): Set width of erased cursor to use it for - calculating clipping rectangles later. Call x_fix_overlapping_area - with new OVERLAPS arg to draw only erased cursor area. - (expose_overlaps): Call x_fix_overlapping_area with new OVERLAPS arg - to draw overlaps in both preceding and succeeding rows. - - * xterm.c, w32term.c, macterm.c: Rename member for_overlaps_p in - struct glyph_string to for_overlaps. - -2005-10-04 Richard M. Stallman - - * alloc.c (refill_memory_reserve): Conditionalize the body, - not the function's existence. - -2005-10-04 Kim F. Storm - - * window.c (window_split_tree): New function. - (Fwindow_split_tree): New defun. - (syms_of_window): Defsubr it. - -2005-10-04 YAMAMOTO Mitsuharu - - * macterm.c (mac_invert_rectangle): New function. - (XTflash): Use it. - -2005-10-04 Stefan Monnier - - * regex.h (re_char): Don't expose it in the interface. - (re_set_whitespace_regexp): Adjust the arg's type to not use it. - - * regex.c (re_char): Move it back here. - (re_set_whitespace_regexp): Change the arg's type to not use it. - - * keyboard.c (make_lispy_event): If point has moved between down and up - event, make it a drag, not a click, to mirror what - mouse-drag-region expects. - -2005-10-02 Dan Nicolaescu - - * lisp.h (fatal): Undo previous change. - * term.c (fatal): Undo previous change. - -2005-10-01 Richard M. Stallman - - * xfaces.c (face_color_gray_p): Colors close to black count as gray. - -2005-10-01 Kim F. Storm - - * xdisp.c (try_window): Skip scroll-margin check if ZV is visible. - -2005-10-01 YAMAMOTO Mitsuharu - - * keyboard.c (init_keyboard) [MAC_OSX]: Don't install SIGINT handler. - - * macfns.c (start_hourglass): Apply 2005-05-07 change for xfns.c. - (x_create_tip_frame) [GLYPH_DEBUG]: Uncomment debugging code. - (Fx_create_frame, x_create_tip_frame) [USE_ATSUI]: - Try ATSUI-compatible 12pt Monaco font first. - - * macgui.h (struct _XCharStruct): New member valid_p. - (STORE_XCHARSTRUCT): Set valid_p. - (struct MacFontStruct) [USE_ATSUI]: New member mac_style. - - * macterm.c (mac_draw_string_common, x_per_char_metric) - (mac_compute_glyph_string_overhangs, init_font_name_table) - (XLoadQueryFont, mac_unload_font) [USE_ATSUI]: Add ATSUI support. - (atsu_get_text_layout_with_text_ptr) [USE_ATSUI]: New function. - (x_draw_glyph_string_background) - (x_draw_glyph_string_foreground) [MAC_OS8 && USE_ATSUI]: Don't use - XDrawImageString. Always draw background and foreground separately. - (x_draw_glyph_string_foreground) [USE_ATSUI]: Don't use 8-bit - functions for one-byte chars when using ATSUI-compatible fonts. - (atsu_font_id_hash) [USE_ATSUI]: New variable. - (syms_of_macterm) [USE_ATSUI]: Initialize and staticpro it. - (XLoadQueryFont): Set min_byte1, max_byte1, min_char_or_byte2, and - max_char_or_byte2 more in detail. - (quit_char_comp, mac_check_for_quit_char) [MAC_OSX]: Remove functions. - -2005-09-30 Dan Nicolaescu - - * image.c (slurp_file, xbm_read_bitmap_data): Cast to the correct type. - * xterm.c (handle_one_xevent, handle_one_xevent): Likewise. - - * unexelf.c (fatal): Fix prototype. - - * term.c (fatal): Implement using varargs. - - * regex.c (re_char): Move typedef ... - * regex.h (re_char): ... here. - (re_iswctype, re_wctype, re_set_whitespace_regexp): New prototypes. - - * emacs.c (malloc_set_state): Fix return type. - (endif): Fix type. - - * lisp.h (fatal): Add argument types. - - * dispextern.h (fatal): Delete prototype. - - * systime.h (make_time): Prototype moved from ... - * editfns.c (make_time): ... here. - - * editfns.c: Move systime.h include after lisp.h. - * dired.c: - * xsmfns.c: - * process.c: Likewise. - - * alloc.c (old_malloc_hook, old_realloc_hook, old_realloc_hook): - Add parameter types. - (__malloc_hook, __realloc_hook, __free_hook): Fix prototypes. - (emacs_blocked_free): Change definition to match __free_hook. - (emacs_blocked_malloc): Change definition to match __malloc_hook. - (emacs_blocked_realloc): Change definition to match __realloc_hook. - -2005-09-30 Romain Francoise - - * minibuf.c (Fread_buffer): Follow convention for reading from the - minibuffer with a default value. Doc fix. - -2005-09-29 Juri Linkov - - * editfns.c (Fmessage, Fmessage_box, Fmessage_or_box): - Rename argument name `string' to `format-string'. - (Fformat): Doc fix. - -2005-09-28 Kim F. Storm - - * image.c (gif_load): Fix size of allocated image buffer - for images where a sub-image may be larger than the image's - total height/width specifications. - -2005-09-28 YAMAMOTO Mitsuharu - - * macgui.h (struct _XCharStruct): Each member now takes short value. - -2005-09-27 Dan Nicolaescu - - * xfaces.c (lookup_derived_face): Add parameter type. - - * xdisp.c (cursor_row_fully_visible_p): Add parameter type. - - * marker.c (verify_bytepos): Add parameter type. - - * process.c (get_operating_system_release): Move prototype ... - - * systime.h (get_operating_system_release): ... here. - - * xterm.c (handle_one_xevent): Refer to union field to match the - type required by the function definition. - (set_vertical_scroll_bar): Move prototype ... - - * xterm.h: ... here. - - * fns.c (internal_equal, seed_random): Fix prototypes. - (internal_equal): Add missing parameter. - -2005-09-25 Richard M. Stallman - - * keyboard.c (update_menu_bindings): Variable deleted. - (syms_of_keyboard): Don't defvar it. - (parse_menu_item): Don't test it. - -2005-09-23 Richard M. Stallman - - * editfns.c (Fformat): Explicitly test for end of format string - and don't use `index'. - -2005-09-23 Dan Nicolaescu - - * s/aix4-2.h (BROKEN_GET_CURRENT_DIR_NAME): - Define BROKEN_GET_CURRENT_DIR_NAME. - - * sysdep.c (get_current_dir_name): Also define if - BROKEN_GET_CURRENT_DIR_NAME. - - * m/ibmrs6000.h: Test for USG5, not USG5_4. - -2005-09-22 Kim F. Storm - - * xdisp.c (message_dolog): Add warning about GC and Lisp strings. - (message2): Fix commentary. Ok to use alloca'ed memory. - Still not ok to use Lisp string data (because of GC). - (set_message): Add comment why GC cannot happen. - -2005-09-22 YAMAMOTO Mitsuharu - - * macterm.c (xlfdpat_block_match_1): Fix assertion. - (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't add style - variants for a scalable font multiple times. - -2005-09-21 YAMAMOTO Mitsuharu - - * process.c (create_process) [RTU || UNIPLUS || DONT_REOPEN_PTY]: - Setup slave tty options before forking. - -2005-09-20 Jan Dj,Ad(Brv - - * gtkutil.c (xg_set_geometry): Do a gtk_window_move if program - positions have been set for the frame (as is done for frames in - special-display-buffer-names). - -2005-09-19 Kim F. Storm - - * editfns.c (Fformat): Don't scan past end of format string that - ends in %. Reported by Johan Bockg,Ae(Brd. - -2005-09-18 Andreas Schwab - - * window.h (struct window): Remove height_fixed_p, no longer set. - - * window.c (make_window): Don't initialize height_fixed_p. - (window_fixed_size_p): Don't use it. - -2005-09-18 John Paul Wallington - - * data.c (Fdefalias): Signal an error if SYMBOL is not a symbol. - -2005-09-18 YAMAMOTO Mitsuharu - - * Makefile.in (SOME_MACHINE_OBJECTS): Undo previous change. - - * macfns.c (image_cache_refcount, dpyinfo_refcount) [GLYPH_DEBUG]: - New variables. - [TARGET_API_MAC_CARBON] (Fx_file_dialog): Don't allow multiple - file selection. - - * sysdep.c [MAC_OS8]: Don't include stdlib.h. Include sys/param.h. - -2005-09-17 Eli Zaretskii - - * Makefile.in (XMENU_OBJ) [!HAVE_CARBON]: Reinstate variable. - (obj): Use XMENU_OBJ, not a literal xmenu.o. - -2005-09-16 Romain Francoise - - * fileio.c (syms_of_fileio) : Doc fix. - -2005-09-15 Richard M. Stallman - - * xdisp.c (overlay_arrow_at_row): Add HAVE_WINDOW_SYSTEM conditional. - (display_mode_element): Instead of `lisp_string' and `this', - record `offset' and increment that. - `last_offset' replaces `last'. - - * Makefile.in (XMENU_OBJ): Variable deleted. - (obj): Use xmenu.o unconditionally. - (SOME_MACHINE_OBJECTS): Delete xmenu.o. - - * emacs.c (main): Don't conditionalize syms_of_xmenu on HAVE_XMENU. - -2005-09-15 Kim F. Storm - - * xdisp.c (move_it_vertically): Don't try to fetch byte BEGV-1. - (reseat_at_next_visible_line_start): Likewise (in xassert). - -2005-09-14 Romain Francoise - - * fileio.c (write_region_inhibit_fsync): New variable. - (Fwrite_region): Use it to skip call to fsync. - (syms_of_fileio): Initialize it. - -2005-09-14 Kenichi Handa - - * coding.c (code_convert_region_unwind): Argument format changed. - (run_pre_post_conversion_on_str): If pre-write-conversion function - changed the current buffer, delete the new buffer. - (run_pre_write_conversin_on_c_str): Likewise. - - * fileio.c (Fexpand_file_name): Check multibyteness of - default_directory. - -2005-09-13 Kenichi Handa - - * composite.c (compose_chars_in_text): Delete it. - - * composite.h (compose_chars_in_text): Delete extern. - -2005-09-13 Kim F. Storm - - * print.c (print_error_message): Fix last change. - -2005-09-12 Kim F. Storm - - * composite.c (compose_chars_in_text): Fix setup of `pend'. - Unconditionally reload `ptr' and `pend' after eval. - - * xdisp.c (message3): Pass copy of lisp string to message_dolog. - - * print.c (print_error_message): Pass copy of caller name to - message_dolog. - - * fileio.c (auto_save_error): Pass copy of lisp string to message2. - -2005-09-12 Kenichi Handa - - * xdisp.c (display_mode_element): Be sure to make variables THIS - and LISP_STRING point into a string data of ELT. - -2005-09-12 Kim F. Storm - - * editfns.c (Ftranslate_region_internal): Reload `tt' after - signal_after_change that may have GC'ed. - (Fmessage, Fmessage_box, Fmessage_or_box): Doc fix. - - * keymap.c (Fdescribe_buffer_bindings): Reload `translate' - after insert while runs signal_after_change. - - * minibuf.c (Fminibuffer_complete_word): Move `completion_string' - declaration to where it is used. - - * w32.c (check_windows_init_file): Fix allocation of error buffer. - - * xfns.c (x_encode_text): Declare static. Add FREEP arg. - (x_set_name_internal): Call x_encode_text with new FREEP arg to - know if xfree is needed instead of guessing. - - * xterm.h (x_encode_text): Remove prototype. - -2005-09-11 Chris Prince (tiny change) - - * w32term.c (x_bitmap_icon): Load small icons too. - -2005-09-10 Romain Francoise - - * buffer.c (init_buffer): Grow buffer to add directory separator - and terminal zero. Fix typos. - -2005-09-10 Eli Zaretskii - - * buffer.c (init_buffer): Fix error message for failed call to - get_current_dir_name. - (get_current_dir_name): Remove prototype. - - * xsmfns.c (get_current_dir_name): Remove prototype. - - * lisp.h (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]: - Add prototype. - - * sysdep.c [WINDOWSNT]: Add prototype for getwd. - Don't #undef NULL after including blockinput.h. - - * config.in: Regenerated. - -2005-09-10 Giuseppe Scrivano - - Remove the MAXPATHLEN limitations: - - * sysdep.c (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]: - New function. - - * buffer.c (init_buffer): Use it. - - * xsmfns.c (smc_save_yourself_CB): Ditto. - -2005-09-09 Kim F. Storm - - * doc.c (Fsubstitute_command_keys): Lookup key binding for - commands that are remapped from some other command. - - * xdisp.c (try_window_reusing_current_matrix): Clear mode_line_p - flag in disabled rows below the window. - - * frame.h (struct frame): New member updated_p. - - * xdisp.c (redisplay_internal): Mark updated frames in new updated_p - member. Remove local `updated' array and associated variables. - -2005-09-07 Kim F. Storm - - * xdisp.c (handle_display_prop): Respect overlay window property. - - * xdisp.c (try_window): Remove superfluous cursor_height calculation. - Fixes crash reported by YAMAMOTO Mitsuharu. - -2005-09-06 YAMAMOTO Mitsuharu - - * macterm.c (struct xlfdpat_block, struct xlfdpat): New structs. - (xlfdpat_destroy, xlfdpat_create, xlfdpat_exact_p) - (xlfdpat_block_match_1, xlfdpat_match): New functions. - (xlfdpat_block_match): New macro. - (mac_to_x_fontname): Don't use tolower for non-ASCII characters. - (x_font_name_to_mac_font_name): Set coding.dst_multibyte to 0. - (add_font_name_table_entry): Increase font_name_table_size more - rapidly. - (mac_c_string_match): Remove function. - (mac_do_list_fonts): Use XLFD pattern match instead of regular - expression match. - - * xfaces.c (xstrlwr): Don't use tolower for non-ASCII characters. - -2005-09-03 Richard M. Stallman - - * xdisp.c (redisplay_internal): Make UPDATED as long as needed. - (move_it_in_display_line_to): Stop after last char on line even - on a windowing terminal, if that's the specified stop position. - - * fns.c (Fsort): Doc fix. - - * editfns.c (Fpropertize): Don't insist that properties be symbols. - -2005-09-02 Stefan Monnier - - * dired.c (directory_files_internal_unwind, directory_files_internal) - (file_name_completion): Use a Save_Value object rather than a cons of - two 16bit ints to store the DIR*. - (directory_files_internal, file_name_completion): Handle both EINTR and - EAGAIN consistently after `readdir'. - -2005-09-01 Stefan Monnier - - * intervals.c (update_interval): Add position info in error. - - * dispnew.c (window_to_frame_hpos, update_window): - Avoid gcc warning about unused variable `f'. - -2005-08-31 Jason Rumney - - * w32menu.c (add_menu_item): If unicode_append_menu returns an - error, revert to using AppendMenu. - -2005-08-31 YAMAMOTO Mitsuharu - - * image.c (PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. - All uses changed. - [MAC_OS] (XPutPixel, XGetPixel): Add efficient versions for common - cases. - (x_create_x_image_and_pixmap) [MAC_OS]: Don't call x_destroy_x_image. - [MAC_OS] (find_image_fsspec) [!MAC_OSX]: Don't use FSRef. - Use posix_pathname_to_fsspec. - [MAC_OS] (xpm_load_image): Fill in background_transparent field - while we have mask. - - * macgui.h [!TARGET_API_MAC_CARBON] (GetPixDepth): New define. - - * macterm.h (PIX_MASK_DRAW, PIX_MASK_RETAIN): Move defines to image.c. - -2005-08-29 Stefan Monnier - - * syntax.c (update_syntax_table): Properly reproduce the special +1 - setting of e_property at the end of the buffer when bumping into the - INTERVALS_AT_ONCE limit. - -2005-08-27 Eli Zaretskii - - * emacs.c (USAGE1): Fix the description of the -Q option. - -2005-08-26 Stefan Monnier - - * xdisp.c (pos_visible_p): Yet another int/Lisp_Object mixup (YAILOM). - -2005-08-26 Kim F. Storm - - * xdisp.c (resize_mini_window): Fix 2005-08-20 change. - Don't move PT to new window start. - -2005-08-25 YAMAMOTO Mitsuharu - - * keyboard.c (kbd_buffer_get_event) [MAC_OS]: Make events for - ICONIFY/DEICONIFY_EVENT. - - * macterm.c (mac_copy_area, mac_copy_area_with_mask): - Restore background color. - (mac_handle_visibility_change): New function. - (x_make_frame_invisible, x_iconify_frame) - (XTread_socket) [!USE_CARBON_EVENTS]: Use it. - [USE_CARBON_EVENTS] (mac_handle_window_event) - (install_window_handler): Handle visibility change events. - (x_make_frame_visible): Don't reposition window if it is iconified - or asked for visible before. Select and uncollapse window when it - is made visible. - (x_make_frame_invisible): Don't reset x_highlight_frame. - (x_iconify_frame): Likewise. Make invisible frame visible before - it is iconified. - (read_socket_inev): Move variable outside #if USE_CARBON_EVENTS. - (do_window_update): Don't change visibility of invisible frame. - -2005-08-22 Juri Linkov - - * term.c (turn_on_face): Check for TS_set_foreground and - TS_set_background depending on standout_mode. Simplify. - -2005-08-21 Kim F. Storm - - * fringe.c (update_window_fringes): Only put TOP and BOTTOM - bitmaps on fully visible rows. - - * fringe.c (update_window_fringes): Replace FORCE_P arg with - KEEP_CURRENT_P arg; if non-zero, don't update current row fringes, - and return 0. - - * xdisp.c (redisplay_window): Call update_window_fringes with - KEEP_CURRENT_P non-0 if we are going to refresh fringes later. - -2005-08-20 Richard M. Stallman - - * xdisp.c (display_echo_area_1): Get display start pos from w->start. - (resize_mini_window): Set w->start, and PT, so as to display the tail - end of the buffer, if it doesn't all fit. - -2005-08-18 Kim F. Storm - - * xdisp.c (calc_pixel_width_or_height): Use actual display - resolution when available instead of Vdisplay_pixels_per_inch. - -2005-08-17 Kim F. Storm - - * xdisp.c (pos_visible_p): Adjust X value if window is hscrolled. - - * dispnew.c (buffer_posn_from_coords): Check that target row is - within matrix. - -2005-08-16 Jan Dj,Ad(Brv - - * xterm.c (x_wm_set_icon_pixmap): Move GTK specific code to - xg_set_frame_icon and call it. - - * gtkutil.c (xg_set_frame_icon): New function. - - * gtkutil.h (xg_set_frame_icon): Declare it. - -2005-08-16 Kim F. Storm - - * dispnew.c (increment_row_positions): Skip non-enabled rows. - - * window.c (SAVED_WINDOW_VECTOR_SIZE): Remove dangerous define. - (Fcurrent_window_configuration): Use VECSIZE macro instead. - -2005-08-15 Richard M. Stallman - - * xdisp.c (message3_nolog): Clear echo_message_buffer. - -2005-08-15 Kim F. Storm - - * lisp.h (QUIT) [!SYNC_INPUT]: Throw t to Vthrow_on_input. - - * process.c (deactivate_process, status_notify, read_process_output) - (update_status, status_convert, decode_status, allocate_pty) - (make_process, remove_process, list_processes_1) - (create_process_1, unwind_request_sigio, read_process_output) - (send_process, keyboard_bit_set): Declare static. - (Fdelete_process): Simplify. Pass process to status_notify, so we - don't try to read output from it. - (status_notify): New arg deleting_process--don't try to read - output from that process. - - * lisp.h (deactivate_process, status_notify, read_process_output): - Remove prototypes. - -2005-08-14 Richard M. Stallman - - * image.c (syms_of_image): Init Qxbm, Qpbm before calling - define_image_type. - -2005-08-13 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_pixbuf_from_pix_and_mask): New function. - (xg_get_image_for_pixmap): Move some code to - xg_get_pixbuf_from_pix_and_mask, and call it. - - * gtkutil.h (xg_get_pixbuf_from_pix_and_mask): Declare. - - * xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask - to get an GTK icon and set it with GTK functions to avoid having GTK - override an icon set with just X functions. - -2005-08-11 Richard M. Stallman - - * image.c (syms_of_image): Init image_types here, and call - define_image_type. - (init_image): Not here. - -2005-08-09 Richard M. Stallman - - * bytecode.c (BYTE_CODE_QUIT): Throw t to Vthrow_on_input. - - * lisp.h (QUIT): Throw t to Vthrow_on_input. - -2005-08-09 Thien-Thi Nguyen - - * floatfns.c (Fexpt): Use floats for negative exponent. - -2005-08-08 Jan Dj,Ad(Brv - - * gtkutil.c (xg_modify_menubar_widgets): Remove semicolon that - should not be there, causing menu display errors with GTK 2.6.9. - -2005-08-07 Richard M. Stallman - - * floatfns.c (Fexpt): Undo previous change. - - * dispnew.c (Fframe_or_buffer_changed_p): Take an arg - so it can be used with various state vectors. - - * emacs.c (endif): Convert -script into -scriptload. - (standard_args): Add -scriptload. Allow -basic-display with one dash. - - * fns.c (syms_of_fns): Add `emacs' to features. - - * term.c (set_terminal_modes): If no TS_termcap_modes string, - output newlines to scroll the old screen contents off the screen. - -2005-08-06 Thien-Thi Nguyen - - * floatfns.c (Fexpt): Use floats for negative exponent. - Reported by D Goel. - -2005-08-02 Richard M. Stallman - - * frame.c (Fframe_char_width): Doc fix. - -2005-07-30 Juanma Barranquero - - * xdisp.c (syms_of_xdisp) : - Defvar it. - -2005-07-28 Juanma Barranquero - - * w32fns.c (my_set_window_pos, my_show_window): Don't declare. - (my_create_window, my_create_tip_window): Make static. - - * w32term.c (my_show_window, my_set_window_pos, my_set_focus) - (my_set_foreground_window, my_destroy_window): Make static. - -2005-07-26 Paul Eggert - - Merge gnulib getopt implementation into Emacs. - - * s/cygwin.h (C_SWITCH_SYSTEM): Remove, since gettext.h is - now part of lib-src. - -2005-07-26 Stefan Monnier - - * eval.c (Fdefvar): Allow (defvar enable-multibyte-characters). - -2005-07-25 Jason Rumney - - * w32menu.c (w32_menu_display_help): Suppress tooltip when - navigating menus with the keyboard. - -2005-07-23 Richard M. Stallman - - * insdel.c (syms_of_insdel): staticpro combine_after_change_buffer. - - * bytecode.c (MAYBE_GC): Test gc_cons_threshold and - gc_relative_threshold, one by one. - - * keyboard.c (read_char): Test gc_cons_threshold. - (syms_of_keyboard): staticpro Qecho_area_clear_hook. - - * eval.c (Feval, Ffuncall): Test gc_cons_threshold and - gc_relative_threshold, one by one. - - * alloc.c (gc_cons_threshold): Not static. - (gc_cons_combined_threshold): Var deleted. - (gc_relative_threshold): New variable. - (Fgarbage_collect, init_alloc_once): Compute gc_relative_threshold - instead of gc_cons_combined_threshold. - - * lisp.h (gc_cons_threshold, gc_relative_threshold): Declare. - (gc_cons_combined_threshold): Declaration deleted. - -2005-07-23 YAMAMOTO Mitsuharu - - * mac.c: Don't include stdlib.h or string.h. - (Fdo_applescript, Fmac_file_name_to_posix) - (Fmac_file_name_to_posix): Doc fixes. - [TARGET_API_MAC_CARBON] (Fmac_get_preference) - (Fmac_code_convert_string): Likewise. - [MAC_OSX] (init_mac_osx_environment): Fall back on terminal mode - if the executable is not contained in a bundle. - - * macfns.c: Don't include stdlib.h or string.h. Include atimer.h. - (gray_width, gray_height): Remove defines. - (gray_bits, gray_bitmap_width, gray_bitmap_height) - (gray_bitmap_bits): Remove variables. - (lispy_function_keys): Remove extern. - (free_frame_menubar): Add extern. - (x_window_to_frame): Remove function. - (unwind_create_tip_frame): Add declaration. - (x_set_name_internal): New function. - (x_set_name, x_set_title): Use it. - (Fx_create_frame, Fx_display_grayscale_p, Fx_display_pixel_width) - (Fx_display_pixel_height, Fx_display_planes) - (Fx_display_color_cells, Fx_server_max_request_size) - (Fx_server_vendor, Fx_server_version, Fx_display_screens) - (Fx_display_mm_height, Fx_display_mm_width) - (Fx_display_backing_store, Fx_display_visual_class) - (Fx_display_save_under, Fx_synchronize, Fx_show_tip): Doc fixes. - - * macmenu.c (Fx_popup_menu, Fx_popup_dialog): Doc fixes. - - * macselect.c (Fx_own_selection_internal): Follow error conventions. - (Fx_get_selection_internal, Fx_selection_owner_p) - (Fx_selection_exists_p): Doc fixes. - (syms_of_macselect) : Likewise. - -2005-07-21 Juanma Barranquero - - * buffer.c (syms_of_buffer) : Doc fix. - - * ccl.c (Fregister_ccl_program): Fix typos in docstring. - (Fccl_execute_on_string): Likewise; add usage info. - - * composite.c (Fcompose_region_internal) - (Fcompose_string_internal): - Improve argument/docstring consistency. - - * minibuf.c (Fminibuffer_prompt_end, Feval_minibuffer): - Fix typos in docstrings. - - * textprop.c (Fnext_char_property_change) - (Fprevious_char_property_change): Doc fixes. - - * window.c (Fset_window_margins, Fset_window_fringes): - Improve argument/docstring consistency. - - * xfaces.c (Finternal_lisp_face_p): Doc fix. - -2005-07-21 Andreas Schwab - - * eval.c (restore_stack_limits): Return a value. - -2005-07-20 Juanma Barranquero - - * eval.c (Fdefvar): Doc fix. - -2005-07-20 Kim F. Storm - - * fileio.c (Fdo_auto_save, do_auto_save_unwind): - Use make_save_value to unwind protect stream. - - * lread.c (Fload, load_unwind): - Use make_save_value to unwind protect stream. - -2005-07-19 Juanma Barranquero - - * eval.c (Fprog2, Fcalled_interactively_p), - (syms_of_eval) : Doc fixes. - (syms_of_eval) : - (Finteractive_p): Fix typos in docstrings. - -2005-07-19 Kim F. Storm - - * w32fns.c (Vx_hand_shape): Variable removed. - (syms_of_w32fns): Intern and staticpro Qw32_charset_default. - -2005-07-19 Kenichi Handa - - * fns.c (Fstring_as_multibyte): Escape backslashes in the docstring. - -2005-07-18 Stefan Monnier - - * buffer.h (Fgenerate_new_buffer_name): Declare (for use in coding.c). - -2005-07-18 Kim F. Storm - - * frame.h (struct frame): New member already_hscrolled_p. - - * xdisp.c (redisplay_internal): Only try to hscroll each frame once - to avoid redisplay looping hscrolling back and forth ad infinitum. - -2005-07-18 Juri Linkov - - * buffer.c (scroll-up-aggressively, scroll-down-aggressively): - * keymap.c (Fminor_mode_key_binding): - * macterm.c (mac-emulate-three-button-mouse): - Delete duplicate duplicate words. - -2005-07-18 Ken Raeburn - - * minibuf.c (Ftest_completion): Fix odd syntax in test. - -2005-07-18 YAMAMOTO Mitsuharu - - * macfns.c (x_set_cursor_color): Use XSetBackground and XSetForeground. - - * macgui.h (struct _XGC): New struct. - (GC): Use it. - (GCForeground, GCBackground, GCFont): Use X11 mask values. - (XCreateGC, XParseGeometry): Move externs to macterm.h. - - * macterm.c (x_bitmap_icon, x_make_frame_visible): Remove declarations. - (XSetFont): Add declaration. - (mac_set_forecolor, mac_set_backcolor, mac_set_colors): - Remove functions. - (GC_FORE_COLOR, GC_BACK_COLOR, GC_FONT, MAC_WINDOW_NORMAL_GC): - New defines. - (XDrawLine, mac_draw_line_to_pixmap, XClearWindow) - (mac_draw_bitmap, XCreatePixmapFromBitmapData, XFillRectangle) - (mac_draw_rectangle, mac_draw_string_common, mac_scroll_area): - Use them. - (mac_erase_rectangle): New function. - (XClearArea, x_draw_fringe_bitmap, x_clear_glyph_string_rect) - (x_draw_stretch_glyph_string): Use it. - (XChangeGC, XCreateGC, XGetGCValues, XSetForeground) - (XSetBackground, XSetFont): Adjust for new GC implementation. - (x_draw_fringe_bitmap, x_draw_box_rect): Use GC to set colors. - (XTset_vertical_scroll_bar): Clear area under scroll bar. - - * macterm.h (struct mac_display_info): Change types of - scratch_cursor_gc black_relief.gc, and white_relief.gc to GC. - (XCreateGC, XParseGeometry): Move externs from macgui.h. - - * xfaces.c [MAC_OS] (XCreateGC): Remove extern. - -2005-07-16 Richard M. Stallman - - * buffer.c (Fmake_overlay): Doc fix. - -2005-07-16 Eli Zaretskii - - * w32proc.c (syms_of_ntproc): staticpro Qhigh, Qlow, - Vw32_valid_locale_ids, and Vw32_valid_codepages. - -2005-07-16 YAMAMOTO Mitsuharu - - * mac.c [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): - Use Fstring_as_unibyte instead of string_make_unibyte. - -2005-07-15 Richard M. Stallman - - * xdisp.c (select_frame_for_redisplay): Use find_symbol_value. - -2005-07-15 Kim F. Storm - - * xdisp.c: Fix redisplay loop in last change. - (IT_POS_VALID_AFTER_MOVE_P): New macro. - (move_it_vertically_backward, move_it_by_lines): Use it. - -2005-07-14 Jason Rumney - - * w32.c (init_environment): Default HOME directory to user's - appdata directory if possible. - -2005-07-14 Kim F. Storm - - * .gdbinit (pitx): Fix output format. Print string charpos. - - * lread.c (syms_of_lread): Initialize seen_list. - - * search.c (syms_of_search): Staticpro searchbuf.whitespace_regexp. - - * syntax.c (syms_of_syntax): Staticpro lisp objects in gl_state. - Staticpro re_match_object. - -2005-07-14 YAMAMOTO Mitsuharu - - * macselect.c (get_scrap_target_type_list): Avoid NULL pointer - dereference. - - * macterm.c (mac_window_to_frame): Remove duplicate define. - -2005-07-14 Kenichi Handa - - * coding.c (code_convert_region_unwind): ARG is changed to a cons. - (code_convert_region): Adjust for the above change. - (set_conversion_work_buffer): If the work buffer is already in - use, generate a new buffer and return it. Otherwise return Qnil. - (run_pre_post_conversion_on_str): Adjust for the above change. - (run_pre_write_conversin_on_c_str): Likewise. - -2005-07-13 Kim F. Storm - - * xdisp.c (start_display): Don't reseat to next visible line start - if current start position is in a string or image. - (move_it_vertically_backward): Be sure to move out of strings and - images when moving it2 forward. - (move_it_by_lines): When moving forward, move to next buffer - position if we end up in a string or image. When moving backward, - count rows moved over when moving to start of current row in case - row starts in middle of a string or image. Also move further - backward if we end up in a string or image. - (try_cursor_movement): If overlay string spans multiple lines, - move backward to set cursor on start of an overlay string. - (cursor_row_p): Row is ok if cursor is at newline from string, but - string starts on this line (so we always position cursor at start - of string). - - * indent.c (Fvertical_motion): If start position is on an image, - don't move back if we move too far (that's almost certain to happen). - - * xdisp.c (cursor_row_fully_visible_p): Allow partially visible - row in minibuffer windows. - (try_window): Don't check margins in minibuffer windows. - -2005-07-13 YAMAMOTO Mitsuharu - - * macterm.c: Don't include stdlib.h or composite.h. - (x_use_underline_position_properties, last_mouse_press_frame) - (x_noop_count, Qvendor_specific_keysyms): Remove unused variables. - (syms_of_macterm, mac_initialize): Don't initialize them. - (waiting_for_input, initial_argv, initial_argc) - (Vcommand_line_args, Vx_no_window_manager, errno, window_scroll) - (set_frame_menubar, path_from_vol_dir_name): Remove externs. - (extra_keyboard_modifiers): Fix type in extern. - (x_window_to_frame, x_window_to_scroll_bar): Remove declarations. - (x_scroll_bar_report_motion): Add argument types to declaration. - (mac_compute_glyph_string_overhangs): Add declaration. - (disable_mouse_highlight): Remove unused variable. - [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click) - (x_scroll_bar_handle_press, x_scroll_bar_handle_release) - (x_scroll_bar_handle_drag): Remove argument `timestamp'. - All callers changed. - [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click): Don't set - timestamp. - [USE_CARBON_EVENTS] (mac_handle_mouse_event): Likewise. - (x_scroll_bar_create, XTset_vertical_scroll_bar): Show scroll bar - only when its width is less than the height. - (XTredeem_scroll_bar): Sync with xterm.c. - (font_name_table, font_name_table_size, font_name_count): - Make static. - (drag_and_drop_file_list): Remove variable. Previous use is now - local to function. - (do_ae_open_documents): Move DRAG_N_DROP event construction part - from XTread_socket. - (XTread_socket): Consolidate setting of event timestamp. - Move DRAG_N_DROP event construction part to do_ae_open_documents. - Support extra_keyboard_modifiers. - - * xfaces.c (try_font_list) [MAC_OS]: Try font family name - beginning with that for ASCII. - -2005-07-13 Stefan Monnier - - * alloc.c (gc_cons_combined_threshold, Vgc_cons_percentage): New vars. - (Fgarbage_collect, init_alloc_once): Set gc_cons_combined_threshold. - (syms_of_alloc): Declare gc-cons-percentage. - - * eval.c (Feval, Ffuncall): - * keyboard.c (read_char): - * bytecode.c (MAYBE_GC): Use gc_cons_combined_threshold. - - * lisp.h (gc_cons_combined_threshold): Declare. - -2005-07-12 Kim F. Storm - - * coding.c (Qprocess_argument): - * coding.h (Qprocess_argument): Remove unused var. - - * xselect.c (intern): Remove dup. intern and staticpro for QTIMESTAMP. - -2005-07-12 YAMAMOTO Mitsuharu - - * mac.c [!TARGET_API_MAC_CARBON]: Include charset.h, coding.h, and - Endian.h. - [!MAC_OSX] (fchmod, fchown): New functions. - (mac_get_code_from_arg): Don't accept Lisp integer as argument. - Use SBYTES and EndianU32_BtoN. - (mac_get_object_from_code): Return 4 byte string even if argument - is 0. Use make_unibyte_string and EndianU32_NtoB. - (Fmac_get_file_creator, Fmac_get_file_type, Fmac_set_file_creator) - (Fmac_set_file_type): Fix documents and argument declarations. - Don't specify kFSCatInfoNodeFlags. Support Mac OS Classic. - -2005-07-11 Stefan Monnier - - * window.c (Frecenter): Yet another int/Lisp_Object mixup (YAILOM). - -2005-07-11 Jan Dj,Ad(Brv - - * xfaces.c (x_update_menu_appearance): Use fontSet resource for - Lucid if X_I18N, font otherwise. - -2005-07-10 Steven Tamm - - * mac.c (Fmac_get_file_type, Fmac_get_file_creator): Add. - (Fmac_set_file_type, Fmac_set_file_creator): Add. - (mac_get_object_from_code, mac_get_code_from_arg): Add. - -2005-07-10 Richard M. Stallman - - * lread.c (Qeval_buffer_list, Veval_buffer_list): New vars. - (syms_of_lread): Set up eval-buffer-list. - (Feval_buffer, Feval_region): Bind eval-buffer-list. - -2005-07-08 Richard M. Stallman - - * eval.c (Fdefvar): Allow defvaring a constant to itself quoted. - -2005-07-08 Kim F. Storm - - * keyboard.c (menu_bar_items): Don't GCPRO menu_bar_items_vector here. - (syms_of_keyboard): Initialize and staticpro menu_bar_items_vector. - -2005-07-07 Kim F. Storm - - * window.c (Frecenter): Fix last change (set iarg before use). - -2005-07-06 Richard M. Stallman - - * window.c (Frecenter): When arg is inside the scroll margin, - move it out of the margin. - -2005-07-06 Jason Rumney - - * w32console.c (initialize_w32_display): Detect when the console - dimensions are insane, and default to 80x25 instead. - (w32_use_full_screen_buffer): Default to nil. - -2005-07-06 YAMAMOTO Mitsuharu - - * macterm.c (mac_draw_vertical_window_border): Use foreground of - VERTICAL_BORDER_FACE_ID for vertical border line. - (mac_encode_char): Call check_ccl_update in advance. - (mac_to_x_fontname, x_font_name_to_mac_font_name) - (init_font_name_table, mac_do_list_fonts, XLoadQueryFont): - Don't assume that font family length is less than 32. - (x_compute_min_glyph_bounds): Make static. - (x_load_font): Never set fonts_changed_p to zero. - -2005-07-04 Lute Kamstra - - * Update FSF's address in GPL notices. - -2005-07-03 Richard M. Stallman - - * xdisp.c (try_window): Fix previous change in how it handles - a partially-visible line or one only partly past the margin. - - * window.c (window_scroll_pixel_based): Take account - of this_scroll_margin when finding point when scrolling up. - -2005-06-29 Ralf Angeli - - * window.c (window_scroll_pixel_based, window_scroll_line_based): - Handle `scroll-preserve-screen-position' non-nil, non-t specially. - (syms_of_window) : Doc fix. - -2005-07-02 Juri Linkov - - * w32term.c (w32_draw_vertical_window_border): Use foreground of - VERTICAL_BORDER_FACE_ID for vertical border line. - -2005-07-02 Eli Zaretskii - - * fileio.c (Fcopy_file): Rearrange the code that calls fchown and - fchmod so that chmod doesn't get called on MSDOS before the file - is closed. - -2005-07-01 Jason Rumney - - * w32term.c (cleartype_active): New flag for enabling sub-pixel - workaround. - (w32_initialize): Initialize it. - (w32_native_per_char_metric): Allow a couple of extra pixels when - Cleartype is active. - - * w32term.c (w32_initialize): Move check for screen reader here - from syms_of_w32term. - -2005-06-30 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): bzero compose_status when nbytes - is not zero. - -2005-07-01 Masatake YAMATO - - * emacs.c (main): Passing ADD_NO_RANDOMIZE to `personality'. - -2005-06-30 Juri Linkov - - * xdisp.c (x_draw_vertical_border): If left fringe is not present - decrease x coord of vertical border by 1 pixel to not occupy text - area of the right window. - - * xterm.c (x_draw_vertical_window_border): Use foreground of - VERTICAL_BORDER_FACE_ID for vertical border line. - - * term.c (turn_on_face): In standout mode apply specified - fg to bg, and specified bg to fg (this makes the logic of - inversion on terminal consistent with X). - -2005-06-29 Juanma Barranquero - - * eval.c (user_variable_p_eh): New function. - (Fuser_variable_p): Use it. Clarify docstring. - Return t for aliases of user options, nil for alias loops. - -2005-06-27 Richard M. Stallman - - * eval.c (Fdefvar): Improve error message. - -2005-06-27 YAMAMOTO Mitsuharu - - * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Fix last - change. - -2005-06-27 Juanma Barranquero - - * eval.c (Fdefvar): Don't try to set constant symbols. - -2005-06-25 Richard M. Stallman - - * macfns.c (Fx_show_tip): Pass new arg to try_window. - - * w32fns.c (Fx_show_tip): Pass new arg to try_window. - - * xfns.c (Fx_show_tip): Pass new arg to try_window. - - * xdisp.c (try_window): New arg CHECK_MARGINS. Calls changed. - (redisplay_window): Handle try_window reporting point in scroll margin. - - * dispextern.h (try_window): Declare new arg. - - * fileio.c (Fcopy_file): New arg PRESERVE_UID_GID. - Use fchmod to copy the file modes. - (Frename_file): Don't copy UID and GID here; - instead, specify t for PRESERVE_UID_GID when calling Fcopy_file. - - * eval.c (call_debugger): Take full care of extending stack limits - to make space for the debugger, and restore the change afterward. - Bind debug-on-error to nil. - (restore_stack_limits): New subroutine. - (Fsignal): Extend specpdl bound along with eval depth bound, - for calling edebug. Don't do either one, for calling debugger. - (find_handler_clause): Don't bind debug-on-error here. - Don't unbind anything either. - Temporarily advance max_specpdl_size for calling - internal_with_output_to_temp_buffer. - (grow_specpdl): Don't alter max_specpdl_size before signaling - an error. - (syms_of_eval) : Doc fix. - - * lread.c (read1): 0.0e+NaN should make a "positive" NaN. - -2005-06-24 Eli Zaretskii - - * fileio.c (Frename_file): Undo last change: no need to ifdef away - chown on DOS_NT platforms. - - * w32.c (sys_chown): New function. - - * s/ms-w32.h (chown): New; define to sys_chown. - -2005-06-24 Juanma Barranquero - - * xdisp.c (syms_of_xdisp) : Doc fix. - (syms_of_xdisp) : Doc fix. - - * fileio.c (Frename_file)[!DOS_NT]: Don't call chown on MSDOS/Windows. - -2005-06-23 Richard M. Stallman - - * xdisp.c (get_next_display_element): Finish reversing the tests of - Vnobreak_char_display. - - * xdisp.c (Vnobreak_char_display): Rename from Vshow_nonbreak_escape. - All uses changed. - (Qnobreak_space): Rename from Qno_break_space. All uses changed. - (syms_of_xdisp): Define nobreak-char-display and nobreak-space. - - * fileio.c (Frename_file): Preserve owner and group, if possible, - when copying. - -2005-06-23 Juanma Barranquero - - * abbrev.c (Funexpand_abbrev): - * category.c (Fmake_category_set): - * dispnew.c (Fsleep_for, Fsit_for): - * editfns.c (Fsubst_char_in_region): - * eval.c (Fdefvar, Fdefconst, Feval, Ffuncall): - * frame.c (make_frame_without_minibuffer): - * lread.c (read_vector): - * macfns.c (check_x_frame): - * process.c (Fstop_process, Fcontinue_process): - * search.c (Freplace_match): - * syntax.c (Fstring_to_syntax): - * w32fns.c (check_x_frame, check_x_display_info): - * xfaces.c (x_supports_face_attributes_p): - * xselect.c (Fx_own_selection_internal): Follow error conventions. - - * image.c (fn_png_init_io): Don't define it. - (init_png_functions) [HAVE_NTGUI]: Don't initialize fn_png_init_io. - (png_read_from_file): New function, based on png_read_from_memory. - (png_load): Use it, instead of fn_png_init_io. - -2005-06-23 Kim F. Storm - - * search.c (Fmatch_data): Remove evaporate option. - (Fset_match_data): Do not mention evaporate option in doc string. - Add commentary explaining evaporate arg (for internal use only). - (unwind_set_match_data): Add comment on evaporate use. - -2005-06-22 Miles Bader - - * xfaces.c (Qvertical_border): Rename from `Qvertical_divider'. - (realize_basic_faces, syms_of_xfaces): Update references to it. - * dispextern.h (enum face_id): Rename `VERTICAL_DIVIDER_FACE_ID' - to `VERTICAL_BORDER_FACE_ID'. - * dispnew.c (build_frame_matrix_from_leaf_window): Update references. - -2005-06-21 Juri Linkov - - * dispextern.h: Add extern Qframe_set_background_mode. - - * xfaces.c: Rename obsolete function Qframe_update_face_colors to - Qframe_set_background_mode. - - * frame.c (Fmodify_frame_parameters): - Call frame-set-background-mode after changing the background color - on non-window non-dos branch. - -2005-06-21 Juanma Barranquero - - * fns.c (Fchar_table_range): - * process.c (Fmake_network_process): Fix spellings. - -2005-06-20 Kim F. Storm - - * fns.c (Fsort): Doc fix. - -2005-06-20 Miles Bader - - * xfaces.c (Qvertical_divider): New variable. - (realize_basic_faces): Realize its face. - (syms_of_xfaces): Initialize it. - - * dispextern.h (enum face_id): Add `VERTICAL_DIVIDER_FACE_ID'. - - * dispnew.c (build_frame_matrix_from_leaf_window): Display vertical - window-separator on ttys using `vertical-divider' face by default. - -2005-06-17 Richard M. Stallman - - * xdisp.c (get_next_display_element): - Reverse test of Vshow_nonbreak_escape. - - * term.c (produce_special_glyphs): Use spec_glyph_lookup_face. - (Ftty_no_underline): New function. - (syms_of_term): defsubr it. - - * keyboard.c (read_char): Call restore_getcjmp after jump occurs. - - * dispnew.c (spec_glyph_lookup_face): New function. - (build_frame_matrix_from_leaf_window): Use it. - - * dispextern.h (spec_glyph_lookup_face): Add declaration. - - * buffer.c (syms_of_buffer) : Doc fix. - -2005-06-12 Richard M. Stallman - - * keyboard.c (read_char): After catching a longjmp, - call restore_getcjmp. - -2005-06-17 Juanma Barranquero - - * xselect.c (lisp_data_to_selection_data): Fix spelling. - -2005-06-15 YAMAMOTO Mitsuharu - - * macterm.c (mac_compute_glyph_string_overhangs): Don't set - overhangs unless the given glyph type is noncomposite CHAR_GLYPH. - [USE_CARBON_EVENTS] (mac_convert_event_ref): Convert dead key down - events. - (XTread_socket): Don't pass keyboard events with the option - modifier to the system when Vmac_command_key_is_meta is nil or - Vmac_option_modifier is non-nil. - [USE_CARBON_EVENTS] (read_socket_inev): New variable. - [USE_CARBON_EVENTS] (init_command_handler): Fix argument. - [USE_CARBON_EVENTS] (mac_handle_mouse_event): New Carbon event - handler function. - (install_window_handler) [USE_CARBON_EVENTS]: Install it. - (XTread_socket) [USE_CARBON_EVENTS]: Move mouse wheel event - handler part to mac_handle_mouse_event. - -2005-06-14 Juanma Barranquero - - * eval.c (Fdefvaralias): Rename arguments SYMBOL and ALIASED to - NEW-ALIAS and BASE-VARIABLE, respectively. - -2005-06-13 Stefan Monnier - - * xdisp.c (note_mode_line_or_margin_highlight): Lisp_Object/int mixup. - (get_phys_cursor_geometry, format_mode_line_unwind_data) - (get_line_height_property, x_produce_glyphs): Remove unused vars. - - * coding.c (run_pre_post_conversion_on_str): Remove unused var `buf'. - -2005-06-13 Eli Zaretskii - - * w32term.c (x_use_underline_position_properties): New variable. - (x_draw_glyph_string): Remind in a comment to change doc string of - x-use-underline-position-properties if/when underline positioning - is implemented. - (syms_of_w32term): DEFVAR_BOOL x-use-underline-position-properties, - and initialize it to nil. - -2005-06-12 Jason Rumney - - * w32fns.c (NEWOPENFILENAME): New struct. - (Fx_file_dialog): Use it to trick the system into giving us up to - date dialogs on systems that are documented to support it. - Do not set OFN_FILEMUSTEXIST flag if looking for a directory. - -2005-06-12 Eli Zaretskii - - * w32fns.c (w32_abort): Use the MB_YESNO dialog instead of - MB_ABORTRETRYIGNORE. Never return, even if DebugBreak does. - -2005-06-11 Eli Zaretskii - - * image.c (x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg - to CreateDIBSection to avoid a compiler warning. - (pbm_load): Cast 3rd arg to IMAGE_BACKGROUND to avoid a compiler - warning. - (png_load): Cast return values of fn_png_create_read_struct and - fn_png_create_info_struct, to avoid compiler warnings on W32. - Cast 3rd arg to IMAGE_BACKGROUND and image_background_transparent - to avoid compiler warnings. - (jpeg_load): Cast return value of fn_jpeg_std_error to avoid a - compiler warning on W32. Cast 3rd arg to IMAGE_BACKGROUND to - avoid a compiler warning. - (tiff_load): Cast return values of fn_TIFFOpen and - fn_TIFFClientOpen to avoid compiler warning on W32. Cast 3rd arg - to IMAGE_BACKGROUND to avoid a compiler warning. - (gif_load): Cast return values of fn_DGifOpenFileName and - fn_DGifOpen to avoid compiler warnings on W32. Cast 3rd arg to - IMAGE_BACKGROUND to avoid a compiler warning. - (DrawText) [HAVE_NTGUI || MAC_OS]: If already defined, undef - before redefining. - - * w32bdf.c (create_offscreen_bitmap): Cast `bitsp' to `void **' in - the call to CreateDIBSection, to avoid a compiler warning. - -2005-06-11 Jason Rumney - - * w32fns.c (Fx_file_dialog): Unblock input before falling back to - minibuffer. - * macfns.c (Fx_file_dialog): Likewise. - -2005-06-10 Eli Zaretskii - - * makefile.w32-in ($(TEMACS)): Depend on addsection.exe. - -2005-06-10 Juanma Barranquero - - * process.c (syms_of_process) [ADAPTIVE_READ_BUFFERING]: - * w32fns.c (syms_of_w32fns): Fix spellings. - -2005-06-10 Eli Zaretskii - - * unexw32.c (COPY_CHUNK, COPY_PROC_CHUNK): Add a new argument - `verbose'; print diagnostic messages only if it is non-zero. - All callers changed to pass a zero value unless DEBUG_DUMP is defined - in the environment. - (copy_executable_and_dump_data): Print section names with %.8s. - -2005-06-10 Masatake YAMATO - - * xdisp.c (note_mode_line_or_margin_highlight): Call clear_mouse_face - when mouse_face is not given. - -2005-06-09 Luc Teirlinck - - * window.c (Fselect_window): Adapt call to Fselect_frame. - - * lisp.h: Update EXFUN of Fselect_frame. - - * keyboard.c (command_loop_1): Adapt call to Fselect_frame. - - * frame.c (Fhandle_switch_frame, Fselect_frame): Delete unused arg - no_enter. - (Fset_mouse_position, Fset_mouse_pixel_position, Ficonify_frame): - Adapt to above change. - -2005-06-10 Juanma Barranquero - - * fns.c (Fmemq, Fmaphash): Doc fixes. - -2005-06-09 Juanma Barranquero - - * xfaces.c (Fdisplay_supports_face_attributes_p): - Fix typo in docstring. - -2005-06-08 Steven Tamm - - * unexmacosx.c (copy_data_segment): Copy __la_sym_ptr2 section - used by gcc4 on intel mac. - -2005-06-09 Kim F. Storm - - * search.c (Fmatch_data): Add optional RESEAT arg. Unchain markers - in REUSE list if non-nil; free them if equal to evaporate. - (Fset_match_data): Add optional RESEAT arg. Unchain markers in LIST - if non-nil; free them if equal to evaporate. Use XCAR/XCDR. - (restore_search_regs): Rename from restore_match_data. Uses changed. - (unwind_set_match_data): New function. - (record_unwind_save_match_data): New function like save-match-data. - - * lisp.h (Fmatch_data, Fset_match_data): Fix EXFUN. - (record_unwind_save_match_data): Add prototype. - (restore_search_regs): Rename from restore_match_data. - - * composite.c (compose_chars_in_text): - * eval.c (do_autoload): - * macmenu.c (set_frame_menubar): - * process.c (read_process_output, exec_sentinel): - * xmenu.c (set_frame_menubar): - * xdisp.c (prepare_menu_bars, update_menu_bar, update_tool_bar): - * w32menu.c (set_frame_menubar): - Use record_unwind_save_match_data. - -2005-06-08 Richard M. Stallman - - * xdisp.c (get_next_display_element): Alter previous change: - Distinguish Vshow_nonbreak_escape = t or not t. - For t, use escape_glyph once again, as before previous change. - Use space or hyphen for display, instead of the non-ASCII char. - (syms_of_xdisp) : Doc fix. - - * process.c (Fstart_process): Don't touch command_channel_p slot. - - * process.h (struct process): Delete command_channel_p. - -2005-06-07 Masatake YAMATO - - * xdisp.c (note_mode_line_or_margin_highlight): - Check the overlapping of re-rendering area to avoid flickering. - (note_mouse_highlight): Call clear_mouse_face if PART - is not ON_MODE_LINE nor ON_HEADER_LINE. - -2005-06-07 Kim F. Storm - - * process.c: Improve commentary for adaptive read buffering. - -2005-06-06 Stefan Monnier - - * xterm.c (x_create_toolkit_scroll_bar): Use XtNarrowScrollbars - if available. - -2005-06-06 Jan Dj,Ad(Brv - - * macmenu.c (menu_quit_handler, install_menu_quit_handler): - New functions for popping down menus on C-g. - (set_frame_menubar, mac_menu_show): Call install_menu_quit_handler. - - * macterm.c: Make mac_quit_char_modifiers and mac_quit_char_keycode - non-static. - - * config.in: Add HAVE_CANCELMENUTRACKING. - -2005-06-06 Eli Zaretskii - - * w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR): Remove macros. - - * unexw32.c (RVA_TO_PTR): Move here from w32heap.h. - - * w32proc.c (RVA_TO_PTR): New macro. - - * w32heap.c (RVA_TO_PTR): No need to #undef now. - - * makefile.w32-in ($(BLD)/emacs.$(O), $(BLD)/w32select.$(O)): - Depend on w32heap.h. - -2005-06-06 Luc Teirlinck - - * keyboard.c (command_loop_1): Update Vthis_original_command. - -2005-06-06 Richard M. Stallman - - * xmenu.c (popup_get_selection): Undo previous change. - -2005-06-06 Juri Linkov - - * xdisp.c (Qno_break_space): New variable. - (syms_of_xdisp): Initialize it. - (get_next_display_element): Add no-break space and soft hypen - codes for iso8859-2 and iso8859-5. Don't add `\' for them. - Use `no-break-space' face for no-break spaces. - -2005-06-06 Jan Dj,Ad(Brv - - * window.c (delete_window): Handle the case where a h/vchild has - a h/vchild. - -2005-06-05 Eli Zaretskii - - * w32.c (sys_setsockopt): Change arg 4 to `const void *'. In the - call to pfn_setsockopt, cast optval to `const char *'. - -2005-06-04 Eli Zaretskii - - * w32.c (gettimeofday): Use struct _timeb, not struct timeb. - (open_unc_volume): Cast return value of map_w32_filename, to avoid - compiler warnings. - - * s/ms-w32.h (fileno): Don't define if already defined. - - * emacs.c: Include w32heap.h, to avoid compiler warning about sbrk. - - * makefile.w32-in (DOC): Define to point to the generated DOC-X. - -2005-06-04 Richard M. Stallman - - * xmenu.c (popup_get_selection): Click not in menu deactivates menu. - -2005-06-04 Jan Dj,Ad(Brv - - * macmenu.c (cleanup_popup_menu): New function. - (Fx_popup_menu): Unwind protect cleanup_popup_menu in case - mac_menu_show Quit:s. - (mac_menu_show): Quit on cancel if not popped up on click (i.e. - a dialog). - -2005-06-04 Kim F. Storm - - * coding.c (decode_coding_string): Handle CODING_FINISH_INTERRUPT. - - * callproc.c (Fcall_process): Don't use alloca to gradually - increase size of buf, as it effectively uses twice the necessary - space on the stack. Instead, pre-allocate buf of full size, and - gradually increase the read size. - - * bytecode.c (BYTE_CODE_QUIT): Check Vthrow_on_input. - - * eval.c (unbind_to): Preserve value of Vquit_flag. - - * xterm.c (handle_one_xevent): Also ignore mouse motion just - before a button release event. - -2005-06-03 Juanma Barranquero - - * xfaces.c (Finternal_lisp_face_equal_p): Really report - on faces in a frame, if the argument FRAME is non-nil. - Improve argument/docstring consistency. - -2005-06-02 Kim F. Storm - - * xdisp.c (MODE_LINE_NOPROP_LEN): New macro. - (x_consider_frame_title, Fformat_mode_line): Save offset into - mode_line_noprop_buf rather than pointer, in case buffer is relocated. - -2005-06-01 Kim F. Storm - - * fns.c (mapcar1): Maybe exit loop if original sequence was modified. - -2005-06-01 YAMAMOTO Mitsuharu - - * macterm.c (mac_to_x_fontname, mac_do_list_fonts): Set XLFD - resolution fields for scalable fonts to 0. - - * xfaces.c (build_scalable_font_name): Round pixel size to the - nearest integer. - -2005-06-01 Kim F. Storm - - * xdisp.c (display_mode_line): Support nested calls to redisplay - and format-mode-line. Set mode_line_target to MODE_LINE_DISPLAY. - -2005-05-31 Stefan Monnier - - * fileio.c (Finsert_file_contents): - * xdisp.c (note_mode_line_or_margin_highlight): Lisp_Object/int mixup. - -2005-05-31 Kim F. Storm - - * xdisp.c (mode_line_noprop_buf, mode_line_noprop_buf_end) - (mode_line_noprop_ptr): Rename from frame_title_*. - (store_mode_line_noprop_char): Rename from store_frame_title_char. - (store_mode_line_noprop): Rename from store_frame_title. - (mode_line_target): New enum to specify current output target - for mode line formatting. - (display_mode_element): Test it rather than frame_title_ptr and - mode_line_string_list to determine where output should go. - (mode_line_proptrans_alist, mode_line_string_alist): Make static. - (Vmode_line_unwind_vector): New variable. - (format_mode_line_unwind_data, unwind_format_mode_line): - New functions for unwind protection in mode line formatting. - (x_consider_frame_title): Use them and new local var 'title_start' - to support nested calls to format-mode-line and redisplay. - Set mode_line_target to MODE_LINE_TITLE. - (Fformat_mode_line): Use them and new local var 'string_start' to - support nested calls to format-mode-line and redisplay. - Set mode_line_target to MODE_LINE_NOPROP or MODE_LINE_STRING. - Don't trim trailing dashes. - (decode_mode_spec): Don't make infinite number of trailing dashes - for MODE_LINE_NOPROP and MODE_LINE_STRING targets. - (syms_of_xdisp): Initialize and staticpro mode_line_string_face, - mode_line_string_face_prop, and Vmode_line_unwind_vector. - (init_xdisp): Initialize mode_line_noprop_ptr to start of _buf. - Initialize mode_line_target to MODE_LINE_DISPLAY. - -2005-05-29 Richard M. Stallman - - * buffer.c (Fbuffer_local_value): Call indirect_variable. - -2005-05-28 Masatake YAMATO - - * xdisp.c (note_mode_line_or_margin_highlight): Change the - pointer to a hand cursor when hoovering over a mouse-face. - -2005-05-27 Kenichi Handa - - * xterm.c (x_encode_char): Call check_ccl_update in advance. - - * ccl.c: Now an element of Vccl_program_table is a vector of - length 4, not 3. - (ccl_get_compiled_code): New arg idx. Caller changed. - Adjust for the change of Vccl_program_table. - (setup_ccl_program): Adjust for the change of Vccl_program_table. - (check_ccl_update): New function. - (Fregister_ccl_program): Use ASET to set an element of a vector. - Adjusted for the change of Vccl_program_table. - - * ccl.h (struct ccl_program): New member idx. - (check_ccl_update): Extern it. - -2005-05-27 Juanma Barranquero - - * image.c (Vimage_library_alist): Move from image.el. - (syms_of_image): Defvar it. - (lookup_image_type): Use it. - - * buffer.c (Fbuffer_local_value): Make argument name match its use - in docstring. - -2005-05-26 Juanma Barranquero - - * keyboard.c (Frecursive_edit): Fix typo in docstring. - (Fposn_at_x_y): Make argument name match its use in docstring. - -2005-05-26 Lute Kamstra - - * eval.c (Frun_hooks): Mention run-mode-hooks in docstring. - -2005-05-24 Masatake YAMATO - - * xdisp.c (note_mode_line_or_margin_highlight): Use b and e - as loop sentinels. - -2005-05-24 Nick Roberts - - * xmenu.c (Fx_popup_dialog): Add a third boolean argument to - select frame title ("Question"/"Information"). - (xdialog_show): Use it. - - * macmenu.c (Fx_popup_dialog, mac_dialog_show): As for xmenu.c. - - * w32menu.c (Fx_popup_dialog, w32_dialog_show): As for xmenu.c. - - * fns.c (Fyes_or_no_p, Fy_or_n_p): Call Fx_popup_dialog with - a third argument (Qnil). - - * lisp.h: x-popup-dialog can have three arguments. - - * editfns.c (Fmessage_box): Use "Information" for frame title. - -2005-05-23 Thien-Thi Nguyen - - * termcap.c [VMS]: Include . - -2005-05-23 Masatake YAMATO - - * xdisp.c (note_mode_line_or_margin_highlight): Add code - for mouse-face. Change the type of the first argument from `window' - to `Lisp_Object'. - (note_mouse_highlight): Call note_mode_line_or_margin_highlight with - window instead of w. - -2005-05-22 Andreas Schwab - - * process.c (send_process): Move misplaced volatile. - -2005-05-21 Richard M. Stallman - - * xdisp.c (display_mode_element): If we're processing a list and - padding is specified, put it after the last element. - -2005-05-21 Eli Zaretskii - - * fileio.c (Fexpand_file_name) [DOS_NT]: Don't try to support - "superroot" on DOS_NT systems. - -2005-05-21 David Hunter (tiny change) - - * process.c (send_process): Restore the SIGPIPE handler if we - catch a SIGPIPE. - -2005-05-20 Juanma Barranquero - - * image.c (lookup_image, png_read_from_memory): Remove hacks (and - misleading comments). - (DEF_IMGLIB_FN): Use C calling convention for image libraries. - -2005-05-20 KOBAYASHI Yasuhiro - - * window.c (Fwindow_inside_edges, Fwindow_inside_pixel_edges): - Correct the right value. - -2005-05-19 Nick Roberts - - * keyboard.c (syms_of_keyboard): Remove Lisp variables - post-command-idle-hook and post-command-idle-delay. - (command_loop_1): Don't try to execute post-command-idle-hook. - -2005-05-16 Kim F. Storm - - * xdisp.c (handle_display_prop): Handle empty replacement. - (handle_single_display_spec): Return -1 for empty replacement. - - * keyboard.c (adjust_point_for_property): Skip empty overlay string. - - * .gdbinit (pitx): Print more info about iterator. - -2005-05-16 Andreas Schwab - - * unexmacosx.c (unexec_realloc): Move declarations before statements. - -2005-05-14 Richard M. Stallman - - * xdisp.c (message3): Call cancel_echoing. - - * alloc.c (Fmemory_full_p): New function. - (syms_of_alloc): defsubr it. - - * process.c (send_process_trap): Unblock SIGPIPE. - (send_process): Reset SIGPIPE handler before reporting error. - -2005-05-14 Nick Roberts - - * emacs.c (syms_of_emacs): Fix doc string for system-type. - -2005-05-13 Richard M. Stallman - - * fileio.c (Ffind_file_name_handler): Handle lambda-exp as handler. - (Finsert_file_contents): If we read 0 bytes from a special file, - unlock the visited file if we locked it. - (Fmake_symbolic_link, Frecent_auto_save_p): Doc fixes. - (Ffile_exists_p, Ffile_symlink_p): Doc fixes. - -2005-05-13 YAMAMOTO Mitsuharu - - * emacs.c (main) [MAC_OS8]: Call init_atimer before mac_term_init. - - * keyboard.c (readable_events) [USE_TOOLKIT_SCROLL_BARS]: - Regard toolkit scroll bar thumb drag events as squeezable and prevent - redisplay from being paused by them. - - * mac.c [!MAC_OSX]: Include keyboard.h and syssignal.h. - [!MAC_OSX] (target_ticks): Remove variable. - [!MAC_OSX] (check_alarm, pause, index): Remove functions. - [!MAC_OSX && __MRC__] (sys_strftime): Likewise. - [!MAC_OSX] (select): If fd 0 is not set in rfds and some input - event occurs before timeout, behave as if the function were interrupted. - [!MAC_OSX] (sigblock, sigsetmask, alarm): Simulate SIGALRM - handling using Time Manager routines. - [!MAC_OSX] (mac_atimer_task, mac_atimer_qlink, signal_mask): - New variables. - [!MAC_OSX] (mac_atimer_handler, set_mac_atimer, remove_mac_atimer) - (setitimer): New functions. - - * macfns.c, macmenu.c: Don't include signal.h. - - * macterm.c [USE_TOOLKIT_SCROLL_BARS] (get_control_part_bounds): - Rename from get_control_part_bound. All callers changed. - (x_scroll_bar_clear): New function. - (x_clear_frame): Use it. - (XTset_vertical_scroll_bar): Don't call Draw1Control. - (x_scroll_bar_handle_click): Change type of second argument from - int to ControlPartCode. - (check_alarm): Remove declaration. - (XTread_socket) [!TARGET_API_MAC_CARBON]: Don't call it. - (XTread_socket): Use ControlPartCode instead of SInt16. - -2005-05-13 Nozomu Ando - - * unexmacosx.c: Include assert.h. - (MACOSX_MALLOC_MULT16): New define. - [MACOSX_MALLOC_MULT16] (ptr_in_unexec_regions): Determine whether - ptr is in unexec regions by checking it is multiple of 16. - (unexec_malloc_header_t): New typedef. - (unexec_malloc, unexec_realloc, unexec_free): Store and use - allocated size information in unexec_malloc_header. - -2005-05-10 Richard M. Stallman - - * xterm.c (noinclude): Add #undef. - - * image.c, xfns.c, xmenu.c: Don't include signal.h. - -2005-05-09 Juanma Barranquero - - * fileio.c (Fexpand_file_name, Frename_file, Fadd_name_to_file) - (Fmake_symbolic_link, Faccess_file, Frecent_auto_save_p): - Doc fixes. - - * dired.c (Ffile_name_completion): Make argument name - match its use in docstring. - -2005-05-08 Luc Teirlinck - - * eval.c (Fdefvaralias): Remove any pre-existing - variable-documentation property of the alias. - -2005-05-07 Thien-Thi Nguyen - - * xfns.c (start_hourglass): Do nothing when running on a tty. - -2005-05-07 Juanma Barranquero - - * fns.c (Fchar_table_range): Fix typos in docstring. - -2005-05-06 Stefan Monnier - - * fns.c (Fchar_table_range): Yet Another Int/Lisp_Object Mixup. - -2005-05-06 Eli Zaretskii - - * lread.c (Flocate_file_internal): Doc fix. - - * Makefile.in (lisp, shortlisp): Add jka-cmpr-hook.elc. - -2005-05-06 YAMAMOTO Mitsuharu - - * macselect.c (x_own_selection): Accept Lisp string as result of - selection converter function. - (x_clear_frame_selections): Don't call x-lost-selection-functions - if Emacs is not owner of the selection. - (Vmac_services_selection): Put variable and initialization in - #ifdef MAC_OSX. - (syms_of_macselect) [MAC_OSX]: Set default value of - Vmac_services_selection to PRIMARY. - - * macterm.c (toolkit_scroll_bar_interaction): Remove unused variable. - (mac_handle_tool_bar_click): Remove unused function and declaration. - [USE_TOOLKIT_SCROLL_BARS] (scroll_bar_timer_callback) - (install_scroll_bar_timer, set_scroll_bar_timer) - (control_part_code_to_scroll_bar_part, construct_scroll_bar_click) - (get_control_part_bound, x_scroll_bar_handle_press) - (x_scroll_bar_handle_release, x_scroll_bar_handle_drag) - (x_set_toolkit_scroll_bar_thumb): New functions and declarations. - [USE_TOOLKIT_SCROLL_BARS] (last_scroll_bar_part, scroll_bar_timer) - (scroll_bar_timer_event_posted_p): New variables. - [USE_TOOLKIT_SCROLL_BARS] (SCROLL_BAR_FIRST_DELAY) - (SCROLL_BAR_CONTINUOUS_DELAY): New macros. - (x_scroll_bar_create): Set control reference with NewControl. - (x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: - Initialize track_top and track_height to nil. - (x_scroll_bar_set_handle, x_scroll_bar_note_movement): - Put functions in #ifndef USE_TOOLKIT_SCROLL_BARS. - (XTset_vertical_scroll_bar): Don't make space between scroll bar - and associated window. - (XTset_vertical_scroll_bar) [MAC_OSX]: Get scroll bar area width - from window config. - (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: - Set track_top and track_height to nil when scroll bar size is changed. - Recalculate them if they are nil. - (XTread_socket) [MAC_OSX]: Use control kind to determine if the - clicked control is a scroll bar. - (XTread_socket) [USE_TOOLKIT_SCROLL_BARS]: Use toolkit scroll bar - event handler functions. Don't add modifiers to scroll bar click - events. Call scroll bar release handler when window is deactivated. - (mac_initialize): Remove unused code for X toolkit. - (syms_of_macterm) [!USE_TOOLKIT_SCROLL_BARS]: - Initialize Vx_toolkit_scroll_bars to nil. - - * macterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: - New members track_top and track_height. - - * sysselect.h [DARWIN || MAC_OSX]: Temporarily undefine - init_process when including sys/select.h. - -2005-05-05 Luc Teirlinck - - * eval.c (Fdefvaralias): Doc fix. - - * xmenu.c (Fx_popup_menu, Fx_popup_dialog): Doc fixes. - -2005-05-05 Kim F. Storm - - * buffer.c (init_buffer_once): Set cursor_in_non_selected_windows - default value. - (syms_of_buffer): Add default-cursor-in-non-selected-windows. - Fix type of cursor-in-non-selected-windows. - -2005-05-03 Jan Dj,Ad(Brv - - * mac.c: #undef init_process so not to conflict with system headers. - -2005-05-02 Richard M. Stallman - - * buffer.c (syms_of_buffer): Define cursor-in-non-selected-windows. - - * buffer.h (struct buffer): Add cursor_in_non_selected_windows slot. - - * xdisp.c (Vcursor_in_non_selected_windows) - (Qcursor_in_non_selected_windows): Vars deleted. - (syms_of_xdisp): Don't initialize them. - (get_window_cursor_type): Use cursor_in_non_selected_windows - buffer slot. - -2005-05-02 Kim F. Storm - - * macros.c (executing_kbd_macro_index): Rename from - executing_macro_index. All uses changed. - (executing_kbd_macro_iterations): Rename from - executing_macro_iterations. All uses changed. - (executing_kbd_macro): Rename from executing_macro. - All uses changed. - (syms_of_macros): Rename Lisp var executing-macro-index to - executing-kbd-macro-index. - - * xdisp.c (move_it_in_display_line_to): Fix last change. - -2005-05-01 Luc Teirlinck - - * xmenu.c (Fx_popup_menu): Doc fix. - - * charset.c (syms_of_charset): Delete defsubr for Schars_in_region. - -2005-05-02 Jason Rumney - - * emacs.c (USAGE3, USAGE4): Keep strings below 2048 bytes. - -2005-05-02 Nozomu Ando - - * sysselect.h: Fix typo. - -2005-05-02 Nick Roberts - - * charset.c (Fchars_in_region): Remove as obsolete. - -2005-05-01 Kim F. Storm - - * xdisp.c (move_it_in_display_line_to): Stop if we move beyond - TO_CHARPOS. This may happen if last glyphs was an image or stretch - glyph. - -2005-05-01 Luc Teirlinck - - * dispnew.c (sit_for): Vexecuting_macro -> Vexecuting_kbd_macro. - -2005-05-01 Richard M. Stallman - - * xmenu.c [not HAVE_X_TOOLKIT] (xmenu_show): - If user cancels the menu, quit unless FOR_CLICK. - - * macros.c (Vexecuting_kbd_macro): Rename from Vexecuting_macro. - All uses changed. - (syms_of_macros): Define only executing-kbd-macro, not executing-macro. - * keyboard.c: Change Vexecuting_macro to Vexecuting_kbd_macro. - * macros.h (Vexecuting_kbd_macro): Declare instead of Vexecuting_macro. - * commands.h (Vexecuting_kbd_macro): Likewise. - -2005-05-01 Thien-Thi Nguyen - - * sysdep.c (get_frame_size) [VMS]: Use a fresh i/o channel. - -2005-04-30 Richard M. Stallman - - * fileio.c (Ffind_file_name_handler): Handle the `operations' - property of the file name handler. - (Qoperations): New variable. - (syms_of_fileio): Initialize and staticpro it. - - * xdisp.c (set_message_1): Delete xassert. - -2005-04-29 YAMAMOTO Mitsuharu - - * mac.c: Don't include time.h. Include sysselect.h after systime.h. - - * macfns.c (Fx_server_version): Add BLOCK_INPUT around Gestalt. - - * macgui.h [HAVE_CARBON && MAC_OSX]: Don't undefine/define mktime - before/after including Carbon.h if there is a working mktime. - -2005-04-28 Kim F. Storm - - * xfaces.c (resolve_face_name): Add arg SIGNAL_P. Calls changed. - Fix cyclic alias check. If alias loop is detected, signal - circular-list error if SIGNAL_P, and return Qdefault if !SIGNAL_P. - -2005-04-28 Lute Kamstra - - * eval.c (do_autoload): Record only autoloads in the autoload - property of symbols. - -2005-04-28 Nick Roberts - - * emacs.c (USAGE1): Add --basic-display and --quick options. - -2005-04-27 Kim F. Storm - - * data.c (syms_of_data) Staticpro Qcyclic_variable_indirection. - -2005-04-26 Richard M. Stallman - - * window.c (Fsame_window_p, Fspecial_display_p): Doc fixes. - (syms_of_window): Doc fixes. - - * indent.c (Fvertical_motion): Undo previous change. - -2005-04-26 Kenichi Handa - - * fns.c (char_table_range): New function. - (Fchar_table_range): Signal an error if characters in the range - have inconsistent values. Don't check the parent. - -2005-04-25 Kenichi Handa - - * fontset.c (fontset_set): Fix previous change. - -2005-04-24 Richard M. Stallman - - * indent.c (Fvertical_motion): Bind fontification-functions to nil. - -2005-04-24 Eli Zaretskii - - * regex.c (re_search_2, re_match_2_internal): Convert second arg - of RE_TRANSLATE to int, to shut up GCC warnings. - - * fileio.c (Fcopy_file): Doc fix. - [MSDOS]: Fix call to emacs_open: buffer_file_type not defined and - not needed. - -2005-04-24 YAMAMOTO Mitsuharu - - * Makefile.in [HAVE_CARBON] (MAC_OBJ): Add macselect.o. - (SOME_MACHINE_OBJECTS): Likewise. - (mac.o): Depend on ccl.h. - (macselect.o): New target. - - * emacs.c (main) [MAC_OS8 || MAC_OSX && HAVE_CARBON]: - Call syms_of_macselect. - - * frame.c (Fdelete_frame) [MAC_OS]: Call x_clear_frame_selections. - - * mac.c [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h. - (QCLIPBOARD): Remove variable. - (syms_of_mac): Don't initialize it. - (Fmac_paste_function, Fmac_cut_function, Fx_selection_exists_p): - Remove functions. - (syms_of_mac): Don't defsubr them. - [TARGET_API_MAC_CARBON] (Qmime_charset, QNFD, QNFKD, QNFC, QNFKC) - (QHFS_plus_D, QHFS_plus_C): New variables. - (syms_of_mac) [TARGET_API_MAC_CARBON]: Initialize them. - [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp) - (cfstring_create_normalized): New functions. - [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Likewise. - (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it. - - * macterm.c (handling_window_update, terminate_flag): - Remove variables. - (do_window_update, do_ae_quit_application, XTread_socket): - Don't use them. - (WNE_SLEEP_AT_SUSPEND, WNE_SLEEP_AT_RESUME): Don't define. - [USE_CARBON_EVENTS && MAC_OSX] (mac_handle_service_event) - (init_service_handler): Move to macselect.c. Remove declarations. - [USE_CARBON_EVENTS && MAC_OSX] (init_service_handler): Add extern. - (Qapplication, Qabout): New variables. - (syms_of_mac): Initialize them. - [USE_CARBON_EVENTS && MAC_OSX] (Qpreferences, Qservices, Qpaste) - (Qperform): New variables. - (syms_of_mac) [USE_CARBON_EVENTS && MAC_OSX]: Initialize them. - (do_get_menus) [TARGET_API_MAC_CARBON]: Don't call AppendResMenu. - (do_menu_choice): Unhighlight menu bar also when menu_id is 0. - (mac_store_application_menu_event, init_menu_bar): New functions. - [USE_CARBON_EVENTS] (mac_handle_command_event) - (init_command_handler): New functions. - (mac_handle_window_event): Return noErr on window update event. - (do_ae_quit_application): Call mac_store_application_menu_event. - (mac_initialize) [USE_CARBON_EVENTS]: Call init_command_handler - and init_menu_bar. - - * macterm.h (x_clear_frame_selections): Add extern. - - * macselect.c: New file for selection processing on Mac OS. - -2005-04-23 Richard M. Stallman - - * fileio.c (Fcopy_file): New arg MUSTBENEW. - (Frename_file): Pass new arg to Fcopy_file. - - * window.c (window_size_fixed): Variable deleted. - (syms_of_window): Initialize window-size-fixed to nil. - But don't DEFVAR window_size_fixed. - -2005-04-23 Andreas Schwab - - * m/macppc.h (LD_SWITCH_MACHINE) [LINUX]: Don't define. - (START_FILES, LIB_STANDARD) [LINUX && _ARCH_PPC64]: Override to - use lib64 instead of lib. - (_LP64) [_ARCH_PPC64]: Define if not defined. - -2005-04-23 David Hunter (tiny change) - - * s/ms-w32.h (HAVE_PWD_H): Define. - -2005-04-22 Kenichi Handa - - * fns.c (copy_sub_char_table): Explicitly copy the default value - of the sub-chartable. - - * fontset.c (fontset_set): When a sub-chartable is created, - explicitly sets the defalt value. - -2005-04-22 Kim F. Storm - - * fns.c (Fplist_get): Replace by Fsafe_plist_get. - (Fsafe_plist_get): Rename to Fplist_get. - (Fsafe_get): Remove, as Fget now uses safe Fplist_get. - (defsubr): Remove defsubr for Fsafe_plist_get and Fsafe_get. - - * lisp.h (Fsafe_plist_get, Fsafe_get): Remove EXFUN. - - * xdisp.c (store_mode_line_string, produce_stretch_glyph) - (note_mode_line_or_margin_highlight, note_mouse_highlight): - Use Fplist_get instead of Fsafe_plist_get. - - * xfaces.c (resolve_face_name): Use Fget instead of Fsafe_get. - -2005-04-21 Miles Bader - - * xdisp.c (dump_glyph_row): Don't display overlay_arrow_p field. - -2005-04-20 Thien-Thi Nguyen - - * sysdep.c: Remove reference to defunct vms-pwd.h. - * dired.c: Likewise. Also, for pwd.h, use HAVE_PWD_H, not !VMS. - * editfns.c, fileio.c, filelock.c, sysdep.c, xrdb.c: Likewise. - - * config.in: Regenerate. - -2005-04-20 Kenichi Handa - - * lisp.h (CHAR_TABLE_DEFAULT_SLOT_ASCII): New macro. - (CHAR_TABLE_DEFAULT_SLOT_8_BIT_CONTROL): New macro. - (CHAR_TABLE_DEFAULT_SLOT_8_BIT_GRAPHIC): New macro. - - * alloc.c (make_sub_char_table): Argument changed to initial - value of the slots. - - * data.c (Faref): Handle special slots used as default values of - ascii, eight-bit-control, eight-bit-control. Don't ignore a - default value set for a group of characters. - (Faset): Signal an error if IDXVAL is not a valid character code. - Make a sub-chartable with correct initial value. - - * fns.c (Fset_char_table_range): Don't set slots used as default - values for ascii, eight-bit-control, eight-bit-graphic. - Don't call Faref with charset-id. - (Fset_char_table_default): Document how to treat normal character - argument. Handle special slots used as default values of ascii, - eight-bit-control, eight-bit-control. Make a sub chartable if - necessary. - -2005-04-20 Kenichi Handa - - * search.c (boyer_moore): Fix previous change. - -2005-04-19 Kim F. Storm - - * xdisp.c (setup_for_ellipsis): Reset saved_face_id to use default - face unless last visible char and first invisible char have the - same face. Also use default face if saved_face_id is undefined. - -2005-04-19 YAMAMOTO Mitsuharu - - * macgui.h (MacFontStruct): Remove member `fontname'. Add member - `full_name'. - [TARGET_API_MAC_CARBON] (MacFontStruct): Use type int for - mac_scriptcode member. - - * macterm.c (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): Remove variables. - (syms_of_mac): Don't initialize them. - (Vmac_charset_info_alist): New variable. - (syms_of_mac): Defvar it. - (create_text_encoding_info_alist): New function. - (decode_mac_font_name, mac_to_x_fontname) - (x_font_name_to_mac_font_name, init_font_name_table): Don't hard - code the correspondence among XLFD charsets, Mac script codes, and - Emacs coding systems. Use Vmac_charset_info_alist and result of - create_text_encoding_info_alist instead. - (init_font_name_table) [TARGET_API_MAC_CARBON]: Use Font Manager - routines also on Mac OS Classic. - (init_font_name_table) [!TARGET_API_MAC_CARBON]: - Use add_font_name_table_entry. - (mac_do_list_fonts): Regard 0 in XLFD scaleble fields as - specified. Derive unspecified scalable fields from specified one. - (x_list_fonts): Consider Valternate_fontname_alist. - (kDefaultFontSize): Change value from 9 to 12. - (XLoadQueryFont): Get decoded font family, font face, and charset - from x_font_name_to_mac_font_name. Set full name of loaded font. - (mac_unload_font): Free `full_name' member. - (x_load_font): Don't try XLoadQueryFont if x_list_fonts returns - NULL. Copy full_name member of struct MacFontStruct to that of - struct font_info. - -2005-04-19 Kim F. Storm - - * xdisp.c (handle_stop): Set saved_face_id to current face if - selective_display_ellipsis_p so ellipsis will be shown in same - face as preceding text. - (setup_for_ellipsis): Don't set saved_face_id here. - (next_element_from_display_vector): Default to saved_face_id. - - * fns.c (Fsafe_get): New function. - (syms_of_fns): Defsubr it. - - * lisp.h (Fsafe_get): EXFUN it. - - * xfaces.c (resolve_face_name): Use Fsafe_get to avoid redisplay - loops in case of bad face property lists. Limit number of face - alias lookups to 10 (in case of face alias loops). - -2005-04-18 Kim F. Storm - - * dispextern.h (struct glyph_row): New member overlay_arrow_bitmap. - It replaces the corresponding member from struct window, as a - window may now show multiple overlay arrows. - Remove member overlay_arrow_p, superseeded by overlay_arrow_bitmap. - - * dispnew.c (row_equal_p, update_window_line, scrolling_window): - Compare overlay_arrow_bitmap than overlay_arrow_p members. - - * fringe.c (draw_fringe_bitmap): Use overlay_arrow_bitmap from row - rather than from window. - (update_window_fringes): Compare overlay_arrow_bitmap rather than - overlay_arrow_p members. - (Ffringe_bitmaps_at_pos): Return fringe overlay_arrow_bitmap name - if not default. - - * window.h (struct window): Remove member overlay_arrow_bitmap. - - * window.c (make_window): Don't initialize overlay_arrow_bitmap. - - * xdisp.c (overlay_arrow_string_or_property): Remove PBITMAP arg. - Calls changed. Don't check for overlay-arrow-bitmap property here. - (overlay_arrow_at_row): Remove PBITMAP arg. Instead, if left - fringe is present, return Lisp integer for bitmap (or -1 for default). - Fix value of overlay-arrow-bitmap property to be a symbol, use - lookup_fringe_bitmap to parse it. - (display_line): Change call to overlay_arrow_at_row. Store integer - return value as overlay bitmap in row rather than window. - Only show overlay arrow if row displays text, or if no other overlay - arrow is seen in window (if overlay marker is at point-max). - -2005-04-18 Thien-Thi Nguyen - - * xfaces.c (realize_x_face) [!HAVE_WINDOW_SYSTEM]: Return NULL. - -2005-04-18 Lute Kamstra - - * lread.c (Vloads_in_progress): Static. - * fns.c (Vloads_in_progress): Remove extern. - (load_in_progress): Add extern. - (Frequire): Use load_in_progress instead of Vloads_in_progress. - -2005-04-18 Thien-Thi Nguyen - - * xmenu.c (Fx_popup_menu): Initialize error_name to NULL. - -2005-04-18 YAMAMOTO Mitsuharu - - * macterm.c (XTread_socket): Don't beep on keyboard input even if - no frame is visible. - -2005-04-16 Dan Nicolaescu - - * term.c (struct keys): Add support for shifted keys. - -2005-04-16 Richard M. Stallman - - * xdisp.c (with_echo_area_buffer): Delete WHICH < 0 case. - (set_message): Call with_echo_area_buffer with WHICH = 0. - (set_message_1): Erase the echo area buffer first thing. - (echo_area_display): Don't clear echo_message_buffer. - -2005-04-16 YAMAMOTO Mitsuharu - - * Makefile.in (mac.o): Depend on charset.h and coding.h. - - * mac.c: Include charset.h and coding.h. - [TARGET_API_MAC_CARBON] (Qutf_8): Remove extern. - [TARGET_API_MAC_CARBON] (cfstring_create_with_string): New function. - [TARGET_API_MAC_CARBON] (Fmac_get_preference): Use it. - - * macfns.c [TARGET_API_MAC_CARBON] (Fx_file_dialog): Likewise. - - * image.c [MAC_OSX] (image_load_quartz2d): Likewise. - - * macterm.c (x_autoselect_window_p): Remove variable. - (last_window): New variable. - (XTreassert_line_highlight, x_change_line_highlight): - Remove declarations. - (mac_focus_changed, x_detect_focus_change): New functions and - declarations. - (XTextExtents16, front_emacs_window): Remove function. - (mac_focus_frame): New function. - (XTmouse_position, do_menu_choice, do_zoom_window, XTread_socket) - (mac_check_for_quit_char): Use it instead of front_emacs_window. - (x_scroll_bar_report_motion): Obtain window from control owner. - (x_make_frame_invisible): Set window manager size hint. - (do_mouse_moved): Remove function. - (XTread_socket): Move its contents here. Generate select-window - event on mouse movement if needed. Use x_detect_focus_change on - activate/deactivate events. Don't deiconify frame or invalidate - window rectangle when dnd items are dropped. - Don't activate/deactivate root control. - (frame_highlight, frame_unhighlight): Activate/deactivate root - control here. - (syms_of_macterm): Delete DEFVAR_BOOL for x_autoselect_window_p. - - * macterm.h (cfstring_create_with_string) [TARGET_API_MAC_CARBON]: - New extern. - -2005-04-15 Luc Teirlinck - - * Makefile.in: Define new macro TOOLTIP_SUPPORT. - (lisp): Use it. - (SOME_MACHINE_LISP): Add tooltip. - -2005-04-14 YAMAMOTO Mitsuharu - - * mac.c [!TARGET_API_MAC_CARBON]: Include MacLocales.h. - Don't include TextEncodingConverter.h. - (mac_system_script_code, Vmac_system_locale): New variables. - (syms_of_mac): Defvar them. - (mac_get_system_locale): New function. - - * macfns.c (x_set_name, x_set_title) [!TARGET_API_MAC_CARBON]: - Use ENCODE_SYSTEM to encode title bar string. - (x_create_tip_frame): Apply 2005-03-18 change for xfns.c. - (Fx_file_dialog) [TARGET_API_MAC_CARBON && !MAC_OSX]: - Use CFStringGetSystemEncoding to get system default string encoding. - - * macterm.c [!TARGET_API_MAC_CARBON]: Don't include - TextEncodingConverter.h. - -2005-04-13 Steven Tamm - - * macterm.c (syms_of_macterm): Remove redundant definition of - mac-pass-control-to-system. - -2005-04-12 Stefan Monnier - - * window.c (Fset_window_configuration): Be careful when you choose - among several possible points for the new_current_buffer. - -2005-04-12 YAMAMOTO Mitsuharu - - * keyboard.c (poll_for_input) [SYNC_INPUT]: Don't call - poll_for_input_1. Set interrupt_input_pending to 1 instead. - (Qlanguage_change) [MAC_OS]: New variable. - (syms_of_keyboard) [MAC_OS]: Intern and staticpro it. - (kbd_buffer_get_event) [MAC_OS]: Make event for LANGUAGE_CHANGE_EVENT. - - * macterm.c (mac_keyboard_text_encoding) - (current_mac_keyboard_text_encoding): Remove variables. - (XTread_socket): Store language-change event if keyboard script change - is detected. Don't convert input to `mac_keyboard_text_encoding'. - (syms_of_macterm): Delete DEFVAR_INT for mac-keyboard-text-encoding. - - * termhooks.h (enum event_kind) [MAC_OS]: Add LANGUAGE_CHANGE_EVENT. - -2005-04-10 Richard M. Stallman - - * emacs.c (standard_args): Rename --bare-bones to --quick. - Add -D aka --basic-display. - - * buffer.c (Fmake_indirect_buffer): Clear out some local variables. - -2005-04-09 Richard M. Stallman - - * keymap.c (where_is_internal): Convert a string used as event type - into "(any string)". - - * lread.c (Vloads_in_progress): Not static. - * fns.c (Vloads_in_progress): Add extern. - (Frequire): Don't do LOADHIST_ATTACH if Vloads_in_progress is nil. - -2005-04-09 Thien-Thi Nguyen - - * dispnew.c (mirror_line_dance): Avoid crash if W2 is null. - -2005-04-09 Lute Kamstra - - * print.c (PRINTPREPARE): Check if the marker PRINTCHARFUN is - within the accessible part of the buffer. - -2005-04-09 Kim F. Storm - - * lread.c (readevalloop): Add args START and END as region in - current buffer to read. Callers changed. - When specified, narrow to this region only when reading, - not during eval. Track next point to read from during eval. - Also restore point to "real" buffer position before eval. - (Feval_region): Don't save excursion and restriction here, and - don't narrow to region. Just pass region to readevalloop. - Note: Point is now preserved even when PRINTFLAG is nil. - -2005-04-08 Kim F. Storm - - * xdisp.c (syms_of_xdisp): Init overlay-arrow-string to "=>". - -2005-04-06 Kim F. Storm - - * emacs.c (standard_args): Add -Q, --bare-bones, -bare-bones. - -2005-04-06 YAMAMOTO Mitsuharu - - * mac.c (cfdate_to_lisp): Add `const' for variable `epoch_gdate'. - (Fmac_get_preference): Doc fix. - - * macfns.c (Fx_create_frame, x_create_tip_frame): - Add "fontset-mac" to fallback font/fontsets. - -2005-04-04 Kim F. Storm - - * alloc.c (Fgarbage_collect): Call CHECK_CONS_LIST before and after gc. - - * eval.c (Ffuncall): Always call CHECK_CONS_LIST on entry. - Call it again after autoload. - -2005-04-02 Jan Dj,Ad(Brv - - * alloc.c (allocate_string_data): Call BLOCK_INPUT before calling - mallopt. - - * ralloc.c (r_alloc_init): Ditto. - -2005-04-01 Kenichi Handa - - * lisp.h (Vascii_upcase_table, Vascii_canon_table) - (Vascii_eqv_table): Extern them. - - * casetab.c (set_case_table): If standard is nonzero, setup - Vascii_upcase_table, Vascii_canon_table, and Vascii_eqv_table. - - * search.c (looking_at_1): Use current_buffer->case_canon_table, - not DOWNCASE_TABLE. - (string_match_1): Likewise. - (fast_c_string_match_ignore_case): Use Vascii_canon_table, not - Vascii_downcase_table. - (fast_string_match_ignore_case): Likewise. - (search_buffer): Fix checking of boyer-moore usability. - (boyer_moore): Calculate translate_prev_byte1/2/3 in advance. - No need of tranlating characters in PAT. Fix calculation of - simple_translate. - -2005-03-31 Stefan Monnier - - * xterm.c [HAVE_XAW3D]: Include ThreeD.h for XtNbeNiceToColormap. - (x_create_toolkit_scroll_bar): Test XtNbeNiceToColormap before using it. - Use XtNtopShadowPixel and XtNbottomShadowPixel. - (x_set_toolkit_scroll_bar_thumb): Remove ugly old hack that didn't - really work and that breaks with some versions of Xaw3d. - -2005-03-31 Kenichi Handa - - * coding.c (syms_of_coding): Fix previous change. - -2005-03-30 Stefan Monnier - - * fileio.c (search_embedded_absfilename): Fix last change. - -2005-03-25 Kenichi Handa - - * coding.c (syms_of_coding): Suggest to use set-coding-category in - the docstring of coding-category-list. - -2005-03-31 Kim F. Storm - - * keyboard.c (Qmouse_fixup_help_message): New var. - (syms_of_keyboard): Intern and staticpro it. - (show_help_echo): Apply mouse-fixup-help-message to help string. - -2005-03-30 Kim F. Storm - - * xdisp.c (display_line): Allow multiple overlay arrows in window. - -2005-03-28 Stefan Monnier - - * fileio.c (Fexpand_file_name): Use IS_DEVICE_SEP. - (file_name_absolute_p): New fun, extracted from Ffile_name_absolute_p. - (Ffile_name_absolute_p): Use it. - (search_embedded_absfilename): New fun, extracted from - Fsubstitute_in_file_name. Use file_name_absolute_p. - Free the pw data after use. - (Fsubstitute_in_file_name): Use it. - After cutting a prefix, re-check file-name-handler. - -2005-03-26 Lennart Borgman - - * w32term.h (x_output): Add focus_state. - - * w32term.c (x_focus_changed, w32_detect_focus_change): New functions. - (w32_read_socket) : Call w32_detect_focus_change. - -2005-03-25 Stefan Monnier - - * minibuf.c (Fminibuffer_complete_and_exit, Fself_insert_and_exit): - Use Fexit_minibuffer. - (Fexit_minibuffer): Mark it as no-return, deactivate the mark. - -2005-03-24 Stefan Monnier - - * dired.c (Ffile_attributes): Add a missing gcpro. - - * alloc.c (make_number): The arg can be bigger than `int'. - * lisp.h (make_number): Make prototype more precise. - - * process.c, dired.c (Vfile_name_coding_system) - (Vdefault_file_name_coding_system): - * callproc.c (Vdoc_file_name, Vfile_name_coding_system) - (Vdefault_file_name_coding_system): Remove unused declarations. - -2005-03-24 Jan Dj,Ad(Brv - - * xmenu.c (create_and_show_popup_menu): Just remove menu and return - if it failed to pop up (Gnome "show pointer on ctrl" option makes - menus fail to pop up). - -2005-03-24 Stefan Monnier - - * xdisp.c (get_next_display_element): Also use `\ ' & `\-' for latin-9. - Just prepend a backslash without replacing the NBSP by an SPC. - -2005-03-22 Kim F. Storm - - * xfaces.c (lookup_derived_face): Add arg SIGNAL_P. - * dispextern.h (lookup_derived_face): Fix prototype. - * msdos.c (XMenuActivate): Fix call to lookup_derived_face. - - * xdisp.c (handle_single_display_spec): Derive left-fringe and - right-fringe face from fringe face. - - * fringe.c (draw_fringe_bitmap_1, Fset_fringe_bitmap_face): - Derive face from fringe face. - -2005-03-22 Jan Dj,Ad(Brv - - * xrdb.c (x_load_resources): Undo previous change (2005-03-18). - -2005-03-22 David Kastrup - - * textprop.c (Fnext_char_property_change) - (Fprevious_char_property_change): Allow marker as limit. - (Fnext_single_char_property_change) - (Fprevious_single_char_property_change): Check that limit is a - number in strings. - (Fnext_single_char_property_change): Coerce position to integer. - (Fprevious_single_char_property_change): Same here. - -2005-03-21 Thien-Thi Nguyen - - * s/openbsd.h (LD_SWITCH_SYSTEM_tmp): Define if undefined. - -2005-03-19 Stefan Monnier - - * frame.c (Fignore_event): Remove. - (syms_of_frame): Don't defsubr it. - - * keyboard.c (keys_of_keyboard): Just use `ignore' instead of the - redundant `ignore-event'. - -2005-03-19 Eli Zaretskii - - * unexec.c (write_segment, unexec): Move these functions to avoid - forward references (which cause errors with "gcc -gcoff"). - -2005-03-18 Jan Dj,Ad(Brv - - * xfns.c (x_create_tip_frame): Remove setting of Vx_resource_name so - that it doesn't become "tooltip". The specbind is enough. - - * xrdb.c (x_load_resources): Use different char *helv when I18N - is present. - -2005-03-17 Kenichi Handa - - * coding.c (syms_of_coding): Docstring of coding-category-list fixed. - -2005-03-17 Stefan Monnier - - * xfaces.c (x_update_menu_appearance) [HAVE_X_I18N]: - Use xic_create_fontsetname even for non-Motif menus. - Don't forget to free the fontsetname. - - * xfns.c (xic_create_fontsetname): Add a final catch-all font pattern. - -2005-03-17 Richard M. Stallman - - * dispnew.c (mirror_line_dance): Set W2 according to FRAME_FROM. - - * fileio.c (Fcopy_file, Frename_file, Fadd_name_to_file) - (Fmake_symbolic_link): Use G to read the new file name. - - * callint.c (Finteractive): Document G option. - (Fcall_interactively): Implement G option. - - * buffer.c (buffer_lisp_local_variables): New function, - broken out from Fbuffer_local_variables. - (clone_per_buffer_values): Use buffer_lisp_local_variables. - -2005-03-17 Stefan Monnier - - * xfns.c (xic_create_fontsetname): Add `motif' argument. - Always return a freshly allocated string. - (xic_create_xfontset): Adjust call. - - * xfaces.c (x_update_menu_appearance) [USE_MOTIF]: - Use xic_create_fontsetname to create a fontset so utf-8 locales work. - (dump_realized_face): Fix warning. - - * emacs.c (Fkill_emacs): YAILOM. - - * frame.c (Fignore_event): Fix ancient obscure C-u handling bug. - -2005-03-17 YAMAMOTO Mitsuharu - - * mac.c (HASHKEY_TERMINAL): Remove. - (HASHKEY_MAX_NID): New macro. - (xrm_q_get_resource_1): Rename from xrm_q_get_resource. Add extra - argument. - (xrm_q_get_resource): Call xrm_q_get_resource_1 with extra argument. - (xrm_create_database, xrm_q_put_resource) - (xrm_merge_string_database, xrm_q_get_resource_1) - (xrm_q_get_resource): Change resource database representation so - that it may not use multiple hash tables for a single database. - [TARGET_API_MAC_CARBON] (xrm_cfproperty_list_to_value): YAILOM. - -2005-03-16 Stefan Monnier - - * xmenu.c (ENCODE_MENU_STRING) [HAVE_X_I18N]: Use ENCODE_SYSTEM. - - * coding.h (ENCODE_SYSTEM, DECODE_SYSTEM) [!WINDOWSNT]: Use the - locale-coding-system, as was already done for WINDOWSNT. - - * keyboard.c (read_char): Only do the 7-bit-meta -> 27-bit-meta - translation for chars in the 0-255 range. - -2005-03-16 Lute Kamstra - - * floatfns.c (Ffloor): Doc fix. - -2005-03-16 YAMAMOTO Mitsuharu - - * mac.c: Include macterm.h instead of directly including Carbon.h. - [TARGET_API_MAC_CARBON] (Qstring, Qnumber, Qboolean, Qdate, Qdata) - (Qarray, Qdictionary): New variables. - (syms_of_mac) [TARGET_API_MAC_CARBON]: Initialize them. - [TARGET_API_MAC_CARBON] (Qutf_8): Add extern. - [TARGET_API_MAC_CARBON] (DECODE_UTF_8): New macro. - [TARGET_API_MAC_CARBON] (struct cfdict_context): New struct used - in callback for CFDictionaryApplyFunction. - [TARGET_API_MAC_CARBON] (cfdata_to_lisp, cfstring_to_lisp) - (cfnumber_to_lisp, cfdate_to_lisp, cfboolean_to_lisp) - (cfobject_desc_to_lisp, cfdictionary_add_to_list) - (cfdictionary_puthash, cfproperty_list_to_lisp): New functions. - [TARGET_API_MAC_CARBON] (Fmac_get_preference): New function. - (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it. - (P, LOOSE_BINDING, SINGLE_COMPONENT, HASHKEY_TERMINAL): New macro. - (skip_white_space, parse_comment, parse_include_file) - (parse_binding, parse_component, parse_resource_name, parse_value) - (parse_resource_line, xrm_create_database, xrm_q_put_resource) - (xrm_merge_string_database, xrm_q_get_resource, xrm_get_resource) - (xrm_cfproperty_list_to_value, xrm_get_preference_database): - New functions. - - * macfns.c (mac_get_rdb_resource): Remove function. - (x_get_string_resource): Use xrm_get_resource. - - * macgui.h (XrmDatabase): Typedef to Lisp_Object. - - * macterm.c (x_list_fonts): FONT-LIST-CACHE is now cadr part of - name_list_element. - (mac_make_rdb): Create resource database from preferences and - argument string. - (mac_term_init): Save resource database to cddr part of - name_list_element. - - * macterm.h (xrm_merge_string_database, xrm_get_resource) - (xrm_get_preference_database): Add externs. - [TARGET_API_MAC_CARBON] (cfdata_to_lisp, cfstring_to_lisp) - (cfnumber_to_lisp, cfdate_to_lisp, cfboolean_to_lisp) - (cfobject_desc_to_lisp, cfproperty_list_to_lisp): Likewise. - - * process.c (init_process): Change `#ifdef DARWIN' to `#if - defined (DARWIN) || defined (MAC_OSX)' - - * s/darwin.h (DARWIN): Don't define. - -2005-03-16 YAMAMOTO Mitsuharu - - * macfns.c (Qhyper, Qsuper, Qmeta, Qalt, Qctrl, Qcontrol, Qshift): - Remove unused variables. - (syms_of_macfns): Don't initialize them. Likewise for - Qface_set_after_frame_default. Defvar and initialize - Vx_window_horizontal_drag_shape. - (x_set_mouse_color): Change mouse pointer shape. - (mac_window) [!MAC_OSX]: Create root control. - (Fx_create_frame): Remove initializations of mouse pointer shapes. - (hourglass_started): New function (from xfns.c). - (start_hourglass, cancel_hourglass): Put function body in #ifdef - MAC_OSX. - (show_hourglass) [TARGET_API_MAC_CARBON]: Create progress - indicator for each non-tooltip frame if needed, and show it. - (hide_hourglass) [TARGET_API_MAC_CARBON]: Hide progress indicators. - - * macgui.h [!TARGET_API_MAC_CARBON]: Include Appearance.h and - Controls.h. Use ThemeCursor instead of CursHandle. - - * macterm.c (activate_scroll_bars, deactivate_scroll_bars): - Remove functions and declarations. - (mac_set_colors): Take argument for saving background color. - All callers changed. - (XDrawLine, XClearArea, mac_draw_bitmap, XFillRectangle) - (mac_draw_rectangle, mac_draw_string_common): Save and Restore - background color. - (x_update_end, mac_do_track_drag): Don't reset background color. - (mac_define_frame_cursor) [!TARGET_API_MAC_CARBON]: - Use SetThemeCursor. - (x_set_window_size) [TARGET_API_MAC_CARBON]: Move progress - indicator control to the upper-right corner of the window. - (arrow_cursor) [!TARGET_API_MAC_CARBON]: Remove variable. - (do_init_managers) [!TARGET_API_MAC_CARBON]: Don't initialize it. - (do_window_update): Update controls after updating content area. - (mac_handle_window_event): Remove unused extern. - (XTread_socket): Check both control handle and control part code - to determine whether a scroll bar is clicked. Activate/deactivate - root control instead of contained scroll bar controls. - (make_mac_terminal_frame): Use ThemeCursor constants. - - * macterm.h (struct mac_output) [TARGET_API_MAC_CARBON]: - New member hourglass_control. - (HOURGLASS_WIDTH, HOURGLASS_HEIGHT): New defines. - (activate_scroll_bars, deactivate_scroll_bars): Remove declarations. - -2005-03-15 YAMAMOTO Mitsuharu - - * macterm.c (keycode_to_xkeysym_table): Change mapping so that it - coincides with that in Apple X11 except `clear', `enter' on - laptops, and fn + `enter' on laptops. - -2005-03-12 Stefan Monnier - - * xmenu.c (ENCODE_MENU_STRING): Explicitly use string_make_unibyte. - (list_of_panes, list_of_items, Fx_popup_menu): Use XCAR/XCDR. - (digest_single_submenu, xmenu_show): Use ENCODE_MENU_STRING. - - * xfns.c (xic_defaut_fontset): New constant. - (xic_create_fontsetname): New function. - Extracted from create_frame_xic. Try to generate a slightly - better fontset. - (xic_create_xfontset): Use it. - (create_frame_xic): Simplify. - -2005-03-11 Stefan Monnier - - * fileio.c (Fmake_symbolic_link): Fix last change. - -2005-03-11 Richard M. Stallman - - * fileio.c (Frename_file, Fadd_name_to_file) - (Fmake_symbolic_link): If NEWNAME or LINKNAME is a directory, - expand the basename of FILE relative to it. - -2005-03-11 Kenichi Handa - - * fileio.c (Finsert_file_contents): Call Fcheck_coding_system - before calling setup_coding_system so that autoloading of a coding - system work. - -2005-03-10 Jan Dj,Ad(Brv - - * xfns.c (hourglass_started): New function. - - * dispextern.h: Declare hourglass_started. - - * keyboard.c (Fexecute_extended_command): Restart hourglass - after call to Fcompleting_read if already started. - - * gtkutil.c (xg_update_scrollbar_pos): Call x_sync so that the - GTK main loop is entered in xterm.c, thus doing the redraw. - -2005-03-10 Kim F. Storm - - * xdisp.c (pos_visible_p): Fix X value in last line of buffer. - -2005-03-08 Kenichi Handa - - * frame.c (x_set_font): Call set_default_ascii_font if an - available font is found. - - * fontset.c (set_default_ascii_font): New function. - (syms_of_fontset): Don't set FONTSET_ASCII (Vdefault_fontset) here. - - * fontset.h (set_default_ascii_font): Extern it. - -2005-03-07 Kim F. Storm - - * xdisp.c (CLEAR_IMAGE_CACHE_COUNT): New const. - (clear_image_cache_count): New var. - (redisplay_internal): Don't clear face and image caches in the - middle of redisplay; do it afterwards. - - * blockinput.h (TOTALLY_UNBLOCK_INPUT): Avoid dangling else. - - * xdisp.c (notice_overwritten_cursor): Check that phys_cursor.vpos - is valid. If not, clear phys_cursor_on_p and return. - -2005-03-07 Andreas Schwab - - * blockinput.h (UNBLOCK_INPUT_TO): Always call UNBLOCK_INPUT. - -2005-03-06 Richard M. Stallman - - * keyboard.c (Ftop_level): Let Fthrow deal with UNBLOCK_INPUT. - - * eval.c (unwind_to_catch): Use UNBLOCK_INPUT_TO. - (Feval, Ffuncall): Use CHECK_CONS_LIST. - - * lisp.h (CHECK_CONS_LIST): New macro (two definitions). - - * blockinput.h (UNBLOCK_INPUT_TO): New macro. - (TOTALLY_UNBLOCK_INPUT): Handle a pending signal if any. - -2005-03-05 Juri Linkov - - * emacs.c (USAGE1): Replace Info node name "command arguments" - with "emacs invocation". - (USAGE3): Fix usage of `--color=MODE' which actually doesn't - allow arguments `--color' and `MODE' to be separated by space. - Add --no-blinking-cursor, -nbc. - (standard_args): Add -nbc, --no-blinking-cursor. - -2005-03-04 Thien-Thi Nguyen - - * s/vms.h: Define NO_HYPHENS_IN_FILENAMES. - * s/vms4-4.h, s/vms5-5.h: Undefine NO_HYPHENS_IN_FILENAMES. - * fileio.c (Fexpand_file_name) [VMS]: - Use NO_HYPHENS_IN_FILENAMES, not VMS4_4. - * doc.c (munge_doc_file_name) [VMS]: Likewise. - (Fsnarf_documentation): Call munge_doc_file_name. - -2005-03-04 Thien-Thi Nguyen - - * s/vms.h (FILE_SYSTEM_CASE): New macro. - * fileio.c (Fexpand_file_name) [VMS]: Don't upcase the name - "manually"; this is now handled generally via FILE_SYSTEM_CASE. - -2005-03-04 YAMAMOTO Mitsuharu - - * emacs.c (main): Change `#ifdef HAVE_CARBON' to `#if - defined (MAC_OSX) && defined (HAVE_CARBON)'. - - * image.c [!MAC_OSX && TARGET_API_MAC_CARBON]: Include QuickTime.h. - - * mac.c [!MAC_OSX && HAVE_CARBON]: Include Carbon.h. - [!MAC_OSX] (select) [TARGET_API_MAC_CARBON]: Use ReceiveNextEvent. - (posix_pathname_to_fsspec, fsspec_to_posix_pathname): New functions. - (mac_clear_font_name_table): Move extern to macterm.h. - - * macfns.c (install_window_handler): Move extern to macterm.h. - (Fx_file_dialog): Check STRINGP (default_filename) to see it is - valid. Don't check !NILP (dir) because it is already checked with - CHECK_STRING. - (Fx_file_dialog) [!MAC_OSX]: Use FSSpec instead of FSRef for - specifying the default location and obtaining the selected filename. - - * macgui.h [!MAC_OSX && HAVE_CARBON]: Include Carbon.h. - - * macmenu.c [TARGET_API_MAC_CARBON]: Don't include headers that - are included via Carbon.h. - - * macterm.c [TARGET_API_MAC_CARBON && !MAC_OSX]: - Define USE_CARBON_EVENTS to 1. - (qd) [__MRC__ && TARGET_API_MAC_CARBON]: Don't declare. - (x_free_frame_resources): Call remove_window_handler for - non-tooltip windows. - [TARGET_API_MAC_CARBON]: Don't include headers that are included - via Carbon.h. - [TARGET_API_MAC_CARBON] (mac_do_track_dragUPP) - (mac_do_receive_dragUPP): New variables. - (mac_handle_service_event, init_service_handler): Put declarations - and definitions in #ifdef MAC_OSX. - (install_window_handler) [TARGET_API_MAC_CARBON]: Create UPPs for - drag-and-drop handler functions and register them. - (remove_window_handler): New function. - (do_ae_open_documents, mac_do_receive_drag) [!MAC_OSX]: - Use fsspec_to_posix_pathname. - (main): Change #if !TARGET_API_MAC_CARBON to #ifdef MAC_OS8. - (XTread_socket) [!MAC_OSX]: Don't pass keyboard events to TSM. - [MAC_OS8] (make_mac_terminal_frame) [TARGET_API_MAC_CARBON]: - Set default cursors. - (mac_initialize) [USE_CARBON_EVENTS && !MAC_OSX]: Don't call - init_service_handler or init_quit_char_handler. - (mac_initialize) [!MAC_OSX]: Don't call MakeMeTheFrontProcess. - - * macterm.h (install_window_handler, remove_window_handler) - (posix_pathname_to_fsspec, fsspec_to_posix_pathname) - (mac_clear_font_name_table): New externs. - -2005-03-03 Thien-Thi Nguyen - - * fileio.c (FILE_SYSTEM_CASE): Define macro if not already defined. - (Ffile_name_directory): Use FILE_SYSTEM_CASE unconditionally. - (Fexpand_file_name): Likewise. - -2005-03-03 Thien-Thi Nguyen - - * emacs.c (Fkill_emacs): Use EXIT_SUCCESS; - no longer special-case VMS. Add bogus return value. - -2005-03-02 Kim F. Storm - - * dispextern.h (XASSERTS): Define to 0 if not already defined. - (xassert) [!XASSERTS]: Define dummy version. - -2005-03-02 Kim F. Storm - - * xdisp.c (redisplay_window): YABX (yet another bogus xassert). - Reported by David Kastrup. - -2005-03-01 Ehud Karni - - * xdisp.c (get_next_display_element): Fix control and escape - glyph from display vector. - -2005-03-01 Stefan Monnier - - * keyboard.c (Fposn_at_x_y): Check integerness of X and Y. - -2005-02-27 Richard M. Stallman - - * xdisp.c (fast_find_position): Rename END to BEG. - (syms_of_xdisp) : Doc fix. - -2005-02-27 Jan Dj,Ad(Brv - - * gtkutil.c (xg_resize_outer_widget): Remove unneeded call to - gtk_window_resize and x_wm_set_size_hint. - -2005-02-25 Kim F. Storm - - * dispextern.h (OVERLAY_STRING_CHUNK_SIZE): Increase from 3 to 16. - - * xdisp.c (init_from_display_pos): Don't read past end of - it->overlay_strings array. - -2005-02-25 Stephan Stahl (tiny change) - - * buffer.c (syms_of_buffer): Fix typo. - -2005-02-23 Lute Kamstra - - * buffer.c (Foverlay_buffer): Doc fix. - -2005-02-22 Kim F. Storm - - * minibuf.c (Ftry_completion, Fall_completions): Allow both string - and symbol keys in alists and hash tables. - - * xdisp.c (fast_find_position): Fix search for start of overlay. - -2005-02-21 Kim F. Storm - - * window.c (window_scroll_pixel_based): When scrolling backwards, - handle partial visible line at end of window even when we hit PT. - -2005-02-21 Stefan Monnier - - * keymap.h: Declare Fcurrent_active_maps, used in doc.c. - -2005-02-21 Kim F. Storm - - * xdisp.c (move_it_vertically_backward): Eliminate two xasserts. - I think those asserts are bogus if buffer contains invisible text - or images. - -2005-02-21 David Kastrup - - * gtkutil.c (xg_create_frame_widgets): UNBLOCK_INPUT on error. - -2005-02-20 Kim F. Storm - - * xdisp.c (pos_visible_p): Be sure to move to the specified - position. Always get the full ascent / descent of the - corresponding row, to return reliable rtop and rbot values. - (back_to_previous_visible_line_start): Fix 2005-01-18 change. - Must look one character back, as back_to_previous_line_start - returns position after the newline. - (move_it_vertically_backward): Fix heuristic for when to move further - back in case line_height * 2/3 is larger than window height. - (cursor_row_fully_visible_p): Rename make_cursor_line_fully_visible_p - as it does not do anything anymore. Add arg current_matrix_p to - use current matrix rather than desired matrix when set. - (try_cursor_movement): Don't scroll to make cursor row fully - visible if cursor didn't move. This avoids unexpected recentering - in case of blinking cursor or accepting process output. - Use current matrix to check cursor row visibility. - (redisplay_window): Fix whether to recenter or move to top in case - cursor line is taller than window height. - (find_first_unchanged_at_end_row): Stop search if we reach a row - which not enabled (instead of abort). - -2005-02-18 Kim F. Storm - - * xfaces.c (Finternal_set_lisp_face_attribute): Allow :color property - to be nil in a :box attribute value list; customize prints that - as lisp value when no box color is specified. - - * .gdbinit (pitx, pit): Pretty print display iterator. - (prowx, prow): Pretty print glyph row. - (pcursorx, pcursor): Pretty print a window cursor. - (pwinx, pwin): Pretty print struct window. - -2005-02-18 Stefan Monnier - - * alloc.c (BLOCK_BYTES): Harmless typo. - -2005-02-17 Andreas Schwab - - * xfns.c (hack_wm_protocols): Use correct type for last parameter - of XGetWindowProperty to avoid aliasing issues. - (Fx_window_property): Likewise. - - * xselect.c (Fx_disown_selection_internal): Use union of struct - input_event and struct selection_input_event to avoid aliasing issues. - - * xterm.c (handle_one_xevent): Use union of struct input_event and - struct selection_input_event to avoid aliasing issues. - (SET_SAVED_MENU_EVENT): Adapt reference to inev. - -2005-02-17 Kim F. Storm - - * dispextern.h (enum it_method): New enum. - (GET_FROM_*): Its members. - (struct it): Change member method from function pointer to enum. - - * xdisp.c (check_it, init_from_display_pos, handle_stop) - (setup_for_ellipsis, handle_single_display_spec) - (handle_composition_prop, next_overlay_string) - (get_overlay_strings, reseat_1, reseat_to_string) - (next_element_from_ellipsis, BUFFER_POS_REACHED_P) - (in_display_vector_p, display_line, get_next_display_element): - Change it->method from function pointer to enum. - (get_next_element): New array to map it->method to function. - (get_next_display_element): Use it. - (set_iterator_to_next): Use switch instead of if/else chain. - -2005-02-15 Benjamin Riefenstahl - - * w32select.c: Summary: Thorough rework to implement Unicode - clipboard operations and delayed rendering. - - Drop last_clipboard_text and related code, keep track of - ownership via clipboard_owner instead. Drop old #if0 sections. - - (DEFAULT_LCID, ANSICP, OEMCP, QUNICODE, QANSICP, QOEMCP) - (clipboard_owner, modifying_clipboard, cfg_coding_system) - (cfg_codepage, cfg_lcid, cfg_clipboard_type, current_text) - (current_coding_system, current_requires_encoding) - (current_num_nls, current_clipboard_type, current_lcid): - New static variables. - - (convert_to_handle_as_ascii, convert_to_handle_as_coded) - (render, render_all, run_protected, lisp_error_handler) - (owner_callback, create_owner, setup_config) - (enum_locale_callback, cp_from_locale, coding_from_cp): - New local functions. - - (term_w32select, globals_of_w32select): New global functions. - - (Fw32_set_clipboard_data): Ignore parameter FRAME, use - clipboard_owner instead. Use delayed rendering and provide - all text formats. Provide CF_LOCALE if necessary. - - (Fw32_get_clipboard_data): Handle CF_UNICODETEXT and - CF_LOCALE. Fall back to CF_TEXT, if CF_UNICODETEXT is not - available. Force DOS line-ends for decoding. - - (Fx_selection_exists_p): Handle CF_UNICODETEXT. - - (syms_of_w32select): Init and register new variables. - - * w32.h: Add prototypes for globals_of_w32select and - term_w32select. Make the neighboring K&R declarations into - prototypes, too. - - * emacs.c: Include w32.h to get function prototypes. - (main): Call globals_of_w32select. - - * w32.c (term_ntproc): Call term_w32select. - - * s/ms-w32.h: Guard MSC-specific #pragmas with an #ifdef. - -2005-02-16 Kim F. Storm - - * xdisp.c (BUFFER_POS_REACHED_P): Return true if pos reached and - at end of display vector. - -2005-02-15 Richard M. Stallman - - * xdisp.c (get_next_display_element): Fix escape-glyph criterion - for mode and header lines. - - * lread.c (syms_of_lread) : Doc fix. - - * keymap.h (describe_map_tree): Change decl. - - * keyboard.c (command_loop_1): Always use safe_run_hooks - to run Qdeferred_action_function. - - * keymap.c (describe_map_tree): New arg MENTION_SHADOW. Calls changed. - (describe_map, describe_vector): Likewise. When it's 1, - don't omit shadowed bindings, instead mark them as shadowed. - - * doc.c (Fsubstitute_command_keys): Compute list of shadowing maps - for describe_map_tree. Pass 1 for MENTION_SHADOW. - - * data.c (Fsetq_default): Allow no arg case. - -2005-02-14 Kenichi Handa - - * coding.c (encode_coding_string): Always return a unibyte string. - If NOCOPY is nonzero and there's no need of encoding, make STR - unibyte directly. - - * xselect.c (lisp_data_to_selection_data): If OBJ is a non-ASCII - multibyte string, signal an error instead of aborting. - -2005-02-12 Dan Nicolaescu - - * keyboard.c: If HAVE_FCNTL_H include fcntl.h. - -2005-02-12 Kim F. Storm - - * xdisp.c (expose_window): Don't fix overlaps for mode lines. - -2005-02-10 Kim F. Storm - - * xdisp.c (try_window_id): Set first_unchanged_at_end_row to NULL - if it moves outside window or it doesn't display text. - -2005-02-09 Kim F. Storm - - * undo.c (Fprimitive_undo): Check that undo function does not - switch buffer. - -2005-02-08 Jan Dj,Ad(Brv - - * xselect.c (selection_data_to_lisp_data): For the special case - type == XA_ATOM, data contains array of int, not array of Atom. - (x_property_data_to_lisp, selection_data_to_lisp_data): - Comment update: data must be array of int for format == 32. - -2005-02-08 Stefan Monnier - - * undo.c (Fprimitive_undo): Check veracity of delta,start,end. - -2005-02-07 Jan Dj,Ad(Brv - - * xfns.c (Fx_change_window_property): Use long array when format is 32. - (Fx_window_property): If format is 32 and long is bigger than 32 bits, - convert long array returned from XGetWindowProperty to an int array. - (x_set_tool_bar_lines): Check that width and height is greater than - zero before clearing area. - - * xselect.c (x_reply_selection_request): Pass long array to - XChangeProperty so that 64 bit longs are handeled correctly. - (x_get_window_property): If format is 32 and long is bigger than 32 - bits convert data from XGetWindowProperty from long array to int array. - (lisp_data_to_selection_data): When the input is a vector and the - format is 32, allocate a long array even if long is bigger than 32 bits. - (x_fill_property_data): Use char, short and long as the man page - for XChangeProperty specifies. This way the data returned is OK for - both 32 and 64 bit machines. - (x_handle_dnd_message): Calculate size correctly even for 64 bit - machines. - (Fx_send_client_event): Undo change from 2005-02-05, - x_fill_property_data now handles that case. - - * xfns.c (Fx_backspace_delete_keys_p): Add comment about the - reason for the approach in the code. - -2005-02-07 Kim F. Storm - - * undo.c (Fprimitive_undo): Record max one dummmy apply element. - -2005-02-06 Richard M. Stallman - - * eval.c (Frun_hook_with_args) - (Frun_hook_with_args_until_success) - (Frun_hook_with_args_until_failure): Doc fixes. - -2005-02-05 Andreas Schwab - - * sysdep.c (sys_subshell): Properly terminate execlp argument list. - -2005-02-05 Jan Dj,Ad(Brv - - * xselect.c (Fx_send_client_event, x_handle_dnd_message): Handle - the longs in a XClientMessageEvent correctly when long is 64 bits. - -2005-02-05 Eli Zaretskii - - * xfaces.c (face_color_supported_p): Use HAVE_WINDOW_SYSTEM - instead of HAVE_X_WINDOWS, for non-X windowed sessions. - -2005-02-03 Jan Dj,Ad(Brv - - * xmenu.c (menubar_selection_callback): Force out GTK buffered - events so the menu event comes after them. This is to prevent sit-for - from exiting on buffered events directly after a menu selection, - lisp code for Help => About Emacs uses sit-for. - - * gtkutil.c (create_menus): Connect selection-done event instead of - the deactivate event to deactivate_cb. This will make the last - leave event come before the call to deactivate_cb, so the leave - event does not make sit-for exit after a menu selection. - -2005-02-03 Kim F. Storm - - * dispnew.c (build_frame_matrix_from_leaf_window) - [!GLYPH_DEBUG]: Fix xassert. - - * xfaces.c (x_free_gc) [!GLYPH_DEBUG]: Fix xassert. - - * xfns.c (unwind_create_frame) [!GLYPH_DEBUG]: Fix xassert. - -2005-02-03 YAMAMOTO Mitsuharu - - * mac.c: Use MAC_OS_X_VERSION_MAX_ALLOWED to conditionalize by - the compiling OS version. - - * macfns.c (x_create_tip_frame): Likewise. - - * macterm.c (mac_draw_string_common, x_make_frame_visible): Likewise. - -2005-02-03 Richard M. Stallman - - * xterm.c (x_error_quitter): On GCC 3 and up, specify noinline. - - * xdisp.c (echo_area_display): Clear echo_message_buffer. - - * buffer.c (Fbury_buffer): Doc fix. - -2005-02-02 Steven Tamm - - * macfns.c (unwind_create_frame): Fix compile error due to - xassert being uncondition, but predicate is. - * dispnew.c (update_window): Fix compile error due to - xassert being uncondition, but predicate is. - -2005-02-02 Miles Bader - - * dispextern.h (xassert): Enable unconditionally. - -2005-02-02 Kim F. Storm - - * undo.c (Fprimitive_undo): Fix dummy apply undo entry. - -2005-02-02 Kenichi Handa - - * casefiddle.c (casify_object): Enable changing characters of - different byte length. - (casify_region): Fix loop condition, args to replace_range_2, and - update opoint_byte. - - * insdel.c (replace_range_2): Fix bugs in adjusting markers and point. - -2005-02-01 Kim F. Storm - - * xdisp.c (back_to_previous_visible_line_start): Reset iterator - stack before calling handle_display_prop. - -2005-01-31 Kim F. Storm - - * undo.c (Qapply): New lisp var. - (syms_of_undo): Intern and staticpro it. - (Fprimitive_undo): Support formats (apply FUNNAME . ARGS) and - (apply DELTA BEG END FUNNAME . ARGS) instead of (FUNNAME . ARGS). - - * buffer.c (syms_of_buffer) : Doc fix. - -2005-01-30 Jesper Harder - - * macterm.c (syms_of_macterm) - : Fix docstring indentation. - -2005-01-29 Luc Teirlinck - - * undo.c (syms_of_undo) : Doc update. - Increase value to 3 Meg. - -2005-01-29 Jan Dj,Ad(Brv - - * xfns.c (show_hourglass): Use FRAME_X_WINDOW as parent for GTK, - button events are not received otherwise. - -2005-01-29 Richard M. Stallman - - * buffer.c (syms_of_buffer) : Doc fix. - - * undo.c (Fprimitive_undo): Handle (FUNNAME . ARGS) by calling FUNNAME. - -2005-01-28 Stefan Monnier - - * keymap.c (access_keymap): YAILOM. - -2005-01-27 Kim F. Storm - - * xdisp.c (get_phys_cursor_geometry): New function to calculate - phys cursor position and size for hollow cursor. Position is - aligned with get_glyph_string_clip_rect and ensures that a hollow - cursor is shown, even when the actual glyph is not visible. - - * dispextern.h (get_phys_cursor_geometry): Add prototype. - - * xterm.c (x_clip_to_row): Ensure y >= 0. - (x_draw_hollow_cursor): Use get_phys_cursor_geometry. - - * w32term.c (x_draw_hollow_cursor): Use get_phys_cursor_geometry. - - * macterm.c (x_draw_hollow_cursor): Use get_phys_cursor_geometry. - -2005-01-27 Stefan Monnier - - * xterm.c (x_error_quitter): Add a prototype. Make it static again. - -2005-01-27 Kim F. Storm - - * xdisp.c (get_glyph_string_clip_rect): Always show a cursor - glyph, even when row is only partially visible and actual cursor - position is not visible. - -2005-01-24 Richard M. Stallman - - * xterm.c (x_error_quitter): No longer static, and moved after - x_error_handler. - -2005-01-24 Kim F. Storm - - * xdisp.c (move_it_by_lines): If we move forward after going too - far back, cancel move if end position is same as start position. - -2005-01-24 YAMAMOTO Mitsuharu - - * dispextern.h (struct glyph_string): New members clip_head and - clip_tail. - - * xdisp.c (get_glyph_string_clip_rect): Restrict horizontal clip - region to the area between clip_head and clip_tail. - (draw_glyphs): Record the area that need to be actually redrawn to - the new variables clip_head and clip_tail when there are - overhangs. Set values of these variables to the corresponding - members in struct glyph_string. Refine x coordinates for - notice_overwritten_cursor using clip_head and clip_tail. - - * macgui.h (STORE_XCHARSETSTRUCT): New macro. - - * macterm.c (mac_compute_glyph_string_overhangs): Implement with - QDTextBounds. - (x_draw_glyph_string): Don't fill the background of the successor - of a glyph with a right overhang if the successor will draw a cursor. - (XLoadQueryFont): Obtain font metrics using QDTextBounds. - (x_redisplay_interface): Add entry for compute_glyph_string_overhangs. - -2005-01-24 Kim F. Storm - - * window.c (window_scroll_pixel_based): Fix scrolling in the wrong - direction if window height was smaller than next-screen-context-lines. - Now always scroll at least one line in the requested direction. - Ensure that we actually do scroll backwards when requested to do so. - - * xdisp.c (redisplay_window): Only try to make cursor line fully - visible once (to avoid redisplay loop). - -2005-01-23 Kim F. Storm - - * window.c (Fpos_visible_in_window_p): Simplify return value for - partially visible rows. - (window_scroll_pixel_based): Adapt to that change. - - * window.c (window_scroll_pixel_based): Force moving to next line - if scrolling doesn't move start point, e.g. if looking at tall image. - - * xdisp.c (pos_visible_p): Return 0 if non-interactive. - Clear last_height before calling line_bottom_y to get real height. - Fix calculation of y. - -2005-01-22 Steven Tamm - - * s/darwin.h: Removed PTY_ITERATION from here. - (DARWIN): Define. - - * process.c (init_process): Default process-connection-type to - nil on darwin 6 or less, t if it is 7 or higher. This way the - broken pty behavior is still allowed on darwin 6 for interactive - processes for people that know what they are doing. - -2005-01-22 Kim F. Storm - - * window.c (auto_window_vscroll_p): New boolean. - (syms_of_window): DEFVAR_BOOL it. - (Fpos_visible_in_window_p): Extend return value to include RTOP - and RBOT values if FULLY is nil. - (window_scroll_pixel_based): Adjust vscroll for partially visible - rows if auto_window_vscroll_p is set. - (Fset_window_vscroll): Do nothing if vscroll is not modified. - - * xdisp.c (pos_visible_p): Replace FULLY arg by RTOP and RBOT args - to return number of partially invisible pixels at top and bottom - of the dislay row at POS. - - * lisp.h (pos_visible_p): Fix prototype. - -2005-01-21 Richard M. Stallman - - * fileio.c (Fcopy_file): Doc fix. - -2005-01-21 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_detach_callback): Remove unused variable bw. - (xg_get_file_name): Move declaration ofx_use_old_gtk_file_dialog to - start of function for older compilers. - -2005-01-20 Richard M. Stallman - - * editfns.c (Fmessage): If arg is "", return "" (as before). - - * keymap.c (access_keymap): Protect from bad value of meta_prefix_char. - - * .gdbinit (xgetptr, xgetint, xgettype): Copy $arg0 into a temp - variable. - -2005-01-20 Steven Tamm - - * editfns.c (Voperating_system_release): Add. - (init_editfns): Assign new variable operating-system-release - based on call to uname if available. - (get_operating_system_release): Add function to - allow c-level access to operating system release. - - * config.h: Regenerated. - - * s/darwin.h (PTY_ITERATION): Don't allow PTYs on darwin 6 or less. - (MIN_PTY_KERNEL_VERSION): Define minimum kernel version for - using ptys as '7'. - -2005-01-20 Kim F. Storm - - * alloc.c (STRING_MARKED_P, VECTOR_MARKED_P): Return boolean. - - * xterm.c (x_draw_glyph_string_box): Fix last_x for full width rows. - Thanks to Chong Yidong for debugging this. - - * macterm.c (x_draw_glyph_string_box): Likewise. - - * w32term.c (x_draw_glyph_string_box): Likewise. - - * indent.c (Fvertical_motion): Temporarily disable selective display. - -2005-01-19 Kim F. Storm - - * xdisp.c (note_mode_line_or_margin_highlight): Fix :pointer - image property. - - * fns.c (sweep_weak_table): Advance prev pointer when we keep a pair. - -2005-01-18 Kim F. Storm - - * xdisp.c (fast_find_position): Backtrack to find first row if - charpos is inside a display overlay that spans multiple lines. - -2005-01-18 Kenichi Handa - - * coding.c (decode_coding_iso2022): Translate invalid codes if - translation-table is specified. - -2005-01-18 Kim F. Storm - - * xdisp.c (back_to_previous_visible_line_start): Undo 2004-12-28 - change. If handle_display_prop indicates newline is replaced by - image or text, move back to start of relevant overlay or interval - and continue scan from there. Simplify. - -2005-01-17 Kim F. Storm - - * dispnew.c (mode_line_string, marginal_area_string): - Fix off-by-one error in search for glyph. - -2005-01-16 Kim F. Storm - - * macterm.c (syms_of_macterm) : Doc fix. - -2005-01-16 Steven Tamm - - * macterm.c (mac_to_x_fontname): Remove spurious argument. - -2005-01-16 Andreas Schwab - - * macterm.c (mac_draw_string_common): Fix compilation on OSX 10.1. - -2005-01-16 Jan Dj,Ad(Brv - - * fringe.c (Fdefine_fringe_bitmap, init_fringe): When assigning - fringe_faces, cast result from xmalloc/xrealloc to Lisp_Object *. - -2005-01-16 YAMAMOTO Mitsuharu - - * keyboard.c (READABLE_EVENTS_DO_TIMERS_NOW) - (READABLE_EVENTS_FILTER_EVENTS, READABLE_EVENTS_IGNORE_SQUEEZABLES): - New flags for readable_events. - (get_filtered_input_pending, readable_filtered_events): Remove. - (tracking_off): Call readable_events and get_input_pending with - flag READABLE_EVENTS_DO_TIMERS_NOW. - (readable_events): Move code from old readable_filtered_events here, - but check new READABLE_EVENTS_* in argument flags instead of previous - two boolean arguments do_timers_now and filter_events. - If we are doing mouse tracking and the mouse moved, return only if - READABLE_EVENTS_IGNORE_SQUEEZABLES is not set in flags. - (swallow_events): Call get_input_pending with flag - READABLE_EVENTS_DO_TIMERS_NOW. - (get_input_pending): Move code from old get_filtered_input_pending - here. Replace boolean arguments do_timers_now, filter_events with - flags, and pass flags to readable_events. Document new - READABLE_EVENTS_* flags. - (detect_input_pending_ignore_squeezables): New function. - (detect_input_pending_run_timers): Call get_input_pending with flag - READABLE_EVENTS_DO_TIMERS_NOW. - (Finput_pending_p): Call get_input_pending with flags - READABLE_EVENTS_DO_TIMERS_NOW and READABLE_EVENTS_FILTER_EVENTS. - - * dispnew.c (update_window, update_frame_1): Replace calls to - detect_input_pending with detect_input_pending_ignore_squeezables - so that redisplay is not paused if the event queue contains only - mouse movements. - - * lisp.h: Declare detect_input_pending_ignore_squeezables. - -2005-01-15 Steven Tamm - - * macterm.c (Vmac_use_core_graphics): Declare variable for - mac-allow-anti-aliasing. - (syms_of_macterm): DEFVAR_LISP and initialize it. - (mac_draw_string_common): Use core graphics text rendering if - mac-allow-anti-aliasing is enabled. - - * macfns.c (Fx_file_dialog): Save As dialog includes only the - file name in the text box. - -2005-01-15 YAMAMOTO Mitsuharu - - * macfns.c (x_set_foreground_color, x_set_background_color): - Sync with xfns.c. - (mac_window, x_create_tip_frame): Use XSetWindowBackground. - * macterm.c (XSetBackground, XSetWindowBackground): New functions. - * macterm.h (XSetBackground, XSetWindowBackground): Add externs. - -2005-01-14 Kim F. Storm - - * keyboard.c (Fposn_at_x_y): Add optional arg WHOLE. - -2005-01-13 Richard M. Stallman - - * keymap.c (Fcurrent_active_maps): Ignore Voverriding_local_map - if Voverriding_terminal_local_map is non-nil. - - * keyboard.c (syms_of_keyboard): Doc fix. - -2005-01-13 Kim F. Storm - - * xdisp.c (Fformat_mode_line): Fix last change. Remove NO_PROPS arg - (specify 0 for FACE instead). Reorder arg list. Doc fix. - -2005-01-12 Richard M. Stallman - - * xdisp.c (Fformat_mode_line): New arg FACE specifies a default - face property for characters that don't specify one. - - * fns.c (Frequire): Record in load-history unconditionally. - -2005-01-10 Kim F. Storm - - * dispextern.h (merge_faces): Rename from merge_into_realized_face. - - * xfaces.c (merge_faces): Rename from merge_into_realized_face. - Callers changed. - Add support to merge with lisp face id too (if face_name is t). - - * xdisp.c (get_next_display_element, next_element_from_display_vector): - Don't lookup lface_id from display table glyphs here; instead use - merge_faces to merge the lisp face id into current face. - -2005-01-09 Kim F. Storm - - * dispextern.h (struct it): New member dpvec_face_id. - (merge_into_realized_face): Add prototype. - - * xfaces.c (merge_into_realized_face): New function. Used to - merge escape-glyph face or face from display table into current face. - - * xdisp.c (Vshow_nonbreak_escape): New lisp var. - (syms_of_xdisp): DEFVAR_LISP it. - (escape_glyph_face): Remove var. - (redisplay_window): Don't initialize it. - (setup_for_ellipsis, get_next_display_element): - Set it->dpvec_face_id to -1. - (get_next_display_element): Test Vshow_nonbreak_escape. - Do not setup escape_glyph_face. - Properly merge escape-glyph face or face from display table with - current face for escape and control characters. - Set it->dpvec_face_id to relevant face id instead of adding it to each - element of display vector. - (next_element_from_display_vector): If it->dpvec_face_id is set, - use that instead of lface_id from glyph itself. - -2005-01-08 Jan Dj,Ad(Brv - - * xterm.h (struct x_output): New member, toolbar_detached. - - * gtkutil.c (xg_create_frame_widgets): Set initial tool bar height to - 38. - (xg_tool_bar_detach_callback): Set toolbar_detached to 1. - (xg_tool_bar_attach_callback): Set toolbar_detached to 0. - (xg_create_tool_bar): Initialize toolbar_detached. - (update_frame_tool_bar): Only set FRAME_TOOLBAR_HEIGHT (f) if - toolbar_detached is zero. - -2005-01-07 Jan Dj,Ad(Brv - - * xmenu.c (create_and_show_popup_menu): Pass zero as button to - gtk_menu_popup if not for_click, so callbacks for the menu are called. - - * gtkutil.c (xg_gtk_scroll_destroy, xg_create_scroll_bar) - (xg_tool_bar_callback, xg_tool_bar_help_callback) - (update_frame_tool_bar): Cast to EMACS_INT to avoid compiler warning. - - * xselect.c (x_get_foreign_selection, x_fill_property_data) - (Fx_get_atom_name, Fx_send_client_event): Replace XFLOAT with - XFLOAT_DATA to get extract number from Lisp object. - -2005-01-07 Kim F. Storm - - * xdisp.c (set_iterator_to_next): Fix 2004-12-13 change. - Set stop_charpos to current charpos instead of 0. - -2005-01-06 Nick Roberts - - * xdisp.c (Fformat_mode_line): First arg now required. - -2005-01-06 YAMAMOTO Mitsuharu - - * macterm.c (XLoadQueryFont): Correctly handle 0 size - font widths that are returned from some Japanese fonts. - -2005-01-06 Kim F. Storm - - * fringe.c (fringe_faces): Change to Lisp_Object pointer. - (draw_fringe_bitmap_1): Lookup user defined fringe faces here. - (destroy_fringe_bitmap): Set fringe_faces element to nil. - (Fdefine_fringe_bitmap, init_fringe): Change allocation of - fringe_faces array and init elements to nil. - (Fset_fringe_bitmap_face): Set fringe_faces to face name instead of - non-persistent face id. - (mark_fringe_data): New function for GC. - - * alloc.c (mark_fringe_data): Declare extern. - (Fgarbage_collect): Call mark_fringe_data. - - * alloc.c (overrun_check_free): Invalidate freed memory if - XMALLOC_CLEAR_FREE_MEMORY is defined. - -2005-01-05 YAMAMOTO Mitsuharu - - * macfns.c: Include sys/param.h. - [TARGET_API_MAC_CARBON] (mac_nav_event_callback): New declaration - and function. - [TARGET_API_MAC_CARBON] (Fx_file_dialog): Use MAXPATHLEN for size - of filename string. Set event callback function when creating - dialog boxes. Add code conversions for filenames. Don't dispose - of apple event descriptor record if failed to create it. - - * macterm.c: Include sys/param.h. - [USE_CARBON_EVENTS] (mac_handle_window_event): Add handler for - kEventWindowUpdate. - (install_window_handler) [USE_CARBON_EVENTS]: Register it. - (do_ae_open_documents) [TARGET_API_MAC_CARBON]: Get FSRef instead - of FSSpec from apple event descriptor record. - (do_ae_open_documents) [TARGET_API_MAC_CARBON]: Use MAXPATHLEN for - size of filename string. - [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise. - [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Return error when a - file dialog is in action. - [TARGET_API_MAC_CARBON] (mac_do_track_drag): Likewise. - Reject only when there are no filename items. Set background color - before (un)highlighting the window below the dragged items. - (XTread_socket) [USE_CARBON_EVENTS]: Don't call do_window_update. - -2005-01-05 Romain Francoise - - * term.c (encode_terminal_code): Fix buffer size computation. - -2005-01-04 Richard M. Stallman - - * xdisp.c (Fformat_mode_line): Doc fix. - -2005-01-04 Stefan Monnier - - * alloc.c (refill_memory_reserve): Move. - (emacs_blocked_free, emacs_blocked_malloc, emacs_blocked_realloc) - (reset_malloc_hooks, uninterrupt_malloc) [SYNC_INPUT]: Don't define. - -2005-01-03 Richard M. Stallman - - * window.c (window_scroll_pixel_based): Don't correct preserve_y - for CURRENT_HEADER_LINE_HEIGHT when moving backwards. - -2005-01-03 Jason Rumney - - * w32bdf.c (w32_load_bdf_font): Set fontp->average_width and - fontp->space_width to FONT_WIDTH so they are valid. - - * w32fns.c (w32_load_system_font): Set FONT_WIDTH to maximum, not - average width. Set fontp->average_width and fontp->space_width to - their appropriate values. - - * w32term.c (x_new_font): Set FRAME_COLUMN_WIDTH to - fontp->average_width, not FONT_WIDTH. Set FRAME_SPACE_WIDTH to - fontp->space_width. - -2005-01-03 YAMAMOTO Mitsuharu - - * macterm.c (x_new_font): Set FRAME_SPACE_WIDTH. - (x_font_min_bounds, XLoadQueryFont): Use the correct font width - metrics for max and min bounds. - (x_load_font): Correctly calculate average font width metrics. - -2005-01-02 Richard M. Stallman - - * alloc.c (Fgarbage_collect): Don't truncate_undo_list on dead buffers. - -2004-12-31 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Clear area in expose event for GTK. - -2004-12-31 Richard M. Stallman - - * xdisp.c (setup_for_ellipsis, get_next_display_element): - Set it->ellipsis_p to 1 or 0. - (display_line): Record whether row ends in mid-ellipsis. - (set_cursor_from_row): If ends in ellipsis, find start of it. - (cursor_row_p): If PT's at the end of the ellipsis the row - ends within, don't display cursor on this row. - - * dispextern.h (struct it): New element ellipsis_p. - (struct glyph_row): New element ends_in_ellipsis_p. - - * xdisp.c (BUFFER_POS_REACHED_P): We haven't reached the specified - position if we're reading from something other than the buffer. - - * window.c (window_scroll_pixel_based): Only look at - Vscroll_preserve_screen_position if the old PT can't be kept. - (syms_of_window) : Doc fix. - -2004-12-30 Kim F. Storm - - * xdisp.c (get_line_height_property): New function extracted from - original calc_line_height_property. - (calc_line_height_property): Rework. Handle t and (nil . ratio). - (x_produce_glyphs): Use them to handle line-height and - line-spacing according to new height spec. - (Qtotal): Remove. - (syms_of_xdisp): Remove intern and staticpro for Qtotal. - -2004-12-30 Kenichi Handa - - * fileio.c (Finsert_file_contents): Don't use - current_buffer->buffer_file_coding_system even if REPLACE is - non-nil. Call Qafter_insert_file_set_coding with the second arg VISIT. - - * fontset.h (struct font_info): New members space_width and - average_width. - - * frame.h (struct frame): New member space_width. - (FRAME_SPACE_WIDTH): New macro. - - * xterm.h (struct x_display_info): New member Xatom_AVERAGE_WIDTH. - - * xterm.c (x_new_font): Set FRAME_COLUMN_WIDTH to - fontp->average_width, not FONT_WIDTH. Set FRAME_SPACE_WIDTH to - fontp->space_width. - (x_load_font): Calculate fontp->space_width and fontp->average_width. - (x_term_init): Initialize dpyinfo->Xatom_AVERAGE_WIDTH. - - * xdisp.c (x_produce_glyphs): Calculate tab width by - FRAME_SPACE_WIDTH, not FRAME_COLUMN_WIDTH. - -2004-12-29 Sanghyuk Suh - - * macterm.c (SelectionRange): Add Xcode position apple event struct. - (do_ae_open_documents): Handle Xcode-style file position open events. - -2004-12-29 Luc Teirlinck - - * buffer.c (syms_of_buffer) : Correct typo. - -2004-12-29 Richard M. Stallman - - * buffer.c (syms_of_buffer) : Doc fix. - -2004-12-29 YAMAMOTO Mitsuharu - - * macfns.c (install_window_handler): Modify extern to return OSErr - value. - (mac_window): Handle return value of install_window_handler. - - * macterm.c (reflect_byte): Remove function. - (mac_create_bitmap_from_bitmap_data): Don't call reflect_byte. - Lookup table instead. - (mac_do_font_lists): Simplify calculation of the longest - nonspecial string. - (init_mac_drag_n_drop): Remove function and declaration. - (mac_initialize) [TARGET_API_MAC_CARBON]: Don't call - init_mac_drag_n_drop. - (mac_do_track_drag): New function and declaration. - (install_window_handler): Return OSErr value. - (install_window_handler) [TARGET_API_MAC_CARBON]: - Register handlers for tracking/receiving drag-and-drop items. - (do_ae_open_documents): Generate unibyte strings for filenames. - (mac_do_receive_drag) [TARGET_API_MAC_CARBON]: Likewise. - Reject only non-filename items. Set event modifiers, and return value. - -2004-12-28 Dan Nicolaescu - - * coding.c (decode_coding): Fix previous change. - -2004-12-28 Richard M. Stallman - - * xdisp.c (back_to_previous_visible_line_start): - Don't call handle_display_prop. - -2004-12-28 Dan Nicolaescu - - * coding.c (decode_coding_XXX, decode_composition_emacs_mule) - (decode_coding_emacs_mule, encode_coding_emacs_mule) - (decode_coding_iso2022, encode_designation_at_bol) - (encode_coding_iso2022, decode_coding_sjis_big5, decode_eol) - (decode_coding): Constify arguments and local vars. - -2004-12-27 Jan Dj,Ad(Brv - - * xmenu.c (popup_get_selection): Only pop down dialogs - on C-g and Escape. - (popup_get_selection): Remove parameter down_on_keypress. - (create_and_show_popup_menu, create_and_show_dialog): - Remove parameter down_on_keypress to popup_get_selection. - -2004-12-27 YAMAMOTO Mitsuharu - - * dispextern.h: Change HAVE_CARBON to MAC_OS. - (struct glyph_string): Likewise. - - * emacs.c (main) [MAC_OS8]: Call mac_term_init instead of - mac_initialize. - - * fileio.c (Fnext_read_file_uses_dialog_p, Fread_file_name): - Change TARGET_API_MAC_CARBON to HAVE_CARBON. - - * fns.c (vector): Change MAC_OSX to MAC_OS. - - * frame.c (x_set_frame_parameters, x_report_frame_params) - (x_set_fullscreen): Remove #ifndef HAVE_CARBON. - (x_set_border_width, Vdefault_frame_scroll_bars): - Change HAVE_CARBON to MAC_OS. - - * image.c [MAC_OS]: Include sys/stat.h. - [MAC_OS && !MAC_OSX]: Include sys/param.h, ImageCompression.h, and - QuickTimeComponents.h. - - * mac.c [!MAC_OSX] (mac_wait_next_event): Add extern. - [!MAC_OSX] (select): Use mac_wait_next_event. - [!MAC_OSX] (run_mac_command): Change EXEC_SUFFIXES to Vexec_suffixes. - [!MAC_OSX] (select, run_mac_command): Change `#ifdef - TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'. - (mac_clear_font_name_table): Add extern. - (Fmac_clear_font_name_table): New defun. - (syms_of_mac): Defsubr it. - [MAC_OSX] (SELECT_POLLING_PERIOD_USEC): New define. - [MAC_OSX] (select_and_poll_event): New function. - [MAC_OSX] (sys_select): Use it. - [MAC_OSX && SELECT_USE_CFSOCKET] (socket_callback): New function. - [MAC_OSX && SELECT_USE_CFSOCKET] - (SELECT_TIMEOUT_THRESHOLD_RUNLOOP, EVENT_CLASS_SOCK): New defines. - [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Use CFSocket and - RunLoop for simultaneously monitoring two kinds of inputs, window - events and process outputs, without periodically polling. - - * macfns.c (mac_initialized): Remove extern. - (stricmp): Put in #if 0. All callers changed to use xstricmp in - xfaces.c. - (strnicmp): Decrement `n' at the end of each loop, not the beginning. - (check_mac): Use the term "Mac native windows" instead of "Mac OS". - (check_x_display_info, x_display_info_for_name): Sync with xfns.c. - (mac_get_rdb_resource): New function (from w32reg.c). - (x_get_string_resource): Use it. - (install_window_handler): Add extern. - (mac_window): New function. - (Fx_create_frame): Use it instead of make_mac_frame. - Set parameter for Qfullscreen. Call x_wm_set_size_hint. - (Fx_open_connection, Fx_close_connection): New defuns. - (syms_of_macfns): Defsubr them. - (x_create_tip_frame) [TARGET_API_MAC_CARBON]: - Add kWindowNoUpdatesAttribute to the window attribute. - (x_create_tip_frame) [!TARGET_API_MAC_CARBON]: Use NewCWindow. - (x_create_tip_frame): Don't call ShowWindow. - (Fx_show_tip): Call ShowWindow. - (Fx_file_dialog): Change `#ifdef TARGET_API_MAC_CARBON' to `#if - TARGET_API_MAC_CARBON'. - (mac_frame_parm_handlers): Set handlers for Qfullscreen. - (syms_of_macfns) [MAC_OSX]: Initialize mac_in_use to 0. - - * macgui.h [!MAC_OSX]: Don't include Controls.h. Include Windows.h. - (Window): Typedef to WindowPtr and move outside `#if - TARGET_API_MAC_CARBON'. - (XSizeHints): New struct. - - * macterm.c (x_update_begin, x_update_end) - [TARGET_API_MAC_CARBON]: Disable screen updates during update of a - frame. - (x_draw_glyph_string_background, x_draw_glyph_string_foreground) - [MAC_OS8]: Use XDrawImageString/XDrawImageString16. - (construct_mouse_click): Put in #if 0. - (x_check_fullscreen, x_check_fullscreen_move): Remove decls. - (x_scroll_bar_create, x_scroll_bar_handle_click): Change `#ifdef - TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'. - (activate_scroll_bars, deactivate_scroll_bars) - [!TARGET_API_MAC_CARBON]: Use ActivateControl/DeactivateControl. - (x_make_frame_visible) [TARGET_API_MAC_CARBON]: Reposition window - if the position is neither user-specified nor program-specified. - (x_free_frame_resources): Free size_hints. - (x_wm_set_size_hint): Allocate size_hints if needed. Set size_hints. - (mac_clear_font_name_table): New function. - (mac_do_list_fonts): Initialize font_name_table if needed. - (x_list_fonts): Don't initialize font_name_table. Add BLOCK_INPUT - around mac_do_list_fonts. - (mac_unload_font): New function. - (x_load_font): Add BLOCK_INPUT around XLoadQueryFont. - (init_mac_drag_n_drop, mac_do_receive_drag): Enclose declarations - and definitions with #if TARGET_API_MAC_CARBON. - [USE_CARBON_EVENTS] (mac_handle_window_event): Add decl. - (install_window_handler): Add decl. - (do_window_update): Add BeginUpdate/EndUpdate for the tooltip - window. Use UpdateControls. Get the rectangle that should be - updated and restrict the target of expose_frame to it. - (do_grow_window): Set minimum height/width according to size_hints. - (do_grow_window) [TARGET_API_MAC_CARBON]: Use ResizeWindow. - (do_zoom_window): Don't use x_set_window_size. - [USE_CARBON_EVENTS] (mac_handle_window_event): New function. - (install_window_handler): New function. - [!USE_CARBON_EVENTS] (mouse_region): New variable. - [!USE_CARBON_EVENTS] (mac_wait_next_event): New function. - (XTread_socket) [USE_CARBON_EVENTS]: Move call to - GetEventDispatcherTarget inside BLOCK_INPUT. - (XTread_socket) [!USE_CARBON_EVENTS]: Use mac_wait_next_event. - Update mouse_region when mouse is moved. - (make_mac_frame): Remove. - (make_mac_terminal_frame): Put in #ifdef MAC_OS8. - Initialize mouse pointer shapes. Change values of f->left_pos and - f->top_pos. Don't use make_mac_frame. Use NewCWindow. - Don't call ShowWindow. - (mac_initialize_display_info) [MAC_OSX]: Create mac_id_name from - Vinvocation_name and Vsystem_name. - (mac_make_rdb): New function (from w32term.c). - (mac_term_init): Use it. Add BLOCK_INPUT. Error if display has - already been opened. Don't pass argument to - mac_initialize_display_info. Don't set dpyinfo->height/width. - Add entries to x_display_list and x_display_name_list. - (x_delete_display): New function. - (mac_initialize): Don't call mac_initialize_display_info. - (syms_of_macterm) [!MAC_OSX]: Don't call Fprovide. - - * macterm.h (check_mac): Add extern. - (struct mac_output): New member size_hints. - (FRAME_SIZE_HINTS): New macro. - (mac_unload_font): Add extern. - - * xdisp.c (expose_window, expose_frame): Remove kludges for Mac. - - * xfaces.c (clear_font_table) [MAC_OS]: Call mac_unload_font. - -2004-12-27 Richard M. Stallman - - * buffer.c (Fbuffer_disable_undo): Delete (move to simple.el). - (syms_of_buffer): Don't defsubr it. - - * process.c (list_processes_1): Set undo_list instead - of calling Fbuffer_disable_undo. - - * xdisp.c (single_display_spec_string_p): Rename from - single_display_prop_string_p. - (single_display_spec_intangible_p): Rename from - single_display_prop_intangible_p. - (handle_single_display_spec): Rename from handle_single_display_prop. - Rewritten to be easier to understand. - - Change in load-history format. Functions now get (defun . NAME), - and variables get just NAME. - - * data.c (Fdefalias): Use (defun . FN_NAME) in LOADHIST_ATTACH. - - * eval.c (Fdefun, Fdefmacro): Use (defun . FN_NAME) in LOADHIST_ATTACH. - (Fdefvaralias, Fdefvar, Fdefconst): Use just SYM in LOADHIST_ATTACH. - (Qdefvar): Var deleted. - (syms_of_eval): Don't initialze it. - - * lread.c (syms_of_lread) : Doc fix. - -2004-12-27 Jan Dj,Ad(Brv - - * xmenu.c (popup_get_selection): Pop down on C-g. - (set_frame_menubar): Install translations for Lucid/Motif/Lesstif that - pops down menu on C-g. - (xdialog_show): If dialog popped down and no button in the dialog was - pushed, call Fsignal to quit. - (xmenu_show): In no toolkit version, if menu returns NO_SELECT call - Fsignal to quit. - - * xfns.c (Fx_file_dialog): Motif/Lesstif version: Pop down on C-g. - - * gtkutil.c (xg_initialize): Install bindings for C-g so that - dialogs and menus pop down. - -2004-12-27 Kenichi Handa - - * coding.c (code_convert_region): Fix calculation of `ratio'. - -2004-12-25 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Make the value of - tool-bar-button-margin control margins of images in tool bar. - - * alloc.c (check_depth): New variable. - (overrun_check_malloc, overrun_check_realloc): Only add - overhead and write check pattern if check_depth is 1 (to handle - recursive calls). Increase/decrease check_depth in entry/exit. - (overrun_check_free): Only check for overhead if check_depth is 1. - Increase/decrease check_depth in entry/exit. - -2004-12-23 Jan Dj,Ad(Brv - - * keyboard.c (input_available_signal): Call SIGNAL_THREAD_CHECK - before touching input_available_clear_time, to avoid accessing it - from multiple threads. - -2004-12-23 Jason Rumney - - * image.c (__WIN32__) [HAVE_NTGUI]: Define for correct behaviour - of JPEG library. - -2004-12-22 Richard M. Stallman - - * emacs.c (main): If batch mode, set Vundo_outer_limit to nil. - - * lisp.h (Vundo_outer_limit): Fix decl. - - * undo.c (Vundo_outer_limit): Replaces undo_outer_limit. - Uses changed. - (syms_of_undo): Initialize appropriately. - (truncate_undo_list): If it's nil, there's no limit. - -2004-12-22 Kenichi Handa - - * xselect.c (Fx_get_cut_buffer_internal): Return a unibyte string. - -2004-12-21 Richard M. Stallman - - * eval.c (unwind_to_catch): Clear immediate_quit. - - * xdisp.c (get_next_display_element): Display codes 8a0 and 8ad - specially as `\ ' and `\-'. - - * keyboard.c (kbd_buffer_store_event_hold): - In the code for while-no-input, handle immediate_quit. - - * alloc.c (Fgarbage_collect): Update call to truncate_undo_list. - Call that at the very start. - (undo_limit, undo_strong_limit, undo_outer_limit): Move to undo.c. - (syms_of_alloc): Don't define undo-limit, - undo-strong-limit and undo-outer-limit here. - - * undo.c (truncate_undo_list): Return void. - Take just one argument, the buffer. - Make it current, and inhibit recursive GC. - Access and update the undo list directly; return void. - Refer to the undo...limit variables directly. - Test undo_outer_limit only after counting the whole current command. - When it's exceeded, call the function in undo-outer-limit-function. - (undo_limit, undo_strong_limit, undo_outer_limit): From alloc.c. - (Vundo_outer_limit_function): New variable. - (syms_of_undo): Define undo-limit, undo-strong-limit - and undo-outer-limit here, and undo-outer-limit-function. - Doc fixes. - - * lisp.h (truncate_undo_list): Update decl. - -2004-12-21 Piet van Oostrum - - * fileio.c (Fread_file_name): Delete duplicates in - file-name-history when history_delete_duplicates is true. - -2004-12-20 YAMAMOTO Mitsuharu - - * macterm.c (mac_do_list_fonts): Fix memory leak - -2004-12-20 Richard M. Stallman - - * regex.c (re_match_2_internal) : - Fix calls to UPDATE_SYNTAX_TABLE_FORWARD. - -2004-12-18 YAMAMOTO Mitsuharu - - * macterm.c (endif, x_font_name_to_mac_font_name): - Use maccentraleurroman instead of maccentraleuropean - (mac_c_string_match, mac_do_list_fonts): Speed up font search by - quickly finding a specific font without needing regexps. - -2004-12-15 Jan Dj,Ad(Brv - - * syssignal.h: Declare main_thread. - (SIGNAL_THREAD_CHECK): New macro. - - * keyboard.c (input_available_signal): Move thread checking code - to macro SIGNAL_THREAD_CHECK and call that macro. - (interrupt_signal): Call SIGNAL_THREAD_CHECK. - - * alloc.c (uninterrupt_malloc): Move main_thread to emacs.c. - - * emacs.c: Define main_thread. - (main): Initialize main_thread. - (handle_USR1_signal, handle_USR2_signal, fatal_error_signal) - (memory_warning_signal): Call SIGNAL_THREAD_CHECK. - - * floatfns.c (float_error): Call SIGNAL_THREAD_CHECK. - - * dispnew.c (window_change_signal): Call SIGNAL_THREAD_CHECK. - - * sysdep.c (select_alarm): Call SIGNAL_THREAD_CHECK. - - * process.c (send_process_trap, sigchld_handler): - Call SIGNAL_THREAD_CHECK. - - * data.c (arith_error): Call SIGNAL_THREAD_CHECK. - - * atimer.c (alarm_signal_handler): Call SIGNAL_THREAD_CHECK. - - * xterm.c (xg_scroll_callback): Update XG_LAST_SB_DATA before - returning when xg_ignore_gtk_scrollbar is true. - -2004-12-14 Kim F. Storm - - * keyboard.c (read_char): Save and restore echo_string when - handling input method. - -2004-12-13 Richard M. Stallman - - * eval.c (syms_of_eval) : Doc fix. - - * keyboard.c (Vthrow_on_input): New variable. - (syms_of_keyboard): Defvar and initialize it. - (kbd_buffer_store_event_hold): Handle Vthrow_on_input. - - * lisp.h (QUIT): Check for Vthrow_on_input. - (Vthrow_on_input): Declare it. - -2004-12-13 Kim F. Storm - - * xdisp.c (set_iterator_to_next): Reset stop_charpos after display - vector. - -2004-12-12 Richard M. Stallman - - * indent.c (Fvertical_motion): Call move_it_by_lines even if LINES = 0. - - * minibuf.c (Fall_completions): Add var `zero' and use it in loop. - (Ftry_completion): Really use outer `zero'; eliminate inner one. - -2004-12-12 Kenichi Handa - - * term.c (encode_terminal_code): Fix previous change. - -2004-12-11 Stefan Monnier - - * keyboard.c (handle_async_input): Remove pthread mutex handling. - (input_available_signal): Move pthread thingy to !SYNC_INPUT branch. - - * syntax.c (Fforward_word): Avoid non-idempotent side-effects - in macro arguments. - - * minibuf.c (Ftry_completion, Fall_completions): Don't use - XFASTINT blindly. - - * emacs.c (main, Fdump_emacs): Don't touch malloc hooks if SYNC_INPUT. - -2004-12-11 Jan Dj,Ad(Brv - - * w32term.c (x_calc_absolute_position): Remove calculation of - difference between inner and outer window. Don't subtract difference - for left and top calculations. - - * xterm.c (x_calc_absolute_position): Don't subtract outer_pixel_diff - for left and top calculations. Remove call to x_real_positions. - [Bug report by Drew Adams in November.] - (x_check_expected_move): Do not set change_gravity to 1 when calling - x_set_offset. - -2004-12-08 Richard M. Stallman - - * xdisp.c (get_next_display_element): Use `escape-glyph' for - control chars and escaped octal codes. - (Qescape_glyph): New variable. - (syms_of_xdisp): Initialize it. - (escape_glyph_face): New variable. - (redisplay_window): Initialize it. - -2004-12-07 Paul Eggert - - * image.c (our_fill_input_buffer, jpeg_load, CHECK_LIB_AVAILABLE) - (init_image): Use 1 rather than TRUE. TRUE's not always defined. - -2004-12-07 Jan Dj,Ad(Brv - - * emacs.c (Fdump_emacs): Add ! defined (SYSTEM_MALLOC) around - reset_malloc_hooks. - - * keyboard.c (handle_async_input, input_available_signal): - Add ! defined (SYSTEM_MALLOC) around thread code. - - * alloc.c: Add comment about the reason for (UN)BLOCK_INPUT_ALLOC. - -2004-12-07 Stefan Monnier - - * eval.c (init_eval_once): Increase max_specpdl_size to 1000. - - * config.in: Regenerate. - -2004-12-07 Jan Dj,Ad(Brv - - * xmenu.c (Fx_popup_menu): Correct documentation about position. - (xmenu_show): Do not call XTranslateCoordinates. Adjust position - if not given by a mouse click to correspond with x-popup-menu - documentation. - - * config.in: Regenerate. - - * gtkutil.c: Include signal.h and syssignal.h. - (xg_get_file_name): Block and unblock __SIGRTMIN if defined. - - * alloc.c: If HAVE_GTK_AND_PTHREAD, include pthread.h, - new variables main_thread and alloc_mutex, - define (UN)BLOCK_INPUT_ALLOC to use alloc_mutex to protect - emacs_blocked_* calls and only do (UN)BLOCK_INPUT in the main thread. - If not HAVE_GTK_AND_PTHREAD, (UN)BLOCK_INPUT_ALLOC is the same - as (UN)BLOCK_INPUT. - (emacs_blocked_free, emacs_blocked_malloc) - (emacs_blocked_realloc): Use (UN)BLOCK_INPUT_ALLOC. - (uninterrupt_malloc): Initialize main_thread and alloc_mutex. - (reset_malloc_hooks): New function. - - * lisp.h: Declare reset_malloc_hooks. - - * emacs.c (Fdump_emacs): Call reset_malloc_hooks. - - * keyboard.c: Conditionally include pthread.h. - (handle_async_input, input_available_signalt): If not in the main - thread, block signal, send signal to main thread and return. - - * gtkutil.c (xg_get_file_with_chooser): Handle local files only. - Set current folder in file chooser if default_filename is a directory. - -2004-12-05 Stefan Monnier - - * regex.c (GET_UNSIGNED_NUMBER): Signal an error when reaching the end. - Remove redundant correctness checks. - (regex_compile): Fix up error codes for \{..\} expressions. - -2004-12-05 Richard M. Stallman - - * regex.c (regex_compile): Fix end-of-pattern case for space. - -2004-12-03 YAMAMOTO Mitsuharu - - * macterm.h (cfstring_create_with_utf8_cstring): Add prototype. - * mac.c (cfstring_create_with_utf8_cstring): Add to prevent - crashes with invalid characters. - * macmenu.c (add_menu_item): Use it. - * image.c (image_load_quartz2d): Likewise. - * macfns.c (x_set_name, x_set_title): Likewise. - (Fx_file_dialog): Likewise. Use constant CFRefs instead of - creating them each time for labels. - -2004-12-02 Richard M. Stallman - - * config.in (RE_TRANSLATE_P): If make_number is not a macro, - don't use it here. - - * eval.c (Fcalled_interactively_p): Don't check INTERACTIVE. - (interactive_p): Skip Scalled_interactively_p frames - like Sinteractive_p frames. - (unwind_to_catch): Clear handling_signal. - - * data.c (Fmake_variable_buffer_local): Doc fix. - (Fmake_local_variable): Doc fix. - - * insdel.c (insert_from_string_before_markers) - (insert_from_string): Don't modify buffer on empty insertion. - - * window.c (Fget_lru_window, Fget_largest_window): Doc fixes. - -2004-12-01 YAMAMOTO Mitsuharu - - * macmenu.c (add_menu_item): Fallback on MacRoman if encoding - menu text as UTF8 fails. - -2004-12-01 Kim F. Storm - - * alloc.c: Add commentary for last change. - (XMALLOC_PUT_SIZE, XMALLOC_GET_SIZE): New macros to handle - sizeof(size_t) != 4. - (overrun_check_malloc, overrun_check_realloc, overrun_check_free): - Use them. Also clear header and trailer of freed memory. - (GC_STRING_OVERRUN_COOKIE_SIZE): Rename from GC_STRING_EXTRA. - (string_overrun_cookie): Rename from string_overrun_pattern. - (GC_STRING_EXTRA): Define from GC_STRING_OVERRUN_COOKIE_SIZE. - -2004-12-01 Andreas Schwab - - * lisp.h: Declare string_to_multibyte. - -2004-12-01 Kenichi Handa - - * w32console.c (w32con_write_glyphs): Decide coding here. - Adjusted for the change of encode_terminal_code. - - * term.c (encode_terminal_code): Don't make it "static". - -2004-11-30 Kenichi Handa - - * term.c (encode_terminal_buf, encode_terminal_bufsize): New variables. - (encode_terminal_code): Argument changed. Encode all - characters at once, and return a pointer to the result of encoding. - (write_glyphs): Decide coding here. Adjusted for the above change. - (insert_glyphs): Likewise. - (term_init): Initialize encode_terminal_bufsize to 0. - - * coding.c (Vcode_conversion_workbuf_name): New variable. - (syms_of_coding): Initialize and staticpro it. - (set_conversion_work_buffer): New function. - (run_pre_post_conversion_on_str): Use it. - (run_pre_write_conversin_on_c_str): New function. - - * coding.h (run_pre_write_conversin_on_c_str): Extern it. - -2004-11-30 YAMAMOTO Mitsuharu - - * keyboard.c: Don't undef SIGIO - * s/darwin.h (NO_SOCK_SIGIO): Define NO_SOCK_SIGIO on carbon - * Makefile.in (mac.o): Depend on blockinput.h and atimer.h. - (macfns.o): Don't depend on ccl.h. - * macfns.c (mac_frame_parm_handlers): Set handlers for - Qleft_fringe and Qright_fringe. - * macterm.c (mac_fill_rectangle_to_pixmap) - (mac_draw_rectangle_to_pixmap, mac_copy_area_to_pixmap) - (mac_copy_area_with_mask_to_pixmap, x_draw_image_foreground_1): - Put in #if 0. - (mac_scroll_area) [TARGET_API_MAC_CARBON]: Use ScrollWindowRect. - (x_flush) [TARGET_API_MAC_CARBON]: Don't traverse frames. - (XFlush) [TARGET_API_MAC_CARBON]: Define to an empty replacement. - (x_draw_glyph_string_background, x_draw_glyph_string_foreground) - [!MAC_OS8]: Added ifdef'd out code for os8. Don't use - XDrawImageString. Always draw background and foreground separately. - (x_draw_image_foreground): Use clipping instead of computing the - intersection rectangle. - (x_draw_image_glyph_string): Don't draw an image with mask to a - pixmap. - (x_redisplay_interface): Set flush_display_optional member to 0. - (XTread_socket): Correctly reset the TEConverter - object. - -2004-11-30 Kim F. Storm - - * lisp.h: New defines to enable buffer overrun checking. - (GC_CHECK_STRING_OVERRUN, GC_CHECK_STRING_FREE_LIST) - (XMALLOC_OVERRUN_CHECK, GC_CHECK_CONS_LIST): Add. - - * alloc.c: Add more checks for buffer overruns. - (XMALLOC_OVERRUN_CHECK_SIZE, xmalloc_overrun_check_header) - xmalloc_overrun_check_trailer, overrun_check_malloc) - overrun_check_realloc, overrun_check_free): Add. - (GC_STRING_EXTRA, string_overrun_pattern): Add. - (check_sblock, allocate_string_data, compact_small_strings): - Set and check string_overrun_pattern if GC_CHECK_STRING_OVERRUN. - (check_cons_list): Condition on GC_CHECK_CONS_LIST. - (check_string_free_list): Add. - (allocate_string, sweep_strings): Call check_string_free_list. - - * emacs.c (malloc_initialize_hook): Don't free malloc_state_ptr if - XMALLOC_OVERRUN_CHECK to avoid crash during load. - -2004-11-29 Kim F. Storm - - * fns.c (concat): Use SAFE_ALLOCA. - -2004-11-29 Stefan Monnier - - * sysdep.c (emacs_write): Don't use QUIT. - -2004-11-29 Kenichi Handa - - * buffer.c (init_buffer): Set current_buffer->directory to a - multibyte string made by string_to_multibyte. - - * emacs.c (init_cmdargs): Set unibyte strings in Vcommand_line_args. - -2004-11-27 Andreas Schwab - - * alloc.c (mark_stack): Call GC_MARK_SECONDARY_STACK if defined. - - * s/gnu-linux.h: Enable no-op gcpros on ia64. - (GC_MARK_SECONDARY_STACK) [__ia64__]: Define. - - * filelock.c (lock_file_1): Call get_boot_time early. - Increase buffer size. - -2004-11-27 Eli Zaretskii - - * lisp.h (DECL_ALIGN): Define non-trivially only if NO_DECL_ALIGN - is not defined. - -2004-11-27 Kim F. Storm - - * search.c (syms_of_search) : Move 'doc:' - marker out of doc string. - -2004-11-26 Stefan Monnier - - * s/darwin.h (POSIX_SIGNALS): Undo the removal of 2002-08-25, - which was not mentioned in the log. - -2004-11-26 Kim F. Storm - - * fringe.c (update_window_fringes): Prefer truncation bitmaps over - angle bitmaps at top/bottom line. - - * xdisp.c: Undo recent changes for restoring saved_face_id. Instead, - set it when it->method is set to next_element_from_display_vector. - (setup_for_ellipsis): Add LEN argument. Callers changed. - Set it->saved_face_id. - (get_next_display_element): Use loop instead of recursion. - Set it->saved_face_id. Combine duplicate code for ctr chars. - (next_element_from_display_vector): Do not set it->saved_face_id. - (next_element_from_ellipsis): Use setup_for_ellipsis. - -2004-11-26 Eli Zaretskii - - * eval.c (Fdefvar): Declare pdl from last change as `volatile' to - prevent compiler warnings. - -2004-11-25 Stefan Monnier - - * keyboard.c (command_loop_1): Print a message describing the key - the user just pressed when this key has no binding. - - * sysdep.c (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set. - (emacs_open, emacs_read, emacs_write): Check QUIT when interrupted. - - * lread.c (readchar): Check QUIT when `getc' is interrupted. - -2004-11-24 Richard M. Stallman - - * coding.c (run_pre_post_conversion_on_str): Bind Qinhibit_read_only. - - * buffer.c (syms_of_buffer) : Doc fix. - -2004-11-24 Kim F. Storm - - * xdisp.c (move_it_in_display_line_to, display_line): - Restore saved_face_id also when truncate-lines or hscrolled. - -2004-11-23 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_name): Rename use-old-gtk-file-dialog to - x-use-old-gtk-file-dialog. - - * xfns.c: Define x_use_old_gtk_file_dialog. - (syms_of_xfns): Rename use-old-gtk-file-dialog to x-... Move it - outside ifdef USE_GTK. - -2004-11-23 Stefan Monnier - - * coding.h (ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM): - Don't use XFASTINT blindly. - - * config.in (RE_TRANSLATE_P): Don't use XFASTINT blindly. - - * indent.c (skip_invisible): Avoid non-idempotent side-effects - in macro arguments. - - * keymap.c (Flookup_key): Check INTEGERP before XINT. - - * lread.c (oblookup): Don't use XFASTINT blindly. - - * window.c (Fset_window_scroll_bars): Don't use XINT if it isn't int. - (decode_next_window_args, window_loop): Don't use XFASTINT blindly. - -2004-11-23 Kim F. Storm - - * dispextern.h (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P) - (MATRIX_ROW_STARTS_IN_MIDDLE_OF_CHAR_P): Not if dpvec_index is zero. - - * xfaces.c (lookup_named_face): Add signal_p arg. Return -1 if - signal_p is zero and face name is unknown. - (Fx_list_fonts): Don't signal error in lookup_named_face. - (Fface_font): Signal error in lookup_named_face. - (ascii_face_of_lisp_face): Likewise. - - * dispextern.h (lookup_named_face): Fix prototype. - - * xdisp.c (handle_single_display_prop): Don't signal error in - lookup_named_face for unknown fringe face name. - (highlight_trailing_whitespace): Don't signal error in - lookup_named_face if trailing-whitespace face unknown. - (calc_line_height_property): Don't signal error in - lookup_named_face if specified face name is unknown. - - * fringe.c (update_window_fringes): Show top row indicator if - window has header-line. Don't show arrow at bob and eob - if the boundary indicators are not used. - (Fset_fringe_bitmap_face): Signal error in lookup_named_face. - - * window.c (set_window_buffer): Clear display_error_modiff. - -2004-11-22 Kim F. Storm - - * fringe.c (update_window_fringes): Provide sensible fall-back - value for non-nil indicate-buffer-boundaries setting. - -2004-11-22 Markus Rost - - * minibuf.c (Fminibuffer_complete_and_exit): Fix previous change. - -2004-11-22 Stefan Monnier - - * eval.c (Fdefvar): Warn when var is let-bound but globally void. - -2004-11-21 Kim F. Storm - - * xdisp.c (erase_phys_cursor): Clear hollow cursor inside TEXT_AREA. - - * xterm.c (x_clip_to_row): Add area arg. Callers changed. - (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA. - - * w32term.c (w32_clip_to_row): Add area arg. Callers changed. - (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA. - - * macterm.c (x_clip_to_row): Add area arg. Callers changed. - (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA. - - * xdisp.c (move_it_in_display_line_to, display_line): - Restore saved_face_id if overflow-newline-into-fringe is enabled and - line is continued before or in middle of element from display vector. - - * indent.c (Fvertical_motion): Fix last change. Use another - method to detect if iterator moved too far ahead after reseat. - - * xdisp.c (IT_EXPAND_MATRIX_WIDTH): New macro. Do not - expand matrix width for overflow in zero-width area. - (append_glyph, append_composite_glyph, produce_image_glyph) - (append_stretch_glyph): Use it to avoid loop in redisplay. - (note_mode_line_or_margin_highlight): Don't let help-echo from - string override help-echo from image map. - -2004-11-20 Luc Teirlinck - - * fns.c (Fyes_or_no_p): Call Fread_from_minibuffer with extra argument. - * callint.c (Fcall_interactively): Ditto. - -2004-11-20 Stefan Monnier - - * minibuf.c (Fminibuffer_complete_and_exit): - Fixup the case of the completed value, for case-indep completion. - -2004-11-20 Richard M. Stallman - - * lisp.h (Fread_from_minibuffer): Add arg in decl. - - * minibuf.c (read_minibuf): New arg KEEP_ALL. Callers changed. - (Fread_from_minibuffer): New arg KEEP_ALL. Callers changed. - - * search.c (Vsearch_spaces_regexp): - Rename from Vsearch_whitespace_regexp. All uses changed. - -2004-11-20 Thien-Thi Nguyen - - * eval.c (init_eval_once): Increase `max_specpdl_size' to 650. - -2004-11-19 Richard M. Stallman - - * search.c (Vsearch_whitespace_regexp): New variable. - (syms_of_search): Defvar it. - (compile_pattern_1): Call re_set_whitespace_regexp with it. - (search_buffer): No regexp is trivial if Vsearch_whitespace_regexp - is non-nil. - (struct regexp_cache): New element whitespace_regexp. - (syms_of_search): Initialize whitespace_regexp elements. - (compile_pattern): Compare whitespace_regexp elements. - (compile_pattern_1): Set whitespace_regexp elements. - - * regex.c (regex_compile): Substitute whitespace_regexp - for spaces, if it is nonzero. - (whitespace_regexp): New variable. - (re_set_whitespace_regexp): New function. - -2004-11-19 Kim F. Storm - - * indent.c (Fvertical_motion): Fix last change. - -2004-11-18 Kim F. Storm - - * indent.c (Fvertical_motion): Undo 2004-11-16 change. - Instead, move back again if reseating moves too far ahead. - -2004-11-17 Luc Teirlinck - - * xdisp.c (message3): Call clear_message. - -2004-11-17 Kim F. Storm - - * xdisp.c (erase_phys_cursor): Adjust cursor row visible height. - -2004-11-16 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_file_name): Typo in HAVE_GTK_FILE_SELECTION_NEW. - - * xmenu.c (x_menu_in_use): Remove. - (x_menu_set_in_use): Also set popup_activated_flag. - - * xfns.c (Fx_file_dialog): Call popup_activated instead of - x_menu_in_use. Call x_menu_set_in_use in Motif version also. - - * xterm.h (x_menu_in_use): Remove. - -2004-11-16 Richard M. Stallman - - * keymap.c (Fmap_keymap): New arg SORT-FIRST. - Use map-keymap-internal to implement that. - - * indent.c (Fvertical_motion): In batch mode, use vmotion directly. - -2004-11-16 Stefan Monnier - - * xdisp.c (get_glyph_string_clip_rect, init_glyph_string): Check it's - a window before using XWINDOW. - - * window.c (make_window, Fselect_window, make_dummy_parent) - (save_window_save): - * frame.c (make_frame): - * fns.c (concat): Avoid side-effects inside XSETFASTINT's arguments. - - * lisp.h (NILP): Use EQ rather than XFASTINT. - -2004-11-16 Kim F. Storm - - * fringe.c (Fdefine_fringe_bitmap): Always set 'h'. Simplify. - - * indent.c (Fvertical_motion): Fix last change. Only reseat when - moving backwards. - -2004-11-16 Luc Teirlinck - - * dispextern.h: Extern reseat_at_previous_visible_line_start. - -2004-11-16 Kenichi Handa - - * xdisp.c (display_mode_element): Fix previous change (calculate - end position of substring to display correctly). - -2004-11-16 Kim F. Storm - - * keyboard.c (Fposn_at_point): Remove extra */ after doc string. - Reported by Andrew M. Scott. - -2004-11-15 Kim F. Storm - - * fns.c (Fsafe_plist_get): New defun. - (syms_of_fns): Defsubr it. - - * lisp.h (Fsafe_plist_get): Add EXFUN. - - * xdisp.c (store_mode_line_string, produce_stretch_glyph): - Use Fsafe_plist_get. - (note_mode_line_or_margin_highlight, note_mouse_highlight): - Fix image map element parsing. Use Fsafe_plist_get. - -2004-11-15 Richard M. Stallman - - * xdisp.c (get_next_display_element): Fix previous change. - -2004-11-14 Jan Dj,Ad(Brv - - * window.c (shrink_windows): Handle special case of one window left - when trying to shrink the final reminder. Grow windows if - total_removed is less than total_shrink. - - * xmenu.c (pop_down_menu): Remove global variable current_menu, - extract pointer from arg with XSAVE_VALUE. - (create_and_show_popup_menu, create_and_show_dialog, xmenu_show): - Construct arg to record_unwind_protect with make_save_value. - -2004-11-13 Richard M. Stallman - - * xdisp.c (reseat_at_previous_visible_line_start): No longer static. - (get_next_display_element): Fix previous change to apply only to \n. - - * indent.c (Fvertical_motion): Scan to PT from start of line to - make iterator consistent. - - * minibuf.c (syms_of_minibuf) : Doc fix. - -2004-11-14 Jan Dj,Ad(Brv - - * gtkutil.c (pop_down_file_dialog): Add BLOCK_INPUT. - - * xfns.c (Fx_file_dialog): Call x_menu_in_use and x_menu_set_in_use. - Record unwind with clean_up_file_dialog. - - * xterm.h (x_menu_in_use, x_menu_set_in_use, x_menu_wait_for_event): - Declare. - - * xmenu.c (x_menu_in_use, x_menu_set_in_use): New functions. - -2004-11-13 Jan Dj,Ad(Brv - - * gtkutil.c (xg_file_sel_ok, xg_file_sel_cancel) - (xg_file_sel_destroy): Remove. - (xg_file_response_cb, pop_down_file_dialog) - (xg_get_file_name_from_chooser, xg_get_file_name_from_selector): - New functions. - (xg_get_file_with_chooser, xg_get_file_with_selection): - Take new arg func, set it to xg_get_file_name_from_chooser/selector. - Move common code to xg_get_file_name. Return widget created. - (xg_get_file_name): Set name, transient for, modal and destroy - with parent here. Connect response signal to xg_file_response_cb, - connect delete-event to gtk_true. Record pop_down_file_dialog - for unwind. Do event loop and call x_menu_wait_for_event in loop. - (xg_create_widget): Make dialogs modal. - - * xmenu.c (unuse_menu_items, pop_down_menu): Arg is of type - Lisp_Object. - (popup_get_selection): Move unwind protect ... - (create_and_show_popup_menu, create_and_show_dialog): ... to here. - Move destroy of widget to pop_down_menu. - (popup_widget_loop): Move unwind protect ... - (create_and_show_popup_menu, create_and_show_dialog): ... to here. - Move destroy of widget to pop_down_menu. - (pop_down_menu): BLOCK_INPUT and destroy widget/window. - (xmenu_show): Record unwind pop_down_menu. Move XMenuDestroy, - x_mouse_leave and grabbed = 0 to pop_down_menu. - -2004-11-13 Kim F. Storm - - * xdisp.c (make_cursor_line_fully_visible_p): New variable. - (syms_of_xdisp): DEFVAR_BOOL it. - (make_cursor_line_fully_visible, try_cursor_movement) - (try_window_id): Use it. - -2004-11-12 Kim F. Storm - - * dispextern.h (struct glyph_row): New member extra_line_spacing. - (struct it): New member max_extra_line_spacing. - (MR_PARTIALLY_VISIBLE, MR_PARTIALLY_VISIBLE_AT_TOP) - (MR_PARTIALLY_VISIBLE_AT_BOTTOM): New helper macros. - (MATRIX_ROW_PARTIALLY_VISIBLE_P): Fix to return false if invisible - part of last line is only extra line spacing (so the text on the - line is fully visible). Use helper macros. - Add W arg (to use them). All callers changed. - (MATRIX_ROW_PARTIALLY_VISIBLE_AT_TOP_P) - (MATRIX_ROW_PARTIALLY_VISIBLE_AT_BOTTOM_P): Use helper macros. - - * window.c (window_scroll_pixel_based, Frecenter): - Use move_it_vertically_backward directly. - (Frecenter): Fix calculation of new start pos for negative arg. - Before, the new start pos was sometimes chosen too far back, so - the last line became only partially visible, and thus would be - either only semi-visible or automatically scrolled to the middle - of the window by redisplay. - - * xdisp.c (init_iterator): Clear it.max_extra_line_spacing. - (move_it_vertically_backward): Don't recure to move further back. - (move_it_vertically): Remove superfluous condition. - (move_it_by_lines): Clear last_height when moved 0 lines. - (resize_mini_window): Use it.max_extra_line_spacing. - (display_tool_bar_line): Clear row->extra_line_spacing. - (try_scrolling): Use move_it_vertically_backward directly. - (redisplay_window): Likewise. - (compute_line_metrics): Set row->extra_line_spacing. - (display_line, display_string): Likewise. - (x_produce_glyphs): Update it->max_extra_line_spacing. - - * xmenu.c (pop_down_menu): Return nil. - -2004-11-12 Jan Dj,Ad(Brv - - * xmenu.c (x_menu_wait_for_event): New function. - (popup_get_selection, popup_widget_loop): Call x_menu_wait_for_event - to handle timers. - (popup_widget_loop): Add argument do_timers. - (create_and_show_popup_menu, create_and_show_dialog): Pass 1 for - do_timers to popup_widget_loop. - (xmenu_show): Call XMenuActivateSetWaitFunction so that - x_menu_wait_for_event is called by XMenuActivate. - (create_and_show_popup_menu): Pass 1 for do_timers to - popup_get_selection. - (pop_down_menu): New function. - (popup_get_selection, popup_widget_loop): Unwind protect to - pop_down_menu. - (popup_widget_loop): Add argument widget. - (create_and_show_popup_menu, create_and_show_dialog): Pass new - argument widget to popup_widget_loop. - -2004-11-10 Stefan Monnier - - * keymap.c (Fkeymap_prompt): Accept symbol keymaps. - -2004-11-09 Kim F. Storm - - * xselect.c: Include and (for getpid). - Fix various comments referring to XEvents instead of input events. - (x_queue_event): Fix format strings. - (x_stop_queuing_selection_requests): Likewise. - - * xdisp.c (produce_image_glyph): Remove unused variable 'face_ascent'. - (pint2hrstr): Add extra braces to silence compiler. - - * print.c (print_object): Fix format string. - - * lread.c (read1): Fix next_char matching. - - * lisp.h (Fdelete): Add EXFUN. - (replace_range_2): Add prototype. - - * keyboard.c (read_avail_input): Remove unused variable 'discard'. - - * intervals.h (NULL_INTERVAL_P): Add separate version when - ENABLE_CHECKING is not defined to silence compiler. - (compare_string_intervals): Add prototype. - - * fringe.c (destroy_fringe_bitmap): Fix return type. - (Ffringe_bitmaps_at_pos): Remove unused var 'old_buffer'. - - * emacs.c (Fdump_emacs): Fix format string. - - * doc.c: Include . - (Fsubstitute_command_keys): Remove unused variable 'firstkey'. - - * data.c (store_symval_forwarding): Remove unused variables. - - * callint.c (Fcall_interactively): Remove unused variable 'funcar'. - -2004-11-09 Jan Dj,Ad(Brv - - * Makefile.in (stamp-oldxmenu): If HAVE_GTK, don't add dependencies - to ${OLDXMENU}. - -2004-11-09 Kim F. Storm - - * process.c (Fmake_network_process): Remove kludge for interrupted - connects on BSD. If connect is interrupted, just close socket and - start over rather than sleeping and retry with same socket. - -2004-11-09 Jan Dj,Ad(Brv - - * .cvsignore: Add buildobj.lst. - - * doc.c: New variable Vbuild_files. - (Fsnarf_documentation): If Vbuild_files is nil, populate it with - file names from buildobj.lst. Only attach docstrings from files - that are in Vbuild_files. - (syms_of_doc): Defvar Vbuild_files. - - * Makefile.in (SOME_MACHINE_OBJECTS): Add fringe.o, image.o - and w32*.o. - (temacs${EXEEXT}): Generate buildobj.lst when temacs is linked. - (mostlyclean): Rm buildobj.lst - - * makefile.w32-in ($(TEMACS)): Generate buildobj.lst when temacs - is linked. - -2004-11-09 Kim F. Storm - - * fringe.c (update_window_fringes): Update fringe bitmaps if - cur and row ends_at_zv_p differs. If bitmaps of a row is updated, - also update previous row to get rid of misc. artifacts. - -2004-11-08 Kim F. Storm - - * xdisp.c (fast_find_position): Fix start pos if header line present. - (note_mouse_highlight): Clear mouse face if we move out of text area. - -2004-11-08 Eli Zaretskii - - * editfns.c: Move #include "systime.h" before . - Don't include explicitly. - Include unconditionally, not just on MacOS. - -2004-11-08 Kenichi Handa - - * fontset.c (fontset_pattern_regexp): Cancel my previous change; - don't pay attention to '\' before '*'. - (fontset_pattern_regexp): Change the meaning of the second arg. - (Fnew_fontset): Call fs_query_fontset, not Fquery_fontset. - (check_fontset_name): Try NAME as literal at first, and if it - failes, try NAME as pattern. - -2004-11-07 Jan Dj,Ad(Brv - - * emacs.c (Fdump_emacs): Only output warning on GNU/Linux. - -2004-11-07 Andreas Schwab - - * lisp.h (Fmsdos_downcase_filename): Declare. - * dired.c (Fmsdos_downcase_filename): Don't declare here. - * fileio.c: Likewise. - -2004-11-07 Jan Dj,Ad(Brv - - * dosfns.c (Fdos_memget, Fdos_memput): Use integer variable offs in - comparisons with integers instead of Lisp_Object address. - (Fmsdos_set_keyboard): Declare argument allkeys. - - * msdos.c (IT_set_frame_parameters): Use EQ, not ==, for Lisp_Object:s. - - * dired.c (Fmsdos_downcase_filename): Declare extern on MSDOS to avoid - int/Lisp_Object mixup. - - * fileio.c: Ditto. - -2004-11-06 Steven Tamm - - * editfns.c: Need to include sys/time.h before resource.h on darwin. - -2004-11-06 Richard M. Stallman - - * callint.c (Fcall_interactively): Avoid reusing EVENT for other data. - - * xfaces.c (merge_named_face): GCPRO the face_name in the - named_merge_point struct that we make. - (merge_face_heights): Eliminate GCPRO arg. All callers changed. - - * keyboard.c (command_loop_1): Change Vtransient_mark_mode - before deciding whether to inactivate mark. - -2004-11-06 Lars Brinkhoff - - * config.in: Regenerate (add HAVE_GETRUSAGE). - * editfns.c (Fget_internal_run_time): New function. - (syms_of_data): Defsubr it. - * fns.c (sxhash): As far as possible, merge calculation of - hash code for symbols and strings. - -2004-11-06 Eli Zaretskii - - * frame.c (syms_of_frame): Fix the example in the doc string. - -2004-11-06 Jan Dj,Ad(Brv - - * eval.c (Feval): Remove check for INPUT_BLOCKED_P. - - * xmenu.c (popup_get_selection, create_and_show_popup_menu) - (create_and_show_dialog): Revert change from 2004-10-31. - -2004-11-05 Luc Teirlinck - - * macros.c (syms_of_macros) : Doc fix. - -2004-11-05 Kim F. Storm - - * print.c (print_object): Print Lisp_Misc_Save_Value objects. - - * fileio.c (Ffile_modes): Doc fix. - (auto_save_1): Check for Ffile_modes nil value. - -2004-11-05 Kim F. Storm - - * xselect.c (struct selection_event_queue, selection_queue) - (x_queue_selection_requests, x_queue_event) - (x_start_queuing_selection_requests) - (x_stop_queuing_selection_requests): Add new queue for selection - input events to replace previous XEvent queue in xterm.c. - (queue_selection_requests_unwind): Adapt to new queue. - (x_reply_selection_request): Adapt to new queue. - Unexpect wait_object in case of x errors (memory leak). - (x_handle_selection_request, x_handle_selection_clear): Make static. - (x_handle_selection_event): New function. May queue selection events. - (wait_for_property_change_unwind): Use save_value instead of cons. - Clear property_change_reply_object. - (wait_for_property_change): Abort if already waiting. - Use save_value instead of cons for unwind data. - (x_handle_property_notify): Skip events already arrived, but don't - free them, as "arrived" field is checked by wait_for_property_change, - and it will be freed by unwind or explicit unexpect_property_change. - (x_get_foreign_selection): Add to new queue. - (receive_incremental_selection): Don't unexpect wait_object when done - as it has already been freed by previous wait_for_property_change. - - * xterm.h (x_start_queuing_selection_requests) - (x_stop_queuing_selection_requests, x_handle_selection_request) - (x_handle_selection_clear): Remove prototypes. - (x_handle_selection_event): Add prototype. - - * xterm.c (handle_one_xevent): Don't queue X selection events - here, it may be too late if we start queuing after we have already - stored some selection events into the kbd buffer. - (struct selection_event_queue, queue, x_queue_selection_requests) - (x_queue_event, x_unqueue_events, x_start_queuing_selection_requests) - (x_stop_queuing_selection_requests): Remove/move to xselect.c. - (x_catch_errors_unwind): Block input around final XSync. - - * keyboard.h (kbd_buffer_unget_event): Add prototype. - - * keyboard.c (kbd_buffer_store_event_hold): Remove obsolete code. - (kbd_buffer_unget_event): New function. - (kbd_buffer_get_event, swallow_events): Combine SELECTION events - and use x_handle_selection_event. - (mark_kboards): Don't mark x and y of SELECTION_CLEAR_EVENT. - -2004-11-05 Jan Dj,Ad(Brv - - * xselect.c (TRACE3): New debug macro. - (x_reply_selection_request): Use it. - (receive_incremental_selection): In call to TRACE0, the name of - a symbol is in xname. - -2004-11-05 Kim F. Storm - - * fontset.c (fontset_pattern_regexp): Use unsigned char. - -2004-11-04 Jan Dj,Ad(Brv - - * fileio.c (Fnext_read_file_uses_dialog_p): New function. - - * gtkutil.h (use_old_gtk_file_dialog): Declare. - - * gtkutil.c: Make use_old_gtk_file_dialog non-static. - (xg_initialize): Move DEFVAR_BOOL for use_old_gtk_file_dialog ... - * xfns.c (syms_of_xfns): ... to here. - - * gtkutil.c (xg_get_file_with_chooser): Expand DEFAULT_FILENAME if - it doesn't start with /. - -2004-11-04 Kenichi Handa - - * fontset.c (fontset_pattern_regexp): If '*' is preceded by '\', - treat it as a literal character. - -2004-11-03 Kim F. Storm - - * .gdbinit (ppt): New function. - -2004-11-02 Jan Dj,Ad(Brv - - * xterm.c (x_window_to_scroll_bar): Only call - xg_get_scroll_id_for_window if toolkit scroll bars are used. - - * gtkutil.c (xg_get_file_with_chooser): Use GTK_STOCK_OK instead - of save. - -2004-11-02 Andreas Schwab - - * window.c (Fscroll_right): Fix last change. - -2004-11-02 Kim F. Storm - - * Makefile.in (callproc.o): Depend on blockinput.h, atimer.h, systime.h. - -2004-11-02 YAMAMOTO Mitsuharu - - * callproc.c (Fcall_process): Block input around vfork. - -2004-11-02 Kim F. Storm - - * eval.c (Fcalled_interactively_p): Rename from Fcall_interactive_p. - (syms_of_eval): Defsubr it. - -2004-11-02 Richard M. Stallman - - * insdel.c (replace_range_2): New function. - - * casefiddle.c (casify_region): Handle changes in byte-length - using replace_range_2. - - * emacs.c (USAGE3): Delete --horizontal-scroll-bars, -hb. - - * xdisp.c (back_to_previous_visible_line_start): - Subtract 1 from pos when checking previous newline for invisibility. - - * window.c (window_scroll_pixel_based): Update preserve_y - for header line if any. - (Fscroll_left, Fscroll_right): Don't call interactive_p; - use a new second argument instead. - - * eval.c (Fcall_interactive_p): New function. - (interactive_p): Don't test INTERACTIVE here. - (Finteractive_p): Doc fix. - - * eval.c (Feval): Abort if INPUT_BLOCKED_P. - -2004-11-02 KOBAYASHI Yasuhiro - - * w32fns.c (w32_font_match): Use fast_string_match_ignore_case for - comparing font names. - -2004-11-02 Jan Dj,Ad(Brv - - * fileio.c (Fread_file_name): Pass Qt as fifth parameter to - Fx_file_dialog if only directories should be read. - - * lisp.h: Fx_file_dialog takes 5 parameters. - - * xfns.c (Fx_file_dialog): Both Motif and GTK version: - Add parameter only_dir_p. - In Motif version, don't put DEFAULT_FILENAME in filter part of the - dialog, just text field part. Do not add DEFAULT_FILENAME - to list of files if it isn't there. - In GTK version, pass only_dir_p parameter to xg_get_file_name. - - * macfns.c (Fx_file_dialog): Add parameter only_dir_p. - Check only_dir_p instead of comparing prompt to "Dired". When using - a save dialog, add option kNavDontConfirmReplacement, change title - to "Enter name", change text for save button to "Ok". - - * w32fns.c (Fx_file_dialog): Add parameter only_dir_p. - Check only_dir_p instead of comparing prompt to "Dired". - - * gtkutil.c (xg_get_file_with_chooser, xg_get_file_with_selection): - New functions, only defined ifdef HAVE_GTK_FILE_CHOOSER_DIALOG_NEW - and HAVE_GTK_FILE_SELECTION_NEW respectively. - (xg_get_file_name): Add parameter only_dir_p. - Call xg_get_file_with_chooser or xg_get_file_with_selection - depending on HAVE_GTK_FILE* and the value of use_old_gtk_file_dialog. - (xg_initialize): New DEFVAR_BOOL use_old_gtk_file_dialog. - - * gtkutil.h (xg_get_file_name): Add parameter only_dir_p. - - * config.in: Rebuild (added HAVE_GTK_FILE_*). - -2004-11-01 Kim F. Storm - - * process.c (connect_wait_mask, num_pending_connects): - Only declare and use them if NON_BLOCKING_CONNECT is defined. - (init_process): Initialize them if NON_BLOCKING_CONNECT defined. - (IF_NON_BLOCKING_CONNECT): New helper macro. - (wait_reading_process_output): Only declare and use local vars - Connecting and check_connect when NON_BLOCKING_CONNECT is defined. - -2004-11-01 Andy Petrusenco (tiny change) - - * w32term.c (x_scroll_run): Delete region objects after use. - -2004-10-31 Jan Dj,Ad(Brv - - * xmenu.c: Add prototypes for forward function declarations. - (popup_get_selection): Remove parameter do_timers, remove call to - timer_check. - (create_and_show_popup_menu, create_and_show_dialog): - Remove parameter do_timers from call to popup_get_selection. - - * xdisp.c (update_tool_bar): Pass a copy of f->tool_bar_items to - tool_bar_items and assign the result to f->tool_bar_items if - not equal. Move BLOCK/UNBLOCK_INPUT from around call to - tool_bar_items to assignment of result. - - * atimer.c (alarm_signal_handler): Do not call set_alarm if - pending_atimers is non-zero. - -2004-10-31 Kim F. Storm - - * dispnew.c (margin_glyphs_to_reserve): Don't use ncols_scale_factor. - -2004-10-28 Will - - * macterm.c: Allow user to assign key modifiers to the Mac Option - key via a 'mac-option-modifier' variable. - -2004-10-28 Stefan Monnier - - * xselect.c (Vx_lost_selection_functions, Vx_sent_selection_functions): - Rename from Vx_lost_selection_hooks and Vx_sent_selection_hooks. - (x_handle_selection_request, x_handle_selection_clear) - (x_clear_frame_selections, syms_of_xselect): Adjust accordingly. - -2004-10-28 Richard M. Stallman - - * w32fns.c (Fx_server_vendor, Fx_server_version): Doc fixes. - - * xfns.c (Fx_server_vendor, Fx_server_version): Doc fixes. - -2004-10-27 Stefan Monnier - - * syntax.c (scan_sexps_forward): Give precedence to a 2-char - comment-starter over a 1-char one. - -2004-10-27 Richard M. Stallman - - * xdisp.c (get_next_display_element): In mode lines, - treat newline and tab like other control characters. - - * editfns.c (Fmessage): Doc fix. - - * indent.c (vmotion): When moving up, check the newline before. - Make prevline an int, not a Lisp_Object. - -2004-10-27 Kim F. Storm - - * editfns.c (Fformat): Allocate discarded table with SAFE_ALLOCA. - Only allocate info and discarded tables once. - - * lisp.h (USE_SAFE_ALLOCA): Add and init sa_must_free integer. - (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Increment it when malloc is used. - (SAFE_FREE): Test it to determine if we need to unwind to free. - Remove size arg. All users changed. - (SAFE_FREE_LISP) Remove. All users changed to use SAFE_FREE. - -2004-10-26 Jan Dj,Ad(Brv - - * gtkutil.c: Put empty line between comment and function body. - (xg_destroy_widgets): Rename from remove_from_container. - Just destroy all widgets in list. Argument wcont removed. - (xg_update_menubar, xg_update_submenu): Call xg_destroy_widgets - instead of remove_from_container. - (xg_display_close, xg_create_tool_bar, update_frame_tool_bar) - (free_frame_tool_bar): Add comment. - - * xfns.c (xic_create_xfontset): Check that FRAME_XIC_BASE_FONTNAME - is not NULL before strcmp. - -2004-10-26 Kim F. Storm - - * callint.c (Fcall_interactively): Add 'U' code to get the - up-event discarded by a previous 'k' or 'K' argument. - -2004-10-26 David Kastrup - - * buffer.c (syms_of_buffer): Fix a few typos. - -2004-10-26 Jan Dj,Ad(Brv - - * xsmfns.c: Put empty line between comment and function body. - Use two spaces before comment end. - -2004-10-25 Kenichi Handa - - * fontset.c (fontset_pattern_regexp): Optimize for the case that - PATTERN is full XLFD. - -2004-10-24 Kenichi Handa - - * regex.h (enum reg_errcode_t): New value REG_ERANGEX. - - * regex.c (re_error_msgid): Add an entry for REG_ERANGEX. - (regex_compile): Return REG_ERANGEX if appropriate. - -2004-10-22 Kenichi Handa - - * editfns.c (Ftranslate_region_internal): New function. - (syms_of_editfns): Defsubr it. - -2004-10-22 Jan Dj,Ad(Brv - - * xfns.c (xic_create_xfontset): Initialize missing_list to NULL. - -2004-10-21 K,Aa(Broly L$,1 q(Brentey - - * xterm.h (x_output): New member `xic_base_fontname'. - (FRAME_XIC_BASE_FONTNAME): New macro. - (xic_free_xfontset): Declare. - - * xfns.c (xic_create_xfontset): Share fontsets between frames - based on base_fontname. - (xic_free_xfontset): New function. - (free_frame_xic): Use it. - (xic_set_xfontset): Ditto. - - * xterm.c (xim_destroy_callback): Ditto. - -2004-10-20 B. Anyos (tiny change) - - * w32term.c (x_draw_glyph_string): Use overline_color for overlines. - -2004-10-20 Jan Dj,Ad(Brv - - * xterm.h (XSync): If USE_GTK, define XSync as process_all and then - XSync. - - * emacs.c (my_heap_start, heap_bss_diff, MAX_HEAP_BSS_DIFF): - New variables and constant. - (main): Calculate heap_bss_diff. If we are dumping and the - heap_bss_diff is greater than MAX_HEAP_BSS_DIFF, set PER_LINUX32 - and exec ourself again. - (Fdump_emacs): If heap_bss_diff is greater than MAX_HEAP_BSS_DIFF - print a warning. - - * lastfile.c: Make my_endbss and my_endbss_static available on all - platforms. - - * Makefile.in (RUN_TEMACS): Remove @SETARCH@. - * config.in (HAVE_PERSONALITY_LINUX32): Regenerate. - -2004-10-19 Luc Teirlinck - - * data.c (Flocal_variable_if_set_p): Doc fix. - -2004-10-19 Jason Rumney - - * w32.c (init_environment): Set emacs_dir correctly when running - emacs from the build directory. - -2004-10-19 Richard M. Stallman - - * editfns.c (Fdelete_and_extract_region): - If region is empty, return null string. - -2004-10-19 Jan Dj,Ad(Brv - - * gtkutil.h (xg_update_scrollbar_pos): Remove arguments real_left - and canon_width. - (xg_frame_cleared): Remove. - - * gtkutil.c (xg_frame_cleared, xg_fixed_handle_expose) - (xg_find_top_left_in_fixed): Remove. - (xg_create_scroll_bar): Put an event box widget between - the scroll bar widget and the edit widget. - (xg_show_scroll_bar): Show the parent widget (the event box). - (xg_remove_scroll_bar): Destroy parent (the event box) also. - (xg_update_scrollbar_pos): Remove arguments real_left and canon_width. - Move the parent (the event box) widget inside the fixed widget. - Move window clear to xterm.c. - - * gtkutil.h (xg_frame_cleared): Remove. - - * xterm.c (x_clear_frame): Remove call to xg_frame_cleared - (x_scroll_bar_create, XTset_vertical_scroll_bar): - Remove arguments left and width to xg_update_scrollbar_pos. - (XTset_vertical_scroll_bar): Do x_clear_area for USE_GTK also. - -2004-10-19 Kenichi Handa - - * xdisp.c (display_mode_element): Fix display of wide chars. - -2004-10-18 Jan Dj,Ad(Brv - - * gtkutil.c (xg_update_scrollbar_pos): Change XClearWindow to - gdk_window_clear and move gdk_window_process_all_updates after - clear so events are sent to the X server in correct order. - -2004-10-18 Kenichi Handa - - * fontset.c (fs_load_font): Use fast_string_match_ignore_case for - comparing font names. - (fs_query_fontset): Use fast_string_match for comparing fontset names. - (list_fontsets): Likewise. - - * search.c (fast_string_match_ignore_case): New function. - - * lisp.h (fast_string_match_ignore_case): Extern it. - -2004-10-17 Kim F. Storm - - * xdisp.c (overlay_arrow_at_row): Return overlay string rather - than bitmap if there is not left fringe. - (get_overlay_arrow_glyph_row): Also used on windows system. - (display_line): Display overlay string if no left fringe. - -2004-10-16 Jason Rumney - - * w32fns.c (w32_font_match): Encode font name being matched. - -2004-10-16 Richard M. Stallman - - * window.c (Fspecial_display_p): Doc fix. - -2004-10-15 Stefan Monnier - - * doc.c (Fsubstitute_command_keys): Fix remap-handling. - Don't ignore menus, because where-is-internal already does it for us. - -2004-10-15 Kim F. Storm - - * xdisp.c (redisplay_window): Only update fringes and vertical - border on window frames. - -2004-10-14 Andreas Schwab - - * m/ia64.h (DATA_SEG_BITS): Don't define. - -2004-10-14 Kim F. Storm - - * xterm.h: Include Xutil.h after keysym.h to work around bug - in some X versions. - -2004-10-13 Stefan Monnier - - * fns.c (map_char_table): Add missing gcpros. - -2004-10-13 Stefan Monnier - - * keymap.c (get_keymap): An autoload form is not a keymap. - - * textprop.c (syms_of_textprop): Make `syntax-table' nonsticky. - -2004-10-13 Kim F. Storm - - * callproc.c (Fcall_process): Simplify handling of display arg. - Resume `display_on_the_fly' once a coding system is determined. - - * xdisp.c (redisplay_preserve_echo_area): Fix last change. - -2004-10-12 Kim F. Storm - - * xdisp.c (redisplay_preserve_echo_area): Flush display in case - caller, such as call-process, is not going to poll for input. - (calc_line_height_property): Handle case where it->object is nil. - - * xterm.c (x_redisplay_interface): Fix flush_display_optional. - -2004-10-12 Kenichi Handa - - * xdisp.c (get_next_display_element): - If unibyte_display_via_language_environment is zero, display 8-bit - chars in octal in unibyte buffer. - -2004-10-12 Kim F. Storm - - * doc.c (Fsubstitute_command_keys): Ignore remappings unless there - are no ordinary bindings. - -2004-10-11 Jan Dj,Ad(Brv - - * xfns.c (syms_of_xfns): Defsubr x-file-dialog for GTK also. - -2004-10-10 YAMAMOTO Mitsuharu - - * macterm.c (x_raise_frame): Add BLOCK_INPUT around SelectWindow. - (x_lower_frame): Add BLOCK_INPUT around SendBehind. - (make_mac_frame): Add BLOCK_INPUT around the making of a - terminal frame. - (mac_initialize): Add BLOCK_INPUT around carbon initialization. - * macgui.h (mktime): Use emacs_mktime. - * macfns.c (Fx_file_dialog): Add BLOCK_INPUT around more code. - Make a cancel file-open dialog be like C-g. - * mac.c (mktime): Use emacs_mktime. - (Fdo_applescript): Add BLOCK_INPUT around do_applescript. - (Fmac_paste_function): Add better error handling for carbon cut/paste. - -2004-10-10 Kim F. Storm - - * keyboard.c (timer_resume_idle): New function to resume idle - timer without resetting timers on the idle list. - (read_char): Use timer_resume_idle. Remove local var last_idle_start. - (timer_start_idle, timer_stop_idle): Declare static. - (read_key_sequence): Use timer_resume_idle instead of timer_start_idle. - - * keyboard.h (timer_start_idle, timer_stop_idle): Remove prototypes. - -2004-10-08 Steven Tamm - - * config.in (HAVE_MALLOC_MALLOC_H): Regenerate. - * macterm.c (mac_check_for_quit_char): Remove warning for using - NULL where 0 should be used. - * unexmacosx.c: Use malloc/malloc.h on Tiger instead of - objc/malloc.h - * mac.c: Include time.h for Tiger compatibility. - -2004-10-07 Kim F. Storm - - * xdisp.c (redisplay_window): Fix flicker on vertical line between - windows. Update vertical line after drawing window fringes, but - only if actually drawing any bitmaps--or there is no fringe. - - * xterm.c (x_update_window_end): Likewise. - * macterm.c (x_update_window_end): Likewise. - * w32term.c (x_update_window_end): Likewise. - - * fringe.c (draw_window_fringes): Return value now indicates if - any fringe bitmaps were redrawn (or there are no fringes). - - * dispextern.h (draw_window_fringes): Update prototype. - -2004-10-06 YAMAMOTO Mitsuharu - - * macfns.c (mac_get_window_bounds): Add extern. - (x_real_positions): Use mac_get_window_bounds. - - * macmenu.c (update_submenu_strings): Apply 2004-09-07 change for - xmenu.c (YAILOM). - - * macterm.c [!MAC_OSX]: Include Windows.h. - (front_emacs_window): Rename from mac_front_window. All uses - changed. Return the frontmost non-tooltip emacs window. - (mac_get_window_bounds): New function. - (x_calc_absolute_position): Use the difference of width and height - between the inner and outer window. - (x_set_offset): Specify window position by the coordinae of the - outer window. Adjust the position if the title bar is completely - outside the screen. - (app_is_suspended, app_sleep_time): Remove unused variables. - (do_app_resume, do_app_suspend): Remove their contents because - window-activate/deactivate events will do the job. - (do_zoom_window): Remove unused variables. Make compliant to the - standard way of zooming. Set f->left_pos and f->top_pos. - (XTread_socket): Don't use argument `expected'. Don't use - FrontWindow to determine the clicked window. Exclude unprocessed - mouseUp cases in the early stage. Add parentheses to fix operator - precedence. - (XTread_socket) [TARGET_API_MAC_CARBON]: Don't specify drag area. - -2004-10-05 Jan Dj,Ad(Brv - - * config.in: Regenerate. - - * Makefile.in (RUN_TEMACS): Check HAVE_RANDOM_HEAPSTART instead of - HAVE_EXECSHIELD. - -2004-10-05 Jan Dj,Ad(Brv - - * xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for - a row if Alt or Meta has been found for that row. Also stop scanning - for Keysyms for that row. - -2004-10-04 Kim F. Storm - - * fringe.c (Ffringe_bitmaps_at_pos): Change return value from cons - to list. Include overlay arrow bitmap in return value. - - * xterm.c (XTset_vertical_scroll_bar): Improve handling of scroll - bars with fractional column width. If scroll bar separates two - windows, move it towards the window it belongs to. Only update - the padding area below the scroll bar widget when necessary, - i.e. when scroll bar widget is created, moved, or resized. - - * xdisp.c (define_frame_cursor1): Do not change frame cursor - while tracking/dragging mouse. - (x_draw_vertical_border): Do not draw line if frame has scroll bars. - - * window.c (coordinates_in_window): Relax check for cursor - on vertial border between mode lines. - (Fset_window_fringes): Do not allow negative widths. - (Fset_window_scroll_bars): Likewise. - - * .gdbinit (pp): Shorthand for p ARG + pr. - (ff): New command: flush frame updates (X only). - -2004-10-03 Michael Albinus - - * fileio.c (auto_save_1) Call Ffile_modes for remote files. - -2004-09-30 Kenichi Handa - - * process.c (send_process): Free composition data. - - * fileio.c (Finsert_file_contents): Free composition data. - - * coding.c (code_convert_region): Don't skip ASCIIs if there are - compositions to encode. - (encode_coding_string): Likewise. Free composition data. - -2004-09-30 Florian Weimer - - * coding.c (code_convert_region): Free composition data. - -2004-09-29 Kim F. Storm - - * fringe.c: Remove limit on number of bitmaps. - (fringe_bitmaps, fringe_faces): Change to pointers. - (max_fringe_bitmaps): New var. - (Fdefine_fringe_bitmap): Expand fringe_bitmaps and fringe_faces. - (init_fringe): Allocate fringe_bitmaps and fringe_faces. - - * dispextern.h (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps). - (struct glyph_row): Reorder fringe_bitmap related fields. - (struct it): Likewise. - - * w32term.c (fringe_bmp): Change to pointer. - (max_fringe_bmp): New var. - (w32_define_fringe_bitmap): Expand fringe_bmp. - (w32_draw_fringe_bitmap): Check max_fringe_bmp. - (w32_destroy_fringe_bitmap): Likewise. - -2004-09-29 Kim F. Storm - - * fringe.c: Simplify last change. - (lookup_fringe_bitmap): New function. - (valid_fringe_bitmap_p, resolve_fringe_bitmap): Remove. - (Fdestroy_fringe_bitmap): Use lookup_fringe_bitmap. - Keep standard bitmaps in Vfringe_bitmaps. - (Fdefine_fringe_bitmap): Use lookup_fringe_bitmap. - (Fset_fringe_bitmap_face): Likewise. - - * dispextern.h (lookup_fringe_bitmap): Add prototype. - (valid_fringe_bitmap_p): Remove prototype. - - * xdisp.c (handle_single_display_prop): Use lookup_fringe_bitmap. - -2004-09-29 Kim F. Storm - - * fringe.c (destroy_fringe_bitmap, init_fringe_bitmap) - (w32_init_fringe, w32_reset_fringes): Fix bootstrap (NULL rif). - - * dispextern.h (valid_fringe_bitmap_p): Fix prototype. - - * fringe.c (Vfringe_bitmaps): New variable. - (syms_of_fringe): DEFVAR_LISP it. - (valid_fringe_bitmap_p): Rename from valid_fringe_bitmap_id_p. - Change arg to Lisp_Object and fail if not an integer. - (get_fringe_bitmap_name, resolve_fringe_bitmap) - (destroy_fringe_bitmap): New functions. - (Fdestroy_fringe_bitmap): Change arg to bitmap symbol. - Use destroy_fringe_bitmap. Remove symbol from Vfringe_bitmaps and - clear its fringe property. - (init_fringe_bitmap): Use destroy_fringe_bitmap instead of - Fdestroy_fringe_bitmap. - (Fdefine_fringe_bitmap): Add BITMAP arg specifying new or existing - bitmap symbol; remove WHICH arg. Add symbol to Vfringe_bitmaps - and set fringe property. Signal error if no free slots. - (Fset_fringe_bitmap_face): Change arg to bitmap symbol. - (Ffringe_bitmaps_at_pos): Return bitmap symbols instead of numbers. - - * xdisp.c (handle_single_display_prop): Fringe bitmaps are now - symbols with a fringe property. - -2004-09-27 Kim F. Storm - - * buffer.c (syms_of_buffer) : - Doc fix. Format may now be a symbol or alist, not a cons. - - * fringe.c (update_window_fringes): Handle new formats of - indicate-buffer-boundaries (symbol or alist). No longer - allow a simple cons. - (Ffringe_bitmaps_at_pos): Use nil value for no bitmap. - -2004-09-25 Jan Dj,Ad(Brv - - * config.in: Rebuild. - -2004-09-24 Jan Dj,Ad(Brv - - * config.in: Rebuild. - - * Makefile.in: Run setarch i386 ./temacs if exec-shield is present. - -2004-09-18 Stefan Monnier - - * xterm.c (x_term_init): Work around a bug in some X servers. - -2004-09-18 Richard M. Stallman - - * buffer.c (syms_of_buffer) : Doc fix. - - * xdisp.c (try_window_reusing_current_matrix): - Handle the case where we reach the old displayed text, - out of sync with the old line boundary. - -2004-09-14 Stefan Monnier - - * fileio.c (Finsert_file_contents): Fix case of replacement in a - narrowed buffer. - -2004-09-14 Kim F. Storm - - * puresize.h (PURESIZE_RATIO): Define based on BITS_PER_EMACS_INT. - - * xfaces.c (Qface_no_inherit): New var. - (syms_of_xfaces): Intern and staticpro it. - (Finternal_make_lisp_face, Finternal_set_lisp_face_attribute) - (Finternal_copy_lisp_face, update_face_from_frame_parameter): - Don't increment face_change_count when face has non-nil - face-no-inherit property. - -2004-09-13 Stefan Monnier - - * bytecode.c (BYTE_CODE_QUIT): Add missing AFTER_POTENTIAL_GC. - (Fbyte_code): Remove dead code after `wrong_type_argument'. - - * alloc.c (Fgarbage_collect): Mark keyboards, gtk data, and specpdl - before doing the mark_stack_check_gcpros since they're not on the stack. - -2004-09-12 Kim F. Storm - - * editfns.c (Fformat): Handle format strings with multiple text - properties. Reverse text property list from the format string, - so the positions are in increasing order. - -2004-09-10 Jan Dj,Ad(Brv - - * xselect.c (x_reply_selection_request): XSync and UNBLOCK before - x_uncatch_errors so that possible protocol errors are delivered. - -2004-09-10 Eli Zaretskii - - * Makefile.in (msdos.o): Depend on buffer.h, commands.h, and - blockinput.h. - (dosfns.o): Depend on blockinput.h, window.h, dispextern.h, - charset.h, and coding.h - (w16select.o): Depend on buffer.h, charset.h, coding.h, and composite.h. - (term.o): Depend on window.h and keymap.h. - (abbrev.o): Depend on syntax.h. - (callint.o): Depend on keymap.h. - (casefiddle.o): Depend on charset.h and keymap.h. - (category.o): Depend on keymap.h. - (coding.o): Depend on dispextern.h. - (cmds.o): Depend on keyboard.h and keymap.h. - (dispnew.o): Depend on indent.h and intervals.h. - (doc.o): Depend on keymap.h. - (editfns.o): Depend on frame.h. - (emacs.o): Depend on dispextern.h. - (fileio.o): Don't depend on ccl.h. - (filelock.o): Depend on charset.h and coding.h. - (frame.o): Depend on w32term.h and macterm.h. - (insdel.o): Depend on region-cache.h. - (keyboard.o): Depend on keymap.h, w32term.h, and macterm.h. - (minibuf.o): Depend on $(INTERVALS_SRC) and keymap.h. - (search.o): Depend on $(INTERVALS_SRC). - (syntax.o): Depend on keymap.h, regex.h, and $(INTERVALS_SRC). - (window.o): Depend on keymap.h, blockinput.h, $(INTERVALS_SRC), - xterm.h, w32term.h, and macterm.h. - (xdisp.o): Depend on keyboard.h, $(INTERVALS_SRC), xterm.h, - w32term.h, and macterm.h. - (xfaces.o): Depend on keyboard.h, $(INTERVALS_SRC), - region-cache.h, xterm.h, w32term.h, and macterm.h. - (bytecode.o): Depend on dispextern.h, frame.h, and xterm.h. - (data.o): Depend on frame.h. - (fns.o): Depend on keymap.h, xterm.h, and blockinput.h. - (print.o): Depend on termchar.h and $(INTERVALS_SRC). - (lread.o): Depend on $(INTERVALS_SRC), termhooks.h, and coding.h. - (intervals.o): Depend on keymap.h. - - * msdos.c (msdos_set_cursor_shape, IT_display_cursor): - Add debugging print-out to termscript. - -2004-09-09 Richard M. Stallman - - * xdisp.c (decode_mode_spec): Use current buffer for most purposes. - -2004-09-08 Richard M. Stallman - - * window.c (Fset_window_buffer): Doc fix. - - * xdisp.c (Fformat_mode_line): New arg BUFFER says which buffer to use. - -2004-09-08 Dan Nicolaescu - - * minibuf.c (history_delete_duplicates): New variable. - (read_minibuf): Use it. - (syms_of_minibuf): Create the corresponding lisp variable. - -2004-09-08 Kim F. Storm - - * xdisp.c (set_cursor_from_row): Also look at 'cursor' property in - overlay just before point. - -2004-09-07 Luc Teirlinck - - * buffer.h (struct buffer): Add auto_save_file_format field. - * buffer.c (reset_buffer, init_buffer_once): - Handle auto_save_file_format field. - (syms_of_buffer): Add DEFVAR_PER_BUFFER for - `buffer-auto-save-file-format'. - * fileio.c: Delete declaration for removed Vauto_save_file_format. - (build_annotations): Adapt to replacement of - `auto-save-file-format' with the new buffer-local variable - `buffer-auto-save-file-format'. - (syms_of_fileio): Delete DEFVAR_LISP for auto-save-file-format. - -2004-09-07 Jason Rumney - - * w32term.h (AppendMenuW_Proc): Move declaration from w32menu.c. - - * w32fns.c (w32_wnd_proc) : - Handle Unicode menu titles. - -2004-09-07 Kim F. Storm - - * xdisp.c (set_cursor_from_row): Fix last change. Only use 'cursor' - property from text property or overlay strings at point. - -2004-09-07 Stefan Monnier - - * xmenu.c (update_submenu_strings): YAILOM. - (set_frame_menubar): Make sure last_i is initialized. - -2004-09-03 Jason Rumney - - * w32menu.c (_widget_value): Add lname and lkey. - (digest_single_submenu): Set lname and lkey in widget_value - instead of name and key. - (update_submenu_strings): New function. - (set_frame_menubar): Remove call to inhibit_garbage_collection, - call update_submenu_strings. - - * w32menu.c (globals_of_w32menu): Check for Unicode API. - (digest_single_submenu, w32_menu_show): Encode menu strings as - UTF-8 if Unicode API is available. - (utf8to16): New function. - (add_menu_item): Use it when calling Unicode API. - -2004-09-03 Kim F. Storm - - * xdisp.c (set_cursor_from_row): Look for non-nil `cursor' property - in overlay or text-property strings; set cursor on corresponding - glyph rather than at end of the string. - -2004-09-02 YAMAMOTO Mitsuharu - - * macfns.c (x_real_positions): Save the current window port and - set a new one before obtaining the global coordinate. - Use FRAME_MAC_WINDOW. - (x_set_name, x_set_title): Encode title to UTF8. - Use SetWindowTitleWithCFString. - (Fx_server_version): Get correct OS version. - - * macmenu.c (add_menu_item): Remove unused variable `i'. - Don't let separator items destroy refence constants of other menu items. - - * macterm.c (x_update_end): Move SetPortWindowPort to inside - BLOCK_INPUT. - (x_set_offset): Use FRAME_MAC_WINDOW. - - * xdisp.c (note_mouse_highlight): Set the mouse pointer shape to - nontext_cursor if it is on a scroll bar. - - * s/darwin.h (LIBS_CARBON): New define to specify libraries for - Carbon support. - (LD_SWITCH_SYSTEM_TEMACS): Don't link with unused libstdc++. - Use LIBS_CARBON. - -2004-09-02 Jan Dj,Ad(Brv - - * xfns.c (x_set_name_internal): New function. Check if we shall call - xfree before ENCODE_UTF_8. - (x_set_name, x_set_title): Call x_set_name_internal. - -2004-08-31 NAKAMURA Toshikazu (tiny change) - - * w32fns.c (w32_load_font): If a BDF font is already loaded, do not - reload it. - -2004-08-30 Jan Dj,Ad(Brv - - * macmenu.c (_widget_value): Add lname and lkey. - (single_submenu): Set lname and lkey in widget_value - instead of name and key. - (update_submenu_strings): New function. - (set_frame_menubar): Remove call to inhibit_garbage_collection, - call update_submenu_strings. - - * xmenu.c (digest_single_submenu): Set lname and lkey in widget_value - instead of name and key. - (update_submenu_strings): New function. - (set_frame_menubar): Remove call to inhibit_garbage_collection, - call update_submenu_strings. - - * gtkutil.h (_widget_value): Added lname and lkey. - -2004-08-30 Steven Tamm - - * macmenu.c (mac_menu_show): Remove shadowing of menu variable - by using different names for inner loop variables. - -2004-08-27 Jan Dj,Ad(Brv - - * xmenu.c (set_frame_menubar): Reintroduce inhibit_garbage_collection - from 2002-07-15T00:01:34Z!raeburn@raeburn.org so that strings from ENCODE_UTF_8 isn't GC:ed before used. - - * gtkutil.c (xg_create_frame_widgets): Compensate for tool bar when - tool bar items is 0. - -2004-08-26 YAMAMOTO Mitsuharu - - * macmenu.c (ENCODE_MENU_STRING): Added to handle multibyte - strings in menu items. - (single_submenu): Use ENCODE_MENU_STRING - (mac_menu_show): Use ENCODE_MENU_STRING. Reset grabbed because - button release isn't passed to event loop - (add_menu_item): Use SetMenuItemWithCFString - -2004-08-26 Steven Tamm - - * fileio.c (Fread_file_name): Call x_file_dialog on carbon on - tool-bar/menu click. - * macfns.c (Fx_file_dialog): Implement using NavServices. - -2004-08-24 Jan Dj,Ad(Brv - - * xterm.c (x_catch_errors_unwind): Do not XSync if display has closed. - - * xfns.c (x_window_to_frame, x_any_window_to_frame) - (x_non_menubar_window_to_frame, x_menubar_window_to_frame) - (x_top_window_to_frame): Return 0 if wdesc is None. - -2004-08-22 Richard M. Stallman - - * process.c (process_send_signal) [SIGNALS_VIA_CHARACTERS, - HAVE_TERMIOS]: If there's no char for this signal, drop through - and use system calls. - - * bytecode.c (Fbyte_code) : Cannot GC. - -2004-08-20 Kim F. Storm - - * process.c (wait_reading_process_output): Rename from - wait_reading_process_input. All uses changed. - (wait_reading_process_output_1): Rename from - wait_reading_process_input_1. All uses changed. - - * dispnew.c (Fsleep_for): Remove obsolete code. - -2004-08-20 Kenichi Handa - - * syntax.c (skip_chars): Fix for unibyte case. - -2004-08-19 Stefan Monnier - - * syntax.c (char_quoted): Mixup byte/char pos. - (back_comment): Fixup globals in all cases. - -2004-08-19 Jan Dj,Ad(Brv - - * xfns.c (x_set_name, x_set_title): Encode title to UTF8 before - passing it to gtk_window_set_title. - -2004-08-19 Kim F. Storm - - * process.c (wait_reading_process_input): Clean up. - Add wait_for_cell, wait_proc, and just_wait_proc args - to avoid overloading `read_kbd' and `do_display' args. - Change read_kbd arg to int. All callers changed. - - * process.c (process_send_signal): Use CDISABLE. - - * sysdep.c (child_setup_tty, init_sys_modes): Use CDISABLE. - -2004-08-18 Kim F. Storm - - * process.c (Faccept_process_output): Add arg JUST-THIS-ONE; - forward to wait_reading_process_input via DO_DISPLAY arg. - (wait_reading_process_input): If DO_DISPLAY < 0 for a process - object, only process output from that process; also inhibit - running timers if DO_DISPLAY==-2. - -2004-08-17 Kim F. Storm - - * process.c (process_send_signal): Fix last change--use - _POSIX_VDISABLE instead of CVDISABLE when available. - -2004-08-16 Richard M. Stallman - - * sysdep.c (child_setup_tty) [SIGNALS_VIA_CHARACTERS]: - Set VQUIT and VINTR chars to the standard ones if they are unset. - [AIX]: Don't do that here. And don't force VINTR to standard - when SIGNALS_VIA_CHARACTERS. - - * process.c (process_send_signal) - [SIGNALS_VIA_CHARACTERS, HAVE_TERMIOS]: Clean up. - Do nothing if the character is CVDISABLE. - - * xfaces.c (merge_face_ref): Specifying `unspecified' is a no-op. - - * intervals.c (move_if_not_intangible): - Force POSITION to be between BEGV and ZV. - -2004-08-14 John Paul Wallington - - * buffer.c (Frestore_buffer_modified_p): Doc fix. - - * fileio.c (Fread_file_name): Doc fix. - - * minibuf.c (syms_of_minibuf) : Doc fix. - -2004-08-09 Luc Teirlinck - - * keymap.c (Fmake_keymap, Fmap_keymap, Fwhere_is_internal): Doc fixes. - -2004-08-08 Luc Teirlinck - - * keyboard.c: Declare Qdisabled_command_function instead of - Qdisabled_command_hook. - (Fcommand_execute): Use Qdisabled_command_function instead of - Qdisabled_command_hook. - (syms_of_keyboard): Ditto. - -2004-08-07 Luc Teirlinck - - * keymap.c (Flocal_key_binding, Fglobal_key_binding) - (syms_of_keymap) : Doc fixes. - -2004-08-07 Stefan Monnier - - * window.c (window_list_1): YAILOM. - - * fileio.c (make_temp_name): Handle multibyte prefixes. - -2004-08-06 Luc Teirlinck - - * keyboard.c (syms_of_keyboard) : - Doc fix. - -2004-08-03 Kenichi Handa - - * coding.c (decode_coding_string): Adjust coding->consumed, and - etc. with shrinked_bytes. - -2004-08-03 Kim F. Storm - - * indent.c (compute_motion): Fix check for full width window - in non-window case. Do not count left truncation glyph on - window systems. - -2004-08-02 Luc Teirlinck - - * data.c (Finteractive_form): Doc fix. - -2004-08-02 Kim F. Storm - - * indent.c (compute_motion): Use actual window width if WIDTH is -1, - properly accounting for continuation glyph on non-window systems. - (Fcompute_motion): Use actual window width if WIDTH is nil, and - actual window width/height if TOPOS is nil, properly accounting for - continuation glyphs on non-window systems, and optional header lines. - (vmotion): Let compute_motion calculate actual window width. - - * window.c (window_scroll_line_based): Let compute_motion - calculate actual window width. - -2004-08-02 Kim F. Storm - - * process.c (read_process_output): Use whole read buffer. - Don't trigger adaptive read buffering on errors. - -2004-07-31 Luc Teirlinck - - * keymap.c (Fset_keymap_parent, Fdefine_prefix_command): Doc fixes. - - * keyboard.c (syms_of_keyboard) : Doc fix. - - * callint.c (Fcall_interactively): Doc fix. - -2004-07-30 Richard M. Stallman - - * abbrev.c (Fexpand_abbrev): Undo previous change. - -2004-07-30 Kim F. Storm - - * editfns.c (Fformat): Allocate extra (dummy) element in info. - -2004-07-28 Luc Teirlinck - - * eval.c (Fdefvar, Fdefconst): Doc fixes. - -2004-07-27 Kim F. Storm - - * xdisp.c (move_it_in_display_line_to): Check BUFFER_POS_REACHED_P after - we have ensured that the glyph fits on the current line (or returned - MOVE_LINE_CONTINUED otherwise). - -2004-07-26 Kim F. Storm - - * xdisp.c (move_it_in_display_line_to): If overflow-newline-into-fringe - is enabled, return MOVE_LINE_CONTINUED rather than MOVE_POS_MATCH_OR_ZV - if target position is at end of display line but char is not a newline. - -2004-07-25 Richard M. Stallman - - * window.c (coordinates_in_window): Return ON_SCROLL_BAR - instead of ON_VERTICAL_BORDER, when on scroll bar. - (Fcoordinates_in_window_p): Handle ON_SCROLL_BAR--return nil. - - * dispextern.h (enum window_part): Add ON_SCROLL_BAR. - - * window.c (Fcoordinates_in_window_p): - Take account of FRAME_INTERNAL_BORDER_WIDTH. - - * alloc.c (check_cons_list): New function (contents commented out). - -2004-07-24 Luc Teirlinck - - * xfaces.c (Fcolor_supported_p): Doc fix. - - * frame.c (Fselect_frame, Fset_frame_selected_window) - (Fframe_visible_p, Fraise_frame): Doc fixes. - -2004-07-24 Richard M. Stallman - - * keyboard.h (not_single_kboard_state): Declare. - - * fileio.c (Fwrite_region): Doc fix. - - * window.c (Fwindow_at): Take account of FRAME_INTERNAL_BORDER_WIDTH. - - * abbrev.c (Fexpand_abbrev): Run Qpre_abbrev_expand_hook - only when a real abbrev is present. - - * xfns.c (x_icon_verify): New function. - (Fx_create_frame): Use it. - -2004-07-22 Barry Fishman (tiny change) - - * s/gnu-linux.h: Use GC_MARK_STACK if __amd64__ is defined. - -2004-07-21 Kim F. Storm - - * window.h (struct glyph_matrix): New members nrows_scale_factor - and ncols_scale_factor. - - * window.c (make_window): Initialize nrows_scale_factor and - ncols_scale_factor members. - - * dispnew.c (margin_glyphs_to_reserve): Apply ncols_scale_factor. - (allocate_matrices_for_frame_redisplay): Fix left/right margin mix-up. - (required_matrix_height): Apply nrows_scale_factor. - (required_matrix_width): Apply ncols_scale_factor. - - * xdisp.c (display_line): Increment nrows_scale_factor and set - fonts_changed_p if past last allocated row. - (append_glyph, append_composite_glyph, produce_image_glyph) - (append_stretch_glyph): Increment ncols_scale_factor and set - fonts_changed_p if current area is full. - -2004-07-21 Jan Dj,Ad(Brv - - * widget.c (EmacsFrameDestroy): Don't abort if normal_gc is 0. - -2004-07-19 Luc Teirlinck - - * window.c (Fpos_visible_in_window_p, Fset_window_hscroll) - (Fwindow_inside_pixel_edges, Fwindow_end, Fset_window_point) - (Fset_window_start, Fscroll_up, Fscroll_down) - (Fother_window_for_scrolling, Fscroll_other_window) - (Fsave_window_excursion, Fset_window_vscroll) - (syms_of_window) : Doc fixes. - -2004-07-19 KOBAYASHI Yasuhiro - - * w32fns.c (Fx_file_dialog): Use ENCODE_FILE instead of - ENCODE_SYSTEM for filenames. - -2004-07-18 YAMAMOTO Mitsuharu - - * mac.c (sys_select): Block input around call to - ReceiveNextEvent to prevent breakage. Correctly handle - blocking on event queue only by calling ReceiveNextEvent - instead of select (since GUI events aren't on an fd). - (sys_read): Remove function - * sysdep.c: Remove redefine of read to sys_read if HAVE_CARBON - -2004-07-18 YAMAMOTO Mitsuharu - - * mac.c (sys_select): Redo sys_select to use alarm-based - polling instead of 1 sec timeouts (like solaris). - - * macterm.c (x_make_frame_visible): Comment in polling on - frame creation. - - * keyboard.c: Undef SIGIO on Carbon - - * atimer.c (alarm_signal_handler): Call alarm handlers after - scheduling. - - * eval.c (Feval): Remove quit_char test - - * process.c (wait_reading_process_input): Remove clearing - stdin for select call on process input. - -2004-07-18 Luc Teirlinck - - * xdisp.c (syms_of_xdisp) : Correct - capitalization error in docstring. - -2004-07-17 Juanma Barranquero - - * keyboard.c (not_single_kboard_state): Do nothing unless - MULTI_KBOARD is defined. - -2004-07-17 Richard M. Stallman - - * window.c (coordinates_in_window): Inside the window but outside - its box to the L or R, return ON_VERTICAL_BORDER. - (window_list_1): Rotate the list to start with WINDOW. - - * print.c (print_preprocess): Test for print_depth at limit - before entering in being_printed. - - * keyboard.c (not_single_kboard_state): New function. - (stuff_buffered_input): Now no-op only if no SIGTSTP. - - * frame.c (Fdelete_frame): If we're in single_bboard_state on - this kboard, and we delete its last frame, go to any_kboard_state. - - * buffer.c (syms_of_buffer) : Doc fix. - -2004-07-15 KOBAYASHI Yasuhiro - - * w32fns.c (Fx_file_dialog): Encode strings in system coding - system before passing them to OS functions for display. - -2004-07-15 David Kastrup - - * search.c (syms_of_search): Staticpro `saved_last_thing_searched'. - Apparently fixes an abort condition. - -2004-07-14 Luc Teirlinck - - * fileio.c (Fvisited_file_modtime): Return a list of two integers, - instead of a cons. - -2004-07-14 K,Aa(Broly L$,1 q(Brentey - - * keyboard.c (echo_dash): Do nothing if there already is a dash - at the end of the echo string. - -2004-07-12 Kim F. Storm - - * alloc.c (mark_object): Only look at Lisp_Misc_Save_Value - if GC_MARK_STACK. - -2004-07-10 Luc Teirlinck - - * buffer.c (Fswitch_to_buffer, Fpop_to_buffer): Doc fixes. - - * window.c (Fwindow_buffer, Fother_window, Fget_lru_window) - (Fget_largest_window, Fget_buffer_window, Fdelete_windows_on) - (Freplace_buffer_in_windows, Fset_window_buffer) - (Fselect-window, Fdisplay-buffer, Fsplit_window): Doc fixes. - (syms_of_window): Expand docstring of `display-buffer-function'. - -2004-07-09 Luc Teirlinck - - * editfns.c (Ffloat_time, Fformat_time_string, Fdecode_time) - (Fcurrent_time_string, Fcurrent_time_zone): Mention in docstrings - that time values of the type (HIGH . LOW) are considered obsolete. - -2004-07-06 Luc Teirlinck - - * keyboard.c (syms_of_keyboard): Fix `keyboard-translate-table' - docstring. - - * fns.c (Fclear_string): Declare `len' before call to CHECK_STRING. - -2004-07-06 John Paul Wallington - - * eval.c (Fdefmacro): Signal an error if NAME is not a symbol. - - * fns.c (Fclear_string): Signal an error if STRING is not a string. - -2004-07-05 Jan Dj,Ad(Brv - - * macterm.c (mac_initialize_display_info): Use CGGetActiveDisplayList - instead of CGMainDisplayID (only in OSX 10.2 and later). - -2004-07-04 John Paul Wallington - - * fileio.c (read_file_name_completion_ignore_case): New variable. - (syms_of_fileio): Declare and initialise it. - (Fread_file_name): Bind `completion-ignore-case' to respect it. - -2004-07-03 Eli Zaretskii - - * msdos.c (dos_rawgetc): Use make_number to produce Lisp objects - for event.x and event.y. - -2004-07-01 Kenichi Handa - - * w32select.c (Fw32_set_clipboard_data): Update `nbytes' correctly - after getting a new string by pre-write-conversion. - -2004-06-30 Stefan Monnier - - * xterm.c (x_detect_focus_change): Remove unused var `nr_events'. - (x_calc_absolute_position): Remove unused var `child'. - - * xfaces.c (x_supports_face_attributes_p) - (Fdisplay_supports_face_attributes_p): YAILOM. - (tty_supports_face_attributes_p): Remove unused var `i'. - - * syntax.c (skip_chars): Remove unused labels fwd_unibyte_ok and - back_unibyte_ok. - - * search.c (match_limit, Fmatch_data, Fset_match_data): YAILOM. - - * fontset.c (Fset_fontset_font): Remove unused vars `family' and - `registry'. - - * Makefile.in (${etc}DOC): Fix file name of make-docfile. - -2004-06-30 Andreas Schwab - - * image.c (CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES. - (Finit_image_library): Pass LIBRARIES through to - CHECK_LIB_AVAILABLE. Declare parameters. Doc fix. - (lookup_image_type): Pass Qnil as second argument to - Finit_image_library. - - * lisp.h (Finit_image_library): Declare. - -2004-06-29 YAMAMOTO Mitsuharu - - * macterm.c (do_window_activate, do_window_deactivate): Remove. - (XTread_socket): Send mouse button events to the toolbox - dispatcher even when the mouse is grabbed. Don't process window - activate events for non-Emacs windows. Replace function calls to - do_window_activate and do_window_deactivate with their contents. - Reset mouse grabbing status when a window is deactivated. - -2004-06-29 Steven Tamm - - * macterm.c (mac_get_emulated_btn) - (mac_event_to_emacs_modifiers): Fix emulated mouse button - support to correctly mask out modifiers. - -2004-06-29 David Kastrup - - * search.c (Fset_match_data): Allow buffer before end of list - which can happen if set-match-data is using a pre-consed list. - -2004-06-28 Steven Tamm - - * macterm.c (XTread_socket): Correctly set the frame position - after the window is moved. - -2004-06-28 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_image_for_pixmap): Call g_object_unref on - gpix and gmask just before return to avoid memory leak. - (xg_get_image_for_pixmap): Add workaround for monochrome displays - so insensitive and activated icons look ok. - -2004-06-27 Jason Rumney - - * w32fns.c (file_dialog_callback): Disable edit control if set - to directories only on CDN_INITDONE message. - (Fx_file_dialog): Default to directories only when prompt starts - with "Dired". - -2004-06-25 Kim F. Storm - - * alloc.c (allocate_misc): Update total_free_markers. - (free_misc): New function. - (safe_alloca_unwind, free_marker): Use it. - - * lisp.h (free_misc): Add prototype. - - * fns.c (Fmapconcat, Fmapcar): Remove superfluous GCPROs. - -2004-06-24 Richard M. Stallman - - * emacs.c (Vsignal_USR1_hook, Vsignal_USR2_hook): Definitions deleted. - (syms_of_emacs): Lisp variables deleted. - -2004-06-23 David Kastrup - - * search.c (Freplace_match): Adjust the match-data more thoroughly - when replacing strings in the buffer. - (Fmatch_data): When INTEGERS is non-nil and the last match was in - a buffer, add the buffer as last element to the match data. - (Fset_match_data): If an additional element of the match-data is a - buffer, restore it to last_thing_searched. - (save_search_regs): Save last_thing_searched as part of the match data. - (restore_match_data): Restore it again. - -2004-06-23 Luc Teirlinck - - * keymap.c (Ftext_char_description): Doc fix. - * doc.c (Fsnarf_documentation): Doc fix. - -2004-06-22 Kim F. Storm - - * fns.c (Fmapcar, Fmapconcat): GCPRO the args array. - - * lisp.h (struct Lisp_Save_Value): New member dogc. - (SAFE_ALLOCA_LISP): Change second arg to number of elements. - Set dogc member in Lisp_Save_Value object so it will be GC'ed. - (SAFE_FREE_LISP): New macro. - - * alloc.c (safe_alloca_unwind): Clear dogc and pointer members. - (make_save_value): Init new dogc member. - (mark_object): Mark Lisp_Save_Value pointer array if dogc is set. - - * fns.c (Fmapconcat, Fmapcar): Use new SAFE_ALLOCA_LISP and - SAFE_FREE_LISP macros. - -2004-06-22 Kim F. Storm - - * lisp.h (SAFE_ALLOCA_LISP): New macro to allocate Lisp_Objects. - Temporarily inhibits GC if memory is xmalloc'ed, as the Lisp_Objects - in that memory area are unknown to GC. Add comments. - - * fns.c (Fmapconcat, Fmapcar): Use SAFE_ALLOCA_LISP. - -2004-06-21 Kim F. Storm - - * lisp.h (MAX_ALLOCA): Define here. - (safe_alloca_unwind): Add prototype. - (USE_SAFE_ALLOCA, SAFE_ALLOCA, SAFE_FREE): New macros. - - * alloc.c (safe_alloca_unwind): New function. - - * casefiddle.c (casify_object): Use SAFE_ALLOCA. - - * charset.c (Fstring): Use SAFE_ALLOCA. - - * coding.c (MAX_ALLOCA): Remove define. - - * data.c (MAX_ALLOCA): Remove define. - (Faset): Use SAFE_ALLOCA. - - * editfns.c (Fformat, Ftranspose_regions): Use SAFE_ALLOCA. - - * fns.c (string_make_multibyte, string_to_multibyte) - (string_make_unibyte, Fmapconcat, Fmapcar): Use SAFE_ALLOCA. - (MAX_ALLOCA): Remove define. - (Fbase64_encode_region, Fbase64_encode_string) - (Fbase64_decode_region, Fbase64_decode_string): Use SAFE_ALLOCA. - (Fbase64_encode_region, Fbase64_encode_string): Fix potential - memory leak if encoding fails. - - * xdisp.c (add_to_log): Use SAFE_ALLOCA. - -2004-06-21 Eli Zaretskii - - * print.c (Fwith_output_to_temp_buffer): Doc fix. - -2004-06-20 Richard M. Stallman - - * xfaces.c (Finternal_copy_lisp_face): Small cleanup; doc fix. - - * search.c (match_limit): Cleaner err msg when no match data available. - - * window.c (syms_of_window): Doc fix. - - * keyboard.c (command_loop_1): Handle values `only' and `identity' - for Vtransient_mark_mode. - - * buffer.c (syms_of_buffer): Doc fix. - -2004-06-21 David Kastrup - - * minibuf.c (Ftry_completion, Fall_completions): Do lazy binding - and unbinding of `case-fold-search' according to - `completion-ignore-case' around calls of string-match and - predicates, respectively. Should give satisfactory performance - in all relevant cases. - -2004-06-17 Jan Dj,Ad(Brv - - * xterm.c (x_draw_image_foreground_1): Subtract slice.x/y from - clip_x/y_origin. - - * fns.c (string_to_multibyte): Use xmalloc/xfree instead of alloca. - - * macfns.c (Fx_display_color_cells): Do not limit return value to 256. - - * macterm.c (mac_initialize_display_info): Initialize n_planes correctly - on Mac OSX. - -2004-06-16 Luc Teirlinck - - * buffer.c (syms_of_buffer): Clarify `fill-column' docstring. - -2004-06-16 Kim F. Storm - - * dispextern.h (Vimage_types): Remove extern. - -2004-06-16 Miles Bader - - * image.c (lookup_image_type): Initialize image type if necessary. - -2004-06-15 Kim F. Storm - - * xdisp.c (try_cursor_movement): Exclude header line from scroll - margin at top of window. - (try_window_reusing_current_matrix): Calculate proper cursor position - after scrolling up with non-zero scroll margin, as the old cursor - position corresponds to value of PT before executing this command. - (try_window_id): Consider scroll margin at bottom of window too; - otherwise we fail to scroll when hl-line-mode is enabled. - - * syntax.c (skip_chars): Only recognize [:class:] when it has the - proper format and class is a lower-case word. - -2004-06-14 Jan Dj,Ad(Brv - - * gtkutil.c (xg_get_image_for_pixmap): New function. - (xg_get_gdk_pixmap_and_mask): Remove. - (update_frame_tool_bar): Call xg_get_image_for_pixmap instead of - xg_get_gdk_pixmap_and_mask. - - * xterm.h (struct x_display_info): Typo in comment fixed. - -2004-06-14 Juanma Barranquero - - * dispextern.h (Vimage_types): Make it conditional on - HAVE_WINDOW_SYSTEM. - - * image.c (Vimage_types): Move from xdisp.c. - (Vimage_type_cache): New variable. - (define_image_type): New argument indicating whether an image - library was loaded; cache loaded status and return t on success, - nil otherwise. - (CACHE_IMAGE_TYPE, ADD_IMAGE_TYPE): New macros. - (w32_delayed_load): New function to load an image library from a - list of possible filenames. - (init_xpm_functions, init_png_functions, init_jpeg_functions) - (init_tiff_functions, init_gif_functions): Use `w32_delayed_load'. - (CHECK_LIB_AVAILABLE): Call `define_image_library' with new argument. - (Finit_image_library): New function, extracted from `init_image'. - Try to initialize an image library on demand and cache whether we - were successful or not. - (syms_of_image): Initialize `Vimage_types' and - `Vimage_type_cache'. Add recognized image types to Vimage_types. - Export `init-image-library'. - (init_image): Remove initialization of all image types, except xbm - and pbm. - - * xdisp.c (Vimage_types): Delete (moved to image.c). - -2004-06-14 Andreas Schwab - - * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion): - Avoid calling specbind when completion-regexp-list is empty. - -2004-06-13 Richard M. Stallman - - * regex.h (CHAR_CLASS_MAX_LENGTH, re_wctype_t, re_wchar_t) - (re_wctype, re_iswctype, re_wctype_to_bit): - Non-function definitions moved here from regex.c. - - * regex.c (re_wctype, re_iswctype): Function defs longer static. - (CHAR_CLASS_MAX_LENGTH, re_wctype_t, re_wchar_t) - (re_wctype, re_iswctype, re_wctype_to_bit): - Non-function definitions moved to regex.h. - - * window.c (Fselect_window): Doc fix. - - * syntax.c: Include regex.h. - (skip_chars): New arg HANDLE_ISO_CLASSES. Callers changed. - If requested, make a list of classes, then check the scanned - chars for membership in them. - (in_classes): New function. - Doc fix. - - * keyboard.c (cmd_error): Don't call any_kboard_state - if inside a recursive edit level. - -2004-06-13 K,Aa(Broly L$,1 q(Brentey - - * keyboard.c (command_loop): Call any_kboard_state before - command_loop_2 when at top level. - -2004-06-13 Andreas Schwab - - * print.c (print_object): Always use %ld for printing EMACS_INT. - - * keyboard.c (cancel_hourglass_unwind): Return a value. - (modify_event_symbol): Always use %ld for printing EMACS_INT. - (Fexecute_extended_command): Likewise. - - * syntax.h (SYNTAX_ENTRY_FOLLOW_PARENT): Rename local variable to - avoid clashes. - (SYNTAX): Likewise. - (SYNTAX_WITH_FLAGS): Likewise. - (SYNTAX_MATCH): Likewise. - - * syntax.c (char_quoted): Avoid warning about undefined operation. - (find_defun_start): Likewise. - (scan_lists): Likewise. - (INC_FROM): Likewise. - (scan_sexps_forward): Likewise. - - * image.c: Include . - - * xfaces.c (face_attr_equal_p): Declare parameters. - -2004-06-13 Kenichi Handa - - * ccl.c (CCL_READ_CHAR): If hit EOF, set REG to -1. - -2004-06-12 Matthew Mundell - - * eval.c (Fdefun): Signal an error if NAME is not a symbol. - -2004-06-12 Kenichi Handa - - * ccl.c (CCL_CALL_FOR_MAP_INSTRUCTION): Save eof_ic in - ccl_prog_stack_struct and update it. - (CCL_INVALID_CMD): If CCL_DEBUG is defined, call ccl_debug_hook. - (CCL_READ_CHAR): Get instruction counter from eof_ic, not from - ccl->eof_ic on EOF. - (ccl_debug_hook): New function. - (struct ccl_prog_stack): New member eof_ic. - (ccl_driver): Handle EOF in subrountine call correctly. - -2004-06-11 Kenichi Handa - - * coding.c (encode_coding_string): Check CODING_FINISH_INTERRUPT. - -2004-06-11 Kim F. Storm - - * emacs.c (shut_down_emacs): Inhibit redisplay during shutdown. - -2004-06-11 Juanma Barranquero - - * keyboard.c (Fposn_at_point): Doc fix. - -2004-06-11 David Kastrup - - * search.c (match_limit): Don't flag an error if match-data - exceeding the allocated search_regs.num_regs gets requested, just - return Qnil. - -2004-06-08 Miles Bader - - * xfaces.c (push_named_merge_point): Return 0 when a cycle is detected. - -2004-06-07 Juanma Barranquero - - * editfns.c (Fuser_login_name, Ffloat_time, Fencode_time) - (Fcurrent_time_string, Fcurrent_time_zone) - (Finsert_buffer_substring, Ftranspose_regions): Doc fixes. - -2004-06-07 Miles Bader - - * xfaces.c (struct named_merge_point): New type. - (push_named_merge_point): New function. - (merge_named_face): New function. - (merge_face_ref, face_at_buffer_position, face_at_string_position): - Use `merge_named_face'. - (merge_face_inheritance): Function removed. - (merge_face_ref): Rename from `merge_face_vector_with_property'. - Add new `err_msgs' and `named_merge_points' args. Return error - status. Only print error messages if ERR_MSGS is true. Don't try to - do :inherit attribute validation. - (merge_face_heights): Handle `unspecified' in both directions. - (merge_face_vectors): Rename `cycle_check' arg to `named_merge_points'. - Call `merge_face_ref' instead of `merge_face_inheritance'. - (Fdisplay_supports_face_attributes_p, Fface_attributes_as_vector) - (compute_char_face, face_at_buffer_position) - (face_at_string_position): Call `merge_face_ref' instead of - `merge_face_vector_with_property'. - -2004-06-07 Kenichi Handa - - * coding.c (find_safe_codings): Check NILP (safe_codings) only at - the necessary places. - -2004-06-07 Kim F. Storm - - * process.c (Fdelete_process): Undo 2004-05-28 change. - Instead, call status_notify also for network process. - (status_message): Use process instead of status as arg. - Give messages "deleted" or "connection broken by remote peer" for - an exited network process. - (status_notify): Change call to status_message. - (read_process_output): Increase readmax to 4096. Do not increase - buffer size for datagram channels (default is now large enough). - -2004-06-06 Steven Tamm - - * macfns.c (x_create_tip_frame): Fix Mac OS X 10.1 compilation - problem due to newly defined variable. - -2004-06-06 Miles Bader - - * xfaces.c (Fdisplay_supports_face_attributes_p): Give up - immediately if non-interactive or not initialized. - -2004-06-05 Richard M. Stallman - - * minibuf.c (Fcompleting_read): Doc fix. - -2004-06-05 Andreas Schwab - - * macfns.c (x_create_tip_frame): Fix declaration after statement. - -2004-06-05 Juanma Barranquero - - * keymap.c (Fdescribe_vector): Fix docstring. - (Fkey_description, Fglobal_key_binding): Fix typo in docstring. - -2004-06-05 Miles Bader - - * xfaces.c (tty_supports_face_attributes_p): Make sure the specified - attributes have different values than the default face. - -2004-06-04 Eli Zaretskii - - * xfaces.c (x_supports_face_attributes_p): Make this function - conditional on HAVE_WINDOW_SYSTEM. - (Fdisplay_supports_face_attributes_p) [HAVE_WINDOW_SYSTEM]: - Don't call x_supports_face_attributes_p if it was not compiled in. - -2004-06-04 Miles Bader - - * xfaces.c (tty_supports_face_attributes_p): New function, mostly - from Ftty_supports_face_attributes_p. - (x_supports_face_attributes_p): New function. - (Ftty_supports_face_attributes_p): Function deleted. - (Fdisplay_supports_face_attributes_p): New function. - (syms_of_xfaces): Initialize Sdisplay_supports_face_attributes_p. - (face_attr_equal_p): New function. - (lface_equal_p): Use it. - -2004-06-03 Juanma Barranquero - - * w32fns.c (Fx_display_grayscale_p, Fw32_send_sys_command) - (Vw32_color_map): Fix typo in docstring. - (Fx_create_frame, Fw32_find_bdf_fonts, Fx_show_tip) - (Fw32_unregister_hot_key, Fw32_reconstruct_hot_key): - Make argument names match their use in docstring. - -2004-06-02 Juanma Barranquero - - Work around bugs/problems with MinGW builds of graphics libraries - called from MSVC builds of Emacs. - - * image.c (lookup_image): Make pointer to img static. - (png_read_from_memory): Disable "global" optimization. - -2004-06-01 Stefan Monnier - - * eval.c (Fcondition_case): Fix usage. Simplify. - - * mem-limits.h (EXCEEDS_LISP_PTR) [USE_LSB_TAG]: Never true. - -2004-05-29 YAMAMOTO Mitsuharu - - * macfns.c: Don't include ccl.h. - [MAC_OSX]: Don't include QuickTime/QuickTime.h. - [!MAC_OSX]: Don't include alloca.h, Windows.h, Gestalt.h, or - TextUtils.h. - (Fx_create_frame): Sync with xfns.c. Initialize cursor descriptors. - (Fx_display_mm_height, Fx_display_mm_width): Calculate length from - display height/width. - (compute_tip_xy, Vx_max_tooltip_size): Declare. - (unwind_create_tip_frame, compute_tip_xy): New functions. - (x_create_tip_frame, Fx_show_tip, Fx_hide_tip): Sync with xfns.c. - (syms_of_macfns): Initialize Qcancel_timer, Vx_max_tooltip_size, - and last_show_tip_args. - - * macgui.h [!MAC_OSX]: Include Gestalt.h. - (Cursor, No_Cursor): New defines. - [!TARGET_API_MAC_CARBON] (SetPortWindowPort): New compatibility macro. - [!TARGET_API_MAC_CARBON] (arrow_cursor): Declare. - - * macmenu.c (mac_menu_show, mac_dialog): Use SetPortWindowPort. - - * macterm.c: Don't include Gestalt.h. - (enum mouse_tracking_type, mouse_tracking_in_progress): Remove. - (XDrawLine, XClearArea, XClearWindow, mac_draw_bitmap) - (mac_set_clip_rectangle, mac_reset_clipping, XCreatePixmap) - (XFillRectangle, mac_draw_rectangle, mac_draw_string_common) - (mac_copy_area, mac_copy_area_with_mask, x_update_end) - (construct_mouse_click, XTmouse_position) - (x_scroll_bar_report_motion, x_calc_absolute_position) - (do_mouse_moved, do_zoom_window, mac_do_receive_drag) - (XTread_socket, make_mac_frame): Use SetPortWindowPort. - (note_mouse_movement): Clear the mouse face and reset the pointer - shape when the pointer goes outside the frame without grabbing. - (mac_front_window): New function. - (mac_window_to_frame): New macro. - (XTmouse_position, x_scroll_bar_report_motion, do_window_update) - (do_window_activate, do_window_deactivate, do_app_resume) - (do_app_suspend, do_mouse_moved, do_menu_choice, do_grow_window) - (do_zoom_window, mac_do_receive_drag, XTread_socket) - (mac_check_for_quit_char): Use mac_front_window and/or - mac_window_to_frame. - (x_scroll_bar_handle_click): Set `(PORTION . WHOLE)' part in a - scroll-bar click event. - (mac_define_frame_cursor): Change the pointer shape. - (x_free_frame_resources): Reset tip_window to NULL when it is - disposed of. - [!TARGET_API_MAC_CARBON] (arrow_cursor): New variable. - [!TARGET_API_MAC_CARBON] (do_init_managers): Initialize arrow_cursor. - (do_window_update): Don't do anything if the updated window is the - tooltip window. - (do_mouse_moved): Handle mouse movement events here (previously in - XTread_socket). Clear the mouse face if - dpyinfo->mouse_face_hidden is set. - (do_os_event, do_events): Remove (now in XTread_socket). - (XTread_socket): Immediately return if interrupt_input_blocked. - Loop until all the events in the queue are processed. - Rearrange codes for mouse grabbing. Add tooltip support. Include the - contents of do_os_event and do_events. Remove mouse movement - handling (now in do_mouse_moved). Add the case where - Vmouse_highlight has an integer value. - (NewMacWindow): Remove. - (make_mac_frame): Do what NewMacWindow previously did. Don't do - excess initializations. - (make_mac_terminal_frame): Previous initializations in - make_mac_frame are moved here. - (mac_initialize_display_info): - Initialize dpyinfo->mouse_face_overlay and dpyinfo->mouse_face_hidden. - - * xdisp.c [MAC_OS] (No_Cursor): Remove variable. - (define_frame_cursor1): Don't treat HAVE_CARBON as a special case. - -2004-05-29 Richard M. Stallman - - * lisp.h (truncate_undo_list): Update decl. - - * alloc.c (undo_outer_limit): New variable. - (syms_of_alloc): Defvar it. - (Fgarbage_collect): Pass undo_outer_limit to truncate_undo_list. - - * undo.c (truncate_undo_list): New arg LIMITSIZE. - - * alloc.c (lisp_align_malloc): Check for base == 0 - regardless of HAVE_POSIX_MEMALIGN. - Clean up HAVE_POSIX_MEMALIGN handling of `err'. - -2004-05-28 Stefan Monnier - - * alloc.c: Undo Kim's recent changes and fix the same bug differently. - (marker_blocks_pending_free): Remove. - (Fgarbage_collect): Sweep after cleaning up undo-lists. - Mark the undo lists after claning them up. - Don't free block in marker_blocks_pending_free. - (mark_buffer): Don't mark undo_list. - (gc_sweep): Sweep hash-tables and strings first. - Do free marker blocks that are empty. - -2004-05-28 Jim Blandy - - * regex.c (print_partial_compiled_pattern): Add missing 'break' - after 'case wordend'. For symbeg and symend, print to stderr, - like the other cases. - -2004-05-28 Noah Friedman - - * process.c (Fdelete_process): Do not call remove_process. - -2004-05-28 Stefan Monnier - - * alloc.c (struct backtrace): Remove. - (Fgarbage_collect): Use the new mark_backtrace. - - * eval.c (mark_backtrace): New function. - - * minibuf.c (run_exit_minibuf_hook): New function. - (read_minibuf_unwind): Don't run exit-minibuffer-hook any more. - (read_minibuf): Use separate unwind handler to run exit-minibuf-hook. - -2004-05-27 Kim F. Storm - - * xdisp.c (back_to_previous_visible_line_start): Skip backwards - over display properties, e.g. images, that replace buffer text. - -2004-05-25 Kim F. Storm - - * alloc.c (marker_blocks_pending_free): New var. - (gc_sweep): Store free marker blocks on that list. - (Fgarbage_collect): Free them after undo-list cleanup. - - * process.c (wait_reading_process_input): Check connect_wait_mask - before actually accepting connection in case it has already been - accepted due to recursion. - -2004-05-23 K,Aa(Broly L$,1 q(Brentey - - * coding.c (Fset_safe_terminal_coding_system_internal): - Set suppress_error in safe_terminal_coding, not terminal_coding. - -2004-05-22 Richard M. Stallman - - * alloc.c (Fmake_string): Doc fix. - - * buffer.c (clone_per_buffer_values): Copy the alist of local vars, - and the alist pairs too. - - * casefiddle.c (casify_object): Return OBJ unchanged if not real char. - - * emacs.c (main): Update copyright year. - - * fileio.c (Fread_file_name): Expand DIR if not absolute. - - * insdel.c (del_range_2, replace_range): Don't write an anchor - if the gap is empty. - - * xdisp.c (try_scrolling): If scroll-up-aggressively or - scroll-down-aggressively is small but positive, put point - near the screen edge. - -2004-05-22 Juanma Barranquero - - * keymap.c (Fdefine_key): Doc fix. - -2004-05-22 Kim F. Storm - - * alloc.c (struct backtrace): Add debug_on_exit member. - (Fgarbage_collect): Clear out buffer undo_list markers after gc_sweep. - Identify those markers as Lisp_Misc_Free objects. Clear car and cdr of - the removed cons cells. - (mark_object): Undo previous change - disallow Lisp_Misc_Free objects. - (gc_sweep): Clear cons_blocks before sweeping strings, so we don't have - any cons cells pointing to unallocated stings. - Do not lisp_free any marker blocks, as there may still be pointers - to them from buffer undo lists at this stage of GC. - - * keyboard.c (struct backtrace): Add debug_on_exit member. - (Fcommand_execute): Clear it. - -2004-05-20 Luc Teirlinck - - * intervals.c (lookup_char_property): Do not prematurely return nil. - -2004-05-19 Jim Blandy - - Add support for new '\_<' and '\_>' regexp operators, matching the - beginning and end of symbols. - - * regex.c (enum syntaxcode): Add Ssymbol. - (init_syntax_once): Set the syntax for '_' to Ssymbol, not Sword. - (re_opcode_t): New opcodes `symbeg' and `symend'. - (print_partial_compiled_pattern): Print the new opcodes properly. - (regex_compile): Parse the new operators. - (analyse_first): Skip sym(beg|end) (they match only the empty string). - (mutually_exclusive_p): `symend' is mutually exclusive with \s_ and - \sw; `symbeg' is mutually exclusive with \S_ and \Sw. - (re_match_2_internal): Match symbeg and symend. - - * search.c (trivial_regexp_p): \_ is no longer a trivial regexp. - -2004-05-19 Kim F. Storm - - * .gdbinit (xsymbol): Fix last change. - -2004-05-18 Stefan Monnier - - * .gdbinit (xprintstr): New fun. - (xstring, xprintsym): Use it. - - * w32proc.c (create_child): Use INTMASK. - - * alloc.c (Fgarbage_collect): Do all the marking before flushing - unmarked elements of the undo list. - -2004-05-18 David Ponce - - * print.c (print): Reset print_depth before to call print_object. - -2004-05-18 Jason Rumney - - * w32console.c: Prefix RIF functions with w32con_ to avoid - namespace clash with functions in term.c and w32term.c. - - * w32menu.c (add_menu_item, w32_menu_display_help) - [USE_LISP_UNION_TYPE]: Cast from Lisp_Object using i member. - - * w32term.h (display_x_get_resource, vga_stdcolor_name): Add prototype. - -2004-05-18 Eli Zaretskii - - * lisp.h (DECL_ALIGN): Remove restriction on MS-DOS systems. - - * msdos.c (syms_of_msdos): Initialize dos-unsupported-char-glyph - with make_number. - (IT_write_glyphs): Extract glyph from dos-unsupported-char-glyph - with XINT. - -2004-05-18 Kim F. Storm - - * blockinput.h (INPUT_BLOCKED_P): New macros. - - * keyboard.c (Frecursive_edit): Return immediately if input blocked. - (Ftop_level): Unblock input if blocked. - - * buffer.h (GET_OVERLAYS_AT): New macro. - * msdos.c (IT_note_mouse_highlight): Use it. - * textprop.c (get_char_property_and_overlay): Use it. - * xdisp.c (next_overlay_change, note_mouse_highlight): Use it. - * xfaces.c (face_at_buffer_position): Use it. - - * print.c (print_object): Increase buf size. - -2004-05-17 Jason Rumney - - * w32fns.c (Fw32_register_hot_key, Fw32_unregister_hot_key) - (Fw32_toggle_lock_key) [USE_LISP_UNION_TYPE]: Cast from - Lisp_Object using i member. - (w32_quit_key): Rename from Vw32_quit_key, and make an int. - (syms_of_w32fns, globals_of_w32fns): Use Lisp_Object and int - consistently. - - * w32proc.c (create_child): Use make_number instead of masking pid. - - * w32fns.c (w32_color_map_lookup): Return a Lisp_Object. - (x_to_w32_charset, w32_to_x_charset, w32_to_all_x_charsets): - Use EQ to compare Lisp_Objects. - (w32_parse_hot_key): Use int for lisp_modifiers consistently. - - * w32term.c (w32_num_mouse_buttons): Rename from - Vw32_num_mouse_buttons and make it an int. - - * w32.c (init_environment): Use it. - - * w32fns.c (w32_wnd_proc): Likewise. - - * w32proc.c (w32_pipe_read_delay): Rename from - Vw32_pipe_read_delay and make it an int. - - * w32.c (_sys_read_ahead): Use it. - - * lisp.h (egetenv) [USE_CRT_DLL]: Remove condition. - - * w32proc.c (create_child) [USE_LSB_TAG]: Don't try to mask pid. - - * w32inevt.c (w32_console_mouse_position, do_mouse_event) - (key_event): Don't mix Lisp_Object and int. - - * w32heap.c (init_heap) [USE_LSB_TAG]: Don't check heap location. - - * keyboard.c (kbd_buffer_get_event): Don't use event->code and - modifiers in language change event. - -2004-05-17 Kim F. Storm - - * alloc.c (mark_object): Ignore Lisp_Misc_Free objects. - Such objects may be freed markers which still exist on an undo list. - -2004-05-16 Juanma Barranquero - - * data.c (Fset_default): Make argument names match their use in - docstring. - -2004-05-15 Andreas Schwab - - * emacs.c (gdb_array_mark_flag): Define. - * .gdbinit: Mask off gdb_array_mark_flag from vector sizes. - -2004-05-15 Eli Zaretskii - - * lisp.h (DECL_ALIGN) [MSDOS]: Don't define DECL_ALIGN to use - __attribute__((__aligned__)), so that USE_LSB_TAG would not become - defined for the MS-DOS build. - -2004-05-14 Stefan Monnier - - * w32fns.c (Fw32_define_rgb_color): Avoid XSET. - -2004-05-14 Kenichi Handa - - * ccl.c (Fccl_execute_on_string): Fix setting elements of STATUS. - -2004-05-14 YAMAMOTO Mitsuharu - - * lisp.h (Vx_resource_name, Vx_resource_class): Move from xfns.c - section to frame.c section. - (Fxw_display_color_p, Fx_file_dialog): Declare if - HAVE_WINDOW_SYSTEM defined. - - * macfns.c (Fx_create_frame): Fix int/Lisp_Object mixup. - - * macmenu.c (set_frame_menubar): Use NILP to test a lisp value. - - * macterm.c (mac_get_emulated_btn, mac_event_to_emacs_modifiers) - (mac_get_mouse_btn): Use NILP and EQ to test/compare lisp values. - (XTread_socket): Fix int/Lisp_Object mixup. - (mac_check_for_quit_char): Fix pointer/Lisp_Object mixup. - - * macterm.h (struct frame, struct face, struct image) - (display_x_get_resource, Fx_display_color_p) - (Fx_display_grayscale_p, Fx_display_planes, x_free_gcs): - Add prototypes. - -2004-05-14 Kim F. Storm - - * process.c (wait_reading_process_input): Make reentrant. - Make Available and Connecting non-static. Save and restore value - of waiting_for_user_input_p. - -2004-05-13 Kim F. Storm - - * keyboard.c (mark_kboards): Don't mark x and y members - that are overloaded in selection request events. - -2004-05-13 Stefan Monnier - - * lisp.h (USE_LSB_TAG): Make it the default when it is known to work. - -2004-05-13 Glenn Morris - - * window.c (Fdisplay_buffer, Fsplit_window) - (split-height-threshold): Doc fix. - -2004-05-13 Juanma Barranquero - - * xfaces.c (Ftty_supports_face_attributes_p) - (Finternal_copy_lisp_face): Fix typo in docstring. - (Finternal_get_lisp_face_attribute): Fix docstring. - -2004-05-12 Jan Dj,Ad(Brv - - * xfns.c (syms_of_xfns): Provide x-toolkit also for GTK. - -2004-05-11 Steven Tamm - - * macfns.c (Fx_create_frame): Default to using tool-bar by - setting tool-bar-lines to 1 in default-frame-alist. - -2004-05-11 YAMAMOTO Mitsuharu - - * image.c (xpm_scan, xpm_make_color_table_v, xpm_put_color_table_v) - (xpm_get_color_table_v, xpm_make_color_table_h) - (xpm_put_color_table_h, xpm_get_color_table_h) - (xpm_str_to_color_key, xpm_load_image, xpm_load) - (syms_of_image): Support XPM on Carbon Emacs. Does not - depend on libXpm, but only supports XPM version 3 without extensions. - -2004-05-11 YAMAMOTO Mitsuharu - - * macterm.c (x_flush, XTframe_up_to_date): Use FRAME_MAC_P - instead of FRAME_X_P - -2004-05-11 Kim F. Storm - - * process.c (read_process_output): Grow decoding_buf when needed; - this could cause a crash in allocate_string and compact_small_strings. - -2004-04-29 Jim Blandy - - * regex.c (mutually_exclusive_p): In 'case wordbeg', compare op2 - against proper opcode. - -2004-05-10 Juanma Barranquero - - * process.c (Fstart_process): Fix docstring. - - * charset.c (Fget_unused_iso_final_char): Fix typos in docstring. - (Fchar_bytes, Fchar_width, Fstring_width, Fchar_direction) - (Fsplit_char, Fchar_charset): Make argument names match their use - in docstring. - -2004-05-10 Richard M. Stallman - - * print.c (print_preprocess): Use being_printed, loop_count and - halftail to detect overdeep nesting and cyclic cdr chains. - -2004-05-10 Andreas Schwab - - * lisp.h (Fmake_symbolic_link): Declare. - - * fileio.c (Frename_file): Remove extra argument in call to - Fmake_symbolic_link. - -2004-05-10 Kim F. Storm - - * xdisp.c (calc_line_height_property): Use string position when - object is a string. - -2004-05-10 Kenichi Handa - - * print.c (temp_output_buffer_setup): Bind inhibit-read-only and - inhibit-modification-hooks to t temporarily before calling - Ferase_buffer. - - * xfns.c (x_create_tip_frame): Bind inhibit-read-only and - inhibit-modification-hooks to t temporarily before calling - Ferase_buffer. - - * w32fns.c (x_create_tip_frame): Bind inhibit-read-only and - inhibit-modification-hooks to t temporarily before calling - Ferase_buffer. - - * fns.c (count_combining): Delete it. - (concat): Don't check combining bytes. - -2004-05-09 Jason Rumney - - * w32fns.c (Vw32_ansi_code_page): New Lisp variable. - (globals_of_w32fns): Set it. - -2004-05-09 Piet van Oostrum - - * data.c (Fquo): Simplify. - -2004-05-08 Peter Whaite (tiny change) - - * data.c (Fquo): If any argument is float, do the computation in - floating point. - -2004-05-08 Juanma Barranquero - - * process.c (Fwaiting_for_user_input_p, Fmake_network_process) - (Fset_process_query_on_exit_flag, Vprocess_adaptive_read_buffering): - Fix spelling of Emacs on docstring. - (Fset_process_coding_system, Fprocess_coding_system) - (Fset_process_filter_multibyte, Fprocess_filter_multibyte_p): - Make argument names match their use in docstring. - (Fprocess_id, Fprocess_query_on_exit_flag, Finterrupt_process): - Fix docstring. - - * editfns.c (Finsert_buffer_substring): Make argument names match their - use in docstring. - - * syntax.c (Fmodify_syntax_entry): Fix docstring. - -2004-05-07 Steven Tamm - - * macterm.c (mac_check_for_quit_char): Adding BLOCK_INPUT - around call to ReceiveEvent to avoid certain crashes. - -2004-05-07 YAMAMOTO Mitsuharu - - * macterm.c (mac_draw_line_to_pixmap, XCreatePixmapFromBitmapData) - (mac_fill_rectangle_to_pixmap, mac_draw_rectangle_to_pixmap) - (mac_copy_area_to_pixmap, mac_copy_area_with_mask_to_pixmap): - Save/restore the current graphics port and device handle when - drawing into an offscreen graphics world. - - * image.c [MAC_OS] (XPutPixel, XGetPixel, image_load_qt_1) - (gif_load): Likewise. - -2004-05-07 Juanma Barranquero - - * window.c (Fset_window_buffer): Fix docstring. - -2004-05-06 Thien-Thi Nguyen - - * emacs.c (main) [VMS]: Fix var ref. - -2004-05-06 Romain Francoise - - * data.c (Fsetq_default): Fix docstring. - -2004-05-06 Jason Rumney - - * image.c (Display) [HAVE_NTGUI]: Redefine while loading xpm.h - to avoid name clash. - -2004-05-04 Jan Dj,Ad(Brv - - * fileio.c (barf_or_query_if_file_exists): Use lstat. - (Frename_file): Handle renaming of symlinks across file systems. - (Frename_file): Put symlink handling inside #ifdef S_IFLNK. - -2004-05-04 Kim F. Storm - - * xdisp.c (Qtotal): New var. - (syms_of_xdisp): Intern and staticpro it. - (calc_line_height_property): New arg total. Set it if - line-spacing property has format (total . VALUE). - (x_produce_glyphs): Ignore line-spacing if line-height is 0. - Handle total line-spacing property. - -2004-05-03 Jan Dj,Ad(Brv - - * gtkutil.c (xg_update_scrollbar_pos): Call XClearWindow to clear - "under" scroll bar when size/position changes. - -2004-05-03 Jason Rumney - - * makefile.nt: Remove. - -2004-05-02 Eli Zaretskii - - * syntax.h (SET_RAW_SYNTAX_ENTRY, SYNTAX_ENTRY_INT): - Avoid compiler warnings. - - * Makefile.in (region-cache.o): Depend on config.h. - -2004-05-02 Romain Francoise - - * indent.c (compute_motion): Save vpos in prev_vpos when dealing - with continuation lines, too. - -2004-05-02 Thien-Thi Nguyen - - * syssignal.h (init_signals): Move decl outside `#ifdef POSIX_SIGNALS'. - -2004-05-01 Stefan Monnier - - * xdisp.c (calc_line_height_property): YAILOM (yet another - int/Lisp_Object mixup). - -2004-05-01 Eli Zaretskii - - * msdos.c (top-level): Add "#pragma pack(0)" after , to - undo bad effect of pack(4) in some versions of system headers. - -2004-05-01 Jason Rumney - - * w32term.c (x_draw_hollow_cursor): Sync with xterm.c - -2004-04-30 Kim F. Storm - - * buffer.c (syms_of_buffer) : Allow float value. - (syms_of_buffer) : Doc fix. - - * dispextern.h (struct it): Remove member use_default_face. - Add members override_ascent, override_descent, override_boff. - - * xdisp.c (init_iterator): Handle line-spacing float value. - Initialize override_ascent member. - (append_space_for_newline): Reset override_ascent. - Remove use_default_face. - (calc_line_height_property): New function to calculate value of - line-height and line-spacing properties. Look at overlays, too. - Set override_ascent, override_descent, override_boff members when - using another face than the current face. Float values are now - relative to the frame default font, by default; accept a cons - of ratio and face name to specify value relative to a specific face. - (x_produce_glyphs): Use calc_line_height_property. - Use override_ascent etc. when set to handle different face heights. - A negative line-spacing property value is interpreted as a total - line height, rather than inter-line spacing. - (note_mouse_highlight): Allocate room for 40 overlays initially. - -2004-04-29 Stefan Monnier - - * data.c (Fsubr_name): New fun. - (syms_of_data): Defsubr it. - -2004-04-29 Kim F. Storm - - * xdisp.c (null_glyph_slice): New var. - (append_glyph, append_composite_glyph, append_stretch_glyph): - Use it to initialize glyph slice. - -2004-04-27 Stefan Monnier - - * xdisp.c (x_produce_glyphs): Fix the proverbial int/Lisp_Object mixup. - (on_hot_spot_p): Make sure we always return a value. - (Flookup_image_map): Remove unused var ix and iy. - (note_mode_line_or_margin_highlight): Remove unused var `image'. - -2004-04-27 Eli Zaretskii - - * msdos.c (init_environment): If one of the TMP... environment - variables is set to a drive letter without a trailing slash, - append a slash. - -2004-04-27 Matthew Mundell - - * editfns.c (lisp_time_argument): Provide externally. - - * fileio.c (Fset_file_times): New function. - (syms_of_fileio): Intern and staticpro it. - -2004-04-27 Kim F. Storm - - * xdisp.c (x_produce_glyphs): Fix last change; handle newline in - header line strings. - - * dispextern.h (struct it): New member use_default_face. - - * xdisp.c (Qline_height): New variable. - (syms_of_xdisp): Intern and staticpro it. - (append_space_for_newline): Partially undo 2004-04-25 change; - add default_face_p arg, and restore callers. - Clear it->use_default_face after use. - (x_produce_glyphs): Set default font for ascii char if - it->use_default_font is set. Change line-spacing property to set - just extra line spacing. Handle new line-height property. - -2004-04-26 Andreas Schwab - - * print.c (print_object): Print non-ascii characters in bool - vector representation as octal escapes. - - * lisp.h (BOOL_VECTOR_BITS_PER_CHAR): Define. - * print.c (print_object): Use it instead of BITS_PER_CHAR for - bool vectors. - * lread.c (read1): Likewise. - * alloc.c (Fmake_bool_vector): Likewise. - * data.c (Faref, Faset): Likewise. - * fns.c (Fcopy_sequence, concat, internal_equal, Ffillarray) - (mapcar1): Likewise. - -2004-04-26 Steven Tamm - - * lread.c (init_lread): Fix typo in HAVE_CARBON test logic. - -2004-04-26 Miles Bader - - * lisp.h (CYCLE_CHECK): Macro moved from xfaces.c. - -2004-04-26 Juanma Barranquero - - * buffer.c (Fpop_to_buffer): Fix docstring. - -2004-04-26 Steven Tamm - - * lread.c (init_lread): Don't display missing lisp directory - warnings with Carbon Emacs because self-contained bundled Emacs - may be built without correct installation path. - -2004-04-25 Kim F. Storm - - * macterm.c (x_draw_hollow_cursor): Fix height of box for narrow lines. - - * xterm.c (x_draw_hollow_cursor): Fix height of box for narrow lines. - - * xdisp.c (append_space_for_newline): Rename from append_space. - Remove DEFAULT_FACE_P arg; always use current face. Callers changed. - (x_produce_glyphs): Handle line-spacing property on newline char. - If value is t, adjust ascent and descent to fit current row height. - If value is an integer or float, set extra_line_spacing to integer - value, or to float value x current line height. - -2004-04-23 Kenichi Handa - - * fontset.c (Finternal_char_font): If POSITION is nil, return - font for displaying CH with the default face. - -2004-04-23 Juanma Barranquero - - * makefile.w32-in: Add "-*- makefile -*-" mode tag. - -2004-04-21 Stefan Monnier - - * lisp.h (XINT) [EXPLICIT_SIGN_EXTEND && !NO_UNION_TYPE]: - Don't make assumptions about the relative place of i and val. - (EQ) [!NO_UNION_TYPE]: Don't forget to check the type match as well. - -2004-04-21 Kim F. Storm - - * dispextern.h (struct glyph_slice): New struct. - (struct glyph): New member slice. - (GLYPH_SLICE_EQUAL_P): New macro. - (GLYPH_EQUAL_P): Use it. - (struct glyph_string): New member slice. - (struct it_slice): New struct. - (struct it): New member slice, add member to stack too. - New member constrain_row_ascent_descent_p. - (image_ascent): Add prototype. - - * dispnew.c (buffer_posn_from_coords): Return full image width - and height even for image slices (posn is relative to full image). - (marginal_area_string): Adjust x0,y0 for image slice. - - * image.c (image_ascent): Add slice arg; calculate ascent for - image slice (or full image). - - * keyboard.c (Fposn_at_x_y, Fposn_at_point): New defuns. - (syms_of_keyboard): Defsubr them. - - * lisp.h (pos_visible_p): Fix prototype. - - * macterm.c (x_draw_relief_rect): Add top_p and bot_p args. - (x_draw_glyph_string_box): Fix call to x_draw_relief_rect. - (x_draw_image_foreground, x_draw_image_relief) - (x_draw_image_foreground_1, x_draw_image_glyph_string): - Draw sliced images. - - * w32term.c (w32_draw_relief_rect): Add top_p and bot_p args. - (x_draw_glyph_string_box): Fix call to x_draw_relief_rect. - (x_draw_image_foreground, x_draw_image_relief) - (w32_draw_image_foreground_1, x_draw_image_glyph_string): - Draw sliced images. - - * w32term.h (image_ascent): Remove prototype. - - * window.c (Fpos_visible_in_window_p): Return pixel position if - PARTIALLY arg is non-nil. Simplify. Doc fix. - (Fwindow_vscroll, Fset_window_vscroll): Add optional PIXEL_P arg - to return/set vscroll in pixels. - - * window.h (Fwindow_vscroll, Fset_window_vscroll): Fix EXFUN. - - * xdisp.c (Qslice): New variable. - (syms_of_xdisp): Intern and staticpro it. - (pos_visible_p): Return pixel position in new x and y args. - (init_iterator): Reset it->slice info. - (handle_display_prop): Parse (slice ...) property. - (push_it, pop_it): Save/restore slice info. - (make_cursor_line_fully_visible): Fix 2004-04-14 change. Do not - force repositioning of tall row if window is vscrolled, as that - would reset vscroll. - (append_space): Set it->constrain_row_ascent_descent_p to avoid - increasing row height if row is non-empty. - (fill_image_glyph_string): Copy slice info. - (take_vertical_position_into_account): Simplify. - (produce_image_glyph): Handle iterator slice info, setup glyph - slice info. Do not force minimum line height. - (x_produce_glyphs): If it->constrain_row_ascent_descent_p is set, - do not increase height (ascent/descent) of non-empty row when - adding normal character glyph; instead reduce glyph ascent/descent - appropriately; if row is higher than current glyph, adjust glyph - descent/ascent to reposition glyph within the existing row. - Likewise, when char is newline, only set ascent/descent if row is - currently empty. - (note_mouse_highlight): Handle hotspots with sliced image. - - * xterm.c (x_draw_relief_rect): Add top_p and bot_p args. - (x_draw_glyph_string_box): Fix call to x_draw_relief_rect. - (x_draw_image_foreground, x_draw_image_relief) - (x_draw_image_foreground_1, x_draw_image_glyph_string): - Draw sliced images. - - * xterm.h (image_ascent): Remove prototype. - -2004-04-20 Stefan Monnier - - * keymap.c (Fkey_description): Fix the usual int/Lisp_Object mixup. - -2004-04-20 John Paul Wallington - - * fns.c (Fassoc, Feql): Fix indentation. - - * fontset.c (regularize_fontname): Rename from regulalize_fontname. - -2004-04-19 John Paul Wallington - - * fns.c (Feql): New function. - (syms_of_fns): Defsubr it. - -2004-04-18 Jason Rumney - - * w32select.c (Fw32_set_clipboard_data): Get sequence number - after closing the clipboard. - -2004-04-16 Luc Teirlinck - - * buffer.c (Fbuffer_base_buffer): Doc fix. - -2004-04-17 Kim F. Storm - - * keymap.c (Fkey_description): Add optional PREFIX arg. - Combine prefix with KEYS to make up the full key sequence to describe. - Correlate meta_prefix_char and following (simple) key to describe - as meta modifier. All callers changed. - (describe_map): Rename arg `keys' to `prefix'. Remove local - `elt_prefix' var. Use Fkey_description with prefix instead of - elt_prefix combined with Fsingle_key_description. - (describe_vector): Declare static. Replace arg `elt_prefix' with - `prefix'. Add KEYMAP_P arg. Add local var `elt_prefix'; use it - if !KEYMAP_P. Use Fkey_description with prefix instead of - Fsingle_key_description. - - * keymap.h (Fkey_description): Fix prototype. - (describe_vector): Remove prototype. - - * xdisp.c (update_overlay_arrows): Fix handling of up_to_date < 0. - - * image.c (PNG_BG_COLOR_SHIFT): Remove. - (png_load): Fix calculation of transparent background color on X - and W32 platforms. - -2004-04-16 Juanma Barranquero - - * xdisp.c (try_scrolling): Make sure `scroll-conservatively' is - not too large before computing how much to scroll. - -2004-04-15 Stefan Monnier - - * dired.c (Ffile_attributes): Don't pass extra nil arg to file-handler. - -2004-04-14 Luc Teirlinck - - * fileio.c (Fverify_visited_file_modtime, Fvisited_file_modtime): - Add hyperlink to Elisp manual to the docstring. - -2004-04-14 Stefan Monnier - - * callint.c (fix_command): Use XDCR. - -2004-04-14 Nick Roberts - - * window.c (Fget_lru_window): Doc fix. - -2004-04-14 Kim F. Storm - - * editfns.c (Fformat): Fix allocation size of precision array. - - * dispnew.c (update_window): Only set changed_p if - scrolling_window actually did scroll. - (scrolling_window): Only return 1 if we actually did scroll. - - * xdisp.c (get_glyph_string_clip_rect): Fix reduction of cursor - height to glyph height when cursor row is not fully visible. - (make_cursor_line_fully_visible): Add FORCE_P arg to return - failure in case row is higher than window. Callers changed. - (try_scrolling): Fix loop in scrolling if last_line_misfit (from Gerd). - Try to scroll partially visible, higher-than-window cursor row. - (redisplay_window): Always try to scroll partially visible, - higher-than-window cursor row - both initially and again with - centering_position = 0. - Clear desired matrix before retrying with centering_position = 0. - -2004-04-13 Stefan Monnier - - * syntax.c (scan_lists): Simplify backward string scan. - Fix off-by-one boundary check for string and comment fences. - -2004-04-13 Joe Buehler - - * sheap.c, unexcw.c: New files. - -2004-04-12 Luc Teirlinck - - * buffer.c (Fmake_indirect_buffer): Throw an error if the intended - base buffer has been killed. Correct the error message if the - base buffer does not exist. - -2004-04-12 Joe Buehler - - * s/cygwin.h: Changes for Cygwin unexec() support, changes in - Cygwin itself. Add support for Xaw3d scrollbars. - - * puresize.h: Set up PURE_P() for Cygwin unexec() support. - - * lastfile.c: Define my_endbss[] for Cygwin unexec() support. - - * gmalloc.c (__default_morecore): Use bss_sbrk(), not __sbrk(), - before Cygwin unexec. - - * Makefile.in: Link changes for Cygwin unexec() support. - -2004-04-12 Andreas Schwab - - * buffer.c (Fmake_indirect_buffer): Check that NAME is a string. - -2004-04-11 Luc Teirlinck - - * buffer.c (Fgenerate_new_buffer_name): Return NAME argument if - IGNORE argument equals NAME. Doc fix. - -2004-04-11 Masatake YAMATO - - * buffer.c (fix_start_end_in_overlays): Make overlays - empty if they are backwards. - -2004-04-09 Stefan Monnier - - * xfaces.c (face_color_supported_p): Fix compilation without X11. - -2004-04-07 Stefan Monnier - - * doc.c (Fsnarf_documentation): Ignore new file name entries. - -2004-04-06 Kim F. Storm - - * msdos.c (clear_mouse_face): Only clear mouse highlight if not hidden. - (dos_rawgetc): Set mouse_face_hidden after clearing highlight. - - * w32term.c (w32_read_socket): Set mouse_face_hidden after - clearing highlight. - - * xdisp.c (clear_mouse_face): Only clear mouse highlight if not hidden. - - * xterm.c (handle_one_xevent): Set mouse_face_hidden after - clearing highlight. - - * indent.c (vmotion): Do not reserve one column for continuation - marks on window frames. - -2004-04-04 Eli Zaretskii - - * charset.h (SINGLE_BYTE_CHAR_P): Fix macro to avoid warnings - from GCC. - -2004-04-03 Stefan Monnier - - * .gdbinit-union: Remove. - - * .gdbinit: Make it work for USE_LSB_TAG and !NO_LISP_UNION. - (xgetptr, xgetint, xgettype): New funs. Use them everywhere. - ($nonvalbits): Remove. - ($valmask): Set it by calling xreload to avoid redundancy. - - * emacs.c (gdb_use_union, gdb_use_lsb): New vars. - (gdb_emacs_intbits): Remove. - -2004-03-31 Jan Dj,Ad(Brv - - * data.c (Fbyteorder): Make test work even if unsigned is not 4 bytes. - -2004-03-30 Kenichi Handa - - * editfns.c (Fformat): Fix initialization of the array info. - -2004-03-30 Kim F. Storm - - * xterm.c (x_mouse_click_focus_ignore_position): New var. - (syms_of_xterm): DEFVAR_BOOL it. - (ignore_next_mouse_click_timeout): New var. - (handle_one_xevent): Clear it on KeyPress, set it on EnterNotify. - Use it to filter mouse clicks following focus event. - -2004-03-29 David Ponce - - * callint.c (Fcall_interactively): Fix last change. - -2004-03-28 Stefan Monnier - - * eval.c (Fcommandp): Simplify. - - * data.c (Finteractive_form): Rename from Fsubr_interactive_form. - Extend to handle all kinds of functions. - - * lisp.h (Finteractive_form): Declare. - - * callint.c (Fcall_interactively): Use it. - -2004-03-26 Kim F. Storm - - * xdisp.c (syms_of_xdisp): Include `void-variable' in list_of_error - to catch errors in calc_pixel_width_or_height during redisplay. - -2004-03-26 Masatake YAMATO - - * buffer.c (fix_start_end_in_overlays): Rename fix_overlays_in_range. - - * lisp.h (fix_start_end_in_overlays): Likewise. - - * insdel.c (adjust_markers_for_insert): Call fix_start_end_in_overlays. - - * editfns.c (Ftranspose_regions): Likewise. - -2004-03-20 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Do not pass key press events to GTK. - -2004-03-19 Richard M. Stallman - - * s/sol2-6.h: Delete previous change. - -2004-03-19 Kim F. Storm - - * xdisp.c (move_it_in_display_line_to): Fix MOVE_TO_POS case when - to_charpos corresponds to newline in right fringe. Use local - BUFFER_POS_REACHED_P macro. - -2004-03-19 Jan Dj,Ad(Brv - - * xdisp.c (calc_pixel_width_or_height): Add ifdef HAVE_WINDOW_SYSTEM - to compile on non-window system. - -2004-03-19 Kim F. Storm - - * dispextern.h (calc_pixel_width_or_height): Add prototype. - - * image.c (Qcenter): Move to xdisp.c. - - * xdisp.c (Qcenter): Declare here. - (syms_of_xdisp): Intern and staticpro it. - (handle_single_display_prop): Allow space display property on all - platforms. - (display_mode_line): Set mode_line_p before displaying line. - (calc_pixel_width_or_height): Declare extern. Add separate :align-to - handling. Remove complex cases for fringes and scroll-bars. - Add left, right, and center alignment positions. Add text (area) - width/height. Return width or height for image specs. - (produce_stretch_glyph): Improve handling of :align-to. Is now - relative to left of text area by default, but other base offsets - can be specified -- also for text lines. - - * term.c (produce_glyphs): Handle IT_STRETCH. - (produce_stretch_glyph): New function to handle space width and - align-to display properties on non-window systems. - -2004-03-17 Stefan Monnier - - * fileio.c (Fread_file_name): Set completion-ignore-case for - case-insensitive systems. - -2004-03-14 Masatake YAMATO - - * xdisp.c (note_mode_line_or_margin_highlight): Accept HEADER_LINE - when keymap and cursor are setup. - -2004-03-14 Steven Tamm - - * Makefile.in (XMENU_OBJ) [HAVE_CARBON]: Do not include xmenu.o. - -2004-03-14 Kim F. Storm - - * dispextern.h (x_find_image_file): Add prototype. - - * image.c (x_find_image_file): Make extern. - - * xfns.c (x_find_image_file): Remove prototype. - -2004-03-13 Eli Zaretskii - - * Makefile.in (XMENU_OBJ): Include xmenu.o if HAVE_MENUS is defined. - - * emacs.c (main): Call syms_of_xmenu only if HAVE_MENUS is defined. - -2004-03-12 Richard M. Stallman - - * fns.c (internal_equal): New arg PROPS controls comparing - text properties. All callers changed. - (Fequal_including_properties): New function. - (syms_of_fns): defsubr it. - -2004-03-12 Kim F. Storm - - Fix image support on MAC. From YAMAMOTO Mitsuharu. - - * dispextern.h (XImagePtr, XImagePtr_or_DC): Add typedefs. - (image_background, image_background_transparent): Fix prototypes. - - * image.c (XImagePtr, XImagePtr_or_DC): Move typedefs to dispextern.h. - - * macfns.c (x_list_fonts, x_get_font_info, x_load_font) - (x_query_font, x_find_ccl_program, x_set_window_size) - (x_make_frame_visible, mac_initialize, XCreatePixmap) - (XCreatePixmapFromBitmapData, XFreePixmap, XSetForeground) - (mac_draw_line_to_pixmap): Move prototypes to macterm.h. - - * macterm.h (x_list_fonts, x_get_font_info, x_load_font) - (x_query_font, x_find_ccl_program, x_set_window_size) - (x_make_frame_visible, mac_initialize, XCreatePixmap) - (XCreatePixmapFromBitmapData, XFreePixmap, XSetForeground) - (mac_draw_line_to_pixmap): Add prototypes. - -2004-03-12 YAMAMOTO Mitsuharu - - * macterm.c (XTread_socket): Fix mouse click on tool bar. - -2004-03-11 Kim F. Storm - - * dispextern.h: Move image related prototypes from xfns.c section - to image.c. Condition them by HAVE_WINDOW_SYSTEM rather than - HAVE_X_WINDOWS. - - * Makefile.in (XOBJ): Consolidate into one list. Add image.o. - Move gtkutil.o to new GTK_OBJ list. - (XMENU_OBJ) [HAVE_MENUS]: Move declaration to proper place. - (GTK_OBJ) [USE_GTK]: New declaration. - (obj): Add $(GTK_OBJ) to list. - -2004-03-11 Steven Tamm - - * image.c [MAC_OSX]: Include sys/stat.h. - - * macfns.c (syms_of_macfns): Remove definitions of things now - defined in image.c. - -2004-03-11 Kim F. Storm - - The following changes consolidates the identical/similar image - support code previously found in xfns.c, w32fns.c, and macfns.c - into a new file image.c. - - * makefile.w32-in (OBJ1): Add image.o. - ($(BLD)/image.$(O)): Add dependencies. - - * Makefile.in (XOBJ, MAC_OBJ): Add image.o. - (image.o): Add dependencies. - - * image.c: New file with consolidated image support code. - (COLOR_TABLE_SUPPORT): New define to control whether - color table support is available (X only). - (Bitmap_Record): Common name for x_bitmap_record, - w32_bitmap_record, and mac_bitmap_record. - (XImagePtr): Common name for pointer to XImage or equivalent. - (XImagePtr_or_DC): New type to simplify code sharing; equivalent - to XImagePtr on X+MAC, and to HDC on W32. - (GET_PIXEL): Wrapper for XGetPixel or equivalent. - (NO_PIXMAP): Common name for "None" or equivalent. - (PNG_BG_COLOR_SHIFT): Bits to shift PNG background colors. - (RGB_PIXEL_COLOR): Common type for an integer "pixel color" value. - (PIX_MASK_RETAIN, PIX_MASK_DRAW): Portability macros (from macfns.c). - (FRAME_X_VISUAL, x_defined_color, DefaultDepthOfScreen): - Define with suitable equivalents on W32 and MAC for code sharing. - (XDrawLine): Define on MAC for code sharing. - (Destroy_Image, Free_Pixmap): Wrappers for code sharing. - (IF_LIB_AVAILABLE): Macro to simplify code sharing. - (Vx_bitmap_file_path, Vimage_cache_eviction_delay) - (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) - (x_reference_bitmap, x_create_bitmap_from_data) - (x_create_bitmap_from_file, x_destroy_bitmap) - (x_destroy_all_bitmaps, x_create_bitmap_mask) - (XGetImage, XPutPixel, XGetPixel, XDestroyImage) - (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols) - (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask) - (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter) - (define_image_type, lookup_image_type, valid_image_p) - (image_error, enum image_value_type, struct image_keyword) - (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) - (make_image, free_image, prepare_image_for_display, image_ascent) - (four_corners_best, image_background, image_background_transparent) - (x_clear_image_1, x_clear_image, x_alloc_image_color) - (make_image_cache, free_image_cache, clear_image_cache) - (Fclear_image_cache, postprocess_image, lookup_image, cache_image) - (forall_images_in_image_cache, x_create_x_image_and_pixmap) - (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file) - (find_image_fsspec, image_load_qt_1, image_load_quicktime) - (init_image_func_pointer, image_load_quartz2d) - (struct ct_color, init_color_table, free_color_table) - (lookup_rgb_color, lookup_pixel_color, colors_in_color_table) - (cross_disabled_images, x_to_xcolors, x_from_xcolors) - (x_detect_edges, x_emboss, x_laplace, x_edge_detection) - (x_disable_image, x_build_heuristic_mask) - (XBM support, XPM support, PBM support, PNG support, JPEG support) - (TIFF support, GIF support, Ghostscript support): Consolidate image - code from xfns.c, w32fns.c, and macfns.c. - (syms_of_image): Consolidate image related symbol setup here. - (init_image): Consolidate image related initializations here. - - * emacs.c (main) [HAVE_WINDOW_SYSTEM]: Add calls to syms_of_image - and init_image. Remove call to init_xfns. - - * macterm.h (struct mac_bitmap_record): Add file member. - Not currently used, but simplifies code sharing. - - * macfns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay) - (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) - (x_reference_bitmap, x_create_bitmap_from_data) - (x_create_bitmap_from_file, x_destroy_bitmap) - (x_destroy_all_bitmaps, x_create_bitmap_mask) - (XGetImage, XPutPixel, XGetPixel, XDestroyImage) - (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols) - (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask) - (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter) - (define_image_type, lookup_image_type, valid_image_p) - (image_error, enum image_value_type, struct image_keyword) - (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) - (make_image, free_image, prepare_image_for_display, image_ascent) - (four_corners_best, image_background, image_background_transparent) - (x_clear_image_1, x_clear_image, x_alloc_image_color) - (make_image_cache, free_image_cache, clear_image_cache) - (Fclear_image_cache, postprocess_image, lookup_image, cache_image) - (forall_images_in_image_cache, x_create_x_image_and_pixmap) - (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file) - (find_image_fsspec, image_load_qt_1, image_load_quicktime) - (init_image_func_pointer, image_load_quartz2d) - (struct ct_color, init_color_table, free_color_table) - (lookup_rgb_color, lookup_pixel_color, colors_in_color_table) - (cross_disabled_images, x_to_xcolors, x_from_xcolors) - (x_detect_edges, x_emboss, x_laplace, x_edge_detection) - (x_disable_image, x_build_heuristic_mask) - (XBM support, XPM support, PBM support, PNG support, JPEG support) - (TIFF support, GIF support, Ghostscript support): Merge with image - code from xfns.c and macfns.c into image.c. - (syms_of_xfns): Move image related symbols to image.c. - (init_external_image_libraries, init_xfns): Remove; initialization - moved to init_image in image.c. - - * w32fns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay) - (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) - (x_reference_bitmap, x_create_bitmap_from_data) - (x_create_bitmap_from_file, x_destroy_bitmap) - (x_destroy_all_bitmaps, x_create_bitmap_mask) - (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols) - (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask) - (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter) - (define_image_type, lookup_image_type, valid_image_p) - (image_error, enum image_value_type, struct image_keyword) - (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) - (make_image, free_image, prepare_image_for_display, image_ascent) - (four_corners_best, image_background, image_background_transparent) - (x_clear_image_1, x_clear_image, x_alloc_image_color) - (make_image_cache, free_image_cache, clear_image_cache) - (Fclear_image_cache, postprocess_image, lookup_image, cache_image) - (forall_images_in_image_cache, x_create_x_image_and_pixmap) - (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file) - (struct ct_color, init_color_table, free_color_table) - (lookup_rgb_color, lookup_pixel_color, colors_in_color_table) - (cross_disabled_images, x_to_xcolors, x_from_xcolors) - (x_detect_edges, x_emboss, x_laplace, x_edge_detection) - (x_disable_image, x_build_heuristic_mask) - (XBM support, XPM support, PBM support, PNG support, JPEG support) - (TIFF support, GIF support, Ghostscript support): Merge with image - code from xfns.c and macfns.c into image.c. - (syms_of_xfns): Move image related symbols to image.c. - (init_external_image_libraries, init_xfns): Remove; initialization - moved to init_image in image.c. - - * xfns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay) - (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) - (x_reference_bitmap, x_create_bitmap_from_data) - (x_create_bitmap_from_file, x_destroy_bitmap) - (x_destroy_all_bitmaps, x_create_bitmap_mask) - (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols) - (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask) - (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter) - (define_image_type, lookup_image_type, valid_image_p) - (image_error, enum image_value_type, struct image_keyword) - (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) - (make_image, free_image, prepare_image_for_display, image_ascent) - (four_corners_best, image_background, image_background_transparent) - (x_clear_image_1, x_clear_image, x_alloc_image_color) - (make_image_cache, free_image_cache, clear_image_cache) - (Fclear_image_cache, postprocess_image, lookup_image, cache_image) - (forall_images_in_image_cache, x_create_x_image_and_pixmap) - (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file) - (struct ct_color, init_color_table, free_color_table) - (lookup_rgb_color, lookup_pixel_color, colors_in_color_table) - (cross_disabled_images, x_to_xcolors, x_from_xcolors) - (x_detect_edges, x_emboss, x_laplace, x_edge_detection) - (x_disable_image, x_build_heuristic_mask) - (XBM support, XPM support, PBM support, PNG support, JPEG support) - (TIFF support, GIF support, Ghostscript support): Merge with - w32fns.c and macfns.c image code into image.c. - (syms_of_xfns): Move image related symbols to image.c. - (init_xfns): Remove; initialization moved to init_image in image.c. - - * lisp.h (syms_of_image, init_image): Add protoypes. - (init_xfns): Remove prototype. - - * dispextern.h (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) - (x_reference_bitmap, x_create_bitmap_from_data) - (x_create_bitmap_from_file, x_destroy_bitmap) - (x_create_bitmap_mask): Move prototypes from dispextern.h. - (gamma_correct) [MAC_OS]: Add prototype. - - * xterm.h (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) - (x_reference_bitmap, x_create_bitmap_from_data) - (x_create_bitmap_from_file, x_destroy_bitmap) - (x_create_bitmap_mask): Move prototypes to dispextern.h. - -2004-03-09 Kenichi Handa - - * coding.c (decode_coding_emacs_mule): Handle insufficent source - correctly. - -2004-03-04 Richard M. Stallman - - * s/sol2-6.h (LD_SWITCH_SYSTEM_TEMACS): New definition. - - * window.c (Fdisplay_buffer): Doc fix. - - * buffer.c (Fpop_to_buffer): Doc fix. - -2004-03-03 Kim F. Storm - - * xdisp.c (display_line): Fix call to get_overlay_arrow_glyph_row. - -2004-03-02 Stefan Monnier - - * editfns.c (Ftranslate_region): Lisp_Object/int mixup. - -2004-03-02 Richard M. Stallman - - * indent.c (compute_motion): Save vpos in prev_vpos, like hpos etc. - -2004-03-02 Kenichi Handa - - * doc.c (Fsubstitute_command_keys): Fix counding bytes. - -2004-03-02 Kim F. Storm - - * window.h (struct window): New member overlay_arrow_bitmap. - - * window.c (make_window): Initialize overlay_arrow_bitmap. - - * xdisp.c (Voverlay_arrow_variable_list): New variable to properly - implement and integrate multiple overlay arrows with redisplay. - (syms_of_xdisp): DEFVAR_LISP and initialize it. - (last_arrow_position, last_arrow_string): Replace by properties. - (Qlast_arrow_position, Qlast_arrow_string) - (Qoverlay_arrow_string, Qoverlay_arrow_bitmap): New variables. - (syms_of_xdisp): Intern and staticpro them. - (overlay_arrow_string_or_property, update_overlay_arrows) - (overlay_arrow_in_current_buffer_p, overlay_arrows_changed_p) - (overlay_arrow_at_row): New functions for multiple overlay arrows. - (redisplay_internal): Use them instead of directly accessing - Voverlay_arrow_position etc. for multiple overlay arrows. - (mark_window_display_accurate): Use update_overlay_arrows. - (try_cursor_movement): Use overlay_arrow_in_current_buffer_p. - (try_window_id): Use overlay_arrows_changed_p. - (get_overlay_arrow_glyph_row): Add overlay_arrow_string arg. - (display_line): Use overlay_arrow_at_row to check multiple - overlay arrows, and get relevant overlay-arrow-string and - overlay-arrow-bitmap. Set w->overlay_arrow_bitmap accordingly. - (produce_image_glyph): Set pixel_width = 0 for fringe bitmap. - (syms_of_xdisp): Remove last_arrow_position and last_arrow_string. - - * fringe.c (draw_fringe_bitmap): Use w->overlay_arrow_bitmap if set. - (update_window_fringes): Remove unused code. - -2004-03-01 Jason Rumney - - * w32term.c (w32_read_socket): Fix last change to ButtonPress handling. - -2004-03-01 Juanma Barranquero - - * fringe.c (Fdefine_fringe_bitmap): Fix typo in docstring. - - * makefile.w32-in ($(BLD)/fringe.$(O)): Add dependencies. - -2004-03-01 Jan Dj,Ad(Brv - - * xfns.c (Fx_display_color_cells): Use number of planes to calculate - how many colors can be displayed. - -2004-03-01 Kenichi Handa - - * editfns.c (Ftranslate_region): Handle multibyte chars in TABLE - correctly. - -2004-02-28 Kim F. Storm - - * dispnew.c (update_window): Update header line also if there are - no other changes in window (move code after set_cursor label). - - * lisp.h (mark_window_display_accurate): Remove prototype. - - * window.c (window_loop, Fforce_window_update): Force mode line - updates by setting prevent_redisplay_optimizations_p and - update_mode_lines. - -2004-02-28 Jan Dj,Ad(Brv - - * xfns.c (x_window): Fix indentation. - - * xterm.c (x_calc_absolute_position): Call x_real_positions - to get WM window sizes and use those to calculate position. - (x_set_offset): Remove code commented out. - -2004-02-28 Miles Bader - - * keyboard.c (adjust_point_for_property): #ifdef-out dodgy xassert. - -2004-02-28 Kim F. Storm - - * keyboard.c (kbd_buffer_store_event_hold): New function to store - an event into kbd fifo, but with special handling of quit event; - a quit event is saved for later, and further events are discarded - until the saved quit event has been processed. - (kbd_buffer_store_event): Use kbd_buffer_store_event_hold. - (gen_help_event): Store help event in kbd fifo. - (NREAD_INPUT_EVENTS): Remove. - (read_avail_input): Adapt to new read_socket_hook interface. - Remove allocation and initialization of local input_event buffer, - as read_socket_hook stores events directly in fifo. Allocate and - initialize local hold_quit event to handle postponed quit event - (and store it if set by kbd_buffer_store_event_hold). - - * keyboard.h (kbd_buffer_store_event_hold): Add prototype. - (gen_help_event): Fix prototype. - - * macterm.c (XTread_socket): Remove bufp_r and - numcharsp args. Add hold_quit arg. - Rework to use just one, local, inev input_event. Store inev - directly in fifo using kbd_buffer_store_event_hold. - - * sysdep.c (BUFFER_SIZE_FACTOR): Remove. - (read_input_waiting): Adapt to new read_socket_hook interface. - Remove allocation and initialization of local input_event buffer, - as read_socket_hook stores events directly in fifo. Allocate and - initialize local hold_quit event to handle postponed quit event - (and store it if set by kbd_buffer_store_event_hold). - - * term.c (read_socket_hook): Fix arg list. - - * termhooks.h (read_socket_hook): Fix prototype. - - * w32inevt.c (w32_console_read_socket): Remove bufp_r and - numcharsp args. Add hold_quit arg. - Rework to use just one, local, inev input_event. Store inev - directly in fifo using kbd_buffer_store_event_hold. - - * w32inevt.h (w32_console_mouse_position): Fix prototype. - - * w32term.c (w32_read_socket): Remove bufp_r and numcharsp args. - Add hold_quit arg. Rework to use just one, local, inev - input_event. Store inev directly in fifo using - kbd_buffer_store_event_hold. Update count in one place. - Postpone call to gen_help_event until inev is stored; use new - local do_help for this. - Remove local emacs_event in handing of ButtonPress event; just use - inev instead (so no reason to copy it later). - - * xsmfns.c (x_session_check_input): Remove numchars arg. - - * xterm.c (x_focus_changed, x_detect_focus_change): - Remove numchars arg. Always store event into bufp arg. - Return nothing. Callers changed accordingly. - (glyph_rect): Simplify. - (STORE_KEYSYM_FOR_DEBUG): New macro. - (SET_SAVED_MENU_EVENT): Use inev instead of bufp, etc. - (current_bufp, current_numcharsp) [USE_GTK]: Remove. - (current_hold_quit) [USE_GTK]: Add. - (event_handler_gdk): Adapt to new handle_one_xevent. - (handle_one_xevent): Remove bufp_r and numcharsp args. - Add hold_quit arg. Rework to use just one, local, inev - input_event. Store inev directly in fifo using - kbd_buffer_store_event_hold. Update count in one place. - Postpone call to gen_help_event until inev is stored; use new - local do_help for this. - Simplify handling of keysyms (consolidate common code). Fix bug - where count was updated with nchars instead of nbytes. - Remove local emacs_event in handing of ButtonPress event; just use - inev instead (so no reason to copy it later). - Remove `out' label. Rename label `ret' to `done'; add various - `goto done' to clarify code flow in deeply nested blocks. - (x_dispatch_event): Simplify as handle_one_xevent now calls - kbd_buffer_store_event itself. - (XTread_socket): Remove bufp_r and numcharsp args. Add hold_quit - arg. Call handle_one_xevent with new arglist. Store event from - x_session_check_input in fifo. - [USE_GTK]: Setup current_hold_quit. - Decrement handling_signal before unblocking input. - (x_initialize) [USE_GTK]: Initialize current_count. - - * xterm.h (x_session_check_input): Fix prototype. - -2004-02-26 YAMAMOTO Mitsuharu - - * s/darwin.h (LD_SWITCH_SYSTEM_TEMACS): Add `-framework QuickTime'. - - * dispextern.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in - macgui.h). - - * emacs.c (main) [HAVE_CARBON]: Call init_xfns. - - * macgui.h [MAC_OSX]: Include Carbon/Carbon.h. - (mktime, DEBUG, Z, free, malloc, realloc, max, min) - (init_process) [MAC_OSX]: Avoid conflicts with Carbon/Carbon.h. - [!MAC_OSX]: Include QDOffscreen.h and Controls.h. - (INFINITY) [MAC_OSX]: Avoid conflict with definition in math.h. - (Bitmap): Remove typedef. - (Pixmap): Change int to GWorldPtr. - - * macmenu.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h). - - * macterm.h [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h). - (RED16_FROM_ULONG, GREEN16_FROM_ULONG, BLUE16_FROM_ULONG): - New #define to extract 16-bit depth color components from unsigned - long representation. - (PIX_MASK_DRAW, PIX_MASK_RETAIN): New #define to represent pixel - colors used for masks. - (struct mac_display_info): Add color_p. Remove n_cbits. - - * macfns.c: Include sys/types.h and sys/stat.h. - [MAC_OSX]: Do not include Carbon/Carbon.h (now in macgui.h). - Include QuickTime/QuickTime.h. - (XCreatePixmap, XCreatePixmapFromBitmapData, XFreePixmap) - (XSetForeground, mac_draw_line_to_pixmap): Add externs for - functions defined in macterm.c. - (XImagePtr): New typedef. Corresponds to XImage * in xfns.c. - (ZPixmap): New #define for compatibility with xfns.c. - (XGetImage, XPutPixel, XGetPixel, XDestroyImage) - (x_create_x_image_and_pixmap, x_destroy_x_image, x_put_x_image) - (find_image_fsspec, image_load_qt_1, image_load_quicktime): - New functions. - (four_corners_best, x_create_x_image_and_pixmap) - (x_destroy_x_image, unwind_create_frame, x_disable_image) - (x_edge_detection, init_color_table, colors_in_color_table) - (lookup_rgb_color, lookup_pixel_color, postprocess_image) - (x_put_x_image, slurp_file, xbm_scan, xbm_load, xbm_load_image) - (xbm_image_p, xbm_read_bitmap_data, xbm_file_p, x_to_xcolors) - (x_from_xcolors, x_detect_edges): New declarations (from xfns.c). - (mac_color_map_lookup, x_to_mac_color): Fix Lisp_Object/unsigned - long mixup. - (mac_defined_color, x_to_x_colors): Use RED16_FROM_ULONG etc. - (x_decode_color): Don't use n_cbits (in struct mac_display_info). - (x_set_foreground_color, x_set_cursor_color): Sync with w32fns.c. - (x_set_cursor_type, Fxw_color_values, valid_image_p) - (image_value_type, parse_image_spec, image_ascent, x_clear_image) - (x_alloc_image_color, clear_image_cache, lookup_image) - (x_find_image_file, xbm_read_bitmap_file_data) - (enum xbm_keyword_index, xbm_format, xbm_image_p, xbm_scan) - (xbm_read_bitmap_data, xbm_load, pbm_image_p, pbm_scan_number) - (enum pbm_keyword_index, pbm_format, enum png_keyword_index) - (png_format, png_image_p, enum jpeg_keyword_index, jpeg_format) - (jpeg_image_p, enum tiff_keyword_index, tiff_format, tiff_image_p) - (enum gif_keyword_index, gif_format, gif_image_p): Sync with xfns.c. - (x_make_gc): Sync with xfns.c. Enclose unused `border_tile' with - #if 0. - (x_free_gcs): Sync with xfns.c. Enclose unused `border_tile' with - #if 0. Free white_relief.gc and black_relief.gc. - (unwind_create_frame, x_emboss, x_laplace, x_edge_detection): - New functions (from xfns.c). - (Fx_create_frame): Record unwind_create_frame. - (Fxw_display_color_p): Use dpyinfo->color_p. - (Fx_display_grayscale_p, Fx_display_planes): Don't use - dpyinfo->n_cbits. - (Fx_display_color_cells): Use dpyinfo->n_planes; - (QCmatrix, QCcolor_adjustment, QCmask, Qemboss, Qedge_detection) - (Qheuristic, cross_disabled_images, emboss_matrix) - (laplace_matrix): New variables (from xfns.c). - (Fimage_size, Fimage_mask_p, four_corners_best, image_background) - (x_clear_image_1, postprocess_image, slurp_file, xbm_load_image) - (xbm_file_p, x_to_xcolors, x_from_xcolors, x_detect_edges) - (image_background_transparent): New function (from xfns.c). - Use PIX_MASK_DRAW/PIX_MASK_RETAIN. - (image_load_quicktime): Add declaration. - [MAC_OSX] (image_load_quartz2d): Likewise. - [MAC_OSX] (CGImageCreateWithPNGDataProviderProcType): New typedef. - [MAC_OSX] (MyCGImageCreateWithPNGDataProvider): New variable. - [MAC_OSX] (init_image_func_pointer, image_load_quartz2d): New funs. - (xbm_load_image_from_file, x_laplace_read_row) - (x_laplace_write_row, pbm_read_file): Remove functions. - [HAVE_XPM] (enum xpm_keyword_index, xpm_format, xpm_image_p) - (xpm_load): Sync with xfns.c (although XPM is not supported yet). - (colors_in_color_table): Sync with xfns.c (although not used). - (lookup_rgb_color): Don't lookup color table. Just do gamma - correction. - (COLOR_INTENSITY): New #define (from xfns.c). - (x_disable_image): New function (from xfns.c). - Use PIX_MASK_DRAW/PIX_MASK_RETAIN. - (x_build_heuristic_mask): Sync with xfns.c. - Use PIX_MASK_DRAW/PIX_MASK_RETAIN. - (HAVE_PBM): Remove #ifdef. - (pbm_load): Sync with xfns.c. Set img->width and img->height - before IMAGE_BACKGROUND. - (png_image_p, png_load): Don't enclose declarations with #if HAVE_PNG. - (Qpng, enum png_keyword_index, png_format, png_type, png_image_p): - Don't enclose with #if HAVE_PNG. - [!HAVE_PNG] (png_load) [MAC_OSX]: Use image_load_quartz2d if a - symbol _CGImageCreateWithPNGDataProvider is defined. - Otherwise use image_load_quicktime. - [!HAVE_PNG] (png_load) [!MAC_OSX]: Use image_load_quicktime. - [HAVE_PNG] (png_load): Sync with xfns.c. - Use PIX_MASK_DRAW/PIX_MASK_RETAIN. - (jpeg_image_p, jpeg_load): Don't enclose declarations with #if - HAVE_JPEG. - (Qjpeg, enum jpeg_keyword_index, jpeg_format, jpeg_type) - (jpeg_image_p): Don't enclose with #if HAVE_JPEG. - [!HAVE_JPEG] (jpeg_load) [MAC_OSX]: Use image_load_quartz2d. - [!HAVE_JPEG] (jpeg_load) [!MAC_OSX]: Use image_load_quicktime. - [HAVE_JPEG] (jpeg_load): Sync with xfns.c. - (tiff_image_p, tiff_load): Don't enclose declarations with #if - HAVE_TIFF. - (Qtiff, enum tiff_keyword_index, tiff_format, tiff_type) - (tiff_image_p): Don't enclose with #if HAVE_TIFF. - [!HAVE_TIFF] (tiff_load): Use image_load_quicktime. - [HAVE_TIFF] (tiff_error_handler, tiff_warning_handler): - New functions (from xfns.c). - [HAVE_TIFF] (tiff_load): Sync with xfns.c. - (gif_image_p, gif_load): Don't enclose declarations with #if HAVE_GIF. - (Qgif, enum gif_keyword_index, gif_format, gif_type, gif_image_p): - Don't enclose with #if HAVE_GIF. - [!HAVE_GIF] (gif_load): Use Quicktime Movie Toolbox if it is - animated gif. Otherwise use image_load_quicktime. - [HAVE_GIF] (gif_lib.h): Temporarily define DrawText as - gif_DrawText to avoid conflict with QuickdrawText.h. - [HAVE_GIF] (gif_load): Sync with xfns.c. - (enum gs_keyword_index, gs_format, gs_image_p, gs_load) - [HAVE_GHOSTSCRIPT] (x_kill_gs_process): Sync with xfns.c (although - Ghostscript is not supported yet). - (syms_of_macfns): Initialize Qemboss, Qedge_detection, Qheuristic, - QCmatrix, QCcolor_adjustment, and QCmask. Add DEFVAR_BOOL - cross_disabled_images (from xfns.c). Remove #if 0 for supported - image types. Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and - HAVE_PNG. Add defsubr for Simage_size and Simage_mask_p. - (init_xfns): Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and - HAVE_PNG. Call EnterMovies to support animated gifs. - Call init_image_func_pointer to bind a symbol - _CGImageCreateWithPNGDataProvider if it is defined. - - * macterm.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h). - (x_draw_bar_cursor): Sync declaration with xterm.c. - (XFreePixmap, mac_draw_rectangle_to_pixmap, mac_copy_area) - (mac_copy_area_to_pixmap): Implementation with GWorld (offscreen - graphics). - (mac_set_forecolor, mac_set_backcolor): Use RED16_FROM_ULONG etc. - (mac_draw_line_to_pixmap, XCreatePixmap) - (XCreatePixmapFromBitmapData, mac_fill_rectangle_to_pixmap) - (mac_copy_area_with_mask, mac_copy_area_with_mask_to_pixmap): - New functions. - (mac_draw_bitmap) [TARGET_API_MAC_CARBON]: - Use GetPortBitMapForCopyBits instead of the cast to Bitmap *. - Cast bits to char *. - (reflect_byte): New function (from w32fns.c). - (mac_create_bitmap_from_bitmap_data): Use it and don't stuff bits - due to byte alignment. - (mac_scroll_area) [TARGET_API_MAC_CARBON]: - Use GetPortBitMapForCopyBits instead of the cast to Bitmap *. - (XSetForeground): Remove static (now used in macfns.c). - (HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New #define (from w32term.c). - (mac_alloc_lighter_color, x_destroy_window): Sync with w32term.c. - (x_setup_relief_color, x_setup_relief_colors, x_draw_box_rect) - (x_draw_glyph_string_box, x_draw_image_foreground) - (x_draw_image_foreground_1, x_draw_image_glyph_string) - (x_draw_stretch_glyph_string, x_draw_glyph_string) - (x_draw_hollow_cursor, x_draw_bar_cursor, mac_draw_window_cursor): - Sync with xterm.c. - (x_draw_relief_rect): Sync with xterm.c. Make 1 pixel shorter - than the xterm.c version when a strictly horizontal or vertical - line is drawn. - (XTset_terminal_window): Add static. - (x_make_frame_visible): Add UNBLOCK_INPUT. - (x_free_frame_resources): New funcion (from xterm.c). - (XTread_socket): Call handle_tool_bar_click if mouse up/down event - occurs in tool bar area. - (mac_initialize_display_info): Remove dpyinfo->n_cbits. - Set dpyinfo->color_p. Determine dpyinfo->n_planes using HasDepth. - Initialize image cache. - (stricmp, wildstrieq, mac_font_pattern_match, mac_font_match): - Enclose unused functions with #if 0. - (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): New variables. - (decode_mac_font_name): New function to apply code conversions - from a mac font name to an XLFD font name according to its script code. - (x_font_name_to_mac_font_name): Apply code conversion from an XLFD - font name to a mac font name according to REGISTRY and ENCODING fields. - (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't use a font - whose name starts with `.'. - (init_font_name_table): Use decode_mac_font_name. Add both - jisx0208.1983-sjis and jisx0201.1976-0 entries if the script code - of a font is smJapanese. - (mac_do_list_fonts): New function to list fonts that match a given - pattern. - (x_list_fonts, XLoadQueryFont): Use it. - (XLoadQueryFont): Set rbearing field for each variable width - character to avoid needless redraw. - (syms_of_macterm): Initialize Qbig5, Qcn_gb, Qsjis, and Qeuc_kr. - -2004-02-26 Kim F. Storm - - * keyboard.c (NREAD_INPUT_EVENTS): Temporarily increase to 512 - as read_socket_hook handler on X aborts if buffer is too small - and W32 handler doesn't always check buffer limit. - - * xdisp.c (handle_single_display_prop): Handle left-fringe and - right-fringe similar to a display margin image. Specifically, - the characters having the fringe prop are no longer shown, and - we use IT_IMAGE/next_element_from_image with image_id = -1 to - do this. Set fringe bitmap face_id in it->face_id. - (produce_image_glyph): Handle image_id < 0 as "no image" case, but - still realize it->face (i.e. the fringe bitmap face). - -2004-02-25 Miles Bader - - * xdisp.c (check_it): Check string/string_pos consistency. - (init_iterator): Initialize string-related fields properly. - -2004-02-11 Miles Bader - - * xdisp.c (produce_image_glyph): Force negative descents to zero. - -2004-02-10 Miles Bader - - * xfns.c (lookup_image): Remove xassert(!interrupt_input_blocked); - BLOCK_INPUT can be nested, so it doesn't make much sense. - -2004-02-24 Michael Mauger - - * w32fns.c (slurp_file, xbm_scan, xbm_load_image) - (xbm_read_bitmap_data): Use unsigned char for image data. - -2004-02-23 Luc Teirlinck - - * abbrev.c (Finsert_abbrev_table_description): Doc fix. - -2004-02-22 Jason Rumney - - * w32term.c (w32_draw_fringe_bitmap): Draw overlaid bitmaps - correctly over other bitmaps. - -2004-02-21 Eli Zaretskii - - * emacs.c (USAGE1): Split into two halves. - (USAGE2): Second half of the old USAGE1. - (USAGE3): Rename from USAGE2. - (USAGE4): Rename from USAGE3. - -2004-02-21 Juri Linkov - - * emacs.c (USAGE1): Add --no-desktop. Move --display from USAGE2. - Fix --multibyte. Move --help, --version to USAGE2. Add alias - --file. Fix -f, -l. Sort options. Untabify. - (USAGE2): Add -hb. Fix --name, --title. Sort options. Untabify. - -2004-02-19 Luc Teirlinck - - * category.c (Fdefine_category, Fcategory_docstring) - (Fget_unused_category, Fset_category_table) - (Fcategory_set_mnemonics): Doc fixes. - -2004-02-20 Kim F. Storm - - * keyboard.c: Undo 2004-02-16 and 2004-02-17 changes. - The following changes are relative to the 2004-01-21 revision. - (NREAD_INPUT_EVENTS): Define as max number of input events to read - in one call to read_socket_hook. Value is 8. - (read_avail_input): Separate and rework handling of read_socket_hook - and non-read_socket_hook cases. Use smaller input_event buffer - in read_socket_hook case, and repeat if full buffer is read. - Use new local variable 'discard' to skip input after C-g. - In non-read_socket_hook case, just use a single input_event, and - call kbd_buffer_store_event on the fly for each character. - -2004-02-19 Stefan Monnier - - * lisp.h (union Lisp_Object): Give a more precise type for `type'. - Remove unused `gu' alternative. - -2004-02-19 Andreas Schwab - - * fringe.c (Fdefine_fringe_bitmap): Use && instead of & to avoid - warning. - -2004-02-18 Kim F. Storm - - * xdisp.c (get_window_cursor_type, display_and_set_cursor): - Fix last change. - -2004-02-17 Kim F. Storm - - * xdisp.c (fast_find_position): Fix return value of new version; - it was inverted compared to the 21.1 version. - (get_window_cursor_type): Don't look at glyph if NULL. - (display_and_set_cursor): Set glyph to NULL if cursor in fringe. - - * keyboard.c: Rework previous change; it didn't consider that the - buf array was allocated on the stack. - (prev_read): Remove variable. - (read_avail_input_buf): New static event buffer array. - (in_read_avail_input): New static variable to handle re-entrancy. - (read_avail_input): Change buf to pinter to read_avail_input_buf. - Use in_read_avail_input to handle re-entrance; when re-entered, - fully initialize and use tmp_buf array instead of read_avail_input_buf. - Do not initialize read_avail_input_buf in full here; instead assume it - is always cleared on entry. To ensure that, we clear (just) the - entries that were used before we return. - (init_keyboard): Initialize read_avail_input_buf here. - -2004-02-16 Jesper Harder - - * cmds.c (Fend_of_line): Doc fix. - -2004-02-16 Dmitry Antipov (tiny change) - - * keyboard.c (prev_read): New static variable. - (read_avail_input): Use it to zero out only those slots in buf[] - that were used last time we were called. - -2004-02-16 Eli Zaretskii - - * Makefile.in (obj): Move fringe.o from here... - (XOBJ, MAC_OBJ): ...to here. - -2004-02-16 Stephen Eglen - - * fringe.c (init_fringe_bitmap): Define j in MAC_OS code. - -2004-02-15 Stefan Monnier - - * data.c (Fbyteorder): - * fringe.c (Fdefine_fringe_bitmap): - * xdisp.c (handle_single_display_prop): - * xselect.c (x_handle_dnd_message): Lisp_Object/int mixup. - -2004-02-16 Jason Rumney - - * w32term.c (w32_draw_fringe_bitmap): Handle overlay fringe bitmaps. - -2004-02-15 Steven Tamm - - * macterm.c (Vmac_emulate_three_button_mouse): New variable for - controlling emulation of a three button mouse with option and - command keys. - (Qreverse, mac_get_enumlated_btn): Handle the emulation. - (mac_event_to_emacs_modifiers, XTread_socket): Ditto. - -2004-02-15 Kim F. Storm - - * buffer.c (syms_of_buffer): Doc fix for indicate-buffer-boundaries. - - * fringe.c (init_fringe_bitmap) [MAC_OS, WORDS_BIG_ENDIAN]: - Perform byte-swapping. - -2004-02-14 Kim F. Storm - - * dispextern.h (struct draw_fringe_bitmap_params): Change member - bits from char to short to facilitate wider bitmaps. - (struct redisplay_interface): Fix prototype of define_fringe_bitmap - member. - - * fringe.c (struct fringe_bitmap): Change member bits from char to - short to facilitate 16 bits wide bitmaps. Modify all standard - bitmaps accordingly. - (BYTES_PER_BITMAP_ROW, STANDARD_BITMAP_HEIGHT): New macros. - (FRBITS): Use STANDARD_BITMAP_HEIGHT instead of just sizeof. - (draw_fringe_bitmap): Ditto. - (init_fringe_bitmap) [MAC_OS]: Don't bitswap. - (init_fringe_bitmap) [HAVE_X_WINDOWS]: Enhance bitswapping to - handle up to 16 bits wide bitmaps. - (Fdefine_fringe_bitmap): Doc fix. Handle wider bitmaps. - (Ffringe_bitmaps_at_pos): Add missing arg declarations. - - * macterm.c (mac_draw_bitmap): Handle 16 bits wide bitmaps directly. - (x_draw_fringe_bitmap): Use enhanced mac_draw_bitmap, so we no longer - need to call mac_create_bitmap_from_bitmap_data and mac_free_bitmap. - - * w32term.c (w32_define_fringe_bitmap): Bitmaps are now 16 bits wide, - so it is no longer necessary to expand them here. - - * xterm.c (x_draw_fringe_bitmap): Handle wider bitmaps (max 16 bits). - -2004-02-12 Kim F. Storm - - * window.c (Fwindow_fringes): Doc fix. - -2004-02-10 Jan Dj,Ad(Brv - - * xselect.c (x_get_foreign_selection): Add new optional parameter - time_stamp. - (Fx_get_selection_internal): Ditto, pass time_stamp to - x_get_foreign_selection. - - * data.c (Fbyteorder): New function. - -2004-02-09 Jan Dj,Ad(Brv - - * atimer.c: Move include stdio.h to same place as in other files. - - * region-cache.c: Ditto. - - * sysdep.c: Ditto. - - * xfaces.c: Ditto. - -2004-02-09 Sam Steingold - - * w32term.c (w32_draw_fringe_bitmap): Fix a typo in the last patch. - -2004-02-09 Kim F. Storm - - * fringe.c: New file. Move original fringe related declarations - and code from dispextern.h and xdisp.c here. - Rework code to support user defined fringe bitmaps, redefining - standard bitmaps, ability to overlay user defined bitmap with - overlay arrow bitmap, and add faces to bitmaps. - (Voverflow_newline_into_fringe): Declare here. - (enum fringe_bitmap_align): New enum. - (..._bits): All bitmaps are now defined without bitswapping; that - is now done in init_fringe_once (if necessary). - (standard_bitmaps): New array with specifications for the - standard fringe bitmaps. - (fringe_faces): New array. - (valid_fringe_bitmap_id_p): New function. - (draw_fringe_bitmap_1): Rename from draw_fringe_bitmap. - (draw_fringe_bitmap): New function which draws fringe bitmap, - possibly overlaying bitmap with cursor in right fringe or the - overlay arrow in the left fringe. - (update_window_fringes): Do not handle overlay arrow here. - Compare and copy fringe bitmap faces. - (init_fringe_bitmap): New function. - (Fdefine_fringe_bitmap, Fdestroy_fringe_bitmap): New DEFUNs to - define and destroy user defined fringe bitmaps. - (Fset_fringe_bitmap_face): New DEFUN to set face for a fringe bitmap. - (Ffringe_bitmaps_at_pos): New DEFUN to read current fringe bitmaps. - (syms_of_fringe): New function. Defsubr new DEFUNs. - DEFVAR_LISP Voverflow_newline_into_fringe. - (init_fringe_once, init_fringe): New functions. - (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: New functions. - - * Makefile.in (obj): Add fringe.o. - (fringe.o): New dependencies. - - * dispextern.h (FRINGE_ID_BITS): New definition for number of - bits allocated to hold a fringe number. Increase number of bits - from 4 to 8 to allow user defined fringe bitmaps. - (struct glyph_row, struct it): New members left_user_fringe_bitmap, - left_user_fringe_face_id, right_user_fringe_bitmap, - right_user_fringe_face_id. - (enum fringe_bitmap_type, struct fringe_bitmap, fringe_bitmaps): - Move to new file fringe.c. - (MAX_FRINGE_BITMAPS): Define here. - (struct draw_fringe_bitmap_params): New members bits, cursor_p, - and overlay_p. Change member which to int. - (struct redisplay_interface): New members define_fringe_bitmap - and destroy_fringe_bitmap. - (valid_fringe_bitmap_id_p): Add prototype. - (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: Add prototypes. - - * dispnew.c (row_equal_p): Compare fringe bitmap faces and overlay - arrows. - (update_frame): Do flush_display if force_flush_display_p to - ensure display (specifically fringes) are updated in a timely - manner when resizing the frame by dragging the mouse. - (update_window_line): Update row if overlay arrow changed. - (scrolling_window): Redraw fringe bitmaps if fringe bitmap faces - or overlay arrow changed. - - * emacs.c (main) [HAVE_WINDOW_SYSTEM]: Call init_fringe_once, - syms_of_fringe, and init_fringe. - - * frame.h (struct frame): New member force_flush_display_p. - - * lisp.h (syms_of_fringe, init_fringe, init_fringe_once): - Add prototypes. - - * macterm.c (mac_draw_bitmap): Add overlay_p arg. - (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps; - thanks to YAMAMOTO Mitsuharu for advice on how to do this. - Use cursor color for displaying cursor in fringe. - (x_redisplay_interface): Add null handlers for - define_fringe_bitmap and destroy_fringe_bitmap functions. - - * w32term.c (w32_draw_fringe_bitmap): Copy unadapted code from - xterm.c to handle overlayed fringe bitmaps and to use cursor color - for displaying cursor in fringe. - (w32_define_fringe_bitmap, w32_destroy_fringe_bitmap): New W32 - specific functions to define and destroy fringe bitmaps in fringe_bmp. - (w32_redisplay_interface): Add them to redisplay_interface. - (w32_term_init): Call w32_init_fringe instead of explicitly - defining fringe bitmaps in fringe_bmp array. - (x_delete_display): Call w32_reset_fringes instead of explicitly - destroying fringe bitmaps in fringe_bmp array. - - * xdisp.c (Voverflow_newline_into_fringe, syms_of_xdisp) - (left_bits, right_bits, up_arrow_bits, down_arrow_bits) - (continued_bits, continuation_bits, ov_bits, first_line_bits) - (last_line_bits, filled_box_cursor_bits, hollow_box_cursor_bits) - (bar_cursor_bits, hbar_cursor_bits, zv_bits, hollow_square_bits) - (fringe_bitmaps, draw_fringe_bitmap, draw_row_fringe_bitmaps) - (draw_window_fringes, compute_fringe_widths, update_window_fringes): - Move fringe handling vars and code to new file fringe.c. - (handle_display_prop): Handle left-fringe and right-fringe - display properties; store user fringe bitmaps in iterator. - (move_it_in_display_line_to): Handle cursor in fringe at eob. - (clear_garbaged_frames): Set force_flush_display_p if resized. - (redisplay_window): Redraw fringe bitmaps if not just_this_one_p. - (display_line): Handle cursor in fringe at eob. - (display_line): Set row user fringe bitmaps from iterator. - - * xterm.c (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps. - Use cursor color for displaying cursor in fringe. - (x_redisplay_interface): Add null handlers for - define_fringe_bitmap and destroy_fringe_bitmap functions. - -2004-02-07 Jan Dj,Ad(Brv - - * macfns.c (Fx_change_window_property): Make doc string and - parameters same as for X version. - - * w32fns.c (Fx_change_window_property): Ditto. - -2004-02-07 Kim F. Storm - - * xdisp.c (hscroll_window_tree): Position cursor near to right - margin in hscrolled window when jumping to end of line (rather - than centering cursor). - - * process.c (wait_reading_process_input): Don't do adaptive read - buffering if waiting for a specific process. - -2004-02-05 Luc Teirlinck - - * minibuf.c (Fminibufferp, Fread_from_minibuffer) - (Fread_minibuffer, Feval_minibuffer) - (Fread_string, Fread_no_blanks_input) - (Fcompleting_read): Doc fixes. - (syms_of_minibuf): Doc fixes for minibuffer-completion-table and - completion-regexp-list. Define Qcase_fold_search and staticpro it. - (read_minibuf): Fix initial comment. - (Ftry_completion, Fall_completions, Ftest_completion): Bind - case-fold-search to the value of completion-ignore-case when - checking completion-regexp-list. - (Fdisplay_completion_list): Make it handle arguments that are - symbols. Doc fix. - -2004-02-05 Jan Dj,Ad(Brv - - * xterm.h: Add declaration of free_frame_menubar. - - * xfns.c (x_create_bitmap_mask): Removed unused variable depth. - (x_set_menu_bar_lines): Added ! defined USE_GTK for olines. - (Fx_change_window_property): Add declaration of parameters type and - format. Remove unused variable cons. - - * xselect.c: Include stdio.h. - -2004-02-05 Kenichi Handa - - * fns.c (Fset_char_table_range): Fix previous change. - - * buffer.c (Fset_buffer_multibyte): Fix docstring. - -2004-02-04 Luc Teirlinck - - * editfns.c (Fchar_after, Fchar_before): Doc fixes. - -2004-02-04 Stefan Monnier - - * keymap.c (Vmouse_events): Rename from Vmenu_events. - (syms_of_keymap): Add mouse-[45], header-line, and mode-line to it. - -2004-02-04 Kenichi Handa - - * fns.c (Fset_char_table_range): Handle charsets ascii, - eight-bit-control, and eight-bit-graphic correctly. - -2004-02-03 Jason Rumney - - * w32select.c (Fw32_set_clipboard_data): Make coding iso2022 safe. - - * w32fns.c (x_to_w32_font): Likewise. - -2004-02-03 Jan Dj,Ad(Brv - - * xterm.h: Add x_handle_dnd_message, x_check_property_data, - x_fill_property_data, x_property_data_to_lisp and check_x_display_info. - - * xterm.c (handle_one_xevent): Call x_handle_dnd_message for - ClientMessages. - - * xselect.c: Include termhooks.h and X11/Xproto.h. - (x_check_property_data, x_fill_property_data) - (x_property_data_to_lisp, mouse_position_for_drop) - (Fx_get_atom_name, x_handle_dnd_message): New functions for DND support. - (Fx_send_client_event): Move here from xfns.c. - (syms_of_xselect): Add Sx_get_atom_name and Sx_send_client_message. - - * xfns.c (x-send-client-message): Move to xselect.c. - (Fx_change_window_property): Add optional arguments TYPE, FORMAT and - OUTER_P. - (Fx_window_property): Add optional arguments TYPE, SOURCE, DELETE_P, - VECTOR_RET_P. Handle AnyPropertyType. Call x_property_data_to_lisp - if vector_ret_p is true. - (syms_of_xfns): Sx_send_client_message moved to xselect.c. - -2004-02-02 Eli Zaretskii - - * fileio.c (Fcopy_file): If NEWNAME is a directory, expand the - basename of FILE relative to it, not FILE itself. - -2004-02-02 Kenichi Handa - - * coding.c (coding_restore_composition): Check invalid - composition data more rigidly. - -2004-01-30 Luc Teirlinck - - * fileio.c (Fread_file_name_internal): Correctly handle the case - where insert-default-directory is nil. - (Fread_file_name): Always return an empty string if the user exits - with an empty minibuffer. Adapt the docstring accordingly. - (syms_of_fileio): Adapt the docstring of insert-default-directory - to the change in Fread_file_name. - -2004-01-29 Eli Zaretskii - - * alloca.c [!alloca]: Fix the prototype for xfree. - -2004-01-29 Kenichi Handa - - * fns.c (string_char_to_byte): Optimize for ASCII only string. - (string_byte_to_char): Likewise. - -2004-01-28 Peter Runestig - - * makefile.w32-in, w32fns.c: Add `default-printer-name' function. - -2004-01-27 Steven Tamm - - * unexmacosx.c (unexec_copy): Do not copy more than was - requested to prevent overwriting during unexec. - -2004-01-27 Jan Dj,Ad(Brv - - * process.c (sigchld_handler): Add comment about not calling malloc. - - * process.h: Add extern to synch_process_termsig. - -2004-01-27 Steven Tamm - - * macterm.c (make_mac_frame, make_mac_terminal_frame): - Move setting of scroll bars from make_mac_frame to - make_mac_terminal_frame to prevent clobbering of scroll-bar-mode. - -2004-01-26 Richard M. Stallman - - * search.c (Freplace_match): Handle nonexistent - back-references properly. - -2004-01-03 Richard M. Stallman - - * window.c (decode_any_window): New function. - (Fwindow_height, Fwindow_width, Fwindow_edges) - (Fwindow_pixel_edges, Fwindow_inside_edges) - (Fwindow_inside_pixel_edges): Use decode_any_window. - -2004-01-27 Jan Dj,Ad(Brv - - * process.h: synch_process_termsig new variable. - - * callproc.c: Define synch_process_termsig. - (Fcall_process): Initiate synch_process_termsig to zero and - check if non-zero and get signal name after subprocess has ended. - - * process.c (sigchld_handler): Set synch_process_termsig - if terminated by a signal. synch_process_death setting removed. - - * sysdep.c (mkdir, rmdir): Also check synch_process_termsig. - -2004-01-26 Andreas Schwab - - * print.c (print_preprocess): Declare size as EMACS_INT to not - lose bits. - (print_object): Likewise. - * alloc.c (Fpurecopy): Likewise. - -2004-01-25 Luc Teirlinck - - * window.c (Fwindow_minibuffer_p): Doc fix. - -2004-01-24 Jonathan Yavner - - * editfns.c (Fformat): Make both passes accept the same set of flags. - -2004-01-23 Kenichi Handa - - * fns.c (Fmd5): If OBJECT is a buffer different from the current - one, set buffer to OBJECT temporarily. - -2004-01-21 Stefan Monnier - - * keyboard.c (kbd_buffer_gcpro): Remove. - (kbd_buffer_store_event, clear_event, Fdiscard_input) - (stuff_buffered_input, init_keyboard, syms_of_keyboard): - Don't initialize and/or maintain the variable any more. It was made - redundant by my commit of 2003-06-15. - - * lisp.h [USE_LSB_TAG && !DECL_ALIGN]: Signal an error. - -2004-01-21 Jan Dj,Ad(Brv - - * lisp.h: Add undef DECL_ALIGN. - -2004-01-21 Stefan Monnier - - * process.c (wait_reading_process_input) [SYNC_INPUT]: - Check interrupt_input_pending explicitly. - - * lisp.h (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well. - - * keyboard.c (handle_async_input): New fun, - extracted from input_available_signal. - (input_available_signal, reinvoke_input_signal): Use it. - -2004-01-20 Stefan Monnier - - * buffer.c (buffer_defaults, buffer_local_symbols): Use DECL_ALIGN. - - * lisp.h [USE_LSB_TAG]: Add definitions for Lisp_Object value - manipulation macros for when tags are in the lower bits. - (struct Lisp_Free) [USE_LSB_TAG]: Add padding. - (DECL_ALIGN): New macro. - (DEFUN): Use it. - - * lisp.h [ENABLE_CHECKING]: Don't force union type. - - * s/darwin.h (__attribute__): Remove outdated workaround. - - * macterm.c (main) [USE_LSB_TAG]: Don't range check the ram. - - * alloc.c (lisp_malloc, lisp_align_malloc) [USE_LSB_TAG]: - Don't check range of malloc address. - (pure_alloc) [USE_LSB_TAG]: Enforce alignment. - - * process.c (wait_reading_process_input): Lisp_Object/int mixup. - - * dired.c (Ffile_attributes): Lisp_Object/int mixup. - -2004-01-19 Kenichi Handa - - * fontset.c (fontset_font_pattern): Fix previous change. - -2004-01-16 Miles Bader - - * xdisp.c (Voverflow_newline_into_fringe) - (move_it_in_display_line_to, redisplay_internal) - (update_window_fringes, redisplay_window, display_line, window): - Add `#ifdef HAVE_WINDOW_SYSTEM' around fringe-drawing stuff, so - that it compiles without a window-system. - * dispnew.c (direct_output_for_insert, update_window): Likewise. - -2004-01-16 Kim F. Storm - - * buffer.h (struct buffer): New member indicate_buffer_boundaries. - - * buffer.c (init_buffer_once): Set buffer_defaults and - buffer_local_flags for indicate_buffer_boundaries. - (syms_of_buffer): Defvar_per_buffer it, and defvar_lisp_nopro - default- variable for it. - - * dispextern.h (struct glyph_row): New members left_fringe_bitmap, - right_fringe_bitmap, redraw_fringe_bitmaps_p for new fringe handling. - New members exact_window_width_line_p and cursor_in_fringe_p for - overflowing newlines into right fringe. - New members indicate_bob_p, indicate_top_line_p, indicate_eob_p, - and indicate_bottom_line_p for buffer boundaries and scrolling. - (enum fringe_bitmap_type): Add UP_ARROW_BITMAP, DOWN_ARROW_BITMAP, - FIRST_LINE_BITMAP, LAST_LINE_BITMAP, FILLED_BOX_CURSOR_BITMAP, - HOLLOW_BOX_CURSOR_BITMAP, BAR_CURSOR_BITMAP, HBAR_CURSOR_BITMAP, - and HOLLOW_SQUARE_BITMAP. - (draw_fringe_bitmap, draw_window_fringes, update_window_fringes): - Add prototypes. - - * dispnew.c (row_equal_p, update_window_line): Compare fringe bitmaps - instead of related indicator fields. - Compare exact_window_width_line_p and cursor_in_mouse_face_p indicators. - (direct_output_for_insert): Handle exact width lines like - contined lines. Call update_window_fringes. - (update_window): Call update_window_fringes. - (scrolling_window): Don't skip desired rows with changed bitmaps. - Check if fringe bitmaps changes when assigning scrolled rows. - - * xdisp.c (Voverflow_newline_into_fringe): New variable. - (IT_OVERFLOW_NEWLINE_INTO_FRINGE): New macro. - (move_it_in_display_line_to): Overflow newline into fringe for - rows that are exactly as wide as the window. - (up_arrow_bits, down_arrow_bits, first_line_bits, last_line_bits) - (filled_box_cursor_bits, hollow_box_cursor_bits, bar_cursor_bits) - (hbar_cursor_bits, hollow_square_bits): New fringe bitmaps. - (fringe_bitmaps): Add new bitmaps. - (draw_fringe_bitmap): Make extern. Remove WHICH arg. - Select proper bitmap for cursor in fringe when appropriate. - Handle alignment of bitmap to top or bottom of row. - (draw_row_fringe_bitmaps): Don't select bitmaps here; that is now - done by update_window_fringes. - (update_window_fringes, draw_window_fringes): New functions. - (redisplay_internal): Call update_window_fringes in case only - cursor row is updated. - (redisplay_window): Call update_window_fringes. - Explicitly call draw_window_fringes if redisplay was done using - the current matrix or the overlay arrow is in the window. - (try_window_reusing_current_matrix): Mark scrolled rows for - fringe update (to update buffer-boundaries / scrolling icons). - (find_last_unchanged_at_beg_row): Handle exact width lines line - continued lines. - (display_line): Overflow newline into fringe for rows that are - exactly as wide as the window. Don't append space for newline - in this case. - (notice_overwritten_cursor): Explicitly clear cursor bitmap - in fringe as if it had been overwritten. - (erase_phys_cursor): Erase cursor bitmap in fringe. - (syms_of_xdisp): Mark show-trailing-whitespace and - void-text-area-pointer as user options. - DEFVAR_LISP Voverflow_newline_into_fringe. Enable by default. - - * xterm.c (x_update_window_end): Call draw_window_fringes. - (x_after_update_window_line): Just set redraw_fringe_bitmaps_p - in row instead of actually drawing fringe bitmaps. - (x_draw_fringe_bitmap): Handle bottom aligned bitmaps. - (x_draw_window_cursor): Draw cursor in fringe. - - * w32term.c (x_update_window_end): Call draw_window_fringes. - (x_after_update_window_line): Just set redraw_fringe_bitmaps_p - in row instead of actually drawing fringe bitmaps. - (w32_draw_fringe_bitmap): Handle bottom aligned bitmaps. - (w32_draw_window_cursor): Draw cursor in fringe. - - * macterm.c (x_update_window_end): Call draw_window_fringes. - (x_after_update_window_line): Just set redraw_fringe_bitmaps_p - in row instead of actually drawing fringe bitmaps. - (x_draw_fringe_bitmap): Handle bottom aligned bitmaps. - (mac_draw_window_cursor): Draw cursor in fringe. - -2004-01-16 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Don't handle characters that are part - of an old style (XLookupString) compose sequence. - -2004-01-15 Kenichi Handa - - * search.c (Freplace_match): Use make_multibyte_string or - make_unibyte_string according to the buffer multibyteness. - -2004-01-14 Stefan Monnier - - * alloc.c (struct interval_block, struct string_block) - (struct symbol_block, struct marker_block, live_string_p) - (live_cons_p, live_symbol_p, live_float_p, live_misc_p): - Better preserve alignment for objects in blocks. - (FLOAT_BLOCK_SIZE): Adjust for possible alignment padding. - - * lread.c (defvar_per_buffer): Remove dead declaration. - - * macterm.c (do_check_ram_size): Don't hardcode the lisp address - space size. - -2004-01-12 Jan Dj,Ad(Brv - - * xmenu.c (popup_get_selection): Check new parameter down_on_keypress - if a key press should pop down. Only pop down if a key is pressed - outside the menu/dialog. - (create_and_show_popup_menu): Pass 0 for down_on_keypress to - popup_get_selection. - (create_and_show_dialog): Pass 1 for down_on_keypress to - popup_get_selection. - -2004-01-11 Jan Dj,Ad(Brv - - * alloc.c (allocate_vectorlike): Surround calls to mallopt with - BLOCK/UNBLOCK_INPUT. - -2004-01-08 Jan Dj,Ad(Brv - - * xmenu.c (Fx_popup_dialog): Add an Ok button if no buttons are - specified. - -2004-01-08 Kenichi Handa - - * editfns.c (Fformat): Fix '&' to '&&'. - -2004-01-08 Andreas Schwab - - * print.c (print_preprocess) : Only mask - size if PSEUDOVECTOR_FLAG is set. - -2004-01-07 Kenichi Handa - - * charset.c (Fdeclare_equiv_charset): Fix docstring. - - * fontset.c (fontset_ref_via_base): Fix previous change. - -2004-01-07 Kim F. Storm - - * process.c (read_process_output): Only activate adaptive - buffering if we read less than 256 bytes at a time. - -2004-01-06 Kim F. Storm - - * dispnew.c (buffer_posn_from_coords): Return both buffer/string - object and image object. Return glyph width and height. - (mode_line_string, marginal_area_string): Ditto. - - * dispextern.h (buffer_posn_from_coords, mode_line_string) - (marginal_area_string): Fix prototypes. - - * keyboard.h (POSN_POSN, POSN_SET_POSN): Rename macros from - POSN_BUFFER_POSN and POSN_SET_BUFFER_POSN. All uses changed. - (POSN_INBUFFER_P, POSN_BUFFER_POSN): New macros. - - * keyboard.c (make_lispy_position): Use modified mode_line_string, - buffer_posn_from_coords, and marginal_area_string functions to - include both string object and image object in the lispy position. - Also add actual glyph width and height to position. - (read_key_sequence): Use real buffer position from mouse - event to find keymap property even when click is in marginal area. - - * xdisp.c (note_mode_line_or_margin_highlight): Use modified - mode_line_string and marginal_area_string functions to handle - both string object and image object properties. - -2004-01-06 Andreas Schwab - - * syntax.c (skip_chars): Treat '-' at end of string as ordinary - character. - -2004-01-02 Andreas Schwab - - * macterm.c (emacs_options, x_initialized, same_x_server): - Remove unused (and duplicated) definitions. - -2004-01-02 Kim F. Storm - - * process.h (struct Lisp_Process): New members for adaptive read - buffering: adaptive_read_buffering, read_output_delay, and - read_output_skip. - - * process.c (ADAPTIVE_READ_BUFFERING): New conditional. - (READ_OUTPUT_DELAY_INCREMENT, READ_OUTPUT_DELAY_MAX) - (READ_OUTPUT_DELAY_MAX_MAX): New constants. - (process_output_delay_count, process_output_skip): New vars. - (Vprocess_adaptive_read_buffering): New variable. - (make_process): Initialize adaptive read buffering members. - (Fstart_process): Set adaptive_read_buffering member. - (deactivate_process): Cleanup adaptive read buffering. - (wait_reading_process_input): Temporarily omit delayed - subprocesses from the set of file descriptors to read from; - adjust the select timeout if we skipped any subprocesses. - (read_process_output): Increase adaptive read buffering delay if - we read less than a full buffer; reduce delay when we read a - full buffer. - (send_process): Simplify using local Lisp_Process var. - Reset adaptive read buffering delay after write. - (init_process): Initialize process_output_delay_count and - process_output_skip. - (syms_of_process): DEFVAR_LISP Vprocess_adaptive_read_buffering. - -2004-01-01 Jason Rumney - - * w32term.c (w32_text_out): Use s->font, for consistency with callers. - -2003-12-30 Luc Teirlinck - - * print.c (Ferror_message_string): Add hyperlink in the docstring - to the definition of `signal' in the Elisp manual. - * eval.c (Fsignal): Ditto. - -2003-12-29 James Clark - - * fns.c (internal_equal): Return t for two NaN arguments. - -2003-12-29 Richard M. Stallman - - * data.c (store_symval_forwarding): Handle setting - default-fill-column, etc., by changing the value in - buffers that use the default. - - * minibuf.c (Fset_minibuffer_window): Doc fix. - - * fileio.c (choose_write_coding_system): Ignore auto_saving - if using the visited file for auto saves. - (Fwrite_region): Don't update SAVE_MODIFF - if auto-saving in visited file. - -2003-12-29 Kenichi Handa - - * dispextern.h (face_font_available_p): Extern it. - - * fontset.c (Voverriding_fontspec_alist): New variable. - (lookup_overriding_fontspec): New function. - (fontset_ref_via_base): Call lookup_overriding_fontspec if necessary. - (fontset_font_pattern): Likewise. - (regulalize_fontname): New function. - (Fset_fontset_font): Call regulalize_fontname. - (Fset_overriding_fontspec_internal): New function. - (syms_of_fontset): Initialize and staticpro Voverriding_fontspec_alist. - Defsubr Sset_overriding_fontspec_internal. - - * xfaces.c (face_font_available_p): New function. - -2003-12-28 Richard M. Stallman - - * buffer.c (Fother_buffer): Don't crash if BUF is nil - or if its name is nil. - - * buffer.c (Fkill_buffer): Don't delete auto-save file - if it's the same as the visited file. - -2003-12-28 Luc Teirlinck - - * coding.c (Fcheck_coding_system): Doc fix. - -2003-12-28 Kim F. Storm - - * Makefile.in (eval.o): Depend on dispextern.h. - - * dispnew.c (buffer_posn_from_coords): Fix calculation of dy for - image glyph using image's ascent. - (mode_line_string): Return image glyph as object clicked on. - Adjust y0 for image glyph using image's ascent. - - * dispextern.h (FACE_ID_BITS, MAX_FACE_ID): New defines. - (struct glyph): New members, ascent and descent. Used to save - this glyph's ascent and descent, instead of having. - (struct glyph): Declare member face_id using FACE_ID_BITS. - (find_hot_spot): Add prototype. - - * keyboard.c (Qimage): Remove extern (now in lisp.h). - (QCmap): Declare extern. - (make_lispy_position): When position is inside image hot-spot, - use hot-spot element's id as posn element. - - * lisp.h (IMAGEP): New macro to test for image object type. - (Qimage): Declare extern. - - * macfns.c (Qimage): Remove extern (now in lisp.h). - (valid_image_p, parse_image_spec): Use IMAGEP macro. - - * macterm.c (Qface, Qmouse_face): Remove unused externs. - - * w32fns.c (Qimage): Remove extern (now in lisp.h). - (valid_image_p, parse_image_spec): Use IMAGEP macro. - - * w32menu.c (Qmouse_click, Qevent_kind): Remove unused externs. - - * w32term.c (Qface, Qmouse_face): Remove unused externs. - - * xdisp.c (Qarrow, Qhand, Qtext, Qpointer): New variables for - pointer types. - (Qrelative_width, Qalign_to): Remove unused variables. - (Vvoid_text_area_pointer): Replace Vshow_text_cursor_in_void. - (QCmap, QCpointer, Qrect, Qcircle, Qpoly): New variables for image - maps. - (x_y_to_hpos_vpos): Return glyph relative coordinates through new - dx and dy args. Remove buffer_only_p arg (always 0). Simplify - code accordingly. - (get_glyph_string_clip_rect): Draw cursor using glyph's rather - than row's ascent and height, to get sensible height on tall rows. - (build_desired_tool_bar_string): Remove Qimage extern. - (get_tool_bar_item): Fix call to x_y_to_hpos_vpos. - (produce_image_glyph): Adjust it.ascent to minimum row ascent if - image glyph is alone on the last line. - (append_glyph, append_composite_glyph, produce_image_glyph) - (append_stretch_glyph): Set glyph's ascent and descent. - (on_hot_spot_p): New function to check if position is inside an - rectangular, circular, or polygon-shaped image hot-spot, - (find_hot_spot): New function to search for image hot-spot. - (Flookup_image_map): New defun to search for image hot-spot. - (define_frame_cursor1): New aux function to determine frame - pointer. - (note_mode_line_or_margin_highlight, note_mouse_highlight): Handle - `pointer' text property and :pointer image property to control - frame pointer shape. Detect image hot-spots for pointer and - help_echo properties. Use define_frame_cursor1. - (note_mouse_highlight): Use Vvoid_text_area_pointer. - (syms_of_xdisp): Defsubr new defun. Intern and staticpro new - variables. DEFVAR_LISP Vvoid_text_area_pointer instead of - Vshow_text_cursor_in_void. - - * xfaces.c (cache_face): Abort if c->size exceeds MAX_FACE_ID. - - * xfns.c (x_set_mouse_color): Remove bogus x_check_errors call. - (Qimage): Remove extern (now in lisp.h). - (valid_image_p, parse_image_spec): Use IMAGEP macro. - - * xmenu.c (show_help_event): Remove unused code. - - * xterm.c (Qface, Qmouse_face): Remove unused externs. - (x_draw_hollow_cursor): Draw cursor using glyph's rather than - row's ascent and descent, to get a sensible height on tall rows. - -2003-12-25 Luc Teirlinck - - * minibuf.c (Fcompleting_read): Undo previous change. - -2003-12-25 Lars Hansen - - * dired.c (Fdirectory_files, Fdirectory_files_and_attributes): - Arguments GCPRO'ed in call to file name handler. - -2003-12-25 Thien-Thi Nguyen - - * termcap.c (tgetst1): Scan for "%pN"; if all - N are continuous in [1,9], remove all "%pN". - -2003-12-24 Jan Dj,Ad(Brv - - * gtkutil.c (xg_frame_set_char_size): Call x_wm_set_size_hint. - - * xfaces.c (lface_fully_specified_p): Take into account that - MAC OS always have unspecified stipple. - -2003-12-24 Thien-Thi Nguyen - - * tparam.c (tparam1): Add handling for `%pN', which - means use param N for the next substitution. - -2003-12-24 Thien-Thi Nguyen - - * xfaces.c (Fcolor_gray_p): Fix omission bug: - In case `frame' is nil, consult the selected frame. - (Fcolor_supported_p): Likewise. - -2003-12-23 Luc Teirlinck - - * fns.c (Frandom, Fstring_make_multibyte, Fset_char_table_range): - Doc fixes. - - * minibuf.c (read_minibuf): Allow INITIAL to be a cons of a string - and an integer. Adapt the introductory comment accordingly. - (Fread_from_minibuffer): Delete code moved into read_minibuf. - Doc fix. - (Fread_minibuffer, Fread_no_blanks_input): Adapt to changes in - read_minibuf. - (Fcompleting_read): Delete code moved into read_minibuf. - (Ftest_completion): Make it handle obarrays and hash tables correctly. - -2003-12-03 Kenichi Handa - - * coding.c (decode_coding_iso2022): Fix for preserving UTF-8 - encoding sequence. - -2003-12-01 Kenichi Handa - - * composite.c (syms_of_composite): Don't make the compostion hash - table week. - -2003-11-30 Luc Teirlinck - - * intervals.h: Add EXFUN for Fget_char_property_and_overlay. - * textprop.c (Fget_char_property_and_overlay): New function. - (syms_of_textprop): Defsubr it. - -2003-11-29 Jan Dj,Ad(Brv - - * dispnew.c (buffer_posn_from_coords): Add ifdef HAVE_WINDOW_SYSTEM - to compile on terminal configuration. - - * fileio.c (Fread_file_name): Check use_file_dialog also before - calling Fx_file_dialog. - - * fns.c (use_file_dialog): New variable. - (syms_of_fns): DEFVAR_BOOL use-file-dialog. - -2003-11-29 Kim F. Storm - - * msdos.c (Qcursor_type, Qbar, Qhbar): Declare extern. - (syms_of_msdos): Don't intern and staticpro them. - -2003-11-27 Kim F. Storm - - * dispnew.c (buffer_posn_from_coords): Calculate and return pixel - coordinates relative to glyph at posn. If glyph is an image, - return that as object at posn. Callers changed. - (mode_line_string, marginal_area_string): Calculate and return - pixel coordinates relative to glyph. Callers changed. - - * dispextern.h (buffer_posn_from_coords, mode_line_string) - (marginal_area_string): Fix prototypes. - (window_box_left_offset, window_box_right_offset): Add prototypes. - - * frame.h (get_specified_cursor_type, get_window_cursor_type): - Remove prototypes. - - * keyboard.h (EVENT_CLICK_COUNT, POSN_SCROLLBAR_PART): Fix defines. - - * keyboard.c (make_lispy_position): Add x and y coordinates - relative to the current glyph as 7th element of position. - If glyph is an image, return it in the object element. - (read_key_sequence): Skip checks for keymap property in cases - where POSN_STRING is not a string (e.g. an image). - - * xdisp.c (Vdisplay_pixels_per_inch): New variable. - (Vshow_text_cursor_in_void): New variable. - (glyph_to_pixel_coords): Don't use negative hpos. - (x_y_to_hpos_vpos): Fix for partially visible first glyph. - (append_stretch_glyph): Change ascent arg to be actual value - in pixels rather than ratio to height. Callers changed. - (calc_pixel_width_or_height): New aux function, implementing - pixel based artihmetic for glyph widths and heights. - (produce_stretch_glyph): Use calc_pixel_width_or_height for - :width, :height, :align-to, and :ascent, thus allowing these to - be specified in pixels as well as multiples of characters. - Don't produce stretch glyphs with zero width or height. - (get_specified_cursor_type): Declare static. - (get_window_cursor_type): Declare static. Add glyph arg to be - able to know when cursor is on an image; always substitute - hollow-box cursor for filled-box cursor on images, to avoid - negative images and flicker when blinking the cursor. - (display_and_set_cursor): Pass glyph to get_window_cursor_type. - (note_mode_line_or_margin_highlight): Use non-text cursor rather - than vertical scroll-bar cursor in display margins. - (note_mouse_highlight): Use non-text cursor rather than text - cursor in fringes and over images in the text area. - Use non-text cursor when mouse pointer is outside editable text, - i.e. in the void after end-of-line or end-of-buffer; this was - already done for W32, but is now standard for all systems -- - user can toggle show-text-cursor-in-void to get old behaviour. - (syms_of_xdisp): DEFVAR_LISP Vshow_text_cursor_in_void and - Vdisplay_pixels_per_inch. - -2003-11-25 Andreas Schwab - - * fns.c (internal_equal) : Declare size as - EMACS_INT to not lose bits. - (Ffillarray): Don't set bits beyond the size of a bool vector. - -2003-11-25 Kim F. Storm - - * print.c (Fredirect_debugging_output) [!GNU_LINUX]: Do not - define this defun on systems that cannot use stderr as lvalue. - -2003-11-24 Gerd Moellmann - - * s/freebsd.h (LD_SWITCH_SYSTEM_TEMACS) - [__FreeBSD_version >= 500042]: Define as -znocombreloc because - ld's default is incompatible with unexec. - -2003-11-23 Kim F. Storm - - * window.c (enum window_loop): Add REDISPLAY_BUFFER_WINDOWS. - (window_loop): Handle REDISPLAY_BUFFER_WINDOWS. - (Fforce_window_update): New defun. - (syms_of_window): Defsubr it. - (Fset_window_margins, Fset_window_fringes): Doc fix. - - * print.c (Fredirect_debugging_output): New defun. - (syms_of_print): Defsubr it. - -2003-11-22 Luc Teirlinck - - * fns.c (Fset_char_table_parent): Doc fix. - -2003-11-22 Kim F. Storm - - * dispnew.c (buffer_posn_from_coords): Return actual row/column - for glyph clicked on, rather than (unused) pixel positions. - (mode_line_string, marginal_area_string): Change X and Y args to - pointers for returning actual row/column for glyph clicked on. - Simplify and optimize loops. - - * dispextern.h (mode_line_string, marginal_area_string): - Update prototypes. - - * keyboard.c (make_lispy_position): New function for generating - mouse click positions from frame and pixel coordinates. - Enhanced to return buffer position and actual row/column for - events outside the text area using updated mode_line_string and - marginal_area_string functions. - Return left-fringe and right-fringe clicks as such, rather than - clicks in text area. - (make_lispy_event) [USE_X_TOOLKIT, USE_GTK]: Don't call - pixel_to_glyph_coords, as we never use the results. - (make_lispy_event): Use make_lispy_position for MOUSE_CLICK_EVENT, - WHEEL_EVENT, and DRAG_N_DROP_EVENT to replace redundant code. - Eliminate unused code in WHEEL_EVENT handling. - (make_lispy_movement): Use make_lispy_position. - - * window.c (coordinates_in_window): Remove redundant tests. - Fix returned X pixel value for left-margin. - - * xdisp.c (note_mode_line_or_margin_highlight): Adapt to new - mode_line_string and marginal_area_string parameters. - -2003-11-22 Lars Hansen - - * w32.c (struct the_group, getgrgid): Add. - * mac.c (struct my_group, getgrgid): Add. - -2003-11-21 Luc Teirlinck - - * fns.c (Fassq, Fassoc, Frassq, Frassoc): Doc fixes. - -2003-11-21 Lars Hansen - - * dired.c (Ffile_attributes): Add parameter ID-FORMAT and - include in call to file name handler. Optionally translate numeric - UID and GID to strings. Update docstring. - (directory_files_internal): Add parameter ID-FORMAT. - (Fdirectory_files_and_attributes): Add parameter ID-FORMAT and - include in call to file name handler and call to - directory_files_internal. Update Docstring. - (Fdirectory_files): Add dummy parameter in call to - directory_files_internal. - * lisp.h (Qinteger): Add. - (Qinteger_or_floatp, Qinteger_or_float_or_marker_p): Remove. - (Ffile_attributes): Add parameter. - * data.c (Qinteger): Export. - -2003-11-21 Luc Teirlinck - - * fns.c (Freverse, Fnreverse): Doc fixes. - -2003-11-19 Kim F. Storm - - * xdisp.c (init_iterator): Initialize it->start to position - before reseating (in case start position is invisible). - (init_to_row_start): Set it->start to row-start. - (redisplay_window): Accept optional_new_start if start position - is invisible (in which case IT_CHARPOS overshoots PT). - (display_line): Setup row->start from it->start (rather than - it->current which is wrong if first char on line is invisible). - When done, reseat it->start to it->current (= start of next row). - (expose_area): Fix exposure of text area when first char (e.g. TAB) - is only partially visible. - - * dispextern.h (struct it): New member start. - -2003-11-17 Stefan Monnier - - * alloc.c (make_float, Fcons): Clear the markbit at init time. - (make_float, Fcons, Fmake_symbol, allocate_misc): Move the increment - of block_index outside of the macro call. - (Fgarbage_collect): Remove null code. - - * m/amdx86-64.h: Don't redefine XPNTR. - - * keyboard.c (parse_modifiers, apply_modifiers): Use INTMASK instead - of VALMASK. - - * fns.c (hashfn_eq, hashfn_eql, hashfn_equal, hash_put) - (sxhash_string, sxhash): Use INTMASK instead of VALMASK. - (maybe_resize_hash_table): Use MOST_POSITIVE_FIXNUM. - - * lisp.h (VALMASK): Only define for non-union type. - (MARKBIT): Remove. - (ARRAY_MARK_FLAG): Use previous value of MARKBIT. - (XTYPE): Define unconditionally. - (XSETTYPE): Remove one more remnant. - (EQ): Define differently for the union and non-union cases. - (INTMASK): New bit mask. - (struct Lisp_Marker): Move down to prepare for upcoming patch. - (GC_EQ): Delegate to EQ. - - * coding.c (coding_restore_composition): Lisp_Object/int mixup. - -2003-11-17 Jan Dj,Ad(Brv - - * xterm.c (x_window_to_scroll_bar): Move check of display to - where window_id is compared. - -2003-11-17 Kim F. Storm - - * dispextern.h (struct it): New member first_vpos. - - * xdisp.c (start_display): Set it->first_vpos. - (try_window_id): Use first_vpos to start display in first _text_ - line if no reusable lines at start of window with header line. - -2003-11-16 Jan Dj,Ad(Brv - - * w32fns.c (XPutPixel): - * w32bdf.c (w32_init_bdf_font): - * sunfns.c (sel_read): - * process.c (Fmake_network_process): - * frame.c (store_frame_param): - * fontset.c (Fset_fontset_font): - * emacs.c (shut_down_emacs): - * ccl.c (ccl_driver): Remove period at end of error message. - - * config.in: Regenerate. - - * xfns.c (x_window_to_frame, x_any_window_to_frame) - (x_non_menubar_window_to_frame, x_menubar_window_to_frame) - (x_top_window_to_frame): Add Display* argument to xg_win_to_widget. - (x_create_bitmap_mask, xg_set_icon, create_frame_xic) - (xic_set_statusarea, x_window, gif_load): Formatting adjustments. - - * xterm.h (struct x_display_info): New field xg_cursor for GTK. - - * xterm.c: Add Display * to x_window_to_scroll_bar declaration. - (XTmouse_position, handle_one_xevent): Pass Display* to - x_window_to_scroll_bar. - (x_window_to_scroll_bar): Take a Display* argument. - Check that display for frame is equal to Display* argument. - (event_handler_gdk): Remove current_dpyinfo. Get dpyinfo from - x_display_info_for_display instead. Use Display in xev instead - of GDK_DISPLAY. - (x_dispatch_event): Call x_display_info_for_display. - (XTread_socket): Move GTK part out of loop. current_dpyinfo removed. - (x_connection_closed): Call xg_display_close for GTK. - (x_term_init): Call xg_display_open for additional displays. - Initiate dpyinfo->xg_cursor with call to xg_create_default_cursor - for GTK. - - * xmenu.c (single_menu_item, mouse_position_for_popup) - (x_activate_menubar): Formatting adjustments. - - * xdisp.c (update_tool_bar, redisplay_tool_bar): Formatting - adjustments. - - * gtkutil.c (xg_get_gdk_display, xg_set_screen, xg_display_open) - (xg_display_close, xg_create_default_cursor) - (xg_get_gdk_pixmap_and_mask): New functions for multiple display - handling. - (xg_left_ptr_cursor): Remove. - (xg_set_cursor): Change cursor to GdkCursor*. Do not create - cursor here. - (xg_win_to_widget): Take Display* argument, call - gdk_xid_table_lookup_for_display. - (xg_create_frame_widgets, xg_get_file_name, create_menus) - (xg_create_widget, xg_modify_menubar_widgets): Call xg_set_screen. - (xg_create_widget, xg_create_scroll_bar): Use xg_cursor - in FRAME_X_DISPLAY_INFO. - (xg_get_scroll_id_for_window): Take Display* argument. - (update_frame_tool_bar): Call xg_get_gdk_pixmap_and_mask. - (xg_initialize): Remove xg_left_ptr_cursor. - - * gtkutil.h (xg_get_scroll_id_for_window, xg_win_to_widget): Add - Display* argument. - (xg_display_open, xg_display_close, xg_create_default_cursor): Declare. - -2003-11-14 Jan Dj,Ad(Brv - - * xterm.c (x_detect_focus_change): Do not change focus frame for - Enter/LeaveNotify if the current focus frame has explicit focus. - -2003-11-14 Kim F. Storm - - * dispnew.c (update_text_area): Fix redisplay error when hscroll - is active and first glyph is only partially visible. - -2003-11-13 Kenichi Handa - - * xdisp.c (select_frame_for_redisplay): New function. - (redisplay_internal): Record also selected_frame for - unwind_redisplay. Call select_frame_for_redisplay before - redrawing each frame. - (unwind_redisplay): Argument changed to a cons. - -2003-11-12 Luc Teirlinck - - * fns.c (Fstring_to_multibyte): Doc fix. - -2003-11-11 Kenichi Handa - - * xterm.c (x_list_fonts): Fix excluding of auto-scaled fonts. - -2003-11-09 Jan Dj,Ad(Brv - - * xfns.c (x_window): Set XtNx and XtNy in shell widget for - program specified positions. - -2003-11-08 Jan Dj,Ad(Brv - - * xterm.c (XAW_ARROW_SCROLLBARS): Define it for Xaw 1.5E. - -2003-11-08 Kenichi Handa - - * Makefile.in (lisp): Add kannada.el. - (shortlisp): Likewise. - -2003-11-07 Kenichi Handa - - * coding.c (coding_allocate_composition_data): - Reset coding->composing to COMPOSITION_NO. - (coding_restore_composition): Detect invalid composition data. - Give Fstring and Fvector a Lispy integer, not C int. - -2003-11-05 Stefan Monnier - - * floatfns.c (Flogb): Don't use VALMASK. - - * m/amdx86-64.h (VALBITS, XINT, XUINT): Remove. - * m/ia64.h (VALBITS, XINT, XUINT): Remove. - - * lisp.h (XINT): Move the cast to clarify what is going on. - (GCTYPEMASK, XSETTYPE): Remove. - (XGCTYPE): Make it an alias of XTYPE. - -2003-11-03 Jan Dj,Ad(Brv - - * xterm.c (x_term_init): Fix formatting. - -2003-11-02 Jan Dj,Ad(Brv - - * gtkutil.h (xg_have_tear_offs): Declare. - (xg_keep_popup, xg_did_tearoff): Remove. - - * gtkutil.c: Remove variable xg_did_tearoff. - (xg_have_tear_offs): New function. - (tearoff_remove): Just decrease xg_detached_menus. - (tearoff_activate): Increase xg_detached_menus and call - tearoff_remove when tearoff is removed. - (xg_keep_popup): Remove function. - (create_menus): Give add_tearoff_p as argument to recursive - call to create_menus. - (xg_create_widget): Use variables instead of multiple - strcmp. Tell create_menus to create tear off only for - menu bar menus. - (xg_update_menubar): Change title for a detached menu also. - (xg_modify_menubar_widgets): Always call xg_update_menubar, regardless - of deep_p. - (xg_initialize): Initialize xg_detached_menus, remove - initialization of xg_did_tearoff. - - * xmenu.c (set_frame_menubar): For GTK, set deep_p if - xg_have_tear_offs returns non-zero. - (create_and_show_popup_menu): Remove setting of xg_did_tearoff and - call to xg_keep_popup. - -2003-11-01 Andrew Choi - - * macterm.c (XTread_socket): Handle menubar selection and grow - window only for mouseDown events. - -2003-10-31 Jan Dj,Ad(Brv - - * xterm.c (x_term_init): For GTK part, increase x_initialized - to check for more than one display. Use error instead of return 0. - -2003-10-31 Andrew Choi - - * unexmacosx.c (unrelocate): New function (contributed by Nozomu Ando). - (copy_dysymtab): Call it. - -2003-10-31 Luc Teirlinck - - * eval.c (Fdefvaralias): Doc fix. - -2003-10-26 Luc Teirlinck - - * data.c (Fsetplist): Doc fix. - -2003-10-14 Lute Kamstra - - * window.c (Fset_window_fringes): Clarify docstring. - -2003-10-14 Kim F. Storm - - * window.c (Fset_window_margins): Simplify arg checking. - -2003-10-13 Richard M. Stallman - - * regex.c (MAX_BUF_SIZE): Reduce to 2**15. - (print_partial_compiled_pattern): Replace assert with a printout. - (skip_noops, mutually_exclusive_p): Change args, values to re_char *. - - * alloc.c (lisp_align_malloc): If BASE is 0, call memory_full. - - * window.c (Fset_window_margins): Allow only integers as args. - (syms_of_window) : Doc fixes. - -2003-10-13 Lute Kamstra - - * window.c (Fset_window_fringes): Elaborate docstring. - -2003-10-12 Andrew Choi - - * macterm.c (XTread_socket): Call DragWindow only for mouseDown events. - - * s/darwin.h (GC_MARK_STACK): Define. - -2003-10-12 Jan Dj,Ad(Brv - - * window.c (shrink_windows): New function. - (size_window): Call shrink_windows to calculate window sizes when - shrinking frame with more than one window. - -2003-10-12 Kim F. Storm - - * xdisp.c (compute_fringe_widths): Doc fix. - -2003-10-08 Kenichi Handa - - * coding.c (Fcoding_system_p): Return t for auto-loading coding system. - -2003-10-07 Kenichi Handa - - * coding.c (Qcoding_system_define_form): New variable. - (syms_of_coding): Intern and staticpro it. - (Fcheck_coding_system): Try to autoload the definition of - CODING-SYSTEM. - -2003-10-05 Luc Teirlinck - - * fns.c (Frequire): Doc fix. - -2003-10-05 Jan Dj,Ad(Brv - - * xfns.c (Fx_send_client_event): New function as a base for - manipulating extended window manager hints. - (Fx_send_client_event): Remove unused variable s. - - * w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move, - that function is removed. - - * xterm.c (x_set_offset): Use move_offset_left/top instead of - x/y_pixels_outer_diff. - (x_check_expected_move): Calculate move_offset_left/top. - - * xterm.h (struct x_output): New members: move_offset_top/left. - - * frame.c (x_set_frame_parameters): Remove x_fullscreen_move, - call x_set_offset directly. - - * frame.h (enum): FULLSCREEN_MOVE_WAIT removed. - - * frame.c (Fdelete_frame): Free decode_mode_spec_buffer. - - * xterm.c (x_delete_display): Free font names and font_encoder - in dpyinfo->font_table. - - * xfns.c (Fx_close_connection): Only call XFreeFont here. - Move xfree of font names to x_delete_display. - - * xterm.h (struct x_display_info): New member, wm_type. - (struct x_output): New members, expected_top/left and - check_expected_move. - - * xterm.c (handle_one_xevent): Reset wm_type when ReparentNotify - is received. - (handle_one_xevent): Rename x_check_expected_move from - x_check_fullscreen_move. - (x_set_offset): Only add WM decoration sizes to modified_top/left - for X_WMTYPE_A. Set check_expected_move when WM type is unknown. - (x_check_expected_move): Rename from x_check_fullscreen_move. - Removed fullscreen specific code. Use check_expected_move, - expected_left/top instead. Also, set wm_type. - (x_term_init): Initialize wm_type to unknown. - - * frame.c (x_fullscreen_move): Remove addition of WM decoration - sizes to move_x/y. - -2003-10-03 Kenichi Handa - - * macterm.c (x_load_font): Clear all members of FONTP before start - filling them. - -2003-10-02 Kenichi Handa - - * fontset.c (fs_load_font): Don't set fontp->font_encoder to NULL - before calling find_ccl_program_func. Call find_ccl_program_func - only when fontp->font_encoder is not NULL. - - * xterm.c (x_load_font): Clear all members of FONTP before start - filling them. - -2003-10-03 John Paul Wallington - - * keymap.c (map_keymap): Don't abort when binding is a vector. - -2003-10-02 Jason Rumney - - * makefile.w32-in (emacs.o, coding.o, bytecode.o): - Sync dependencies with Makefile.in. - (alloca.o): Remove. - - * w32fns.c (w32_load_system_font): Clear all members of FONTP before - filling them. - - * w32bdf.c (w32_load_bdf_font): Likewise. - -2003-09-30 Richard M. Stallman - - * term.c (set_tty_color_mode): Calculate current_mode_spec - regardless of value of VAL. - - * intervals.c (graft_intervals_into_buffer): - Set BUF_INTERVALS (buffer)->up_obj when appropriate. - Handle over_used when splitting UNDER. - -2003-09-30 YAMAMOTO Mitsuharu - - * regex.c (regex_compile): Free the stack when returning from function. - -2003-09-28 Kenichi Handa - - * fontset.c (Finternal_char_font): Change return value to - cons (FONT-NAME . GLYPH-CODE). - -2003-09-28 Eli Zaretskii - - * term.c (tty_setup_colors): Treat any negative argument as -1. - -2003-09-27 Gaute B Strokkenes (tiny change) - - * process.c (send_process): Delete unused temp_buf. - -2003-09-26 Dave Love - - * xterm.c (x_bitmap_mask): Declare. - -2003-09-25 Dave Love - - * Makefile.in (fns.o): Depend on md5.h. - -2003-09-25 Kim F. Storm - - * window.c (set_window_buffer): Fix redisplay problems when - switching between buffers with different display margin widths. - -2003-09-23 Kim F. Storm - - * process.c (set_socket_option): Fix :bindtodevice option. - (Fset_network_process_option): Update process contact list when - setting option succeeds. - (Fmake_network_process): Doc fix. - -2003-09-23 Dave Love - - * process.c (Fnetwork_interface_info): Use HAVE_STRUCT_IFREQ... macros. - -2003-09-22 Eli Zaretskii - - * term.c (set_tty_color_mode): Use INTEGERP to test whether a - color mode is an integer number (it could be -1). - -2003-09-22 Richard M. Stallman - - * intervals.c (graft_intervals_into_buffer): Correct the main loop - in the case where OVER is longer than UNDER. - -2003-09-22 Masatake YAMATO - - * window.c (Fset_window_scroll_bars): Validate the value of - `vertical_type'. - -2003-09-21 Kim F. Storm - - * frame.c (Vdefault_frame_scroll_bars): New variable. - (x_set_vertical_scroll_bars): Use it instead of hardcoded values. - (syms_of_frame): DEFVAR_LISP it, and initialize according to - window-system default scroll bar position. - - * window.c (Fwindow_scroll_bars): Doc fix. - -2003-09-19 Jan Dj,Ad(Brv - - * xterm.c (x_set_offset): Take window manager decorations into account. - -2003-09-19 Richard M. Stallman - - * atimer.h: Don't include lisp.h. - (P_): Define it here (as well as elsewhere). - - * print.c (Fprin1_to_string): Move the PRINTPREPARE - later, so that PRINTFINISH won't unbind Qinhibit_modification_hooks. - - * data.c (Fvariable_binding_locus): New function. - (syms_of_data): defsubr it. - (Flocal_variable_p): Delete duplicate call to indirect_variable. - -2003-09-18 Dave Love - - * alloc.c (GC_MALLOC_CHECK): Move conditional undef after lisp.h. - - * process.c (Fnetwork_interface_info): Fix type error. - (Fnetwork_interface_list): Doc fix. - (read_process_output, read_process_output): Delete unused var. - -2003-09-17 Kim F. Storm - - * process.c (Fnetwork_interface_list, Fnetwork_interface_info): - Require HAVE_NET_IF_H and HAVE_SYS_IOCTL_H to include these fns. - (Fnetwork_interface_info): Check that ifreq struct has required - fields before accessing them; this requires that those fields are - defined as macros, which may be too restrictive on some platforms, - but it is better than failing on other platforms. - (syms_of_process): Only defsubr above fns when included. - -2003-09-17 Dave Love - - * unexalpha.c: Don't include varargs.h. - -2003-09-17 Kim F. Storm - - * process.c (Fset_process_sentinel): Add sentinel to childp plist - for network process. - (socket_options): Add `:' prefix to option names. Add optbit field. - (set_socket_option): Remove no_error arg and special handling of s < 0. - Return 1< - - * Makefile.in: Depend on coding.h. - -2003-09-14 Kim F. Storm - - * process.c [HAVE_SOCKETS]: Include sys/ioctl.h and net/if.h. - (Fnetwork_interface_list, Fget_network_interface_info): New defuns. - (syms_of_process): Defsubr them. - - * config.in: Regenerate. - -2003-09-12 Stefan Monnier - - * m/sr2k.h (XMARKBIT, XUNMARK): Remove. - * m/news-r6.h (XUNMARK): Remove. - * m/mips.h (XUNMARK): Remove. - * m/mips-siemens.h (XUNMARK): Remove. - * m/iris4d.h (XUNMARK): Remove. - * m/hp800.h (XMARKBIT, XUNMARK): Remove. - -2003-09-11 Stefan Monnier - - * lisp.h (VALBITS): Don't remove 1 for the markbit. - (union Lisp_Object): Use unsigned int for types. Remove markbit. - (MARKBIT): Remove 1 from VALBITS so we still use same old val. - (XTYPE): Use unsigned right-shift. - (XMARKBIT, XMARK, XUNMARK): Remove. - - * alloc.c (init_intervals, init_symbol, init_marker): - Don't preallocate anything. - (Fgarbage_collect, mark_object): Ignore the markbit. - - * bytecode.c (mark_byte_stack, unmark_byte_stack): Ignore the markbit. - -2003-09-08 Lute Kamstra - - * xdisp.c (pint2hrstr): New function. - (decode_mode_spec): Add `%i' and `%I' specs. - * buffer.c (syms_of_buffer): Document `%i' and `%I' constructs - for `mode-line-format'. - -2003-09-07 Andreas Schwab - - * alloc.c: Use long instead of int when casting ABLOCKS_BUSY to - avoid warning. - -2003-09-07 Eli Zaretskii - - * editfns.c (region_limit): Support any non-zero value of BEGINNINGP. - -2003-09-03 Kim F. Storm - - * xdisp.c (get_window_cursor_type): Partially undo 2002-03-01 - change (superseded by 2002-08-30 change); the default blink-off - cursor is now again "no cursor". - -2003-09-01 Jason Rumney - - * makefile.w32-in (alloca.o): Remove. - (coding.o): Depend on intervals.h - (emacs.o, bytecode.o): Depend on window.h - -2003-09-01 Dave Love - - * Makefile.in (alloca.o): Remove commands. - (coding.o): Depend on intervals.h composite.h window.h. - (emacs.o): Depend on window.h keyboard.h keymap.h. - (gtkutil.o): Depend on keyboard.h charset.h coding.h. - (bytecode.o): Depend on window.h. - -2003-08-31 Jason Rumney - - * w32term.c (w32_per_char_metric): Allow cached metrics to be - returned even when font_type is unknown. - - * xdisp.c (init_iterator): Remove old WINDOWSNT conditional. - -2003-08-30 Jan Dj,Ad(Brv - - * xterm.c (x_term_init): Initialize new fields in x_display_info. - - * xterm.h (struct x_display_info): Add red/green/blue_bits and - *_offset. - - * xfns.c (lookup_rgb_color): Use new fields in x_display_info to - calculate pixel value. - -2003-08-29 Gerd Moellmann - - * xdisp.c (redisplay_internal): Fix change of 2003-04-30. - Don't tell redisplay display is accurate when it's actually been - paused for pending input. - -2003-08-29 Richard M. Stallman - - * dispnew.c (adjust_glyph_matrix): Call window_box - whenever W is nonzero. - - * data.c (Fmake_variable_buffer_local, Fmake_local_variable) - (Fkill_local_variable, Fmake_variable_frame_local) - (Flocal_variable_p, Flocal_variable_if_set_p): - Use indirect_variable to trace thru variable aliases. - - * config.in: Updated. - - * callint.c (Fcall_interactively): Save and restore - Vthis_command, Vthis_original_command, real_this_command, - and current_kboard->Vlast_command. - - * abbrev.c (Fexpand_abbrev): Insert before deleting. - -2003-08-29 Gerd Moellmann - - * xfns.c (lookup_rgb_color): Handle TrueColor visuals specially. - -2003-08-28 David Abrahams (tiny change) - - * coding.c (decode_coding_iso2022): Initialize local variable c2. - (decode_coding_sjis_big5): Likewise. - -2003-08-27 Jason Rumney - - * w32.c (sys_pipe): Protect against file descriptor overflow. - - * w32fns.c (syms_of_w32fns): Remove non-existent functions. - - * w32term.c (w32_read_socket): Fix WM_MOUSEWHEEL assignment. - -2003-08-26 Terje Rosten - - * xfns.c (Vgtk_version_string): New variable. - (syms_of_xfns): DEFVAR_LISP it. Provide gtk. - -2003-08-24 Eli Zaretskii - - * term.c (term_init): Remove `const' from buffer_size's declaration. - - * Makefile.in (msdos.o): Depend on intervals.h. - - * msdos.c: Include intervals.h, since STRING_INTERVALS requires that. - -2003-08-21 Jan Dj,Ad(Brv - - * xterm.h (struct x_display_info): New fields: client_leader_window - and Xatom_wm_client_leader. - - * xterm.c (x_initialize): Move call to x_session_initialize to ... - (x_term_init): ... here. Initialize client_leader fields in dpyinfo. - - * xsmfns.c (create_client_leader_window): New function. - (x_session_initialize): Call create_client_leader_window, take - dpyinfo as argument. - - * xfns.c (Fx_create_frame): Set property WM_CLIENT_LEADER. - - * Makefile.in (xsmfns.o): Add more depenedencies. - -2003-08-21 Dave Love - - * m/iris4d.h: Use _MIPS_SZLONG, not _LP64. - -2003-08-21 Kenichi Handa - - * term.c (term_init): Fix previous change; don't rely on the - length of `buffer' if TERMINFO is defined. - -2003-08-20 Dave Love - - * atimer.h: Include lisp.h. - - * lisp.h (EMACS_LISP_H): New. - (popup_activated_flag): Don't declare. - - * alloca.c: Some merging with gnulib. Change logic and doc - concerning (x)malloc/(x)free -- no longer Emacs-specific. - [DO_BLOCK_INPUT]: Don't include lisp.h. - (xmalloc, xfree): Declare. - (malloc): Don't declare. - - * Makefile.in (LWLIB_OPTIONS): Remove (unused). - (alloca.o): Remove obsolete stuff concerning alloca.s. Depend on - atimer.h, blockinput.h. - - * alloc.c (lisp_align_malloc): Change type of `aligned'. - - * alloca.s: Remove. - -2003-08-19 Gerd Moellmann - - * s/freebsd.h [__FreeBSD_version >= 400000]: Define TERMINFO, - use -lncurses. - - * term.c (term_init): Use a buffer of size 4096 for tgetent since - FreeBSD returns something longer than 2044. Abort if the end of - the buffer is overwritten. - -2003-08-19 Miles Bader - - * xterm.c (x_term_init): Correctly use result of Ffile_readable_p. - -2003-08-19 Gerd Moellmann - - * alloc.c (lisp_align_malloc): Check for memory full when - allocating ablocks, which also avoids freeing a pointer into an - ablocks structure. - - * puresize.h (BASE_PURESIZE): Increase to 1100000. - - * buffer.c (Fmove_overlay): Set overlay's next pointer unconditionally. - -2003-08-16 Richard M. Stallman - - * editfns.c (Fencode_time): Doc fix. - -2003-08-16 David Ponce - - * fileio.c (Fwrite_region): Fix conditional expression to issue - the right message. - -2003-08-16 Juri Linkov - - * syntax.c (Fforward_word): Argument changed to optional. - Set default value to 1. - -2003-08-15 Kenichi Handa - - * xfaces.c (better_font_p): Prefer a real scalable font; i.e. not - what autoscaled. - (best_matching_font): Once we find a better scalable font, set - non_scalable_has_exact_height_p to 1. - (try_font_list): Call try_alternative_families to try any family - with the given registry. - -2003-08-09 Andreas Schwab - - * alloc.c (mark_object): Handle Lisp_Misc_Save_Value. - - * print.c (print_string): Fix printing of multibyte string with - nontrivial printcharfun. - -2003-07-31 Jan Dj,Ad(Brv - - * xfns.c (xg_set_icon): Rewrite to compile with GTK 2.0 and 2.2. - - * xterm.c (x_bitmap_icon): Return if xg_set_icon succeeds. - -2003-07-31 Kenichi Handa - - * process.c (read_process_output): Return the actually read bytes - instead of the result of decoding. - -2003-07-31 Kenichi Handa - - * xterm.h (struct x_bitmap_record): New member have_mask. - - * xfns.c (x_create_bitmap_from_data): Initialize have_mask member - to 0. - (x_create_bitmap_from_file): Likewise. - (x_destroy_bitmap): Check have_mask member before freeing a mask. - (x_destroy_all_bitmaps): Likewise. - (x_create_bitmap_mask): Set have_mask member to 1. - -2003-07-30 Richard M. Stallman - - * Makefile.in (CFLAGS) [!OPTIMIZE]: Undo previous change. - -2003-07-29 Jan Dj,Ad(Brv - - * gtkutil.c (xg_mark_data): Update calls to mark_object. - -2003-07-29 Richard M. Stallman - - * xterm.c (xim_open_dpy, xim_initialize, xim_close_dpy): - Conditionalize XIM code on HAVE_XIM. - - * fns.c (Fclear_string): New function. - (syms_of_fns): defsubr it. - -2003-07-28 KOBAYASHI Yasuhiro - - * xfns.c (xic_set_preeditarea): Add the left fringe width to spot.x. - -2003-07-22 Stefan Monnier - - * xfns.c: Don't check HAVE_PNG_H: autoconf doesn't seem to find it. - - * buffer.c (delete_all_overlays): New function. - * buffer.h (delete_all_overlays): Declare. - * coding.c (run_pre_post_conversion_on_str): - * print.c (temp_output_buffer_setup): - * fileio.c (Finsert_file_contents): - * minibuf.c (get_minibuffer): Use it. - -2003-07-22 Andrew Choi - - * unexmacosx.c (unexec_regions_sort_compare): - (unexec_regions_merge): New functions. Sort and merge unexec - regions before dumping them. - -2003-07-22 Dave Love - - * xfns.c [HAVE_PNG]: Consider both png.h and libpng/png.h. - -2003-07-21 Stefan Monnier - - * alloc.c (MARK_STRING, UNMARK_STRING, STRING_MARKED_P) - (GC_STRING_CHARS, string_bytes): Use ARRAY_MARK_FLAG rather than - MARKBIT as the gcmarkbit for strings. - -2003-07-21 Richard M. Stallman - - * s/openbsd.h (LD_SWITCH_SYSTEM_TEMACS): Add undef. - - * fns.c (Flocale_info): Rename from Flanginfo. Doc fixes. - (syms_of_fns): Corresponding change. - - * alloc.c (syms_of_alloc): Doc fixes. - -2003-07-20 Han Boetes (tiny change) - - * s/netbsd.h: Use -Wl syntax. - -2003-07-17 Richard M. Stallman - - * xterm.c (xim_initialize): Redo 6/24 change. - -2003-07-15 Stefan Monnier - - * buffer.c (copy_overlays): Use EMACS_INT for positions. - (Fswitch_to_buffer): Don't signal an error when switching to the same - buffer in a dedicated window. - - * alloc.c: Use bitmaps for cons, as was done for floats. - (init_float, init_cons): Let the normal code allocate the first block. - (CONS_BLOCK_SIZE): Redefine based on BLOCK_BYTES and bitmap size. - (CONS_BLOCK, CONS_INDEX, CONS_MARKED_P, CONS_MARK, CONS_UNMARK): - New macros. - (struct cons_block): Move conses to the beginning. Add gcmarkbits. - (Fcons): Use lisp_align_malloc and CONS_UNMARK. - (live_cons_p): Check the pointer is not past the `conses' array. - (mark_maybe_object, mark_maybe_pointer): Use CONS_MARKED_P. - (mark_object, mark_buffer): Use CONS_MARKED_P and CONS_MARK. - (survives_gc_p): Use CONS_MARKED_P and simplify. - (gc_sweep): Use CONS_MARKED_P, CONS_UNMARK, and lisp_align_free. - -2003-07-13 Paul Eggert - - GCC 3.3 (sparc) no longer puts "int foo = 0;" into data; it - puts it into BSS instead, at least on Solaris 8 and 9. - This is a valid optimization, and it may occur on other platforms, - so Emacs should not assume that initializing a static variable to - zero puts it into data. - * alloc.c (pure, staticvec): - Initialize these arrays to nonzero, so that they're not - put into BSS by that optimization. - -2003-07-13 Stefan Monnier - - * alloc.c (BLOCK_PADDING): Rename from ABLOCKS_PADDING. Update users. - (lisp_align_malloc): Use posix_memalign is available. - (ABLOCKS_BASE): Use HAVE_POSIX_MEMALIGN as an optimization. - (STRING_BLOCK_SIZE): Rename from STRINGS_IN_STRING_BLOCK - for consistency. Update users. - -2003-07-13 Richard M. Stallman - - * s/netbsd.h (START_FILES_1, END_FILES_1): Always define them. - -2003-07-13 Terje Rosten - - * xterm.c (x_bitmap_icon, x_wm_set_icon_pixmap): Modify to add mask, - and use the Gtk+ function gtk_window_icon_from_file if available. - - * xfns.c (x_bitmap_mask, x_create_bitmap_mask): New functions to - handle mask of bitmaps. - (x_allocate_bitmap_record, x_destroy_bitmap): Modify to handle the - mask property. - (xg_set_icon): New function, wrapper for gtk_window_icon_from_file. - - * xterm.h (xg_set_icon): New function. - -2003-07-12 Paul Eggert - - * unexelf.c (unexec): Consider a section to precede the .bss - section if its addresses overlap that of .bss. - -2003-07-12 Richard M. Stallman - - * Makefile.in (CFLAGS) [!OPTIMIZE]: Set CFLAGS to -g. - - * config.in (HAVE_CRTIN): Add #undef. - (INLINE): Really inline only if OPTIMIZE is defined. - - * s/netbsd.h (START_FILES, LIB_STANDARD): Use START_FILES_1, - END_FILES_1. - (START_FILES_1, END_FILES_1): New macros (conditional). - (LD_SWITCH_SYSTEM_TEMACS): Define. - - * s/openbsd.h: Don't include bsd4-3.h. - (TERMINFO): Define. - (LIBS_TERMCAP): Define. - (LD_SWITCH_SYSTEM): Define (two definitions). - - * xfns.c: Include libpng/png.h instead of png.h. - -2003-07-11 Andreas Schwab - - * buffer.c (modify_overlay): Update prototype. - * lisp.h (adjust_overlays_for_insert, adjust_overlays_for_delete): - Likewise. - -2003-07-09 Stefan Monnier - - * lisp.h (VALBITS): Define in terms of GCTYPEBITS. - (struct interval): Move to intervals.h. - (struct Lisp_Marker): Use EMACS_INT for position info. - (forward_point): Remove prototype of defunct function. - (Qmodification_hooks, Qrear_nonsticky, Fnext_property_change) - (Fget_text_property, Fset_text_properties, Ftext_propertes_not_all) - (syms_of_textprop, set_text_properties): Remove prototypes that are - already in intervals.h. - - * intervals.h (struct interval): Move from lisp.h. - Use EMACS_INT for position and size info. - - * coding.c: Include intervals.h for Fset_text_properties. - - * buffer.h (struct buffer_text, struct buffer): Use EMACS_INT for - position and length information. - -2003-07-09 Stefan Monnier - - * buffer.h (struct buffer_text, struct buffer): Use EMACS_INT for - position and length information. - -2003-07-09 Stefan Monnier - - Change overlays_after and overlays_before so the overlays themselves - are linked into lists, rather than using cons cells. After all each - Lisp_Misc already occupies 5 words, so we can add a `next' field to - Lisp_Overlay for free and save up one cons cell per overlay (not - to mention one indirection when traversing the list of overlay). - - * lisp.h (struct Lisp_Overlay): New field `next'. - - * buffer.h (struct buffer): Change overlays_before and overlays_after - from Lisp lists of overlays to pointers to overlays. - - * buffer.c (overlay_strings, recenter_overlay_lists): - Fix typo in eassert in last commit. - (unchain_overlay): New function. - (add_overlay_mod_hooklist): Use AREF. - (copy_overlays, reset_buffer, overlays_at, overlays_in) - (overlay_touches_p, overlay_strings, recenter_overlay_lists) - (fix_overlays_in_range, fix_overlays_before, Fmake_overlay) - (Fmove_overlay, Fdelete_overlay, Foverlay_lists) - (report_overlay_modification, evaporate_overlays, init_buffer_once): - Adjust to new type of overlays_(before|after). - - * alloc.c (mark_object): Mark the new `next' field of overlays. - (mark_buffer): Manually mark the overlays_(after|before) fields. - - * coding.c (run_pre_post_conversion_on_str): - * editfns.c (overlays_around): - * xdisp.c (load_overlay_strings): - * fileio.c (Finsert_file_contents): - * indent.c (current_column): - * insdel.c (signal_before_change, signal_after_change): - * intervals.c (set_point_both): - * print.c (temp_output_buffer_setup): Use new type for - overlays_(before|after). - -2003-07-08 Stefan Monnier - - * buffer.c (report_overlay_modification): Don't run hooks while - traversing the list of overlays. - - * buffer.h (struct buffer): Use an int for overlay_center. - (overlays_at, evaporate_overlays, recenter_overlay_lists) - (overlay_strings, fix_overlays_before): Use EMACS_INT for positions. - - * buffer.c (reset_buffer, recenter_overlay_lists) - (adjust_overlays_for_insert, adjust_overlays_for_delete) - (fix_overlays_in_range, Fmake_overlay, Fmove_overlay) - (evaporate_overlays, init_buffer_once): Update use of overlay_center. - (overlays_at, evaporate_overlays, recenter_overlay_lists) - (overlay_strings, fix_overlays_before): Use EMACS_INT for positions. - - * xdisp.c (fast_find_position): Remove unused var. - - * cmds.c (Qexpand_abbrev): New sym. - (syms_of_cmds): Initialize it. - (internal_self_insert): Use it to call expand-abbrev. - -2003-07-09 Kim F. Storm - - * xterm.c (use_xim) [!USE_XIM]: Default to disable XIM if Emacs - was configured with --without-xim. - (x_term_init) [!USE_XIM]: Use `useXIM' resource to turn on XIM. - -2003-07-07 Richard M. Stallman - - * xdisp.c (reseat_1): Set it->area to TEXT_AREA. - - * alloc.c (Fgarbage_collect): Doc fix. - -2003-07-07 Nozomu Ando - - * buffer.c (Fkill_buffer): Clear charpos cache if necessary. - -2003-07-06 Stefan Monnier - - * minibuf.c (read_minibuf): UNGCPRO before returning. - (Ftry_completion, Fall_completions): Doc fix. - - * alloc.c (live_float_p): Check that p is not past the `floats' array, - now that `floats' is not the last element of the struct any more. - -2003-07-06 Jason Rumney - - * w32term.h (ClipboardSequence_Proc): New type. - - * w32fns.c (clipboard_sequence_fn): New variable. - (globals_of_w32fns): Initialize it. - - * w32select.c (last_clipboard_sequence_number): New variable. - (Fw32_set_clipboard_data, Fw32_get_clipboard_data): Use sequence - number if possible. - -2003-07-06 Stefan Monnier - - * m/amdx86-64.h (MARKBIT): - * m/ia64.h (MARKBIT): Remove definition since lisp.h does not compare - MARKBIT and ARRAY_MARK_FLAG any more. - - * m/hp800.h (XSETMARKBIT): - * m/sr2k.h (XSETMARKBIT): - * lisp.h (XSETMARKBIT): Remove unused macro. - - * lisp.h (mark_object): Change prototype. - - * alloc.c (mark_object): Change arg *Lisp_Object -> Lisp_Object. - (last_marked): Change accordingly. - (mark_interval, mark_maybe_object, mark_maybe_pointer) - (Fgarbage_collect, mark_glyph_matrix, mark_face_cache, mark_image) - (mark_buffer): Update calls to mark_object. - - * bytecode.c (mark_byte_stack): - * fns.c (sweep_weak_table): - * keyboard.c (mark_kboards): Update calls to mark_object. - -2003-07-06 Jason Rumney - - * alloc.c (struct ablock): Only include padding when there is some. - -2003-07-04 Stefan Monnier - - * alloc.c (ALIGN): Add casts to simplify usage. - (BLOCK_ALIGN, BLOCK_BYTES, ABLOCKS_PADDING, ABLOCKS_SIZE) - (ABLOCKS_BYTES, ABLOCK_ABASE, ABLOCKS_BUSY, ABLOCKS_BASE): New macros. - (struct ablock, struct ablocks): New types. - (free_ablock): New global var. - (lisp_align_malloc, lisp_align_free): New functions. - (FLOAT_BLOCK_SIZE): Redefine in terms of BLOCK_BYTES. - (struct float_block): Reorder and add gcmarkbits. - (GETMARKBIT, SETMARKBIT, UNSETMARKBIT, FLOAT_BLOCK, FLOAT_INDEX) - (FLOAT_MARKED_P, FLOAT_MARK, FLOAT_UNMARK): New macros. - (init_float, make_float): Use lisp_align_malloc. - (free_float, live_float_p): Don't use `type' any more. - (make_float): Use FLOAT_UNMARK to access to mark bit. - (mark_maybe_object, mark_maybe_pointer, survives_gc_p): - Use FLOAT_MARKED_P to access the mark bit. - (pure_alloc): Simplify use of ALIGN. - (mark_object): Use FLOAT_MARK to access the mark bit. - (gc_sweep): Use new macros to access the float's mark bit. - (init_alloc_once): Init free_ablock. - - * lisp.h (struct Lisp_Float): Remove unused field `type'. - -2003-06-27 Stefan Monnier - - * alloc.c (VECTOR_MARK, VECTOR_UNMARK, VECTOR_MARKED_P): New macros. - (GC_STRING_BYTES): Don't mask markbit (it's only used on `size'). - (allocate_buffer): Move. - (string_bytes): Don't mask markbit of `size_byte'. - (mark_maybe_object, mark_maybe_pointer, Fgarbage_collect) - (mark_object, mark_buffer, survives_gc_p, gc_sweep): - Use the `size' field of buffers (rather than the `name' field) for - the mark bit, as is done for all other vectorlike objects. - Use the new macros to access the mark bit of vectorlike objects. - -2003-06-26 Richard M. Stallman - - * puresize.h (BASE_PURESIZE): Increment base size. - - * xdisp.c (fast_find_position): Enable Gerd's new definition. - - * xterm.c (xim_initialize): Undo previous change. - -2003-06-26 Stefan Monnier - - * alloc.c (survives_gc_p): Simplify. - - * buffer.c (set_buffer_internal_1): Test CONSP for lists. - - * window.c (Fset_window_dedicated_p): Simplify. - (display_buffer_1): Don't raise the win from which minibuf was entered. - (temp_output_buffer_show): Don't assume BEG == 1. Simplify. - (Fminibuffer_selected_window): Simplify. - - * buffer.h (struct buffer_text): Lisp_Object `markers' => Lisp_Marker. - - * lisp.h (unchain_marker): Lisp_Object arg => Lisp_Marker. - (struct Lisp_Marker): Lisp_Object `chain' => Lisp_Marker `next'. - - * insdel.c (check_markers, adjust_markers_for_delete) - (adjust_markers_for_insert, adjust_markers_for_replace) - (prepare_to_modify_buffer, RESTORE_VALUE): - * marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos) - (Fset_marker, set_marker_restricted, set_marker_both, unchain_marker) - (set_marker_restricted_both, Fbuffer_has_markers_at, count_markers): - * alloc.c (Fmake_marker, free_marker, gc_sweep): - * buffer.c (Fget_buffer_create, Fkill_buffer, Fset_buffer_multibyte): - * editfns.c (save_excursion_restore, transpose_markers): - * window.c (delete_window): - * xdisp.c (message_dolog): Update for new types. - -2003-06-26 Jan Dj,Ad(Brv - - * xfaces.c (set_font_frame_param): Set default_face_done_p to zero. - (realize_default_face): Use default_face_done_p for the force_p - argument to set_lface_from_font_name. Set default_face_done_p to one. - - * frame.c (make_frame): Initialize default_face_done_p. - - * frame.h (struct frame): Add default_face_done_p. - - * config.in: Add XRegisterIMInstantiateCallback_arg6 so it - will be defined. - -2003-06-25 Stefan Monnier - - * alloc.c (make_interval, Fmake_symbol, allocate_misc): - Initialize the new field `gcmarkbit'. - (mark_interval, MARK_INTERVAL_TREE): Use the new `gcmarkbit' field. - (mark_interval_tree): Don't mark the tree separately from the nodes. - (UNMARK_BALANCE_INTERVALS): Don't unmark the tree. - (mark_maybe_object, mark_maybe_pointer, Fgarbage_collect) - (mark_object, survives_gc_p, gc_sweep): Use new `gcmarkbit' fields. - - * lisp.h (struct interval, struct Lisp_Symbol, struct Lisp_Free) - (struct Lisp_Marker, struct Lisp_Intfwd, struct Lisp_Boolfwd) - (struct Lisp_Kboard_Objfwd, struct Lisp_Save_Value) - (struct Lisp_Buffer_Local_Value, struct Lisp_Overlay) - (struct Lisp_Objfwd, struct Lisp_Buffer_Objfwd): Add `gcmarkbit' field. - -2003-06-24 Dave Love - - * xterm.c (xim_initialize): Use XRegisterIMInstantiateCallback_arg6. - - * strftime.c: Test HAVE_SYS__MBSTATE_H, not __hpux. Merge changes - from gnulib. - -2003-06-21 Richard M. Stallman - - * fileio.c (Fwrite_region): Alternate messages - for append and partial write. - - * keyboard.c (read_key_sequence): When converting upcase fn key to - downcase, update fkey and keytran so `backspace' gets translated. - - * keyboard.c (read_avail_input): Don't signal SIGHUP in batch mode. - - * process.c (wait_reading_process_input): Don't signal SIGIO - in batch mode. - -2003-06-17 Kenichi Handa - - * Makefile.in (xselect.o): Don't depend on charset.h, coding.h, - composite.h. - - * xselect.c: Don't include charset.h, coding.h, composite.h. - (Qforeign_selection): New variable. - (syms_of_xselect): Intern and static it. - (selection_data_to_lisp_data): Return a unibyte string made from - data with `foreign-selection' text property. - -2003-06-15 Stefan Monnier - - * termhooks.h (EVENT_INIT): New macro. - - * keyboard.c (mark_kboards): Move from alloc.c. Mark kbd_buffer. - - * alloc.c (mark_kboards): Move to keyboard.c. - - * keyboard.c (record_asynch_buffer_change, read_avail_input): - * xterm.c (x_dispatch_event): - * xmenu.c (find_and_call_menu_selection): - * xdisp.c (handle_tool_bar_click): - * w32menu.c (menubar_selection_callback): - * sysdep.c (kbd_input_ast, read_input_waiting): - * msdos.c (dos_rawgetc): - * macterm.c (mac_check_for_quit_char): - * macmenu.c (menubar_selection_callback): - * gtkutil.c (xg_tool_bar_callback): Don't pass uninitialized - data to kbd_buffer_store_event. - -2003-06-15 Kim F. Storm - - * xdisp.c (x_fix_overlapping_area): Always use area relative X - to fix redisplay problem with tall characters (such as ,AC(B). - -2003-06-13 Kai Gro,A_(Bjohann - - * fileio.c (Fcopy_file): Doc fix: copies file modes, too. - -2003-06-12 Kenichi Handa - - * fileio.c (Fwrite_region): Save and restore restriction. - -2003-06-12 Dave Love - - * alloca.c (alloca): Declare arg as size_t. - - * sysdep.c: Remove redundant include of unistd.h, stdlib.h. - Use HAVE_DECL_SYS_SIGLIST, not SYS_SIGLIST_DECLARED. - -2003-06-11 Dave Love - - * search.c (shrink_regexp_cache): Use xrealloc. - (syms_of_search): Use xmalloc. - -2003-06-10 Kim F. Storm - - * xdisp.c (phys_cursor_in_rect_p): Fix 2003-05-24 change. - Adjust phys_cursor.x to be relative to window box, rather than - text area before checking -- to ensure cursor is redrawn when - exposing window. - Note: This also fixes a similar (older) bug if display margins - are present. - -2003-06-06 Kenichi Handa - - * coding.c (encoding_buffer_size): If coding->type is - coding_type_ccl, double magnification on CRLF encoding. - -2003-06-06 Jason Rumney - - * w32reg.c (SYSTEM_DEFAULT_RESOURCES): New constant. - (w32_get_string_resource): Try SYSTEM_DEFAULT_RESOURCES last. - - * xfaces.c (Finternal_face_x_get_resource): Do it on Windows and - Mac too. - -2003-06-05 Dave Love - - * strftime.c: Merge changes from gnulib. - - * mktime.c (__mktime_internal): Merge changes from gnulib - involving year 69 and dst2. - - Changes to merge with gnulib version and be consistent with the - autoconf test: - - * getloadavg.c: Set NLIST_STRUCT from HAVE_NLIST_H. - Use HAVE_STRUCT_NLIST_N_UN_N_NAME, not NLIST_NAME_UNION. - [HAVE_LOCALE_H]: Include locale.h. - (getloadavg) [HAVE_SETLOCALE]: Run sscanf in C locale. - -2003-06-05 Kim F. Storm - - * window.c (coordinates_in_window): Convert X and Y to window - relative coordinates inside mode-line and header-line parts. - Convert X and Y to margin area relative coordinates inside left - and right display margin parts. - -2003-06-05 Jason Rumney - - * w32fns.c (add_system_logical_colors_to_map): New function. - (Fx_open_connection): Use it. - -2003-06-04 Stefan Monnier - - * process.c (allocate_pty): Revert part of the previous patch. - (Faccept_process_output): Simplify. - -2003-06-04 Jason Rumney - - * termhooks.h (enum event_kind): Remove MOUSE_WHEEL_EVENT. - - * keyboard.c (Qmouse_wheel, mouse_wheel_syms) - (lispy_mouse_wheel_names): Remove. - (syms_of_keyboard): Remove Qmouse_wheel and mouse_wheel_syms. - Always define drag_and_drop_syms. - - * macterm.c (XTread_socket): Map mouse wheel events to Emacs - WHEEL_EVENT events. - -2003-06-03 Stefan Monnier - - * xdisp.c (update_tool_bar): Add missing UNGCPRO. - - * buffer.c (init_buffer_once): Make kill-buffer-hook permanent-local. - -2003-06-03 Jan Dj,Ad(Brv - - * gtkutil.c (make_menu_item): Make sure we don't crash on a NULL - menu item label. - -2003-06-03 Richard M. Stallman - - * window.c (Fwindow_edges): Doc fix. - (Fwindow_pixel_edges, Fwindow_inside_edges) - (Fwindow_inside_pixel_edges): New functions. - (syms_of_window): defsubr them. - - * window.h (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS) - (WINDOW_MODE_LINE_LINES, WINDOW_HEADER_LINE_LINES): New macros. - -2003-06-02 Stefan Monnier - - * dispnew.c (Fsit_for): Don't lie about the number of args. - -2003-06-02 Dave Love - - * callproc.c: Use HAVE_FCNTL_H, not USG5. - (syms_of_callproc) : Doc fix. - - * doc.c: Use HAVE_FCNTL_H, not USG5. - - * xfaces.c (font_rescale_ratio): Fix for K&R. - - * termcap.c: Use HAVE_FCNTL_H, not _POSIX_VERSION. - - * mem-limits.h: Use HAVE_SYS_RESOURCE_H, HAVE_SYS_VLIMIT_H. - - * lread.c [HAVE_FCNTL_H]: Include fcntl.h. - - * gtkutil.c: Include keyboard.h, charset.h, coding.h. - (xg_create_frame_widgets): Use ENCODE_UTF_8. - - * xterm.c (Qutf_8): Move to coding.c - - * xmenu.c (ENCODE_MENU_STRING): New. - (list_of_panes, list_of_items, digest_single_submenu, xmenu_show): - Use it. - - * coding.h (ENCODE_UTF_8): New. - (Qutf_8): Declare. - - * coding.c (Qutf_8): New. - (syms_of_coding): Intern it. - - * fns.c: Doc fixes. - -2003-06-02 Kenichi Handa - - * buffer.c (Fset_buffer_multibyte): Fix previous change. - -2003-06-01 Stefan Monnier - - * lread.c (openp): Make sure STR is a string. - -2003-06-01 David Ponce - - * termhooks.h (enum event_kind): Add new WHEEL_EVENT event. - Declare MOUSE_WHEEL_EVENT only if MAC_OSX defined. - - * keyboard.c (Qmouse_wheel): Declare only if MAC_OSX defined. - (mouse_wheel_syms, lispy_mouse_wheel_names): Likewise. - (discard_mouse_events): Discard WHEEL_EVENT events too. - (lispy_wheel_names, wheel_syms): New. - (syms_of_keyboard): Init and staticpro `wheel_syms'. Init and - staticpro `Qmouse_wheel' and `mouse_wheel_syms' only if MAC_OSX defined. - (make_lispy_event): Add WHEEL_EVENT handler. - - * w32term.c (construct_mouse_wheel): Construct WHEEL_EVENT. - (w32_read_socket): Map w32 WM_MOUSEWHEEL events to Emacs - WHEEL_EVENT events. - -2003-05-31 John Paul Wallington - - * Makefile.in (lisp, shortlisp): byte-run, float-sup, map-ynp, and - timer are in lisp/emacs-lisp. - -2003-05-31 Kenichi Handa - - * buffer.c (Fset_buffer_multibyte): Correctly recover a narrowed - region when a buffer is changed to unibyte. - - * charset.h (VALID_LEADING_CODE_P): New macro. - (UNIBYTE_STR_AS_MULTIBYTE_P): Check more rigidly. - - * coding.c (DECODE_EMACS_MULE_COMPOSITION_CHAR): If coding->flags - is nonzero, accept multibyte form of eight-bit-control chars. - (decode_composition_emacs_mule): Likewise. - (decode_coding_emacs_mule): Likewise. - (encode_coding_emacs_mule): If coding->flags is nonzero, produce - multibyte form of eight-bit-control chars. - - * fileio.c (Qauto_save_coding, auto_save_coding): New variables. - (Finsert_file_contents): If coding-system-for-read is bound to - Qauto_save_coding, use the coding system emacs-mule with special - setting for recovering a file. - (choose_write_coding_system): On auto saving, use the coding - system emacs-mule with special setting for auto saving. - (syms_of_fileio) : Intern and staticpro it. - -2003-05-30 Kenichi Handa - - * coding.c (ccl_coding_driver): Set ccl->eight_bit_control - properly before calling ccl_driver. - - * ccl.h (struct ccl_program) : Comment fixed. - - * ccl.c (CCL_WRITE_CHAR): Increment extra_bytes only when it is nonzero. - (ccl_driver): Initialize extra_bytes to ccl->eight_bit_control. - (setup_ccl_program): Initialize ccl->eight_bit_control to zero. - -2003-05-29 Glenn Morris - - * xfaces.c (realize_default_face): Do not abort if lface is - non-existent - reverts change from 2003-05-19. - -2003-05-29 Kenichi Handa - - * coding.c (decode_coding_iso2022): Pay attention to the byte - sequence of CTEXT extended segment, and retain those bytes as is. - -2003-05-28 Kenichi Handa - - * coding.c (ENCODE_UNSAFE_CHARACTER): Adjust for the name change - of CODING_REPLACEMENT_CHARACTER. - (decode_coding_iso2022): If CODING_FLAG_ISO_SAFE, set - CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in coding->mode, and - check this flag on encoding. - (encode_coding_sjis_big5): - Check CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag of coding->mode. - (Fset_terminal_coding_system_internal): - Set CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in terminal_coding.mode - instead of setting CODING_FLAG_ISO_SAFE flag in terminal_coding.flags. - - * coding.h (CODING_REPLACEMENT_CHARACTER): Rename from - CODING_INHIBIT_CHARACTER_SUBSTITUTION. - (CODING_MODE_INHIBIT_UNENCODABLE_CHAR): New macro. - -2003-05-28 Richard M. Stallman - - * print.c (syms_of_print) : Doc fix. - - * eval.c (unbind_to): Move init of this_binding to separate statement. - -2003-05-28 Kim F. Storm - - * xdisp.c (expose_window): Fix error in calculation of - window relative coordinates of area to redisplay. - -2003-05-27 Jason Rumney - - * w32term.c (GET_WHEEL_DELTA_WPARAM): New macro. - -2003-05-27 David Ponce - - Handle W32 mouse wheel events as mouse click events, like in X. - - * keyboard.c (make_lispy_event) [WINDOWSNT]: Don't handle - MOUSE_WHEEL_EVENT anymore. - - * w32term.c (construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. - Scrolling down/up the mouse wheel is respectively mapped to mouse - button 4 and 5. - (w32_read_socket): Map w32 WM_MOUSEWHEEL events to Emacs - MOUSE_CLICK_EVENT events. Forward w32 MSH_MOUSEWHEEL events as - WM_MOUSEWHEEL events. - -2003-05-27 Andreas Schwab - - * buffer.c (syms_of_buffer) : Doc fix. - - * xdisp.c (try_window_id): Avoid aborting if PT is inside a - partially visible line. - - * alloc.c (Fgarbage_collect): Fix last change. - -2003-05-26 John Paul Wallington - - * xfns.c (Fx_create_frame): Don't call Qface_set_after_frame_default. - -2003-05-25 Stefan Monnier - - * window.c (Fset_window_buffer): Add type of `keep_margins'. - (Fset_window_fringes, Fset_window_scroll_bars): Declare before use. - - * window.h (window_box_text_cols): Declare. - - * xdisp.c (window_text_bottom_y, draw_row_fringe_bitmaps) - (x_draw_vertical_border): Remove unused var `f'. - - * xfaces.c (build_scalable_font_name): Remove `unused var - pixel_size' warning. - - * xfns.c (png_load): Remove `unused vars intent, image_gamma' warning. - - * unexelf.c (unexec): Remove `unused var n' warning. - - * strftime.c (my_strftime_localtime_r): Remove `defined but - unused' warning. - - * process.c (allocate_pty): Remove `unused var stb' and - `cp might be used uninitialized' warnings. - - * dispnew.c (mode_line_string): Remove unused var `f'. - - * coding.c (find_safe_codings): Remove unused var `i'. - - * bytecode.c (Fbyte_code): Remove `unused val' warning. - - * buffer.c (Fkill_buffer): Remove unused var `list'. - - * alloc.c (Fgarbage_collect): Remove `unused var tail' warning. - -2003-05-25 Jan Dj,Ad(Brv - - * frame.c (make_frame): Condition want_fullscreen with - HAVE_WINDOW_SYSTEM. - -2003-05-25 Juanma Barranquero - - * window.c (Fset_window_scroll_bars): Fix typo in argument name. - (Fwindow_scroll_bars): Fix typo in docstring. - -2003-05-24 Kim F. Storm - - The following changes serve several purposes: - - 1) Swap the position of fringes and display margins in windows, i.e. - the fringes are now displayed between the margins and the text area - (by default). - - 2) Allow fringe and scroll bar parameters to be set per-buffer and - per-window (like display margins). Such settings are now stored - in window configurations, preserved when frames are resized, and - copied when windows are split vertically or horizontally. - Several bugs related to display margins have been fixed. - - 3) Consistently use FRAME_FONT and FRAME_FONTSET macros. - - 4) Use FRAME_COLUMN_WIDTH (f) consistently throughout the code - rather than FRAME_WIDTH (FRAME_FONT (f)). - - 5) Introduce a consistent naming of variables, members and macros - depending on whether their value is measured in pixels or in - canonical columns/lines. Pixel dimensions are named *_width and - *_height, while canonical columns/lines are named *_cols and - *_lines. Pixel positions are named *_x and *_y, while column/line - positions are named *_col and *_line. - - 6) Consolidate more of the X, W32, and MAC gui code by moving - common data into struct frame, and generalize it for the non-gui - case by using suitable defaults. - - 7) Cleanup and consolidate the macros controlling frame and window - layout into frame.h and window.h, and generalize the use of the - various window_box_* functions (enhanced to handle the new fringe - position and the per-window fringe and scroll bar settings). - - * frame.h (struct frame): Rename members height to text_lines, - width to text_cols, window_height to total_lines, window_width to - total_cols, new_height to new_text_lines, new_width to - new_text_cols. All uses changed. - (struct frame): New members which consolidate common members of - x_output, w32_output, and mac_output structures: left_pos, - top_pos, pixel_height, pixel_width, x_pixels_diff, y_pixels_diff, - win_gravity, size_hint_flags, border_width, internal_border_width, - line_height, fringe_cols, left_fringe_width, right_fringe_width, - want_fullscreen. All uses changed. - (struct frame): New member column_width contaning the canonical - column width, analogue to line_height. All uses changed. - (struct frame): Rename members scroll_bar_pixel_width to - config_scroll_bar_width, and scroll_bar_cols to - config_scroll_bar_cols. All uses changed. - (struct frame): New member scroll_bar_actual_width which - consolidates and renames the vertical_scroll_bar_extra member of - x_output, w32_output, and mac_output structures. All uses changed. - (FRAME_PIXEL_HEIGHT): Rename from PIXEL_HEIGHT and moved - from x/w32/macterm.h files. All uses changed. Also change code - which referred to f->output_data...->pixel_height. - (FRAME_PIXEL_WIDTH): Rename from PIXEL_WIDTH and moved - from x/w32/macterm.h files. All uses changed. Also change code - which referred to f->output_data...->pixel_width. - (FRAME_LINES): Rename from FRAME_HEIGHT. All uses changed. - Also change code which referred to f->height. - (FRAME_COLS): Rename from FRAME_WIDTH. All uses changed. - Also change code which referred to f->width. - (FRAME_NEW_HEIGHT, FRAME_NEW_WIDTH): Remove macros; change uses - to update new_text_lines and new_text_cols members directly. - (FRAME_CONFIG_SCROLL_BAR_WIDTH): Rename from - FRAME_SCROLL_BAR_PIXEL_WIDTH. All uses changed. - (FRAME_CONFIG_SCROLL_BAR_COLS): Rename from - FRAME_SCROLL_BAR_COLS. All uses changed. - (FRAME_LEFT_SCROLL_BAR_COLS, FRAME_RIGHT_SCROLL_BAR_COLS): - Rename from FRAME_LEFT_SCROLL_BAR_WIDTH and - FRAME_RIGHT_SCROLL_BAR_WIDTH, resp. All uses changed. - (FRAME_SCROLL_BAR_AREA_WIDTH, FRAME_LEFT_SCROLL_BAR_AREA_WIDTH) - (FRAME_RIGHT_SCROLL_BAR_AREA_WIDTH): New macros. - (FRAME_TOTAL_COLS): Rename from FRAME_WINDOW_WIDTH. - (SET_FRAME_COLS): Rename from SET_FRAME_WIDTH. - (FRAME_TOTAL_COLS_ARG): Rename from FRAME_WINDOW_WIDTH_ARG. - (WINDOW_VERTICAL_SCROLL_BAR_COLUMN): Remove unused macro. - (WINDOW_VERTICAL_SCROLL_BAR_HEIGHT): Remove unused macro. - (FRAME_LINE_HEIGHT): Rename from CANON_Y_UNIT. - Unconditionally return line_height member (it now has proper value - also for non-window frames). - (FRAME_COLUMN_WIDTH): Rename from CANON_X_UNIT. Unconditionally - return new column_width member (rather than the default font width). - (FRAME_FRINGE_COLS, FRAME_LEFT_FRINGE_WIDTH) - (FRAME_RIGHT_FRINGE_WIDTH): Rename from FRAME_X_... and moved - from x/w32/macterm.h files. Unconditionally return corresponding - member of frame structure (they now have proper values also for - non-window frames). - (FRAME_TOTAL_FRINGE_WIDTH): Rename from FRAME_FRINGE_WIDTH. - Calculate return value from left and right widths. - (FRAME_INTERNAL_BORDER_WIDTH): Unconditionally return - internal_border_width member (has proper value for non-window frame). - (FRAME_PIXEL_X_FROM_CANON_X): Rename from PIXEL_X_FROM_CANON_X. - (FRAME_PIXEL_Y_FROM_CANON_Y): Rename from PIXEL_Y_FROM_CANON_Y. - (FRAME_CANON_X_FROM_PIXEL_X): Rename from CANON_X_FROM_PIXEL_X. - (FRAME_CANON_Y_FROM_PIXEL_Y): Rename from CANON_Y_FROM_PIXEL_Y. - (FRAME_LINE_TO_PIXEL_Y): Rename from CHAR_TO_PIXEL_ROW, - consolidated from xterm.h, macterm.h, and w32term.h. - (FRAME_COL_TO_PIXEL_X): Rename from CHAR_TO_PIXEL_COL, - consolidated from xterm.h, macterm.h, and w32term.h. - (FRAME_TEXT_COLS_TO_PIXEL_WIDTH): Rename from - CHAR_TO_PIXEL_WIDTH consolidated from x/mac/w32term.h. - (FRAME_TEXT_LINES_TO_PIXEL_HEIGHT): Rename from - CHAR_TO_PIXEL_HEIGHT consolidated from x/mac/w32term.h. - (FRAME_PIXEL_Y_TO_LINE): Rename from PIXEL_TO_CHAR_ROW - consolidated from x/mac/w32term.h. - (FRAME_PIXEL_X_TO_COL): Rename from PIXEL_TO_CHAR_COL - consolidated from x/mac/w32term.h. - (FRAME_PIXEL_WIDTH_TO_TEXT_COLS): Rename from - PIXEL_TO_CHAR_WIDTH consolidated from x/mac/w32term.h. - (FRAME_PIXEL_HEIGHT_TO_TEXT_LINES): Rename from - PIXEL_TO_CHAR_HEIGHT consolidated from x/mac/w32term.h. - - * window.h (struct window): Rename members left to left_col, - top to top_line, height to total_lines, width to total_cols, - left_margin_width to left_margin_cols, right_margin_width to - right_margin_cols, orig_height to orig_total_lines, orig_top to - orig_top_line. All uses changed. - (struct window): New members left_fringe_width, right_fringe_width, - fringes_outside_margins, scroll_bar_width, vertical_scroll_bar_type. - (WINDOW_XFRAME, WINDOW_FRAME_COLUMN_WIDTH, WINDOW_FRAME_LINE_HEIGHT): - New macros primarily used to simplify other macros. - (WINDOW_TOTAL_COLS): New macro. Change relevant code that - referred to XINT (w->width). - (WINDOW_TOTAL_LINES): New macro. Change relevant code that - referred to XINT (w->height). - (WINDOW_TOTAL_WIDTH): New macro. Change relevant code that - referred to XINT (w->width) * canon_x_unit. - (WINDOW_TOTAL_HEIGHT): New macro. Change relevant code that - referred to XINT (w->height) * canon_y_unit. - (WINDOW_LEFT_EDGE_COL): New macro. Change relevant code that - referred to XINT (w->left). - (WINDOW_RIGHT_EDGE_COL): Rename from WINDOW_RIGHT_EDGE. Change - all uses and code that referred to XINT (w->left) + XINT (w->width). - (WINDOW_TOP_EDGE_LINE): New macro. Change relevant code that - referred to XINT (w->top). - (WINDOW_BOTTOM_EDGE_LINE): New macro. Change relevant code that - referred to XINT (w->top) + XINT (w->height). - (WINDOW_LEFT_EDGE_X): New macro. Change relevant code that - referred to XINT (w->left) * canon_x_unit. - (WINDOW_RIGHT_EDGE_X): New macro. Change relevant code that - referred to (XINT (w->left) + XINT (w->width)) * canon_x_unit. - (WINDOW_TOP_EDGE_Y): New macro. Change relevant code that - referred to XINT (w->top) * canon_y_unit. - (WINDOW_BOTTOM_EDGE_Y): New macro. Change relevant code that - referred to (XINT (w->top) + XINT (w->height)) * canon_y_unit. - (WINDOW_LEFTMOST_P): New macro. - (WINDOW_BOX_LEFT_EDGE_COL): Rename from WINDOW_LEFT_MARGIN. - All uses changed. - (WINDOW_BOX_RIGHT_EDGE_COL): Rename from WINDOW_RIGHT_MARGIN. - All uses changed. - (WINDOW_BOX_LEFT_EDGE_X): Rename from - WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, moved from dispextern.h. - Do not exclude left fringe width. - (WINDOW_BOX_RIGHT_EDGE_X): Rename from - WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X, moved from dispextern.h. - Do not exclude fringe widths. - (WINDOW_LEFT_FRINGE_WIDTH, WINDOW_RIGHT_FRINGE_WIDTH) - (WINDOW_FRINGE_COLS, WINDOW_TOTAL_FRINGE_WIDTH): New macros. - Change relevant code that referred to FRAME_LEFT_FRINGE_WIDTH, - FRAME_RIGHT_FRINGE_WIDTH, FRAME_FRINGE_COLS, and - FRAME_TOTAL_FRINGE_WIDTH to allow per-window fringe settings. - (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS): New macro. - (WINDOW_VERTICAL_SCROLL_BAR_TYPE, WINDOW_HAS_VERTICAL_SCROLL_BAR) - (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT) - (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT) - (WINDOW_CONFIG_SCROLL_BAR_WIDTH, WINDOW_CONFIG_SCROLL_BAR_COLS): - New macros. Change code which referenced corresponding - FRAME_VERTICAL_SCROLL_BAR_TYPE, FRAME_HAS_VERTICAL_SCROLL_BARS, - FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT, - FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT, - FRAME_SCROLL_BAR_PIXEL_WIDTH, and FRAME_SCROLL_BAR_COLS macros to - allow per-window scroll-bar settings. - (WINDOW_LEFT_SCROLL_BAR_COLS, WINDOW_RIGHT_SCROLL_BAR_COLS): New macros. - (WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH): New macro. Change code that - referred to FRAME_LEFT_SCROLL_BAR_WIDTH. - (WINDOW_RIGHT_SCROLL_BAR_AREA_WIDTH): New macro. Change code - that referred to FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT and - FRAME_SCROLL_BAR_WIDTH. - (WINDOW_SCROLL_BAR_COLS, WINDOW_SCROLL_BAR_AREA_WIDTH) - (WINDOW_SCROLL_BAR_AREA_X): New macros. - (WINDOW_HEADER_LINE_HEIGHT): Rename from - WINDOW_DISPLAY_HEADER_LINE_HEIGHT, moved from dispextern.h. - (WINDOW_BOX_HEIGHT_NO_MODE_LINE): Rename from - WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, moved from dispextern.h. - (WINDOW_BOX_TEXT_HEIGHT): Rename from - WINDOW_DISPLAY_PIXEL_WIDTH, moved from dispextern.h. - (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y) - (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y) - (WINDOW_TEXT_TO_FRAME_PIXEL_X): Move here from dispextern.h. - (WINDOW_LEFT_MARGIN_WIDTH): Rename from - WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH, moved from dispextern.h. - (WINDOW_RIGHT_MARGIN_WIDTH): Rename from - WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, moved from dispextern.h. - (window_from_coordinates): Update prototype. - (Fset_window_buffer): Update EXFUN. - (set_window_buffer): Update prototype. - - * dispextern.h (struct glyph_matrix): Rename members window_left_x - to window_left_col, window_top_y to window_top_line. All uses - changed. - (FRAME_INTERNAL_BORDER_WIDTH_SAFE): Remove macro; can now safely - use FRAME_INTERNAL_BORDER_WIDTH macro instead as - internal_border_width is now set to 0 for non-window frames. - (WINDOW_DISPLAY_PIXEL_WIDTH, WINDOW_DISPLAY_PIXEL_HEIGHT) - (WINDOW_DISPLAY_MODE_LINE_HEIGHT, WINDOW_DISPLAY_HEADER_LINE_HEIGHT) - (WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, WINDOW_DISPLAY_TEXT_HEIGHT) - (WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X) - (WINDOW_DISPLAY_TOP_EDGE_PIXEL_Y, WINDOW_DISPLAY_BOTTOM_EDGE_PIXEL_Y) - (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y) - (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y) - (WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH) - (WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, WINDOW_WANTS_MODELINE_P): - Move to window.h and renamed [see window.h changes]. - (WINDOW_AREA_TO_FRAME_PIXEL_X, WINDOW_AREA_PIXEL_WIDTH) - (WINDOW_DISPLAY_TEXT_AREA_PIXEL_WIDTH): Remove macros. - (WINDOW_WANTS_MODELINE_P, WINDOW_WANTS_HEADER_LINE_P): - Use WINDOW_TOTAL_LINES. - (frame_update_line_height): Remove prototype. - - * buffer.h (struct buffer): Rename members measured in columns: - left_margin_width to left_margin_cols, right_margin_width to - right_margin_cols. All uses changed. - New members left_fringe_width, right_fringe_width, - fringes_outside_margins for per-buffer fringe settings. - New members scroll_bar_width and vertical_scroll_bar_type for - per-buffer scroll bar settings. - - * buffer.c (init_buffer_once): Set buffer_defaults and - buffer_local_flags for new buffer-local variables - left_fringe_width, right_fringe_width, fringes_outside_margins, - scroll_bar_width, and vertical_scroll_bar_type. - (syms_of_buffer): Defvar_per_buffer them, and defvar_lisp_nopro - default-* variables for them. - - * dispnew.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (mode_line_string): No need to adjust width for mode lines, as it - is already adjusted by the caller. - (marginal_area_string): Handle fringes inside/outside margins. - - * frame.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (make_frame): Initialize left_fringe_width, right_fringe_width, - fringe_cols, scroll_bar_actual_width, border_width, - internal_border_width, column_width, line_height, x_pixels_diff, - y_pixels_diff, want_fullscreen, size_hint_flags, and win_gravity - members with values suitable for a non-window frames. - - * gtkutil.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * indent.c: Make (few) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * keyboard.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (make_lispy_event): Use window positions returned from - window_from_coordinates when constructing the lisp event for - MOUSE_CLICK_EVENT and DRAG_N_DROP_EVENT, rather than calculating - (incorrect) values locally. - (make_lispy_movement): Use window positions returned from - window_from_coordinates when constructing the lisp event, rather - than calculating (incorrect) values locally. - - * scroll.c: Make (some) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * sunfns.c (Fsun_menu_internal): Adapt to per-window fringes and - scroll-bars. - - * sysdep.c: Make (few) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * term.c: Make (some) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * widget.c: Make (few) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * window.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (make_window): Initialize new members - left_margin_cols, right_margin_cols, left_fringe_width, - right_fringe_width, fringes_outside_margins, scroll_bar_width, - and vertical_scroll_bar_type. - (coordinates_in_window): Adapt to new fringe/margin positions - and per-window fringes and scroll-bars. - Fix bug related to incorrectly adjusting coordinates by - frame's internal_border_width (the effect normally negible since - the internal_border_width is typically 0 or 1 pixel, but very - noticeable for an internal_border_width of e.g. 25 pixels). - Upon successful return (other than ON_NOTHING), the coordinates - are now always properly converted to window relative for the - given display element. - (window_from_coordinates): Add new parameters wx and wy to - return the window relative x and y position in the returned - window and part. A null arg means, don't return the position. - All callers changed. - (adjust_window_margins): New function which may reduce the width - of the display margins if a window's text area is too small after - resizing or splitting windows. - (size_window): Fix bug that did not account for display margin - widths when checking the minimum width of a window; use - adjust_window_margins. - (set_window_buffer): Call Fset_window_fringes and - Fset_window_scroll_bars to setup per-window elements. - Add new arg KEEP_MARGINS_P. Non-nil means to keep window's - existing display margin, fringe widths, and scroll bar settings - (e.g. after splitting a window or resizing the frame). - All callers changed. - (Fset_window_buffer): New arg KEEP_MARGINS. All callers changed. - (Fsplit_window): Duplicate original window's display margin, - fringe, and scroll-bar settings; then call Fset_window_buffer with - KEEP_MARGINS non-nil. This fixes a bug which caused a split - window to only preserve the display margins in one of the windows. - When splitting horizontally, call adjust_window_margins on both - windows to ensure that the text area of the new windows is non too - narrow. This fixes a bug which could cause Emacs to trap if the - width of the split window was less than the width of the display - margins. - (window_box_text_cols): Rename from window_internal_width. - All uses changed. Adapt to per-window fringes and scroll bars. - Fix bug that caused vertical separator to be subtracted also on - window frames. Fix another bug that did not reduce the returned - value by the columns used for display margins. - (window_scroll_line_based): Fix bug related to scrolling too much - when display margins are present (implicitly fixed by the fix to - window_box_text_cols). - (scroll_left, scroll_right): Fix bug related to scrolling too far - by default when display margins are present (implicitly fixed by - the fix to window_box_text_cols). - (struct saved_window): Rename members left to left_col, top to - top_line, width to total_cols, height to total_lines, orig_top to - orig_top_line, orig_height to orig_total_lines. All uses changed. - New members left_margin_cols, right_margin_cols, - left_fringe_width, right_fringe_width, fringes_outside_margins, - scroll_bar_width, and vertical_scroll_bar_type for saving - per-window display elements. - (Fset_window_configuration): Restore display margins, fringes, - and scroll bar settings. This fixes a bug which caused display - margins to be discarded when saving and restoring a window - configuration. - (save_window_save): Save display margins, fringes, and scroll bar - settings. This fixes a bug which caused display margins to be - discarded when saving and restoring a window configuration. - (Fset_window_margins): Do nothing if display margins are not - really changed. Otherwise, call adjust_window_margins to ensure - the text area doesn't get too narrow. This fixes a bug which - could cause Emacs to trap if setting display margins wider than - the width of the window. - (Fset_window_fringes): New defun to allow user to specifically set - this window's fringe widths and position vs. display margins. - (Fwindow_fringes): New defun to return window's actual fringe settings. - (Fset_window_scroll_bars): New defun to allow user to specifically - set this window's scroll bar width and position. - (Fwindow_scroll_bars): New defun to return window's actual scroll - bar settings. - (compare_window_configurations): Also compare display margins, - fringes, and scroll bar settings. - (syms_of_window): Defsubr new defuns for fringe and scroll bars. - - * xdisp.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (window_box_width): Adapt to per-window fringes and scroll bars, - and new fringe vs. display margin position. Note that returned - value is no longer guaranteed to be a whole multiple of the frame - column width, since per-window fringes may now be any width. - (window_box_left_offset): New function like window_box_left, but - value is relative to left border of window (rather than frame). - (window_box_right_offset): New function like window_box_right, - but value is relative to left border of window. - (window_box_left): Adapt to per-window fringes and scroll bars, - and new fringe vs. display margin position. Simplify by using - WINDOW_LEFT_EDGE_X and window_box_left_offset. - (window_box): Allow null args for unnecessary return values; - change/simplify relevant callers. - (x_y_to_hpos_vpos): Adapt to per-window fringes and scroll bars, - and new fringe vs. display margin position. - Use window_box_left_offset and window_box_right_offset - (get_glyph_string_clip_rect): Adapt to per-window fringes and - scroll bars, and new fringe vs. display margin position. - Use WINDOW_LEFT_EDGE_X and WINDOW_TOTAL_WIDTH. - (draw_fringe_bitmap): Rework to handle per-window fringes and new - fringe vs. display margin position. - (hscroll_window_tree): Use window_box_width instead of window_box. - (redisplay_window): Adapt to per-window scroll bars. - (draw_glyphs): Rework to handle per-window fringes and scroll - bars, and new fringe vs. display margin position. - Use WINDOW_LEFT_EDGE_X, WINDOW_TOTAL_WIDTH, and window_box_left. - (x_clear_end_of_line): Adapt to per-window fringes and scroll - bars, and new fringe vs. display margin position. Fix bug which - increased total width of full_width rows by width of scroll bars - although window's total width already includes that. - (x_fix_overlapping_area): Simplify using window_box_left_offset. - (expose_area): Simplify using window_box_left_offset. - (x_draw_vertical_border): Handle per-window scroll bar settings, - mixing windows with left, right and no scroll bars. - - * xfaces.c [WINDOWSNT]: Move redefinition of FONT_WIDTH macro to - where it's used in x_list_fonts (for clarity). - (frame_update_line_height): Remove unused function; functionality - is now done directly when setting the default font in x_set_font. - - * xfns.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * xmenu.c: Make (some) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * xterm.h (struct x_output): Move members left_pos, top_pos, - border_width, pixel_height, pixel_width, line_height, - internal_border_width, vertical_scroll_bar_extra, - left_fringe_width, right_fringe_width, fringe_cols, - fringes_extra, win_gravity, size_hint_flags, want_fullscreen, - x_pixels_diff, and y_pixels_diff to struct frame (frame.h). - (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h. - (FRAME_DEFAULT_FONT_WIDTH): Remove macro. - (PIXEL_WIDTH, PIXEL_HEIGHT) - (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH) - (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to - frame.h and renamed [see frame.h changes]. - (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH) - (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL) - (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h - and renamed [see frame.h changes]. - - * xterm.c: Make (several) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars. - (scroll_run): Adapt to new fringe position. - (glyph_rect): Use window coordinates returned from - window_from_coordinates rather than frame_to_window_pixel_xy. - (XTset_vertical_scroll_bar): Adapt to per-window fringes and - scroll-bars. - (handle_one_xevent): Simplify a USE_GTK conditional. - (x_clip_to_row): Remove superfluous whole_line_p arg and code - (fringes are now inside margins, i.e. always in the clipping area). - All callers changed. - (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT - directly, then call compute_fringe_widths. Don't call - frame_update_line_height. - - * w32term.h (struct w32_output): Move members left_pos, top_pos, - border_width, pixel_height, pixel_width, line_height, - internal_border_width, vertical_scroll_bar_extra, - left_fringe_width, right_fringe_width, fringe_cols, - fringes_extra, win_gravity, size_hint_flags, want_fullscreen, - x_pixels_diff, and y_pixels_diff to struct frame (frame.h). - (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h. - (FRAME_DEFAULT_FONT_WIDTH): Remove macro. - (PIXEL_WIDTH, PIXEL_HEIGHT) - (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH) - (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to - frame.h and renamed [see frame.h changes]. - (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH) - (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL) - (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h - and renamed [see frame.h changes]. - - * w32term.c: Make (several) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars. - (glyph_rect): Use window coordinates returned from - window_from_coordinates rather than frame_to_window_pixel_xy. - (XTset_vertical_scroll_bar): Adapt to per-window fringes and - scroll-bars. - (w32_clip_to_row): Remove superfluous whole_line_p arg and code - (fringes are now inside margins, i.e. always in the clipping area). - All callers changed. - (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT - directly, then call compute_fringe_widths. Don't call - frame_update_line_height. - - * w32console.c: Make (few) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * w32fns.c: Make (many) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * w32menu.c: Make (few) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * macterm.h (struct mac_output): Move members left_pos, top_pos, - border_width, pixel_height, pixel_width, line_height, - internal_border_width, vertical_scroll_bar_extra, - left_fringe_width, right_fringe_width, fringe_cols, - fringes_extra, win_gravity, size_hint_flags, want_fullscreen, - x_pixels_diff, y_pixels_diff to struct frame (frame.h). - (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h. - (FRAME_DEFAULT_FONT_WIDTH): Remove macro. - (PIXEL_WIDTH, PIXEL_HEIGHT) - (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH) - (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to - frame.h and renamed [see frame.h changes]. - (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH) - (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL) - (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h - and renamed [see frame.h changes]. - - * macterm.c: Make (several) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars. - (glyph_rect): Use window coordinates returned from - window_from_coordinates rather than frame_to_window_pixel_xy. - (XTset_vertical_scroll_bar): Adapt to per-window fringes and - scroll-bars. - (x_clip_to_row): Remove superfluous whole_line_p arg and code - (fringes are now inside margins, i.e. always in the clipping area). - All callers changed. - (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT - directly, then call compute_fringe_widths. Don't call - frame_update_line_height. - - * macfns.c: Make (several) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (x_real_positions): Set f->x_pixels_diff and f->y_pixels_diff to 0. - - * macmenu.c: Make (few) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - - * msdos.h (struct x_output): Remove members left_pos, top_pos, - and line_height, and use corresponding new members in struct - frame. All uses changed. - (FRAME_LINE_HEIGHT, FRAME_INTERNAL_BORDER_WIDTH): Remove macros; - superseeded by corresponding macros in frame.h. - - * msdos.c: Make (several) trivial substitutions for renamed and - new macros in dispextern.h, frame.h and window.h. - (IT_note_mouse_highlight): Use updated window coordinates returned - by window_from_coordinates, rather than adjusting them locally. - (internal_terminal_init): No need to initialize line_height here; - it now defaults to 1. - -2003-05-24 Stefan Monnier - - * keyboard.c (read_key_sequence): Adjust fkey and keytran when - dropping `down' events. - -2003-05-24 Andreas Schwab - - * coding.c (find_safe_codings): Fix last change. - -2003-05-24 Istvan Marko (tiny change) - - * xfns.c (x_window): Fix typo from 2003-05-21 change. - -2003-05-23 Stefan Monnier - - * xdisp.c (display_mode_element): Increase max depth. - Simplify the error handling code. Use a different error string - for the case where we hit the depth limit. - - * lisp.h (Vfundamental_mode_abbrev_table): Don't declare. - - * buffer.c (reset_buffer_local_variables): Remove redundant setting. - -2003-05-21 Stefan Monnier - - * intervals.c (get_local_map): Don't get char-property of previous - point any more: get_pos_property already does it and better. - -2003-05-21 Dave Love - - [Merged from unicode branch.] - - * xfns.c (x_window, x_window): Use use_xim. - - * xterm.c (use_xim): Initialize. - (xim_open_dpy, xim_initialize, xim_close_dpy): Use use_xim. - (x_term_init): Maybe set use_xim. - - * xterm.h (use_xim) [HAVE_X_I18N]: Declare. - -2003-05-21 Jason Rumney - - * unexw32.c (_start): Remove _fmode initialization. - - * emacs.c (main) [WINDOWSNT]: Move it here. - -2003-05-20 Dave Love - - * s/gnu-linux.h (MAIL_USE_FLOCK): Make it conditional. - -2003-05-19 Richard M. Stallman - - * xfaces.c (Finternal_set_lisp_face_attribute): Handle Qunspecified - as value for QCfont attribute. - (realize_default_face): lface should already exist; crash if not. - Specify 0 for FORCE_P when calling set_lface_from_font_name. - - * frame.c (Fignore_event): Doc fix. - -2003-05-19 Kenichi Handa - - * coding.c (decode_coding_string): Handle post-read-conversion - even if the coding doesn't require decoding. - -2003-05-18 Richard M. Stallman - - * callproc.c (Fcall_process_region): Doc fix. - -2003-05-17 Stefan Monnier - - * lread.c (Fload): Print a message if package is obsolete. - - * window.c (Fselect_window): Add optional `norecord' arg. - (select_window_1): Fold into Fselect_window. - (select_window_norecord): New function. - (temp_output_buffer_show): Use it. Preserve current buffer. - - * window.h (Fselect_window): Update declaration. - - * window.c (delete_window, Fother_window, Fset_window_configuration): - * minibuf.c (read_minibuf): - * macterm.c (x_new_focus_frame): - * frame.c (do_switch_frame, Fset_frame_selected_window, Fdelete_frame): - * callint.c (Fcall_interactively): - * xterm.c (x_new_focus_frame): Pass nil as new arg to Fselect_window. - - * buffer.c (Fpop_to_buffer): Pass norecord to Fselect_window. - -2003-05-17 David Kastrup - - * process.c (read_process_output): Back out change from 2003-03-09. - -2003-05-17 Stefan Monnier - - * editfns.c (get_pos_property): Don't assume that `object' = nil. - - * textprop.c (text_property_stickiness): New arg `buffer'. - - * intervals.h (text_property_stickiness): New arg `buffer'. - (get_pos_property): Declare. - - * intervals.c (get_local_map): Use get_pos_property, to obey - stickiness and empty overlays. - (create_root_interval, graft_intervals_into_buffer): Use BEG. - (merge_properties, intervals_equal, merge_properties_sticky): - Use XCAR, XCDR. - (adjust_for_invis_intang): Pass new arg to text_property_stickiness. - -2003-05-17 Richard M. Stallman - - * minibuf.c (read_minibuf): If buffer is empty, record the default - in the history. - (Fminibuffer_complete_word): When deleting the overlap, take account - of its real position. - - * fns.c (map_char_table): Fix previous change. - - * syntax.c (find_defun_start): - When open_paren_in_column_0_is_defun_start, - return beginning of buffer. - - * lisp.h (map_char_table): Declare added arg. - - * fns.c (map_char_table): New arg TABLE gets the master table. - All calls changed. - Process default and inheritance, resorting to Faref if necessary. - - * keymap.c (Fset_keymap_parent, map_keymap, Fcopy_keymap) - (Faccessible_keymaps): Pass new arg to map_char_table. - - * fontset.c (Ffontset_info): Pass new arg to map_char_table. - - * casetab.c (set_case_table): Pass new arg to map_char_table. - - * data.c (let_shadows_buffer_binding_p): Make target of p volatile. - - * lisp.h (specbinding_func): New typedef. - (struct specbinding): Use specbinding_func, to put the `volatile' - in the right place. - - * alloc.c (Fgarbage_collect): Cast pointers into specpdl - to avoid GCC warning. - -2003-05-16 Ralph Schleicher - - * fileio.c (Fdelete_file): Handle symlinks pointing to directories. - -2003-05-15 Stefan Monnier - - * keyboard.c (apply_modifiers): Don't fill the other cache. - -2003-05-14 Stefan Monnier - - * .gdbinit-union: New file, for USE_LISP_UNION_TYPE users. - - * window.h (Qwindowp, Qwindow_live_p, Vwindow_list) - (Fwindow_end, Fselected_window, Fdelete_window, Fwindow_buffer) - (Fget_buffer_window, Fsave_window_excursion, Fsplit_window) - (Fset_window_configuration, Fcurrent_window_configuration) - (compare_window_configurations, Fcoordinates_in_window_p, Fwindow_at) - (Fpos_visible_in_window_p, mark_window_cursors_off) - (window_internal_height, window_internal_width, Frecenter) - (Fscroll_other_window, Fset_window_start, temp_output_buffer_show) - (replace_buffer_in_all_windows, init_window_once, init_window) - (syms_of_window, keys_of_window): Move from lisp.h. - * lisp.h: Move window.c declarations to window.h. - - * bytecode.c: Include window.h. - * emacs.c: Include window.h. - - * keyboard.c (make_lispy_event): Apply modifiers to multibyte-char key. - (keyremap): Add `parent' field. - (keyremap_step): Use it. Remove `parent' argument. - (read_key_sequence): Setup and use the new `parent' field. - -2003-05-11 Stefan Monnier - - * keyboard.c (adjust_point_for_property): Ensure termination. - -2003-05-10 Stefan Monnier - - * keyboard.c (follow_key): Remove dead variable `did_meta'. - (access_keymap_keyremap, keyremap_step): New funs, extracted from the - duplicated handling of function-key-map and key-translation-map - in read_key_sequence. - (read_key_sequence): Use them. - - * keyboard.c (adjust_point_for_property): Try harder to move point - to the non-sticky end of an invisible property. - - * xdisp.c (single_display_prop_intangible_p): Make `space' display - property intangible as well. - -2003-05-10 Andreas Schwab - - * xmenu.c (single_menu_item): Change last parameter to void* to - avoid warning. - -2003-05-09 Richard M. Stallman - - * print.c (Fprin1_to_string): Instead of gcpro, set abort_on_gc. - Bind Qinhibit_modification_hooks to t so there will be no GC. - Rename local `tem' to `save_deactivate_mark'. - - * eval.c (specpdl_ptr): Declare volatile. - (unbind_to): Copy the whole binding and decrement specpdl_ptr - before doing the work of unbinding it. - - * lisp.h (struct specbinding): Declare elements volatile. - (specpdl_ptr): Declare volatile. - - * Makefile.in (alloca.o): Specify -DDO_BLOCK_INPUT in compiling. - - * alloca.c: Test DO_BLOCK_INPUT rather than `emacs' - for use of BLOCK_INPUT and inclusion of lisp.h and blockinput.h. - -2003-05-08 Dave Love - - * coding.c (Vlast_coding_system_used): Doc fix. - -2003-05-07 Jason Rumney - - * fileio.c (Ffile_symlink_p): Let handlers handle symlinks even - when system does not support them. - -2003-05-05 Stefan Monnier - - * fileio.c (Qwrite_region_annotate_functions): New var. - (build_annotations): Use it to process the global part of the hook. - (syms_of_fileio): Init and staticpro it. - - * keyboard.c (safe_run_hooks_error): Display a message instead of - silently ignoring the error. - -2003-05-03 Stefan Monnier - - * keyboard.c (input_available_signal): Mark static. - (menu_bar_items): Use map_keymap. - (menu_bar_one_keymap): Remove. - (menu_bar_item): Adjust arglist (for use in map_keymap). - Properly hide a second binding when not both are keymaps. - - * xmenu.c (struct skp): New struct, to pass args through map_keymap. - (single_keymap_panes): Use it and map_keymap. - (single_menu_item): Use skp as well. - - * keymap.h (map_keymap_function_t): New type. - (map_keymap): Declare. - - * keymap.c (map_keymap_item, map_keymap_char_table_item, map_keymap) - (map_keymap_call, Fmap_keymap): New functions. - (syms_of_keymap): Defsubr map-keymap. - -2003-05-02 Jan Dj,Ad(Brv - - * gtkutil.c (create_dialog, make_widget_for_menu_item) - (make_menu_item, create_menus, xg_update_menu_item): Don't call - ..._with_mnemonic functions for menu items. - -2003-05-01 Kenichi Handa - - * coding.c (coding_system_accept_latin_extra_p): Delete this - function. - (find_safe_codings): Pay attention to - the property tranlsation-table-for-encode of each codings. - (syms_of_coding): Give Qtranslation_table the extra slot number 2. - -2003-05-01 Stefan Monnier - - * eval.c (Funwind_protect): Use func=Fprogn rather than symbol=Qnil. - -2003-04-30 Stefan Monnier - - * eval.c (unbind_to): Don't handle symbol = Qnil any more. - - * lisp.h (CHECK): Wrap args in parenthesis. - (specbind): Fix doc: symbol = Qnil is not supported any more. - - * bytecode.c (Fbyte_code) : - Use Fprogn rather than 0 and Qnil. - - * keyboard.c (parse_modifiers_uncached): Parse `down', `drag', - `double', and `triple' modifiers as well. - -2003-04-30 Richard M. Stallman - - * keyboard.c (echo_char): Don't clear out a dash that follows a space. - - * alloc.c (abort_on_gc): New variable. - (Fgarbage_collect): Abort if abort_on_gc is set. - - * lisp.h (abort_on_gc): Add decl. - - * eval.c (Fsignal): Clear abort_on_gc. - - * editfns.c (Fformat): Set abort_on_gc during first scan of format. - Reinit FORMAT_START and END before second scan. - - * xdisp.c (move_it_vertically_backward): Do the final big else - even if nlines is 0. - - * xdisp.c (redisplay_internal): Finish the per-frame loop - even if redisplay is suspended by input. - -2003-04-24 Andrew Choi - - * macterm.c (x_list_fonts): Return all fonts that match if - maxnames = -1. - -2003-04-25 Kenichi Handa - - * syntax.c (skip_chars): Fix previous change. - -2003-04-24 Kenichi Handa - - * syntax.c (skip_chars): Make the code faster by using the common - technique of *p, *stop, and *endp. - -2003-04-23 Jan Dj,Ad(Brv - - * xdisp.c (update_tool_bar): BLOCK_INPUT before calling - tool_bar_items so GTK tool bar expose callback does not access items - being updated. - -2003-04-19 Stefan Monnier - - * eval.c (Fapply): Undo last change and add a comment about why. - -2003-04-18 Miles Bader - - * data.c (Faset): Calculate nbytes earlier, to satisfy the now - pickier PARSE_MULTIBYTE_SEQ. - -2003-04-17 Stefan Monnier - - * eval.c (For, Fand, Fprogn, un_autoload, do_autoload): - Use XCDR, XCAR, CONSP. - (Fdefmacro): Fix docstring. Use XCAR, XCDR. - (Fapply): Remove unnecessary GCPRO. - - * doc.c (Fsubstitute_command_keys): Remove spurious casts. - - * charset.h (PARSE_MULTIBYTE_SEQ): Pretend `length' is used. - - * buffer.h: Don't hardcode BEG==1. - - * abbrev.c (Fdefine_abbrev_table): Use XCAR, XCDR. - -2003-04-16 Richard M. Stallman - - * xdisp.c (try_window, try_window_reusing_current_matrix): - When at end of window, set window_end_pos to Z-ZV. - - * buffer.c (Foverlay_recenter): Doc fix. - -2003-04-14 Stefan Monnier - - * dispnew.c (Fsit_For): Support XEmacs-style arg list. - -2003-04-14 Andrew Choi - - * macterm.c (mac_check_for_quit_char): Don't check more often than - once a second. - -2003-04-11 Stefan Monnier - - * keyboard.c (kbd_buffer_get_event): Don't handle SELECT_WINDOW_EVENT - specially, so that they can't hide an implicit switch-frame event. - (make_lispy_event): Handle SELECT_WINDOW_EVENT. - (head_table): Use switch-frame as event_kind for select-window. - (keys_of_keyboard): Don't bind [select-window] in special-event-map. - - * editfns.c (Fformat): Lisp_Object/int mixup. - (format2): Remove unused var numargs. - -2003-04-11 Kenichi Handa - - * fileio.c (Vafter_insert_file_adjust_coding_function): Delete. - (Qafter_insert_file_set_coding): New variable. - (syms_of_fileio): Initialize and staticpro it. Delete declaration - for after-insert-file-adjust-coding-function. - (Finsert_file_contents): Call Qafter_insert_file_set_coding - instead of Vafter_insert_file_adjust_coding_function. - -2003-04-11 Kenichi Handa - - * lisp.h (temp_echo_area_glyphs): Adjust prototype. - - * minibuf.c (temp_echo_area_glyphs): Change the arg to Lisp - string. Callers changed. - -2003-04-10 Kenichi Handa - - * fileio.c (Vafter_insert_file_adjust_coding_function): New variable. - (syms_of_fileio): Declare it as a lisp variable. - (Finsert_file_contents): - Call Vafter_insert_file_adjust_coding_function before calling - decode-format. - -2003-04-09 Jan Dj,Ad(Brv - - * xterm.c (xg_scroll_callback): Call gtk_range_get_adjustment to - get GtkAdjustment as widget now is a GtkRange. - - * gtkutil.c (xg_create_scroll_bar): Connect to value-changed on - GtkRange to avoid memory leak. - -2003-04-09 Kenichi Handa - - * xfaces.c (Vface_font_rescale_alist): New variable. - (struct font_name): New member rescale_ratio. - (font_rescale_ratio): New function. - (split_font_name): If NUMERIC_P is nonzero, set font->rescale_ratio. - (better_font_p): On comparing point sized, pay attention to - recale_ratio member of fonts. - (build_scalable_font_name): Reflect font->rescale_ratio in the - font name. - (syms_of_xfaces): Declare Vface_font_rescale_alist as a Lisp variable. - - * lread.c (read1): Before calling index, check if the 2nd - arguemnt is in ASCII range. - -2003-04-08 Richard M. Stallman - - * fileio.c (Ffile_symlink_p): Doc fix. - - * editfns.c (Fformat): Translate positions of text properties - in the format string to apply them to the result. - - * fileio.c (Finsert_file_contents): Doc fix. - (syms_of_fileio) : Doc fix. - -2003-04-08 Ivan Zakharyaschev (tiny change) - - * lread.c (openp): Get the Qfile_exists_p handler for STRING, not FN. - -2003-04-08 Steven Tamm - - * mac.c (init_mac_osx_environment): Switch libexec and bin so - that self-contained application finds libexec files. - -2003-04-08 Kenichi Handa - - * coding.c (code_convert_region_unwind): - Set Vlast_coding_system_used to the argument. - (code_convert_region): If post-read-conversion function changed - the value of last-coding-sytem, keep the new value in - coding->symbol so that it won't be overridden. - (run_pre_post_conversion_on_str): Likewise. - (coding_system_accept_latin_extra_p): New function. - (find_safe_codings): Pay attention to characters registered in - latin-extra-code-table. - -2003-04-07 Thien-Thi Nguyen - - * Makefile.in (md5.o): Add missing dependency info. - -2003-04-06 Richard M. Stallman - - * xselect.c (x_handle_selection_request): Move UNGCPRO to very end. - - * marker.c (verify_bytepos): New function. - - * intervals.c (set_intervals_multibyte_1): When becoming - multibyte, adjust right and left child sizes to a whole set of - characters. If an interval gets zero total-length, delete it. - If an interval consists of just its children, delete one of them. - - * intervals.h (CHECK_TOTAL_LENGTH): New macro. - * intervals.c: Add many calls to CHECK_TOTAL_LENGTH. - - * alloc.c (VALIDATE_LISP_STORAGE): Macro deleted. - All calls deleted. - (lisp_malloc): Do the work here directly. - -2003-04-06 Gareth Jones (tiny change) - - * fns.c (Flength): Return SUB_CHAR_TABLE_ORDINARY_SLOTS for sub - char tables. - -2003-04-04 Kenichi Handa - - * editfns.c (Fformat): Use a copy of FORMAT string so that we can - destructively change "%S" to "%s". - -2003-04-03 Miles Bader - - * xfaces.c (choose_face_font): Make sure *NEEDS_OVERSTRIKE is - always set. - -2003-04-01 Dave Love - - * xfns.c (xpm_lookup_color): Grok "opaque". - -2003-03-31 Andrew Choi - - * frame.c (x_report_frame_params) [HAVE_CARBON]: Do not report - parent window ID. - - * macfns.c (syms_of_macfns): Remove call to init_x_parm_symbols. - - * macterm.h (struct mac_output): Define x_pixels_diff and - y_pixels_diff. - -2003-03-31 Juanma Barranquero - - * makefile.w32-in ($(BLD)/frame.$(O)): Add dependency on - blockinput.h and files included from it. - -2003-03-31 Kim F. Storm - - The following changes consolidates the common code related to - frame-parameter handling from the xfns.c, w32fns.c, and macfns.c - files into frame.c. - - * frame.c: Include blockinput.h. - (Vx_resource_name, Vx_resource_class, Qx_frame_parameter) - (Qx_resource_name, Qface_set_after_frame_default): Define vars here. - (Qauto_raise, Qauto_lower, ...): Define all frame parameter - related vars here. - (struct frame_parm_table, frame_parms): New table for describing - frame parameters and their associated Q-variable. - The order of the parameters corresponds to the sequence of the - frame_parm_handlers table in redisplay_interface. - (x_fullscreen_move, x_set_frame_parameters) - (x_report_frame_params, x_set_fullscreen, x_set_line_spacing) - (x_set_screen_gamma, x_set_font, x_set_fringe_width) - (x_set_border_width, x_set_internal_border_width, x_set_visibility) - (x_set_autoraise, x_set_autolower, x_set_unsplittable) - (x_set_vertical_scroll_bars, x_set_scroll_bar_width, x_icon_type): - Generic functions for processing of frame parameters. - (validate_x_resource_name, xrdb_get_resource, Fx_get_resource) - (display_x_get_resource, x_get_resource_string): Functions for - generic access to X resources. - (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg) - (x_default_parameter, Fx_parse_geometry): Functions for generic - access to frame parameters. - (x_figure_window_size): Generic calculation of frame size. - Fixed to add space needed for tool bar. Also setup size_hint_flags. - (syms_of_frame): Intern and staticpro frame parameter variables. - Defvar_lisp Vx_resource_class and Vx_resource_name here. - Defsubr Sx_get_resource and Sx_parse_geometry. - - * frame.h (Qauto_raise, Qauto_lower, ...): Declare extern all frame - parameter related vars defined in frame.c. - (EMACS_CLASS): Define here. - (enum FULLSCREEN_*): Define here. - (x_set_scroll_bar_default_width, x_wm_set_icon_position) - (x_set_offset, x_new_font, x_new_fontset): Add prototypes. - (x_fullscreen_adjust, x_set_frame_parameters, x_report_frame_params) - (x_set_fullscreen, x_set_line_spacing, x_set_screen_gamma, x_set_font) - (x_set_fringe_width, x_set_border_width, x_set_internal_border_width) - (x_set_visibility, x_set_autoraise, x_set_autolower) - (x_set_unsplittable, x_set_vertical_scroll_bars) - (x_set_scroll_bar_width, x_icon_type, validate_x_resource_name) - (x_figure_window_size): Add prototypes. - - * dispextern.h (frame_parm_handler): New typedef. - (struct redisplay_interface): New member frame_parm_handlers. - (enum resource_types): Move declaration here. - (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg) - (x_default_parameter): Add prototypes. - - * window.c: Remove extern decl for frame parameter vars. - (change_window_heights): New generic function; - replaces x_change_window_heights. All users changed. - - * window.h (change_window_heights): Add prototype. - - * xfaces.c: Remove extern decl for frame parameter vars. - - * xterm.h (EMACS_CLASS): Remove. Use generic define. - (struct w32_display_info): Fix type of xrdb member. - (enum FULLSCREEN_*): Remove. - Remove prototypes for generic functions (in frame.h). - - * xfns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame - parameters now defined in frame.h and frame.c. - (Vx_resource_name): Remove. Use generic var. - (enum x_frame_parms): Remove (bogus, unused enum). - (check_x_display_info): Make non-static (for frame.c). - (struct x_frame_parm_table, x_frame_parms): Remove. - (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params) - (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font) - (x_set_border_width, x_set_internal_border_width, x_set_visibility) - (x_change_window_heights, x_set_autoraise, x_set_autolower) - (x_set_vertical_scroll_bars, x_set_scroll_bar_width) - (validate_x_resource_name, Fx_get_resource, x_get_resource_string) - (x_default_parameter, Fx_parse_geometry, x_figure_window_size): - Remove. Use generic functions instead. - (enum resource_types): Remove. - (x_set_scroll_bar_default_width): New global function (for frame.c). - (Fx_create_frame): Depend on x_figure_window_size to add space for - toolbar and setup size_hint_flags. - (x_frame_parm_handlers): New table for redisplay_interface. - (syms_of_xfns): Don't intern/staticpro removed vars. - - * xterm.c: Remove unnecessary extern declarations. - (x_fullscreen_adjust): Remove. Use generic instead. - (x_redisplay_interface): Add x_frame_parm_handlers member. - - * w32gui.h (XrmDatabase): New (dummy) typedef. - - * w32term.h (EMACS_CLASS): Remove. Use generic define. - (struct w32_display_info): Fix type of xrdb member. - (enum FULLSCREEN_*): Remove. - (x_fullscreen_adjust): Remove prototype. - - * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame - parameters now defined in frame.h and frame.c. - (Vx_resource_name): Remove. Use generic var. - (enum x_frame_parms): Remove (bogus, unused enum). - (check_x_display_info): Make non-static (for frame.c). - (struct x_frame_parm_table, x_frame_parms): Remove. - (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params) - (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font) - (x_set_border_width, x_set_internal_border_width, x_set_visibility) - (x_change_window_heights, x_set_autoraise, x_set_autolower) - (x_set_vertical_scroll_bars, x_set_scroll_bar_width) - (validate_x_resource_name, Fx_get_resource, x_get_resource_string) - (x_default_parameter, Fx_parse_geometry, x_figure_window_size): - Remove. Use generic functions instead. - (enum resource_types): Remove. - (x_set_scroll_bar_default_width): New global function (for frame.c). - (Fx_create_frame): Depend on x_figure_window_size to add space for - toolbar and setup size_hint_flags. - (w32_frame_parm_handlers): New table for redisplay_interface. - (syms_of_w32fns): Don't intern/staticpro removed vars. - - * w32term.c: Remove unnecessary extern declarations. - (x_fullscreen_adjust): Remove. Use generic instead. - (x_redisplay_interface): Add w32_frame_parm_handlers member. - - * w32reg.c (x_get_string_resource): Use XrmDatabase. - - * macgui.h (XrmDatabase): New (dummy) typedef. - - * macterm.h (EMACS_CLASS): Remove. - (struct mac_display_info): Add xrdb member. - (struct mac_output): Add want_fullscreen member. - - * macfns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame - parameters now defined in frame.h and frame.c. - (Vx_resource_name): Remove. Use generic var. - (check_x_display_info): Make non-static (for frame.c). - (struct x_frame_parm_table, x_frame_parms): Remove. - (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params) - (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font) - (x_set_border_width, x_set_internal_border_width, x_set_visibility) - (x_change_window_heights, x_set_autoraise, x_set_autolower) - (x_set_vertical_scroll_bars, x_set_scroll_bar_width) - (validate_x_resource_name, Fx_get_resource, x_get_resource_string) - (x_default_parameter, Fx_parse_geometry, x_figure_window_size): - Remove. Use generic functions instead. - (enum resource_types): Remove. - (x_set_scroll_bar_default_width): New global function (for frame.c). - (mac_frame_parm_handlers): New table for redisplay_interface. - (syms_of_macfns): Don't intern/staticpro removed vars. - - * macterm.c: Remove unnecessary extern declarations. - (x_redisplay_interface): Add mac_frame_parm_handlers member. - - * Makefile.in (frame.o): Add dependency on blockinput.h and files - included from it (atimer.h and systime.h). - -2003-03-30 Andreas Schwab - - * xdisp.c (x_insert_glyphs): Fix swapped width and height - parameters for shift_glyphs_for_insert. - - * macterm.c (x_redisplay_interface): Add missing entry for - draw_vertical_window_border. - -2003-03-29 Kai Gro,A_(Bjohann - - * fileio.c (Fexpand_file_name): In the no-handler case, after - expanding, look again for a handler and invoke it. This is needed - for filenames like "/foo/../user@host:/bar/../baz" -- the first - expansion produces "/user@host:/bar/../baz" which needs to be - expanded again for the finame result "/user@host:/baz". - -2003-03-28 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_item_expose_callback): Reduce size - of area to be redrawn for better performance. - -2003-03-28 Stefan Monnier - - * xterm.c (take_vertical_position_into_account): Remove. - (xt_action_hook): Call set_vertical_scroll_bar if needed. - (XM_SB_MIN, XM_SB_RANGE): Remove (min is now set to 0). - (xm_scroll_callback, x_create_toolkit_scroll_bar) - (x_set_toolkit_scroll_bar_thumb): Simplify. - (x_scroll_bar_expose): Only compile if !USE_TOOLKIT_SCROLL_BARS. - (XTread_socket): Remove unused var. - (x_make_frame_invisible): Replace goto with else. - - * xdisp.c (set_vertical_scroll_bar): New fun. - (redisplay_window): Use it. - -2003-03-26 Richard M. Stallman - - * xdisp.c (update_tool_bar): Recompute tool bar if - update_mode_lines is set. Set w->update_mode_line - only if the tool bar contents actually change. - (update_menu_bar): Undo previous change. - -2003-03-26 Jan Dj,Ad(Brv - - * gtkutil.c (xg_resize_widgets): Don't call xg_frame_cleared. - (xg_frame_set_char_size): Calculate scroll bar width before frame - width. Call SET_FRAME_GARBAGED and cancel_mouse_face. - (xg_separator_p): Check for all documented separator types. - (xg_update_scrollbar_pos): Variable gheight not needed, use height. - (update_frame_tool_bar): Don't call gdk_window_process_all_updates. - - * xdisp.c (update_menu_bar): Set w->update_mode_line to Qt - so tool bar gets updated. - -2003-03-26 Stefan Monnier - - * data.c (store_symval_forwarding): Re-instate part of the code - that was deleted with too much enthusiasm. - -2003-03-25 Stefan Monnier - - * data.c (store_symval_forwarding): Delete special read-only - hack for type == -1, since we now use ->constant instead. - (Fkill_local_variable): Don't use XBUFFER if it can be nil. - - * buffer.c (overlays_in): Declare static. - (syms_of_buffer) : Use the symbol's - `constant' field rather than the variable's `type' field. - -2003-03-24 Andrew Choi - - * config.in [MAC_OSX]: Do not redefine bcopy, bzero, and bcmp. - - * dispextern.h [HAVE_CARBON]: Include Carbon.h. - - * fns.c [MAC_OSX]: Do not redefine vector. - - * keyboard.c [MAC_OSX]: Handle SIGINT with interrupt_signal. - - * macgui.h: Remove definition of No_Cursor. - - * macterm.h: Include Carbon.h. Replace (struct Cursor *) by Cursor. - - * xdisp.c: Define No_Cursor. - (x_write_glyphs, notice_overwritten_cursor) - (draw_phys_cursor_glyph, note_mode_line_or_margin_highlight) - (note_mouse_highlight): Remove Mac-specific code. - (note_mouse_highlight): Use bcmp instead of == to compare Cursors. - -2003-03-24 John Paul Wallington - - * xdisp.c (redisplay_window): If mini window's buffer is not - empty, then redisplay it like other windows. - -2003-03-23 Kim F. Storm - - * w32term.c (w32_draw_window_cursor): Fix last change. - -2003-03-23 Kenichi Handa - - * alloc.c (make_string_from_bytes, make_specified_string): - Add `const' for the arg CONTENTS. - - * lisp.h (make_string_from_bytes, make_specified_string): - Prototypes adjusted. - -2003-03-23 Jan Dj,Ad(Brv - - * xdisp.c (get_glyph_string_clip_rect): Remove ; at end of #endif. - - * gtkutil.h: Take two more arguments to xg_update_scrollbar_pos. - (XG_SB_RANGE): New define. - - * gtkutil.c (xg_fixed_handle_expose): New function. - (xg_create_frame_widgets): Call xg_fixed_handle_expose for - expose events. - (xg_update_scrollbar_pos): Take two more arguments, left and width - of scroll bar including borders. - Clear left and right part outside scroll bar separately as some - themes have bars that are not an even number of pixels. - Don't set reallocate_redraws, don't call - gdk_window_process_all_updates. - (xg_set_toolkit_scroll_bar_thumb): Upper value is fixed, - so no need to change it. Calculate size and value with XG_SB_RANGE. - - * xterm.c (x_scroll_bar_create, XTset_vertical_scroll_bar): - Pass left and width of scroll bar including borders to - xg_update_scrollbar_pos. - -2003-03-22 Thien-Thi Nguyen - - * Makefile.in: Make sure space precedes end-of-line backslashes. - -2003-03-22 Kim F. Storm - - * xdisp.c (pixel_to_glyph_coords, glyph_to_pixel_coords): - Add generic versions here. Remove system specific versions - defined elsewhere. - - * dispextern.h (pixel_to_glyph_coords, glyph_to_pixel_coords): - Add prototypes. - - * xterm.h (STORE_NATIVE_RECT): New macro. - -2003-03-21 Kim F. Storm - - * xdisp.c (get_glyph_string_clip_rect): - Use FRAME_INTERNAL_BORDER_WIDTH. - - * dispextern.h (struct redisplay_interface): Add active_p - argument to draw_window_cursor member. All uses changed. - -2003-03-21 Kim F. Storm - - The following changes consolidate code related to writing and - inserting glyphs, exposing frame, the tool bar, the mouse face, - the output cursor, and help echo from xterm.c, w32term.c and - macterm.c into xdisp.c. It also generalizes the use of the - window_part enum instead of using numeric values throughout. - - * xdisp.c: Consolidate gui-independent code here. - Include keymap.h. - (Qhelp_echo): Import. - (mouse_autoselect_window, x_stretch_cursor_p): Declare here. - (help_echo_string, help_echo_window, help_echo_object) - (previous_help_echo_string, help_echo_pos): Declare here. - (output_cursor, last_mouse_frame, last_tool_bar_item): Declare here. - (estimate_mode_line_height): Define here. Handle windowing - systems directly (without using estimate_mode_line_height_hook). - (x_y_to_hpos_vpos, get_tool_bar_item, note_tool_bar_highlight): - (update_window_cursor, update_cursor_in_window_tree) - (fast_find_position, fast_find_string_pos) - (note_mode_line_highlight, note_mode_line_or_margin_highlight) - (expose_area, expose_line, expose_overlaps, expose_window) - (expose_window_tree, phys_cursor_in_rect_p): New generic versions; - declared static as they are only used locally in xdisp.c. - (draw_glyphs): Rename from x_draw_glyphs and make static. - (tool_bar_item_info, notice_overwritten_cursor): Make static. - (frame_to_window_pixel_xy, get_glyph_string_clip_rect) - (set_output_cursor, x_cursor_to, handle_tool_bar_click) - (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line): - (x_fix_overlapping_area, draw_phys_cursor_glyph, erase_phys_cursor) - (display_and_set_cursor, x_update_cursor, x_clear_cursor) - (show_mouse_face, clear_mouse_face, cursor_in_mouse_face_p) - (note_mouse_highlight, x_clear_window_mouse_face) - (cancel_mouse_face, x_draw_vertical_border, expose_frame) - (x_intersect_rectangles): New generic functions for use by xdisp.c - and GUI front-ends. - (syms_of_xdisp): Initialize and staticpro help_echo* variables. - Defvar_bool "x-streach-cursor" and "mouse-autoselect-window" here. - - * dispextern.h (Display_Info): Generic typedef for *_display_info. - (NativeRectangle): Generic typedef for rectangle type. - (enum window_part): Move here from window.c. - (struct redisplay_interface): New members flush_display_optional, - define_frame_cursor, clear_frame_area, draw_window_cursor, - draw_vertical_window_border, shift_glyphs_for_insert. - Rename member clear_mouse_face to clear_window_mouse_face. - (estimate_mode_line_height_hook): Remove hook. - (auto_raise_tool_bar_buttons_p): Don't declare extern. - (tool_bar_item_info): Remove prototype. - (help_echo_string, help_echo_window, help_echo_object) - (previous_help_echo_string, help_echo_pos) - (last_mouse_frame, last_tool_bar_item, mouse_autoselect_window): - (x_stretch_cursor_p, output_cursor): Declare extern. - (x_draw_glyphs, notice_overwritten_cursor): Remove prototypes. - (x_write_glyphs), x_insert_glyphs, x_clear_end_of_line) - (x_fix_overlapping_area, draw_phys_cursor_glyph, erase_phys_cursor) - (display_and_set_cursor, set_output_cursor, x_cursor_to) - (x_update_cursor, x_clear_cursor, x_draw_vertical_border) - (frame_to_window_pixel_xy, get_glyph_string_clip_rect) - (note_mouse_highlight, x_clear_window_mouse_face, cancel_mouse_face) - (handle_tool_bar_click, clear_mouse_face, show_mouse_face) - (cursor_in_mouse_face_p, expose_frame, x_intersect_rectangles): - Add prototypes. - (mode_line_string, marginal_area_string): Fix prototypes. - - * window.c (enum window_part): Move to dispextern.h. - (coordinates_in_window): Use enum window_part member names - instead of numbers to describe return value. - (struct check_window_data): Change part member to window_part. - (check_window_containing): Return window_part unaltered. - (window_from_coordinates): Change part arg from int to enum - window_part. Allow part arg to be null. All users changed. - - * window.h (window_from_coordinates): Fix prototype. - - * term.c (estimate_mode_line_height): Move to xdisp.c. - - * keyboard.c (make_lispy_event): Use enum window_part. - - * dispnew.c (mode_line_string, marginal_area_string): Use enum - window_part instead of int in arg list. Users changed. - - * xterm.h (No_Cursor): Declare as None for X. - (struct mac_output): Replace member cross_cursor by hand_cursor. - - * xterm.c: Remove consolidated defines and code. - (BETWEEN): Remove unused macro. - (x_draw_vertical_window_border, x_shift_glyphs_for_insert) - (x_define_frame_cursor, x_clear_frame_area) - (x_draw_window_cursor): New X-specific functions for RIF. - (x_redisplay_interface): Add new members. - - * xfns.c: Setup and use hand_cursor instead of cross_cursor. - - * w32term.h (struct w32_output): Remove cross_cursor member. - - * w32term.c: Remove consolidated defines and code. - (BETWEEN): Remove unused macro. - (w32_draw_vertical_window_border, w32_shift_glyphs_for_insert) - (w32_define_frame_cursor, w32_clear_frame_area) - (w32_draw_window_cursor): New W32-specific functions for RIF. - (w32_redisplay_interface): Add new members. - - * w32gui.h (No_Cursor): Define as 0 for W32. - (XRectangle): Add X compatible rectangle type. - (NativeRectangle): Declare as RECT for W32. - (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros. - - * w32fns.c: Remove setup of cross_cursor (already has hand_cursor). - - * w32console.c: Remove consolidated defines and code. - - * msdos.h (Display_Info): Add generic typedef. - - * msdos.c: Remove consolidated defines and code. - (IT_note_mouse_highlight, dos_rawgetc): Use enum window_part. - - * macterm.h (struct mac_output): Replace member cross_cursor by - hand_cursor. - (activate_scroll_bars, deactivate_scroll_bars): Add prototypes. - - * macterm.c: Remove consolidated defines and code. - (BETWEEN): Remove unused macro. - (mac_draw_vertical_window_border, mac_shift_glyphs_for_insert) - (mac_define_frame_cursor, mac_clear_frame_area) - (mac_draw_window_cursor): New Mac-specific functions for RIF. - (x_redisplay_interface): Add new members. - - * macgui.h (No_Cursor): Define as 0 for Mac. - (XRectangle): Add X compatible rectangle type. - (NativeRectangle): Declare as Rect for Mac. - (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros. - - * macfns.c (x_set_mouse_color): Setup hand_cursor. - (x_set_cursor_color): Use x_display_and_set_cursor. - - * Makefile.in (xdisp.o): Add dependency on blockinput.h and files - included from it. Add dependency on keymap.h. - - * makefile.w32-in (xdisp.o): Add dependency on keymap.h. - -2003-03-21 Kenichi Handa - - * fileio.c (Fexpand_file_name): Fix previous change. - -2003-03-19 Kenichi Handa - - * fileio.c (Ffile_name_directory): Reconstruct file name by - make_specified_string. - (Ffile_name_nondirectory, Ffile_name_as_directory) - (Fdirectory_file_name, Fexpand_file_name) - (Fsubstitute_in_file_name): Likewise. - (Fread_file_name): Compare decoded homedir with DIR and - DEFAULT_FILENAME. - - * alloc.c (make_specified_string): If NCHARS is negative, count - the number of characters. - -2003-03-18 Jan Dj,Ad(Brv - - * gtkutil.c (xg_frame_cleared): Call gtk_widget_queue_draw for - all widgets. - - * gtkutil.h: Removed xg_ignore_next_thumb. - -2003-03-18 Kenichi Handa - - * coding.c (Vchar_coding_system_table): Remove this variable. - (Vcoding_system_safe_chars): New variable. - (intersection): Remove this function. - (find_safe_codings): Don't use Vchar_coding_system_table, but try - all codings in SAFE_CODINGS. - (Ffind_coding_systems_region_internal): Adjust for the change of - find_safe_codings. Get generic coding systems from - Vcoding_system_safe_chars. - (Fdefine_coding_system_internal): New function. - (syms_of_coding): Defsubr Sdefine_coding_system_internal. - Initialize and staticpro Vcoding_system_safe_chars. - -2003-03-18 Jan Dj,Ad(Brv - - * gtkutil.c (xg_set_toolkit_scroll_bar_thumb): Check if new values - equal old values before updating. - - * xterm.c (xg_scroll_callback): Remove xg_ignore_next_thumb. - - * gtkutil.c (xg_initialize): Remove xg_ignore_next_thumb. - -2003-03-17 Jan Dj,Ad(Brv - - * gtkutil.c: Removed handle_fixed_child, struct xg_last_sb_pos. - (xg_resize_widgets): Don't call foreach(handle_fixed_child). - (xg_gtk_scroll_destroy): Remove free of struct xg_last_sb_pos. - (scroll_bar_button_cb): Set bar->dragging to nil on button release. - (xg_create_scroll_bar): Pass bar to button event callback. - (xg_find_top_left_in_fixed): New function. - (xg_update_scrollbar_pos): Don't call gdk_window_clear on - whole scroll bar area. Get old position with - xg_find_top_left_in_fixed, calculate and only clear needed areas. - (xg_set_toolkit_scroll_bar_thumb): Do not adjust scroll bar if - dragging is in progress. Calculate whole as for Motif. - Remove code that saved last values. Call gtk_range functions to - set scroll bar sizes. - - * gtkutil.h: Removed xg_ignore_next_thumb. - -2003-03-17 Juanma Barranquero - - * makefile.w32-in ($(BLD)/xdisp.$(O)): Add dependency on blockinput.h - and files included from it. - -2003-03-18 Stefan Monnier - - * keymap.c (accessible_keymaps_1): Break cycles but without preventing - multiple occurrences of the same keymap under different prefixes. - (Faccessible_keymaps): Remove code redundant since 1994-08-03T07:39:00Z!rms@gnu.org. - -2003-03-16 Jason Rumney - - * w32gui.h: Use HDC for Display. - - * w32term.c (w32_encode_char): Prevent double-byte chars from - crashing Emacs. - - * w32fns.c (jpeg_load, png_load, slurp_file): Read image files - as binary. - -2003-03-16 Juanma Barranquero - - * xdisp.c (x_produce_glyphs): Use FRAME_BASELINE_OFFSET. - -2003-03-16 Kim F. Storm - - The following changes consolidate some of the gui-independent - parts of the processing and drawing of "glyph strings" from - xterm.c, w32term.c, and macterm.c into xdisp.c. - - * dispextern.h (struct glyph): Reduce face_id member from 22 to - 21 bits (this reduces number of faces from 4M to 2M). - Replace W32 specific w32_font_type member (2 bits) by generic - font_type member (3 bits) for portability. - (FONT_TYPE_UNKNOWN): New define, default for font_type member. - (enum draw_glyphs_face): Define here. - (struct glyph_string): Define here. Merge W32 and X versions. - (struct redisplay_interface): New members per_char_metric, - encode_char, compute_glyph_string_overhangs, draw_glyph_string. - (VCENTER_BASELINE_OFFSET): Define here. - (dump_glyph_string, x_get_glyph_overhangs, x_produce_glyphs) - (x_draw_glyphs, notice_overwritten_cursor): Declare prototypes here. - - * xdisp.c: Consolidate gui-independent "glyph string" code here. - (dump_glyph_string): Moved here. - (init_glyph_string, append_glyph_string_lists, append_glyph_string) - (prepend_glyph_string_lists, get_glyph_face_and_encoding) - (fill_composite_glyph_string, fill_glyph_string) - (fill_image_glyph_string, fill_stretch_glyph_string) - (left_overwritten, left_overwriting, right_overwritten) - (right_overwriting, get_char_face_and_encoding) - (set_glyph_string_background_width, compute_overhangs_and_x) - (append_glyph, append_composite_glyph, produce_image_glyph) - (take_vertical_position_into_account, append_stretch_glyph) - (produce_stretch_glyph): New generic functions (based on X version). - Call platform specific functions through rif. - (INIT_GLYPH_STRING): New macro, hides W32 details. - (BUILD_STRETCH_GLYPH_STRING, BUILD_IMAGE_GLYPH_STRING) - (BUILD_CHAR_GLYPH_STRINGS, BUILD_COMPOSITE_GLYPH_STRING) - (BUILD_GLYPH_STRINGS): Generic macros (based on X version). - (x_draw_glyphs, x_get_glyph_overhangs, x_produce_glyphs) - (notice_overwritten_cursor): - Generic functions exported to platform modules. Users changed. - - * xterm.h (FONT_DESCENT, FRAME_X_OUTPUT, FRAME_BASELINE_OFFSET) - (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE) - (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): - New macros for consolidated code. - - * xterm.c: Remove consolidated defines and code. - (x_per_char_metric, x_encode_char) - (x_compute_glyph_string_overhangs): Adapt to RIF requirements. - (x_redisplay_interface): Add new members. - - * w32gui.h (Display): Add dummy typedef for consolidation. - (XChar2b): Define alias for wchar_t for consolidation. - (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): New macros. - - * w32term.h (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY) - (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE): - New macros for consolidation. - - * w32term.c: Remove consolidated defines and code. - (BUILD_WCHAR_T, BYTE1, BYTE2): Macros removed; callers changed - to use STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2 instead. - (w32_per_char_metric): Change font_type arg to int for RIF. - (w32_encode_char): Return int according to RIF requirements. - (w32_compute_glyph_string_overhangs): Adapt to RIF. - (w32_get_glyph_overhangs): New function for RIF. Uses generic - x_get_glyph_overhangs. - (w32_redisplay_interface): Add new members. - - * macgui.h (XChar2b): Move typedef here for consolidation. - (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): New macros. - - * macterm.h (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY): - (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE): New macros for - consolidation. - - * macterm.c: Remove consolidated defines and code. - (mac_per_char_metric): New function for RIF. - (mac_encode_char): Adapt to new RIF requirements. - (mac_compute_glyph_string_overhangs): Adapt for RIF. - (x_redisplay_interface): Add new members. - -2003-03-15 Stefan Monnier - - * keymap.c (Vmenu_events): New var. - (syms_of_keymap): Initialize it. - (where_is_internal): Check more carefully what is a menu event. - -2003-03-14 Richard M. Stallman - - * lread.c (read1): After #!, exit loop on eof. - -2003-03-14 Jan Dj,Ad(Brv - - * gtkutil.h: Add declaration for xg_frame_cleared. - - * xterm.c (x_clear_frame): Call xg_frame_cleared for GTK. - - * gtkutil.c (struct xg_last_sb_pos): New structure. - (handle_fixed_child): New function. - (xg_resize_widgets): Call handle_fixed_child on all scroll bar widgets - and force a redraw on them. - (xg_gtk_scroll_destroy): Free struct xg_last_sb_pos also. - (xg_create_scroll_bar): Add struct xg_last_sb_pos to scroll bar - so we can avoid unneeded redraws. - (xg_update_scrollbar_pos): Invalidate data in xg_last_sb_pos - and force a redraw on the scroll bar. - (xg_set_toolkit_scroll_bar_thumb): Do not change/redraw scroll bar - if xg_last_sb_pos shows the positions are up to date. - (xg_frame_cleared): New function. - -2003-03-13 Kenichi Handa - - * coding.c (Fdetect_coding_region): Fix docstring. - (Fdetect_coding_string): Fix docstring. - -2003-03-13 Andreas Schwab - - * gtkutil.c: Add prototype for create_menus. - - * data.c (long_to_cons): Fix type of top. - - * xselect.c (selection_data_to_lisp_data): Use int instead of - long for an integer of size 4. - - * gtkutil.c (xg_update_frame_menubar): Add missing return value. - (xg_tool_bar_help_callback): Likewise. - -2003-03-12 Andreas Schwab - - * xterm.c (x_term_init) [USE_GTK]: Fix typo. - -2003-03-12 Kim F. Storm - - The following changes consolidate the fringe handling from - xterm.c, w32term.c, and macterm.c into xdisp.c. - - * xdisp.c: Consolidate fringe handling code here. - (left_bits, right_bits, continued_bits, continuation_bits) - (ov_bits, zv_bits): Define fringe bitmaps. - (fringe_bitmaps): New array holding fringe bitmaps. - (draw_fringe_bitmap): Draw a specific bitmap; call display - specific drawing routine via rif->draw_fringe_bitmap. - (draw_row_fringe_bitmaps): Generic replacement for - x_draw_row_fringe_bitmaps; all callers changed. - (compute_fringe_widths): Generic replacement for - x_compute_fringe_widths; all callers changed. - - * dispextern.h (enum fringe_bitmap_type): Define here. - (struct fringe_bitmap, struct draw_fringe_bitmap_params): New. - (fringe_bitmaps): Declare extern. - (struct redisplay_interface): New member draw_fringe_bitmap. - (draw_row_fringe_bitmaps, compute_fringe_widths): Declare extern. - - * xterm.c: Remove generic fringe code. - (x_draw_fringe_bitmap): Only perform actual fringe drawing. - (x_redisplay_interface): Add x_draw_fringe_bitmap member. - - * w32term.c: Remove generic fringe code. - (w32_draw_fringe_bitmap): Only perform actual fringe drawing. - (w32_redisplay_interface): Add w32_draw_fringe_bitmap member. - - * macterm.c: Remove generic fringe code. - (x_draw_fringe_bitmap): Only perform actual fringe drawing. - (x_redisplay_interface): Add x_draw_fringe_bitmap member. - -2003-03-11 Stefan Monnier - - * print.c (Fprin1_to_string): Return unibyte string if possible. - -2003-03-09 David Kastrup - - * process.c (read_process_output): We have allocated enough space - for readmax and carryover, so actually use the alloted space. - -2003-03-09 Jan Dj,Ad(Brv - - * keyboard.c (make_lispy_event): Extend mouse_syms if needed for - toolkit scrollbar click. - - * xterm.c (x_window_to_scroll_bar): Call xg_get_scroll_id_for_window - for USE_GTK. - (x_scroll_bar_handle_click): Use this function for toolkit scrollbars - also. - (handle_one_xevent): ButtonPress/Release: If event is for a toolkit - scrollbar and control is pressed, call x_scroll_bar_handle_click. - - * gtkutil.h (xg_get_scroll_id_for_window): Declare. - - * gtkutil.c (xg_get_scroll_id_for_window): New function. - (xg_tool_bar_item_expose_callback): New function. - (xg_tool_bar_expose_callback): Call update_frame_tool_bar. - (xg_create_tool_bar): Connect xg_tool_bar_expose_callback to expose - on the tool bar widget. - (update_frame_tool_bar): Connect xg_tool_bar_item_expose_callback - to expose on the tool bar item widgets. - -2003-03-08 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Compare pixmap ID instead of - struct image* when deciding to update (struct image* may have been - deleted from the image cache). - - * xterm.c (handle_one_xevent): Pass ReparentNotify to Xt even if - the event isn't for a frame (i.e. for dialogs). - -2003-03-07 Kenichi Handa - - * coding.c (CODING_ADD_COMPOSITION_COMPONENT): If the number of - composition components reaches the limit, terminate composing. - (COMPOSITION_OK): New macro. - (detect_coding_iso2022): Use it if an escape sequence for - composition is found. - (coding_restore_composition): Adjust the number of composition - components if it is not sane. - -2003-03-06 Juanma Barranquero - - * w32term.h (struct w32_display_info): Add xrdb member to support - passing resources via -xrm on Windows. - - * w32term.c (w32_make_rdb): New function. - (w32_term_init): Use it to initialize xrdb member of w32_display_info - struct. Delete leftover code. - - * w32fns.c (Fx_get_resource, x_get_resource_string): Pass xrdb to check - for resources passed on the command line. - - * w32reg.c (w32_get_rdb_resource): New function. - (x_get_string_resource): Use it, so resources passed with -xrm - supercede the ones in the registry. - -2003-03-04 Jan Dj,Ad(Brv - - * xterm.c (x_detect_focus_change): Call x_any_window_to_frame - instead of x_top_window_to_frame. - -2003-03-03 Jan Dj,Ad(Brv - - * xsmfns.c (smc_save_yourself_CB): Add --no-splash to options - when restarting Emacs. - -2003-03-03 Richard M. Stallman - - * buffer.c (Fkill_buffer): Use Frun_hook_with_args_until_failure - to run kill-buffer-query-functions. - (Qkill_buffer_query_functions): New var. - (syms_of_buffer): Init and staticpro it. - -2003-03-02 Jan Dj,Ad(Brv - - * xterm.h (XSync): Define as gdk_window_process_all_updates for GTK. - -2003-02-25 Kim F. Storm - - * xdisp.c (redisplay_window): Fix infinite loop in redisplay. - If centering point failed to make whole line visible and vscroll - is non-zero, disable vscroll and try centering point again. - - * lread.c (read1): Accept `single space' syntax like (? x). - -2003-02-25 Jan Dj,Ad(Brv - - * keyboard.c (cancel_hourglass_unwind): Surround with - #ifdef HAVE_X_WINDOWS. - -2003-02-25 Kenichi Handa - - * buffer.c (Fset_buffer_multibyte): Pay attention to the buffer - process only when "subprocesses" is defined. - -2003-02-24 Stefan Monnier - - * syntax.c (back_comment): Only check nestedness of 2nd char if needed. - -2003-02-24 Juanma Barranquero - - * callint.c (fix_command): Declare as static void and move before - Fcall_interactively. - - * xdisp.c (Qwhen): Declare external; it's now defined in callint.c. - (syms_of_xdisp): Don't initialize Qwhen. - -2003-02-23 Jan Dj,Ad(Brv - - * keyboard.c (cancel_hourglass_unwind): New function. - (command_loop_1): Cancel hourglass with unwind-protect. - -2003-02-23 Richard M. Stallman - - * callint.c (fix_command): New subroutine, from Fcall_interactively. - Detect (when ... (region-beginning)) etc. - (Fcall_interactively): Call fix_command. - (Qif, Qwhen): New variables. - (syms_of_callint): Init and staticpro them. - - * regex.c (print_partial_compiled_pattern): Output to stderr. - -2003-02-23 Kai Gro,A_(Bjohann - - * dired.c (directory_files_internal): Don't expand directory. - (Fdirectory_files, Fdirectory_files_and_attributes): Do it here - instead. From Lars Hansen . - -2003-02-22 Stefan Monnier - - * fns.c (string_to_multibyte): Remove unused var i. - (Flanginfo): Fix int/Lisp_Object mixup. - (void_call2): New fun. - (Fmap_char_table): Use it in place of call2. - - * xfaces.c (x_face_list_fonts): Fix int/Lisp_Object mixup. - - * macros.c (Fstart_kbd_macro): Remove redundant assignment. - - * keymap.c (copy_keymap_1): Make it static. - - * alloc.c (Fgarbage_collect): Don't use XSETFLOAT. - -2003-02-22 David Ponce - - * lread.c (Fload): Don't check STRING_MULTIBYTE. - -2003-02-21 Jan Dj,Ad(Brv - - * process.h: Removed subtty field from struct Lisp_Process. - - * process.c (create_process): Remove setting of subtty. - (emacs_get_tty_pgrp): New function. - (Fprocess_running_child_p, process_send_signal): - Call emacs_get_tty_pgrp instead of ioctl. - (process_send_signal): Call EMACS_KILLPG if ioctl TIOCSIGSEND fails. - -2003-02-21 Kai Gro,A_(Bjohann - - * keymap.c (Fdefine_key): Doc fix. - -2003-02-21 Juanma Barranquero - - Port of patch for RC by Klaus Zeitler . - - * s/hpux10.h: Define POLL_INTERRUPTED_SYS_CALL, not - POLLING_PROBLEM_IN_SELECT. - - * s/hpux11.h: Include hpux10-20.h instead of hpux10.h. - Delete #undef of POLLING_PROBLEM_IN_SELECT. - - * s/hpux10-20.h: New file. - - * process.c (wait_reading_process_input): - Use POLL_INTERRUPTED_SYS_CALL, not POLLING_PROBLEM_IN_SELECT. - -2003-02-20 Kenichi Handa - - * fontset.c (check_fontset_name): If NAME is nil, return the - default fontset. - (override_font_info): New function. - (Fset_fontset_font): Document that NAME nil means the default fontset. - (Ffontset_info): If FONTSET is not the default fontset, merge - FONTSET onto the copy of the default fontset, and work on that - copy. Document that NAME nil means the default fontset. - (Ffontset_font): Document that NAME nil means the default fontset. - - * process.c (setup_process_coding_systems): If the process's - in/out descriptor is -1, do nothing. - -2003-02-19 Andreas Schwab - - * lisp.h (Fcancel_kbd_macro_events, Fstring_to_multibyte): - Add prototypes. - -2003-02-19 Kenichi Handa - - * xfaces.c (try_alternative_families): Try all scalable fonts if - Vscalable_fonts_allowed is not Qt. - -2003-02-19 Jan Dj,Ad(Brv - - * xfaces.c (x_face_list_fonts): Set *pfonts to 0 if no fonts found. - -2003-02-18 Jan Dj,Ad(Brv - - * xterm.c (x_list_fonts): If maxnames is less than 0, get all font - names. - - * xfaces.c (x_face_list_fonts): Allocate struct font_name here. - (sorted_font_list): Move allocation of struct font_name to - x_face_list_fonts. - (Fx_font_family_list): Set font-list-limit to -1 to get all font names. - (Fx_list_fonts): Set maxnames to -1 to get all font names. - -2003-02-18 Kim F. Storm - - * lread.c (read1): Fix last change. - "`" is not always special. Allow "?" after a character constant. - -2003-02-18 Andrew Choi - - * unexmacosx.c (copy_data_segment): Also copy __cfstring section. - -2003-02-18 Andreas Schwab - - * window.c (window_scroll_pixel_based): Move outside a - multi-glyph character before setting new window start. - - * xdisp.c (in_display_vector_p): New function. - * dispextern.h (in_display_vector_p): Declare. - -2003-02-18 Kim F. Storm - - * lread.c (read1): Fix and relax read syntax. - Recognize "[", ";", "#", and "?" after a dotted-pair dot. - Only recognize "," after dotted-pair dot if inside backquote. - Never include "`" or "," (inside backquote) in a symbol. - Allow dotted-pair dot after a character constant. - Allow "`" and "," (inside backquote) after a character constant. - -2003-02-17 Jan Dj,Ad(Brv - - * gtkutil.c (xg_tool_bar_expose_callback): New function. - (xg_create_tool_bar): Force style of tool bar to be horizontal with - icons. Set name of tool bar to emacs-toolbar. - (update_frame_tool_bar): Connect expose event to - xg_tool_bar_expose_callback. - -2003-02-17 Richard M. Stallman - - * keyboard.c (this_command_key_count_reset): New variable. - Initiatize to 0 where this_command_key_count is set. - (read_char): Save and restore this_command_key_count_reset - around input method code. - (read_char): If this_command_key_count_reset, echo reread commands. - (Freset_this_command_lengths): Set this_command_key_count_reset to 1. - -2003-02-17 Kenichi Handa - - * fns.c (string_to_multibyte): Always return a multibyte string. - -2003-02-16 Jason Rumney - - * w32fns.c (w32_list_bdf_fonts, w32_list_fonts): - Negative max_fonts parameter means list all. - -2003-02-14 Dave Love - - * fns.c (Flanginfo): Doc fix. - -2003-02-13 Kim F. Storm - - * lread.c (read_escape): Interpret \s as a SPACE character, except - for \s-X in a character constant which still is the super modifier. - (read1): Signal an `invalid read syntax' error if a character - constant is immediately followed by a digit or symbol character. - - * search.c (Fmatch_data): Doc fix. Explicitly state that - match-data is undefined if last search failed. - - * keymap.c (Fcommand_remapping): Rename from Fremap_command. - All uses changed. - -2003-02-12 Juanma Barranquero - - * eval.c (Fdefmacro): Fix typo. - -2003-02-12 Kim F. Storm - - * macros.c (Fstart_kbd_macro): If appending, and last keyboard - macro is a string, convert meta modifiers in string when copying - the string into a vector. - -2003-02-11 Kim F. Storm - - * keymap.c (Fremap_command): Return nil if arg is not a symbol. - -2003-02-11 Kenichi Handa - - * Makefile.in (lisp, shortlisp): Add malayalam.el and tamil.el. - -2003-02-10 Kim F. Storm - - * process.c: Doc fixes. - (syms_of_process): Add `:' prefix to QCfilter_multibyte. - -2003-02-10 Kenichi Handa - - * fns.c (Fstring_to_multibyte): Fix typo in the docstring. - - * process.c (QCfilter_multibyte): New variable. - (setup_process_coding_systems): New function. - (Fset_process_buffer, Fset_process_filter): - Call setup_process_coding_systems. - (Fstart_process): Initialize the member `filter_multibyte' of - struct Lisp_Process. - (create_process): Call setup_process_coding_systems. - (Fmake_network_process): New keyward `:filter-multibyte'. - Initialize the member `filter_multibyte' of struct Lisp_Process. - Call setup_process_coding_systems. - (server_accept_connection): Call setup_process_coding_systems. - (read_process_output): If the process has a filter, decide the - multibyteness of a string to given to the filter by - `filter_multibyte' member of the process. If the process doesn't - have a filter and the result of conversion is unibyte, use - Fstring_to_multibyte (not Fstring_make_multibyte) to get the - multibyte form. - (Fset_process_coding_system): Call setup_process_coding_systems. - (Fset_process_filter_multibyte): New function. - (Fprocess_filter_multibyte_p): New function. - (syms_of_process): Intern and staticpro QCfilter_multibyte. - Defsubr Sset_process_filter_multibyte and - Sprocess_filter_multibyte_p. - - * process.h (struct Lisp_Process): New member filter_multibyte. - - * lisp.h (setup_process_coding_systems): Add prototype. - - * buffer.c (Fset_buffer_multibyte): If the current buffer has a - process, update coding systems for the process. - -2003-02-09 Kenichi Handa - - * fns.c (string_to_multibyte): New function. - (Fstring_to_multibyte): New function. - (syms_of_fns): Defsubr it. - -2003-02-08 Andreas Schwab - - * Makefile.in (EXEEXT): Define to @EXEEXT@ and use this variable - instead of the substitution. - -2003-02-08 Jan Dj,Ad(Brv - - * xterm.c (x_make_frame_visible): Call gtk_window_deiconify. - - * xmenu.c (menu_position_func): Adjust menu popup position so that - the menu is fully visible. - -2003-02-07 Jan Dj,Ad(Brv - - * xterm.c (x_text_icon, x_raise_frame, x_lower_frame) - (x_make_frame_invisible, x_wm_set_icon_position): - Use FRAME_OUTER_WINDOW instead of ifdef X_TOOLKIT/else/endif. - - * xfns.c (x_set_name, x_set_title): Ditto. - -2003-02-04 Richard M. Stallman - - * keyboard.c (echo_now): Update before_command_echo_length. - (Freset_this_command_lengths): Reset this_command_key_count etc. - immediately rather than arranging to do it later. - (before_command_key_count_1, before_command_echo_length_1) - (before_command_restore_flag): Vars deleted. - (add_command_key): Don't handle before_command_restore_flag. - (read_char, record_menu_key): Don't update before_command_key_count or - before_command_echo_length. - (read_char): Don't handle before_command_restore_flag. - - * keyboard.c (command_loop_1): Don't call adjust_point_for_property - in direct-output clauses if it wouldn't be called in the ordinary case. - -2003-02-04 Kim F. Storm - - * keyboard.c (syms_of_keyboard) : Doc fix. - -2003-02-02 Jan Dj,Ad(Brv - - * gtkutil.c (remove_from_container): Copying list is not needed. - (xg_update_menubar, xg_update_menu_item, xg_update_submenu) - (xg_modify_menubar_widgets, update_frame_tool_bar): Call g_list_free - on list returned from gtk_container_get_children to avoid memory leak. - -2003-02-01 Jason Rumney - - * w32fns.c (w32_create_pixmap_from_bitmap_data): Use alloca for - local malloc. - [HAVE_XPM]: Avoid clashes with XColor, XImage and Pixel - definitions in xpm.h. - (init_xpm_functions): New function. - (xpm_load): Sync with xfns.c. Adapt for Windows version of libXpm. - (init_external_image_libraries): Try to load libXpm.dll. - - * fileio.c (Fcopy_file) [WINDOWSNT]: Reverse logic for setting - timestamp. - -2003-01-31 Dave Love - - * syntax.c (Fskip_chars_forward) - (open-paren-in-column-0-is-defun-start): Doc fix. - -2003-01-31 Joe Buehler - - * fileio.c: Support // at start of name for Cygwin (just added proper - preprocessor tests). - - * keyboard.c: Port to Cygwin (just added proper preprocessor tests). - - * Makefile.in: Use @EXEEXT@ for Cygwin. - - * mem-limits.h: Added ifdef to define BSD4_2 for Cygwin. - - * s/cygwin.h: Added for Cygwin port. - -2003-01-31 Juanma Barranquero - - * w32fns.c (DrawText): Kludge to avoid a redefinition on Windows - when including gif_lib.h. - (init_gif_functions, init_tiff_functions): New functions. - (gif_load, tiff_load): Sync with xfns.c version. Adjust colors for - Windows. Disable color table lookups. Call library functions - through pointers determined at runtime. - (init_external_image_libraries): Try to load libungif.dll and - libtiff.dll. - -2003-01-31 Kenichi Handa - - * xdisp.c (SKIP_GLYPHS): New macro. - (set_cursor_from_row): Skip all glyphs that comes from overlay string. - -2003-01-30 Jan Dj,Ad(Brv - - * gtkutil.c (free_frame_tool_bar): Remove debug printf. - -2003-01-30 Dave Love - - * alloc.c (Vgc_elapsed, gcs_done): New variables. - (Fgarbage_collect): Use them. - (init_alloc, syms_of_alloc): Set them up. - -2003-01-30 Juanma Barranquero - - * w32fns.c (init_external_image_libraries): Add missing operator. - -2003-01-29 Jason Rumney - - * w32fns.c (init_external_image_libraries): Allow jpeg-62.dll as - an alternative name for jpeg.dll. - -2003-01-29 Kenichi Handa - - * xdisp.c (set_cursor_from_row): Pay attention to string display - properties. - -2003-01-28 Benjamin Riefenstahl - - * macterm.c (keycode_to_xkeysym_table): Add , , - . - (keycode_to_xkeysym_table): Reformat and add more comments. - (XTread_socket): Drop special case for backspace. - -2003-01-28 Andrew Choi - - * macfns.c (x_to_mac_color): Correct the order for parsing the RGB - values in old-style RGB specs. - -2003-01-27 Juanma Barranquero - - * w32fns.c (init_external_image_libraries): Try alternate names for the - jpeg dll. - -2003-01-27 Jan Dj,Ad(Brv - - * gtkutil.c (create_dialog, xg_separator_p) - (xg_item_label_same_p, xg_update_menu_item): Check for NULL string - before calling strcmp or strlen. - -2003-01-26 Jan Dj,Ad(Brv - - * gtkutil.c (update_frame_tool_bar): Call prepare_image_for_display - and handle image load failure. - -2003-01-26 Jason Rumney - - * w32fns.c (init_jpeg_functions, jpeg_resync_to_restart_wrapper): - New functions. - (jpeg_load): Sync with xfns.c version. Adjust colors for Windows. - Disable color table lookups. Call jpeg library functions - through pointers determined at runtime. - (init_external_image_libraries): Try to load jpeg.dll. - -2003-01-25 Richard M. Stallman - - * lisp.h: Declare format2 instead of format1. - - * fileio.c (barf_or_query_if_file_exists): - Call format2 instead of format1. - - * editfns.c (format2): New function, replaces format1 - but takes exactly two Lisp Objects as format args. - - * buffer.c (Fkill_buffer): Call format2 instead of format1. - -2003-01-25 Jan Dj,Ad(Brv - - * xterm.h: Change to return value of x_dispatch_event to int. - - * xterm.c (x_filter_event): New function. - (event_handler_gdk, XTread_socket): Call x_filter_event. - (x_dispatch_event): Change to return value of finish. - (event_handler_gdk): Use return value from x_dispatch_event. - - * xfns.c (x_window): Call create_frame_xic for GTK version to - initialize input methods. - - * gtkutil.h: Add (void) prototypes. - - * gtkutil.c (create_menus): Remove code that puts the help menu to - the right. - -2003-01-25 Jason Rumney - - * w32fns.c (XPutPixel): Handle monochrome images; used for masks. - [HAVE_PNG]: Sync with xfns.c version. - (png_load): Adjust colors for Windows. Use Windows - bitmaps. Disable color table lookups. - (DEF_IMGLIB_FN, LOAD_IMGLIB_FN): New macros. - (init_png_functions): New function. - (png_read_from_memory, png_load): Call png library functions - through pointers determined at runtime. - (QCloader, QCbounding_box, QCpt_width, QCpt_height): Declare. - (init_external_image_libraries): New function. - (init_xfns): Call it. - -2003-01-24 Andreas Schwab - - * minibuf.c (Fminibuffer_message): Verify type of parameter. - -2003-01-24 Jan Dj,Ad(Brv - - * gtkutil.c (xg_initialize): Initialize id_to_widget here instead - of static initializer. - -2003-01-24 Dave Love - - * s/gnu-linux.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define for more - architectures. - - * alloc.c (mark_stack) [!GC_LISP_OBJECT_ALIGNMENT && __GNUC__]: - Use __alignof__. - -2003-01-24 Kenichi Handa - - * keyboard.c (adjust_point_for_property): New second arg MODIFIED. - It it is nonzero, don't pretend that an invisible area doesn't exist. - (command_loop_1): Call adjust_point_for_property with proper - second arg. - -2003-01-22 Jason Rumney - - Sync changes with xterm.c and xfns.c. - - * w32term.c (x_draw_glyph_string_foreground) - (x_draw_composite_glyph_string_foreground): Implement overstriking. - - * w32term.c (x_write_glyphs): Clear phys_cursor_on_p if current - phys_cursor's hpos is overwritten. This is still not completely - correct, as it doesn't really make sense to use hpos at all to - get the cursor glyph (as that is relative to the width of the - characters on the line, which may have changed during the update). - - * w32term.c (notice_overwritten_cursor): Handle the special case - of the cursor being in the first blank non-text line at the - end of a window. - - * w32term.c (x_draw_hollow_cursor, x_draw_bar_cursor) - (x_draw_phys_cursor_glyph): Set phys_cursor_width here. - Compute from the x position returned by x_draw_glyphs. - - (x_display_and_set_cursor): Don't set phys_cursor_width here, - except for NO_CURSOR and system caret, to make phys_cursor_width - contain what its name suggests. - (notice_overwritten_cursor): Consider the cursor image erased if - the output area intersects the cursor image in y-direction. - - * w32term.c (note_mode_line_or_margin_highlight): Rename from - note_mode_line_highlight and extend. - - * w32term.c (last_window): New variable. - (w32_read_socket) : Generate SELECT_WINDOW_EVENTs. - (note_mouse_movement): Remove reimplemented code in #if 0. - - * w32fns.c (x_set_cursor_type): Set cursor_type_changed, - not update_mode_lines, and always set it to 1. - -2003-01-21 Jason Rumney - - * w32fns.c (IDC_HAND): Define it if system headers don't. - -2003-01-21 KOBAYASHI Yasuhiro - - * w32term.h (struct w32_output): New member hand_cursor. - (WM_EMACS_SETCURSOR): New message definition. - - * w32term.c (note_mode_line_highlight): Delete #if 0 to enable - function w32_define_cursor. - (note_mouse_highlight): Initialize, setup cursor accoding to mouse - position, change member name output_data.x to output_data.w32 and - add function w32_define_cursor. - (show_mouse_face): Delete #if 0 to enable function w32_define_cursor - and change member name output_data.x to output_data.w32. - (w32_initialize_display_info): - Setup dpyinfo->vertical_scroll_bar_cursor. - - * w32fns.c (Vx_hand_shape): New variable. - (w32_wnd_proc): Add message entries for WM_SETCURSOR and - WM_EMACS_SETCURSOR. - (x-create-frame): Setup Cursor types. - -2003-01-21 David Ponce - - * w32term.c (w32_encode_char): For DIM=1 charset, set - ccl->reg[2] to -1 before calling ccl_driver. - (Sync. with xterm.c x_encode_char change by Kenichi Handa - on 2002-09-30.) - (w32_draw_relief_rect): Declare all args. - (w32_define_cursor): New. - - * w32fns.c (w32_load_cursor): New function. - (w32_init_class): Use it. - (x_put_x_image): Declare all args. - -2003-01-21 Richard Dawe - - * Makefile.in (ALL_CFLAGS): Include MYCPPFLAGS, not MYCPPFLAG. - -2003-01-21 Jan Dj,Ad(Brv - - * gtkutil.c: Must include stdio.h before termhooks.h. - -2003-01-21 Dave Love - - * alloc.c (Fgc_status): Print zombie list. - (mark_maybe_object) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]: - Fix assignment of zombies. - (Fgarbage_collect) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]: - Don't take car of non-cons. - - * s/sol2-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define. - - * s/sunos4-0.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define. - -2003-01-20 David Ponce - - * w32menu.c (digest_single_submenu): Declare all args. - - Sync with 2002-12-23 Richard M. Stallman - changes in xmenu.c: - - (parse_single_submenu): Use individual keymap's prompt - string as pane name, if there is one. - (set_frame_menubar): Save menu_items_n_panes from each call to - parse_single_submenu and use it when calling digest_single_submenu. - -2003-01-20 Steven Tamm - - * macterm.c (XTread_socket): Check for valid, visible window - before sending a scroll-wheel event. - -2003-01-20 Richard M. Stallman - - * xdisp.c (redisplay_window): If mini window's buffer is not - a minibuffer, then redisplay it like other windows. - -2003-01-20 Jan Dj,Ad(Brv - - * gtkutil.c (xg_create_frame_widgets): Check if there is an - external tool bar before setting tool bar height. - -2003-01-19 Jan Dj,Ad(Brv - - * xterm.c (handle_one_xevent): Surround popup_activated - with #ifdef:s for non-toolkit version. - - * Makefile.in (XOBJ): Add gtkutil.o if USE_GTK. - (gtkutil.o): New file. - (TOOLKIT_DEFINES): Set to -DUSE_GTK if HAVE_GTK. - (LIBW): Set to @GTK_LIBS@ if USE_GTK. - - * gtkutil.c: New file for GTK version. - - * gtkutil.h: New file for GTK version. - - * xterm.h: Add xt_or_gtk_widget. - Include gtk files for USE_GTK. - (struct x_output): Add toolbar_height. - (struct x_output): Add GTK widgets and Gdk size_hints. - (GTK_WIDGET_TO_X_WIN, FRAME_GTK_OUTER_WIDGET, FRAME_GTK_WIDGET) - (FRAME_OUTER_WINDOW): New macros for USE_GTK. - (FRAME_OUTER_TO_INNER_DIFF_Y): Add FRAME_TOOLBAR_HEIGHT to calculation. - - * xterm.c: Include gtkutil.h for USE_GTK. - (free_frame_menubar): Declare extern void for USE_GTK. - (note_mouse_highlight): Check popup_activated for USE_GTK. - (xt_action_hook): Don't compile if USE_GTK. - (x_scroll_bar_to_input_event): Use CurrentTime for USE_GTK. - (xg_scroll_callback): New function. - (x_create_toolkit_scroll_bar): Call xg_create_scroll_bar for USE_GTK. - (x_set_toolkit_scroll_bar_thumb): Call xg_set_toolkit_scroll_bar_thumb - for USE_GTK. - (x_scroll_bar_create): Call xg_update_scrollbar_pos and - xg_show_scroll_bar for USE_GTK. - (x_scroll_bar_remove): Call xg_remove_scroll_bar for USE_GTK. - (XTset_vertical_scroll_bar): Call xg_update_scrollbar_pos for USE_GTK. - (event_handler_gdk): New function for USE_GTK. - (handle_one_xevent): Call xg_resize_widgets for USE_GTK. - (handle_one_xevent): Make sure widget is mapped before - calling x_real_positions for USE_GTK. - (XTread_socket): Add GTK event loop for USE_GTK. - (x_set_window_size): Call xg_frame_set_char_size for USE_GTK. - (x_make_frame_visible): Call gtk_widget_show_all for USE_GTK. - (x_make_frame_invisible): Call gtk_widget_hide for USE_GTK. - (x_iconify_frame): Add code for USE_GTK. - (x_free_frame_resources): Call gtk_widget_destroy for USE_GTK. - (x_wm_set_size_hint): Only compile if not USE_GTK. GTK version - is in gtkutil.c. - (x_term_init): Add initialization for GTK. - (syms_of_xterm): Set Vx_toolkit_scroll_bars for USE_GTK. - - * xmenu.c: Include gtkutil.h for USE_GTK. - (Fx_popup_menu): Use current position if x and y are nil. - (single_menu_item, single_menu_item, Fx_popup_dialog): - Check for USE_GTK. - (popup_widget_loop): New function for USE_GTK. - (x_activate_menubar): Add code for USE_GTK. - (popup_activate_callback, popup_deactivate_callback) - (menu_highlight_callback, menubar_selection_callback): - Add USE_GTK versions. - (update_frame_menubar): Call xg_update_frame_menubar for USE_GTK. - (set_frame_menubar): Call xg_modify_menubar_widgets for USE_GTK. - (free_frame_menubar): Only compile if not USE_GTK. GTK version - is in gtkutil.c. - (popup_selection_callback): New version for USE_GTK. - (create_and_show_popup_menu): New fuction, one USE_GTK version and - one USE_X_TOOLKIT version. - (xmenu_show): Call create_and_show_popup_menu. - (dialog_selection_callback): New version for USE_GTK. - (create_and_show_dialog): New fuction, one USE_GTK version and - one USE_X_TOOLKIT version. - (xdialog_show): Call create_and_show_dialog. - - * xfns.c: Include gtkutil for USE_GTK. - (x_window_to_frame, x_any_window_to_frame) - (x_non_menubar_window_to_frame, x_menubar_window_to_frame) - (x_top_window_to_frame): Add code for USE_GTK. - (x_set_background_color): Call xg_set_background_color for GTK. - (x_set_menu_bar_lines): Check for USE_GTK. - (x_set_tool_bar_lines): Call update_frame_tool_bar for USE_GTK. - (x_set_name, x_set_title): Call gtk_window_set_title for USE_GTK. - (x_window): Call xg_create_frame_widgets for USE_GTK. - (Fx_create_frame): Check for USE_GTK. - (Fx_file_dialog): New implementation for USE_GTK. - - * xdisp.c: Add check for USE_GTK for extern void set_frame_menubar. - (update_menu_bar): Add check for USE_GTK. - (update_tool_bar): Add check for USE_GTK and external tool bar. - (redisplay_tool_bar): Add check for USE_GTK and external tool bar. - (redisplay_internal): Add check for USE_GTK and popup_activated. - (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_MENU_BAR. - (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_TOOL_BAR. - (display_menu_bar): Add check for USE_GTK - - * lisp.h (Vx_resource_name): Declare extern. - - * keyboard.c (kbd_buffer_get_event): Check MENU_BAR_ACTIVATE_EVENT - for USE_GTK. - (make_lispy_event): Check MENU_BAR_EVENT for USE_GTK. - - * frame.h (struct frame): Add external_tool_bar. Check for USE_GTK. - (FRAME_EXTERNAL_TOOL_BAR): New macro. - (FRAME_EXTERNAL_MENU_BAR): Check for USE_GTK. - - * fileio.c (Fread_file_name): Add check for USE_GTK. - - * dispnew.c (adjust_frame_glyphs_for_window_redisplay): - Add check for USE_GTK. - - * config.in: Added HAVE_GTK. - - * alloc.c (Fgarbage_collect): Call xg_mark_data for GTK. - -2003-01-18 Stefan Monnier - - * charset.h (Funibyte_char_to_multibyte): Export. - -2003-01-18 Jan Dj,Ad(Brv - - * xmenu.c (mouse_position_for_popup): New function. - (Fx_popup_menu): Call mouse_position_for_popup for X and - mouse_position_hook for others. - -2003-01-17 Kim F. Storm - - * editfns.c (Finsert): Mention `string-make-multibyte' and - `string-as-multibyte' in doc string. - -2003-01-17 Kenichi Handa - - * fontset.c (syms_of_fontset): Setup Vfont_encoding_alist here. - - * editfns.c (Fformat): Convert an unibyte char argument that is - formatted by "%c" to multibyte if the total result must be a - multibyte string. - -2003-01-16 Kim F. Storm - - * process.c (set-process-filter): Document unibyte/multibyte-ness - of string argument. - -2003-01-16 Kenichi Handa - - * charset.h (NEXT_CHAR_BOUNDARY, PREV_CHAR_BOUNDARY): New macros. - - * regex.c (GET_CHAR_BEFORE_2): Use PREV_CHAR_BOUNDARY. - (re_search_2): Likewise. - -2003-01-15 Kenichi Handa - - * xdisp.c (message_dolog): Fix bug of the case that *Message* - buffer is unibyte. - -2003-01-15 Francesco Potort,Al(B - - * fns.c (Fsubstring): Clarify doc string. - - * textprop.c (Ftext_properties_at, Fnext_char_property_change) - (Fprevious_char_property_change) - (Fnext_single_char_property_change) - (Fprevious_single_char_property_change, Fnext_property_change) - (Fnext_single_property_change, Fprevious_property_change) - (Fprevious_single_property_change, Fadd_text_properties) - (Fput_text_property, Fset_text_properties) - (Fremove_text_properties, Fremove_list_of_text_properties) - (Ftext_property_any, Ftext_property_not_all): Clarify doc strings. - -2003-01-14 Kim F. Storm - - * process.h (struct Lisp_Process): New member plist replaces old - member private_vars. All uses changed. - - * process.c: Reworked 2003-01-12 change -- call a plist a plist! - (QCplist): Rename from QCvars. Change all uses. - (Fprocess_plist): Replaces Fprocess_variable. Simplified. - (Fset_process_plist): Replaces Fset_process_variable. Simplify. - (syms_of_process): Intern, staticpro, defsubr these. - (Fmake_network_process): Describe :plist arg. Remove :vars arg. - -2003-01-14 Francesco Potort,Al(B - - * m/delta.h: Remove (obsolete). - -2003-01-13 Francesco Potort,Al(B - - * fileio.c (Fdelete_directory, Fdelete_file): Document the - behaviour in front of symlinks. - (Fdelete_file): Raise an error on directories. - -2003-01-13 Dave Love - - * fns.c (Freverse): Use QUIT. - -2003-01-13 Richard M. Stallman - - * minibuf.c (minibuffer_completion_contents): - Error if point is inside prompt. - - * keyboard.c (command_loop_1): Don't redisplay directly - if there's a post-command-hook. - - * fileio.c (syms_of_fileio) : Doc fix. - (Fdo_auto_save): Add gcpros around Ffile_name_directory. - -2003-01-12 Kim F. Storm - - * process.h (struct Lisp_Process): New member private_vars. - - * process.c (QCvars): New variable. - (syms_of_process): Intern and staticpro it. - (Fset_process_contact): Removed function. - (Fprocess_variable, Fset_process_variable): New functions. - (syms_of_process): Defsubr them. - (Fstart_process): Initialize private_vars plist to nil. - (Fmake_network_process): New arg :vars to setup the private - variables for new network process. - (server_accept_connection): Copy server's private variables to - client process. - - * alloc.c (pure_alloc): Fixed 2003-01-10 changed (caused spurious - crashes). Code rewritten and simplified. Now directly aligns the - pointer and recalculates pure_bytes_used, rather than aligning the - size and adjusting the pointer. - -2003-01-11 Kim F. Storm - - * process.c (Fset_process_contact): New function. - (syms_of_process): defsubr it. - (make-network-process): Update doc. - -2003-01-10 Andreas Schwab - - * alloc.c (pure_alloc): Correct alignment for Lisp_Floats. - Reported by Berthold Gunreben . - -2003-01-10 Dave Love - - * composite.c (syms_of_composite): Make composition_hash_table weak. - -2003-01-09 Kim F. Storm - - * process.c (Fmake_network_process): Convert new port number - to host byte order for `:service t' case. From Mario Lang. - -2003-01-08 Jan Dj,Ad(Brv - - * xfns.c (Fx_file_dialog): Call XtAppNextEvent and x_dispatch_event - instead of XtAppProcessEvent. - - * xterm.c (handle_one_xevent): New function. - (x_dispatch_event): New function. - (XTread_socket): Call handle_one_xevent. - - * xterm.h (FRAME_OUTER_TO_INNER_DIFF_X/Y): New. - - * xmenu.c (Fx_popup_menu): If popping up at mouse position, - call XQueryPointer to get coordinates. - (popup_get_selection): Do not set popup_activated_flag to zero, - let popup_deactivate_callback do that. Needed for Motif. - Call x_dispatch_event instead of XtDispatchEvent. - (xmenu_show): Calculate root coordinate from frame top/left position. - -2003-01-08 Kim F. Storm - - * process.c (server_accept_connection): Fix recording of new - connection's local address in :local property of contact info. - (Fmake_network_process): Record local network address for new - client processes in :local property of contact info. - (format-network-address): Add arg OMIT-PORT. Change callers. - -2003-01-07 Dave Love - - * Makefile.in (fns.o): Depend on coding.h. - -2003-01-06 Dave Love - - * fns.c: Include coding.h. Use POINTER_TYPE*, not void*. - (Vlocale_coding_system): Declare. - (Qcodeset, Qdays, Qmonths, Qpaper): New. - (Flanginfo): New. - (syms_of_fns): Initialize new stuff. - -2003-01-07 Markus Rost - - * minibuf.c (Fread_variable): Doc fix. - - * eval.c (Fuser_variable_p): Doc change. For custom variables, - use the same test as for custom-variable-p. - -2003-01-05 Richard M. Stallman - - * xdisp.c (try_scrolling): New arg LAST_LINE_MISFIT. - Count LAST_LINE_MISFIT in scroll margin for end of window. - Move label too_near_end before setting SCROLL_MARGIN_POS. - Set LAST_LINE_MISFIT before jumping there. - - * xdisp.c (try_scrolling): Calculate amount_to_scroll better in - scroll_conservatively case. If scrolling that much doesn't change - STARTP, move it down one line. - - * xdisp.c (redisplay_window): Pass last_line_misfit arg to - try_scrolling. Make it 1 after make_cursor_line_fully_visible fails. - - * xdisp.c (setup_echo_area_for_printing): Kill Emacs if no - selected frame. - - * keymap.c (apropos_predicate, apropos_accumulate): Make them static. - (syms_of_keymap): Staticpro them. - (Fapropos_internal): Initialize them and clear them out. - Don't GCPRO them. - - * buffer.c (syms_of_buffer) : Doc fixes. - - * lisp.h: New misc type Lisp_Save_Value. - (enum Lisp_Misc_Type): Add Lisp_Misc_Save_Value. - (XSAVE_VALUE): New macro. - (struct Lisp_Save_Value): New data type. - (union Lisp_Misc): Add u_save_value alternative. - (make_save_value): Declare. - - * alloc.c (make_save_value): New function. - - * xterm.c (x_catch_errors): Save dpy using make_save_value. - (x_catch_errors_unwind): Call XSync. - -2003-01-01 Richard M. Stallman - - * window.c (window_scroll_pixel_based): Partially undo last change. - - * keyboard.c (command_loop_1): Call adjust_point_for_property - in direct action cases for Qforward_char and Qbackward_char. - Set already_adjusted so it won't be done twice. - -2002-12-30 Richard Dawe - - * src/config.in (!HAVE_SIZE_T): Fix order of arguments in - type definition of size_t. - -2003-01-02 Steven Tamm - - * macterm.c (syms_of_macterm): Provide the feature "mac-carbon" to - distinguish Carbon GUI builds from X11 builds on darwin. - -2002-12-30 Steven Tamm - - * macterm.c (syms_of_macterm): Set mac-wheel-button-is-mouse-2 - to default to t. - -2002-12-29 Francesco Potort,Al(B - - * data.c (Fstring_to_number, Fminus): Better English in doc strings. - -2002-12-28 Steven Tamm - - * Makefile.in (macosx-bundle): Fix Mac OS X/Carbon port to - allow building in a different directory than source. Uses some - GNU Make extensions, but there is no other make on Mac OS X. - -2002-12-26 Francesco Potort,Al(B - - * data.c (Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local) - (Fsetq_default, Fmake_local_variable, Fkill_local_variable) - (Fmake_variable_frame_local, Faset, Fnumber_to_string, Fminus) - (Fstring_to_number): Mention the returned value in the doc strings. - -2002-12-23 Richard M. Stallman - - * buffer.c (syms_of_buffer) - : Doc fix. - - * xmenu.c (parse_single_submenu): Use individual keymap's prompt - string as pane name, if there is one. - (set_frame_menubar): Save menu_items_n_panes from each call to - parse_single_submenu and use it when calling digest_single_submenu. - - * window.c (window_scroll_pixel_based): Fix check for reaching BEGV. - Don't try to make last line fully visible if it is past end of window. - -2002-12-22 Steven Tamm - - * macmenu.c (MIN_POPUP_SUBMENU_ID): Add. - (mac_menu_show): Add support for hierarchical popup menus. - (add_menu_item): Remove indentation support. - (fill_submenu, fill_menu): Create hierarchical menus - instead of using indentation. - -2002-12-22 Richard M. Stallman - - * xdisp.c (try_cursor_movement): Don't call try_window here. - (redisplay_window): Never redisplay minibuffer when inactive. - - * window.c (select_window_1): Undo 9/21 change. - -2002-12-22 Steven Tamm - - * macterm.c (XTread_socket): Call KeyTranslate for control and - meta to deal correctly shifted non-alpha characters, like C-S-5 - being treated like C-%. Do not look for shift key to deal - with masking off control-key with mac-reverse-ctrl-meta. - -2002-12-21 Richard M. Stallman - - * xmenu.c (popup_get_selection): Now static. New arg DO_TIMERS. - If it is non-nil, run timers. Use an unwind-protect to requeue - the events that were read ahead. - (popup_get_selection_unwind): New subroutine. - (popup_get_selection_queue): File-scope variable now holds that queue. - (xmenu_show): Pass 0 for DO_TIMERS to popup_get_selection. - (xdialog_show): Pass 1 for DO_TIMERS to popup_get_selection. - Use an unwind-protect to pop down the dialog box. - (xdialog_show_unwind): New subroutine implements that. - - * xdisp.c (row_containing_pos): Change exit test using last_y. - (try_window_id): Abort if row_containing_pos returns null. - - * lread.c (load_error_handler): New function. - (Fload): Handle errors in Fsubstitute_in_file_name. - Don't expect Fsignal to return. - - * eval.c: Errors and throws work right with interrupt blocking. - (struct catchtag): New elt interrupt_input_blocked. - (unwind_to_catch): Restore interrupt_input_blocked from saved value. - (internal_catch, Fcondition_case, internal_condition_case) - (internal_condition_case_1, internal_condition_case_2): Save it. - (Fsignal): Don't do TOTALLY_UNBLOCK_INPUT. - - * editfns.c (Fformat): Add parens. - - * dired.c (file_name_completion): Fix that change. - Delete special quit-handling code; just use QUIT. - -2002-12-21 Tak Ota - - * dired.c (file_name_completion): Close directory on error - just as in directory_files_internal. - -2002-12-19 David Kastrup - - * window.c (Fset_window_configuration): Set old_point to correct - value when new_current_buffer == current_buffer. - -2002-12-17 Ben Key - - Revisited my earlier fix for the following entry in etc/PROBLEMS: - "Emacs built on Windows 9x/ME crashes at startup on Windows XP, - or Emacs builtpart of on XP crashes at startup on Windows 9x/ME." - - These changes were in part based upon suggestions made by Peter - 'Luna' Runestig [peter@runestig.com]. - - * w32.c (g_b_init_is_windows_9x, g_b_init_open_process_token) - (g_b_init_get_token_information, g_b_init_lookup_account_sid) - (g_b_init_get_sid_identifier_authority ): Add several static - global variables. - - * w32.c (globals_of_w32): New function. Used to initialize those - global variables that must always be initialized on startup even - when the global variable initialized is non zero. Its primary - purpose at this time is to set the global variables - g_b_init_is_windows_9x, g_b_init_open_process_token, - g_b_init_get_token_information, g_b_init_lookup_account_sid, and - g_b_init_get_sid_identifier_authority to 0 on startup. - Called from main. - - * w32.c (is_windows_9x): Perform initialization only if - g_b_init_is_windows_9x is equal to 0. On initialization set - g_b_init_is_windows_9x equal to 1. - - * w32.c (open_process_token): Perform initialization only if - g_b_init_open_process_token is equal to 0. On initialization set - g_b_init_open_process_token equal to 1. - - * w32.c (get_token_information): Perform initialization only if - g_b_init_get_token_information is equal to 0. On initialization - set g_b_init_get_token_information equal to 1. - - * w32.c (lookup_account_sid): Perform initialization only if - g_b_init_lookup_account_sid is equal to 0. On initialization - set g_b_init_lookup_account_sid equal to 1. - - * w32.c (get_sid_identifier_authority): Perform initialization - only if g_b_init_get_sid_identifier_authority is equal to 0. - On initialization set g_b_init_get_sid_identifier_authority equal to 1. - - * w32fns.c (globals_of_w32fns): New function. Used to initialize - those global variables that must always be initialized on startup - even when the global variable initialized is non zero. - Its primary purpose at this time is to initialize the global variable - track_mouse_event_fn. - - * w32fns.c (w32_wnd_proc): Remove initialization of - track_mouse_event_fn from the handler for the WM_SETFOCUS message. - - * w32fns.c (syms_of_w32fns): Call globals_of_w32fns. - - * w32menu.c (globals_of_w32menu): New function. Used to - initialize those global variables that must always be initialized - on startup even when the global variable initialized is non zero. - Its primary purpose at this time is to initialize the global - variables get_menu_item_info and set_menu_item_info. - - * w32menu.c (initialize_frame_menubar): Remove initialization of - get_menu_item_info and set_menu_item_info. - - * w32menu.c (syms_of_w32menu): Call globals_of_w32menu. - - * w32.h (globals_of_w32, globals_of_w32fns, globals_of_w32menu): - Declare them. - - * emacs.c (main): Call globals_of_w32 prior to calling - init_environment if WINDOWSNT is defined. Call globals_of_w32fns - and globals_of_w32menu if initialized is non zero and HAVE_NTGUI - is defined. - - * w32term.c (x_update_window_begin): Fix Windows API error - detected by BoundsChecker. Test to determine if - w32_system_caret_hwnd is NULL prior to attempting to use - SendMessage to send the WM_EMACS_HIDE_CARET message to it. - - * w32term.c (x_update_window_end): Fix Windows API error - detected by BoundsChecker. Test to determine if - w32_system_caret_hwnd is NULL prior to attempting to use - SendMessage to send the WM_EMACS_SHOW_CARET message to it. - -2002-12-17 Kenichi Handa - - * coding.c (coding_system_require_warning): New variable. - (syms_of_coding): DEFVAR it. - - * coding.h (coding_system_require_warning): Extern it. - - * fileio.c (choose_write_coding_system): Even if - Vcoding_system_for_write is non-nil, if - coding_system_require_warning is nonzero, call - Vselect_safe_coding_system_function. - -2002-12-17 Markus Rost - - * Makefile.in (lisp, shortlisp): Add cus-face and timer. - (lisp): Add font-core. - -2002-12-13 Stefan Monnier - - * textprop.c (text_read_only): New arg `propval'. - (get_char_property_and_overlay): Remove unused var `next_overlay'. - (verify_interval_modification): Use text_read_only's new arg. - -2002-12-13 Kenichi Handa - - * coding.c (Funencodable_char_position): Set pend correctly. - -2002-12-12 Jason Rumney - - * w32term.c (last_mousemove_x, last_mousemove_y): New variables. - (w32_read_socket) : Use them to detect non-movement. - Be more careful about when help_events are generated. - -2002-12-12 Steven Tamm - - * macterm.c (mac_check_for_quit_char): Correctly set the - modifiers of the event to 0. - * mac.c (sys_select): Duplicate rfds before calling select to - ensure that rfds survive the while loop. - -2002-12-11 Kim F. Storm - - * xdisp.c (try_window_id): Don't call set_cursor_from_row if - row_containing_pos returned NULL. - -2002-12-10 Steven Tamm - - * mac.c (sys_read): Fix sys_read to not call select if IO is - non-blocking. - (sys_select): Fix sys_select to not use a timeout larger than - the one given. - -2002-12-10 Juanma Barranquero - - * editfns.c (Fformat): Use alloca, not _alloca. - -2002-12-09 Richard M. Stallman - - * buffer.c (Fget_buffer_create): Call Qucs_set_table_for_input - as the last thing. - -2002-12-09 Dave Love - - * s/sol2-8.h: Removed. (Not necessary.) - -2002-12-09 Matthew Swift - - * editfns.c (Fformat): Handle precision in string conversion - specifiers like libc functions do (ie, print at most that many - characters). - -2002-12-08 Richard M. Stallman - - * xdisp.c (row_containing_pos): Check more carefully - whether charpos is really in the row before returning it. - -2002-12-07 Steven Tamm - - * sysdep.c (emacs_read) [HAVE_CARBON]: Have emacs_read use sys_read. - - * eval.c (Feval) [HAVE_CARBON]: Calls mac_check_for_quit_char at - each stack frame. This may change as it could be time consuming. - - * macterm.c (mac_check_for_quit_char, quit_char_comp) - (init_quit_char_handler, mac_determine_quit_char_modifiers) - (mac_initialize): Add code to check for pressing of quit_char - in the OS event queue. - - * mac.c (sys_select): Call mac_check_for_quit_char every second - while blocking on select. - - * mac.c (sys_read): Use sys_select to test for input first - before calling read, to allow C-g to break. - -2002-12-07 Richard M. Stallman - - * minibuf.c (Fcompleting_read): Doc fix. - - * lread.c (syms_of_lread) : Doc fix. - - * fileio.c (Fcopy_file): Set immediate_quit around emacs_open call. - - * eval.c (Fdefun, Fdefmacro): Record in load-history redefining an - autoload. - - * data.c (Fdefalias): Record in load-history redefining an autoload. - - * alloca.c: Undo ifdef change accidentally made on 12-04. - -2002-12-06 Francesco Potort,Al(B - - * xfns.c (png_load): Avoid double gamma correction for PNG images. - -2002-12-04 Richard M. Stallman - - * sysdep.c (fcntl.h): Test only HAVE_FCNTL_H. - - * fileio.c (fcntl.h): Test only HAVE_FCNTL_H. - - * alloca.c: Don't use #error. - -2002-12-03 Dave Love - - * buffer.c (Qucs_set_table_for_input): New. - (Fget_buffer_create): Use it. - (Qset_buffer_major_mode_hook): Deleted. - (Fset_buffer_major_mode): Revert previous change. - (init_buffer_once): Intern ucs-set-table-for-input. - (syms_of_buffer): Delete Qset_buffer_major_mode_hook. - Add &Qucs_set_table_for_input. - -2002-12-03 Andreas Schwab - - * callint.c (Fcall_interactively): Use next_event only if less - than key_count. - -2002-12-02 Andrew Choi - - * macmenu.c (add_menu_item, fill_menubar): Truncate menu item - names to 255 characters. - - * macterm.c (XTread_socket): If all frames have been collapsed, - expand the first one before handling drag-and-drop events. - - * s/darwin.h (GETPGRP_NO_ARG): Delete. Replaced by GETPGRP_VOID, - which is detected by autoconf. - -2002-12-01 Steven Tamm - - * unexmacosx.c (copy_twolevelhints, dump_it): Now corrects the - offset in two hints table to allow prebinding to be redone and - allow the executable to be stripped. - -2002-11-29 Dave Love - - * fns.c (Frequire): Don't call LOADHIST_ATTACH if feature was - already provided. - -2002-11-29 Richard M. Stallman - - * xdisp.c (start_display): Check more intelligently for - whether the line is continued. - (move_it_vertically_backward): Clear it->continuation_lines_width. - -2002-11-28 Dave Love - - * s/amdahl.h, s/unipl5-0.h, m/sgi3000.h, s/3700.h, s/alliant-2800.h: - * s/alliant.h, s/altos.h: Deleted. (Unused/empty.) - -2002-11-27 Steven Tamm - - * fns.c (Frequire): Change nesting allowance from 2 to 3 to cause - more descriptive error output from lread.c:Fload upon most require - cycles during boostrapping. - -2002-11-27 Jason Rumney - - * fileio.c (Finsert_file_contents): Give a more appropriate error - for files bigger than 2Gb when off_t is 32 bit. - - * dired.c (Ffile_attributes): Don't return negative file sizes for - files bigger than 2Gb when off_t is 32 bit. - -2002-11-27 Dave Love - - * s/irix6-0.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define. - - * systty.h: Don't conditionally define GETPGRP_NO_ARG. - Test GETPGRP_VOID instead. - [BSD_TERMIOS]: Remove definitions (never used). - - * s/osf5-0.h (WAIT_USE_INT, SYS_SIGLIST_DECLARED, sys_siglist): - Don't define. - (GC_SETJMP_WORKS, GC_MARK_STACK): Define. - - * m/mips.h (WORDS_BIG_ENDIAN): Define conditionally. - -2002-11-25 Jason Rumney - - * w32.c (sys_write): Avoid non-blocking mode, which is not fully - supported. - -2002-11-25 Dave Love - - * unexalpha.c (update_dynamic_symbols): Cast arg of fatal_unexec. - - * Makefile.in (TEMACS_LDFLAGS): Update last change. - -2002-11-25 Andreas Schwab - - * m/ia64.h: Restore `#ifndef NOT_C_CODE' deleted by last change. - -2002-11-24 Steven Tamm - - * unexmacosx.c (unexec_realloc): Use malloc_default_zone to - determine the size of pointers alloced in unexed space instead - of using possibly invalid emacs_zone pointers. This fixes the - binary incompatibility problems caused by updates to libSystem.B. - -2002-11-24 Richard M. Stallman - - * search.c (Fstring_match): Doc fix. - - * callint.c (Fcall_interactively): If a command fails because - `*' detects a read-only buffer, but RECORD_FLAG is set, - record it anyway if the args don't actually do tty input. - -2002-11-22 Dave Love - - * sysdep.c (stuff_char) [PROTOTYPES]: Provide ISO C arglist. - - * keyboard.c (interrupt_signal): Provide forward declaration. - (kbd_buffer_store_event): Don't declare interrupt_signal. - - * xdisp.c (store_frame_title_char) [PROTOTYPES]: Provide ISO C arglist. - -2002-11-21 Richard M. Stallman - - * eval.c (interactive_p): Skip any number of bytecode - and special form frames, in any order. - -2002-11-20 Jason Rumney - - * w32fns.c (convert_mono_to_color_image): New function. - (xbm_load, xbm_load_image): Use it when foreground or background - is explicitly set. - -2002-11-19 Dave Love - - * s/usg5-4.h, sco4.h (bcopy, bzero, bcmp): Don't define. - -2002-11-18 Jason Rumney - - * w32fns.c (x_build_heuristic_mask): Filter palette info from color. - (XPutPixel): Swap blue and red. - (xpm_format, pbm_format, png_format, jpeg_format, tiff_format) - (gif_format, gs_format): Use IMAGE_ASCENT_VALUE. - (xpm_image_p, pbm_image_p, png_image_p, jpeg_image_p) - (tiff_image_p, gif_image_p, gs_image_p): Don't check ascent. - -2002-11-18 Dave Love - - * m/orion105.h (HAVE_ALLOCA): Don't define. - - * m/m68k.h, m/arm.h, mtekxd88.h, m/tower32v3.h: Don't define alloca. - - * m/intel386.h: Don't include alloca.h or define alloca. - - * m/ia64.h: Don't include alloca.h, stdlib.h. Don't declare - malloc, realloc, calloc. - - * m/hp800.h, m/sr2k.h, m/ns16000.h, m/wicat.h (bcopy, bzero) - (bcmp): Don't define. - - * m/delta.h (bcopy, bzero, bcmp, alloca): Don't define. - - * m/amdahl.h: Don't define LIB_STANDARD. - - * m/alpha.h: Move OSF1 stuff from here to s/osf1.h. - - * s/osf1.h: Move OSF1 stuff from m/alpha.h to here. - - * s/irix4-0.h, s/irix5-0.h, m/powerpcle.h, m/sparc.h: - Don't include alloca.h. - - * s/aix3-2.h (HAVE_FSYNC): Don't define. - - * regex.c (_GNU_SOURCE): Don't define. - - * process.c (_GNU_SOURCE): Don't define. - - * fileio.c (_GNU_SOURCE, HAVE_FSYNC): Don't define. - -2002-11-18 Markus Rost - - * s/sol2-8.h: Include sol2-6.h. - -2002-11-18 Miles Bader - - * dispextern.h (struct face): Add `overstrike' field. - * xterm.c (x_draw_glyph_string_foreground) - (x_draw_composite_glyph_string_foreground): Implement overstriking. - * xfaces.c (load_face_font): Set `face->overstrike' based on - result from choose_face_font. - (best_matching_font, choose_face_font): Add `needs_overstrike' - argument, and use it to return whether overstriking is desirable - for this face/font combo. - (set_font_frame_param: Pass new argument to choose_face_font. - -2002-11-17 Ben Key - - This change is my fix for the following entry in etc/PROBLEMS: - "Emacs built on Windows 9x/ME crashes at startup on Windows XP, - or Emacs builtpart of on XP crashes at startup on Windows 9x/ME." - - * w32.c: Added wrapper functions around the win32 API functions - OpenProcessToken, GetTokenInformation, LookupAccountSid, and - GetSidIdentifierAuthority. These wrapper functions serve two - purposes: - 1. They ensure that the wrapped function can never be called - when Emacs is running on an operating system on which they are - not supported (Microsoft Windows 95 / 98 / ME). - 2. They call the wrapped functions via function pointers rather - than calling them directly. This avoids taking advantage of the - undocumented fact that although these functions are not supported - in the 9x branch of Microsoft Windows, the functions do exist in - the version of advapi32.dll that is found in the 9x branch of - Microsoft Windows. - - * w32.c (init_user_info): Replace the calls to the win32 API - functions OpenProcessToken, GetTokenInformation, LookupAccountSid, - and GetSidIdentifierAuthority with calls to the newly added - wrapper functions. - - * w32.h: Added extern declarations for the following functions: - syms_of_w32term, syms_of_w32fns, syms_of_w32select, - syms_of_w32menu, and void syms_of_fontset. - - * w32fns.c (w32_wnd_proc): Add code to reinitialize the - function pointer track_mouse_event_fn in the handler for the - WM_SETFOCUS message. - - * w32menu.c (initialize_frame_menubar): Add code to - reinitialize the function pointers set_menu_item_info and - get_menu_item_info. - -2002-11-17 Ben Key - - * sound.c: Added a partial implementation of play-sound-internal - for Microsoft Windows. Added various #ifdef / #else / #endif - code blocks to separate the code that will compile under - Microsoft Windows from the code that is specific to GNU/Linux. - Moved several blocks of code around to make this separation of code - into Windows compatible and GNU/Linux compatible code blocks easier. - - * makefile.w32-in: Include sound.c and link with WinMM.lib. - - * s/ms-w32.h: Defined the symbol HAVE_SOUND so that the newly - added support for play-sound-internal under Windows would be - included in the build of Emacs. - -2002-11-16 Jason Rumney - - * w32fns.c (w32_load_system_font): Don't disable Cleartype. - - * w32term.c (w32_get_glyph_string_clip_rect): Clip cursor tightly. - -2002-11-15 Stefan Monnier - - * keyboard.c (command_loop_1): Fix int/Lisp_Object mixup. - (adjust_point_for_property): Move out of display and invisible even if - we were already inside before (in case a property was added while - we weren't looking). Be more careful when handling invisible props. - Skip invisible text as if it really wasn't there at all. - -2002-11-15 Jason Rumney - - * w32term.c (x_draw_image_foreground) - (w32_draw_image_foreground_1): Use standard copy and invert - operations to draw images. - - * w32fns.c (x_create_x_image_and_pixmap): Fill in palette for - depth of 1. - (xbm_read_bitmap_data): Invert bits as xbm is read in. - (XPutPixel): Don't invert bits here. - -2002-11-15 Jason Rumney - - * w32term.c (x_draw_image_foreground, x_draw_image_glyph_string) - (w32_draw_image_foreground_1): Handle image masks. - (x_draw_image_glyph_string): Don't BitBlt transparently. - - * w32fns.c (w32_defined_color): Adjust RGB values for Emacs. - (x_from_xcolors): Adjust RGB values for W32. - (image_background, image_background_transparent) - (postprocess_image, x_to_xcolors, x_disable_image) - (x_build_heuristic_mask): Adapt for W32 and enable. - (x_create_x_image_and_pixmap): Mark images with palettes as such. - (xbm_load): Remove unused variable. - -2002-11-14 Richard M. Stallman - - * buffer.c (syms_of_buffer): Doc fix. - -2002-11-14 Dave Love - - * alloc.c (SETJMP_WILL_NOT_WORK): Add note. - - * xterm.c (x_draw_relief_rect, x_draw_box_rect, x_update_cursor): - * xmenu.c (unuse_menu_items, digest_single_submenu): - * xfns.c (x_put_x_image): - * xdisp.c (message2_nolog, set_message): - * undo.c (record_point): - * terminfo.c (tparam): - * syntax.c (scan_sexps_forward): - * scroll.c (calculate_scrolling, calculate_direct_scrolling): - * composite.c (update_compositions): - * cm.c (calccost, cmgoto): - * charset.c (c_string_width): Declare all args (per C99). - - * frame.h (get_specified_cursor_type, get_window_cursor_type): Declare. - - * lisp.h (get_specified_cursor_type, get_window_cursor_type): - Don't declare. - - * emacs.c (main) [!VMS]: Avoid third arg. - - * fns.c (Fcopy_sequence): Doc fix. - (Fmap_char_table): Cast `call2'. - -2002-11-14 Francesco Potort,Al(B - - * s/sol2-8.h: New file. - -2002-11-14 Kim F. Storm - - * buffer.c (syms_of_buffer) : Document symbol - dependency on `risky-local-variable' and the :propertize form. - -2002-11-12 Stefan Monnier - - * fns.c (Fmap_char_table): Don't use map_char_table's function arg. - - * syntax.c (scan_sexps_forward): Undo last patch. - Use a more obvious fix: check eob before updating the syntax table. - -2002-11-09 Stefan Monnier - - * syntax.c (scan_sexps_forward): Update syntax table before reading - a char rather than after so we don't update the table past eob. - -2002-11-09 Dave Love - - * buffer.c (Fset_buffer_major_mode): Fix last change. - - * regex.c (regexec): Fix pmatch declaration. - - * cmds.c (Fself_insert_command): Apply Vtranslation_table_for_input. - - * keyboard.c (command_loop_1): Apply Vtranslation_table_for_input - to self-inserting characters. - (syms_of_keyboard) : Doc fix. - - * coding.c (Vtranslation_table_for_input): New. - (syms_of_coding): DEFVAR it. - -2002-11-08 Juanma Barranquero - - * w32term.c (w32_draw_fringe_bitmap): Remove unused local variable - window. - -2002-11-08 Pavel Jan,Am(Bk - - * process.c (Fformat_network_address): Remove unused locals p, - cp, and i. - -2002-11-06 Dave Love - - * buffer.c (Qset_buffer_major_mode_hook): New. - (Fset_buffer_major_mode): Use it. - -2002-11-06 Richard M. Stallman - - * xterm.c (x_term_init): Use turn_on_atimers, not start_polling - and stop_polling. - - * process.c (wait_reading_process_input): - Test POLLING_PROBLEM_IN_SELECT, not hpux. - Avoid initialization for auto Lisp_Object var. - - * s/hpux11.h (POLLING_PROBLEM_IN_SELECT): Add #undef. - - * s/hpux10.h (POLLING_PROBLEM_IN_SELECT): Defined. - -2002-11-05 Richard M. Stallman - - * s/sol2-5.h (BROKEN_SIGIO): Turn off the #undef. - - * callint.c (Fcall_interactively): New local filter_specs. - (Fcall_interactively): Check for progn as well as let. - Add a gcpro. - (Qprogn): New variable. - (syms_of_callint): Staticpro and init Qprogn. - -2002-11-04 John Paul Wallington - - * lread.c (Feval_buffer): Doc fix. - -2002-11-04 Dave Love - - * keyboard.c (read_char): Always translate iff - Vkeyboard_translate_table is a char table and c is valid. - - * xterm.c (XTread_socket): Check Lisp types for Vx_keysym_table - and fix C types. - -2002-11-03 Stefan Monnier - - * xdisp.c (single_display_prop_intangible_p): Strings are intangible. - - * editfns.c (get_pos_property): Don't hardcode Qfield. - - * keyboard.c (adjust_point_for_property): Handle `display' prop on - overlays. Also handle `invisible' prop. - -2002-11-02 Stefan Monnier - - * coding.c (decode_coding_emacs_mule, decode_coding_iso2022) - (decode_coding_sjis_big5, decode_eol): Allow lone \r in DOS EOL. - -2002-11-01 Andreas Schwab - - * editfns.c (Fmessage): Revert last change to properly handle %%. - -2002-11-01 Stefan Monnier - - * xmenu.c (unuse_menu_items): New fun. - (menu_items_inuse): New var. - (syms_of_xmenu): Initialize it. - (init_menu_items): Use it to detect re-entrance. - (Fx_popup_menu, Fx_popup_dialog, set_frame_menubar): Reset when done. - (Fx_popup_menu): Remove spurious XSETFRAME. - - * editfns.c (find_field): Make an exception for nil fields. - -2002-11-01 Dave Love - - * m/gec63.h: Deleted. - -2002-10-31 Dave Love - - * xterm.c (XTread_socket): Fix last change. - (xaw_scroll_callback): Cast call_data to long to avoid warning. - -2002-10-31 Stefan Monnier - - * process.c (Fformat_network_address): Fix int/Lisp_Object mixup. - -2002-10-30 Stefan Monnier - - * editfns.c (overlays_around, get_pos_property): New funs. - (find_field): Use them. - Also be careful not to modify POS before its last use. - (Fmessage): Don't Fformat if there's nothing to format. - -2002-10-30 Dave Love - - * process.c [HAVE_SYS_WAIT]: Include sys/wait.h. - [HAVE_PTY_H]; Include pty.h. - - * lread.c (Fload) : Close fd. - - * xterm.c (Qeql): Declare. - (Vx_keysym_table): New. - (syms_of_xterm): Initialize it. - (XTread_socket): Use it. Deal with ASCII keysyms. - (XSetIMValues) [HAVE_X11R6]: Prototype. - - * keyboard.c (lispy_accent_codes, lispy_accent_keys): Extended. - (lispy_kana_keys): Comment out. - (make_lispy_event) [XK_kana_A]: Comment out. - (modify_event_symbol) : - Fix sprintf call. - - * s/osf5-0.h (C_SWITCH_SYSTEM): Revert last change (fixed by - regexp.h change). - (TERMINFO, LIBS_TERMCAP): Define. - - * s/usg5-4.h (bcopy, bzero): Define conditional on HAVE_BCOPY. - (bcmp): Define conditional on HAVE_BCMP. - (NO_SIOCTL_H): Don't define. - (TIOCSIGSEND): Don't make conditional on IRIX6. - - * s/sol2-5.h: Don't include strings.h. - (bcopy, bzero, bcmp) [HAVE_BCOPY]: Don't undef. - - * s/irix6-0.h (IRIX6): Don't define. - (bcopy, bcmp, bzero): Don't undef. - - * s/irix6-5.h: Don't include strings.h. - (IRIX6): Don't define. - (bcopy, bcmp, bzero): Don't undef. - - * syntax.c (Fforward_comment): Doc fix. - -2002-10-29 Kim F. Storm - - * process.c (Fsignal_process): Allow PROCESS to be specified by - name in addition to pid (as integer or string). - -2002-10-28 Harald Maier (tiny change) - - * w32heap.c: Don't redefine _heap_init and _heap_term on MSVC 7 build - environments. - -2002-10-27 Kim F. Storm - - * xterm.c (note_mouse_highlight): Don't use mouse-face if hidden. - - * w32term.c (note_mouse_highlight): Don't use mouse-face if hidden. - - * msdos.c (IT_note_mouse_highlight): Don't use mouse-face if hidden. - - * macterm.c (note_mouse_highlight): Don't use mouse-face if hidden. - -2002-10-26 Richard M. Stallman - - * editfns.c (Fformat): Detect invalid format letters for floats. - -2002-10-25 Kenichi Handa - - * xfns.c (x_set_name): Encode by Qcompound_text unconditionally. - (x_set_title): Likewise. - -2002-10-25 Juanma Barranquero - - * macgui.h: - * w32gui.h: Remove definition of XColor. - - * dispextern.h [!HAVE_X_WINDOWS]: Define XColor. - -2002-10-24 Kim F. Storm - - * xdisp.c (get_window_cursor_type): New arg ACTIVE_CURSOR. - Callers changed (supply dummy arg). - - * lisp.h (get_window_cursor_type): Update prototype. - - * w32term.c (x_display_and_set_cursor): Get active_cursor from - get_window_cursor_type to track system caret. - -2002-10-24 Kim F. Storm - - * process.c (Fformat_network_address): New function. - (syms_of_process): Defsubr it. - (list_processes_1): Use it to format :local/:remote address if - service/host is not set; before Emacs would crash in that case. - (Fmake_network_process): Don't use Ffind_operation_coding_system - to setup coding system if host or service is not set. - -2002-10-23 Juanma Barranquero - - Patch suggested by Jay Finger . - - * w32term.c (w32_term_init): Pass XColor to w32_define_color, not - COLORREF. - - * macgui.h: - * w32gui.h: Add definition of XColor. - - * macfns.c: - * w32fns.c: - * xfaces.c: Remove definition of XColor. - -2002-10-22 Stefan Monnier - - * xfns.c (x_set_name, x_set_title): `icon.value' has unsigned char. - - * window.c (window_loop): For GET_LRU_WINDOW and GET_LARGEST_WINDOW>, - Only ignore truly dedicated windows. For UNSHOW_BUFFER, delete the - window if it is dedicated. - (Fshrink_window): Add preserve_before as was done for enlarge_window. - (Vspecial_display_function): Update docstring. - - * buffer.c (assoc_ignore_text_properties, Fother_buffer, Fkill_buffer) - (call_overlay_mod_hooks): Use CONSP and XCAR/XCDR. - (Fget_buffer_create, advance_to_char_boundary): Use BEG and BEG_BYTE; - -2002-10-21 Stefan Monnier - - * casefiddle.c (casify_region): Don't treat a prefix char as part - of a word when at the beginning. - -2002-10-17 Juanma Barranquero - - * lread.c (syms_of_lread): Fix typos. - -2002-10-17 Dave Love - - * Makefile.in (TEMACS_LDFLAGS): Add trailing comment. - -2002-10-16 Richard M. Stallman - - * fileio.c (Fcopy_file): Fix backward test of KEEP_TIME. - -2002-10-14 Juanma Barranquero - - * w16select.c (syms_of_win16select): Fix docstring for - `selection-coding-system'. - - * w32select.c (syms_of_w32select): Likewise. - -2002-10-14 Stefan Monnier - - * syntax.c (scan_lists): Don't get fooled by a symbol ending with - a backslash-quoted char. - (scan_lists, scan_sexps_forward): Pacify the compiler. - -2002-10-13 Richard M. Stallman - - * window.c (window_scroll): Set immediate_quit. - - * print.c (print): When backquote form is the car of a list, - output in old style. Use old_backquote_output to output all - comma forms inside it in old style too. - - * buffer.h (struct buffer): Move `undo_list' down below `name'. - -2002-10-11 Markus Rost - - * emacs.c (syms_of_emacs) : Doc fix (not run in - batch mode). - - * lread.c (Fload): Doc fix (load-suffixes). - -2002-10-10 Steven Tamm - - * macterm.c (syms_of_macterm, mac_get_mouse_btn): - Reverse functionality of mac-wheel-button-is-mouse-2 to be correct. - Also switch the default to Qnil from Qt. - -2002-10-08 Kenichi Handa - - * coding.c (code_convert_region): When we need more GAP for - conversion, pay attention to the case that coding->produced is not - greater than coding->consumed. - -2002-10-07 Richard M. Stallman - - * unexelf.c (unexec): Redo 9/16 change, but only if IRIX6_5. - -2002-10-06 Andrew Choi - - * macmenu.c (mac_menu_show): Add j to count menu items; match - menu_item_selection to it to find selected item. - -2002-10-06 Jan Dj,Ad(Brv - - * xterm.c (XTread_socket): Fix from 2002-10-03 didn't cover all - cases. The correct fix is to pass ReparentNotify to Xt. - The shell widget interprets ConfigureNotify differently depending - on if it has been reparented or not. - -2002-10-05 Markus Rost - - * editfns.c (Fformat_time_string): Doc fix. - -2002-10-05 John Paul Wallington - - * fns.c (Flength): Doc fix. - -2002-10-04 Stefan Monnier - - * keyboard.c (keyremap): New struct. - (read_key_sequence): Use it: globally replace keytran_foo with - keytran.foo and fkey_foo with fkey.foo. Rename temp vars - keytran_next and fkey_next to just `next'. - -2002-10-04 Steven Tamm - - * macterm.c (keycode_to_xkeysym_table): Change return to be - treated like an X keysym. - -2002-10-03 Jan Dj,Ad(Brv - - * xterm.c (XTread_socket): For ConfigureNotify, with x and y == 0, - and USE_MOTIF, call XTranslateCoordinates to get the real x and y. - This is to also handle x/y changes that occur because of a resize. - -2002-10-02 John Paul Wallington - - * frame.c (Vdelete_frame_functions): New variable. - (syms_of_frame): Initialize and defvar it. - (Fdelete_frame): Use it instead of delete-frame-hook. Don't run - it when frame's `tooltip' parameter is non-nil. - - * xfns.c (x_create_tip_frame): Set `tooltip' frame parameter to t. - - * w32fns.c (x_create_tip_frame): Likewise. - - * macfns.c (x_create_tip_frame): Likewise. - -2002-09-30 Kenichi Handa - - * xterm.c (x_encode_char): For DIM=1 charset, set ccl->reg[2] to - -1 before calling ccl_driver. - - * coding.c (decode_coding_emacs_mule): Check coding->cmp_data. - Only when it is non-nil, handle composition sequence. - (setup_coding_system) <0>: Don't force composition handling. - - * Makefile.in (lisp, shortlisp): Add utf-16.elc. - -2002-09-29 Richard M. Stallman - - * search.c (Freplace_match): Adjust match data for the substitution - just made in the buffer. - - * xdisp.c (STOP_POLLING, RESUME_POLLING): New macros. - (redisplay_internal): Use them. Do RESUME_POLLING at end of function. - -2002-09-27 Richard M. Stallman - - * keyboard.c (STOP_POLLING, RESUME_POLLING): New macros. - (read_char): Use them. Do all exits thru the end of the function. - -2002-09-27 Kenichi Handa - - * xfaces.c (try_font_list): Pay attention to the case that FAMILY - is nil. - -2002-09-26 Richard M. Stallman - - * regex.h (__restrict_arr): Don't define if already defined. - - * coding.c (run_pre_post_conversion_on_str): - Save and restore Vdeactivate_mark. - -2002-09-26 John Paul Wallington - - * minibuf.c (Fminibufferp): Add an optional `buffer' argument. - -2002-09-26 Kenichi Handa - - * xfaces.c (try_font_list): New arg PREFER_FACE_FAMILY. If it is - nonzero, try face's family at first. Otherwise try FAMILY at first. - (choose_face_font): If C is a single byte char or latin-1, call - try_font_list with PREFER_FACE_FAMILY 1. - -2002-09-21 Richard M. Stallman - - * window.c (select_window_1): Don't select frame. - Set frame's selected window only when frame itself is selected. - (Fselect_window): Doc fix. - -2002-09-18 Kim F. Storm - - * process.c (make-network-process): Doc fix (there is no - network-server-log-function hook). - -2002-09-18 Richard M. Stallman - - * print.c (print): Clear out the unused parts of Vprint_number_table. - (syms_of_print): Doc fix for `print-number-table'. - - * unexelf.c (unexec): Undo previous change. - -2002-09-17 Andreas Schwab - - * m/alpha.h [LINUX]: Don't define DATA_START. - -2002-09-16 Dave Love - - * unexelf.c (unexec): Deal with .got, reinstating change from - 25-08-1999. - -2002-09-13 Richard M. Stallman - - * s/sol2-6.h (UNEXEC): Comment out definition. - - * unexsol.c (unexec): Don't downcase first letter of error msg. - - * xfaces.c (Fcolor_supported_p): Just one arg is required. - -2002-09-12 Markus Rost - - * unexsol.c: Include buffer.h, charset.h, coding.h. - -2002-09-11 Richard M. Stallman - - * unexsol.c: Don't use report_file_error; do it by hand - using dlerror. - - * process.c (wait_reading_process_input, both versions): - Before calling turn_on_atimers, call stop_polling. - - * emacs.c (syms_of_emacs) : Doc fix. - - * xdisp.c (try_scrolling): If after make_cursor_line_fully_visible - we go to too_near_end, call clear_glyph_matrix. - (redisplay_window): After make_cursor_line_fully_visible, - call clear_glyph_matrix and bypass `goto done'. - - * xfns.c (x_report_frame_params): If FRAME_SCROLL_BAR_PIXEL_WIDTH is 0 - and we have non-toolkit scroll bars, return nil for scroll-bar-width. - -2002-09-10 Richard M. Stallman - - * fileio.c (Fdo_auto_save): Catch error making directory. - Only call push_message if we need to. - At the same time, make an unwind-protect to pop it. - Rename local message_p to old_message_p. - (do_auto_save_make_dir, do_auto_save_eh): New functions. - (do_auto_save_unwind): Don't call pop_message. - - * lisp.h (pop_message_unwind): Renamed from push_message_unwind. - - * keyboard.c (Fexecute_extended_command): Use pop_message_unwind. - - * alloc.c (Fgarbage_collect): Use pop_message_unwind. - - * xdisp.c (pop_message_unwind): Renamed from push_message_unwind. - -2002-09-10 Stefan Monnier - - * regex.c (DISCARD_FAILURE_REG_OR_COUNT): Delete. - (CHECK_INFINITE_LOOP): Don't pop anything: just set `cycle' to 1. - (re_match_2_internal): Be more careful with infinite loops. - -2002-09-10 Kim F. Storm - - * macros.c (end_kbd_macro): New function. - (Fend_kbd_macro): Use it. - - * macros.h (end_kbd_macro): Declare extern. - - * keyboard.c (Fdiscard_input): If defining keyboard macro, - end and save it instead of discarding it. - -2002-09-09 Markus Rost - - * s/sol2-6.h: Fix typo. Add comment. - -2002-09-09 Richard M. Stallman - - * regex.c (regnum_t): Use signed int, not unsigned int. - - * s/sol2-6.h: New file. - - * s/sol2-5.h (UNEXEC): Definition deleted. - -2002-09-08 Kim F. Storm - - * macros.c (executing_macro_index): Change type to EMACS_INT. - (syms_of_macros): DEFVAR_INT it (needed by kmacro). - - * macros.h (executing_macro_index): Change type to EMACS_INT. - -2002-09-06 Richard M. Stallman - - * casetab.c (set_case_table): Make canon table point to eqv table. - -2002-09-06 Juanma Barranquero - - * coding.c (syms_of_coding): Fix spacing. - - * composite.c (Fcompose_region_internal) - (Fcompose_string_internal): Likewise. - - * data.c (Flsh): Likewise. - - * fontset.c (Fset_fontset_font): Likewise. - - * macfns.c (Fx_server_max_request_size): Likewise. - - * w16select.c (syms_of_win16select): Likewise. - - * w32select.c (syms_of_w32select): Likewise. - - * xselect.c (syms_of_xselect): Likewise. - -2002-09-05 Richard M. Stallman - - * regex.c (set_image_of_range_1): In no-TRANSLATE case, - call EXTEND_RANGE_TABLE and return a proper value. - (set_image_of_range): Don't call set_image_of_range_1 - if no TRANSLATE or if range includes all of Latin-1. - Only call it for the Latin-1 part of the range. - For other cases, make two separate ranges, - one for the original specified characters and one for - their case-conversions. - -2002-09-04 Richard M. Stallman - - * s/sol2-5.h (UNEXEC): Use unexsol.o. - - * window.c (displayed_window_lines): Correct for one-off bug - in HEIGHT on non-window displays. - - * regex.c (set_image_of_range_1): New function. - (set_image_of_range): Use set_image_of_range_1 for Latin-1. - Return a value to indicate running out of memory. - (SET_RANGE_TABLE_WORK_AREA): Check value from set_image_of_range. - (extend_range_table_work_area): New subroutine. - (EXTEND_RANGE_TABLE): Replaces EXTEND_RANGE_TABLE_WORK_AREA. - Different calling conventions, and used from set_image_of_range{,_1}. - (IMMEDIATE_QUIT_CHECK): Definitions moved. - -2002-09-04 Juanma Barranquero - - * makefile.w32-in: All dependencies updated. - -2002-09-01 Richard M. Stallman - - * unexsol.c: New file. - - * xfns.c (Qbox): Declare external, don't define. - - * xdisp.c (redisplay_window) : - If point is on semi-visible last line, reposition - it at previous line. - - * alloc.c (display_malloc_warning): Use display-warning. - (malloc_warning_1): Function deleted. - - * alloc.c [ALLOC_DEBUG]: #undef INLINE. - - * lread.c (read1): Handle #! by skipping the line. - -2002-08-31 Richard M. Stallman - - * Makefile.in (TEMACS_LDFLAGS): Renamed from ALL_LDFLAGS. - Don't include LDFLAGS. - (temacs): Pass LDFLAGS separately, and not via YMF_PASS_LDFLAGS. - -2002-08-31 Eli Zaretskii - - * xdisp.c (get_window_cursor_type): Don't use x_highlight_frame - member of x_display_info unless we compile for some window system. - -2002-08-31 Kim F. Storm - - * xdisp.c (Valternate_cursor_type, Qalternate_cursor_type): Removed. - (get_window_cursor_type): Don't use them. - (syms_of_xdisp): Remove intern, staticpro, and defvar for them. - -2002-08-30 Kenichi Handa - - * xdisp.c (get_next_display_element): Fix previous change. - -2002-08-30 Andrew Choi - - * macterm.c (expose_overlaps): New function (merge code from xterm.c). - (expose_window): Use it to fix the display of overlapping - rows (merge code from xterm.c). - - * macfns.c (Qbox): Add extern declaration. - -2002-08-30 Juanma Barranquero - - * w32fns.c (Qbox): Make extern. - (syms_of_w32fns): Remove initialization of Qbox. - -2002-08-30 Rune Kleveland (tiny change) - - * xfns.c (Fx_open_connection): Fix error message. - -2002-08-30 Kim F. Storm - - The following changes consolidates the handling of the cursor - type in xdisp.c, moving duplicate code and functionality from - xfns.c, xterm.c, w32fns.c, w32term.c, macfns.c, and macterm.c. - - * frame.h (enum text_cursor_kinds): Consolidated here. - Added DEFAULT_CURSOR value. - (struct frame) - : New fields. - Consolidated from output_x, output_w32 and output_mac structs. - (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR) - (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros consolidated here. - - * xdisp.c (Qbar, Qhbar, Qbox, Qhollow, Vblink_cursor_alist): - Variables consolidated here. - (Valternate_cursor_type, Qalternate_cursor_type): New variables. - (Vcursor_in_non_selected_windows): Renamed from - cursor_in_non_selected_windows and changed to Lisp_Object. - (syms_of_xdisp): Define and staticpro new and moved variables. - (get_specified_cursor_type): Renamed from x_specified_cursor_type; - consolidated here. Recognize Qhollow setting. - (set_frame_cursor_types): New function to set frame cursor types - based on the frame parameters. - (get_window_cursor_type): New function to calculate new cursor - type and width for the specified window. Based on duplicated - code consolidated here. - Enhancements: cursor-in-non-selected-windows may be a cursor type, - check buffer-local alternate-cursor-type and blink-cursor-alist - before using built-in blink off methods. - - * dispextern.h (cursor_in_non_selected_windows): Extern removed. - - * lisp.h (Qcursor_in_non_selected_windows): Extern removed. - (get_specified_cursor_type, get_window_cursor_type) - (set_frame_cursor_types): Added prototypes. - - * macfns.c (x_specified_cursor_type): Removed. - (x_set_cursor_type): Use set_frame_cursor_types. - (Qbar, Qbox): Removed. - (syms_of_macfns): Don't intern or staticpro them. - - * macterm.c (x_specified_cursor_type): Remove prototype. - (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH. - (x_display_and_set_cursor): Use get_window_cursor_type. - Remove unused local variables cursor_non_selected, active_cursor. - Redraw cursor if hbar cursor width changes. - (make_mac_frame): Set FRAME_DESIRED_CURSOR. - - * macterm.h (enum text_cursor_kinds): Removed. - (struct output_mac) - : Members removed. - (FRAME_DESIRED_CURSOR): Macro removed. - - * w32fns.c (Vblink_cursor_alist): Removed. - (Qbar, Qhbar, Qbox, Qhollow): Removed. - (syms_of_w32fns): Don't intern, staticpro, or define them. - (x_specified_cursor_type): Removed. - (x_set_cursor_type): Use set_frame_cursor_types. - - * w32term.c (x_specified_cursor_type): Remove prototype. - (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH. - (x_display_and_set_cursor): Use get_window_cursor_type. - Remove unused local variables cursor_off_state. - Redraw cursor if hbar cursor width changes. - Changed all occurrences of w32_highlight_frame to x_highlight_frame. - - * w32term.h (enum text_cursor_kinds): Removed. - (struct output_w32) - : Members removed. - (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR) - (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros removed. - (struct w32_display_info) : Renamed member from - w32_highlight_frame. - - * xfns.c (Vblink_cursor_alist): Removed. - (Qbar, Qhbar, Qbox, Qhollow): Removed. - (syms_of_xfns): Don't intern, staticpro, or define them. - (x_specified_cursor_type): Removed. - (x_set_cursor_type): Use set_frame_cursor_types. - - * xterm.c (x_specified_cursor_type): Remove prototype. - (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH. - (x_display_and_set_cursor): Use get_window_cursor_type. - Remove unused local variables cursor_off_state. - Redraw cursor if hbar cursor width changes. - - * xterm.h (enum text_cursor_kinds): Removed. - (struct output_x) - : Members removed. - (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR) - (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros removed. - (x_specified_cursor_type): Remove prototype. - -2002-08-28 Richard M. Stallman - - * w32fns.c (x_set_cursor_type): Set FRAME_BLINK_OFF_CURSOR and - FRAME_BLINK_OFF_CURSOR_WIDTH using defaults and Vblink_cursor_alist. - (Vblink_cursor_alist): New variable. - (syms_of_w32fns): Initialize and defvar it. - (x_specified_cursor_type): Recognize Qbox for filled box. - Exceptions are hollow boxes. - (Qbox, Qhollow): New variables. - (syms_of_w32fns): Initialize and staticpro them. - - * w32term.h (FRAME_BLINK_OFF_CURSOR, FRAME_BLINK_OFF_CURSOR_WIDTH): - New macros. - (struct w32_output): New fields blink_off_cursor, - blink_off_cursor_width. - (FRAME_CURSOR_WIDTH): New macro. - - * w32term.c (x_display_and_set_cursor): Use FRAME_BLINK_OFF_CURSOR - and FRAME_BLINK_OFF_CURSOR_WIDTH for blinking cursor off. - - * w32term.c (x_display_and_set_cursor): Check FRAME_CURSOR_WIDTH - for bar cursor. - - * w32term.c (expose_overlaps): New function. - (expose_window): Use it to fix the display of overlapping rows. - -2002-08-28 Simon Josefsson - - * xfns.c (Fx_open_connection): Improve help when X connection - fails, xhost is insecure and xauth is better. - -2002-08-28 Juanma Barranquero - - * makefile.w32-in: Add missing dependencies on w32term.h and - composite.h. - - * emacs.c (USAGE1): Add missing newline. - -2002-08-27 Andrew Choi - - * s/darwin.h [HAVE_LIBNCURSES]: Define HAVE_TERMINFO. - -2002-08-27 Richard M. Stallman - - * xfns.c (x_set_cursor_type): Set FRAME_BLINK_OFF_CURSOR and - FRAME_BLINK_OFF_CURSOR_WIDTH using defaults and Vblink_cursor_alist. - (Vblink_cursor_alist): New variable. - (syms_of_xfns): Initialize and defvar it. - (x_specified_cursor_type): Recognize Qbox for filled box. - Exceptions are hollow boxes. - (Qbox, Qhollow): New variables. - (syms_of_xfns): Initialize and staticpro them. - - * xterm.h (FRAME_BLINK_OFF_CURSOR, FRAME_BLINK_OFF_CURSOR_WIDTH): - New macros. - (struct x_output): New fields blink_off_cursor, blink_off_cursor_width. - - * xterm.c (x_display_and_set_cursor): Use FRAME_BLINK_OFF_CURSOR - and FRAME_BLINK_OFF_CURSOR_WIDTH for blinking cursor off. - - * emacs.c (main): Handle --script. - (USAGE1): Mention --script. - (standard_args): Define sort order for --script. - -2002-08-27 Gerd Moellmann - - * xdisp.c (redisplay_updating_p): Variable removed. - (inhibit_free_realized_faces, Qinhibit_free_realized_faces): - New variables. - (init_iterator): Don't free realized faces if - inhibit_free_realized_faces is set. - (redisplay_internal): Bind Qinhibit_free_realized_faces to nil. - (syms_of_xdisp): DEFVAR_BOOL inhibit-free-realized-faces, - initialize Qinhibit_free_realized_faces. - - * dispextern.h (PRODUCE_GLYPHS): Set inhibit_free_realized_faces - when iterator is adding glyphs to a glyph matrix. - -2002-08-27 Kenichi Handa - - * xdisp.c (get_next_display_element): In unibyte case, don't use - octal form for such eight-bit characters that can be converted to - multibyte char. - -2002-08-26 Kim F. Storm - - * frame.c (make_terminal_frame) [CANNOT_DUMP]: Initialize - foreground and background colors. From Joe Buehler. - -2002-08-26 Miles Bader - - * bytecode.c (Fbyte_code): Fsub1 can GC, so protect it. - -2002-08-25 Andrew Choi - - * emacs.c (main): Call init_mac_osx_environment if HAVE_CARBON is - defined instead of MAC_OSX. - - * s/darwin.h (select): Define select to sys_select only if - HAVE_CARBON is defined. - (HAVE_WORKING_VFORK): #undef it. Define vfork to fork. - (DONT_REOPEN_PTY): #def it. - - * macterm.c (XTread_socket): Remove code to call - SendEventToEventTarget for keys with command modifiers when - mac_command_key_is_meta is nil. - -2002-08-24 Andreas Schwab - - * eval.c (Fdefvar): Fix last change. - -2002-08-23 Richard M. Stallman - - * eval.c (Fdefvar, Fdefconst, Fdefvaralias): - Record variables in load history as (defvar . VAR). - (Fdefvar): Don't record in load history if no initial value. - (Qdefvar): New variable. - (syms_of_eval): Init and staticpro it. - - * lread.c (syms_of_lread): Doc fix. - (build_load_history): Use Fmember to see if a definition - is already in the Vload_history element. - - * process.c (Fstart_process): Remove /: from program name. - - * emacs.c (decode_env_path): Don't add /: if file name handler - has a `safe-magic' property. - - * callproc.c (Fcall_process): Remove /: from program name. - -2002-08-23 Stefan Monnier - - * regex.c (PATFETCH): Remove the translating fetch. - (PATFETCH_RAW): Rename to PATFETCH. - (set_image_of_range): New fun. - (SET_RANGE_TABLE_WORK_AREA): Use it. - (regex_compile): Don't translate the pattern chars so eagerly. - Only do it when inserting an `exactn' bytecode or when handling - a char-range. - (mutually_exclusive_p): Avoid empty statement. - -2002-08-22 Kim F. Storm - - * xdisp.c (redisplay_window): Do not `goto try_to_scroll' when we - end up on a partially visible line; this reverts a specific part - of the 2002-07-07 change by Richard M. Stallman to "fix" a nasty - display error which has been reported several times now. - However it introduces the problem that changes was supposed to fix. - See my comments in the source if you want to debug this further. - -2002-08-20 Kenichi Handa - - * abbrev.c (Fexpand_abbrev): Fix for the multibyte case. - -2002-08-19 Eli Zaretskii - - * msdos.c (croak): Add `void' to definition. - - * sysdep.c (request_sigio, unrequest_sigio) [MSDOS]: - Don't define them, they are defined in msdos.c. - - * mem-limits.h [MSDOS]: Declare etext. - - * fileio.c (Ffile_name_directory) [DOS_NT]: Don't declare `beg' - `const' since CORRECT_DIR_SEPS modifies its target. - -2002-08-19 Kim F. Storm - - * keyboard.c (Fclear_this_command_keys): Add optional arg - KEEP-RECORD to avoid clearing lossage when we just want to clear - the current key sequence (kmacro needs this). - -2002-08-19 Kenichi Handa - - * composite.c (run_composition_function): Call FUNC if it is fboundp. - - * composite.h (COMPOSITION_MODIFICATION_FUNC): If PROP is not a - cons, return Qnil. - -2002-08-17 Richard M. Stallman - - * s/sol2-5.h (BROKEN_SIGIO): Add #undef. - - * sysdep.c [!VMS]: Include sys/files.h. - - * editfns.c (save_restriction_restore): Defend from unchained marker. - - * buffer.c (overlays_at): Handle extending vec uniformly. - (overlays_in): Handle extending vec from length 0 as in overlays_at. - -2002-08-15 Andrew Choi - - * mac.c (init_mac_osx_environment): New function. - - * emacs.c (main) [MAC_OSX]: Call init_mac_osx_environment. - -2002-08-14 Kim F. Storm - - * macros.c (Fstart_kbd_macro): Added NO-EXEC argument to inhibit - executing macro before appending to it (when used from Lisp). - (Fexecute_kbd_macro): Added LOOPFUNC argument to supply function - which is called prior to each iteration of macro (for kmacro.el). - (Fend_kbd_macro, Fcall_last_kbd_macro): Likewise. - - * lisp.h (Fexecute_kbd_macro): Update prototype. - - * keyboard.c (Fcommand_execute): Update call to Fexecute_kbd_macro. - -2002-08-14 Kenichi Handa - - * xselect.c (QUTF8_STRING): New variable. - (symbol_to_x_atom): Pay attention to QUTF8_STRING. - (x_atom_to_symbol): Likewise. - (x_get_local_selection): New argument local_request. If it is - nonzero, call handler_fn with the second arg nil. - (x_handle_selection_request): Call x_get_local_selection with - local_request 0. - (lisp_data_to_selection_data): Don't encode the string here. - (Fx_get_selection_internal): Call x_get_local_selection with - local_request 1. - (syms_of_xselect): Intern and staticpro QUTF8_STRING. - - * xterm.c (x_term_init): Initialize dpyinfo->Xatom_UTF8_STRING. - - * xterm.h (struct x_display_info): New member Xatom_UTF8_STRING. - -2002-08-13 Richard M. Stallman - - * minibuf.c (Fminibufferp): New function. - (syms_of_minibuf): Defsubr it. - (Fminibuffer_prompt_end): Handle non-minibuffers specially. - -2002-08-13 Gerd Moellmann - - * coding.c (Funencodable_char_position): Lisp_Object/int mixup. - -2002-08-12 Richard M. Stallman - - * syswait.h: Only the include of sys/wait.h tests HAVE_SYS_WAIT_H. - [!VMS] (WCOREDUMP, WEXITSTATUS, WIFEXITED, WIFSTOPPED, WIFSIGNALED) - (WSTOPSIG, WTERMSIG): Define each one independently if not defined - already. - - * buffer.c (syms_of_buffer) : Doc fix. - -2002-08-11 Andrew Choi - - * macterm.c (XTmouse_position): Check wp with is_emacs_window. - (Vmac_pass_command_to_system): New variable. - (Vmac_pass_control_to_system): New variable. - (do_mouse_moved): Check wp with is_emacs_window. - (XTread_socket): Check window_ptr with is_emacs_window. - Call FrontNonFloatingWindow instead of FrontWindow. Send keydown - events back to Mac Toolbox for processing, depending on values of - Vmac_pass_command_to_system and Vmac_pass_control_to_system. - (syms_of_macterm): DEFVAR_LISP Vmac_pass_command_to_system and - Vmac_pass_control_to_system. - -2002-08-10 Kenichi Handa - - * coding.c (unencodable_char_position): New function. - (Funencodable_char_position): New function. - (syms_of_coding): Defsubr Funencodable_char_position. - -2002-08-10 Andrew Choi - - * mac.c (sys_select) [MAC_OSX]: New function. - - * macterm.c (MakeMeTheFrontProcess): New function. - (mac_initialize): Call MakeMeTheFrontProcess. - - * s/darwin.h: Define select to sys_select. - -2002-08-09 Richard M. Stallman - - * keyboard.c (make_lispy_event): Test WINDOWSNT, not WINDOWS_NT. - -2002-08-09 Gerd Moellmann - - * xdisp.c (forward_to_next_line_start): Return 0 when reaching the - end of the buffer. - -2002-08-08 Ken Raeburn - - * coding.c (Ffind_operation_coding_system): Fix Lisp_Object/int mixup. - - * puresize.h (BASE_PURESIZE): Increase to 910000. - -2002-08-08 Kenichi Handa - - * coding.c (Ffind_operation_coding_system): For write-region, if - VISIT is a filename, make it the target. - -2002-08-07 Richard M. Stallman - - * alloc.c (mark_object): Detect long lists for debugging. - (mark_object_loop_halt): New variable. - - * s/hpux10.h (C_SWITCH_SYSTEM): #undef it. - - * data.c (Fmake_variable_frame_local): Doc fix. - -2002-08-01 David Ponce - - * w32menu.c (local_heap, local_alloc, local_free): New macros. - (malloc_widget_value, free_widget_value) - (w32_free_submenu_strings): Use them. - - (push_submenu_start, push_submenu_end, push_left_right_boundary) - (push_menu_pane, push_menu_item, single_keymap_panes) - (single_menu_item, Fx_popup_menu, menubar_selection_callback) - (single_submenu, set_frame_menubar) - (w32_menu_show, w32_dialog_show): Use AREF, ASET, ASIZE. - - (Fx_popup_menu): Don't show pop up menu until preceding one is - actually cleaned up. Moved UNGCPRO outside #ifdef HAVE_MENUS block. - - * w32menu.c: Changes adapted from xmenu.c - (set_frame_menubar): First parse all submenus, - then make widget_value trees from them. - Don't allocate any widget_value objects - until we are done with the parsing. - (parse_single_submenu): New function. - (digest_single_submenu): New function. - (single_submenu): Function deleted, replaced by those two. - -2002-08-04 Andrew Choi - - * macterm.c (XTread_socket): Check that FrontNonFloatingWindow - returns a valid window pointer before proceeding for keyDown and - autoKey events. - -2002-08-03 Andrew Choi - - * macterm.c (USE_CARBON_EVENTS): New macro. - (macCtrlKey, macShiftKey, macMetaKey, macAltKey): New macros. - (x_iconify_frame): Call CollapseWindow. - (Vmac_reverse_ctrl_meta): New variable. - (Vmac_wheel_button_is_mouse_2): New variable. - (init_mac_drag_n_drop): New function. - (mac_do_receive_drag): New function. - (mac_handle_service_event): New function. - (init_service_handler): New function. - (mac_to_emacs_modifiers): New function. - (mac_event_to_emacs_modifiers): New function. - (mac_get_mouse_btn): New function. - (mac_convert_event_ref): New function. - (XTread_socket) [USE_CARBON_EVENTS]: Call ReceiveNextEvent, - SendEventToEventTarget, mac_event_to_emacs_modifiers, and - mac_get_mouse_btn. - (mac_initialize): Call init_mac_drag_n_drop and init_service_handler. - - * keyboard.c: Define Qmouse_wheel, mouse_wheel_syms, and - lispy_mouse_wheel_names for MAC_OSX as well as for WINDOWS_NT. - (kbd_buffer_get_event): Set used_mouse_menu for MENU_BAR_EVENT and - TOOL_BAR_EVENT for MAC_OS as well. - (make_lispy_event): Handle MOUSE_WHEEL_EVENT for MAC_OSX as well - as for WINDOWS_NT. - (syms_of_keyboard): Initialize Qmouse_wheel for MAC_OSX. - - * termhooks.h (event_kind): Define MOUSE_WHEEL_EVENT also for MAC_OSX. - -2002-08-03 Gerd Moellmann - - * xdisp.c (forward_to_next_line_start): Fix a condition that - lead to a newline being skipped. - -2002-08-02 Andrew Choi - - * mac.c (syms_of_mac): Defsubr Sx_selection_exists_p. - -2002-08-01 Richard M. Stallman - - * Makefile.in (SOME_MACHINE_OBJECTS): Add fontset.o. - -2002-07-31 Andrew Choi - - * macfns.c: #undef init_process before #define-ing it. - - * s/darwin.h: Define MAC_OS, SYMS_SYSTEM, and OTHER_FILES only if - HAVE_CARBON is defined. - -2002-07-31 Richard M. Stallman - - * xmenu.c (set_frame_menubar): First parse all submenus, - then make widget_value trees from them. - Don't allocate any widget_value objects - until we are done with the parsing. - (parse_single_submenu): New function. - (digest_single_submenu): New function. - (single_submenu): Function deleted, replaced by those two. - -2002-07-30 Juanma Barranquero - - * w32proc.c (syms_of_ntproc): Fix docstring of - `w32-get-true-file-attributes'. - -2002-07-28 Richard M. Stallman - - * s/hpux8.h (HPUX8): Define this before including hpux.h. - (HAVE_SYS_WAIT_H): #define deleted; we let Autoconf decide. - - * s/hpux.h (HAVE_SYS_WAIT_H): The #undef is conditional on HPUX8. - - * keyboard.c (make_lispy_event): - Use #ifdef to test USE_TOOLKIT_SCROLL_BARS. - Explicitly clear up_modifier in event->modifiers. - -2002-07-27 Richard M. Stallman - - * xterm.h (FRAME_CURSOR_WIDTH): New macro. - - * xterm.c (x_display_and_set_cursor): Check FRAME_CURSOR_WIDTH - for bar cursor. - -2002-07-26 Kenichi Handa - - * coding.c (detect_coding_iso2022): While checking a byte sequence - for CODING_CATEGORY_MASK_ISO_8_2, if we read one extra byte, check - it in the normal loop. - -2002-07-24 Gerd Moellmann - - * xterm.c (expose_overlaps): New function. - (expose_window): Use it to fix the display of overlapping rows. - - * xdisp.c (unwind_redisplay): Clear redisplay_updating_p. - -2002-07-23 Ken Raeburn - - * lisp.h (XPNTR): Use NO_UNION_TYPE version for union as well, - since it only depends on XUINT. - - * m/alpha.h (BITS_PER_LONG, BITS_PER_EMACS_INT, EMACS_INT, - EMACS_UINT, SPECIAL_EMACS_INT, DATA_SEG_BITS, - PNTR_COMPARISON_TYPE, VALBITS, MARKBIT, XINT, XUINT, XPNTR): - Macros deleted. - - * mem-limits.h (start_of_data): If DATA_START is defined, prefer - its value over other approaches. - * sysdep.c (start_of_data): Don't define the function if a macro - form has been defined. - -2002-07-23 Gerd Moellmann - - * xdisp.c (redisplay_updating_p): New variable. - (init_iterator): Don't free realized faces when - redisplay_updating_p is set. - (redisplay_internal): Set redisplay_updating_p while updating - the display. - -2002-07-23 Richard M. Stallman - - * editfns.c (Fmessage): Treat "" like nil. - -2002-07-23 Kenichi Handa - - * xdisp.c (face_before_or_after_it_pos): - Call FETCH_MULTIBYTE_CHAR with byte postion, not char position. - -2002-07-22 Juanma Barranquero - - * callproc.c (init_callproc) [DOS_NT]: - Initialize Vshared_game_score_directory to nil. - (syms_of_callproc) [DOS_NT]: Likewise. - -2002-07-22 Gerd Moellmann - - * xdisp.c (display_line): Replace an abort with xassert. - -2002-07-21 Richard M. Stallman - - * xdisp.c (redisplay_window): Don't test BEG_UNCHANGED - and END_UNCHANGED when setting buffer_unchanged_p. - Use current_matrix_up_to_date_p to decide whether to use - try_cursor_movement. - - * config.in (HAVE_SHARED_GAME_DIR): Undef deleted. - - * epaths.in (PATH_GAME): New macro, edited by ../Makefile.in. - - * callproc.c (init_callproc): Set up Vshared_game_score_directory. - Set to nil if dir does not exist. - (syms_of_callproc): Init unconditionally and simply. - - * buffer.c (Fbuffer_list): Doc fix. - -2002-07-21 Ken Raeburn - - * sysdep.c (end_of_text, end_of_data): Unused functions deleted. - - * buffer.c (mmap_realloc): When shrinking, make sure number of - pages to unmap is rounded towards zero. - - * m/mips-siemens.h (XSETUINT, XSETPNTR): Unused macros deleted. - (XSETINT): Deleted. - - * m/att3b.h (XINT): Don't define. - (VALBITS, VALMASK, XTYPE): Deleted. - (DATA_SEG_BITS): Define. - * m/gec63.h (VALBITS, VALAMASK, XTYPE, XSETTYPE, XPNTR, XSET, - ARRAY_MARK_FLAG): Deleted. - (DATA_SEG_BITS): Define. - * m/pfa50.h (VALBITS, VALMASK, XTYPE): Deleted. - (DATA_SEG_BITS): Define. - -2002-07-20 Richard M. Stallman - - * print.c (print_error_message): New args CONTEXT and CALLER. - Calls changed. - - * lisp.h (print_error_message): Declare new args. - - * keyboard.c (cmd_error_internal): Pass Vsignaling_function - and CONTEXT to print_error_message, don't print them here. - For a Quit, don't use Vsignaling_function. - Call message_log_maybe_newline. - - * Makefile.in (xsmfns.o): Don't depend on lisp.h. - -2002-07-20 Kim F. Storm - - * xdisp.c (redisplay_window): Test MODIFF to set buffer_unchanged_p. - -2002-07-19 Ken Raeburn - - * bytecode.c (struct byte_stack): Pointers into byte string now - point to const. - * callproc.c (Fcall_process): Make NEW_ARGV array hold pointer to - const. - * charset.h (BCOPY_SHORT): Source pointer now points to const. - * coding.c (encode_eol, detect_coding, detect_eol): - (decode_coding, encode_coding, detect_coding_system): - Source strings now treated as const. - (decode_coding_string, encode_coding_string): Use STRING_COPYIN to - modify Lisp string contents. - * coding.h (decode_coding, encode_coding, detect_coding, - detect_eol): Declarations updated. - * composite.c (compose_chars_in_text): Treat Lisp string contents - as const. - * dispnew.c (safe_bcopy): Source pointer now points to const. - * lisp.h (STRING_COPYIN): New macro. - (detect_coding_system, safe_bcopy, temp_output_buffer_setup): - (internal_with_output_to_temp_buffer): Declarations updated. - * print.c (temp_output_buffer_setup): - (internal_with_output_to_temp_buffer): Buffer name argument is now - pointer to const. - * sound.c (struct sound_device): Function pointer field "write" - buffer argument now points to const. - (vox_write): Buffer argument points to const. - * syntax.c (Fstring_to_syntax, skip_chars): Treat Lisp string - contents as const. - * sysdep.c (emacs_write): Buffer pointer now const. - * term.c (encode_terminal_code): Buffer pointer now const. - * xfaces.c (may_use_scalable_font_p): Argument now points to const. - (x_face_list_fonts, x_update_menu_appearance): - (hash_string_case_insensitive): Treat Lisp string contents as const. - -2002-07-19 Juanma Barranquero - - * xdisp.c (syms_of_xdisp): Remove redundant deprecation info. - - * fileio.c (syms_of_fileio): Likewise. - (Ffile_name_as_directory): Fix argument name in docstring. - (file_name_as_directory): Use literal '/' instead of DIRECTORY_SEP. - -2002-07-18 Richard M. Stallman - - * data.c (Fdefalias): Doc fix. - -2002-07-17 Dave Love - - * intervals.h (text_property_stickiness): Use P_. - - * ccl.c: Remove `emacs' conditionals. - (ccl_backtrace_table): Fix size spec. - (ccl_driver): Fix type errors. - -2002-07-16 Ken Raeburn - - * alloc.c (xstrdup, make_string, make_unibyte_string) - (make_multibyte_string, build_string): String pointer args now - point to const. - * charset.c (find_charset_in_text, c_string_width): - (chars_in_text, multibyte_chars_in_text, parse_str_as_multibyte): - * fileio.c (report_file_error): - * insdel.c (copy_text, count_size_as_multibyte, insert_1): - (count_combining_before, count_combining_after, insert_1_both): - (insert, insert_and_inherit, insert_string): - (insert_before_markers, insert_before_markers_and_inherit): - * lread.c (intern, oblookup, hash_string): - * minibuf.c (temp_echo_area_glyphs): - * search.c (fast_c_string_match_ignore_case): - * sysdep.c (emacs_open, set_file_times): - * xfaces.c (xstricmp): - * xdisp.c (store_frame_title, string_char_and_length): - (message_dolog, message2, message2_nolog, set_message): Likewise. - (set_message_1): Cast message string argument to const pointer. - * editfns.c (general_insert_function): Insertion function now - takes pointer to const for input data. - * charset.h (find_charset_in_text, c_string_width): - (parse_str_as_multibyte): Declarations updated. - * dispextern.h (xstricmp): Declaration updated. - * lisp.h (chars_in_text, multibyte_chars_in_text, copy_text): - (count_size_as_multibyte, count_combining_before): - (count_combining_after, insert_1, insert_1_both, message_dolog): - (insert, insert_and_inherit, insert_before_markers) - (insert_before_markers_and_inherit, set_message, message2): - (message2_dolog, build_string, make_string, make_unibyte_string): - (make_multibyte_string, intern, oblookup, report_file_error): - (fast_c_string_match_ignore_case, temp_echo_area_glyphs): - (emacs_open, xstrdup): Declarations updated. - * systime.h (set_file_times): Declaration updated. - - * charset.c (find_charset_in_text, lisp_string_width): Use const - for pointer to lisp string data. - * charset.h (FETCH_STRING_CHAR_ADVANCE): - (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): - * coding.c (Ffind_coding_systems_region_interval): - * fileio.c (Ffile_name_directory, Ffile_name_nondirectory): - (Fmake_directory_internal, Fdelete_directory): - (Ffile_name_absolute_p, Fwrite_region, double_dollars): - * fontset.c (font_family_registry, fs_query_fontset): - (list_fontsets): - * frame.c (Fframe_parameter): - * keyboard.c (cmd_error_internal): - * keymap.c (Fdescribe_buffer_bindings): - * lread.c (complete_filename_p, openp): - * minibuf.c (Fminibuffer_complete_word): - * xdisp.c (string_pos_nchars_ahead, init_from_display_pos): - (face_before_or_after_it_pos, next_element_from_string): - (get_overlay_arrow_glyph_row, display_mode_element): - (decode_mode_spec_coding): - * xterm.c (same_x_server): Likewise. - - * buffer.c (reset_buffer_local_variables): Delete "#if 0" - settings of non-existent fields. - - * editfns.c (Fstring_to_char): Don't use XSTRING/XSETSTRING to - copy a lisp value. - - * lread.c (Fintern_soft): Use string macros instead of - Lisp_String fields. - * keyboard.c (echo_char, parse_modifiers_uncached): - (parse_solitary_modifier, Fexecute_extended_command): Likewise. - * textprop.c (validate_interval_range, interval_of): Likewise. - - * fontset.c (Fset_fontset_font): Use SDATA instead of XSTRING()->data. - - * charset.h (FETCH_STRING_CHAR_ADVANCE) - (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): Use SBYTES instead of - XSTRING()->size_byte. - - * lisp.h (SDATA, SREF): Produce rvalue. - (SSET): New macro. - * alloc.c (make_event_array): Use SSET for storing into a string. - * buffer.c (Fother_buffer): Use SREF when retrieving a byte from - a string. - * casefiddle.c (casify_object): Use SSET. - * charset.h (FETCH_STRING_CHAR_ADVANCE) - (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): Use SDATA when getting - address of string contents. - * data.c (Faref): Use SDATA. - (Faset): Use SDATA, SSET. - * dired.c (directory_files_internal): Use SSET. - * fileio.c (Fmake_symbolic_link, Fexpand_file_name): Use SSET. - (Fread_file_name): Use SREF, SSET. - * fns.c (concat): Use SSET. - (concat, Fdelete): Use SDATA. - * insdel.c (insert_from_string_1): Use SDATA. - * keyboard.c (Fevent_convert_list): Use SREF. - * lread.c (Fload): Use SDATA, SSET. - * macfns.c (validate_x_resource_name): Use SSET. - * process.c (status_message): Use SSET. - * search.c (wordify): Use SDATA. - (Freplace_match): Use SREF. - * w32fns.c (validate_x_resource_name): Use SSET. - * xfns.c (validate_x_resource_name): Use SSET. - * xterm.c (x_catch_errors, x_clear_errors): Use SSET. - -2002-07-16 Richard M. Stallman - - * s/hpux11.h (USG_SUBTTY_WORKS): Defined. - - * xdisp.c (reconsider_clip_changes): - Don't test prevent_redisplay_optimizations_p. - (redisplay_internal): Test prevent_redisplay_optimizations_p - along with clip_changed in some cases. - (try_window_id): Likewise. - (redisplay_window): New local var buffer_unchanged_p. - - * keyboard.c (cmd_error) [HAVE_X_WINDOWS]: Maybe call cancel_houglass. - - * process.c (create_process): Test USG_SUBTTY_WORKS. - (process_send_signal): Clean up handling of GID. - Detect errors in ioctls meant to set GID. - - * window.c (temp_output_buffer_show): - Don't set prevent_redisplay_optimizations_p. - -2002-07-15 Juanma Barranquero - - * eval.c (Fdefvaralias): Add docstring argument. - -2002-07-15 Ken Raeburn - - * lisp.h (STRING_INTERVALS): Produce rvalue. - (STRING_SET_INTERVALS): New macro. - * buffer.c (Fget_buffer_create, Fmake_indirect_buffer): Use it. - * fns.c (Fstring_as_multibyte): Likewise. - * intervals.c (balance_possible_root_interval, delete_interval) - (create_root_interval, copy_intervals_to_string): Likewise. - * textprop.c (set_text_properties): Likewise. Use NULL_INTERVAL - instead of 0. - -2002-07-14 Ken Raeburn - - * lisp.h (STRING_SET_CHARS): New macro. - (SCHARS, SBYTES): Produce rvalues. - * dired.c (directory_files_internal): Use STRING_SET_CHARS. - * fns.c (concat): Likewise. - * lread.c (read_vector): Likewise. - - * lisp.h (SMBP): Delete. All uses changed to STRING_MULTIBYTE. - (STRING_SET_UNIBYTE): New macro. - (SET_STRING_BYTES): Delete. Callers (all of which supplied a - length of -1) changed to use STRING_SET_UNIBYTE. - * abbrev.c, alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, - casefiddle.c, category.c, ccl.c, charset.c, charset.h, coding.c, - composite.c, data.c, dired.c, dispnew.c, disptab.h, doc.c, - dosfns.c, editfns.c, emacs.c, eval.c, fileio.c, filelock.c, fn.c, - fontset.c, frame.c, indent.c, insdel.c, intervals.c, keyboard.c, - keymap.c, lread.c, mac.c, macfns.c, macmenu.c, macterm.c, - minibuf.c, msdos.c, print.c, process.c, search.c, sound.c, - sunfns.c, syntax.c, syntax.h, sysdep.c, textprop.c, undo.c, - w16select.c, w32.c, w32fns.c, w32menu.c, w32proc.c, w32select.c, - w32term.c, window.c, xdisp.c, xfaces.c, xfns.c, xmenu.c, - xselect.c, xsmfns.c, xterm.c: Most uses of XSTRING combined with - STRING_BYTES or indirection changed to SCHARS, SBYTES, - STRING_INTERVALS, SREF, SDATA; explicit size_byte references left - unchanged for now. - -2002-07-13 Kim F. Storm - - * keyboard.c (command_loop_1): Invert check on Vmemory_full. - -2002-07-12 Richard M. Stallman - - * fileio.c (Fwrite_region): Doc fix. - - * print.c (print_error_message): Don't handle Vsignaling_function here. - - * keyboard.c (cmd_error_internal): Handle Vsignaling_function here. - (command_loop_1): Avoid certain actions after memory-full error. - - * eval.c (Fsignal): Don't call cancel_hourglass. - For a memory-full error, don't call Vsignal_hook_function - and don't set Vsignaling_function. - - * process.c (process_send_signal): Add abort call. - -2002-07-11 Markus Rost - - * keymap.c (Fkey_binding): Fix typo. - -2002-07-11 Richard M. Stallman - - * alloc.c (Vmemory_full): New variable. - (Vmemory_signal_data): Rename from memory_signal_data. - Uses changed. - (syms_of_alloc): Defvar them. - (memory_full, buffer_memory_full): Set Vmemory_full. - - * lisp.h (Vmemory_full): Add declaration. - (current_column, indented_beyond_p): Change declaration. - - * indent.c (last_known_column): Declare as double, not float. - (current_column, current_column_1, string_display_width) - (position_indentation): Return `double'. - (indented_beyond_p): Arg `column' is `double'. Callers changed. - - * xdisp.c (message_dolog): Do nothing if Vmemory_full is non-nil. - (back_to_previous_visible_line_start) - (reseat_at_next_visible_line_start, next_element_from_buffer): - Use `double', not `float', when calling indented_beyond_p. - - * s/hpux11.h (BROKEN_SA_RESTART): Define. - - * sysdep.c (sys_signal): Test BROKEN_SA_RESTART. - -2002-07-11 Juanma Barranquero - - * alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, coding.c, - * composite.c, dired.c, dispnew.c, editfns.c, emacs.c, eval.c, - * fileio.c, fns.c, insdel.c, keyboard.c, keymap.c, lread.c, macfns.c, - * macmenu.c, macros.c, minibuf.c, print.c, process.c, sound.c, - * textprop.c, w32fns.c, w32menu.c, window.c, xfaces.c, xfns.c, - * xmenu.c, xselect.c, xterm.c: Use SPECPDL_INDEX wherever makes sense. - -2002-07-10 Juanma Barranquero - - * lisp.h (SPECPDL_INDEX): Rename from BINDING_STACK_SIZE. - All callers changed. - -2002-07-09 Stefan Monnier - - * data.c (Fdefalias): Add an optional `docstring' argument. - (set_internal, Fsetq_default): Use XCAR/XCDR. - - * composite.c (HASH_VALUE, HASH_KEY): - * ccl.c (HASH_VALUE): Remove (it's in lisp.h now). - -2002-07-09 Kenichi Handa - - * callproc.c (Fcall_process): Fix previous change. - -2002-07-07 Stefan Monnier - - * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion): - Add support for hash-tables. - (Ftry_completion): Return t even if the string appears multiple times. - - * fns.c (Fnconc): Use XCDR. - (Fprovide): Use CONSP and XCDR. - (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX) - (HASH_TABLE_SIZE): Delete: moved to lisp.h. - (Fmake_hash_table): Accept `:size nil'. - (Fmakehash): Delete: moved to subr.el. - (syms_of_fns): Don't defsubr makehash. - - * lisp.h (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX) - (HASH_TABLE_SIZE): Move from fns.c. - -2002-07-07 Richard M. Stallman - - * xdisp.c (make_cursor_line_fully_visible): Don't try short scrolls. - Instead just return 0 when there is something to be done. - (try_scrolling): If make_cursor_line_fully_visible returns 0, - retry scrolling as if cursor were off the bottom. - (try_cursor_movement): If make_cursor_line_fully_visible returns 0, - return CURSOR_MOVEMENT_MUST_SCROLL. - (redisplay_window): If make_cursor_line_fully_visible returns 0, - go to try_to_scroll. - - * buffer.c (Fbuffer_local_value): Store current value into its binding - so we get the up-to-date value for the binding that is loaded. - - * eval.c (Fdefmacro): Doc fix. - -2002-07-05 Dave Love - - * keyboard.c (read_key_sequence): Set initial_idleness_start_time - correctly. - - * ccl.c (Vtranslation_hash_table_vector, GET_HASH_TABLE) - (HASH_VALUE, CCL_LookupIntConstTbl, CCL_LookupCharConstTbl): New. - (ccl_driver): Add cases for CCL_LookupIntConstTbl, - CCL_LookupCharConstTbl. - (syms_of_ccl): Defvar translation-hash-table-vector. - -2002-07-05 Pavel Jan,Am(Bk - - * xdisp.c: Remove unused variable `face'. - -2002-07-04 Juanma Barranquero - - * keyboard.c (post_command_idle_hook): Remove redundant (and inexact) - obsolescence information. - -2002-07-03 Andrew Choi - - * macterm.c (x_list_fonts): Fix comment. Cache fonts matching - pattern. Search cache first. - (init_font_name_table): Also add entry for jisx0201.1976-0 coding - for Japanese font. - (XLoadQueryFont): Use it. - -2002-07-02 Richard M. Stallman - - * keymap.c (Fdefine_key): Doc fix. - - * xterm.c (x_term_init): Turn off polling around XtOpenDisplay. - -2002-07-02 Juanma Barranquero - - * keymap.c (syms_of_keymap): Fix typo. - -2002-07-01 Andrew Choi - - * s/darwin.h: Define POSIX_SIGNALS. - - * macterm.c (do_ae_open_documents) [MAC_OSX]: Call FSpMakeFSRef - and FSRefMakePath to convert FSSpec returned with Apple Event to - Posix pathname. - (mac_initialize) [TARGET_API_MAC_CARBON]: - Call init_required_apple_events and disable the `Quit' menu item - provided automatically by the Carbon Toolbox. - -2002-07-01 Dave Love - - * keyboard.c (kbd_buffer_store_event): Fix interrupt_signal decl - for K&R. - - * xterm.c: Fix prototype for K&R. - - * term.c (costs_set): Declare static, non-initialized for pcc. - -2002-07-01 Richard M. Stallman - - * keyboard.c (timer_last_idleness_start_time): New variable. - (timer_start_idle): Set that. - (read_key_sequence): Use that to reset timer_idleness_start_time - to previous value. - - * window.c (Frecenter): With arg, set optional_new_start. - - * xdisp.c (redisplay_internal): Make optional_new_start really work. - - * minibuf.c (Fminibuffer_complete_and_exit): Move to end of - buffer for completion. - -2002-06-29 Ken Raeburn - - * xdisp.c (store_mode_line_string): Lisp_Object/int mixup. - -2002-06-28 Jan Dj,Ad(Brv - - * keyboard.c (readable_filtered_events): New function that filters - FOCUS_IN_EVENT depending on parameter. - (readable_events): Calls readable_filtered_events, not filtering - FOCUS_IN_EVENT. - (get_filtered_input_pending): New function, filtering parameter passed - to readable_filtered_events. - (get_input_pending): Calls get_filtered_input_pending, not filtering - FOCUS_IN_EVENT. - (Finput_pending_p): Calls get_filtered_input_pending, DO filter - FOCUS_IN_EVENT. - - * xterm.h (struct x_output): Add focus_state. - - * xterm.c (x_focus_changed): New function. - (x_detect_focus_change): New function. - (XTread_socket): Call x_detect_focus_change for FocusIn/FocusOut - EnterNotify and LeaveNotify to track X focus changes. - -2002-06-28 Andreas Schwab - - * lisp.h: Remove duplicate declaration of code_convert_string_norecord. - -2002-06-27 Kim F. Storm - - * xdisp.c (mode_line_string_list, mode_line_string_face) - (mode_line_string_face_prop): New variables. - (store_mode_line_string): New function. - (display_mode_element): Use store_mode_line_string to - add mode-line string elements to mode_line_string_list - when mode_line_string_list is non-nil. - (Fformat_mode_line): Now returns propertized string by - default. New arg NO-PROPS to ignore properties. - (decode_mode_spec): Only add two dashes for %- in propertized - mode-line string. - (syms_of_xdisp): Init and staticpro mode_line_string_list. - -2002-06-27 Stefan Monnier - - * minibuf.c (minibuffer_completion_contents): Add return type. - -2002-06-27 Juanma Barranquero - - * charset.c (Fchar_bytes): Remove obsolescence info from docstring. - -2002-06-26 Juanma Barranquero - - * fileio.c (read_file_name_cleanup): Add missing return. - -2002-06-26 Richard M. Stallman - - * window.c (Frecenter): Don't set force_start flag. - - * minibuf.c (do_completion, Fminibuffer_complete_word) - (Fminibuffer_completion_help): Complete just the text before point. - (minibuffer_completion_contents): New function. - - * buffer.c (Fbury_buffer): Use frames_discard_buffer. - - * frame.c (frames_bury_buffer): Function deleted. - -2002-06-25 Miles Bader - - * callint.c (Fcall_interactively): When checking to see if doprnt hit - the end of callint_message, allow for a terminating '\0'. - -2002-06-24 Juanma Barranquero - - * w32select.c: Include composite.h. - - * w16select.c: Likewise. - -2002-06-24 Kenichi Handa - - * callproc.c (Fcall_process): If code detection is necessary, - call detect_coding directly here. - - * coding.c (detect_eol): Preserve coding->cmp_data. - - * w16select.c (Fw16_get_clipboard_data): - * w32fns.c (w32_to_x_font): - * w32select.c (Fw32_get_clipboard_data): - * xselect.c (selection_data_to_lisp_data): - * xterm.c (XTread_socket): Disable composition handling. - -2002-06-24 Stefan Monnier - - * print.c (temp_output_buffer_setup): Kill all local variables. - -2002-06-22 Stefan Monnier - - * lread.c (Fread): Remove redundant and imprecise declaration. - - * xfns.c (check_x_display_info): Use check_x_frame. - - * .gdbinit (xprintsym): Use the new `xname' field. - (xsymbol): Use it. - -2002-06-22 Jason Rumney - - * w32fns.c (file_dialog_callback): New function. - (Fx_file_dialog): Allow selecting directories as well as files. - -2002-06-21 Pavel Jan,Am(Bk - - * m/pmax.h (START_FILES): Define START_FILES for NetBSD and - OpenBSD. Add support for mipseb-*-netbsd* machines. - -2002-06-17 Andrew Choi - - * macterm.c (mac_scroll_area): Set foreground and backcolor to - black and white before scrolling. Restore frame background and - foreground color after scrolling. - (do_window_update): Call XClearWindow before calling expose_frame. - (make_mac_frame): Don't set FRAME_BACKGROUND_PIXEL and - FRAME_FOREGROUND_PIXEL of frame. - - * macterm.c (XTread_socket): If Vmac_command_key_is_meta is nil, - test Mac command key as key. - -2002-06-17 Stefan Monnier - - * window.c (Fset_window_configuration): Lisp_Object/int mixup. - - * keyboard.c (read_key_sequence): Be more careful with first_unbound. - Lookup keys in function-key-map immediately so that key-translation-map - can be applied earlier. - Remove function_key_possible and key_translation_possible, replaced - by checking `keytran_start < t'. - - * .gdbinit (xsymbol): Use the new `xname' field. - -2002-06-17 Andrew Choi - - * macterm.c (XTread_socket): If Vmac_command_key_is_meta is nil, - test Mac command key as key. - - * mac.c (do_applescript): Call initialize_applescript if necessary - when first called. Dispose of result_desc only when there is no error. - (Fdo_applescript): Use %d format specifier instead of %ld. - -2002-06-16 Andrew Choi - - * macterm.c (XTread_socket): Call FrontNonFloatingWindow instead - of FrontWindow for cases keyDown and autoKey. - - * fontset.c (syms_of_fontset) [MAC_OS]: Set ASCII font of - Vdefault_fontset to Monaco with mac-roman coding. - - * mac.c, macfns.c, macmenu.c, macterm.c: Undefine and redefine - init_process before and after inclusion of Carbon/Carbon.h, resp. - - * macterm.c (x_new_font): Set font for normal_gc, reverse_gc, and - cursor_gc. - (add_font_name_table_entry): New function. - (init_font_name_table): Use add_font_name_table_entry; add italic, - bold, and bold-italic entries for truetype fonts. - - * xfaces.c (init_frame_faces) [MAC_OS]: Call realize_basic_faces - for Mac too. - (try_font_list) [MAC_OS]: If no font matches given registry, try - fonts with any registry matching face_family. - (realize_x_face) [MAC_OS]: Remove old ad-hoc fix to load font here. - - * s/darwin.h: If autoconf detects the Ncurses library, define - LIBS_TERMCAP to -lncurses to use it. - -2002-06-16 Eli Zaretskii - - * strftime.c [__hpux]: Include sys/_mbstate_t.h. - -2002-06-15 Richard M. Stallman - - * window.c (Fset_window_configuration): Explicitly preserve - the point value that new_current_buffer had at the start. - -2002-06-14 Juanma Barranquero - - * composite.c (Fcompose_region_internal, Fcompose_string_internal): - Fix typos. - -2002-06-14 Kim F. Storm - - * insdel.c (insert_1_both, insert_from_string_1) - (insert_from_buffer_1): Recalculate END_UNCHANGED in case the - insert happened in the end_unchanged region. Otherwise, the - redisplay may be confused and duplicate the last line in the - buffer [seen after save-buffer when require-final-newline==t]. - -2002-06-13 Jason Rumney - - * w32.c (init_environment): Remove EMACSLOCKDIR. - (stat): Swap _S_IFDIR and _S_IFREG. - -2002-06-13 Pavel Jan,Am(Bk - - * keyboard.c, macterm.c, macmenu.c, msdos.c, sysdep.c - * termhooks.h, xmenu.c, xsmfns.c, xterm.h, xterm.c, w32term.c, - * w32menu.c, w32inevt.c: Rename enum event_kind as follows: - ascii_keystroke to ASCII_KEYSTROKE_EVENT, multibyte_char_keystroke - to MULTIBYTE_CHAR_KEYSTROKE_EVENT, non_ascii_keystroke to - NON_ASCII_KEYSTROKE_EVENT, timer_event to TIMER_EVENT, mouse_click - to MOUSE_CLICK_EVENT, mouse_wheel to MOUSE_WHEEL_EVENT, - language_change_event to LANGUAGE_CHANGE_EVENT, scroll_bar_click - to SCROLL_BAR_CLICK_EVENT, w32_scroll_bar_click to - W32_SCROLL_BAR_CLICK_EVENT, selection_request_event to - SELECTION_REQUEST_EVENT, selection_clear_event to - SELECTION_CLEAR_EVENT, buffer_switch_event to BUFFER_SWITCH_EVENT, - delete_window_event to DELETE_WINDOW_EVENT, iconify_event to - ICONIFY_EVENT, deiconify_event to DEICONIFY_EVENT, - menu_bar_activate_event to MENU_BAR_ACTIVATE_EVENT, drag_n_drop to - DRAG_N_DROP_EVENT, save_session_event to SAVE_SESSION_EVENT and - no_event to NO_EVENT. - -2002-06-12 Pavel Jan,Am(Bk - - * macmenu.c: Remove declaration of Qmouse_click and Qevent_kind. - -2002-06-12 Stefan Monnier - - * intervals.c (textget): Don't forget to `return'. - (lookup_char_property): Use XCAR/XCDR. - -2002-06-12 Juanma Barranquero - - * xdisp.c (Fformat_mode_line): Fix typo. - -2002-06-12 Kim F. Storm - - * xdisp.c (Fformat_mode_line): New function. - (frame_title_buf, frame_title_buf_end, frame_title_ptr) - (store_frame_title_char, store_frame_title): Use unconditionally. - (init_xdisp): Defsubr Fformat_mode_line. - Initialize frame_title_buf etc. unconditionally. - -2002-06-11 Stefan Monnier - - * keyboard.c (read_key_sequence): - Remove prev_(fkey|keytran}_(map|start|end) since we don't want to pass - things through those maps after downcasing events. - Enforce that keytran_end <= fkey_start, i.e. that key-translation-map - applies after function-key-map. - Make sure that keytran can be done in the middle in the sequence. - Be careful not to throw away events past the one we downcase. - - * lread.c (read_integer): Remove unused var `tem'. - (read1): Fix int/Lisp_Object mixup. - - * xfaces.c (tty_lookup_color): Type bool/Lisp_Object mismatch fixed. - -2002-06-11 Richard M. Stallman - - * keyboard.c (readable_events): Ignore any number of - FOCUS_IN_EVENT events and return 0 if nothing else in buffer. - -2002-06-09 Miles Bader - - * xfaces.c (Ftty_supports_face_attributes_p): New function. - (parse_rgb_list, tty_lookup_color): New functions. - (tty_defined_color): Use `tty_lookup_color' to do all the work. - (color_distance, Fcolor_distance): New functions. - (TTY_SAME_COLOR_THRESHOLD): New macro. - (Qtty_color_standard_values): New variable. - (syms_of_xfaces): Initialize new vars & functions. - -2002-06-08 Colin Walters - - * textprop.c (Vchar_property_alias_alist): New variable. - (syms_of_textprop) : DEFVAR_LISP. - - * intervals.c (lookup_char_property): New function for looking up - overlay and text properties, created from textget. - (textget): Use it. - - * intervals.h (lookup_char_property): Declare. - (Vchar_property_alias_alist): Declare. - - * buffer.c (Foverlay_get): Use lookup_char_property. - -2002-06-07 Sam Steingold - - * xselect.c (lisp_data_to_selection_data): Fix last change: - *data_ret is not a Lisp string, while unibyte_string is. - -2002-06-07 Eli Zaretskii - - * xselect.c (lisp_data_to_selection_data): Fix last change: - set size_ret. - -2002-06-07 Andreas Schwab - - * m/amdx86-64.h: New file. - -2002-06-05 Eli Zaretskii - - * fns.c (Fstring_make_unibyte): Doc fix. - - * xselect.c (lisp_data_to_selection_data): If the requested type - is STRING, call string_make_unibyte to encode the selected text - as a string. - - * window.c (Fset_window_hscroll): Doc fix. - -2002-06-05 Pavel Jan,Am(Bk - - * fileio.c (choose_write_coding_system): - Call select-safe-coding-system properly. - -2002-06-03 Richard M. Stallman - - * xdisp.c (message_with_string): Error if STRING is not a string. - - * fns.c (md5): Pass FILE arg to Vselect_safe_coding_system_function. - - * fileio.c (choose_write_coding_system): Pass FILE arg to - Vselect_safe_coding_system_function. - -2002-06-03 Ken Raeburn - - * buffer.c (fix_overlays_before): Fix list-walking bug in 05-19 change. - -2002-06-02 Thien-Thi Nguyen - - * bytecode.c (Fbyte_code): Cast `current_column' return value to int. - * cmds.c (Fdelete_backward_char, internal_self_insert): Likewise. - * keymap.c (describe_command): Likewise. - * minibuf.c (read_minibuf): Likewise. - - * xdisp.c (redisplay_internal, redisplay_window, decode_mode_spec): - Cast `current_column' return value to int. - (back_to_previous_visible_line_start) - (reseat_at_next_visible_line_start, next_element_from_buffer): - Cast `indented_beyond_p' 3rd arg to float. - - * indent.c (last_known_column): Now a float. - (current_column_1, position_indentation, current_column) - (string_display_width): Return float. - (Fcurrent_column): Cast `current_column' return value to int. - (Fcurrent_indentation): Cast `position_indentation' retval to int. - (indented_beyond_p): Third arg now a float. - (compute_motion, vmotion): Cast `indented_beyond_p' 3rd arg to float. - - * lisp.h (current_column): Now returns float. - (indented_beyond_p): 3rd arg now a float. - -2002-05-31 Eli Zaretskii - - * xfns.c (x_encode_text): Return stringp non-NULL if coding_system - is Qcompound_text_with_extensions. - - * xselect.c (lisp_data_to_selection_data): Always set selection - type as string if x_encode_text returns streingp non-NULL. - - * s/netbsd.h: Include /usr/pkg in the run time shared library path. - -2002-05-30 Richard M. Stallman - - * window.c (Fset_window_configuration): Correct the handling - of point in current buffer, to work with multiple windows. - -2002-05-29 Colin Walters - - * lread.c (Fread_from_string): Don't depend on order of evaluation - for C function parameters. - -2002-05-28 Richard M. Stallman - - * xterm.c (x_display_and_set_cursor): Change the cursor in the same - way for blinked-off state and for a nonselected window. - - * window.c (window_scroll_pixel_based): Don't call Fbolp; - instead, see if the new start pos is at beginning of line. - - * fileio.c (Fwrite_region): If START is a string, don't - make any annotations. - - * eval.c (syms_of_eval): Doc fix. - -2002-05-28 Colin Walters - - * emacs.c (USAGE1): Add --no-splash. - (standard_args): Ditto. - -2002-05-28 Colin Walters - - * lread.c (readchar_count): New variable. - (readchar): Increment it. - (unreadchar): Decrement it. - (read_multibyte): Decrement it. - (Vread_with_symbol_positions): New variable. - (Vread_symbol_positions_list): New variable. - (read_internal_start): New function, created from Fread and - Fread_from_string. Handle Vread_symbol_positions_list and - Vread_with_symbol_positions. - (readevalloop, Fread, Fread_from_string): Use it. - (read1): Use readchar_count to add symbol positions to - Vread_symbol_positions_list if Vread_with_symbol_positions is non-nil. - (syms_of_lread): DEFVAR_LISP and initialize them. - - * lread.c (read0, read1, read_list, read_vector, read_multibyte) - (substitute_object_recurse, substitute_object_in_subtree) - (substitute_in_interval): Prototype. - (read_multibyte): Return c if it's less than zero. - -2002-05-28 Kim F. Storm - - * fileio.c (Fread_file_name_internal): Added brute-force - speed up for using predicate file-directory-p. - -2002-05-28 Kim F. Storm - - * fileio.c (Vread_file_name_function, Vread_file_name_predicate): - New variables. - (syms_of_fileio): DEFVAR_LISP them. - (read_file_name_cleanup): New unwind function. - (Fread_file_name_internal): Only return completions satifying - Vread_file_name_predicate. Temporarily unwind protect and rebind - default-directory while checking completions against the predicate. - (Fread_file_name): Added PREDICATE argument. Specbind it to - Vread_file_name_predicate during completion. - Call Vread_file_name_function to read the file name if non-nil. - - * lisp.h (Fread_file_name): Now has 6 args. - - * callint.c (Fcall_interactively) <"D">: Supply Qfile_directory_p - predicate for Fread_file_name when reading directory name. - Supply Qnil for predicate in other calls to Fread_file_name. - -2002-05-26 Miles Bader - - * term.c (tty_capable_p): New function. - * dispextern.h (tty_capable_p): New function declaration. - (TTY_CAP_INVERSE, TTY_CAP_UNDERLINE, TTY_CAP_BOLD, TTY_CAP_DIM) - (TTY_CAP_BLINK, TTY_CAP_ALT_CHARSET): New macros. - -2002-05-23 Stefan Monnier - - * fileio.c (read_non_regular, Finsert_file_contents): Use BEG_BYTE. - (Finsert_file_contents, build_annotations): Use XCAR, XCDR. - (Vwrite_region_annotate_functions): Docstring fix. - -2002-05-23 Kim F. Storm - - * xterm.c (x_write_glyphs): Clear phys_cursor_on_p if current - phys_cursor's hpos is overwritten. This is still not completely - correct, as it doesn't really make sense to use hpos at all to - get the cursor glyph (as that is relative to the width of the - characters on the line, which may have changed during the update). - -2002-05-22 Jason Rumney - - * w32fns.c (enumfont_t): Remove tail, make pattern a normal - Lisp_Object. - (enum_font_cb2, enum_font_maybe_add_to_list, w32_list_fonts): - Use modified enumfont_t struct. - - * w32term.h (text_cursor_kinds): New enumeration member HBAR_CURSOR. - - * w32term.c (x_draw_bar_cursor): New argument KIND; callers changed. - Handle the `hbar' cursor type. - (x_display_and_set_cursor): Handle the HBAR_CURSOR case. - - * w32fns.c (Qhbar): New variable. - (x_specified_cursor_type): Use it. - -2002-05-21 Ken Raeburn - - * w32fns.c (enum_font_maybe_add_to_list): Use XCDR_AS_LVALUE for - now, when the address is needed. - -2002-05-21 Colin Walters - - * Makefile.in (shortlisp): Add font-core.el. - -2002-05-20 Richard M. Stallman - - * buffer.c (syms_of_buffer) : Doc fix. - - * keyboard.c (read_char_minibuf_menu_prompt): Don't list - equivalent key bindings here. - -2002-05-20 Ken Raeburn - - Change symbol structure to contain a lisp object for the symbol - name: - * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp - object field named "xname". - (SYMBOL_NAME): New macro. - * abbrev.c (write_abbrev): Use SYMBOL_NAME instead of XSYMBOL and - name field. - * alloc.c (Fmake_symbol): Set symbol xname field instead of name. - (mark_object, gc_sweep): Use symbol xname field and XSTRING - instead of name field. - * buffer.c (buffer_slot_type_mismatch): Use XSTRING and - SYMBOL_NAME instead of XSYMBOL and name field. - * callint.c (Fcall_interactively): Use XSTRING and SYMBOL_NAME - instead of XSYMBOL and name field. - * charset.c (Fdefine_charset, Fdeclare_equiv_charset): Use XSTRING - and SYMBOL_NAME instead of XSYMBOL and name field. - * coding.c (Fread_coding_system, code_convert_region1) - (code_convert_string1, code_convert_string_norecord) - (Ffind_operation_coding_system): Use SYMBOL_NAME instead of - XSYMBOL and name field. - * data.c (Fkeywordp, Fsymbol_name, store_symval_forwarding) - (Fmake_variable_buffer_local, Fmake_local_variable) - (Fmake_variable_frame_local): Use SYMBOL_NAME and XSTRING instead - of XSYMBOL and name field. - * editfns.c (Fformat): Use SYMBOL_NAME and XSTRING instead of - XSYMBOL and name field. - * emacs.c (shut_down_emacs) [#if 0]: Use SYMBOL_NAME and XSTRING - instead of XSYMBOL and name field. - * eval.c (do_autoload): Use SYMBOL_NAME and XSTRING instead of - XSYMBOL and name field. - * fns.c (Fstring_equal, Fstring_lessp, Frequire, sxhash): - Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field. - * fontset.c (Fset_fontset_font): Use SYMBOL_NAME and XSTRING - instead of XSYMBOL and name field. - * keyboard.c (echo_char, record_char, parse_modifiers_uncached) - (parse_modifiers, apply_modifiers, Fevent_convert_list) - (parse_solitary_modifier, Fexecute_extended_command): - Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field. - * keymap.c (silly_event_symbol_error, Fsingle_key_description) - (Fdescribe_buffer_bindings): Use SYMBOL_NAME and XSTRING instead - of XSYMBOL and name field. - (describe_command, describe_translation): Use SYMBOL_NAME and - assignment instead of XSYMBOL and name field and XSETSTRING. - * lread.c (Fintern_soft, oblookup): Use SYMBOL_NAME and XSTRING - instead of XSYMBOL and name field. - (Funintern): Use SYMBOL_NAME and assignment instead of XSYMBOL and - name field and XSETSTRING. - * macfns.c (parse_image_spec): Use SYMBOL_NAME and XSTRING instead - of XSYMBOL and name field. - * minibuf.c (Fread_command, Fread_variable): Use SYMBOL_NAME and - assignment instead of XSYMBOL and name field and XSETSTRING. - * print.c (print_error_message, print_object): Use SYMBOL_NAME and - XSTRING instead of XSYMBOL and name field. - * process.c (set_socket_options, Fsignal_process): Use SYMBOL_NAME - and XSTRING instead of XSYMBOL and name field. - * w32fns.c (parse_image_spec, w32_parse_hot_key): Use SYMBOL_NAME - and XSTRING instead of XSYMBOL and name field. - * xfaces.c (merge_face_vector_with_property): Use SYMBOL_NAME and - XSTRING instead of XSYMBOL and name field. - * xfns.c (parse_image_spec): Use SYMBOL_NAME and XSTRING instead - of XSYMBOL and name field. - * xselect.c (symbol_to_x_atom, x_get_foreign_selection): - Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field. - -2002-05-19 Ken Raeburn - - * lisp.h (LISP_MAKE_RVALUE): Delete disabled version, making XCAR - and XCDR real rvalues in most configurations. - - * buffer.c (fix_overlays_in_range, fix_overlays_before): - Don't take the address of the cdr part of a cons cell; instead, track - the parent cell and call XSETCDR, or set the variable for the head - of the list if we haven't started down the list yet. - -2002-05-19 Richard M. Stallman - - * doc.c (reread_doc_file): Don't ask for confirmation. - -2002-05-18 Jason Rumney - - * w32fns.c (w32_create_pixmap_from_bitmap_data): New function. - (xbm_load_image): Use it. - (xbm_load): Ditto. - (xbm_read_bitmap_data): Reverted to xfns.c version. - From David Ponce . - -2002-05-17 Eli Zaretskii - - * msdos.c (sig_suspender, sigprocmask): Don't define for DJGPP - 2.02 and later. - -2002-05-16 Juanma Barranquero - - * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector): Fix typo. - -2002-05-15 Stefan Monnier - - * keyboard.c (read_char_x_menu_prompt): Use an equivalent but more - meaningful test. - (read_char_minibuf_menu_prompt): Fix typo. - -2002-05-15 Eli Zaretskii - - * eval.c (Fcommandp): Doc fix. - -2002-05-13 Stefan Monnier - - * keymap.c (keymap_parent): New fun, extracted from Fkeymap_parent. - (Fkeymap_parent, keymap_memberp, fix_submap_inheritance): Use it. - (Fset_keymap_parent): Gcpro a bit more. - (access_keymap): Gcpro around meta_map call and around the main loop. - (get_keyelt): Gcpro when following indirect references. - (copy_keymap_item): New fun, extracted from Fcopy_keymap. - (copy_keymap_1, Fcopy_keymap): Use it. Don't copy the parent map. - (Fdefine_key, Flookup_key): Gcpro before calling get_keymap. - Remove useless ad-hoc remap code. - -2002-05-13 Richard M. Stallman - - * search.c (search_buffer): Give up boyer moore search if inverse - translation change charset_base. - -2002-05-12 Eli Zaretskii - - * coding.c (decode_coding) : If a lone CR - characters is carried over from the previous block of text, adjust - coding->produced to account for the extra character. - -2002-05-11 Andreas Schwab - - * coding.c (intersection): Keep the elements of the returned list - in the same order as in the first list. - -2002-05-11 Kim F. Storm - - * keymap.c (current_minor_maps): Fix resizing of cmm_maps; - only update cmm_size if realloc actually succeeds. - Testing with initial size of 2 elements revealed that using - realloc on GNU/Linux would cause a random trap in xmalloc - later on, so I rewrote the code to use malloc/bcopy/free instead - of realloc. - -2002-05-10 Jason Rumney - - * w32fns.c (enum_font_cb2): Avoid DBCS raster fonts. - -2002-05-10 Eli Zaretskii - - * coding.c (encode_coding_sjis_big5): Enclose bitwise AND in - parens, to ensure correct evaluation order. - -2002-05-10 Kim F. Storm - - * keymap.c (Vemulation_mode_map_alists): New variable. - (syms_of_keymap): DEFVAR_LISP it. - (current_minor_maps): Process keymap alists in that list before - minor-mode-overriding-map-alist and minor-mode-map-alist. - -2002-05-09 Richard M. Stallman - - * search.c (Freplace_match): Doc fix. - -2002-05-09 Kim F. Storm - - * macterm.c (x_draw_image_foreground, x_draw_image_foreground_1): - Enlarge cursor rectangle drawn around image with non-zero relief. - - * w32term.c (x_draw_image_foreground, w32_draw_image_foreground_1): - Enlarge cursor rectangle drawn around image with non-zero relief. - - * xterm.c (x_draw_image_foreground, x_draw_image_foreground_1): - Enlarge cursor rectangle drawn around image with non-zero relief. - -2002-05-07 Eli Zaretskii - - * xselect.c (lisp_data_to_selection_data): Don't set selection - type if comes from the Lisp object's car. If the selection - contains a pure ASCII text, always return QSTRING as its type. - -2002-05-06 Pavel Jan,Am(Bk - - * mac.c (mac-cut-function): Doc fix. - -2002-05-05 Richard M. Stallman - - * s/gnu.h [DOUG_LEA_MALLOC] (REL_ALLOC): Undefine it. - -2002-05-04 Jason Rumney - - * keyboard.c (make_lispy_event) : Set count to 1 - for event-click-count. - - * process.c (init_process): Only add server subfeature if we can - use non-blocking I/O. - -2002-05-04 Andrew Choi - - * macterm.c (XTread_socket): Call WaitNextEvent once instead of - repeatedly. - -2002-05-03 Jason Rumney - - * process.c (Fmake_network_process): Only support server sockets - when we can make them non-blocking. - - * s/ms-w32.h (HAVE_SELECT): Define. - - * w32.h (FILE_NDELAY): New flag. - - * w32.c (sys_getpeername, fcntl): New functions. - (_sys_read_ahead): Temporarily block on non-blocking sockets. - - * w32proc.c: Include sys/file.h. - -2002-05-03 Colin Walters - - * callproc.c (Vgame_score_directory): Renamed to - Vshared_game_score_directory. - -2002-04-30 Richard M. Stallman - - * s/gnu.h [emacs]: Include stdio.h. - (GNU_LIBRARY_PENDING_OUTPUT_COUNT): New definition, conditional. - - * eval.c (do_autoload): Error if called while preparing to dump. - - * fns.c (Frequire): Error if need to load while preparing to dump. - -2002-04-28 Colin Walters - - * callproc.c (Vgame_score_directory) [!HAVE_SHARED_GAME_DIR]: - Default to "~/.emacs.d/games". - -2002-04-29 Stefan Monnier - - * lread.c (openp): Change arg exec_only to predicate. - (build_load_history): Use XCAR/XCDR. - (Flocate_file_internal): New fun. - (syms_of_lread): Defsubr it. - (Fload): Update call to openp. - - * lisp.h (openp): Update prototype. - - * xfns.c (x_create_bitmap_from_file, x_find_image_file): - * w32proc.c (sys_spawnve): - * w32fns.c (x_create_bitmap_from_file, x_find_image_file): - * w32.c (check_windows_init_file): - * sound.c (Fplay_sound_internal): - * process.c (Fstart_process): - * macfns.c (x_create_bitmap_from_file, x_find_image_file): - * mac.c (run_mac_command): - * emacs.c (init_cmdargs): - * callproc.c (Fcall_process): Update call to openp. - - * textprop.c (remove_properties): Don't use XCAR without CONSP. - - * xterm.c (XTread_socket): Disable the Xutf8LookupString code. - -2002-04-29 Pavel Jan,Am(Bk - - * dispextern.h (DEFAULT_TOOL_BAR_BUTTON_MARGIN) - (DEFAULT_TOOL_BAR_BUTTON_RELIEF): Change default values. - -2002-04-28 Richard M. Stallman - - * minibuf.c (Fall_completions, Ftry_completion): New arg to Fcommandp. - - * eval.c (Fcommandp): New arg for_call_interactively. - * lisp.h (Fcommandp): Declare new arg. - -2002-04-28 Jason Rumney - - * w32proc.c (syms_of_w32proc): Get true file attributes by default. - - * w32.c (stat, fstat): Use file index information to generate - inodes for directories where available. - -2002-04-26 Andrew Choi - - * Makefile.in (C_SWITCH_SYSTEM_TEMACS): Add. - [HAVE_CARBON]: Include Mac object files. - - * alloc.c, callproc.c, dispextern.h, dispnew.c, emacs.c, - fontset.c, frame.c, frame.h, keyboard.c, sysdep.c, term.c, - termcap.c, window.c, xdisp.c, xfaces.c: Use macros MAC_OS8, - MAC_OSX, and MAC_OS instead of macintosh. - - * editfns.c [MAC_OS8]: Include stdio.h. - - * emacs.c [MAC_OS8]: Call mac_initialize instead of x_term_init. - - * fontset.c [MAC_OS]: Set Vdefault_fontset to ETL Fixed instead of - Apple Monaco. - - * process.c (QCfamily, QCfilte): Declare extern. - (wait_reading_process_input) [MAC_OSX]: Clear bit for stdin before - calling select. - - * termcap.c [MAC_OSX]: Don't define tgetnum, PC, tputs, and tgetent. - - * tparam.c [MAC_OSX]: Don't define BC and UP. - - * config.in [HAVE_CARBON]: Add. - - * mac.c, macgui.h, macfns.c, macmenu.c, macterm.c, macterm.h: - Move here from mac/src and mac/inc. - - * s/darwin.h, m/powermac.h, unexmacosx.c: New files. - -2002-04-26 Gerd Moellmann - - * xterm.c (x_draw_phys_cursor_glyph): Undo last change. - Compute phys_cursor_width from the x position returned - by x_draw_glyhs, which is cheaper. - (x_display_and_set_cursor): Compute the buffer-local value - of `cursor-in-non-selected-windows' only when needed. - -2002-04-25 Gerd Moellmann - - * xterm.c (x_draw_phys_cursor_glyph): Take into account that a box - cursor on a stretch glyph has a width that depends on - x_stretch_cursor_p. - -2002-04-25 Pavel Jan,Am(Bk - - * abbrev.c (abbrev-start-location): Doc fix. - - * indent.c (Fvertical_motion): Fix last change. - -2002-04-25 Gerd Moellmann - - * indent.c (Fvertical_motion): Move to the start of the line - containing PT before moving up or down. - -2002-04-24 Gerd Moellmann - - * dispnew.c (update_text_area): Set phys_cursor_on_p to 0 in the - case of writing a whole row, more or less analogous to the case of - writing only parts of a row. - - * xterm.c (x_display_and_set_cursor): Set phys_cursor_width to - 0 for NO_CURSOR. - - * xterm.c (notice_overwritten_cursor): Fix an off by 1 error. - -2002-04-23 Colin Walters - - * buffer.c (syms_of_buffer): Doc fix. - -2002-04-23 Gerd Moellmann - - * xterm.c (notice_overwritten_cursor): Handle the special case - of the cursor being in the first blank non-text line at the - end of a window. - - * xterm.c (x_draw_hollow_cursor, x_draw_bar_cursor) - (x_draw_phys_cursor_glyph): Set phys_cursor_width here. - (x_display_and_set_cursor): Don't set phys_cursor_width here, for - bar cursors only, to make phys_cursor_width contain what its name - suggests. - (notice_overwritten_cursor): Consider the cursor image erased if - the output area intersects the cursor image in y-direction. - -2002-04-23 Simon Marshall - - * xfns.c (x_set_mouse_color): Change default for cross_cursor - to XC_hand2. - -2002-04-23 Pavel Jan,Am(Bk - - * xdisp.c: Remove unused global variable `minibuf_prompt_pixel_width'. - -2002-04-22 Kim F. Storm - - * textprop.c (remove_properties): Fixed trap for malformed plist. - -2002-04-22 Richard M. Stallman - - * cmds.c (Fend_of_line): Handle intangible text in mid line. - - * window.c (make_window): Initialize height_fixed_p, - last_cursor_off_p, and p->cursor_off_p slots. - -2002-04-20 Pavel Jan,Am(Bk - - * fns.c (use-dialog-box): Doc fix. - -2002-04-19 Pavel Jan,Am(Bk - - * xterm.c (note_mode_line_or_margin_highlight): Remove unused - variables `row', `i' and `area'. - (XTread_socket) : Pass KeyPress events when in menu to - toolkit library. - -2002-04-19 Stefan Monnier - - * xfaces.c (clear_font_table): Don't free the default font of - a frame even if it's on another display. - (Finternal_set_lisp_face_attribute): Don't use XFRAME on something - that could be Qt. - -2002-04-19 Juanma Barranquero - - * indent.c (Fmove_to_column): Remove unused local variable - `next_boundary_byte'. - (current_column_1): Likewise. - -2002-04-19 Eli Zaretskii - - * msdos.c (Qhbar): New variable. - (syms_of_msdos): Intern and staticpro it. - (IT_set_cursor_type, IT_set_frame_parameters): Handle the `hbar' - cursor type. - -2002-04-19 Dave Lambert - - Theses change implement an underscore-like (`hbar') cursor. - - * xterm.h (text_cursor_kinds): New enumeration member HBAR_CURSOR. - - * xterm.c (x_draw_bar_cursor): New argument KIND; callers changed. - Handle the `hbar' cursor type. - (x_display_and_set_cursor): Handle the HBAR_CURSOR case. - - * xfns.c (Qhbar): New variable. - (syms_of_xfns): Intern and staticpro it. - (x_specified_cursor_type): Handle `hbar' cursor. - - * s/sol2-5.h (bcopy, bzero, bcmp): Define only if HAVE_BCOPY is - not defined. - -2002-04-18 Richard M. Stallman - - * textprop.c (remove_properties): New arg LIST allows scanning - either a list or a plist. - (interval_has_some_properties_list): New function, like - interval_has_some_properties using list instead of plist. - All callers changed. - (Fremove_list_of_text_properties): New function. - (syms_of_textprop): Defsubr it. - -2002-04-17 Eli Zaretskii - - * s/sol2.h (HAVE_LIBKSTAT): Define only if not already defined. - -2002-04-17 Juanma Barranquero - - * indent.c (Fmove_to_column): Remove unused local variable `end_byte'. - -2002-04-17 Eli Zaretskii - - * window.c (coordinates_in_window): Don't report on margin area - if its width is zero. - -2002-04-16 Jason Rumney - - * w32fns.c (Fx_file_dialog): Decode file name before using. - - * w32term.c (construct_drag_n_drop): Likewise. - -2002-04-16 Eli Zaretskii - - * puresize.h (BASE_PURESIZE): Increase to 830000, since we now - store load-history in pure space. - - * s/msdos.h (SYSTEM_PURESIZE_EXTRA): Reduce to 50000. - -2002-04-16 Stefan Monnier - - * xterm.c (Qlatin_1, Qutf_8): New vars. - (syms_of_xterm): Initialize them. - (XTread_socket): Eliminate incorrect optimization that tried to avoid - decoding the output of X*LookupString. - Always use latin-1 to decode the output of XLookupString. - Try Xutf8LookupString if XmbLookupString failed. - - * region-cache.c (new_region_cache): Use BEG. - -2002-04-16 Gerd Moellmann - - * buffer.c (MMAP_ALLOCATED_P): New macro to be set from system - configuration files. - (mmap_enlarge): Enlarge mapped regions only if MMAP_ALLOCATED_P - returns 0. - -2002-04-15 Andreas Schwab - - * config.in: Regenerated using autoheader. - - * m/7300.h, m/acorn.h, m/alliant-2800.h, m/alliant.h, m/alpha.h, - m/altos.h, m/amdahl.h, m/apollo.h, m/arm.h, m/att3b.h, m/aviion.h, - m/celerity.h, m/clipper.h, m/cnvrgnt.h, m/convex.h, m/cydra5.h, - m/delta.h, m/delta88k.h, m/dpx2.h, m/elxsi.h, m/gec63.h, - m/gould.h, m/hp800.h, m/hp9000s300.h, m/i860.h, m/ia64.h, - m/ibmps2-aix.h, m/ibmrs6000.h, m/ibmrt-aix.h, m/ibmrt.h, - m/ibms390.h, m/intel386.h, m/iris4d.h, m/irist.h, m/isi-ov.h, - m/m68k.h, m/macppc.h, m/masscomp.h, m/mg1.h, m/mips-siemens.h, - m/mips.h, m/news-r6.h, m/news.h, m/next.h, m/nh3000.h, m/nh4000.h - m/ns32000.h, m/orion.h, m/pfa50.h, m/plexus.h, m/pmax.h, - m/powerpcle.h, m/pyrmips.h, m/sequent-ptx.h, m/sequent.h, - m/sparc.h, m/sr2k.h, m/symmetry.h, m/tad68k.h, m/tahoe.h, - m/targon31.h, m/tek4300.h, m/tekxd88.h, m/template.h, m/tower32.h, - m/tower32v3.h, m/ustation.h, m/vax.h, m/wicat.h, m/windowsnt.h, - m/xps100.h, s/aix3-2.h, s/aix4-2.h, s/irix4-0.h, s/irix5-0.h, - s/sco5.h, s/unixware.h: Don't set HAVE_ALLOCA, C_ALLOCA and - STACK_DIRECTION, now set by autoconf. - -2002-04-14 Pavel Jan,Am(Bk - - * dispnew.c (marginal_area_string): Sort arguments. - - * dispextern.h (marginal_area_string): Add prototype. - -2002-04-13 Richard M. Stallman - - * fileio.c (Finsert_file_contents): - Don't call temp_output_buffer_setup--do just part, by hand. - - * coding.c (run_pre_post_conversion_on_str): - Don't call temp_output_buffer_setup--do just part, by hand. - - * keyboard.c (command_loop_1): Don't call start_hourglass - or cancel_hourglass when executing a macro. - - * marker.c (count_markers): New function. - - * xdisp.c (display_mode_element): Don't let mode_line_proptrans_alist - grow without limit. Move recently used elements to the front. - -2002-04-13 Eli Zaretskii - - * unexelf.c (unexec) [__sgi]: Undo the change from 2002-01-20. - -2002-04-12 Gerd Moellmann - - * xdisp.c (sync_frame_with_window_matrix_rows): Don't give frame - rows marginal areas. - (Fdump_frame_glyph_matrix) [GLYPH_DEBUG]: New function. - (syms_of_xdisp) [GLYPH_DEBUG]: Defsubr it. - - * dispnew.c (marginal_area_string): Check that glyph row is enabled. - -2002-04-12 Dave Love - - * dispnew.c (marginal_area_string): New. - - * window.c (window_part): Add ON_LEFT_MARGIN, ON_RIGHT_MARGIN. - (Qleft_margin, Qright_margin): Declare. - (coordinates_in_window, (Fcoordinates_in_window_p): Deal with margins. - - * xterm.c (note_mode_line_or_margin_highlight): Renamed from - note_mode_line_highlight and extended. - - * keyboard.c (Qleft_margin, Qright_margin): Declare. - (make_lispy_event): Deal with mouse events in margins. - -2002-04-12 Stefan Monnier - - * msdos.c (dos_rawgetc): Use a single event for HELP_EVENT. - - * keyboard.c (command_loop_1): Turn off transient-mark-mode rather - than deactivating the mark if tmm is set to `lambda'. - (gen_help_event, kbd_buffer_store_help_event, kbd_buffer_get_event): - Use a single event for HELP_EVENT. - (Fexecute_extended_command): Save last_point_position. - -2002-04-12 Pavel Jan,Am(Bk - - * lisp.h (Fpropertize): Add prototype. - - * fns.c (Fy_or_n_p): Use `minibuffer-prompt' face for prompt. - -2002-04-10 Colin Walters - - * config.in: Add HAVE_SHARED_GAME_DIR. - - * callproc.c (Vgame_score_directory): New variable. - (syms_of_callproc) : DEFVAR_LISP. - -2002-04-10 Richard M. Stallman - - * puresize.h (BASE_PURESIZE): Reduce again to avoid big excess. - -2002-04-09 Stefan Monnier - - * minibuf.c (read_minibuf): Use empty_string. - (Ftry_completion): Allow lambda forms and lists of strings for `alist'. - Short-circuit the search as soon as it "failed". - (Fall_completions): Allow lambda forms and lists of strings for alist. - (Fcompleting_read): Set Qminibuffer_completion_confirm to nil - when require_match is nil. - (Ftest_completion): Rename from `test_completion' and export to elisp. - Call the predicate also when alist is a list. - Obey Vcompletion_regexp_list. - (do_completion, Fminibuffer_complete_and_exit): Use it. - (Fassoc_string): Rename from `assoc_for_completion'. - Allow list of strings as well and export to elisp. - -2002-04-08 Stefan Monnier - - * puresize.h (BASE_PURESIZE): Increase to 900KB. - -2002-04-08 Juanma Barranquero - - * w32.c (sys_accept): Don't hide variable `s'. - -2002-04-05 Gerd Moellmann - - * callint.c (Fcall_interactively): Use INTEGERP instead of - NUMBERP for checking Vhistory_length. - -2002-04-05 Pavel Jan,Am(Bk - - * sound.c (Fplay_sound_internal): Renamed from Fplay_sound. - Doc fix to reflect it. - -2002-04-04 Richard M. Stallman - - * xdisp.c (display_mode_element): New arg RISKY. - Disregard text props found or specified within a variable - that isn't marked risky-local-variable. - (Qrisky_local_variable): New variable. - (syms_of_xdisp): Init and staticpro it. - -2002-04-04 Stefan Monnier - - * undo.c (record_point): New fun. - (record_delete, record_insert): Use it. - -2002-04-03 Juanma Barranquero - - * doc.c (Fdocumentation): Add missing parentheses. - (Fdocumentation_property): Likewise. - -2002-04-03 Stefan Monnier - - * doc.c (Fdocumentation, Fdocumentation_property): When the doc - data is 0, just return nil. - -2002-04-03 Eli Zaretskii - - * msdos.c (syms_of_msdos): Fix last change with - mouse_autoselect_window. - -2002-04-03 Pavel Jan,Am(Bk - - * w32term.c, xterm.c, msdos.c: Rename autoselect_window_p to - mouse_autoselect_window. - -2002-04-02 Stefan Monnier - - * keyboard.c (make_lispy_event): Handle unknown keysyms together - with system-specific keysyms. Use it also for unknown function keys. - - * doc.c (reread_doc_file): Return whether reload was attempted. - (Fdocumentation, Fdocumentation_property): Don't try to reload - if the doc is 0 and only ask once. - - * Makefile.in (lisp, shortlisp): Add ucs-tables.elc. - -2002-04-02 Eli Zaretskii - - * keyboard.c (read_char): If the event was Qselect_window, - restore timer_idleness_start_time to its previous value. - - * msdos.c (dos_rawgetc): Generate SELECT_WINDOW_EVENTs when required. - -2002-04-01 Stefan Monnier - - * region-cache.c (new_region_cache): Use BEG. - - * marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos): - Use BEG and BEG_BYTE. - - * doc.c (get_doc_string): Return nil if the location is wrong. - (reread_doc_file): New fun. - (Fdocumentation, Fdocumentation_property): - Call it if get_doc_string fails. - (Fsnarf_documentation): Make it work for a dumped Emacs. - - * charset.h (DEC_POS, BUF_DEC_POS): Use BEG_BYTE. - Bound the search with MAX_MULTIBYTE_LENGTH to avoid pathological case. - - * charset.c (Fstring): Allow 0 arguments. - - * xterm.c (XTread_socket): Fix int/Lisp_Object confusion. - - * process.c (DATAGRAM_CONN_P, list_processes_1) - (Fprocess_datagram_address, Fset_process_datagram_address) - (Fset_network_process_options, server_accept_connection): - Fix some int/Lisp_Object confusions (thank you union types). - -2002-04-01 Pavel Jan,Am(Bk - - * msdos.c: Rename x_autoselect_window_p to autoselect_window_p. - - * w32term.c: Likewise. - (note_mouse_movement): Put code for x_autoselect_window_p in #if 0. - - * keyboard.c (Qselect_window): New symbol. - (head_table): Use it. - (keys_of_keyboard): Bound select-window event to handle-select-window. - (kbd_buffer_get_event): Make a Lisp event from SELECT_WINDOW_EVENT. - - * xterm.c: Rename x_autoselect_window_p to autoselect_window_p. - (last_window): New variable. - (XTread_socket): Generate SELECT_WINDOW_EVENTs. - (note_mouse_movement): Remove reimplemented code in #if 0. - (XTread_socket): Generate SELECT_WINDOW_EVENTs only for - Emacs windows. - - * termhooks.h (enum event_kind): New event type `SELECT_WINDOW_EVENT'. - -2002-03-31 Gerd Moellmann - - * xterm.c (x_get_char_face_and_encoding): Add parameter DISPLAY_P. - Callers changed. - -2002-03-30 Richard M. Stallman - - * window.c (window_scroll_pixel_based): Exit the move_it_by_lines - loop whenever it stops making progress. - - * widget.c (set_frame_size): Don't call change_frame_size. - -2002-03-30 Gerd Moellmann - - * dispnew.c (direct_output_for_insert): - Call mark_window_display_accurate. - -2002-03-29 Jason Rumney - - * w32term.c (w32_draw_relief_rect): Fix calculations of line lengths. - -2002-03-29 Eli Zaretskii - - * Makefile.in (lread.o): Depend on coding.h. - - * lread.c (openp, Fload): Encode the file name before passing it - to `stat', `access', and `emacs_open'. - (openp): GCPRO the encoded file name. Don't recompute Lisp - strings unnecessarily. - -2002-03-29 Kim F. Storm - - * fns.c (Flax_plist_put): Doc fix. - -2002-03-28 Miles Bader - - * process.c (DATAGRAM_CONN_P): Make sure PROC is really a process. - -2002-03-27 Pavel Jan,Am(Bk - - * process.c (set-network-process-options): Add usage. - (make-network-process): Doc fix. - -2002-03-26 Eli Zaretskii - - * emacs.c (Fdump_emacs): Fix a typo in "command-line-processed". - -2002-03-26 Richard M. Stallman - - * fns.c (Fsubstring_no_properties): New function. - (Flax_plist_get, Flax_plist_put): New functions. - (syms_of_fns): defsubr them. - - * xdisp.c (update_menu_bar): Test only update_mode_lines; - don't test or alter w->update_mode_line. - - * window.c (Fdisplay_buffer): Doc fix. - -2002-03-24 Richard M. Stallman - - * regex.c (GET_UNSIGNED_NUMBER): Give proper error for spaces. - -2002-03-24 Gerd Moellmann - - * eval.c (Qdeclare, Vmacro_declaration_function): New variables. - (Fdefmacro): Handle `(declare ...)'. - (syms_of_eval) : Initialize and staticpro. - (syms_of_eval) : DEFVAR_LISP. - -2002-03-24 Jason Rumney - - * w32fns.c (xbm_scan, xbm_load_image, xbm_read_bitmap_data) - (xbm_file_p): Add prototypes. - (xbm_format, xbm_image_p): Sync with xfns.c. - (reflect_byte): New function. - (xbm_read_bitmap_data): Sync with xfns.c, adapt for Windows. - (xbm_load_image): Create bitmaps with a depth of 1. - (init_xfns): Enable XBM images. - -2002-03-23 Jason Rumney - - * w32term.c (w32_handle_tool_bar_click): Detect up and down events - correctly. Do not pass up_modifier to keyboard buffer. - - * w32fns.c [HAVE_IMAGES, HAVE_PBM]: Remove conditionals. - -2002-03-22 Stefan Monnier - - * Makefile.in (bootstrapclean): New target. - (bootstrap-temacs, bootstrap-doc): Remove. - (bootstrap-emacs): Use a bog-standard `temacs'. - Don't bother to build a DOC file. - - * sysdep.c (wait_for_termination): Use sigsuspend rather than sigpause. - - * emacs.c (main): Handle --unibyte, --multibyte, and --no-loadup - in temacs even if !CANNOT_DUMP. - (standard_args): Keep --no-loadup even if !CANNOT_DUMP. - - * alloc.c (check_pure_size): Only output a warning. - -2002-03-22 Jason Rumney - - * w32fns.c (Fx_create_frame): Enable tool-bar when images are - supported. - - * w32term.c (zv_bits): Declare as short, for word alignment. - (w32_read_socket) : Fix last change. - (syms_of_w32term): Define x-use-underline-position-properties. - - * w32fns.c (x_set_cursor_color): Set cursor_gc as well. - (clear_image_cache): Block input, fix logic, clear matrices in - all frames that share this cache. - -2002-03-22 Eli Zaretskii - - * emacs.c (main): Update the Copyright year in the blurb printed - by "emacs --version". - - * xdisp.c (message_with_string): Fix syntax of a call to GCPRO2. - - * xterm.c (XTread_socket): If XK_ISO_Lock and - XK_ISO_Last_Group_Lock are defined, handle keysyms between - XK_ISO_Lock and XK_ISO_Last_Group_Lock similarly to Mode_switch. - -2002-03-21 Kim F. Storm - - * keyboard.c (menu_bar_items): Mostly undo 2002-02-20 patch, so - menu-bar bindings in keymap and local-map properties _are_ used. - But try keymap property first in accordance with 2002-01-03 patch. - Added comment describing why this is not always reliable. - (tool_bar_items): Ditto for tool-bar. - -2002-03-21 Jason Rumney - - * w32fns.c (x_clear_image_1): Disable color table code. - -2002-03-21 Kim F. Storm - - * lisp.h (DEFUN) [USE_NONANSI_DEFUN]: The 2001-10-17 patch - removed the wrong version of the DEFUN macro; fixed it. - - * fns.c (Ffeaturep): Allow subfeature to be a list (test using - Fmember rather than Fmemq). - (Fprovide): Check that subfeatures is a list. - - * process.c (QCfeature, QCdatagram): Removed variables. - (QCtype, Qdatagram): New variables. - (network_process_featurep): Removed function. - (Fmake_network_process): Removed :feature check. - Use :type 'datagram instead of :datagram t to create a datagram - socket. This allows us to add other connection types (e.g. raw - sockets) later in a consistent manner. - (init_process) [subprocess, HAVE_SOCKETS]: Provide list of - supported subfeatures for feature make-network-process. - (syms_of_process) [subprocess]: Remove QCfeature and QCdatagram. - Intern and staticpro QCtype and Qdatagram. - (syms_of_process) [!subprocess]: Intern and staticpro QCtype. - - * xfns.c (QCtype): Remove duplicate declaration and - initialization (is now declared in process.c). - - * w32fns.c (QCtype): Remove duplicate declaration and - initialization (is now declared in process.c). - -2002-03-21 Richard M. Stallman - - * regex.c (DISCARD_FAILURE_REG_OR_COUNT): New macro. - (CHECK_INFINITE_LOOP): Use DISCARD_FAILURE_REG_OR_COUNT - when jumping to `fail' to avoid undoing reg changes in the - last iteration of the loop. - (GET_UNSIGNED_NUMBER): Skip spaces around the number. - - * Makefile.in (dispnew.o, sysdep.o, xdisp.o, xselect.o, alloc.o): - Depend on process.h. - -2002-03-20 Jason Rumney - - Most of the following changes are still conditional on HAVE_IMAGES - which is not set by default on Windows. - - * emacs.c (main) [WINDOWSNT]: Call init_xfns. - - * w32fns.c (x_set_cursor_color): Set foreground of cursor, not frame. - (Fimage_size, Fimage_mask_p, XPutPixel): New functions. - (four_corners_best, x_clear_image_1, x_clear_image) - (x_alloc_image_color, postprocess_image) - (x_create_x_image_and_pixmap, x_destroy_x_image, xbm_load_image) - (x_from_x_colors, x_disable_image, pbm_load): Adapt for Windows. - (init_xfns, syms_of_w32fns): Initialize image functions and constants. - - * w32gui.h (struct XImage): Define. - - * w32term.c (w32_read_socket) : Use XFASTINT to - extract mouse co-ordinates. - -2002-03-20 Jason Rumney - - * w32.c (init_winsock): Dynamically load new server and UDP - socket functions. - (socket_to_fd): New function. - (sys_socket): Use it. - (sys_setsockopt, sys_listen, sys_getsockname, sys_accept) - (sys_recvfrom, sys_sendto): New wrapper functions. - - * process.c (QCfamily, QCfilter): Remove duplicate declaration - and initialization. - - * makefile.w32-in (LIBS): Remove $(WSOCK32). - -2002-03-20 Eli Zaretskii - - * process.c (conv_sockaddr_to_lisp, conv_lisp_to_sockaddr): - Don't use "sun" as a variable, it's a predefined constant on Sun - machines. - -2002-03-20 Pavel Jan,Am(Bk - - * bytecode.c (Fbyte_code): Revert last change. - -2002-03-19 Kim F. Storm - - * makefile.w32-in (LIBS): Add $(WSOCK32). - From David Ponce . - -2002-03-18 Pavel Jan,Am(Bk - - * process.c (wait_reading_process_input): Move variables `pname' - and `pnamelen' down where they are used. - - * bytecode.c (Fbyte_code): Discard unused computed value to - prevent gcc warning. - - * lisp.h (Fplist_member): Add prototype. - -2002-03-18 Kim F. Storm - - * config.in: Add HAVE_SENDTO, HAVE_RECVFROM, HAVE_SETSOCKOPT, - HAVE_GETSOCKOPT, HAVE_GETPEERNAME, HAVE_GETSOCKNAME, and HAVE_SYS_UN_H. - - * process.c: Define HAVE_LOCAL_SOCKETS based on HAVE_SYS_UN_H. - Remove explicit GNU_LINUX settings for datagram support. - -2002-03-18 Pavel Jan,Am(Bk - - * process.c (Fmake_network_process): Remove unused variable `sa'. - Doc fix. Add usage:. - (set_socket_options): Remove unused variables `optnum' and `opttype'. - -2002-03-17 Richard M. Stallman - - * xdisp.c (cursor_type_changed): New variable. - (redisplay_internal): Redisplay all windows if cursor_type_changed. - Clear it when clearing windows_or_buffers_changed. - (try_cursor_movement, redisplay_window, try_window_id) - (try_window_reusing_current_matrix): Test cursor_type_changed - along with windows_or_buffers_changed. - - * window.h (cursor_type_changed): New variable. - - * xfns.c (x_set_cursor_type): Set cursor_type_changed, - not update_mode_lines, and always set it to 1. - - * xdisp.c (clear_garbaged_frames): Don't set windows_or_buffers_changed - if no frames needed redrawing. - -2002-03-17 Kim F. Storm - - The following changes add support for network server processes, - datagram connections, and local (unix) sockets. - - * process.h (struct Lisp_Process): New member log. - Doc fix: Member command used to indicate stopped network process. - Doc fix: Member childp contains plist for network process. - Doc fix: Member kill_without_query is inverse of query-on-exit flag. - - * process.c (Qlocal, QCname, QCbuffer, QChost, QCservice, QCfamily) - (QClocal, QCremote, QCserver, QCdatagram, QCnowait, QCnoquery, QCstop) - (QCcoding, QCoptions, QCfilter, QCsentinel, QClog, QCfeature): New - variables. - (NETCONN1_P): New macro. - (DATAGRAM_SOCKETS): New conditional symbol. - (datagram_address): New array. - (DATAGRAM_CONN_P, DATAGRAM_CHAN_P): New macros. - (status_message): Use concat3. - (Fprocess_status): Add `listen' status to doc string. Return - `stop' for a stopped network process. - (Fset_process_buffer): Update contact plist for network process. - (Fset_process_filter): Ditto. Don't enable input for stopped - network processes. Server must listen, even if filter is t. - (Fset_process_query_on_exit_flag, Fprocess_query_on_exit_flag): - New functions. - (Fprocess_kill_without_query): Removed. Now defined in simple.el. - (Fprocess_contact): Added KEY argument. Handle datagrams. - (list_processes_1): Optionally show only processes with the query - on exit flag set. Dynamically adjust column widths. Omit tty - column if not needed. Report stopped network processes. Identify - server and datagram network processes. - (Flist_processes): New optional arg `query-only'. - (conv_sockaddr_to_lisp, get_lisp_to_sockaddr_size) - (conv_lisp_to_sockaddr, set_socket_options) - (network_process_featurep, unwind_request_sigio): New helper - functions. - (Fprocess_datagram_address, Fset_process_datagram_address): - (Fset_network_process_options): New lisp functions. - (Fopen_network_stream): Removed. Now defined in simple.el. - (Fmake_network_process): New lisp function. Code is based on - previous Fopen_network_stream, but heavily reworked with new - property list based argument list, support for datagrams, server - processes, and local sockets in addition to old client-only - functionality. - (server_accept_connection): New function. - (wait_reading_process_input): Use it to handle incoming connects. - Do not enable input on a new connection if process is stopped. - (read_process_output): Handle datagram sockets. Use 2k buffer for - them. - (send_process): Handle datagram sockets. - (Fstop_process, Fcontinue_process): Apply to network processes. A - stopped network process is indicated by setting command field to t. - (Fprocess_send_eof): No-op if datagram connection. - (Fstatus_notify): Don't read input for a stream server socket or a - stopped network process. - (init_process): Initialize datagram_address array. - (syms_of_process): Intern and staticpro new variables, defsubr new - functions. - -2002-03-16 Jason Rumney - - * w32fns.c (w32_to_all_x_charsets): Return correct type in - startup case. - -2002-03-16 Richard M. Stallman - - * xdisp.c (redisplay_internal, redisplay_windows): - Use list_of_error to call internal_condition_case_1. - (safe_eval, safe_call): Pass Qt to internal_condition_case_{1,2} - so as to catch all errors with no possibility of debugger redisplay. - (list_of_error): New variable. - (syms_of_xdisp): Init and staticpro it. - - * print.c (print_object): Delete `\ ' from printed rep of frame. - -2002-03-15 Eli Zaretskii - - * msdos.c (dos_rawgetc): Disable the x-autoselect-window feature, - until its implementation is fixed. - -2002-03-14 Pavel Jan,Am(Bk - - * xfns.c (png_load): Remove unused variable `gamma_str'. - -2002-03-14 Richard M. Stallman - - * xfns.c (x_real_positions): Handle failure in XQueryTree. - -2002-03-14 Miles Bader - - * intervals.c (adjust_for_invis_intang): New function. - (set_point_both): Use `adjust_for_invis_intang' to do most of the - work for dealing with invisible+intangible regions. Do so before - and after both forward and backward movements, to handle both - front-sticky and rear-sticky cases. - * textprop.c (text_property_stickiness): Function moved here from - `editfns.c'. - * intervals.h (text_property_stickiness): New declaration. - * editfns.c (char_property_eq): Function removed. - (text_property_stickiness): Function moved to `textprop.c'. - -2002-03-13 Jason Rumney - - * config.in: Add STRFTIME_NO_POSIX2. - - * strftime.c (my_strftime) [STRFTIME_NO_POSIX2]: Handle %h, %EX - and %OX when underlying strftime does not. - -2002-03-13 Stefan Monnier - - * xterm.c (x_set_toolkit_scroll_bar_thumb) : - Use a fixed-size thumb (based on an ad-hoc estimate of 30 chars per - line) to avoid annoying flicker. - (xm_scroll_callback): Get rid of the now unnecessary kludge. - (XTread_socket): Mark it static. - - * xdisp.c (display_mode_element): Fix int/Lisp_Object mixup. - -2002-03-13 Kim F. Storm - - * puresize.h (BASE_PURESIZE): Increase to 775000. - -2002-03-12 Juanma Barranquero - - * editfns.c (syms_of_editfns): Fix typo. - -2002-03-12 Gerd Moellmann - - * xsmfns.c: Include stdio.h because termhooks.h needs it. - Include termopt.h for interrupt_input. - -2002-03-11 Andreas Schwab - - * coding.c (syms_of_coding) : Doc fix. - -2002-03-11 Gerd Moellmann - - * xterm.c (note_mouse_movement): Put code for - x_autoselect_window_p in #if 0. - - * lread.c (Fload): Don't assume that message_with_string uses the - string it is given like a C string. - -2002-03-10 Jan Dj,Ad(Brv - - * xterm.h (x_session_check_input, x_session_initialize): Declare. - - * xterm.c (XTread_socket): Add call to x_session_check_input and - x_session_have_connection. - (x_initialize): Add call to x_session_initialize. - - * termhooks.h (enum event_kind): Add save_session_event. - - * keyboard.c: Add Emacs event save_session_event. - - * emacs.c (main): Add call to syms_of_xsmfns. - - * lisp.h (syms_of_xsmfns): Declare extern. - - * config.in: Add HAVE_X_SM. - - * Makefile.in (LIBXT): Add -lSM -lICE - if HAVE_X_SM and not USE_X_TOOLKIT. - (XOBJ): New file xsmfns.c added. - - * xsmfns.c: New file for X session management. - -2002-03-09 Jason Rumney - - * fileio.c (Fcopy_file) [WINDOWS_NT]: Ensure file is not - read-only when setting modified time. - -2002-03-08 Gerd Moellmann - - * xdisp.c (move_it_vertically_backward): At the end of the function, - when moving forward by lines, treat terminal frames specially. - - * keyboard.c (echo_char): Make sure to add a separator between - keys even if echo_dash hasn't been called. - - * xdisp.c: Use new string macros. - (update_echo_area): Pass number of bytes to message3 instead of - number of chars. - (set_message_1): Don't access a string's size_byte directly. - (decode_mode_spec_coding): Use number of bytes of eoltype string - instead number of chars. - - * lisp.h (SREF, SDATA, SCHARS, SBYTES, SMBP): New macros. - -2002-03-08 Juanma Barranquero - - * w32fns.c (Fx_display_color_cells): Force 24+ bit color depths to - 24-bit. - -2002-03-06 Jason Rumney - - * w32term.c (x_draw_hollow_cursor): Draw same size as block cursor. - -2002-03-06 Gerd Moellmann - - * keyboard.c (echo_prompt, echo_char, echo_dash, echo_now) - (cancel_echoing, echo_length, echo_truncate): Changed to - work with new kboard definition. - (echo_now): Use message3_nolog instead of message2_nolog. - - * alloc.c (mark_kboards): Mark echo_string. - - * keyboard.h (ECHOBUFSIZE): Removed. - (struct kboard): Member echoptr removed, member echobuf renamed - to echo_string. - - * xdisp.c (message_with_string): Use Fformat instead of doprnt and - message3 instead of message2 to display the message using STRING's - text properties. - -2002-03-05 Andreas Schwab - - * xdisp.c (hscroll_margin): Change to EMACS_INT. - -2002-03-05 Per Abrahamsen - - * frame.c (default-frame-alist): Explain that setting it doesn't - affect existing frames. - -2002-03-05 Stefan Monnier - - * indent.c (skip_invisible): Fix my brain fart. - - * dispnew.c (sit_for): Don't wait if executing a kbd macro. - -2002-03-04 Stefan Monnier - - * dosfns.c, dosfns.h, dispnew.c, dispextern.h, commands.h, charset.c, - * alloc.c, abbrev.c, emacs.c, eval.c, keyboard.c, keyboard.h, - * lisp.h, lread.c, sysdep.c, termcap.c, termchar.h, w32term.c, - * window.c, xdisp.c, xselect.c, xterm.c: Change defvar_int definition - and variables to use EMACS_INT instead of just int. - - * buffer.c (syms_of_buffer): Allow non-string `mode-name'. - -2002-03-04 Eli Zaretskii - - * sysdep.c (sys_subshell) [MSDOS]: If PWD is set in the - environment, pass it down with corrected value. - -2002-03-04 Pavel Jan,Am(Bk - - * lread.c (read_filtered_event): Do not call start_hourglass - before returning. - -2002-03-04 Juanma Barranquero - - * w32term.c (x_display_and_set_cursor): Fix typo. - -2002-03-03 Richard M. Stallman - - * fileio.c (Fmake_temp_name): Doc fix. - -2002-03-03 Gary Wong - - * termcap.c [!emacs]: Replace ospeed for building standalone - libtermcap, for binary compatibility. - - * tparam.c [!emacs]: Move #define of bcopy to after string.h. - -2002-03-03 Richard M. Stallman - - * xrdb.c (file_p): Rename arg `path' to `filename'. - - * abbrev.c (Fexpand_abbrev): Increment plist as use count - only if it is an integer. - - * xfns.c (png_load): Set screen_gamma based on f->gamma. - If png_get_sRGB gives an answer, call png_set_gamma - using the default image gamma value. - - * lread.c (read1): When reading from a file, default string to - multibyte only if it has some multibyte characters. - - * print.c (print_object): Output multibyte chars 128...255 - using \x even if ! print_escape_multibyte. - - * xdisp.c (display_mode_element): Move the places where - bytepos, charpos, this, and lisp_string are set. - Use lisp_string to set bytepos. - - * xdisp.c (redisplay_internal): - Call clear_image_cache only if HAVE_WINDOW_SYSTEM. - - * xdisp.c (display_mode_element): Merge properties specified with - :propertize onto those that come with the string. - -2002-03-03 Eli Zaretskii - - * xdisp.c (syms_of_xdisp) : Renamed from - automatic-hscrolling. Users changed. - : Renamed from automatic-hscroll-margin. - Users changed. - : Renamed from automatic-hscroll-step. Users changed. - -2002-03-02 Eli Zaretskii - - * buffer.c (syms_of_buffer) : Doc fix. - -2002-03-02 Kim F. Storm - - * window.c (Fminibuffer_selected_window): New function. - (syms_of_window): Defsubr it. - -2002-03-01 Kim F. Storm - - * window.h (struct window): New member phys_cursor_width. - - * window.c (make_window, replace_window): Init phys_cursor_width. - - * xterm.c (x_display_and_set_cursor): Blink box cursor using - hollow box cursor. Blink bar cursor using 1 pixel wide bar. - - * w32term.c (x_display_and_set_cursor): Blink box cursor using - hollow box cursor. Blink bar cursor using 1 pixel wide bar. - - * lisp.h (GCPRO6): New macro. - - * process.c (Fopen_network_stream): Use GCPRO6. - -2002-03-01 Kim F. Storm - - * process.c (Qconnect, Qfailed): New variables. - (syms_of_process): Intern and staticpro them. - (Fprocess_status): Document connect and failed return values. - [NON_BLOCKING_CONNECT]: New conditional. - (connect_wait_mask, num_pending_connects): New variables. - (status_message): Convert Qfailed status. - (Fopen_network_stream): Added support for non-blocking connect. - New optional args: filter, sentinel, non_blocking. Doc updated. - [HAVE_GETADDRINFO, !HAVE_GETADDRINFO]: Merged common code. - (deactivate_process): Handle pending non-blocking connect. - (wait_reading_process_input): Poll for status of non-blocking - connects. Exec sentinel directly when connect succeeds. - (status_notify): Don't read process output if not yet connected. - -2002-02-28 Kim F. Storm - - * window.c (minibuf_selected_window): Renamed from - Vminibuf_selected_window. Users changed. - (syms_of_window): Staticpro it. - -2002-02-26 Kim F. Storm - - The following changes add a new Vminibuf_selected_window variable - which is similar to Vminibuf_scroll_window, but which is only set - on entry to the minibuffer (from a non-minibuffer window): - - * window.c (Vminibuf_selected_window): New variable. - (struct save_window_data): New member minibuf_selected_window. - (Fset_window_configuration): Restore Vminibuf_selected_window. - (Fcurrent_window_configuration): Save Vminibuf_selected_window. - Set minibuf_scroll_window member to nil if minibuf_level is 0. - (compare_window_configurations): Compare minibuf_selected_window. - - * window.h (Vminibuf_selected_window): Declare extern. - - * minibuf.c (read_minibuf): Set Vminibuf_selected_window on first - entry to minibuffer or on entry from a non-minibuffer window. - - * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): Compare with - Vminibuf_selected_window instead of Vminibuf_scroll_window. - - * xdisp.c (init_iterator): Compare with Vminibuf_selected_window - instead of Vminibuf_scroll_window when deciding in which window - the region should be highlighted. Consequently, the region remains - highlighteded even when a completion buffer is also displayed. - -2002-02-26 Eli Zaretskii - - * fileio.c (Fsubstitute_in_file_name): Fix the change from 2002-02-08. - - * xselect.c (Qcompound_text_with_extensions): Renamed from - Qcompound_text_no_extensions. - (lisp_data_to_selection_data, syms_of_xselect): Use the new name. - -2002-02-26 Juanma Barranquero - - * w32proc.c (syms_of_ntproc): Doc fix. - -2002-02-24 Pavel Jan,Am(Bk - - * intervals.h: Include "dispextern.h" unconditionally. - -2002-02-24 Jason Rumney - - * Makefile.in (WINNT_SUPPORT) [WINDOWSNT]: Add w32-vars.elc - and disp-table.elc. - (lisp): Add emacs-lisp/backquote.elc. - -2002-02-24 Kim F. Storm - - * keymap.c (Flookup_key): Fix problem in 2001-12-28 patch: - The validation of the event type was too strict as it didn't - allow string events; buffer names are used in bindings for - menu-bar-select-buffer (see `menu-bar-update-buffers'). - -2002-02-23 Kim F. Storm - - The following changes rework my patch of 2002-02-06 which - added command remapping by entering the commands directly into - the keymaps. Now, command remapping uses an explicit `remap' - prefix in the keymaps, i.e. [remap COMMAND]. - - * keymap.c (Qremap, remap_command_vector): New variables. - (is_command_symbol): Remove function. - (Fdefine_key): No longer accept a symbol for KEY. - Added validation of [remap COMMAND] argument for KEY. - The DEF is no longer required to be a symbol when remapping a command. - (Fremap_command): New function to remap command through keymaps. - (Flookup_key): Perform command remapping initiated by - Fremap_command directly for speed. - (Fkey_binding): Use Fremap_command for command remapping. - (where_is_internal): Handle new command remapping representation. - (syms_of_keymap): Intern Qremap, initialize remap_command_vector, - staticpro them. Defsubr Fremap_command. - - * keymap.h (Fremap_command): Declare extern. - (is_command_symbol): Remove extern. - - * keyboard.c (command_loop_1): Use Fremap_command for command - remapping; now try command remapping for all symbols. - -2002-02-23 Eli Zaretskii - - * coding.h (run_pre_post_conversion_on_str): Add prototype. - -2002-02-23 Jason Rumney - - * w32select.c (Fw32_set_clipboard_data): Run pre-write-conversion - on the string before encoding it. - (Fw32_get_clipboard_data): Run post-read-conversion on the string - after decoding it. - - * w32fns.c (w32_wnd_proc) : Fix last change. - -2002-02-23 Pavel Jan,Am(Bk - - * w32term.c (enter_timestamp): Remove unused static variable to - prevent warning. - - * xterm.c (enter_timestamp): Put in #if 0 to prevent warning. - -2002-02-23 Eli Zaretskii - - * w16select.c (Fw16_get_clipboard_data): Fix last change. - - * xselect.c (selection_data_to_lisp_data): Fix last change. - -2002-02-22 Jason Rumney - - * w32term.h (struct w32_output): New member menu_command_in_progress. - - * w32menu.c (menubar_selection_callback): Free the menu and - clear the menu_command_in_progress flag. - - * w32fns.c (mouse_move_timer, mouse_button_timer): Initialize. - (menu_free_timer): New variable. - (MENU_FREE_ID, MENU_FREE_DELAY): New constants. - (w32_wnd_proc) : Handle menu_free_timer. - : Delay before freeing menu. Do nothing if a - menu command is in progress. - : Set the menu_command_in_progress flag. - Kill any menu_free_timer that is running. - - * w32term.c (w32_text_out): Renamed from W32_TEXTOUT. - Call ExtTextOutA rather than ExtTextOut. - -2002-02-22 Eli Zaretskii - - * puresize.h (BASE_PURESIZE): Increase to 755000. - -2002-02-22 Eli Zaretskii - - * w16select.c (Fw16_set_clipboard_data): Run pre-write-conversion - on the string before encoding it. - (Fw16_get_clipboard_data): Run post-read-conversion on the string - after decoding it. - -2002-02-22 Eli Zaretskii - - Support for ICCCM Extended Segments in X selections: - - * xselect.c : New variable. - (syms_of_xselect): Intern and staticpro it. - (selection_data_to_lisp_data): Run post-read-conversion on decoded - selection text. - (lisp_data_to_selection_data): If next-selection-coding-system is - compound-text-no-extensions, set the type of selection to be - compound-text. - - * xterm.h (x_encode_text): Update prototype. - - * xfns.c (x_encode_text): Accept additional arg SELECTIONP; all - callers changed. If SELECTIONP is non-zero, run the - pre-write-conversion function before encoding the selection text. - -2002-02-21 Kim F. Storm - - * frame.c (syms_of_frame): Change mouse-highlight default to t. - - * keyboard.c (kbd_buffer_get_event) [WINDOWSNT]: - Correct composing of language-change event. - -2002-02-20 Kim F. Storm - - * keyboard.c (menu_bar_items): Don't include keymap or local-map - bindings at PT when building menu (the menu is not updated often - enough for this to work reliable). - (tool_bar_items): Likewise. - (current_active_maps): Removed unused (and buggy) function. - -2002-02-20 Pavel Jan,Am(Bk - - * xfns.c (gif_load): Use correct width and height for GIF images. - -2002-02-19 Eli Zaretskii - - * floatfns.c (Fatan): Accept an optional second arg and call - atan2 if passed 2 args. - -2002-02-18 Jason Rumney - - * w32term.c (glyph_rect): Determine the row and glyph more precisely. - -2002-02-17 Jason Rumney - - * w32term.c (x_autoselect_window_p): New variable. - (syms_of_w32term): DEFVAR_BOOL and initialize it. - (note_mouse_movement): Use it. - - * w32fns.c (w32_load_system_font): Never set fonts_changed_p to zero. - - * w32bdf.c (w32_load_bdf_font): Maybe set fonts_changed_p. - - * w32fns.c (Qfullscreen, Qfullwidth, Qfullheight, Qfullboth): - New variables. - (syms_of_w32fns): Intern and staticpro them. - (x_frame_parms) <"fullscreen">: New parameter. - (x_fullscreen_move, x_set_fullscreen): New functions. - (x_set_frame_parameters): Support Qfullscreen. - (x_real_positions): Save x/y_pixels_diff frame params. - (x_figure_window_size): Support full-screen frames. - (Fx_create_frame): Default the fullscreen parameter. - - * w32term.c (x_check_fullscreen, x_check_fullscreen_move) - (x_fullscreen_adjust): New functions. - (w32_read_socket) : Don't resize to - fullscreen. Call x_check_fullscreen_move, and set the - want_fullscreen member of output_data.w32 - : Call x_check_fullscreen. - - * w32term.h: New enum for FULLSCREEN_* constants. - (struct w32_output): New members want_fullscreen, x_pixels_diff, - y_pixels_diff, x_pixels_outer_diff, and y_pixels_outer_diff. - (x-fullscreen-adjust): New prototype. - -2002-02-17 Kim F. Storm - - * frame.c (Vmouse_highlight): New variable. - (syms_of_frame): DEFVAR_LISP it. - - * frame.h (Vmouse_highlight): Declare extern. - - * xterm.h (struct x_display_info): Add mouse_face_hidden. - - * xterm.c (disable_mouse_highlight): Removed variable. - (note_mouse_highlight): Don't highlight if Vmouse_highlight is nil. - (show_mouse_face): Don't show highlight if mouse_face_hidden is set. - (XTread_socket): Turn mouse_face_hidden off after mouse movement, - and on after keyboard input. - (x_term_init): Initialize mouse_face_hidden. - - * msdos.h (struct display_info): Add mouse_face_hidden. - - * msdos.c (disable_mouse_highlight): Removed variable. - (show_mouse_face): Don't show highlight if mouse_face_hidden is set. - (IT_note_mouse_highlight): Don't highlight if Vmouse_highlight is nil. - (internal_terminal_init): Initialize mouse_face_hidden. - (dos_rawgetc): Turn mouse_face_hidden off after mouse movement, - and on after keyboard input. - - * w32term.h (struct w32_display_info): Add mouse_face_hidden. - - * w32term.c (disable_mouse_highlight): Removed variable. - (note_mouse_highlight): Disable highlight if Vmouse_highlight is nil. - (show_mouse_face): Don't show highlight if mouse_face_hidden is set. - (w32_read_socket): Turn mouse_face_hidden off after mouse movement, - and on after keyboard input. - (w32_initialize_display_info): Initialize mouse_face_hidden. ++2007-10-08 Martin Rudalics + -2002-02-16 Eli Zaretskii - - * msdos.c (last_mouse_window): New variable. - (dos_rawgetc): Fix last change--if the mouse is in the same window - as recorded in last_mouse_window, don't select this window. - - * Makefile.in (lisp, shortlisp): Use cus-start.elc, not cus-start.el. - - * msdos.c (x_autoselect_window_p): New variable. - (syms_of_msdos): Defvar it. - (dos_rawgetc): If x_autoselect_window_p is set, select the window in - which the last mouse movement occured, unless it is already selected. - - * xdisp.c (automatic_hscroll_margin, Vautomatic_hscroll_step): - New variables. - (syms_of_xdisp): DEVFAR them. - (hscroll_window_tree): Use automatic_hscroll_margin and - Vautomatic_hscroll_step to compute the amount of window scrolling. - -2002-02-16 Pavel Jan,Am(Bk - - * xterm.c (x-autoselect-window): New variable. - (note_mouse_movement): Use it. - - * keyboard.c: Do not include "systime.h" twice. - -2002-02-15 Andreas Schwab - - * puresize.h (PURESIZE_RATIO): Increase to 9/5. - - * alloc.c (NSTATICS): Increase to 1280. - -2002-02-15 Kai Gro,A_(Bjohann - - * alloc.c (NSTATICS): Bump to 1026. - - * xterm.c (Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym) - (Vx_super_keysym): New variables. - (syms_of_xterm): DEFVAR_LISP them. - (x_x_to_emacs_modifiers, x_emacs_to_x_modifiers): Use the - variables to determine which keys to use for the various modifiers. - -2002-02-13 Kim F. Storm - - * window.c (Vmode_line_in_non_selected_windows): Removed. - (mode_line_in_non_selected_windows): New variable. - (syms_of_window): DEFVAR_BOOL it. - - * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): - Use mode_line_in_non_selected_windows. - (mode_line_in_non_selected_windows): Declare extern. - (Vmode_line_in_non_selected_windows): Removed extern. - -2002-02-13 Richard M. Stallman - - * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector) - (Fthis_single_command_keys, Fthis_single_command_raw_keys) - (Fclear_this_command_keys): Doc fixes. - - * xfaces.c (Finternal_make_lisp_face, Finternal_copy_lisp_face) - (update_face_from_frame_parameter): Increment face_change_count - and windows_or_buffers_changed to force redisplay using changed faces. - - * xdisp.c (QCpropertize): New variable. - (mode_line_proptrans_alist): New variable. - (display_mode_element): New arg PROPS; all calls changed. - Implement this, for strings. - Handle literal output of strings by sharing the - main-line code for strings, using local var `literal'. - Handle :propertize feature. - (syms_of_xdisp): Initialze and staticpro QCpropertize and - mode_line_proptrans_alist. - -2002-02-11 Kim F. Storm - - * window.c (Vmode_line_in_non_selected_windows): New variable. - (syms_of_window): DEFVAR_LISP it. - - * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): New macro. - (CURRENT_MODE_LINE_FACE_ID): Use it. - (Vmode_line_in_non_selected_windows): Declare extern. - - * xdisp.c (display_mode_lines): Use CURRENT_MODE_LINE_FACE_ID_3 - to get mode line face. - -2002-02-11 Eli Zaretskii - - * msdos.c (Vx_bitmap_file_path, x_stretch_cursor_p): Remove these - variables; cus-start.el doesn't need them anymore. - -2002-02-09 Kim F. Storm - - * insdel.c (make_gap_smaller): Preserve BEG_UNCHANGED during gap - reduction. This fixes a display problem where stray newlines were - inserted in the window (corrected by C-l). Clarified code (IMHO). - -2002-02-09 Eli Zaretskii - - * dispextern.h (CURRENT_MODE_LINE_FACE_ID): Fix last change. - - * xdisp.c (display_mode_lines): Fix last change. - -2002-02-09 Jason Rumney - - * w32fns.c (enum_font_cb2): Don't let charsets unknown to Windows - match each other. - (w32_load_system_font): Prevent Cleartype fonts from loading. - (Fx_show_tip): Ensure tip frames are above other topmost windows. - -2002-02-09 Kim F. Storm - - * dispextern.h (CURRENT_MODE_LINE_FACE_ID): New macro. - (CURRENT_MODE_LINE_HEIGHT): Use it. - (enum face_id): Add MODE_LINE_INACTIVE_FACE_ID. - - * xdisp.c (window_box_height): Use CURRENT_MODE_LINE_FACE_ID. - (pos_visible_p, handle_face_prop): Likewise. - (display_mode_lines): Likewise, but for the real selected window. - (init_iterator) [row == NULL]: Handle MODE_LINE_INACTIVE_FACE_ID. - - * xfaces.c (Qmode_line_inactive): New face variable for mode-line - in non-selected windows. - (realize_basic_faces): Realize it. - (syms_of_term): Intern and staticpro it. - -2002-02-08 Kim F. Storm - - * alloc.c (SETJMP_WILL_LIKELY_WORK, SETJMP_WILL_NOT_WORK): - Changed mail addresses to emacs-devel@gnu.org. - -2002-02-08 Eli Zaretskii - - * fileio.c (Fsubstitute_in_file_name): If the file name includes - ~user, and there's no such user, don't discard everything before ~user. - - * floatfns.c (Fround): Doc fix. - -2002-02-08 Pavel Jan,Am(Bk - - * sysdep.c (init_system_name): Put unused variable `p' in #if 0. - -2002-02-07 Stefan Monnier - - * lisp.h (Fx_file_dialog): Add extern decl (used in fileio.c). - -2002-02-07 Kim F. Storm - - * keymap.c (where_is_internal): Only check whether definition is - remapped if it fulfills is_command_symbol. - -2002-02-07 Andreas Schwab - - * s/gnu-linux.h (GC_LISP_OBJECT_ALIGNMENT): Define to 2 for m68k. - - * alloc.c (mark_stack): Don't assume sizeof (Lisp_Object) is 4. - -2002-02-06 Kim F. Storm - - * keymap.c (Fdefine_key): Allow symbol as KEY argument for - defining command remapping. Doc updated. - (Flookup_key): Remap command through keymap if KEY is a symbol. - (is_command_symbol): New function. - (Fkey_binding): Use it. New optional argument NO-REMAP. - Doc updated. Callers changed. Perform command remapping via - recursive call unless that arg is non-nil. - (where_is_internal): New argument no_remap. Callers changed. - Call recursively to find original key bindings for a remapped - comand unless that arg is non-nil. - (Fwhere_is_internal): New optional argument NO-REMAP. - Doc updated. Callers changed. Pass arg to where_is_internal. - - * keymap.h (Fkey_binding, Fwhere_is_internal): Update prototype. - (is_command_symbol): Add prototype. - - * keyboard.c (Vthis_original_command): New variable. - (syms_of_keyboard): DEFVAR_LISP it. - (command_loop_1): Set it, and perform command remapping. - -2002-02-06 Pavel Jan,Am(Bk - - * keyboard.c (recursive_edit_1): Call cancel_hourglass unconditionally. - -2002-02-06 Jason Rumney - - * w32term.c (w32_native_per_char_metric): Disable 2002-01-20 change. - -2002-02-06 Eli Zaretskii - - * charset.c (get_charset_id): Use if-else instead of ?:. - -2002-02-06 Richard M. Stallman - - * filelock.c (S_ISLNK): Define if not defined. - -2002-02-03 Richard M. Stallman - - * fileio.c (Fdo_auto_save): Improve "auto save disabled" msg. - - * lread.c (read1): Redesign strategy for force_multibyte and - force_singlebyte. Now is_multibyte records whether read_buffer - is multibyte. Encountering any multibyte character makes it so. - -2002-02-02 Stefan Monnier - - * term.c (term_get_fkeys_1): If `k0' and `k;' are both specified and - with the same sequence, map that sequence to f10 rather than f0. - -2002-02-03 Andreas Schwab - - * s/gnu-linux.h: Check for __mc68000__ instead of __m68k__, the - latter never being defined on GNU/Linux. - -2002-02-02 Eli Zaretskii - - * xfaces.c (realize_default_face): Don't set the weight and slant of - the default face to Qnormal, unless these attributes are unspecified. - -2002-02-02 Pavel Jan,Am(Bk - - * keyboard.c (command_loop_1) [HAVE_X_WINDOWS]: - Call cancel_hourglass unconditionally. - - * eval.c (Fsignal): Remove duplicated declaration of - the variable `display_hourglass_p'. - -2002-01-31 Richard M. Stallman - - * editfns.c (region_limit): Nicer error message. - - * coding.c (decode_composition_emacs_mule): - Give up if NCOMPONENT gets too large to index `component'. - - * callint.c (check_mark): New arg to specify clearer error message. - Callers changed. - -2002-01-27 Richard M. Stallman - - * minibuf.c (Fcompleting_read): Doc fix. - -2002-01-27 Pavel Jan,Am(Bk - - * minibuf.c (Fread_from_minibuffer, Fread_command, Fread_function) - (Fread_variable, Fread_buffer, minibuffer-completion-confirm): - Fix doc-strings. - -2002-01-26 Richard M. Stallman - - * buffer.c (syms_of_buffer): Doc fixes for scroll-...-aggressively. - - * xdisp.c (try_scrolling): Exchange uses of scroll_down_aggressively - and scroll_up_aggressively. - -2002-01-26 Pavel Jan,Am(Bk - - * keyboard.c (parse_tool_bar_item): Remove duplicated prototypes. - -2002-01-25 Stefan Monnier - - * textprop.c (Fnext_property_change, Fnext_single_property_change) - (Fprevious_property_change, Fprevious_single_property_change): - Stay within the narrowed-buffer boundaries. - -2002-01-25 Eli Zaretskii - - * term.c (Ftty_display_color_cells): New function. - (syms_of_term): Defsubr it. - (Ftty_display_color_cells, Ftty_display_color_p): Change the - argument name to DISPLAY. Doc fix. - - * dispextern.h: Add prototype for set_tty_color_mode and - tty_setup_colors. - -2002-01-24 Jason Rumney - - * w32term.c (x_scroll_run): Use ScrollWindowEx in place of BitBlt. - If region left to draw is not what was expected, mark the frame as - garbaged. - - * w32fns.c (w32_wnd_proc) : Initialize update_rect. - Combine the regions returned by BeginPaint and GetUpdateRect. - -2002-01-23 Jason Rumney - - * w32term.c (x_update_window_begin): Only hide caret if - w32_use_visible_system_caret is set. - (x_update_window_end): Only show caret if - w32_use_visible_system_caret is set. - (syms_of_w32term): Handle SystemParametersInfo call failing. - - * w32fns.c (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd. - -2002-01-22 Richard M. Stallman - - * unexelf.c (unexec): Define n so as to cause compilation error - for the code where people have often written n instead of nn. - - * .gdbinit (hookpost-run): Defined. - -2002-01-22 Jan Dj,Ad(Brv - - * xfns.c (x_set_frame_parameters): Typo in previous fix corrected. - -2002-01-21 Jan Dj,Ad(Brv - - * xfns.c (x_set_frame_parameters): Just call x_fullscreen_adjust - if fullscreen is being set. - -2002-01-21 Pavel Jan,Am(Bk - - * minibuf.c (Fminibuffer_contents) - (Fminibuffer_contents_no_properties, Fread_from_minibuffer) - (Fread_string, Fread_no_blanks_input, Fcompleting_read): Doc fixes. - -2002-01-21 Richard M. Stallman - - * window.c (check_frame_size): Fix minimum height calculation. - -2002-01-20 Ken Raeburn - - * dispextern.h (WINDOW_WANTS_MODELINE_P): Use XFASTINT on window - height before comparison. - (WINDOW_WANTS_HEADER_LINE_P): Likewise. - -2002-01-20 Jason Rumney - - * w32term.c (w32_system_caret_width): Remove. - (w32_use_visible_system_caret): New user flag. - (syms_of_w32term): DEFVAR_BOOL it. Initialize based on whether - Windows reports a screen reader running. - (x_update_window_begin): Hide the system caret. - (x_update_window_end): Show the system caret. - (x_display_and_set_cursor): Don't draw a cursor when - w32_use_visible_system_caret is set. Do not adjust width. - - * w32fns.c (w32_visible_system_caret_hwnd): New static variable. - (w32_wnd_proc) : Set it. - : Arrange for system caret to be visible if - the user requests it. Use system default width when creating. - : Handle new messages. - - * w32term.h (WM_EMACS_SHOW_CARET, WM_EMACS_HIDE_CARET): - New window messages. - -2002-01-20 Richard M. Stallman - - * window.c (MIN_SAFE_WINDOW_HEIGHT): Value now 1. - -2002-01-20 Pavel Jan,Am(Bk - - * doprnt.c (doprnt1): Fix typos in error call. - -2002-01-20 Eli Zaretskii - - * unexelf.c (unexec) [__sgi]: Support the .got sections. - -2002-01-20 Jason Rumney - - * w32term.c (w32_native_per_char_metric): Don't trust the metrics - that Windows returns. If a double check fails, try to guess how - ExtTextOut is going to act. - - * w32fns.c (w32_load_system_font, w32_to_x_charset): Use strnicmp - in place of stricmp. - (w32_list_synthesized_fonts): Removed. - (w32_to_all_x_charsets, enum_font_maybe_add_to_list): New functions. - (struct enumfont_t): New element; list. - (enum_font_cb2): List all style and charset variations of a font. - (Fw32_select_font): New optional argument; include_proportional. - Exclude vertical fonts. Exclude proportional fonts unless - include_proportional is non-nil. - (w32_enable_synthesized_fonts): Change to a boolean. - (Fw32_send_sys_command): Doc fix. - -2002-01-19 Pavel Jan,Am(Bk - - * dispnew.c (update_frame): Move the variable `tem' to the block - where it is used. - -2002-01-19 Jason Rumney - - * w32fns.c (Fx_create_frame): Bind redisplay-dont-pause around - call to face-set-after-frame-default. - -2002-01-18 Richard M. Stallman - - * dispextern.h (WINDOW_WANTS_MODELINE_P): Check window height > 1. - (WINDOW_WANTS_HEADER_LINE_P): Check window height provides room. - -2002-01-17 Richard M. Stallman - - * window.c (enlarge_window): When exceeding size of parent, - directly delete all the siblings instead of trying to resize it. - -2002-01-17 Pavel Jan,Am(Bk - - * term.c (set_tty_color_mode): Remove unused variable `tem'. - -2002-01-16 Henrik Enberg - - * lread.c (init_lread): Move the installed-lisp dirs later in the path. - -2002-01-16 Kim F. Storm - - * xterm.c (x_erase_phys_cursor): Don't erase cursor if cursor row - is invisible. This can happen if cursor is on top line of a - window, and we switch to a buffer with a header line. - - * w32term.c (x_erase_phys_cursor): Ditto. - -2002-01-16 Pavel Jan,Am(Bk - - * xterm.c (XTread_socket) [!USE_X_TOOLKIT]: Compute the value of - `dont_resize' only when used. - - * xdisp.c: Remove forgotten extern declaration of `Qimage'. - -2002-01-15 Eli Zaretskii - - * xdisp.c (display_mode_element): When computing charpos, depend - on multibyteness of elt, not the text in field. - -2002-01-15 Pavel Jan,Am(Bk - - * buffer.c (Fkill_all_local_variables): - Increment `update_mode_lines' only once. - -2002-01-14 Pavel Jan,Am(Bk - - * lisp.h (adjust_after_replace_noundo) - (Fupdate_coding_systems_internal): Add prototypes. - - * sound.c (Fplay_sound): Initialize header_size also for :data case. - -2002-01-14 Eli Zaretskii - - Support for the --color command-line argument and tty-color-mode - frame parameter: - - * term.c (tty_default_color_capabilities, tty_setup_colors) - (set_tty_color_mode): New functions. - (term_init): Call tty_default_color_capabilities. - (Qtty_color_mode_alist): New variable. - (syms_of_term): Intern and staticpro it. - - * frame.c (store_frame_param): Call set_tty_color_mode for termcap - frames. - (do_switch_frame): For termcap frames, switch the tty - color mode as specified by the frame's parameters. - (Qtty_color_mode): New variable. - (syms_of_frame): Intern and staticpro it. - - * emacs.c (USAGE2): Add the --color option. - (standard_args): Ditto. - -2002-01-13 Jan Dj,Ad(Brv - - * xterm.h (struct x_output): New members want_fullscreen, - x_pixels_diff, y_pixels_diff, x_pixels_outer_diff, and - y_pixels_outer_diff. - New enum for FULLSCREEN_* constants. - (FRAME_OUTER_WINDOW): Handle the case where output_data.x->widget - is NULL. - (x_fullscreen_adjust): Add prototype. - - * emacs.c (USAGE2): Add the new full-screen arguments. - (standard_args): Ditto. - - * xfns.c (Qfullscreen, Qfullwidth, Qfullheight, Qfullboth): - New variables. - (syms_of_xfns): Intern and staticpro them. - (x_frame_parms) <"fullscreen">: New parameter. - (x_fullscreen_move, x_set_fullscreen): New functions. - (x_set_frame_parameters): Support for Qfullscreen. - (x_real_positions): More accurate computation of the frame position. - (x_figure_window_size): Support full-screen frames. - (Fx_create_frame): Default the fullscreen parameter. - - * xterm.c (x_check_fullscreen, x_fullscreen_adjust): New functions. - (XTread_socket) : Call x_check_fullscreen. - : Don't resize to fullscreen. - Call x_check_fullscreen_move, and set the want_fullscreen member of - output_data.x. - -2002-01-13 Jason Rumney - - * w32term.h (WM_XBUTTONDOWN, WM_XBUTTONUP): New window messages - for mice with more than 3 buttons. - - * w32term.c (parse_button): New parameter xbutton. Callers changed. - (w32_read_socket): Handle new "XBUTTON" messages. - - * w32fns.c (w32_pass_extra_mouse_buttons_to_system): New user option. - (syms_of_w32fns): DEFVAR_BOOL it. - (w32_wnd_proc): Handle new "XBUTTON" messages. - -2002-01-13 Pavel Jan,Am(Bk - - * keyboard.c (read_key_sequence): Remove unused variable `extra_maps'. - -2002-01-13 Andreas Schwab - - * xterm.c (x_load_font): Never set fonts_changed_p to zero. - -2002-01-12 Andreas Schwab - - * .gdbinit (xbuffer): Remove address operator since data is now a - pointer. - -2002-01-11 Richard M. Stallman - - * insdel.c (adjust_after_replace_noundo): New function. - - * coding.c (code_convert_region): Don't copy old text if undo disabled. - -2002-01-09 Jason Rumney - - * xdisp.c (x_consider_frame_title): Don't count the tooltip frame - when checking for multiple frames. - -2002-01-08 Richard M. Stallman - - * window.c (delete_window): Rewrite the code for changing the - selected window to handle the case where WINDOW is not a leaf. - -2002-01-07 Eli Zaretskii ++ * keyboard.c (kbd_buffer_get_event): Break loop waiting for input ++ when there's an unread command event. + - * process.c (send_process): Set src_multibyte to 1 after the call - top setup_coding_system, not before the call. ++ * frame.c (focus_follows_mouse): Moved here from frame.el to allow ++ window autoselection act appropriately when leaving selected frame. ++ (syms_of_frame): Initialize focus_follows_mouse. ++ * frame.h (focus_follows_mouse): Extern it. ++ * macterm.c (XTread_socket): When focus_follows_mouse is nil ++ make SELECT_WINDOW_EVENT only if we don't leave the selected ++ frame. ++ * msdos.c (dos_rawgetc): Likewise. ++ * w32term.c (w32_read_socket): Likewise. ++ * xterm.c (handle_one_xevent): Likewise. ++ * xdisp.c (syms_of_xdisp): In doc-string of ++ mouse-autoselect-window mention focus-follows-mouse. + -2002-01-07 Jason Rumney ++2007-10-08 YAMAMOTO Mitsuharu + - * xmenu.c (set_frame_menubar, xmenu_show): - (xdialog_show): Initialize wv->help to Qnil. ++ * macterm.c (mac_load_query_font): Fix missing return value. ++ [USE_CG_DRAWING] (mac_define_fringe_bitmap, mac_destroy_fringe_bitmap): ++ Add BLOCK_INPUT. + - * w32menu.c (single_submenu, set_frame_menubar, w32_menu_show): - (w32_dialog_show): Initialize wv->help to Qnil. ++2007-10-08 Richard Stallman + -2002-01-06 Jason Rumney ++ * xdisp.c (get_window_cursor_type): Implement documented behavior ++ for cursor-in-non-selected-windows = t. + - * xmenu.c (single_submenu): Initialize wv->help to Qnil. ++2007-10-08 Jason Rumney + - * w32menu.c (w32_menu_display_help): Revert last change. ++ * w32.c (w32_get_resource): Always close registry keys. + - * xmenu.c (menu_highlight_callback): Revert last change. ++2007-10-08 Jason Rumney + -2002-01-06 Andreas Schwab ++ * makefile.w32-in (LIBS): Add COMCTL32. + - * insdel.c (make_gap_larger): Make sure buffer size does not - overflow range of int. ++ * w32fns.c (globals_of_w32fns): Init common controls. + -2002-01-05 Jason Rumney ++2007-10-08 Richard Stallman + - * w32term.c (x_draw_glyphs): Don't call notice_overwritten_cursor if - OVERLAPS_P. ++ * image.c (our_memory_buffer): Renamed from omfib_buffer. + - * w32menu.c (w32_menu_display_help): Hide any tooltip window. ++2007-10-08 Richard Stallman + - * w32fns.c (compute_tip_xy): If tooltip won't fit on the screen - to the left or to the right of the pointer, put it against - the left screen edge. - (x_frame_parms): Add missing braces around initializer. ++ * buffer.c (Foverlays_at): Doc fix. + - * w32term.c (x_setup_relief_colors): Don't compute an image's - background color if it doesn't have a Pixmap. - (notice_overwritten_cursor): Don't depend on - output_cursor and updated_area. Compare pixel coordinates with - window's cursor pixel coordinates. - (x_draw_glyphs, x_clear_end_of_line, show_mouse_face): - Call notice_overwritten_cursor with new arg list. - (show_mouse_face): Fix bug setting a row's mouse_face_p flag - unconditionally. - (x_draw_image_relief): Use predefined macro instead of - constant when the value of `tool_bar_button_relief' is negative. ++2007-10-08 Stefan Monnier + - * w32term.c (x_display_and_set_cursor): Fix PostMessage arg types. ++ * fns.c (Fplist_put): Preserve uneven tail data. + -2002-01-04 Richard M. Stallman ++2007-10-08 Peter O'Gorman (tiny change) + - * xmenu.c (menu_highlight_callback): Hide any tooltip window. ++ * termhooks.h (enum event_kind): Remove trailing comma. + -2002-01-03 Richard M. Stallman ++ * frame.h (enum): Remove trailing comma. + - * keymap.c (Fcurrent_active_maps): Put the `keymap' property map first. - (Fkey_binding): Try the `keymap' property map first. - (Fdescribe_buffer_bindings): Show `keymap' property bindings before - minor mode bindings. ++2007-10-08 Dhuvra Krishnamurthy (tiny change) + -2002-01-03 Kim F. Storm ++ * w32proc.c (delete_child): Don't terminate threads of zombies. + - * keyboard.c (read_key_sequence): Fix cast of submaps arg to bcopy. ++2007-10-08 Martin Rudalics + -2002-01-02 Richard M. Stallman ++ * keyboard.h (struct kboard): New elt Vlast_repeatable_command. + - * keyboard.c (read_key_sequence): Handle the keymap property - before minor mode maps. ++ * keyboard.c (syms_of_keyboard): Set up new Lisp variable ++ last-repeatable-command. ++ (init_kboard): Initialize Vlast_repeatable_command. ++ (command_loop_1): Set it to real_this_command unless that was ++ bound to an input event. ++ (mark_kboards): Mark it. + - * editfns.c (Fformat): Update thissize from field_width - based on the actual width, in the string case. ++2007-10-08 Richard Stallman + -2002-01-01 Pavel Jan,Am(Bk ++ * eval.c (condition-case): Doc fix. + - * charset.h (UNIBYTE_STR_AS_MULTIBYTE_P): Parenthesize assignment - when used as truth value to prevent gcc warnings. ++2007-10-08 Masatake YAMATO + - * sysdep.c, unexapollo.c, w32.c, w32bdf.c, w32heap.c, w32inevt.c, - * w32proc.c: Include . ++ * xfaces.c (tty_supports_face_attributes_p): Fix code ++ for LFACE_INVERSE_INDEX and LFACE_BACKGROUND_INDEX; code ++ was copied and not edited. + -2002-01-01 Andreas Schwab +2007-10-09 Stefan Monnier + + Add new `input-decode-map' keymap and use it for temrinal + escape sequences. + * keyboard.h (struct kboard): Add Vinput_decode_map. + Remove Vlocal_key_translation_map. + * keyboard.c (read_key_sequence): Add support for input-decode-map. + (init_kboard): Init input-decode-map. + Replace local-key-translation-map back with key-translation-map. + (syms_of_keyboard): Declare input-decode-map. + Remove local-key-translation-map. Update docstrings. + (mark_kboards): Mark Vinput_decode_map. + Don't mark Vlocal_key_translation_map. + * keymap.c (Fdescribe_buffer_bindings): Describe input-decode-map. + Replace local-key-translation-map back with key-translation-map. + * term.c (term_get_fkeys_1, CONDITIONAL_REASSIGN): + Bind in input-decode-map rather than function-key-map. + + * lisp.h (XSETPSEUDOVECTOR): Don't set the tag anymore. + This was made redundant by the previous introduction of XSETPVECTYPE. - * eval.c (max_specpdl_size, max_lisp_eval_depth): Define as int, - not EMACS_INT, to make them compatible with DEFVAR_INT. - * lisp.h (max_specpdl_size): Adjust declaration. +2007-10-09 Richard Stallman -2002-01-01 Richard M. Stallman + * image.c (free_bitmap_record): Rename from Free_Bitmap_Record. - * print.c (print_object): Test print_escape_nonascii only for - unibyte strings. - (PRINTPREPARE): Once again bind Qprint_escape_nonascii - when outputting to a multibyte buffer. +2007-09-29 Richard Stallman -2001-12-29 Richard M. Stallman + * eval.c (internal_condition_case_2, internal_condition_case_1) + (internal_condition_case): Reenable abort if x_catching_errors () + to see if that really happens and why. - * print.c (print_object): In multibyte string, use hex escapes. - Use octal only for unibyte strings. - (PRINTPREPARE): Don't ever set Qprint_escape_nonascii. +2007-10-06 Andreas Schwab - * lread.c (read_escape): New arg BYTEREP for reporting whether - escape forces unibyte or multibyte. - (read1): When reading a string, take note of that info. + * fileio.c (Fwrite_region): Ignore EINVAL error from fsync. -2001-12-29 Ken Raeburn +2007-10-04 Juanma Barranquero - * abbrev.c (Fexpand_abbrev): Use NILP instead of implicit zero - comparison to test lisp value returned by Fget. + * image.c (syms_of_image) : Fix typo in docstring. -2001-12-29 Richard M. Stallman +2007-10-03 Stefan Monnier - * lisp.h (max_specpdl_size): Add declaration. + * frame.h (struct frame): Don't try to GC-mark menu_bar_items_used. - * fileio.c (Fdo_auto_save): If NO_MESSAGE, don't call push_message. +2007-10-02 Stefan Monnier - * keymap.c (silly_event_symbol_error): New subrtn, from Fdefine_key. - Handle modifier bits. Correct typo in error message. + * window.h (struct window): + * window.c (struct save_window_data, struct saved_window): + * termhooks.h (struct terminal): + * process.h (struct Lisp_Process): + * frame.h (struct frame): + * buffer.h (struct buffer): + * lisp.h (struct Lisp_Vector, struct Lisp_Char_Table) + (struct Lisp_Bool_Vector, struct Lisp_Subr, struct Lisp_Hash_Table): + The size field of (pseudo)vectors is now unsigned. + (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG): Simplify accordingly. -2001-12-28 Richard M. Stallman + * lisp.h (struct Lisp_Hash_Table): Move non-traced elements at the end. + Turn `count' into an integer. - * abbrev.c: Use the plist of an abbrev for multiple params if nec. - (Fdefine_abbrev): New arg SYSTEM-FLAG for a system abbrev. - (Fdefine_global_abbrev, Fdefine_mode_abbrev): - Update calls to Fdefine_abbrev. - (write_abbrev): Update for changed data format. - Don't list "system" abbrevs. - (Fexpand_abbrev): Update use count with new data format. - (describe_abbrev): Update for changed data format. - (Fdefine_abbrev_table): Handle the new SYSTEM-FLAG. + * fns.c (make_hash_table, hash_put, hash_remove, hash_clear) + (sweep_weak_table, sweep_weak_hash_tables, Fhash_table_count): + * print.c (print_object) : `count' is an int. + * alloc.c (allocate_hash_table): Use ALLOCATE_PSEUDOVECTOR. + (mark_object) : Use mark_vectorlike. - * config.in (HAVE_MBSINIT): Add #undef. + * alloc.c (allocate_pseudovector): New fun. + (ALLOCATE_PSEUDOVECTOR): New macro. + (allocate_window, allocate_terminal, allocate_frame) + (allocate_process): Use it. + (mark_vectorlike): New function. + (mark_object) : Use it. + (mark_terminals): Use it. + (Fmake_bool_vector, Fmake_char_table, make_sub_char_table) + (Fmake_byte_code): Use XSETPVECTYPE. - * strftime.c (mbsinit): Define as no-op if not available. + * frame.c (Fframe_parameters): Minor simplification. - * s/sco5.h (LIBX11_SYSTEM) [MOTIF]: Add -lgen. - (sigprocmask_set): Conditionalize decl on ! NOT_C_CODE. + * insdel.c (adjust_markers_for_insert): Generalize assertion checks. - * keymap.c (Flookup_key): Error message if key has wrong data type. - (Fdefine_key): Add error message for trying to bind [DEL], [RET], etc. - (exclude_key): New variable. + * marker.c (Fmarker_buffer): Make test for odd case into a failure. -2001-12-28 Gerd Moellmann + * buffer.c (Fget_buffer_create, init_buffer_once): + * lread.c (defsubr): + * window.c (Fcurrent_window_configuration): Use XSETPVECTYPE. - * xterm.c (x_setup_relief_colors): Don't compute an image's - background color if it doesn't have a Pixmap. + * lisp.h (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG): Don't let them be + defined differently in the m/*.h files. + (XCHAR_TABLE, XBOOL_VECTOR): Add assertion checking. + (XSETPVECTYPE): New macro. + (XSETPSEUDOVECTOR): Use it. - * xterm.c (notice_overwritten_cursor): Don't depend on - output_cursor and updated_area. Compare pixel coordinates with - window's cursor pixel coordinates. - (x_draw_glyphs, x_clear_end_of_line, show_mouse_face): - Call notice_overwritten_cursor with new arg list. - (show_mouse_face): Fix bug setting a row's mouse_face_p flag - unconditionally. + * buffer.c (syms_of_buffer) : Move from abbrev.c. + (DEFVAR_PER_BUFFER, defvar_per_buffer): Move from lisp.h and lread.c. - * xdisp.c (try_scrolling) : Add the - height of the cursor line to the amount to scroll. + * lisp.h (defvar_per_buffer, DEFVAR_PER_BUFFER): + * lread.c (defvar_per_buffer): + * abbrev.c (syms_of_abbrev) : Move to buffer.c. -2001-12-27 Richard M. Stallman + * window.c (candidate_window_p): Only consider as visible frames that + are on the same terminal. - * intervals.c (set_point_both): The position after an invisible, - intangible character is not an acceptable stopping point. + * m/ibms390x.h (MARKBIT): Remove unused macro. -2001-12-27 Ken Raeburn +2007-10-01 Juanma Barranquero - * window.c (enlarge_window): In new preserve_before code, convert - CURBEG from lisp object to integer before doing arithmetic. + * lread.c (Fload): Fix typo in docstring. -2001-12-27 Richard M. Stallman +2007-10-01 Micha,Ak(Bl Cadilhac - * bytecode.c (Fbyte_code): Undo previous change. + * floatfns.c (Fexpt): Manually check for overflows, so that a power + of a non-zero value can't yield zero. -2001-12-26 Kim F. Storm +2007-09-29 Stefan Monnier - * keyboard.c (record_char): Ignore duplicate help-echo events only - separated by mouse-movement. When tracking mouse, only record - first and last mouse-movement event in same window. - Don't record mouse-movement events in keyboard macros. + * term.c (term_clear_mouse_face, term_mouse_highlight) + (tty_write_glyphs_with_face): Only define is HAVE_GPM. -2001-12-25 Richard M. Stallman + * print.c (safe_debug_print): Use XHASH. - * window.c (enlarge_window): New arg PRESERVE_BEFORE. Callers changed. - (Fenlarge_window): New arg PRESERVE_BEFORE. + * lisp.h (DECL_ALIGN, USE_LSB_TAG): Move logic to before definition of + Lisp elements such as tags. + (XHASH): New macro. + (EQ): Use it. + (SREF, SSET, STRING_COPYIN): Use SDATA. + (VOID_TO_LISP, CVOID_TO_LISP, LISP_TO_VOID, LISP_TO_CVOID): Remove. - * bytecode.c (Fbyte_code): Use Fstring_make_unibyte - instead of Fstring_as_unibyte. + * alloc.c (mark_terminal): Remove left-over declaration. + (enum mem_type): Replace all vector subtypes -> MEM_TYPE_VECTORLIKE. + (allocate_vectorlike): Remove type argument. Adjust callers. + (live_vector_p, mark_maybe_pointer, valid_lisp_object_p): + Only handle the one remaining MEM_TYPE_VECTORLIKE. -2001-12-22 Pavel Jan,Am(Bk + * alloc.c (MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT): New macros + to avoid unnecessary BLOCK_INPUTs when SYNC_INPUT is used. + (xmalloc, xrealloc, xfree, lisp_malloc, lisp_free, lisp_align_malloc) + (lisp_align_free, make_interval, allocate_string, allocate_string_data) + (make_float, Fcons, allocate_vectorlike, Fmake_symbol, allocate_misc): + Use them. - The following changes remove mocklisp support: + * xfaces.c (load_face_font, free_realized_face, clear_face_gcs): + Don't let signal handlers run when a GC is freed but not yet NULL'ed. + (x_free_gc): Remove BLOCK_INPUT since it's now redundant. - * mocklisp.h, mocklisp.c: Files removed. +2007-09-28 Dan Nicolaescu - * lisp.h: Remove declarations of variables `Vmocklisp_arguments', - `Qmocklisp' and `Qmocklisp_arguments'. - Remove prototype of syms_of_mocklisp. + * Makefile.in (lisp, shortlisp): Delete server.elc, it is not + loaded by default. - * makefile.nt, makefile.w32-in, Makefile.in: Remove mocklisp files. +2007-09-28 Stefan Monnier - * callint.c: Do not include mocklisp.h. - (Fcall_interactively): Do not test for mocklisp case. + * term.c (Fgpm_mouse_start): Don't signal an error if already activated + on this tty. + (Fgpm_mouse_stop): Only deactivate if it was activated on this tty. - * eval.c: Remove variables `Qmocklisp_arguments', - `Vmocklisp_arguments' and `Qmocklisp'. Remove prototype of ml_apply. - (Fprogn, Fwhile, Fcommandp, Feval, Ffuncall, funcall_lambda): - Do not test for mocklisp case. - (Fwhile): Remove unused variable `tem'. - (syms_of_eval): Remove variable `moclisp-arguments'. + * term.c (mouse_face_window): Rename from Qmouse_face_window. + Update all users. + (handle_one_term_event): Use Gpm_DrawPointer. + (Fgpm_mouse_start): Rename from Fterm_open_connection. + Signal errors instead of returning nil. Always return nil. + (Fgpm_mouse_stop): Rename from Fterm_close_connection. + Make it a noop if gpm-mouse was not activated. + (syms_of_term): Update names. - * data.c (wrong_type_argument): Remove mocklisp case. +2007-09-27 Stefan Monnier - * doc.c (Fdocumentation): Remove mocklisp case. + * sysdep.c (narrow_foreground_group, widen_foreground_group): Static. + (init_sys_modes): Check that gpm_tty is the current tty. - * emacs.c (main): Do not call syms_of_mocklisp. + * alloc.c (allocate_terminal): Set the vector size to only count the + lisp fields. Initialize those to nil. + (mark_object): Don't treat terminals specially. + (mark_terminal): Remove. + (mark_terminals): Use mark_object instead. -2001-12-21 Richard M. Stallman + * termhooks.h (struct terminal): Move all Lisp_Object fields traced by + the GC to the beginning. - * xfns.c (compute_tip_xy): If tooltip won't fit on the screen - to the left or to the right of the pointer, put it against - the left screen edge. + * indent.h: + * indent.c: Use EMACS_INT for ints coming from Elisp data. -2001-12-21 Eli Zaretskii + * indent.c (Fmove_to_column): Use EMACS_INT for buffer positions. - * Makefile.in (distclean): Remove .gdbinit if we are building - outside the source tree. +2007-09-25 Jason Rumney -2001-12-19 Eli Zaretskii + * frame.c (make_terminal_frame): Remove special case for WINDOWSNT. - * w32.c (emacs_root_dir): New function. + * w32console.c (create_w32cons_output): Remove. - * msdos.c (emacs_root_dir): New function. + * term.c (init_tty): Call init_sys_modes on WINDOWSNT also. - * fileio.c (Fexpand_file_name) [DOS_NT]: Use the root directory - of the current drive as the fallback for default_directory. + * sysdep.c (init_sys_modes): Use set_terminal_modes_hook. + (reset_sys_modes): Use reset_terminal_modes_hook. - * dired.c (file_name_completion): Run the elements of - completion-ignored-extensions through ENCODE_FILE. +2007-09-24 Stefan Monnier - * lisp.h (scmp): Remove prototype, since it's now a static - function private to dired.c. + * eval.c (do_autoload): Don't output any message. -2001-12-18 Richard M. Stallman +2007-09-24 Juri Linkov - * dired.c (scmp): Function moved from minibuf.c. - Delete multibyte handling--used only on encoded strings. + * emacs.c (standard_args): Change priority of "--no-splash" + from 40 to 3. Add "--no-desktop" with the same priority. - * minibuf.c (scmp): Function moved to dired.c. +2007-09-23 Dmitry Antipov - * fns.c (merge): Add QUIT call. + * alloc.c (gc_sweep): Check cons cell mark bits word by word + and optimize the case where they are all 1. -2001-12-18 Dave Love +2007-09-23 Johannes Weiner - * Makefile.in (lisp, shortlisp): Add language/utf-8-lang.el, - language/georgian.el. + * lisp.h (abs): Define if not defined. + * keyboard.c, sound.c, w32term.c, xfaces.c, xterm.c: + Don't define `abs', since it's defined in lisp.h. -2001-12-18 Eli Zaretskii +2007-09-22 Eli Zaretskii - * Makefile.in (lisp, shortlisp): Synchronize with changes to - lisp/Makefile.in:DONTCOMPILE. + * term.c (DEV_TTY): New macro. Provide a definition for + MS-Windows. + (FRAME_TERMCAP_P) [WINDOWSNT]: Don't define to zero. + (Fcontrolling_tty_p, Fresume_tty, dissociate_if_controlling_tty) + (init_tty): Use DEV_TTY instead of "/dev/tty". + [WINDOWSNT]: No need to protect from NAME arg being null. -2001-12-18 Pavel Jan,Am(Bk +2007-09-21 Dan Nicolaescu - * xdisp.c (window_box_height): Do not return negative values. - From Gerd Moellmann . + * term.c (Fsuspend_tty): Run suspend-tty-functions before cleaning + up the tty state. - * keyboard.c (head_table): Add missing braces around initializer. +2007-09-21 Stefan Monnier - * term.c (keys): Likewise. + * termhooks.h (term_gpm): Delete. Use gpm_tty's NULLness instead. + (gpm_tty): Change its type. + * term.c (term_gpm): Delete. Use gpm_tty's NULLness instead. + (gpm_tty): Change its type and initialize it. + (Fterm_open_connection): Check the frame is indeed a tty. + Use the new gpm_tty. + (Fterm_close_connection): Use the new gpm_tty. + * keyboard.c (tty_read_avail_input): Use the new gpm_tty. + * sysdep.c (init_sys_modes): term_gpm -> gpm_tty. - * xfns.c (x_frame_parms, visual_classes): Likewise. +2007-09-21 Juanma Barranquero -2001-12-17 Sam Steingold + * w32term.c (x_draw_glyph_string): Use strike_through_color, not + underline_color, to draw strike-through. - * coding.c (DECODE_COMPOSITION_END): Fixed a typo in the last - patch (COMPOSING_P, not COMPOSING). +2007-09-21 Stefan Monnier -2001-12-17 Richard M. Stallman + * lisp.h (allocate_terminal): Declare. - * editfns.c (Fcompare_buffer_substrings): Add QUIT to main loop. + * window.c (candidate_window_p): Consider frames that are being placed + by the user as somewhere between visible and iconified. + (window_loop): Prefer windows on the current frame. + (Fselect_window): Move the use of select-frame to the beginning so we + can just delegate all the work (it'll call us back anyway). - * coding.c (code_convert_region): Update coding->cmp_data->char_offset - before calling decode_coding. + * frame.c (Qdisplay_environment_variable): + * frame.h (Qdisplay_environment_variable): Delete. - * charset.c (Fdefine_charset): Call Fupdate_coding_systems_internal. + * .gdbinit (xbacktrace): Print the arg's address rather than the value + of the first arg, since that value may be a union. - * coding.c (DECODE_COMPOSITION_END): Check for ! COMPOSING_P (coding) - instead of only for COMPOSITION_DISABLED. + * callproc.c (child_setup, getenv_internal): Use the frame's `display' + parameter rather than Qdisplay_environment_variable. If all else + fails, look for DISPLAY in initial-environment. -2001-12-16 Richard M. Stallman +2007-09-21 Glenn Morris - * alloc.c (pure_alloc): After overflow, allocate just a small block. + * Makefile.in (emacstool): Remove target. + (lisp, shortlisp): Remove termdev.elc. - * Makefile.in (xmenu.o, xterm.o, fontset.o): Depend on buffer.h. +2007-09-21 Markus Triska - * buffer.h (struct buffer): New field `display_error_modiff'. - * buffer.c (reset_buffer): Initialize `display_error_modiff'. + * xterm.c (x_delete_display): Compile session management conditionally. - * window.c (Frecenter): Clear display_error_modiff field. +2007-09-20 Stefan Monnier - * xdisp.c (redisplay_window_0, redisplay_window_1): New functions. - Call redisplay_window, but not if display_error_modiff field says no. - (redisplay_window_error): New function. - (displayed_buffer): New variable. - (redisplay_internal, redisplay_windows): Call the new functions - instead of redisplay_window directly. + * callproc.c (getenv_internal_1): New function. + (getenv_internal): Use it. + (Fgetenv_internal): Use it. Accept an env-list as optional arg. -2001-12-15 Richard M. Stallman + * terminal.c (get_terminal): Don't accept ints to represent terminals. + (Fterminal_name, Fterminal_parameters, Fterminal_parameter) + (Fset_terminal_parameter): Work with dead terminals as well. + (Fmodify_terminal_parameters): Remove. - * keyboard.c (syms_of_keyboard) : Doc fix. + * terminal.c (get_terminal): Handle terminals. + Make sure the terminal returned is live. + (create_terminal): Use allocate_terminal. + (mark_terminals): Move to alloc.c. + (delete_terminal): Use terminal->name as liveness status. + NULL out fields after freeing their contents. + Don't deallocate the object. + (Fframe_terminal): Use FRAME_TERMINAL. Return the terminal object + rather than an int. + (Fterminal_live_p): Accept non-integer arguments. + (Fterminal_list): Return terminal objects rather than an ints. -2001-12-14 Andrew Innes + * alloc.c (enum mem_type): New member for `terminal' objects. + (allocate_terminal): New function. + (mark_maybe_pointer, valid_lisp_object_p, mark_object): + Handle terminals. + (mark_terminal): New fun. + (mark_terminals): Move from terminal.c. - * makefile.w32-in (EMACSLOADPATH): Define. - ($(EMACS)): Run `list-load-path-shadows' after dumping Emacs. - (bootstrap-temacs): Remove dependency on bootstrap-clean. + * term.c (get_tty_terminal): Don't treat output_initial specially. + (Fsuspend_tty, Fresume_tty): Use terminal objects rather than ints. + (delete_tty): Use terminal->name as liveness status. -2001-12-13 Eli Zaretskii + * termhooks.h (struct terminal): Make it into a pseudovector. + Remove `deleted' replaced by checking `name's nullness. - * xfns.c (x_report_frame_params): Make the scroll-bar-width frame - parameter have a numeric value all the time. + * print.c (print_object): Handle terminals. - * w32fns.c (x_report_frame_params): Likewise. + * lisp.h (enum pvec_type): New `terminal' pseudovector. + (XTERMINAL, XSETTERMINAL, TERMINALP, GC_TERMINALP): New macros. -2001-12-12 Richard M. Stallman + * frame.c (make_terminal_frame): + * keyboard.c (tty_read_avail_input): + * w32term.c (x_delete_terminal): + * xfns.c (Fx_create_frame, x_create_tip_frame): + * xterm.c (x_delete_terminal): Use terminal->name as liveness status. - * fileio.c (Fwrite_region): Doc fix. +2007-09-20 Glenn Morris - * xdisp.c (CLEAR_FACE_CACHE_COUNT): Redefine as 500. - (redisplay_internal): Call clear_image_cache only for window terminals. + * process.c (Fmake_network_process): Doc fix. -2001-12-12 Gerd Moellmann +2007-09-19 Jason Rumney - * xdisp.c (move_it_vertically_backward): Change heuristic - for the case that we didn't move far enough initially. + * dispextern.h (w32_init_fringe, mac_init_fringe): Declare rif argument. - * window.c (Frecenter): Simplify computation in the case of window - system frames and ARG < 0; use window_box_height. +2007-09-19 Micha,Ak(Bl Cadilhac -2001-12-11 Richard M. Stallman + * coding.c (detect_eol_type, detect_eol_type_in_2_octet_form): + Fix a C warning regarding variable constness. - * Makefile.in, mem-limits.h, dispnew.c, emacs.c, fileio.c: - * process.c, sysdep.c, unexec.c: Test GNU_LINUX, not LINUX. + * xterm.c (handle_one_xevent): Fix a C warning. -2001-12-11 Andrew Innes +2007-09-18 Jason Rumney - * insdel.c (make_gap) [DOUG_LEA_MALLOC]: Call make_gap_smaller if - arg is negative. + * w32fns.c (Fx_focus_frame): Rename from Fw32_focus_frame. -2001-12-11 Richard M. Stallman +2007-09-17 Jan Dj,Ad(Brv - * m/hp800.h: Split the __hpux conditional into the parts - that are right for GNU/Linux too and the parts that are not. - Use the former if GNU_LINUX. - (HAVE_ALLOCA, LOAD_AVE_TYPE, LOAD_AVE_CVT): New defs for GNU/Linux. + * gtkutil.c (gdpy_def): New variable. + (xg_initialize): Initialize gdpy_def. + (xg_display_close): If no other display exists, set gdpy_def to a + new connection. - * s/gnu-linux.h (GNU_LINUX): Defined. +2007-09-16 Jan Dj,Ad(Brv -2001-12-11 Pavel Jan,Am(Bk + * gtkutil.c (xg_get_image_for_pixmap): Always create a GdkPixbuf + when we have no file name for the icon. + (xg_tool_bar_expose_callback): Remove. + (xg_create_tool_bar): Don't connect expose signal to + xg_tool_bar_expose_callback. + (xg_get_file_with_chooser): Move GCPRO1 after declarations. - * macros.c, msdos.c, w16select.c: Change doc-string comments to - `new style' [w/`doc:' keyword]. +2007-09-16 Andreas Schwab -2001-12-10 Jason Rumney + * alloc.c (reset_malloc_hooks): Set the hooks to the previous + values instead of zapping them. - * w32menu.c (w32_free_submenu_strings): Clear menu item struct - before using. +2007-09-14 Glenn Morris -2001-12-09 Pavel Jan,Am(Bk + * fringe.c (init_fringe_bitmap) : Move to file scope. + * gtkutil.c (xg_separator_p) : Move to file scope. + * image.c (our_memory_fill_input_buffer) : Move to file + scope and rename to omfib_buffer for clarity. + (gif_load) : Move to file scope. - * dosfns.c: Change doc-string comments to `new style' [w/`doc:' - keyword]. +2007-09-14 Kenichi Handa -2001-12-09 Eli Zaretskii + * xterm.c (handle_one_xevent): Skip decoding if nbytes is zero. - * dosfns.c (dos-display-scancodes, dos-decimal): Doc fix. +2007-09-13 Jason Rumney - * s/hpux10.h (srand48): Don't undefine. + * fringe.c (w32_init_fringe, mac_init_fringe): Add rif argument. -2001-12-09 Jason Rumney + * w32term.c (w32_term_init): Pass rif to w32_init_fringe. - * w32menu.c (_widget_value): Make `help' field a Lisp_Object. - Add comment to explain where the struct came from. - (single_submenu, w32_menu_show): Set `help' field as Lisp_Object. - (add_menu_item): Process pop-up menus first to avoid memory leak. - (add_menu_item, w32_menu_display_help): Use `help' field as - Lisp_Object. - (w32_free_submenu_strings): Only free owner-drawn strings. + * macterm.c (mac_initialize): Don't call mac_init_fringe here. + (mac_term_init): Call here instead, passing rif. -2001-12-09 Pavel Jan,Am(Bk +2007-09-13 Glenn Morris - * COPYING: Moved back. + * s/hpux.h: No longer define `static' as nothing. - * charset.c (char_to_string_1, translate_char, Fdefine_charset): - Add parentheses around && within ||. +2007-09-13 Johan Bockg,Ae(Brd - * indent.c (compute_motion): Likewise. + * callint.c (Fcall_interactively): Remove unused var `fun'. - * intervals.c (merge_properties_sticky): Likewise. +2007-09-12 Romain Francoise - * coding.c (setup_coding_system, shrink_encoding_region) - (Fdecode_sjis_char): Likewise. + * window.c (prefer_window_split_horizontally, display_buffer): + Revert 2007-09-08 change. -2001-12-07 Andreas Schwab +2007-09-12 Glenn Morris - * xdisp.c (display_mode_element): Don't read past end of string if - it ends with '%'. + * alloca.c: Remove file. + * Makefile.in (alloca): Do not undef. + (allocaobj, alloca.o): Remove. + (otherobj): Remove allocaobj. + * keyboard.c (command_loop_1): Remove #ifdef C_ALLOCA block. + * regex.c (C_ALLOCA): Remove all references and code that was only + used when this was defined. + * search.c (boyer_moore): Remove #ifdef C_ALLOCA block. + * xmenu.c (xmenu_show): Remove #ifdef C_ALLOCA block. + * m/ibms390x.h, m/sh3el.h (C_ALLOCA): Remove references to this. - * alloc.c (inhibit_garbage_collection): Don't exceed value an int - can hold. + * Makefile.in (SOURCES, unlock, relock): Delete. - * data.c (Vmost_positive_fixnum, Vmost_negative_fixnum): - Rename from most_positive_fixnum and most_negative_fixnum, resp., and - type changed to Lisp_Object. - (syms_of_data): DEFVAR_LISP them. + * gtkutil.c (cnt): Rename to menu_grab_callback_cnt for clarity. + (menu_grab_callback): All uses changed. -2001-12-07 Richard M. Stallman + * xselect.c (cnt): Rename to x_reply_selection_request_cnt for clarity. + (x_reply_selection_request): All uses changed. - * callproc.c (init_callproc): Set Vdata_directory based on the source - location whenever Emacs was run uninstalled. +2007-09-11 Stefan Monnier -2001-12-06 Paul Eggert + * lread.c (load_warn_old_style_backquotes): Change message to look + better when it appears in the middle of byte-compiler messages. - * config.in (HAVE_WORKING_VFORK): New #undefs. - * process.c (create_process): - Use HAVE_WORKING_VFORK, not HAVE_VFORK. - * m/cnvrgnt.h (HAVE_VFORK): Remove #define. - * m/ibm370aix.h (HAVE_VFORK): Remove #undef. - * m/ibmps2-aix.h (HAVE_VFORK): Remove #define. - * m/intel386.h (HAVE_VFORK): Likewise. - * m/mips-siemens.h (HAVE_VFORK): Likewise. - * m/mips.h (HAVE_VFORK): Likewise. - * s/freebsd.h (vfork): Remove #define. - * s/lynxos.h (HAVE_VFORK): Remove #undef. - * s/usg5-4-2.h: Fix comment about vfork. +2007-09-10 Dan Nicolaescu -2001-12-06 Richard M. Stallman + * s/darwin.h (MULTI_KBOARD): Only define for Carbon. - * s/hpux10.h (random): Add undef. - (HAVE_RANDOM): Define it just once. + * xterm.c (x_create_terminal): Add comment. -2001-12-06 Stefan Monnier + * term.c (clear_tty_hooks, set_tty_hooks): Add comments. - * eval.c: Undo last change: the standard syntax is not wanted. +2007-09-10 Richard Stallman -2001-12-06 Eli Zaretskii + * xterm.c (x_term_init): Give error if can't open DISPLAY_NAME. - * xterm.c (x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the - scroll bars of the frame before deleting the frame itself. If the - frame has a widget, delete the frame with XtDestroyWidget, and do - not call XDestroyWindow before that. +2007-09-10 Micha,Ak(Bl Cadilhac -2001-12-06 Kim F. Storm + * lisp.h (struct Lisp_Subr): Rename `prompt' field to `intspec'. + (DEFUN): Document `intspec', use it instead of `prompt'. - * xfns.c (x_report_frame_params): Return actual fringe widths. + * eval.c (Fcommandp): Change `->prompt' to `->intspec'. - * w32fns.c (x_report_frame_params): Return actual fringe widths. + * data.c (Finteractive_form): If the interactive specification starts + with a `(', use it as a Lisp form. -2001-12-05 Andrew Innes + * fileio.c (Fset_file_modes): Add an interactive spec that reads a file + name and file modes. - * alloc.c (Fgarbage_collect): Shrink buffer gaps that are - excessively large. + * callint.c (Fcall_interactively): Comment fixes. - * insdel.c (make_gap_larger): New function. - (make_gap_smaller): New function. - (make_gap) [USE_MMAP_FOR_BUFFERS || REL_ALLOC]: - Call make_gap_smaller if arg is negative. +2007-09-10 Stefan Monnier -2001-12-04 Stefan Monnier + * callint.c (Fcall_interactively): Use Finteractive_form also for subrs + and compiled functions. - * keyboard.c (kbd_buffer_store_event): Fix interrupt_signal prototype. - Pass a dummy argument when calling interrupt_signal. - (parse_menu_item): Mark disabled items before checking for empty def. - (read_char_minibuf_menu_prompt): Make safety more visible. - (read_key_sequence): Add a `first_unbound' variable. - Use it to detect C-c ESC ESC ESC ESC ... cases and drop the - unbound prefix as soon as we can detect it. +2007-09-08 Fredrik Axelsson - * doc.c (Fsnarf_documentation): Add prototype. - (get_doc_string): Handle negative arguments. - (Fdocumentation): Use AREF and ASIZE. - Move the calls to get_doc_string to a single place. - Don't confuse an interactive-spec for a docstring reference. - (Fdocumentation_property): Take advantage of the fact that - get_doc_string now ignores the sign of the docstring position. + * window.c (prefer_window_split_horizontally): New variable. + (display_buffer): Consider splitting window horizontally depending + on prefer_window_split_horizontally. - * eval.c: Use standard syntax for usage in docstrings. +2007-09-08 Eli Zaretskii -2001-12-03 Pavel Jan,Am(Bk + * sysdep.c [WINDOWSNT]: Don't include sysselect.h. - * xdisp.c (syms_of_xdisp): Make `tool-bar-button-relief' an option. +2007-09-07 Stefan Monnier -2001-12-02 Pavel Jan,Am(Bk + * s/cygwin.h (GC_MARK_STACK): Enable conservative stack marking. - * xterm.c (x_draw_image_relief): Use predefined macro instead of - constant when the value of `tool_bar_button_relief' is negative. + * frame.c (x_set_frame_parameters): Check number is positive before + using XFASTINT. -2001-12-02 Richard M. Stallman + * window.c (freeze_window_start): Don't presume selected_window holds + a window object. + (Fdisplay_buffer): Remove `register' since `buffer' needs to be gcpro'd. - * xmenu.c (menu_highlight_callback): Use `help' field as Lisp_Object. - (single_submenu, xmenu_show): Set `help' field as Lisp_Object. +2007-09-07 Angelo Graziosi (tiny change) - * fileio.c (read_non_regular): Delete Fsignal call. + * term.c (dissociate_if_controlling_tty): Call setsid on CYGWIN. -2001-12-01 Stefan Monnier +2007-09-07 Stefan Monnier - * lisp.h (run_hook_list_with_args): Undo last change. + * window.c (Vsplit_window_preferred_function): New var. + (Fdisplay_buffer): Use it. + (syms_of_window): Export, and initialize it. -2001-12-01 Gerd Moellmann +2007-09-06 Pixel (tiny change) - * xterm.c (x_draw_fringe_bitmap): Always undo clipping. + * image.c (gif_load): Fix bug: Handle nonexistent colormap. -2001-12-01 Jason Rumney +2007-09-06 Glenn Morris - * window.c (Qleft_fringe, Qright_fringe): Remove. Now in frame.c. + * gtkutil.c (menu_grab_callback) : + * xselect.c (x_reply_selection_request) : Move static + variable to file scope. - * w32term.h (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) - [!WM_MOUSELEAVE]: Define. +2007-09-06 Stefan Monnier - * w32menu.c (current_popup_menu, get_menu_item_info): - (set_menu_item_info): New vars. - (set_frame_menubar): Doc fix clarifying GC interaction with menus. - (w32_menu_show): Set current_popup_menu. - (add_menu_item): Allocate new strings for owner-drawn menu items - and help strings. - Use owner-draw for disabled menu items again. - (w32_menu_display_help): Ignore owner-drawn items and popup menus. - (w32_free_submenu_strings, w32_free_menu_strings): New functions. + * xdisp.c (redisplay_internal): Make sure Elisp code always sees + consistent values of selected_frame and selected_window. - * w32fns.c (trackmouse_window, track_mouse_event_fn): New vars. - (w32_wnd_proc) : Notice when mouse enters frame. - : Free menu strings. - : Stop tracking mouse. - (x_create_tip_frame): Specify no minibuffer, modeline or fringes. +2007-09-04 Jason Rumney - * w32term.c (w32_read_socket) : Cancel help echo - and mouse face. + * w32console.c (initialize_w32_display): Zero unused hooks. -2001-12-01 Kim F. Storm +2007-09-04 Dan Nicolaescu - The following changes add left-fringe and right-fringe - frame parameters to adjust fringe widths, or remove one or - both fringes. + * term.c (Vsuspend_tty_functions, Vresume_tty_functions) + (syms_of_term, Fsuspend_tty, Fresume_tty): Undo previous change. - * frame.h (struct frame): Remove trunc_area_pixel_width and - trunc_area_cols fields. - (Qleft_fringe, Qright_fringe): Declare. - (FRAME_RIGHT_FRINGE_WIDTH): New macro. +2007-09-04 Jason Rumney - * frame.c (Qleft_fringe, Qright_fringe): New vars. - (syms_of_frame): Initialize them. + * term.c (init_tty) [WINDOWSNT]: Add hooks that are not accessible + in w32console.c. Set up input. Remove XXX comments that have been + confirmed as correct. - * window.c (coordinates_in_window): Handle separate left and right - fringe widths. + * s/ms-w32.h (MULTI_KBOARD): Define. - * xterm.h (struct x_output): Add left_fringe_width, right_fringe_width, - and fringe_cols fields. - (FRAME_FRINGE_BITMAP_WIDTH, FRAME_FRINGE_BITMAP_HEIGHT): Remove macros. - (FRAME_X_FRINGE_COLS): Use fringe_cols field. - (FRAME_X_FRINGE_WIDTH): Use fringes_extra field. - (FRAME_X_LEFT_FRINGE_WIDTH): Use left_fringe_width field. - (FRAME_X_RIGHT_FRINGE_WIDTH): Use right_fringe_width field. - (x_compute_fringe_widths): Add prototype. + * w32console.c (one_and_only_w32cons): Remove. + (initialize_w32_display): Take terminal argument. - * xterm.c (zv_height, zv_bits, zv_period): Changed zv bitmap to - fill fringe evenly with small dashes. - (x_draw_fringe_bitmap): Clear background if necessary. Align and - clip the new ZV bitmap to avoid jitter between rows. - (x_draw_row_fringe_bitmaps): Rely on x_draw_fringe_bitmap to clear - background. Don't draw fringe bitmaps if fringe width is zero. - (x_compute_fringe_widths): New function. - (x_new_font, x_set_window_size_1): Use it. + * term.c (init_tty) [WINDOWSNT]: Pass terminal to + initialize_w32_display. + (init_tty) [MULTI_KBOARD]: Include this code on WINDOWSNT too. - * xfns.c (x_frame_parms): Add `left-fringe' and `right-fringe' parms. - (x_set_frame_parameters): Process `font' parameter before other - parameters as fringe widths depend on it. - (x_set_fringe_width): New function. - (x_figure_window_size): Use x_compute_fringe_widths. - (Fx_create_frame): Process `left-fringe' and `right-fringe' frame - parameters. + * termhooks.h (enum event_kind) : New event. - * widget.c (set_frame_size): Use x_compute_fringe_widths. - (EmacsFrameSetCharSize): Ditto. + * keyboard.c (discard_mouse_events): Discard it. + (make_lispy_event): Translate it to a lisp event. + (lispy_wheel_names): Add wheel-left and right events. + (syms_of_keyboard): Enlarge wheel_syms. - * w32term.h: Merged changes from xterm.h. - * w32term.c: Merged changes from xterm.c. - * w32fns.c: Merged changes from xfns.c. + * w32fns.c (w32_wnd_proc) : Merge with WM_MOUSEWHEEL. + : Pass new system message to lisp. -2001-11-29 Pavel Jan,Am(Bk + * w32term.h (WM_MOUSEHWHEEL): Define if system headers don't. - * COPYING: Removed. + * w32term.c (construct_mouse_wheel): Make HORIZ_WHEEL_EVENT + from WM_MOUSEHWHEEL. + (w32_read_socket) : Treat as WM_MOUSEWHEEL. -2001-11-29 Dave Love + * w32fns.c (x_create_tip_frame) [MULTI_KBOARD]: Get keyboard from + terminal. - * coding.c (syms_of_coding) : Give it an - extra extra slot. - (detect_coding_mask): Fix call of detect_coding_iso2022. + * w32term.c (w32_create_terminal) [MULTI_KBOARD]: Create a new + keyboard for the terminal. -2001-11-29 Pavel Jan,Am(Bk +2007-09-04 Dan Nicolaescu - * fileio.c (file-name-coding-system) - (default-file-name-coding-system): Doc fix (links to referenced - variables added). + * term.c (Vsuspend_tty_hook): Rename from Vsuspend_tty_functions. + (Vresume_tty_hook): Rename from Vresume_tty_functions. + (syms_of_term): Rename suspend-tty-functions to suspend-tty-hook + and resume-tty-function to resume-tty-hook. + (Fsuspend_tty, Fresume_tty): Use new names. -2001-11-28 Stefan Monnier +2007-09-02 Jan Dj,Ad(Brv - * lisp.h (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5): - Add dummy uses of gcproN variables. + * gtkutil.c (update_frame_tool_bar): Handle stock name as a named icon + if it starts with "n:". - * category.c (describe_category, describe_category_1) - (Fdescribe_categories): Remove. (Moved to lisp/help-fns.el.) - (syms_of_category): Don't defsubr Sdescribe_categories. +2007-08-31 Jan Dj,Ad(Brv -2001-11-28 Richard M. Stallman + * gtkutil.c (update_frame_tool_bar): Initialize wbutton to NULL. - * fileio.c (Ffind_file_name_handler): Avoid initializer for `result'. +2007-08-31 Stefan Monnier - * Makefile.in (lispdir): New variable, referring to build dir. - (TAGS-LISP): Find Makefile in $(lispdir), not $(lispsource). + * frame.h: + * frame.c (Qterm_environment_variable): Remove. + (syms_of_frame): Don't init and staticpro it. -2001-11-28 Andrew Innes + * callproc.c (getenv_internal): Remove special case for $TERM. - * w32menu.c (w32_menu_display_help): Actually add the new argument - OWNER. + * callproc.c (Vinitial_environment): New variable. + (set_initial_environment): Initialize it. + (syms_of_callproc): Declare it. + (child_setup): Don't mess with TERM via Qterm_environment_variable; the + TERM under which a process runs is never related to the TERM in which + Emacs is running. -2001-11-28 Jason Rumney +2007-08-29 Dan Nicolaescu - * w32menu.c (add_menu_item): Do not use owner-draw for disabled - menu items. From David Ponce . - (w32_dialog_show) [HAVE_DIALOGS]: Compile whole function - conditionally. - (w32_menu_display_help): New argument OWNER. Rewritten to store a - help event in the owner frame's keyboard buffer. + * config.in (HAVE_WINDOW_SYSTEM): Don't undef MULTI_KBOARD here... + * s/darwin.h: ... do it here. - * w32fns.c (w32_wnd_proc) : Display help directly. - (Fx_show_tip): Don't subtract last width from row width. +2007-08-29 Stefan Monnier - * w32term.c (w32_read_socket) : Remove. - (w32_read_socket): Use EQ to compare frames. + * lisp.h (set_initial_environment): Rename from set_global_environment. -2001-11-28 Gerd Moellmann + * Makefile.in (${etc}DOC): Re-add a ${EXEEXT} which seems to have been + removed by mistake on the multi-tty branch. - * xterm.c (x_draw_glyphs): Don't call notice_overwritten_cursor if - OVERLAPS_P. + * frame.c (make_terminal_frame): Yet Another Int/Lisp_Object Mixup. + (Fmodify_frame_parameters): Return a value. -2001-11-28 Pavel Jan,Am(Bk + * image.c (png_load): Comment-out var only used in commented-out code. - * xdisp.c (message_dolog): Remove unused variables `gcpro2', - `gcpro3' and `gcpro4'. + * term.c (mark_ttys): Don't bother checking top_frame (incorrectly) + before passing it to mark_object. - * coding.c (decode_coding_string): Remove unused variable `gcpro1'. + * xfaces.c (internal_resolve_face_name): Return a value. + (internal_resolve_face_name, resolve_face_name_error): Comment out. -2001-11-28 Stefan Monnier + * xfns.c (check_x_display_info): Yet Another Int/Lisp_Object Mixup. + (x_icon): Comment-out var only used in commented-out code. - * ccl.c: Use AREF and ASIZE. +2007-08-29 Romain Francoise -2001-11-27 Stefan Monnier + * keyboard.c (Fset_input_mode): Don't call `Fset_quit_char' if + QUIT hasn't been provided. - * lisp.h (run_hook_list_with_args): Remove. - (LIST_END_P): Fix call to wrong_type_argument. - (make_fixnum_or_float): Use EMACS_INT rather than int. +2007-08-29 Dan Nicolaescu -2001-11-26 Stefan Monnier + * callproc.c (child_setup, getenv_internal): Use the + display-environment-variable and term-environment-variable frame + params. + (set_initial_environment): Initialise Vprocess_environment. - * syntax.c (syms_of_syntax): Remove defsubr of Sdescribe_syntax. - (describe_syntax, describe_syntax_1, Fdescribe_syntax): Remove. + * config.in: Disable multi-keyboard support on a mac. - * eval.c: Use AREF and ASIZE. - (Ffetch_bytecode): Add the file name to the error message. + * frame.c (Qterm_environment_variable) + (Qdisplay_environment_variable): New variables. + (syms_of_frame): Intern and staticpro them. + (Fmake_terminal_frame): Disable output method test. - * fileio.c (Ffind_file_name_handler): Give precedence to handlers - which match the end of the file-name. - (Fsubstitute_in_file_name): Don't signal an error if $ENVVAR - is not a valid env var, but leave it as is instead. + * frame.h: Declare them here. - * keymap.c (access_keymap): Handle t bindings like nil bindings. - Make nil bindings in char-tables transparent. - (store_in_keymap): Turn a nil binding into a t binding for char-tables. + * macfns.c (x_set_mouse_color): Get rif from the frame. + (x_set_tool_bar_lines): Don't use updating_frame. + (mac_window): Add 2 new parameters for consistency with other systems. + (Fx_create_frame): Fix doc string. Rename the parameter. Set the + frame parameters following what is done in X11 and w32. Don't use + FRAME_MAC_DISPLAY_INFO. + (Fx_open_connection, start_hourglass): Remove window-system check. + (x_create_tip_frame): Get the keyboard from the terminal. -2001-11-26 Richard M. Stallman + * macmenu.c: Reorder includes. + (Fx_popup_menu): Use terminal specific mouse_position_hook. - * textprop.c (set_text_properties_1): Allow START, END in either order. - Do nothing if range is empty. + * macterm.c (XTset_terminal_modes, XTreset_terminal_modes): Add a + terminal parameter. + (x_clear_frame): Add a frame parameter. + (note_mouse_movement): Get rif from the frame. + (mac_term_init): Initialize the terminal. + (mac_initialize): Make static and move terminal initialization ... + (mac_create_terminal): ... to this new function. - * Makefile.in (mallocobj): Simplify logic using auxiliary vars. + * macterm.h (struct mac_display_info): Add terminal. + (mac_initialize): Delete declaration. - * Makefile.in (mostlyclean): Delete bootstrap-emacs here. - (clean): Not here. + * puresize.h (BASE_PURESIZE): Increase base value to 1164000. -2001-11-25 Stefan Monnier + * sysdep.c: Comment out text after #endif. - * textprop.c (set_text_properties_1): Clearly mark that the - interval should not be empty. + * term.c (init_tty): Only use terminal->kboard when MULTI_KBOARD + is defined. Better initialize ttys in windows. Use terminal + specific mouse_position_hook. - * intervals.c (graft_intervals_into_buffer): - Don't call set_text_properties_1 on an empty interval. + * termhooks.h (union display_info): Add mac_display_info. -2001-11-25 Richard M. Stallman + * w32fns.c (Fx_create_frame): Use kboard from the terminal. + Set the default minibuffer frame, window_system and the rest of the + frame parameters following what is done in X11. - * unexelf.c (unexec): Index by n, not nn, when checking for ".sbss". + * w32term.c (w32_initialize): Make static. - * callproc.c (Fcall_process): When we make a bigger buffer for bufptr, - don't lose the data in it. + * xselect.c (x_handle_selection_clear): Only access + terminal->kboard when MULTI_KBOARD is defined. -2001-11-25 Juanma Barranquero + * s/darwin.h (SYSTEM_PURESIZE_EXTRA): Define here. + (SYSTEM_PURESIZE_EXTRA): Only define on Carbon. - * abbrev.c (Fexpand_abbrev): Use Frun_hooks instead of Vrun_hooks. +2007-08-29 Jason Rumney - * buffer.c (Fkill_buffer): Likewise. + * frame.c (Fdelete_frame): Only get kboard when MULTI_KBOARD defined. + (make_terminal_frame) [WINDOWSNT]: Initialize terminal. - * print.c (temp_output_buffer_setup): Likewise. + * fringe.c (w32_init_fringe w32_reset_fringes) [HAVE_NTGUI]: + (mac_init_fringe) [MAC_OS]: Get rif from selected_frame. -2001-11-25 Stefan Monnier + * keyboard.c (restore_kboard_configuration): Only define when + MULTI_KBOARD defined. - * xfaces.c (merge_face_heights): Coerce back to int explicitly. + * makefile.w32-in: Update dependancies from Makefile.in + (OBJ1): Add terminal.$(O) -2001-11-25 Eli Zaretskii + * term.c (dissociate_if_controlling_tty) [WINDOWSNT]: + Don't define function body. + (init_tty) [WINDOWSNT]: Use selected_frame for initializing. - * window.c (Fset_window_vscroll): Doc fix. From Kalle Olavi - Niemitalo . + * termhooks.h (display_info) [WINDOWSNT]: Add w32. -2001-11-25 Jason Rumney + * w32.c (request_sigio, unrequest_sigio): Remove. - * w32term.h (FRAME_X_FRINGE_COLS): No fringe on tip frames. + * w32console.c (w32con_move_cursor, w32con_clear_to_end) + (w32con_clear_frame, w32con_clear_end_of_line) + (w32con_ins_del_lines, w32con_insert_glyphs, w32con_write_glyphs) + (w32con_delete_glyphs, w32con_set_terminal_window) + (scroll_line, w32_sys_ring_bell): Add frame arg. + (w32con_set_terminal_modes, w32con_reset_terminal_modes): + Add terminal arg. + (PICK_FRAME): Remove. + (w32con_write_glyphs): Use frame specific terminal coding. + (one_and_only_w32cons): New global variable. + (initialize_w32_display): Use it for storing hooks. + (create_w32cons_output): New function. - * w32fns.c (x_create_tip_frame): Set frame's fringes_extra to 0. - (Fx_show_tip): Block input during frame creation. - (Fx_show_tip, Fx_hide_tip): Enable. + * w32inevt.c, w32inevt.h (w32_console_read_socket): Make first + arg a frame. -2001-11-24 Richard M. Stallman + * w32fns.c (x_create_tip_frame): Set terminal and ref count. + Set window_system. + (x_set_tool_bar_lines): Don't use updating_frame. + (Fx_create_frame): Set terminal and ref count. + (Fx_open_connection): Remove window-system check. - * lread.c (Fload): Detect recursive load error for more than 3 - nestings of the same file. - (Vrecursive_load_depth_limit): Variable deleted. - (syms_of_lread) : Variable deleted. + * w32menu.c (Fx_popup_menu): Use terminal specific mouse_position_hook. -2001-11-24 Jason Rumney + * w32term.c (w32_term_init): Call add_keyboard_wait_descriptor. + (w32_set_terminal_modes, w32_reset_terminal_modes): Add terminal arg. + (x_clear_frame, x_delete_glyphs, w32_ring_bell, x_ins_del_lines): + Add frame arg. + (x_delete_terminal, w32_create_terminal): New functions. + (w32_term_init): Create a terminal. + (w32_initialize): Move terminal specific initialization to + w32_create_terminal. - * xfns.c (compute_tip_xy): Initialize root_x and root_y from - mouse position if either left or top is not specified. + * w32term.h (x_output): Remove foreground_pixel and background_pixel. + (w32_clear_rect, w32_clear_area): Use background from frame. + (w32_display_info): Add terminal. + (w32_sys_ring_bell, x_delete_display): Declare here. - * w32fns.c (w32_wnd_proc) : Revert last change. - : Let tip frames resize without restriction. - (my_create_tip_window, Fx_show_tip): Adjust size for external border. - (my_create_tip_window): Assign tip_window. - (x_create_tip_frame): Use same defaults as X. - (compute_tip_xy): Remove unused variable. Use full screen width. - (Fx_show_tip): Do not double height. Call ShowWindow directly. + * xdisp.c (display_menu_bar) [HAVE_NTGUI]: Check frame type. - * w32term.c (x_after_update_window_line): Doc fix. - (w32_read_socket): Doc fix. Avoid SET_FRAME_GARBAGED for tip - frames. - : Redo mouse highlight when hiding tip frame. + * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Bump to 50k. - * xdisp.c (prepare_menu_bars) [HAVE_WINDOW_SYSTEM]: Use tip_frame - for all Windowed systems. +2007-08-29 Kalle Olavi Niemitalo (tiny change) -2001-11-23 Eli Zaretskii + * keyboard.c (interrupt_signal, handle_interrupt, Fset_quit_char): + Fix get_named_tty calls for the controlling tty. - * msdos.c (IT_clear_screen): If the frame's faces are not yet - realized, use the initial screen colors to clear the screen. +2007-08-29 ARISAWA Akihiro (tiny change) -2001-11-23 Pavel Jan,Am(Bk + * term.c (dissociate_if_controlling_tty)[USG]: Fix parse error. - * textprop.c (Fset_text_properties): Remove unused variables - `unchanged', `prev_changed', `s' and `len'. +2007-08-29 Yoshiaki Kasahara (tiny change) - * search.c (Freplace_match): Remove unused variable `inslen'. - - * keymap.c (access_keymap): Remove unused variables `c1' and `c2'. - -2001-11-22 Jason Rumney - - * w32fns.c (x_window_to_frame): Remove irrelevant TODO comment. - (w32_wnd_proc) : Show help echo directly. - (my_create_tip_window): New function. - (x_create_tip_frame, compute_tip_xy): Adapt for Windows. - (Fx_show_tip, Fx_hide_tip) [TEST_TOOLTIPS]: Adapt for Windows. - -2001-11-20 Jason Rumney - - * coding.h (Vw32_system_coding_system) [WINDOWSNT]: Remove. - (ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: Use Vlocale_coding_system. - - * w32fns.c (Vw32_system_coding_system): Remove. - (w32_to_x_font, x_to_w32_font): Use Vlocale_coding_system. - -2001-11-19 Stefan Monnier - - * fileio.c (Fwrite_region): Move choose_write_coding_system to - after build_annotations. - - * syntax.c (describe_syntax): Add dummy arg. - (describe_syntax_1): Update call to describe_vector. - - * category.c (describe_category): Add dummy arg. - (describe_category_1): Update call to describe_vector. - - * keymap.c (Fdescribe_vector): Add `describer' parameter. - (describe_command, describe_translation): Add dummy second param. - (describe_map): Call elt_describer with two arguments. - (describe_vector_princ): Add `fun' parameter. - Call it instead of the hardcoded `princ'. - (describe_vector): Add arg `args'. - Pass it as a new second argument to elt_describer. + * term.c (tty_insert_glyphs): Add missing first parameter. - * keymap.h (describe_vector): Update prototype. +2007-08-29 Karoly Lorentey - * frame.c: Don't include keymap.h any more. - (keys_of_frame): Remove. + * buffer.c (Fbuffer_list, Fbury_buffer): + Take frame->buried_buffer_list into account. - * lisp.h (keys_of_frame): Remove declaration. + * cm.c (current_tty): New variable, for cmputc(). + (cmputc): Use it. + (cmcheckmagic): Add tty parameter, look up terminal streams there. + (calccost): Add tty parameter. Use emacs_tputs() instead of tputs(). + (cmgoto): Add tty parameter. Pass it on to calccost(). + Use emacs_tputs() instead of tputs(). - * emacs.c (main): Don't call `keys_of_frame' any more. + * cm.h (emacs_tputs): New macro to set current_tty, and then call + tputs(). + (current_tty): New variable, for cmputc(). + (cmcheckmagic, cmputc, cmgoto): Add prototypes. -2001-11-14 Andreas Schwab + * eval.c (unwind_to_catch): Don't call x_fully_uncatch_errors. + (internal_condition_case, internal_condition_case_1) + (internal_condition_case_2): Don't abort when x_catching_errors. - * unexelf.c [!defined MAP_ANON]: Define MAP_ANON to MAP_ANONYMOUS - if defined, 0 otherwise. - (MAP_FAILED): Define if not defined and use it to test mmap failure. - (unexec) [!MAP_ANON]: Use /dev/zero as file to map. + * fns.c (Fyes_or_no_p): Don't try to open an X dialog on tty terminals. + (Fy_or_n_p): Likewise. Use temporarily_switch_to_single_kboard to + prevent crashes caused by bogus longjmps in read_char. -2001-11-19 Richard M. Stallman + * keymap.h (Fset_keymap_parent): Add EXFUN. - * indent.c (current_column_1): Fix handling of scan_bytes for mb chars. + * macterm.h (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL) + * w32term.h (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL): + Remove redundant definition. -2001-11-18 Jason Rumney + * macfns.c (x_set_mouse_color, x_make_gc): + Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL. - * w32term.c (note_mouse_highlight): Fix type of variable `ignore'. - (x_draw_bar_cursor): If the background color of the glyph under - the cursor equals the frame's cursor color, use the glyph's - foreground color for drawing the bar cursor. - (x_after_update_window_line): Clear internal border in different - circumstances. - (w32_set_vertical_scroll_bar): Check for width and height > 0. - (w32_draw_relief_rect): Correct relief by 1 pixel. - (x_set_glyph_string_background_width): - Set extends_to_end_of_line_p if the row's fill_line_p is set and - drawing the last glyph with DRAW_IMAGE_{RAISED,SUNKEN}. - (x_display_and_set_cursor): If cursor_in_echo_area, use NO_CURSOR - if cursor_in_non_selected_windows is false. - (show_mouse_face): Clean up. Recognize overwritten cursor differently. - (x_draw_glyphs): Remove parameters REAL_START and REAL_END. - Notice if cursor gets overwritten. - (notice_overwritten_cursor): Renamed from - note_overwritten_text_cursor. Rewritten to take glyph widths - into account, and to take X positions as parameters. - (x_draw_phys_cursor_glyph): Save state of w->phys_cursor_on_p - around call to x_draw_glyphs. - (x_setup_relief_colors): Use `IMAGE_BACKGROUND' and - `IMAGE_BACKGROUND_TRANSPARENT' to calculate the correct background - color to use for image glyph reliefs. - (x_draw_image_relief): Accept zero tool_bar_button_relief. - (glyph_rect): Remove unused variable `area'. + * w32term.c (x_free_frame_resources): + Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL. + (w32_initialize): Use the accessor macros for terminal characteristics. - * w32fns.c (x_set_frame_parameters): Avoid infinite recursion for - some items. - (x_set_internal_border_width): Set frame garbaged when window - doesn't exist yet. - (Fx_create_frame): Accept zero tool_bar_button_relief. - (x_clear_image_1, four_corners_best, image_background) - (image_background_transparent): New functions. - (xpm_format, png_format, jpeg_format, tiff_format, gif_format) - (gs_format): Add `:background' entry. - (lookup_image): Set IMG's background color if specified. - (pbm_load, xbm_load_image, png_load): Set IMG's background field - when appropriate. - (x_clear_image_1): Reset `background_valid' and - `background_transparent_valid' fields. - (x_build_heuristic_mask): Use IMAGE_BACKGROUND instead of - calculating it here. Set IMG's background_transparent field. - (enum xpm_keyword_index): Add XPM_BACKGROUND. - (enum png_keyword_index): Add PNG_BACKGROUND. - (enum jpeg_keyword_index): Add JPEG_BACKGROUND. - (enum tiff_keyword_index): Add TIFF_BACKGROUND. - (enum gif_keyword_index): Add GIF_BACKGROUND. - (enum gs_keyword_index): Add GS_BACKGROUND. - (pbm_load, png_load, jpeg_load, tiff_load, gif_load): - Pre-calculate image background color where necessary. - (x_create_x_image_and_pixmap, xbm_load, gs_load): - Use display info's n_cbits entry for screen depth. - (Fx_show_tip): Remove unused variables `buffer', `top', - `left', `max_width' and `max_height'. + * macterm.c (mac_initialize): Use Fset_input_interrupt_mode. + Use the accessor macros for terminal characteristics. + * msdos.c (internal_terminal_init): Use the accessor macros for + terminal characteristics. + (ScreenVisualBell, internal_terminal_init): + Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL. - * w32menu.c (w32_menu_show, push_menu_pane): Doc fixes. + * termopts.h (no_redraw_on_reenter): Declare. -2001-11-18 Gerd Moellmann + * alloc.c (emacs_blocked_malloc): Disable mallopt call. + (mark_terminals, mark_ttys): Declare. + (Fgarbage_collect): Call them. + (mark_object): Mark buried_buffer_list. - * puresize.h (BASE_PURESIZE): Increase to 750000. + * prefix-args.c: Include stdlib.h for exit. -2001-11-18 Pavel Jan,Am(Bk + * syssignal.h: Add comment. - * frame.c (Fframe_live_p): Doc fix. + * indent.c: Include stdio.h. -2001-11-18 Richard M. Stallman + * window.h (Vinitial_window_system): Declare. + (Vwindow_system): Delete declaration. - * xdisp.c (message_dolog_marker1, message_dolog_marker2) - (message_dolog_marker3): New static variables hold three markers. - (syms_of_xdisp): Initialize and staticpro them. - (message_dolog): Use message_dolog_marker1..3 instead of - allocating markers each time. Unchain them when done. + * fontset.c (Finternal_char_font): Use FRAME_RIF. -2001-11-17 Richard M. Stallman + * image.c (lookup_image): Don't initialize `c' until the xasserts + have been run. - * doc.c (Fsnarf_documentation): Doc fix. + * gtkutil.c (xg_create_frame_widgets): Use FRAME_BACKGROUND_PIXEL and + FRAME_FOREGROUND_PIXEL. -2001-11-17 Andreas Schwab + * print.c (print_preprocess): Don't lose print_depth levels while + iterating. - * xterm.c (note_mouse_highlight): Fix type of variable `ignore'. + * widget.c (update_from_various_frame_slots): + Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL. -2001-11-17 Richard M. Stallman + * window.c (set_window_buffer): Don't call clear_mouse_face on tty + frames. + (window_internal_height): Remove bogus make_number call. + (init_window_once): Call make_terminal_frame with two zero parameters. - * fileio.c (Fwrite_region): Avoid initializer for Lisp_Object. + * fileio.c (Fread_file_name): Update comment. -2001-11-17 Jason Rumney + * callint.c (Fcall_interactively): + Use temporarily_switch_to_single_kboard instead of single_kboard_state. + Make sure it is correctly unwound. + + * xsmfns.c (x_session_close): New function. + + * coding.h (terminal_coding, safe_terminal_coding, keyboard_coding): + Delete declarations. + + * xterm.h: Remove declaration for x_fully_uncatch_errors. + (x_output): Remove background_pixel and foreground_pixel fields. + (x_display_info): Add new field TERMINAL. Remove KBOARD field. + (x_delete_device): + (x_session_close): Declare. + + * lread.c: Include setjmp.h. Update declaration of `read_char'. + (read_filtered_event): Call `read_char' with a local + `wrong_kboard_jmpbuf'. + + * minibuf.c (read_minibuf): Call temporarily_switch_to_single_kboard. + Don't call single_kboard_state. Use FRAME_RIF. + + * process.c (Fmake_network_process): Don't unrequest_sigio on modern + systems. + + * lisp.h (set_process_environment): Rename to `set_global_environment'. + (Fframe_with_environment, Fset_input_meta_mode) + (Fset_quit_char): EXFUN. + (x_create_device, tty_output, terminal, tty_display_info): Declare. + (init_sys_modes, reset_sys_modes): Update prototypes. + (init_all_sys_modes, reset_all_sys_modes): New prototypes. + + * keyboard.h (struct kboard): Add new fields Vlocal_function_key_map, + Vlocal_key_translation_map, and Vkeyboard_translate_table. + (Vfunction_key_map, Vkeyboard_translate_table, single_kboard_state): + Delete declarations. + (Vfunction_key_map, Vkey_translation_map, push_kboard, pop_kboard) + (temporarily_switch_to_single_kboard, tty_read_avail_input): + New declarations. + + * emacs.c (main): Don't call init_sys_modes(), the new term_init() + already does that during init_display(). Call syms_of_keymap + before syms_of_keyboard. Call `syms_of_terminal'. + Call set_initial_environment, not set_process_environment. + (shut_down_emacs): Call reset_all_sys_modes() instead of + reset_sys_modes(). + + * xfaces.c (x_free_gc): Protect xassert with GLYPH_DEBUG. + (internal_resolve_face_name, resolve_face_name_error): New functions. + (resolve_face_name): Protect against loops and errors thrown by Fget. + (realize_default_face): Don't use FRAME_FONT unless frame is an X frame. + (Ftty_supports_face_attributes_p): Update tty_capable_p call. + + * scroll.c: Replace CURTTY() with local variables throughout the + file (where applicable). + (calculate_scrolling, calculate_direct_scrolling) + (scrolling_1, scroll_cost): Use the accessor macros for terminal + characteristics. + + * keymap.c (Vfunction_key_map): Remove. + (Fdescribe_buffer_bindings): Update references to Vfunction_key_map. + (syms_of_keymap): Remove DEFVAR for Vfunction_key_map. + (Vkey_translation_map): Remove. + (syms_of_keymap): Remove DEFVAR for key-translation-map. + (Fdescribe_buffer_bindings): + (read_key_sequence, init_kboard, syms_of_keyboard, mark_kboards): + Update for terminal-local key-translation-map. + + * Makefile.in (callproc.o): Update dependencies. + (lisp, shortlisp): Add termdev.elc. + (obj): Add terminal.o. + (terminal.o): Add dependencies. + [HAVE_CARBON]: Make terminal.o depend on macgui.h. + (data.o, fns.o): Add termhooks.h dependency. + (SOME_MACHINE_LISP): Add dnd.elc. + (minibuf.o): Fix typo. + Update dependencies. + + * data.c (do_symval_forwarding, store_symval_forwarding) + (find_symbol_value): Use the selected frame's keyboard, not + current_kboard. + + * .gdbinit (init_sys_modes): Use Vinitial_window_system instead of + Vwindow_system. + + * xmenu.c (Fx_menu_bar_open) [USE_X_TOOLKIT, USE_GTK]: Rename from + Fmenu_bar_open. + (syms_of_xmenu): Update defsubr. + (mouse_position_for_popup, Fx_popup_menu) + (Fx_popup_dialog, x_activate_menubar, update_frame_menubar) + (set_frame_menubar, free_frame_menubar) + (create_and_show_popup_menu, xmenu_show, ) + (create_and_show_dialog, xdialog_show, xmenu_show): Abort if not + an X frame. + + * xselect.c (x_own_selection): Abort if not an X frame. + (some_frame_on_display): Check if it is an X frame. + (x_handle_selection_clear): Deal with MULTI_KBOARD. + + * coding.c: Include frame.h and termhooks.h. + (terminal_coding, keyboard_coding): Delete. + (Fset_terminal_coding_system_internal): + (Fset_keyboard_coding_system_internal): + (Fkeyboard_coding_system): + (Fterminal_coding_system): Add a terminal parameter. + Get terminal_coding from the terminal. + (init_coding_once): Don't call setup_coding_system here. + + * dispextern.h (set_scroll_region, turn_off_insert) + (turn_off_highlight, background_highlight, clear_end_of_line_raw) + (tty_clear_end_of_line, tty_setup_colors) + (delete_tty, updating_frame) + (produce_special_glyphs, produce_glyphs, write_glyphs) + (insert_glyphs): Remove. + (raw_cursor_to, clear_to_end, tty_turn_off_insert) + (tty_turn_off_highlight, get_tty_size): Add declaration. + (tabs_safe_p, init_baud_rate, get_tty_terminal): Update prototypes. + + * frame.h (enum output_method): Add output_initial. + (struct x_output): Delete. + (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL): + Access foreground_pixel and background_pixel directly from the frame. + (tty_display): Delete. + (struct frame): Add buried_buffer_list, foreground_pixel, + background_pixel and terminal. Delete kboard + (union output_data): Add tty. + (FRAME_KBOARD): Get the kboard from the terminal. + (FRAME_INITIAL_P): New macro. + (Qtty, Qtty_type, Qterminal, Qterminal_live_p, Qenvironment) + (Qterm_environment_variable, Qdisplay_environment_variable) + (make_terminal_frame, Qburied_buffer_list, Qwindow_system): + New declarations. + + * termchar.h (tty_output, tty_display_info): New structures. + (tty_list): Declare. + (FRAME_TTY, CURTTY): New macros. + (must_write_spaces, min_padding_speed, fast_clear_end_of_line) + (line_ins_del_ok, char_ins_del_ok, scroll_region_ok) + (scroll_region_cost, memory_below_frame, fast_clear_end_of_line) + (dont_calculate_costs, no_redraw_on_reenter): Remove declarations. + + * callproc.c: Include frame.h and termhooks.h, for terminal + parameters. + (add_env): New function. + (child_setup): Use it. + (child_setup, getenv_internal): Handle the new Vprocess_environment. + (getenv_internal): Fix get_terminal_param call. + (Fgetenv_internal, egetenv): Update doc. + (syms_of_callproc): Initialize Vprocess_environment to nil. + Register and initialize them. Remove obsolete defvars. Update doc + strings. + (child_setup): Handle Vlocal_environment_variables. + (getenv_internal): Add terminal parameter. + Handle Vlocal_environment_variables. + (Fgetenv_internal): Add terminal parameter. + (child_setup, getenv_internal, Fgetenv_internal): Store the local + environment in a frame (not terminal) parameter. Update doc strings. + (set_initial_environment): Rename from set_global_environment. + Store Emacs environment in initial frame parameter. + + * xdisp.c (redisplay_internal): Update references to + `previous_terminal_frame'. + (display_mode_line, Fformat_mode_line): Replace calls to + `push_frame_kboard' with `push_kboard'. + (get_glyph_string_clip_rects): Add extra parentheses and + braces to prevent compiler warnings. + (calc_pixel_width_or_height): Add xassert to check that the + frame is alive. Don't call `lookup_image' on a termcap frame. + (message2_nolog, message3_nolog, redisplay_internal) + (set_vertical_scroll_bar, redisplay_window, check_x_display_info) + (x_set_scroll_bar_foreground, x_set_scroll_bar_background) + (Fx_create_frame, Fxw_display_color_p, Fx_display_grayscale_p) + (Fx_display_pixel_width, Fx_display_pixel_height) + (Fx_display_planes, Fx_display_color_cells) + (Fx_server_max_request_size, Fx_server_vendor, Fx_server_version) + (Fx_display_screens, Fx_display_mm_height, Fx_display_mm_width) + (Fx_display_backing_store, Fx_display_visual_class) + (Fx_display_save_under, Fx_close_connection, x_create_tip_frame): + Use FRAME_TERMINAL_P, FRAME_WINDOW_P, FRAME_TTY and FRAME_RIF. + + * xfns.c (x_set_foreground_color x_set_background_color) + (x_set_mouse_color, x_set_cursor_color, x_make_gc): + Use FRAME_BACKGROUND_PIXEL and FRAME_FOREGROUND_PIXEL. + (Fx_create_frame, x_create_tip_frame, build_string, x_window) + (Fx_create_frame, x_create_tip_frame): Don't create frames on a + terminal that is being deleted. + (Fx_create_frame): Use `store_frame_param' to set `window-system' + frame parameter, and make sure it overrides any user-supplied setting. + (Fx_close_connection, Fx_synchronize): Unify argument names with + the rest of the DEFUNs. + + * dispnew.c (Fsend_string_to_terminal): Update call to + `get_tty_terminal'. + (Fredraw_frame, Fsend_string_to_terminal) + (Fsend_string_to_terminal, init_display): Use FRAME_RIF, + FRAME_TERMCAP_P and FRAME_TTY. + (window_change_signal): Don't believe width/height values that are + impossibly small. + (Vinitial_window_system): Rename from Vwindow_system. + (termscript, Wcm, rif): Delete. + + * termhooks.h (struct terminal): New struct containing the + previously global text display hooks and new members NAME, + DELETED and PARAM_ALIST. + (FRAME_TERMINAL, TERMINAL_TERMINAL_CODING) + (TERMINAL_KEYBOARD_CODING, TERMINAL_ACTIVE_P, FRAME_WINDOW_P) + (FRAME_RIF): New macros. + (get_terminal_param, get_device): New declarations. + (termscript): Delete declaration. + + * xterm.c (x_initialize): Use Fset_input_interrupt_mode. + (XTflash, x_free_frame_resources, x_scroll_bar_create) + (x_scroll_bar_set_handle): Use FRAME_BACKGROUND_PIXEL and + FRAME_FOREGROUND_PIXEL. + (x_fully_uncatch_errors): Disable definition. + (x_scroll_bar_expose): Fix reference to foreground pixel. + (XTread_socket): Disable loop on all X displays. + (x_delete_terminal): Don't set terminal->deleted and let + delete_terminal delete the frames on the terminal. + (x_delete_display): Doc update to reflect changes in + delete_terminal. + (x_display_info) : Move member earlier in the struct. + (deleting_tty): Remove old variable. + (Fsuspend_tty): Call clear_tty_hooks. + (Fresume_tty, init_tty): Call set_tty_hooks. + (Ftty_display_color_p, Ftty_display_color_cells): Don't throw + errors on X frames. + (x_catch_errors_unwind): Abort if x_error_message is NULL. + (handle_one_xevent): Initialize `f' to NULL. + (x_delete_terminal, x_create_terminal): New functions. + (XTset_terminal_modes, XTreset_terminal_modes) + (XTread_socket, x_connection_closed, x_term_init) + (x_term_init, x_delete_display): Add terminal parameter. + (x_term_init) [!HAVE_GTK_MULTIDISPLAY]: Refuse to create secondary + X connections. + + * frame.c (Fframep): Deal with output_initial. + (Qbuffer_predicate, Qbuffer_list, Qburied_buffer_list, Qtty) + (Qtty_type, Qwindow_system, Qenvironment) + (Qterm_environment_variable, Qdisplay_environment_variable): New vars. + (x_set_screen_gamma, store_frame_param): Fix compilation errors. + (make_terminal_frame): Don't create frames on a terminal that is + being deleted. + (make_terminal_frame): Use FRAME_BACKGROUND_PIXEL and + FRAME_FOREGROUND_PIXEL. + (store_frame_param): Check for found_for_frame before calling XFRAME. + (Fmake_terminal_frame): Handle NULL tty names correctly. + (syms_of_frame): Enhance doc string of `default-frame-alist'. + (Fdelete_frame): Remove unused variable `count'. + (Qenvironment): New variable. + (Fdelete_frame): Don't allow other frames to refer to a deleted + frame in their 'environment parameter. + (Fframe_with_environment): New function. + (syms_of_frame): Defsubr it. Initialize and staticpro Qenvironment. + (get_future_frame_param): New function. + (Fmake_terminal_frame): Use it. + (x_set_frame_parameters, x_set_screen_gamma): Use FRAME_RIF. + + * sysdep.c (init_sys_modes, reset_sys_modes): Update for renames. + * sysdep.c (reset_sys_modes): Update for renames. + + * keyboard.c (tty_read_avail_input): New function. + (Fset_input_interrupt_mode, Fset_output_flow_control): New functions. + (syms_of_keyboard): Defsubr them. + (Fset_input_meta_mode, Fset_quit_char): New functions. + (Fset_input_mode): Split to above functions. + + (read_char_minibuf_menu_prompt): Add wrong_kboard_jmpbuf + parameter. Use it in call to `read_char'. + (read_char): Declare. Update call to `read_char_minibuf_menu_prompt'. + Set wrong_kboard_jmpbuf correctly in recursive calls. + Use current_kboard to access Vkeyboard_translate_table. + Enhance comment before extra longjmp to wrong_kboard_jmpbuf. + Add wrong_kboard_jmpbuf parameter to allow for recursive calls. + Update longjmp invocations. Remember the original current_kboard, + and longjmp to `wrong_kboard_jmpbuf' when a filter, timer or sentinel + changes it. Comment out unnecessary calls to + `record_single_kboard_state' and `any_kboard_state'. + Update recursive calls. + (wrong_kboard_jmpbuf): Remove global variable. + (read_key_sequence): Remove unused variable wrong_kboard_jmpbuf. + Handle deleted interrupted_kboards correctly; that is a legal + case. Add `wrong_kboard_jmpbuf' local variable. Update setjmp + and read_char calls. Abort if interrupted_kboard died in read_char. + (any_kboard_state, single_kboard_state) + (push_frame_kboard): Remove function. + (pop_kboard): Switch out of single_kboard mode if the kboard has + been deleted. Remove unused variable. Help debugging by not + changing current_kboard unnecessarily. Set current_kboard to the + kboard of the selected frame when the stored kboard object has + been deleted before pop_kboard. + (temporarily_switch_to_single_kboard): Change first parameter to a + frame pointer. Throw an error when caller wants to change kboards + while in single_kboard mode. Don't push_kboard if we weren't in + single kboard state. Don't pop_kboard if we popped into any + kboard state. + (restore_kboard_configuration): Abort if pop_kboard changed the + kboard in single_kboard mode. Call pop_kboard only after setting + up single_kboard mode. + (Frecursive_edit): Switch to single_kboard mode only in nested + command loops. + (cmd_error, command_loop, command_loop_1, timer_check): + Comment out unnecessary call to `any_kboard_state' and + `record_single_kboard_state'. + (delete_kboard): Exit single_kboard mode if we have just deleted + that kboard. Use FRAME_KBOARD. + (interrupt_signal): Use `Fkill_emacs' to exit Emacs, not + `fatal_error_signal'. + (record_single_kboard_state): Don't push_kboard if we weren't in + single kboard state. Don't pop_kboard if we popped into any + kboard state. + (push_frame_kboard): Rename to push_kboard. + (kbd_buffer_get_event): Use FRAME_TERMINAL. + (read_avail_input): Read input from all terminals. + (mark_kboards): Also mark Vkeyboard_translate_table. + (kbd_buffer_store_event_hold): Simplify condition. + (read_key_sequence): Reinitialize fkey and keytran at each replay. + (Vkeyboard_translate_table): Move to struct kboard. + (init_kboard): Initialize Vkeyboard_translate_table. + (syms_of_keyboard): Use DEFVAR_KBOARD to define + Vkeyboard_translate_table. Update doc strings. Update docs of + local-function-key-map and function-key-map. + + * terminal.c: New file. + + * term.c: Include errno.h. + (Vring_bell_function, device_list, initial_device) + (next_device_id, ring_bell, update_begin, update_end) + (set_terminal_window, cursor_to, raw_cursor_to) + (clear_to_end, clear_frame, clear_end_of_line) + (write_glyphs, insert_glyphs, delete_glyphs, ins_del_lines) + (Fdisplay_name, create_device, delete_device): Move to terminal.c. + (syms_of_term): Move their initialization to terminal.c. + (get_tty_terminal, Fdisplay_tty_type, Ftty_display_color_p) + (Ftty_display_color_cells) + (Ftty_no_underline, Fsuspend_tty, Fresume_tty, create_tty_output) + (clear_tty_hooks, set_tty_hooks) + (init_tty, maybe_fatal): New functions. + (Ftty_type): Return nil if terminal is not on a tty instead of + throwing an error. Doc update. + (syms_of_term) : + Doc update. Initialize new subrs and variables. + (delete_tty): Use terminal->deleted. + (tty_set_terminal_modes): Rename from set_terminal_modes. + (tty_reset_terminal_modes): Rename from reset_terminal_modes. + (set_scroll_region): Rename to `tty_set_scroll_region'. + (turn_on_insert): Rename to `tty_turn_on_insert'. + (turn_off_insert): Rename to `tty_turn_off_insert'. + (turn_off_highlight): Rename to `tty_turn_off_highlight'. + (turn_on_highlight): Rename to `tty_turn_on_highlight'. + (toggle_highligh): Rename to `tty_toggle_highlight'. + (background_highlight): Rename to `tty_background_highlight'. + (highlight_if_desired): Rename to `tty_highlight_if_desired'. + (tty_ring_bell, tty_update_end, tty_set_terminal_window) + (tty_set_scroll_region, tty_background_highlight) + (tty_cursor_to, tty_raw_cursor_to, tty_clear_to_end) + (tty_clear_frame, tty_clear_end_of_line, tty_write_glyphs) + (tty_insert_glyphs, tty_delete_glyphs, tty_ins_del_lines) + (term_get_fkeys, tty_setup_colors, dissociate_if_controlling_tty): + Add static modifier. + (tty_reset_terminal_modes, tty_set_terminal_window) + (tty_set_scroll_region, tty_background_highlight) + (tty_highlight_if_desired, tty_cursor_to) + (tty_raw_cursor_to, tty_clear_to_end, tty_clear_frame) + (tty_clear_end_of_line, tty_write_glyphs, tty_insert_glyphs) + (tty_delete_glyphs, tty_ins_del_lines, turn_on_face): Update for + renames. - * xterm.c (notice_overwritten_cursor): Take care of end < 0 case. +2007-08-28 Jan Dj,Ad(Brv -2001-11-17 Gerd Moellmann + * keyboard.c: Qrtl is new. + (parse_tool_bar_item): Handle :rtl keyword. + (syms_of_keyboard): Intern :rtl keyword. - * xdisp.c (tool_bar_item_info): Avoid calling Fget_text_property - with invalid position. + * dispextern.h (enum tool_bar_item_idx): Add TOOL_BAR_ITEM_RTL_IMAGE. -2001-11-16 Richard M. Stallman + * gtkutil.c (xg_tool_bar_expose_callback): Just do SET_FRAME_GARBAGED + so no Lisp code is executed. + (file_for_image, find_rtl_image): New functions. + (xg_get_image_for_pixmap): Use file_for_image + (update_frame_tool_bar): If direction is RTL, use RTL image if + defined. Use Gtk stock images if defined. - * syswait.h: Delete conditionals for HPUX7, ISC 4.1, and convex. +2007-08-27 YAMAMOTO Mitsuharu - * s/isc4-1.h (HAVE_SYS_WAIT_H): Add #undef. - * s/hpux.h (HAVE_SYS_WAIT_H): Add #undef. - * s/hpux8.h (HAVE_SYS_WAIT_H): Define it. + * macterm.c (x_draw_composite_glyph_string_foreground): Draw rectangle + for nonexistent or zero-width glyph in composition glyph. - * m/convex.h (HAVE_SYS_WAIT_H): Add #undef. +2007-08-25 Stefan Monnier -2001-11-16 Stefan Monnier + * m/amdx86-64.h: Redirect to intel386.h if compiling for i386. - * fileio.c (build_annotations): Split off the tail. - (build_annotations_2): New fun. Extracted from build_annotations. - (Fwrite_region): Split the call to build_annotations into two - calls to build_annotations and build_annotations_2. + * xdisp.c (Finvisible_p): New function. + (syms_of_xdisp): defsubr it. -2001-11-16 Pavel Jan,Am(Bk +2007-08-24 Juanma Barranquero - * sysdep.c (wait_for_kbd_input) [VMS]: Do not call - clear_waiting_for_input with argument. + * image.c (syms_of_image) : + Doc fixes. - * xterm.h (x_update_cursor): Remove duplicated prototype. +2007-08-24 YAMAMOTO Mitsuharu - * keyboard.h (clear_waiting_for_input): Remove duplicated prototype. + * mac.c [MAC_OSX] (select_and_poll_event, sys_select): Fix last changes. - * xterm.c (waiting_for_input): Remove unnecessary declaration. +2007-08-24 Martin Rudalics - * data.c (Ftimes, Fquo, Frem, Fmod): Doc fix. + * fileio.c (Finsert_file_contents): Consult CHARS_MODIFF to tell + whether decoding has modified buffer contents. -2001-11-16 Stefan Monnier +2007-08-24 Jason Rumney - * fileio.c (choose_write_coding_system): New fun, extracted - from Fwrite_region. - (Fwrite_region): Use it. + * image.c [HAVE_NTGUI]: Define dynamic loaded functions for SVG. + (Qgdk_pixbuf, Qglib) [HAVE_NTGUI]: New symbols. + (syms_of_image) [HAVE_NTGUI]: Intern and staticpro them. + (init_svg_functions) [HAVE_NTGUI]: New function. + (fn_g_type_init, fn_g_object_unref, fn_g_error_free): New #defines. + (svg_load_image): Use them. + (svg_load_image) [HAVE_NTGUI]: Implement background. - * eval.c (max_specpdl_size, max_lisp_eval_depth): Use EMACS_INT. - (funcall_lambda, run_hook_with_args): Make static and add prototype. - (ml_apply, find_handler_clause): Add prototype. +2007-08-23 YAMAMOTO Mitsuharu -2001-11-16 Eli Zaretskii + * Makefile.in (RSVG_LIBS, RSVG_CFLAGS): New variables. + (ALL_CFLAGS): Use ${RSVG_CFLAGS} instead of @RSVG_CFLAGS@. + (LIBX): Remove @RSVG_LIBS@. + (LIBES): Add $(RSVG_LIBS). - * config.in: Add #undef HAVE_COFF_H. + * image.c (svg_load_image): Blend with specified background if exists. + Use IMAGE_BACKGROUND. Add Mac OS Support. - * unexec.c (coff.h): Don't include unless HAVE_COFF_H is defined. - Required for ISC 4.1. + * mac.c (wakeup_from_rne_enabled_p) [MAC_OSX]: Remove variable. + (ENABLE_WAKEUP_FROM_RNE, DISABLE_WAKEUP_FROM_RNE) [MAC_OSX]: + Remove macros. + [MAC_OSX] (socket_callback): Do nothing. + [MAC_OSX] (select_and_poll_event): Use CFRunLoopRunInMode instead of + ReceiveNextEvent. + [MAC_OSX] (sys_select): Likewise. Don't set context as argument to + socket_callback. + (mac_wakeup_from_rne) [MAC_OSX]: Do nothing. -2001-11-16 Eli Zaretskii +2007-08-22 Glenn Morris - * syswait.h (HAVE_SYS_WAIT_H): Undef for ISC 4.1. Reported by - Andrew Wiseman . + * image.c (x_find_image_file): Search in etc/images/ rather than etc/. -2001-11-16 Kim F. Storm +2007-08-22 Paul Pogonyshev - The following changes are made to clean up the various internal - references to the fringes to actually use the term `fringe' for - them. Previously, they were called `flags areas', `bitmap areas', - `left/right side of windows', or implicitly as `flags' or - `bitmaps': + * Makefile.in (ALL_CFLAGS, LIBX): Add RSVG_LIBS. - * dispextern.h (FRINGE_FACE_ID): Renamed from BITMAP_AREA_FACE_ID. - Comments fixed. Use renamed symbols. + * image.c: Add support for SVG images. Some additional comments + by Joakim Verona . When HAVE_RSVG is defined: + (svg_image_p): New function to test for SVG image. + (svg_load): New function to load SVG image. + (svg_load_image): New function, helper for svg_load. + (Qsvg): New Lisp_object. + (svg_keyword_index): New enum. + (svg_format): New static `image_keyword' struct. + (svg_type): New static `image_type' struct. + (librsvg/rsvg.h): Include it. - * dispnew.c: Comment fix. Use renamed symbols. +2007-08-23 Stefan Monnier - * frame.h (FRAME_FRINGE_COLS): Renamed from FRAME_FLAGS_AREA_COLS. - (FRAME_FRINGE_WIDTH): Renamed from FRAME_FLAGS_AREA_WIDTH. - (FRAME_LEFT_FRINGE_WIDTH): Renamed from FRAME_LEFT_FLAGS_AREA_WIDTH. + * lread.c (load_warn_old_style_backquotes): Fix up array size typo. - * msdos.c: Comment fix. +2007-08-22 Stefan Monnier - * w32fns.c: Use renamed symbols. + * lread.c (Qold_style_backquotes): New var. + (syms_of_lread): Init and staticpro it. + (load_warn_old_style_backquotes): New fun. + (Fload): Use them to warn about old style backquotes. + (end_of_file_error, Fload): Remove unused vars. - * w32term.c: Comment fixes. Use renamed symbols. - (fringe_bitmap_type): Renamed from bitmap_type. - (NO_FRINGE_BITMAP): Renamed from NO_BITMAP. - (w32_draw_fringe_bitmap): Renamed from w32_draw_bitmap. - (x_draw_row_fringe_bitmaps): Renamed from x_draw_row_bitmaps. + * lisp.h (Fclear_face_cache, Fx_send_client_event): Declare. - * w32term.h: Comment fixes. Use renamed symbols. - (fringes_extra): Renamed from flags_areas_extra. - (FRAME_FRINGE_BITMAP_WIDTH): Renamed from FRAME_FLAGS_BITMAP_WIDTH. - (FRAME_FRINGE_BITMAP_HEIGHT): Renamed from FRAME_FLAGS_BITMAP_HEIGHT. - (FRAME_X_FRINGE_COLS): Renamed from FRAME_X_FLAGS_AREA_COLS. - (FRAME_X_FRINGE_WIDTH): Renamed from FRAME_X_FLAGS_AREA_WIDTH. - (FRAME_X_LEFT_FRINGE_WIDTH): - Renamed from FRAME_X_LEFT_FLAGS_AREA_WIDTH. - (FRAME_X_RIGHT_FRINGE_WIDTH): - Renamed from FRAME_X_RIGHT_FLAGS_AREA_WIDTH. + * lread.c (Vold_style_backquotes): New var. + (syms_of_lread): Init and export it to Elisp. + (read1): Set it when we find an old-style (back)quote. - * widget.c: Use renamed symbols. +2007-08-22 Jason Rumney - * window.c: Comment fixes. Use renamed symbols. - (coordinates-in-window-p): Doc fix. + * w32reg.c (SYSTEM_DEFAULT_RESOURCES): Add missing NULL terminator. - * xdisp.c: Comment fixes. Use renamed symbols. +2007-08-22 Katsumi Yamaoka - * xfaces.c (realize_basic_faces): Use FRINGE_FACE_ID. + * puresize.h (BASE_PURESIZE): Increase to 1140000. - * xfns.c: Use renamed symbols. +2007-08-19 Richard Stallman - * xterm.c: Comment fixes. Use renamed symbols. - (fringe_bitmap_type): Renamed from bitmap_type. - (NO_FRINGE_BITMAP): Renamed from NO_BITMAP. - (x_draw_fringe_bitmap): Renamed from x_draw_bitmap. - (x_draw_row_fringe_bitmaps): Renamed from x_draw_row_bitmaps. + * eval.c (Ffunction, Fquote): Signal error if not 1 argument. - * xterm.h: Comment fixes. Use renamed symbols. - (fringes_extra): Renamed from flags_areas_extra. - (FRAME_FRINGE_BITMAP_WIDTH): Renamed from FRAME_FLAGS_BITMAP_WIDTH. - (FRAME_FRINGE_BITMAP_HEIGHT): Renamed from FRAME_FLAGS_BITMAP_HEIGHT. - (FRAME_X_FRINGE_COLS): Renamed from FRAME_X_FLAGS_AREA_COLS. - (FRAME_X_FRINGE_WIDTH): Renamed from FRAME_X_FLAGS_AREA_WIDTH. - (FRAME_X_LEFT_FRINGE_WIDTH): - Renamed from FRAME_X_LEFT_FLAGS_AREA_WIDTH. - (FRAME_X_RIGHT_FRINGE_WIDTH): - Renamed from FRAME_X_RIGHT_FLAGS_AREA_WIDTH. +2007-08-19 Andreas Schwab -2001-11-15 Jason Rumney + * alloc.c (pure): Round PURESIZE up. - * w32menu.c (add-menu-item): Make help_echo and radio buttons - work for most menu items. From David Ponce - . +2007-08-17 Jan Dj,Ad(Brv -2001-11-15 Gerd Moellmann + * xterm.c (handle_one_xevent): Remove check that mouse click is in + active frame. - * xfns.c (x_set_frame_parameters): Revert change of 2001-11-07. - Some x_set_* function expect to be called even if old and new - value are equal. +2007-08-16 Richard Stallman - * xdisp.c (build_desired_tool_bar_string): Accept zero - tool_bar_button_relief. + * eval.c (Fcommandp): Add parens to clarify. - * xfns.c (Fx_create_frame): Accept zero tool_bar_button_relief. + * minibuf.c (Fall_completions): Use enum for type of table. - * xterm.c (x_draw_image_relief): Accept zero tool_bar_button_relief. + * emacs.c (USAGE2): Improve text. - * xterm.c (x_draw_bar_cursor): If the background color of the - glyph under the cursor equals the frame's cursor color, use - the glyph's foreground color for drawing the bar cursor. +2007-08-15 Philippe Waroquiers - * dispnew.c (direct_output_forward_char): Fix character/byte - position comparison. + * term.c (tty_default_color_capabilities): Declare static + variables in file scope, to avoid HPUX compiler problem. -2001-11-15 Miles Bader +2007-08-13 Jan Dj,Ad(Brv - * editfns.c (find_field): Add BEG_LIMIT and END_LIMIT parameters. - (Fdelete_field, Ffield_string, Ffield_string_no_properties): - Update arguments to find_field. - (Ffield_beginning, Ffield_end): Add LIMIT param, pass to find_field. - (Fconstrain_to_field): Use LIMIT arg to shorten search time. - * lisp.h (Ffield_beginning, Ffield_end): Update EXFUN decl. - * minibuf.c (Fminibuffer_prompt_end): Update args to Ffield_end. + * gtkutil.c (update_frame_tool_bar): Use -1 as index + to gtk_toolbar_insert. -2001-11-14 Richard M. Stallman +2007-08-13 Stefan Monnier - * editfns.c (Fpropertize): Allow call with 1 arg. + * fileio.c (Finsert_file_contents): Yet Another Int/Lisp_Object Mixup. - * dispextern.h (image_background, image_background_transparent): - Conditionalize on HAVE_X_WINDOWS. + * insdel.c (reset_var_on_error): New fun. + (signal_before_change, signal_after_change): + Use it to reset (after|before)-change-functions to nil in case of error. + Bind inhibit-modification-hooks to t. + Don't bind (after|before)-change-functions to nil while they run. -2001-11-13 Richard M. Stallman +2007-08-11 YAMAMOTO Mitsuharu - * print.c (Fprin1_to_string): Doc fix. + * xterm.c (x_draw_image_glyph_string): Adjust stipple origin when + filling pixmap with stippled background. - * sunfns.c (Fsun_change_cursor_icon): Doc fix. +2007-08-10 YAMAMOTO Mitsuharu - * floatfns.c (Fceiling, Ffloor): Doc fixes. + * macterm.c [TARGET_API_MAC_CARBON] (mac_handle_window_event): + Don't use invisible frame as parent window for repositioning. - * filelock.c (Funlock_buffer, Ffile_locked_p): Doc fixes. +2007-08-10 Stefan Monnier - * fileio.c (Ffile_accessible_directory_p): Doc fix. + * print.c (new_backquote_output): Rename from old_backquote_output. + (print): Inverse its logic (according to its name) so as to match the + behavior of new_backquote_flag in lread.c. - * eval.c (syms_of_eval): Doc fix. +2007-08-09 YAMAMOTO Mitsuharu - * coding.c (syms_of_coding): Doc fix. + * gmalloc.c (posix_memalign): New function. - * doc.c (Fsnarf_documentation): Doc fix. + * macterm.c (frame_highlight, frame_unhighlight): Don't call + ActivateControl/DeactivateControl here. + [USE_MAC_TOOLBAR] (free_frame_tool_bar): Suppress animation when + frame-notice-user-settings is non-nil. + [USE_MAC_FONT_PANEL] (mac_handle_font_event): Also record parameter + for kEventParamFMFontStyle. + [TARGET_API_MAC_CARBON] (mac_handle_keyboard_event): Don't check + mac_pass_command_to_system and mac_pass_control_to_system here. + (XTread_socket): Call ActivateControl/DeactivateControl here. + (XTread_socket) [TARGET_API_MAC_CARBON]: + Check mac_pass_command_to_system and mac_pass_control_to_system here. + (mac_handle_window_event) [USE_MAC_TOOLBAR]: Add further workaround + for window repositioning. - * dispnew.c (syms_of_display): Doc fix. +2007-08-08 Glenn Morris - * category.c (Fget_unused_category): Doc fix. + * Replace `iff' in doc-strings and comments. - * buffer.c (syms_of_buffer): Doc fixes. +2007-08-07 Chong Yidong -2001-11-14 Eli Zaretskii + * xdisp.c (move_it_by_lines): Remove incorrect optimization. - * print.c (prin1, print): Doc fix. +2007-08-07 Martin Rudalics -2001-11-14 Pavel Jan,Am(Bk + * fileio.c (Finsert_file_contents): Run format-decode and + after_insert_file_functions on entire buffer when REPLACE is + non-nil and inhibit modification_hooks and point_motion_hooks. + For consistency, run after_insert_file_functions iff something + got inserted. Move signal_after_change and update_compositions + after code running after_insert_file_functions. Make sure that + undo_list doesn't record intermediate steps of the decoding process. - * fontset.h: Remove declarations of variables - `Vhighlight_wrong_size_font' and `Vclip_large_size_font'. +2007-08-07 YAMAMOTO Mitsuharu - * fontset.c: Remove variables `Vhighlight_wrong_size_font' and - `Vclip_large_size_font'. + * emacs.c (main) + [HAVE_GTK_AND_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]: + Call malloc_enable_thread on interactive startup. -2001-11-13 Jason Rumney + * gmalloc.c (_malloc_thread_enabled_p) [USE_PTHREAD]: New variable. + (LOCK, UNLOCK, LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS) + [USE_PTHREAD]: Conditionalize with it. + (malloc_atfork_handler_prepare, malloc_atfork_handler_parent) + (malloc_atfork_handler_child, malloc_enable_thread) [USE_PTHREAD]: + New functions. - * w32fns.c: Doc fix. +2007-08-06 Chong Yidong -2001-11-13 Pavel Jan,Am(Bk + * xdisp.c (redisplay_window): When restoring original buffer + position, make sure it is still valid. - * xfaces.c (Fface_attributes_as_vector): Doc fix. + * image.c (png_load): Ignore png-supplied background color. - * fns.c: Doc fix. +2007-08-06 YAMAMOTO Mitsuharu - * emacs.c: Doc fix. + * mac.c [TARGET_API_MAC_CARBON] (cfdate_to_lisp): Obtain microsec value. + Use kCFAbsoluteTimeIntervalSince1970. - * coding.c: Doc fix. + * macmenu.c (quit_dialog_event_loop) [TARGET_API_MAC_CARBON]: + New variable. + [TARGET_API_MAC_CARBON] (mac_handle_dialog_event): Set it if dialog + event loop should be quit. + [TARGET_API_MAC_CARBON] (create_and_show_dialog) [!MAC_OSX]: + Quit dialog event loop if quit_dialog_event_loop is set. + + * macselect.c [!TARGET_API_MAC_CARBON]: Include Scrap.h. + (Selection): New typedef. Use instead of ScrapRef. + (mac_get_selection_from_symbol): Rename from get_scrap_from_symbol. + (mac_valid_selection_target_p): Rename from valid_scrap_target_type_p. + (mac_clear_selection): Rename from clear_scrap. + (get_flavor_type_from_symbol): New argument SEL and subsume function of + scrap_has_target_type. All uses changed. + (mac_get_selection_ownership_info, mac_valid_selection_value_p) + (mac_selection_has_target_p): New functions. + (mac_put_selection_value): Rename from put_scrap_string. + (mac_get_selection_value): Rename from get_scrap_string. + (mac_get_selection_target_list): Rename from get_scrap_target_type_list. + (put_scrap_private_timestamp, scrap_has_target_type) + (get_scrap_private_timestamp): Remove functions. + (SCRAP_FLAVOR_TYPE_EMACS_TIMESTAMP): Remove define. + (x_own_selection, x_get_local_selection): + Use mac_valid_selection_value_p. + (x_own_selection): Don't use put_scrap_private_timestamp. + Record OWNERSHIP-INFO into Vselection_alist instead. + (x_get_local_selection): Don't check type if request is local. + (Fx_selection_owner_p): Don't use get_scrap_private_timestamp. + Detect ownership change with OWNERSHIP-INFO in Vselection_alist instead. + +2007-08-04 Jan Dj,Ad(Brv + + * gtkutil.c (xg_tool_bar_callback): Generate two TOOL_BAR_EVENT:s, + add comment explaining why. - * cmds.c, composite.c, dired.c, doc.c, filelock.c, floatfns.c, - * fontset.c, insdel.c, keymap.c: Change doc-string comments to - `new style' [w/`doc:' keyword]. +2007-08-03 Richard Stallman -2001-11-12 Richard M. Stallman + * fileio.c (Fvisited_file_modtime): Use make_time. - * xterm.c (XTread_socket): Don't update focus for EnterNotify or - LeaveNotify events. Only FocusIn and FocusOut do that now. - (x_display_and_set_cursor): Do display hollow cursors in active - minibuffer windows when they are not selected. +2007-08-01 Ryo Yoshitake (tiny change) -2001-11-12 Jason Rumney + * mac.c (init_mac_osx_environment): Adjust load-path on self-contained + build. - * w32console.c, w32fns.c, w32menu.c, w32proc.c, w32select.c, - * w32term.c: Change doc-string comments to `new style' - [w/`doc:' keyword]. Doc fixes. +2007-07-31 Stefan Monnier - * w32fns.c: Don't define max. - (Fx_open_connection): Only execute once. + * gtkutil.c (xg_tool_bar_callback): Generate a single TOOL_BAR_EVENT. -2001-11-12 Pavel Jan,Am(Bk +2007-07-30 Katsumi Yamaoka - * ccl.c: Change macros to use do-while block instead of if-else. - Use braces to follow GNU Coding Standards. + * puresize.h (BASE_PURESIZE): Increase to 1130000. -2001-11-11 Richard M. Stallman +2007-07-30 Richard Stallman - * sysdep.c (child_setup_tty): Don't clear ICRNL or INLCR. + * lread.c (readevalloop, read1): Treat NBSP as whitespace. - * lread.c (read_escape): Use end_of_file_error for reporting eof. +2007-07-29 Jan Dj,Ad(Brv - * insdel.c (replace_range): Use adjust_markers_for_replace - instead of adjust_markers_for_delete and adjust_markers_for_insert. + * gmalloc.c (__malloc_initialize): Remove pthread_once. Not needed. - * intervals.h (set_text_properties, set_text_properties_1): Declare. +2007-07-28 Nick Roberts - * textprop.c (set_text_properties_1): New subroutine - broken out of set_text_properties. - (set_text_properties): Use set_text_properties_1. + * xdisp.c (decode_mode_spec): Use '@' instead of 'R' to test for + remote default-directory. - * intervals.c (graft_intervals_into_buffer): - Use set_text_properties_1 to clear out properties. + * buffer.c (mode-line-format): Update doc string. - * search.c (Freplace_match): Use replace_range to insert - and delete. Don't request property inheritance from - surrounding text. +2007-07-27 YAMAMOTO Mitsuharu -2001-11-10 Jason Rumney + * w32term.c (w32_draw_fringe_bitmap): Extend fringe background to + scroll bar gap. + (x_scroll_bar_create): Set bar->fringe_extended_p. + (w32_set_vertical_scroll_bar): Put leftmost/rightmost scroll bars + on frame edge. Check fringe background extension. Don't clear + extended fringe background area. - * w32fns.c (enum_font_cb2): Use leading @ on face name to detect - vertical fonts. Allow them if face name is explicitly specified. - Do not give up if we find a font that cannot be converted to an xlfd. + * w32term.h (struct scroll_bar): New member fringe_extended_p. + (w32_fill_area): Enclose multiple statements with do ... while (0). -2001-11-10 Gerd Moellmann + * xterm.c (x_draw_fringe_bitmap) [USE_TOOLKIT_SCROLL_BARS]: + Extend fringe background to scroll bar gap. + (x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: + Set bar->fringe_extended_p. + (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: + Put leftmost/rightmost scroll bars on frame edge. Check fringe + background extension. Don't clear extended fringe background area. - * unexelf.c (unexec): Use mmap/munmap to allocate buffers - instead of malloc/free. + * xterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: + New member fringe_extended_p. -2001-11-09 Pavel Jan,Am(Bk +2007-07-25 Glenn Morris - * xfaces.c (merge_face_vectors): Use braces to follow GNU - Coding Standards. - (Finternal_set_lisp_face_attribute): Likewise. + * Relicense all FSF files to GPLv3 or later. - * buffer.c (Fbury_buffer): Likewise. + * COPYING: Switch to GPLv3. - * indent.c (current_column_1): Remove unused variable `prev_col'. +2007-07-25 Stefan Monnier - * coding.c (encode_coding): Use precomputed value of `src'. - (encode_coding): Remove unused variable `src_end'. - (code_convert_region): Remove unused variables `count'. + * eval.c (Fcommandp): Pay attention to the `interactive-form' property. -2001-11-07 Jason Rumney + * data.c (Finteractive_form): Check for the presence of an + `interactive-form' symbol property more thoroughly. - * w32term.c (x_display_and_set_cursor): Do not move system caret - if cursor_glyph is NULL. + * data.c (Finteractive_form): Use an `interactive-form' property if + present, analogous to the function-documentation property. -2001-11-07 Pavel Jan,Am(Bk +2007-07-24 Jason Rumney - * keymap.c (access_keymap): Fix compilation error. + * w32fns.c (x_real_positions): Get real position from OS instead of + calculating it. -2001-11-07 Miles Bader +2007-07-23 Jason Rumney - * xfns.c (x_set_frame_parameters): Avoid infinite recursion. + * filelock.c (current_lock_owner): Allow for @ sign in username. -2001-11-07 Pavel Jan,Am(Bk +2007-07-22 Nick Roberts - * intervals.c (graft_intervals_into_buffer): - Remove #ifdef'd-out code. - (graft_intervals_into_buffer): Remove unused variable `middle'. + * xdisp.c (decode_mode_spec): Add case 'R' for to test for + remote default-directory. - * lread.c (Feval_region): Remove obsolete #ifdef'd-out - code (eval-current-buffer). - Change doc-string comments to `new style' [w/`doc:' keyword]. + * buffer.c (mode-line-format): Describe above case in doc string. -2001-11-06 Richard M. Stallman +2007-07-20 Eli Zaretskii - * keymap.c (access_keymap): Don't use initializers on Lisp_Object. + * w32proc.c (IMAGE_NT_OPTIONAL_HDR32_MAGIC, IMAGE_OPTIONAL_HEADER32): + Define if not defined. -2001-11-06 Stefan Monnier +2007-07-18 Jason Rumney - * lread.c (read1): Fix behavior with nested backquoting. + * w32proc.c (w32_executable_type): Handle 64 bit executables. - * keyboard.c (make_lispy_event): Check integerness and fix - Lisp_Object/int mixup. +2007-07-18 Richard Stallman -2001-11-06 Pavel Jan,Am(Bk + * data.c (Fsetq_default): Doc fix. - * fns.c (copy_hash_table): Remove unused variable `v'. + * eval.c (Fsetq): Doc fix. - * fontset.c (fontset_font_pattern): Remove unused variable - `family_registry'. +2007-07-18 Juanma Barranquero - * indent.c (current_column_1): Remove unused variable `prev_col'. + * coding.c (Ffind_operation_coding_system): + * eval.c (For, Fand): Doc fixes. + Reported by Johan Bockg,Ae(Brd. -2001-11-05 Richard M. Stallman +2007-07-18 Jan Dj,Ad(Brv - * m/news-risc.h (BROKEN_PROTOTYPES): Defined. + * xfns.c (Fx_focus_frame): Call x_ewmh_activate_frame. - * buffer.c (Fkill_buffer): Don't delete auto save file - if buffer is modified. + * xterm.h: Declare x_ewmh_activate_frame. -2001-11-05 Andrew Innes + * xterm.c (x_ewmh_activate_frame): New function. + (XTframe_raise_lower): Move code to x_ewmh_activate_frame. - * w32proc.c (Fw32_set_keyboard_layout): Use CHECK_NUMBER_CAR and - CHECK_NUMBER_CDR. +2007-07-17 Martin Rudalics -2001-11-05 Richard M. Stallman + * window.c (Fdisplay_buffer): If largest or LRU window is the + only window, split it even if it is not eligible for splitting. + This restores the original behavior broken by the 2007-07-15 + change. - * unexelf.c (unexec): Minor changes; clean up comments. +2007-07-17 Glenn Morris -2001-11-05 Sam Steingold + * abbrev.c (abbrev_check_chars): New function. + (Fdefine_global_abbrev, Fdefine_mode_abbrev): + Call abbrev_check_chars to check abbrev characters are word + constituents. Doc fix. - * w32term.c (x_display_and_set_cursor): Fix w32 compilation error. +2007-07-17 Stefan Monnier -2001-11-05 Andreas Schwab + * process.c (Fstart_process, Fmake_network_process) + (read_process_output): Fix up last changes. - * sound.c (sound_perror): Save errno from being clobbered. +2007-07-16 Eli Zaretskii -2001-11-05 Dale Hagglund + * makefile.w32-in (clean): Don't delete *~. - * unexelf.c (unexec): Don't use `mmap'. Instead, read and write - the program image directly. +2007-07-16 Andreas Schwab -2001-11-05 Pavel Jan,Am(Bk + * window.c (Fdisplay_buffer): Use NILP. + (Fset_window_scroll_bars): Likewise. - * buffer.h (Fbuffer_local_value): Add prototype. +2007-07-15 Martin Rudalics -2001-11-04 Richard M. Stallman + * window.c (window_min_size_2): New function. + (window_min_size_1, size_window, Fdisplay_buffer) + (Fsplit_window, adjust_window_trailing_edge): Use it to avoid + windows without mode- or header-lines when window-min-height is + too small. + (size_window): Reset nodelete_p after testing it, following an + earlier note by Kim F. Storm. + (display_buffer): Do not set split_height_threshold to twice the + value of window_min_height to avoid changing the value of a + customizable variable. Rather explicitly check whether the + height of the window that shall be splitted is at least as large + as split_height_threshold. ++ (Fwindow_full_width_p): New defun. ++ (syms_of_window): Defsubr it. + - * buffer.c (Fbuffer_local_value): Remove extra args from CHECK_SYMBOL - and CHECK_BUFFER. ++ * window.h: Add EXFUN for Fwindow_full_width_p. - * keyboard.c (read_char): Use Fcar and Fcdr, not Fnth. - (record_char): Likewise. +2007-07-14 Jason Rumney - * keyboard.c (make_lispy_event): Don't insist a drag event must - move to a different buffer position. Instead, check for moving at - least double_click_fuzz. + * process.c [WINDOWSNT]: Don't undefine AF_INET6. - * fns.c (Fmake_hash_table): Use XCAR and XCDR, not Fnth and Flength. +2007-07-14 Richard Stallman - * keyboard.c (echo-area-clear-hook): Undo Oct 29 change. + * eval.c (maybe_call_debugger): New function. + (find_handler_clause): Use maybe_call_debugger. + Call it when the handler says `debug'. + Eliminate DEBUGGER_VALUE_PTR. + (Fsignal): Eliminate debugger_value. + (Qdebug): New variable. + (syms_of_eval): Initialize it. - * indent.c (current_column_1, Fmove_to_column): Separate the code - for display-table glyphs from the code for buffer text, to fix - bugs in the former. +2007-07-14 Juanma Barranquero -2001-11-04 Michael Welsh Duggan + * eval.c (Fprogn): + * keyboard.c (Ftrack_mouse): + * print.c (Fwith_output_to_temp_buffer): + * window.c (Fsave_window_excursion): Doc fix. - * buffer.c (Fbuffer_local_value): New function. - (syms_of_buffer): Defsubr it. +2007-07-13 Stefan Monnier - * xterm.c, w32term.c (x_display_and_set_cursor): Use buffer-local - value of `cursor-in-non-selected-windows'. + * eval.c (init_eval_once): Bump max_lisp_eval_depth to 400. - * lisp.h (Qcursor_in_non_selected_windows): New declaration. - * xdisp.c (Qcursor_in_non_selected_windows): New variable. - (syms_of_xdisp): Initialize it. +2007-07-12 Stefan Monnier -2001-11-04 Pavel Jan,Am(Bk + * process.h (struct Lisp_Process): Turn slots infd, outfd, + kill_without_query, pty_flag, tick, update_tick, decoding_carryover, + inherit_coding_system_flag, filter_multibyte, adaptive_read_buffering, + read_output_delay, and read_output_skip from Lisp_Objects to ints. + Remove unused encoding_carryover. + * process.c: Adjust all functions accordingly. - * xfns.c (Fx_create_frame): Doc fix. +2007-07-12 Richard Stallman - * coding.c: Change doc-string comments to `new style' [w/`doc:' - keyword]. + * term.c: Include unistd.h only if HAVE_UNISTD_H. - * eval.c (top_level_value, top_level_set): Remove commented and - #ifdef'd-out code. - (Fdefvar): Fix usage in doc-string. +2007-07-11 Jason Rumney -2001-11-03 Richard M. Stallman + * makefile.w32-in (LIBS): Include OLE32. - * xfns.c: Include unistd.h, if it exists. + * w32fns.c (w32_msg_pump) : Initialize COM. + (w32_msg_pump) : Uninitialize COM. - * editfns.c: Move the include of ctype.h after unistd.h. +2007-07-11 Stefan Monnier - * gmalloc.c: Test BROKEN_PROTOTYPES. + * lisp.h (struct Lisp_Hash_Table): Turn next_weak into a bare pointer. + * fns.c (weak_hash_tables): Rename from Vweak_hash_tables and turned + from a Lisp_Object into a bare pointer. + (make_hash_table, copy_hash_table, sweep_weak_hash_tables, init_fns): + Adjust the code correspondingly. -2001-11-03 Ken Raeburn + * alloc.c (emacs_blocked_free): Remove unused var `bytes_used_now'. - * lisp.h (CHECK_STRING_CAR): New macro. - * lread.c (Fload): Use XSETCARFASTINT, XSETCDRFASTINT instead of - treating XCAR and XCDR as lvalues. - (openp): Use CHECK_STRING_CAR. - (read_list): Use XSETCDR instead of treating XCDR as lvalue. + * term.c: Include unistd.h for ttyname, used in handle_one_term_event. + (term_show_mouse_face): Remove unused var `j'. + (handle_one_term_event): Remove unused vars `i' and `j'. + Don't cast return value of ttyname since it's not necessary. -2001-11-03 Eli Zaretskii +2007-07-10 Stefan Monnier - * s/sco5.h (sigprocmask_set): Declare as extern SIGMASKTYPE. - (SIGMASKTYPE): Define. + * alloc.c (mark_maybe_pointer): Enforce mult-of-8 alignment when using + USE_LSB_TAG. Suggested by Dmitry Antipov . - * syssignal.h (sigunblock): Don't define if already defined. + * fns.c (map_char_table): Use an array of int for `indices' rather than + an array of Lisp_Objects (which are only ever integers anyway). + (Fmap_char_table): Update caller. + * lisp.h: Update prototype. + * keymap.c (Fset_keymap_parent, map_keymap, Fcopy_keymap): + * fontset.c (Ffontset_info): + * casetab.c (set_case_table): Update callers. -2001-11-02 Pavel Jan,Am(Bk + * editfns.c (Ftranspose_regions): Use EMACS_INT for positions. - * eval.c (debugger_may_continue, Vdebug_ignored_errors) - (call_debugger, Fcondition_case, skip_debugger, unbind_to): - Fix typos in comments. + * keymap.c (struct accessible_keymaps_data) + (struct where_is_internal_data): New structures. + (accessible_keymaps_1, where_is_internal_1): Use them to change + interface to adhere to the one used by map_keymap. + (Faccessible_keymaps, where_is_internal): Use map_keymap. + (accessible_keymaps_char_table, where_is_internal_2): Remove. - * mocklisp.c (Fml_defun, Fml_while, Fml_substr): Remove commented - and #ifdef'd-out code. - Fix and reindent comments. + * keymap.h (map_keymap_function_t): More informative prototype. - * mocklisp.h: Remove comment which is a copy of comment in mocklisp.c. +2007-07-10 Guanpeng Xu - * category.h (CHECK_CATEGORY, CHECK_CATEGORY_SET): Remove unused - argument `i' in macros. + * search.c (Vinhibit_changing_match_data, search_regs_1): New vars. + (looking_at_1): Don't change search_regs and last_thing_searched + if `inhibit-changing-match-data' is non-nil. + (string_match_1, search_buffer, set_search_regs): Likewise. + (syms_of_search): Add Lisp level definition for + `inhibit-changing-match-data' and set it to nil. + (boyer_moore): If `inhibit-changing-match-data' is non-nil, compute + start and end of the match, instead of using values in search_regs. - * frame.h (CHECK_FRAME, CHECK_LIVE_FRAME): Remove unused argument - `i' in macros. +2007-07-01 Stefan Monnier - * lisp.h (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST) - (CHECK_STRING, CHECK_CONS, CHECK_SYMBOL, CHECK_CHAR_TABLE) - (CHECK_VECTOR, CHECK_VECTOR_OR_CHAR_TABLE, CHECK_BUFFER) - (CHECK_WINDOW, CHECK_LIVE_WINDOW, CHECK_PROCESS, CHECK_NUMBER) - (CHECK_NATNUM, CHECK_MARKER, CHECK_NUMBER_COERCE_MARKER) - (CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT) - (CHECK_NUMBER_OR_FLOAT_COERCE_MARKER, CHECK_OVERLAY) - (CHECK_NUMBER_CAR, CHECK_NUMBER_CDR): Remove unused argument `i' - in macros. + * minibuf.c (Fcompleting_read): New value `confirm-only' + for `require-match'. - * abbrev.c, alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, - * casefiddle.c, category.c, ccl.c, charset.c, cmds.c, coding.c, - * composite.c, data.c, dired.c, dispnew.c, doc.c, dosfns.c, emacs.c, - * eval.c, fileio.c, filelock.c, fns.c, fontset.c, frame.c, frame.h, - * indent.c, keyboard.c, keymap.c, lread.c, macros.c, marker.c, - * minibuf.c, mocklisp.c, msdos.c, print.c, process.c, search.c, - * sunfns.c, syntax.c, textprop.c, undo.c, w16select.c, w32console.c, - * w32fns.c, w32menu.c, w32proc.c, w32select.c, window.c, xdisp.c, - * xfaces.c, xmenu.c, xselect.c: Update usage of CHECK_ macros - (remove unused second argument). +2007-06-28 Stefan Monnier -2001-11-02 Stefan Monnier + * fileio.c (Fdo_auto_save): Revert last patch installed unwillingly as + part of the 2007-06-27 change to syms_of_fileio. - * syntax.c (describe_syntax): New wrapper. - (Finternal_describe_syntax_value): Rename from describe_syntax. - Don't insert space at front and \n at the end. - (syms_of_syntax): Defsubr Sinternal_describe_syntax_value. +2007-06-28 YAMAMOTO Mitsuharu - * regex.c (re_wctype): Try to fix some warnings. - (regcomp, regexec): Don't forget the __restrict. + * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event): + Check WINDOWP before using XWINDOW. Consolidate return statements. -2001-11-02 Richard M. Stallman +2007-06-27 Richard Stallman - * textprop.c (Fget_char_property): Doc fix. + * fileio.c (syms_of_fileio) : Doc fix. -2001-11-02 Pavel Jan,Am(Bk +2007-06-27 Juanma Barranquero - * process.c (Fstart_process): Add usage to doc-string. + * buffer.c (syms_of_buffer) : Fix typo in docstring. - * data.c (Fsetq_default): Ditto. +2007-06-26 YAMAMOTO Mitsuharu - * callint.c (Finteractive): Ditto. + * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Check this after including config.h. + (_aligned_blocks_mutex) [USE_PTHREAD]: New variable. + (LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS): New macros. + (_free_internal, memalign): Use them. + (_malloc_mutex, _aligned_blocks_mutex) [USE_PTHREAD]: + Initialize to PTHREAD_MUTEX_INITIALIZER. + (malloc_initialize_1) [USE_PTHREAD]: Don't use recursive mutex. + (morecore_nolock): Rename from morecore. All uses changed. + Use only nolock versions of internal allocation functions. + (_malloc_internal_nolock, _realloc_internal_nolock) + (_free_internal_nolock): New functions created from + _malloc_internal, _realloc_internal, and _free_internal. + (_malloc_internal, _realloc_internal, _free_internal): Use them. + Copy hook value to automatic variable before its use. + (memalign): Copy hook value to automatic variable before its use. -2001-11-01 Stefan Monnier +2007-06-26 Kenichi Handa - * macros.c: Don't include keymap.h any more. + * coding.c (Ffind_operation_coding_system): Docstring improved. + (syms_of_coding): Docstring of `file-coding-system-alist' improved. -2001-11-01 Richard M. Stallman +2007-06-25 David Kastrup - * data.c (Fmake_local_variable): Doc fix. + * keymap.c (Fcurrent_active_maps): Add `position' argument. + (Fwhere_is_internal): Adjust call to `current-active-maps' to + cater for additional parameter. - * eval.c (Frun_hooks, Frun_hook_with_args_until_failure): Doc fix. - (Frun_hook_with_args_until_success, Frun_hook_with_args): Doc fix. + * keymap.h: Adjust number of parameters to `current-active-maps'. - * keymap.c (Fdescribe_buffer_bindings): Print character property - bindings along with or instead of the buffer local map. - Make the overriding maps override what they should. + * doc.c (Fsubstitute_command_keys): Adjust call of + `current-active-maps'. -2001-11-01 Pavel Jan,Am(Bk +2007-06-25 David Kastrup - * window.c (grow_mini_window): Fix typo in comment. + * callint.c (Fcall_interactively): Make the parsing of interactive + specs somewhat more readable. -2001-11-01 Gerd Moellmann +2007-06-23 YAMAMOTO Mitsuharu - * xterm.c (x_scroll_bar_create): Check for width and height > 0. - (XTset_vertical_scroll_bar): Likewise. + * macterm.c (x_draw_fringe_bitmap) [MAC_OSX]: Extend fringe background + to scroll bar gap also when bitmap fills fringe. Draw only foreground + if extended background has already been filled. - * xfns.c (x_build_heuristic_mask): Use four_corners_best - instead of IMAGE_BACKGROUND. +2007-06-22 YAMAMOTO Mitsuharu - * xfns.c (four_corners_best): Reindent. + * macgui.h (USE_CG_DRAWING): Don't require USE_ATSUI. + (USE_MAC_TOOLBAR): Require USE_CG_DRAWING. - * xfaces.c (Finternal_set_lisp_face_attribute_from_resource): - Handle :box so that it is possible to specify sexprs. + * macmenu.c (mac_dialog_modal_filter, Fx_popup_dialog) [MAC_OSX]: + Put special treatment for Fmessage_box, Fyes_or_no_p, and Fy_or_n_p + in #if 0 as it is not compatible with y-or-n-p-with-timeout. + (timer_check) [TARGET_API_MAC_CARBON]: Add extern. + [TARGET_API_MAC_CARBON] (mac_handle_dialog_event): Use QuitEventLoop + instead of QuitAppModalLoopForWindow. Consolidate QuitEventLoop calls. + (pop_down_dialog) [TARGET_API_MAC_CARBON]: New function. + [TARGET_API_MAC_CARBON] (create_and_show_dialog): Use it for unwind. + Run timers during dialog popup. + (Fmenu_or_popup_active_p) [TARGET_API_MAC_CARBON]: Use popup_activated. -2001-10-31 Eli Zaretskii +2007-06-21 Jason Rumney - * s/hpux11.h: New file. + * image.c (convert_mono_to_color_image): Swap fore and background. -2001-10-31 Pavel Jan,Am(Bk +2007-06-20 Jason Rumney - * emacs.c (USAGE1): Show command line option --no-window-system - instead of --no-windows in usage. - (standard_args): Rename --no-windows to --no-window-system. - (bug_reporting_address): Follow Emacs coding conventions. + * w32bdf.c (w32_BDF_to_x_font): Unmap memory when finished. + (w32_free_bdf_font): Unmap memory not handle. - * eval.c (Fcommandp): Doc fix. - Change doc-string comments to `new style' [w/`doc:' keyword]. +2007-06-20 Sam Steingold - * frame.c (Fframe_live_p): Doc fix. + * gmalloc.c (__morecore): Fix the declaration to comply with the + definition. - * buffer.c (selective-display-ellipses): Doc fix. +2007-06-20 Juanma Barranquero -2001-10-31 Gerd Moellmann + * w32term.c (w32_delete_display): Remove leftover declaration. + (w32_define_cursor, w32_initialize): Make static. - * lread.c (to_multibyte): Fix computation of new read_buffer_size. + * w32.c (_wsa_errlist): Fix typo in error message. + (init_environment): Ignore any environment variable from the + registry having a null value. - * xfaces.c (realize_x_face): If C is not a single-byte character, - set the face's colors_copied_bitwise_p instead of the defaulted_p - members which have a different meaning. - (free_face_colors): Do nothing for a face whose colors have been - copied bitwise. +2007-06-20 Glenn Morris - * dispextern.h (struct face) : New member. + * Makefile.in (LIBGIF): Default to -lgif. -2001-10-31 Pavel Jan,Am(Bk +2007-06-17 Jason Rumney - * marker.c, mocklisp.c: Change doc-string comments to `new style' - [w/`doc:' keyword]. + * w32menu.c (add_menu_item): Don't use multibyte string functions on + unicode strings. -2001-10-31 Gerd Moellmann +2007-06-16 Juanma Barranquero - * fns.c (require_unwind): Return Lisp_Object. + * xdisp.c (syms_of_xdisp) : + Fix typo in docstring. -2001-10-31 Pavel Jan,Am(Bk +2007-06-16 Eli Zaretskii - * keyboard.c (lucid-menu-bar-dirty-flag): Doc fix. - (last-input-char): Revert doc-string to be the same as the - doc-string of `last-input-event'. + * w32menu.c (add_menu_item): Escape `&' characters in menu items + and their keybindings. - * xdisp.c: Fix typos in comments. +2007-06-15 Chong Yidong -2001-10-31 Gerd Moellmann + * composite.c (update_compositions): Fix last fix. - * window.c (grow_mini_window): Handle case that the root - window is already smaller than the nominal mininum height. +2007-06-14 Jason Rumney -2001-10-30 Stefan Monnier + * w32.c (get_process_times_fn): New function pointer. + (globals_of_w32): Intialize it if present in kernel32.dll. + (w32_get_internal_run_time): New function. - * emacs.c (main): Don't call keys_of_macros any more. + * editfns.c (Fget_internal_run_time) [WINDOWSNT]: Use it. - * lisp.h (keys_of_macros): Remove. +2007-06-14 Kenichi Handa - * macros.c (keys_of_macros): Remove. + * composite.c (update_compositions): Check the validness of + compositions. - * xfaces.c (Fface_attribute_relative_p): Declare args. +2007-06-14 YAMAMOTO Mitsuharu -2001-10-30 Jason Rumney + * frame.h (struct frame) [MAC_OS]: New member external_tool_bar. + (FRAME_EXTERNAL_TOOL_BAR) [MAC_OS]: Use it. - * w32fns.c (w32_to_x_charset): Increase size of XLFD charset buffer. - (enum_font_cb2): Ignore fonts with vertical orientation. + * macfns.c (mac_window) [USE_MAC_TOOLBAR]: Set toolbar_win_gravity. + (x_set_tool_bar_lines) [USE_MAC_TOOLBAR]: Set FRAME_EXTERNAL_TOOL_BAR. -2001-10-30 Richard M. Stallman + * macgui.h (USE_MAC_TOOLBAR): New define. - * keyboard.c (Finput_pending_p): Doc fix. + * macmenu.c [TARGET_API_MAC_CARBON] (menu_target_item_handler): + Return immediately unless popup is activated. -2001-10-30 Gerd Moellmann + * macterm.c (x_draw_fringe_bitmap) [MAC_OSX]: Extend fringe + background to scroll bar gap. + (x_scroll_bar_create) [MAC_OSX]: Set bar->fringe_extended_p. + (XTset_vertical_scroll_bar) [MAC_OSX]: Put leftmost/rightmost + scroll bars on frame edge. Check fringe background extension. + Don't clear extended fringe background area. + (TOOLBAR_IDENTIFIER, TOOLBAR_ICON_ITEM_IDENTIFIER) + (TOOLBAR_ITEM_COMMAND_ID_OFFSET, TOOLBAR_ITEM_COMMAND_ID_P) + (TOOLBAR_ITEM_COMMAND_ID_VALUE, TOOLBAR_ITEM_MAKE_COMMAND_ID): + [USE_MAC_TOOLBAR]: New macros. + (mac_move_window_with_gravity, mac_get_window_origin_with_gravity) + (mac_handle_toolbar_event, mac_image_spec_to_cg_image) + (mac_create_frame_tool_bar, update_frame_tool_bar, free_frame_tool_bar) + (mac_tool_bar_note_mouse_movement, mac_handle_toolbar_command_event) + [USE_MAC_TOOLBAR]: New functions. + (mac_handle_window_event) [USE_MAC_TOOLBAR]: Reposition window + manually if previous repositioning has failed. + (mac_handle_keyboard_event): Use precomputed event kind. + (XTread_socket) [USE_MAC_TOOLBAR]: Handle click in structure region + as tool bar item click. Handle mouse movement over tool bar items. - * xterm.c (x_after_update_window_line): Don't run the code - clearing in borders for rows whose visible height is 0. + * macterm.h (struct mac_output) [USE_MAC_TOOLBAR]: New member + toolbar_win_gravity. + (struct scroll_bar) [MAC_OSX]: New member fringe_extended_p. + (update_frame_tool_bar, free_frame_tool_bar) [USE_MAC_TOOLBAR]: + Add externs. - * xdisp.c (clear_garbaged_frames): Redraw the frame only if its - resized_p flag is set. If not set, use the much less flickering - method previously used. + * xdisp.c (update_tool_bar, redisplay_tool_bar, redisplay_window) + [USE_MAC_TOOLBAR]: Sync with GTK+ tool bar display. - * dispnew.c (change_frame_size_1): Set frame's resized_p. +2007-06-14 Chong Yidong - * frame.h (struct frame) : New member. + * image.c (search_image_cache): Remove unused variable. - * lread.c (to_multibyte): Ensure read_buffer is at least twice - as large as the number of bytes to convert. +2007-06-13 Chong Yidong - * lread.c (to_multibyte): New function. - (read1): Use it. + * xfns.c, xmenu.c: Link to xaw3d if available. -2001-10-30 Eli Zaretskii +2007-06-13 YAMAMOTO Mitsuharu - * msdos.h (FRAME_LINE_HEIGHT): Define (it's used by xmenu.c). + * dispextern.h (struct image) [HAVE_WINDOW_SYSTEM]: New members + frame_foreground and frame_background. -2001-10-30 Gerd Moellmann + * image.c (lookup_image): Save frame foreground and background colors. + (search_image_cache): Check if saved and current frame colors match. - * xterm.c (x_draw_relief_rect): Correct bottom relief by 1 pixel. - (x_set_glyph_string_background_width): Set extends_to_end_of_line_p - if the row's fill_line_p is set and drawing the last glyph with - DRAW_IMAGE_{RAISED,SUNKEN}. +2007-06-12 Stefan Monnier - * xdisp.c (clear_garbaged_frames): Call Fredraw_frame. + * regex.c (regex_compile): Remove the `regnum' counter. + Use bufp->re_nsub instead. Add support for \(?N:RE\). -2001-10-29 Stefan Monnier +2007-06-11 Stefan Monnier - * xmenu.c: Include coding.h and charset.h. - (Fx_popup_menu): Use FRAME_PTR and FRAME_FONT and FRAME_LINE_HEIGHT. - (Fx_popup_dialog): Use FRAME_PTR and enum scroll_bar_part. - (single_submenu, xmenu_show): Use ENCODE_SYSTEM. - Explicitly set wv->help. Use `TRUE' rather than `True'. - (menu_help_callback): Use empty_string. + * term.c: Include intervals.h to declare Fget_text_property. - * w32menu.c (Fx_popup_menu): Explicitly init f, xpos, and ypos. - (Fx_popup_dialog): Explicitly init f. - (w32_menu_display_help): Use empty_string. +2007-06-10 Jason Rumney -2001-10-29 Richard M. Stallman + * w32fns.c (Fx_file_dialog): Take size from struct not pointer. - * fns.c (Frequire): Detect recursive try to require the same - feature 3 or more levels deep, and get error. - (require_unwind): New subroutine. - (require_nesting_list): New variable. - (syms_of_fns): Init and staticpro it. +2007-06-08 Juanma Barranquero - * print.c (print_object): Clarify indication of insertion type. + * callint.c (Fcall_interactively): + * editfns.c (Fdelete_and_extract_region): + * fileio.c (Fread_file_name): + * fns.c (Fmapconcat): + * keyboard.c (cmd_error_internal): + * keymap.c (Fkey_description): + * lread.c (openp): + * minibuf.c (read_minibuf): + * search.c (wordify): + * sunfns.c (sel_read): + * xdisp.c (Fformat_mode_line, syms_of_xdisp): + * xfns.c (x_default_scroll_bar_color_parameter): + * xmenu.c (menu_help_callback): + * xselect.c (Fx_get_atom_name): + * xterm.c (x_term_init): Use empty_unibyte_string. -2001-10-29 Eli Zaretskii +2007-06-08 Dmitry Antipov (tiny change) - * coding.c (syms_of_coding): Document that locale-coding-system is - used for decoding input on X. + * alloc.c (init_strings): Initialize canonical empty strings. + (make_uninit_string, make_uninit_multibyte_string): Return appropriate + canonical empty string when the requested size is 0. - * window.c (Fscroll_left, Fscroll_right): Doc fix. + * emacs.c (empty_unibyte_string): Rename from empty_string. + (empty_multibyte_string): New canonical empty string. + (syms_of_emacs): Don't initialize empty_string. -2001-10-29 Pavel Jan,Am(Bk + * lisp.h (STRING_SET_UNIBYTE): Return the canonical empty unibyte + string, if appropriate. + (empty_unibyte_string, empty_multibyte_string): New externs. + (empty_string): Remove extern. - * keyboard.c (Finput_pending_p): Fix typo in doc-string. - (echo-area-clear-hook): Properly DEFVAR_LISP and staticpro it. + * lread.c (syms_of_lread): Use empty_unibyte_string. -2001-10-29 Gerd Moellmann +2007-06-07 Jason Rumney - * xterm.c (x_display_and_set_cursor): If cursor_in_echo_area, - use NO_CURSOR if cursor_in_non_selected_windows is false. + * s/ms-w32.h: Don't define HAVE_TZNAME. - * xfaces.c (Fface_font): Use UNSPECIFIEDP instead of NILP for - the slant attribute if FRAME is t. + * editfns.c (Fcurrent_time_zone): Remove hack for Japanese Windows. - * xfns.c (x_set_internal_border_width): Set frame garbaged - when X window doesn't exist yet. +2007-06-07 YAMAMOTO Mitsuharu - * xterm.c (x_after_update_window_line): Clear internal border - in different circumstances. + * mac.c (xrm_get_preference_database): Remove BLOCK_INPUT. - * xterm.c (XTread_socket) : Don't use - STRING_CHAR_AND_LENGTH if nchars == nbytes. From Kenichi Handa - . + * macfns.c (mac_get_window_bounds): Move extern to macterm.h. + (compute_tip_xy) [TARGET_API_MAC_CARBON]: Use GetGlobalMouse. -2001-10-28 Eli Zaretskii + * macmenu.c [TARGET_API_MAC_CARBON] (menu_target_item_handler): + Don't call next handler. + [TARGET_API_MAC_CARBON] (install_menu_target_item_handler): + Remove argument. Install handler to application. + (set_frame_menubar): Don't change deep_p. + (mac_menu_show): Use FRAME_OUTER_TO_INNER_DIFF_X and + FRAME_OUTER_TO_INNER_DIFF_Y. + (DIALOG_BUTTON_COMMAND_ID_OFFSET, DIALOG_BUTTON_COMMAND_ID_P) + (DIALOG_BUTTON_COMMAND_ID_VALUE, DIALOG_BUTTON_MAKE_COMMAND_ID) + [HAVE_DIALOGS]: New macros. + [HAVE_DIALOGS] (mac_handle_dialog_event, create_and_show_dialog): + Use them. + (fill_menubar) [TARGET_API_MAC_CARBON]: Use CFString. + + * macselect.c [MAC_OSX] (install_service_handler): Rename from + init_service_handler. All callers changed. Return OSStatus value. + + * macterm.c (mac_begin_cg_clip): New arg F. Call SetPortWindowPort. + All callers changed so as not to call SetPortWindowPort. + (mac_begin_cg_clip) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw. + (mac_draw_image_string_atsui) [USE_ATSUI]: New function created from + mac_draw_string_common. + (mac_draw_image_string_qd): Likewise. + (mac_draw_string_common): Use them. Add INLINE. + (XTmouse_position, x_scroll_bar_report_motion) [TARGET_API_MAC_CARBON]: + Use FRAME_OUTER_TO_INNER_DIFF_X, FRAME_OUTER_TO_INNER_DIFF_Y, and + GetGlobalMouse. + (x_set_mouse_pixel_position) [MAC_OSX]: Use FRAME_OUTER_TO_INNER_DIFF_X + and FRAME_OUTER_TO_INNER_DIFF_Y. + [TARGET_API_MAC_CARBON] (mac_handle_mouse_event): Likewise. + [USE_MAC_TSM] (mac_handle_text_input_event): Likewise. + (x_make_frame_visible) [TARGET_API_MAC_CARBON]: Move code for + repositioning window to mac_handle_window_event. + (x_make_frame_invisible) [TARGET_API_MAC_CARBON]: Move code for + saving window location to mac_handle_window_event + [USE_MAC_FONT_PANEL] (mac_show_hide_font_panel): Install handler here. + (install_menu_target_item_handler): Remove argument in extern. + [TARGET_API_MAC_CARBON] (mac_event_to_emacs_modifiers): + Also accept command events. + (do_keystroke): New function created from XTread_socket. + (init_command_handler): Remove functions. + [TARGET_API_MAC_CARBON] (mac_handle_window_event): Reposition window + and save window location by kEventWindowShowing and kEventWindowHiding + handlers here. Don't call next handler for window state change and + focus events. + (mac_handle_application_event, mac_handle_keyboard_event) + [TARGET_API_MAC_CARBON]: New functions. + (install_window_handler) [TARGET_API_MAC_CARBON]: Register handlers for + kEventWindowShowing and kEventWindowHiding events. Move installation + of mouse, font, text input and menu target item handlers to + install_application_handler. + (install_application_handler) [TARGET_API_MAC_CARBON]: New function. + (mac_handle_cg_display_reconfig) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: + New function. + (init_dm_notification_handler) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: + Register it. + (XTread_socket) [TARGET_API_MAC_CARBON]: + Consolidate SendEventToEventTarget calls. + Use FRAME_OUTER_TO_INNER_DIFF_X and FRAME_OUTER_TO_INNER_DIFF_Y. + Move application activation handler to mac_handle_application_event. + Move keyboard handler to mac_handle_keyboard_event. + (XTread_socket) [!TARGET_API_MAC_CARBON]: Use do_keystroke. + (mac_initialize) [TARGET_API_MAC_CARBON]: Don't call + init_command_handler. Call install_application_handler. - * m/ibms390.h: New file. From Adam Thornton - . + * macterm.h (mac_get_window_bounds): Move extern from macfns.c. + (FRAME_OUTER_TO_INNER_DIFF_X, FRAME_OUTER_TO_INNER_DIFF_Y): New macros. -2001-10-28 Gerd Moellmann +2007-06-07 Glenn Morris - * xfns.c (x_build_heuristic_mask): Use x_alloc_image_color. + * emacs.c (main): Use `emacs-copyright' in --version output. - * xfns.c (x_build_heuristic_mask): Fix a bug not incrementing - a loop counter. +2007-06-06 Chong Yidong -2001-10-28 Pavel Jan,Am(Bk + * image.c (xpm_load): Remove spurious call to xpm_init_color_cache. - * emacs.c: Use argv[0] instead of "emacs" when -t was specified. +2007-06-06 YAMAMOTO Mitsuharu - * keyboard.c: Change doc-string comments to `new style' [w/`doc:' - keyword]. - Fix typos in comments. + * macfns.c (mac_window): Replace WindowPtr with WindowRef. - * emacs.c (bug_reporting_address): New function. - Use it when displaying usage message. + * macgui.h: Replace WindowPtr with WindowRef. - * minibuf.c (read_minibuf): Remove unused external declaration of - variable `Qread_only'. + * macmenu.c: Replace MenuHandle and GetMenuHandle with MenuRef and + GetMenuRef, respectively. Replace WindowPtr with WindowRef. + Replace ControlHandle with ControlRef. + (install_menu_quit_handler): Rename arg MENU_HANDLE to ROOT_MENU. - * keymap.c (access_keymap): Remove unused variable `charset'. + * macterm.c: Replace MenuHandle and GetMenuHandle with MenuRef and + GetMenuRef, respectively. Replace WindowPtr with WindowRef. + Replace ControlHandle with ControlRef. + (USE_CARBON_EVENTS): Remove. Use TARGET_API_MAC_CARBON instead. + [MAC_OS8] (do_get_menus): Rename variable `menu_handle' to `menu'. -2001-10-28 Miles Bader + * macterm.h (struct scroll_bar): Rename member control_handle_low + and control_handle_high to control_ref_low and control_ref_high. + All uses changed. + (SCROLL_BAR_CONTROL_REF, SET_SCROLL_BAR_CONTROL_REF): Rename from + SCROLL_BAR_CONTROL_HANDLE and SET_SCROLL_BAR_CONTROL_HANDLE, + respectively. All uses changed. + (XCreatePixmap, XCreatePixmapFromBitmapData, XSetWindowBackground) + (install_window_handler, remove_window_handler): Replace WindowPtr + with WindowRef in externs. - * xfaces.c (merge_face_heights): Handle TO being relative as well. - Remove #ifdef'd-out code. - (Fface_attribute_relative_p, Fmerge_face_attribute): New functions. - (syms_of_xfaces): Initialize them. +2007-06-05 Juanma Barranquero -2001-10-27 Jason Rumney + * xfaces.c (Finternal_lisp_face_p): Signal error for face alias loops. - * w32fns.c (w32_wnd_proc) : Destroy the system caret. - : Track cursor - position using the system caret. +2007-06-03 Nick Roberts - * w32term.c (w32_system_caret_hwnd, w32_system_caret_width) - (w32_system_caret_height, w32_system_caret_x) - (w32_system_caret_y): New variables for tracking system caret. - (w32_initialize): Initialize them. - (x_display_and_set_cursor): Make system caret follow the active cursor. + * keyboard.c (discard_mouse_events): Add GPM_CLICK_EVENT case. - * w32term.h (WM_EMACS_TRACK_CARET, WM_EMACS_DESTROY_CARET): - New messages types. + * frame.c (Fmouse_position, Fmouse_pixel_position): + Condition on HAVE_GPM too. - * w32term.c (note_mouse_highlight): Clear old help_echo. + * term.c (term_mouse_highlight): Remove unused variables. + (Fterm_open_connection): Set gpm_zerobased to 1. + (term_mouse_movement, term_mouse_click, handle_one_term_event): + Use zero based co-ordinates. + (handle_one_term_event): Report a drag as mouse movement too. -2001-10-27 Pavel Jan,Am(Bk + * Makefile.in (MOUSE_SUPPORT): Define for HAVE_GPM. - * xterm.c: Fix typo in a comment. +2007-06-03 Chong Yidong - * emacs.c: Fix typos in comments. - Remove unnecessary spaces. - Change doc-string comments to `new style' [w/`doc:' keyword]. - (USAGE2): Fix typos in usage string. + * image.c (search_image_cache): New function. Require background + color match if background color is unspecified in the image spec. + (uncache_image, lookup_image): Use it. - * xterm.c: Fix typo in a comment. +2007-06-01 Juanma Barranquero - * lisp.h (gdb_lisp_params): Remove code in #if 0 which is now in - emacs.c. + * window.c (Fshrink_window): Reflow docstring. -2001-10-27 Gerd Moellmann +2007-06-02 Chong Yidong - * xdisp.c (move_it_vertically_backward): Use 2/3 line_height - instead of 1/2 line_height in the heuristic for skipping - farther backward when target_y was not reached. + * Version 22.1 released. - * sound.c (sound_perror): Unblock SIGIO, turn on atimers. - Display errno only if non-zero. - (sound_warning): New function. - (vox_configure): Don't treat failing to set sample rate as error. - (various places): Improve error messages. +2007-06-01 Richard Stallman -2001-10-26 Eli Zaretskii + * xfns.c (x_encode_text): Add GCPRO. - * fileio.c (Faccess_file): Run the argument filename through - Fexpand_file_name, before using it. +2007-06-01 YAMAMOTO Mitsuharu - * dispnew.c (syms_of_display) : Add a reference to - ring-bell-function. Suggested by Alf-Ivar Holm + * xfns.c (x_set_name_internal): Save encoded name before + x_encode_text in case string data is relocated. -2001-10-26 Gerd Moellmann +2007-05-31 Richard Stallman - * insdel.c (insert_1_both): Do nothing if NCHARS == 0. + * buffer.c (syms_of_buffer): Doc fix. - * xterm.c (XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]: - Fix clearing in the case of scroll bars on the right. +2007-05-30 Nick Roberts -2001-10-26 Juanma Barranquero + * sysdep.c (init_sys_modes): Add rather than replace with + O_NONBLOCK. - * w32gui.h (XImage): Add a dummy typedef. + * frame.c [HAVE_GPM] (Fset_mouse_pixel_position): Add call to + term_mouse_moveto. -2001-10-26 Gerd Moellmann + * termhooks.h (term_mouse_moveto): New extern. - * xfns.c (XScreenNumberOfScreen): Fix struct to pointer comparison. + * term.c (mouse_face_window): Rename... + (Qmouse_face_window): ...to this. + (term_show_mouse_face, term_clear_mouse_face) + (term_mouse_highlight): Use Qmouse_face_window. + (term_mouse_moveto): New function. + (term_mouse_position): Make it work. + (syms_of_term): Uncomment assignment to mouse_position_hook. + Staticpro Qmouse_face_window. -2001-10-25 Eli Zaretskii +2007-05-28 YAMAMOTO Mitsuharu - * frame.c (Fframe_parameter): Fix last change. + * xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t + around current_column call. - * fileio.c: Revert last change (which removed old commented-out - version of expand-file-name). Add a comment that explains why - this old version should not be removed. +2007-05-26 Dan Nicolaescu -2001-10-25 Gerd Moellmann + * xfaces.c (syms_of_xfaces): Delete stray semicolon. + * xdisp.c (next_element_from_buffer): + * window.c (delete_window): + * term.c (term_mouse_highlight): + * msdos.c (getdefdir): + * macterm.c (mac_create_bitmap_from_bitmap_data) + (init_font_name_table): + * fns.c (Fsxhash): + * data.c (Fmake_local_variable): + * ccl.c (ccl_driver): Likewise. - * frame.c (Fframe_parameter): Fix a bug whereby some - ``artificial'' frame parameters, like `minibuffer' were not - obtained by calling Fframe_parameters. +2007-05-24 YAMAMOTO Mitsuharu - * xterm.c (show_mouse_face): Clean up. Recognize overwritten - cursor differently. + * macterm.c [USE_CARBON_EVENTS] (mac_handle_window_event): + Call mac_wakeup_from_rne on window size change. - * xdisp.c (move_it_vertically_backward): Compute line height - differently. Add heuristic to try to be more compatible to 20.x. +2007-05-25 Chong Yidong -2001-10-25 Stefan Monnier + * image.c (uncache_image): Fix typo. - * lisp.h (make_fixnum_or_float): Coerce double to int explicitly. +2007-05-23 Johannes Weiner (tiny change) - * editfns.c (text_property_stickiness): Fix Lisp_Object used as - boolean. + * keyboard.c (make_lispy_movement): Condition on HAVE_GPM too. -2001-10-25 Miles Bader +2007-05-22 Richard Stallman - * xfns.c (png_load): Make sure SPECIFIED_BG is a string. - BG is a pointer to a structure, not a structure. - (gif_format, png_format): Add missing commas. + * xterm.c (x_connection_closed): Remove NO_RETURN. -2001-10-24 Richard M. Stallman +2007-05-22 Martin Rudalics - * xfaces.c (Fface_attributes_as_vector): New function. - (syms_of_xfaces): Defsubr it. + * syntax.c (scan_words): Fix arg to UPDATE_SYNTAX_TABLE_BACKWARD. -2001-10-24 Pavel Jan,Am(Bk +2007-05-21 Chong Yidong - * dispnew.c (sync_window_with_frame_matrix_rows): Remove unused - variable `area'. + * image.c (uncache_image): New function. + (Fimage_refresh): New function. -2001-10-25 Pavel Jan,Am(Bk +2007-05-20 Jan Dj,Ad(Brv - * search.c (scan_newline): Remove unused variable `selective_display'. + * Makefile.in: Move GPM check outside HAVE_X_WINDOWS. -2001-10-25 Miles Bader +2007-05-20 Nick Roberts - * dispextern.h (struct image): Add `background', - `background_valid', and `background_transparent' fields. - (image_background, image_background_transparent): New declarations. - (IMAGE_BACKGROUND, IMAGE_BACKGROUND_TRANSPARENT): New macros. - * xfns.c (image_background, image_background_transparent) - (four_corners_best): New functions. - (xpm_format, png_format, jpeg_format, tiff_format, gif_format) - (gs_format): Add `:background' entry. - (lookup_image): Set IMG's background color if specified. - (pbm_load, xbm_load_image, png_load): Set IMG's background field - when appropriate. - (x_clear_image_1): Reset `background_valid' and - `background_transparent_valid' fields. - (x_build_heuristic_mask): Use IMAGE_BACKGROUND instead of - calculating it here. Set IMG's background_transparent field. - (enum xpm_keyword_index): Add XPM_BACKGROUND. - (enum png_keyword_index): Add PNG_BACKGROUND. - (enum jpeg_keyword_index): Add JPEG_BACKGROUND. - (enum tiff_keyword_index): Add TIFF_BACKGROUND. - (enum gif_keyword_index): Add GIF_BACKGROUND. - (enum gs_keyword_index): Add GS_BACKGROUND. - (pbm_load, png_load, jpeg_load, tiff_load, gif_load): - Pre-calculate image background color where necessary. - * xterm.c (x_setup_relief_colors): Use `IMAGE_BACKGROUND' and - `IMAGE_BACKGROUND_TRANSPARENT' to calculate the correct background - color to use for image glyph reliefs. + * config.in, keyboard.c, Makefile.in, sysdep.c, term.c, + * termhooks.h: Use HAVE_GPM instead of HAVE_GPM_H. -2001-10-24 Gerd Moellmann +2007-05-20 Nick Roberts - * xterm.c (x_draw_glyphs): Don't check for cursor overwriting - in full-width rows. + * keyboard.c (make_lispy_event): Make case GPM_CLICK_EVENT + conditional on [HAVE_GPM_H]. - * xterm.c (XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]: - Fix clearing of area not covered by scroll bar. +2007-05-19 Stefan Monnier -2001-10-24 Pavel Jan,Am(Bk + * syntax.c (skip_chars): Update syntax-table only after we checked that + the new location is valid. - * xterm.c (x_insert_glyphs): Remove unused variables `real_end' - and `real_start'. - (x_draw_image_foreground): Remove unused variables `mask' and `xgcv'. - (glyph_rect): Remove unused variable `area'. +2007-05-19 YAMAMOTO Mitsuharu -2001-10-24 Gerd Moellmann + * macterm.c (x_calc_absolute_position): Add BLOCK_INPUT around + mac_get_window_bounds. - * xdisp.c: Change #ifdef GLYPH_DEBUG to #if. +2007-05-20 Nick Roberts - * xdisp.c (try_window_reusing_current_matrix): Use row_containing_pos. - (row_containing_pos): Take additional argument DY. - Treat rows ending in middle of char differently. - (display_line): Handle tabs on window systems differently. + * Makefile.in (LIBGPM): Allow it to be set from configure. + If set then link Emacs with it. - * xterm.c, w32term.c (fast_find_position): Call row_containing_pos - with additional argument. + * config.in: Regenerate. - * dispextern.h (row_containing_pos): Adjust prototype. + * lisp.h (add_gpm_wait_descriptor, delete_gpm_wait_descriptor): + New externs. + + * termhooks.h [HAVE_GPM_H] (enum event_kind): Add GPM_CLICK_EVENT. + Include gpm.h. + (handle_one_term_event, term_gpm): New externs. + + * sysdep.c [HAVE_GPM_H] (init_sys_modes): Make gpm_fd nonblocking + and allow it to be interrupted by SIGIO. + + * process.c (gpm_wait_mask, max_gpm_desc): New variables. + (wait_reading_process_output): Wait on gpm_fd too. + (add_gpm_wait_descriptor, delete_gpm_wait_descriptor)): New functions. + (add_gpm_wait_descriptor_called_flag): New variable. + (delete_keyboard_wait_descriptor): Check gpm_wait_mask. + + * keyboard.c [HAVE_GPM_H] (Qmouse_fixup_help_message) + (make_lispy_movement, tracking_off, Ftrack_mouse, some_mouse_moved) + (show_help_echo, readable_events, kbd_buffer_get_event, init_keyboard): + Extend HAVE_MOUSE ifdefs to HAVE_GPM_H. + (make_lispy_event): Add case GPM_CLICK_EVENT. + (read_avail_input): Handle mouse input. + + * term.c (write_glyphs_with_face): New function. + [HAVE_GPM_H]: Include buffer.h, sys/fcntl.h. + (mouse_face_beg_row, mouse_face_beg_col, mouse_face_end_row) + (mouse_face_end_col, mouse_face_past_end, mouse_face_window) + (mouse_face_face_id, term_gpm, pos_x, pos_y) + (last_mouse_x, last_mouse_y): New variables. + (term_show_mouse_face, term_clear_mouse_face, fast_find_position) + (term_mouse_highlight, term_mouse_movement, term_mouse_position) + (term_mouse_click, handle_one_term_event, Fterm_open_connection) + (Fterm_close_connection): New functions. + (term_init): Initialise mouse_face_window. + +2007-05-19 Chong Yidong - * xdisp.c (inhibit_try_window_id, inhibit_try_window_reusing) - (inhibit_try_cursor_movement) [GLYPH_DEBUG]: New variables. - (try_window_id, try_window_reusing_current_matrix) - (try_cursor_movement) [GLYPH_DEBUG]: Don't run if inhibited. - (syms_of_xdisp) [GLYPH_DEBUG]: DEFVAR_BOOL the variables. + * xdisp.c (redisplay_window): If first window line is a + continuation line, recompute the new window start instead of + recentering. -2001-10-24 Pavel Jan,Am(Bk +2007-05-18 Glenn Morris - * xmenu.c: Spell the name of Emacs properly (GNU Emacs instead of - gnuemacs). - (HAVE_BOXES): Fix typo in comment. - (push_menu_pane): Fix typo in comment. + * m/alpha.h (ORDINARY_LINK): No longer define on OpenBSD. + Suggested by Alfred M. Szmidt . - * xdisp.c (display_prop_string_p): Remove unused local declaration - of `Qwhen'. - (single_display_prop_string_p): Remove unused local declarations - of `Qwhen' and `Qmargin'. - (string_buffer_position): Remove unused variable `around'. - (store_frame_title): Remove unused variable `width'. +2007-05-17 Glenn Morris - * window.c: Don't define max. - (coordinates_in_window): Remove unused variable `uy'. + * m/macppc.h (ORDINARY_LINK): No longer define on OpenBSD. - * widget.c: Don't define max. +2007-05-16 YAMAMOTO Mitsuharu - * process.c: Don't define max. - (create_process): Remove unused variable `buffer'. + * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Also convert + dead key repeat and up events. -2001-10-23 Gerd Moellmann +2007-05-14 Chong Yidong - * xfaces.c (Finternal_set_lisp_face_attribute): Fix compilation error. + * image.c (pbm_load): Check image size for monochrome pbm. -2001-10-23 Eli Zaretskii +2007-05-13 Chong Yidong - * xfaces.c (Finternal_set_lisp_face_attribute) - [HAVE_WINDOW_SYSTEM]: Don't do anything for QCfont unless the - frame is on a windowed display. + * xterm.c (XTread_socket): Revert last change. -2001-10-23 Gerd Moellmann +2007-05-12 Chong Yidong - * dispnew.c (sync_window_with_frame_matrix_rows): - Fix handling of windows which aren't full-width, fix handling - of marginal areas. + * image.c (pbm_load): Correctly check image size for greyscale pbm. - * lread.c (syms_of_lread) : Raise to 50. + * xterm.c (XTread_socket): Yet Another Uncaught X Error Crash (YAUXEC). -2001-10-23 Andreas Schwab +2007-05-07 Stefan Monnier - * m/macppc.h [LINUX]: Undef LD_SWITCH_SYSTEM_TEMACS and override - LD_SWITCH_MACHINE_TEMACS with "-Xlinker -znocombreloc". + * editfns.c (Ftranspose_regions): Yet another int/Lisp_Object + mixup (YAILOM). -2001-10-23 Gerd Moellmann +2007-05-07 Andreas Schwab - * xterm.c (x_draw_glyphs): Remove parameters READ_START and - REAL_END. Notice if cursor gets overwritten. - (notice_overwritten_cursor): Take X positions as parameters. - (x_draw_phys_cursor_glyph): Save state of w->phys_cursor_on_p - around call to x_draw_glyphs. + * keymap.c (Flookup_key): Fix typo in last change. -2001-10-23 Pavel Jan,Am(Bk +2007-05-07 Stefan Monnier - * syntax.c (modify-syntax-entry): Fix argument names (use CHAR - instead of C) and usage. + * keymap.c (Fdefine_key, Flookup_key): Only do the 0x80->meta_modifier + mapping for unibyte strings. - * editfns.c (char-to-string): Fix argument names (use CHAR instead - of C) and usage. +2007-05-01 YAMAMOTO Mitsuharu - * xfns.c (Fx_show_tip): Remove unused variables `buffer', `top', - `left', `max_width' and `max_height'. + * macmenu.c (mac_dialog_show): Apply 2007-04-27 change for xmenu.c. + (Fx_popup_dialog) [MAC_OSX]: Likewise. -2001-10-23 Gerd Moellmann +2007-04-29 Richard Stallman - * xdisp.c (display_line): For a tab continued to the next line, - set row's ends_in_middle_of_char_p. + * insdel.c (replace_range): For undo, record insertion first. -2001-10-22 Gerd Moellmann +2007-04-29 Andreas Schwab - * xdisp.c (display_line): Fix computation of continuation lines - width for TABs. + * lisp.h (VECSIZE): Use OFFSETOF. -2001-10-22 Pavel Jan,Am(Bk +2007-04-29 YAMAMOTO Mitsuharu - * xdisp.c (build_desired_tool_bar_string): Remove unused variable - `Qlaplace'. + * xdisp.c (try_window_reusing_current_matrix): Fix number of + disabled lines. - * fileio.c: Remove unused code. +2007-04-28 Richard Stallman -2001-10-22 Miles Bader + * lread.c (read_escape): In a string, \s is always space. - * lisp.h (DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_BOOL) - (DEFVAR_INT, DEFVAR_PER_BUFFER, DEFVAR_KBOARD): - Remove `DOC_STRINGS_IN_COMMENTS' cases. +2007-04-27 Jan Dj,Ad(Brv -2001-10-21 Jason Rumney + * xmenu.c (xdialog_show): Call Fredisplay before showing the dialog. - * w32term.c (x_erase_phys_cursor): Remove inverse_p again. + * gtkutil.c (xg_update_menubar, create_menus): Create empty + submenu for menu bar items. -2001-10-21 Eli Zaretskii - - * mocklisp.c (Fml_if, Fml_provide_prefix_argument) - (Finsert_string): Avoid the multi-line string literals warning. - -2001-10-22 Miles Bader - - * doc.c (Vhelp_manyarg_func_alist): Variable removed. - (Fdocumentation): Don't use it. - (syms_of_doc): Don't initialize it. - - * keyboard.c (Ftrack_mouse): Add usage: string to doc string. - * print.c (Fwith_output_to_temp_buffer): Likewise. - * window.c (Fsave_window_excursion): Likewise. - * editfns.c (Fsave_excursion, Fsave_current_buffer) - (Fsave_restriction): Likewise. - * eval.c (Frun_hooks, Frun_hook_with_args) - (Frun_hook_with_args_until_failure) - (Frun_hook_with_args_until_success, Ffuncall, For, Fand, Fif) - (Fcond, Fprogn, Fprog1, Fprog2, Fsetq, Fquote, Ffunction, Fdefun) - (Fdefmacro, Fdefvar, Fdefconst, FletX, Flet, Fwhile, Fcatch) - (Funwind_protect, Fcondition_case): Likewise. - * coding.c (Ffind_operation_coding_system): Likewise. - * keyboard.c (Ftrack_mouse): Likewise. - -2001-10-21 Miles Bader - - * fns.c (Fappend, Fconcat, Fvconcat, Fnconc, Fwidget_apply) - (Fmake_hash_table): Add usage: string to doc string. - * editfns.c (Finsert, Finsert_and_inherit, Finsert_before_markers) - (Fmessage, Fmessage_box, Fmessage_or_box, Fpropertize, Fformat) - (Fencode_time, Finsert_and_inherit_before_markers): Likewise. - * mocklisp.c (Finsert_string, Fml_if, Fml_provide_prefix_argument) - (Fml_prefix_argument_loop): Likewise. - -2001-10-21 Pavel Jan,Am(Bk - - * fileio.c (Finsert_file_contents): Remove unused variable `gap_size'. - - * sysdep.c (init_sys_modes): Change doc-string comments to `new - style' [w/`doc:' keyword]. - - * data.c, fileio.c, indent.c, print.c, search.c, sound.c, - * sunfns.c, textprop.c, undo.c, xselect.c: Change doc-string - comments to `new style' [w/`doc:' keyword]. - -2001-10-21 Jason Rumney - - * w32fns.c (Fx_file_dialog): Pass a filter to GetOpenFileName. - - * w32term.c (remember_mouse_glyph): New function. - (w32_mouse_position): Use it. - (note_mouse_movement): If the mouse moved off the glyph, remember - its new position. - - * w32term.h (struct w32_output): Correct spelling of x_compatible. - (w32_display_info): Add mouse_face_overlay. - - * w32term.c (notice_overwritten_cursor): Renamed from - note_overwritten_text_cursor. Rewritten to take glyph widths into - account. - (x_y_to_hpos_vpos): Add parameter BUFFER_ONLY_P. - (fast_find_string_pos): New function. - (fast_find_position): Return the correct vpos. Add parameter - STOP. In the final row, stop before glyphs having STOP as object. - Don't consider glyphs that are not from a buffer. - (fast_find_position) [0]: Add a presumably more correct version - for after 21.1. - (expose_window_tree, expose_frame): Don't compute intersections here. - (expose_window): Do it here instead. - (expose_window_tree, expose_window, expose_line): Return 1 when - overwriting mouse-face. - (expose_window): If W is the window currently being updated, mark - the frame garbaged. - (expose_frame): If mouse-face was overwritten, redo it. - (x_use_underline_position_properties): New variable. - (syms_of_xterm): DEFVAR_BOOL it. - (x_draw_glyph_string): Add comment to use it in future. - (x_draw_glyph_string): Restore clipping after drawing box. - Fix a computation of the underline position. - (w32_get_glyph_string_clip_rect): Minor cleanup. - (x_fill_stretch_glyph_string): Remove an assertion. - (x_produce_glyphs): Don't convert multibyte characters - to unibyte characters in unibyte buffers. - (cursor_in_mouse_face_p): New function. - (x_draw_stretch_glyph_string): Use it to choose a different GC - when drawing a cursor within highlighted text. Don't draw - background again if it has already been drawn. - (x_draw_glyph_string_box): Don't draw a full-width - box just because the glyph row's full_width_p flag is set. - (x_draw_glyphs): Fix computation of rightmost x for - full-width rows. - (x_dump_glyph_string): Put in #if GLYPH_DEBUG. - (w32_draw_relief_rect): Extend left shadow to the bottom and left; - change bottom shadow accordingly. Some cleanup. - (x_update_window_end): Handle overwritten mouse face - also for tool bar windows. - (show_mouse_face): Set the glyph row's mouse_face_p flag also when - DRAW is DRAW_IMAGE_RAISED. - (clear_mouse_face): Return 1 if text with mouse face was - actually redrawn. Make the function static. - Reset dpyinfo->mouse_face_overlay otherwise note_mouse_highlight might - optimize away highlighting if we pass over that same overlay again. - (note_mouse_highlight): Call mouse_face_overlay_overlaps - to detect a case where we have to highlight a different region - despite not having left the currently highlighted region. - Set mouse_face_overlay in the x_display_info. Avoid changing the - mouse pointer shape when show_mouse_face has already done it, or - there is no need. Handle mouse-face and help-echo in strings. - (glyph_rect): New function. - (w32_mouse_position): Use it to raise the threshold for mouse - movement event generation. - (w32_initialize_display_info): Initialize the x_display_info's - mouse_face_overlay. - (w32_set_vertical_scroll_bar): Don't clear a zero height - or width area. - (w32_set_vertical_scroll_bar, x_scroll_bar_create): Don't configure - a widget to zero height. - - * w32menu.c (single_submenu, w32_menu_show) [!HAVE_MULTILINGUAL_MENU]: - Protect unibyte strings created by replacing their multibyte - equivalents in menu_items. - (w32_menu_show): Don't overwrite an item's name with its key - description in case the description is a multibyte string. - (single_submenu): Some cleanup. - - * w32fns.c (x_laplace_read_row, x_laplace_write_row): Removed. - (postprocess_image): New function. - (lookup_image): Call it for all image types except PostScript. - (x_kill_gs_process): Call postprocess_image. - (tiff_error_handler, tiff_warning_handler): New functions. - (tiff_load): Install them as handlers. - (x_kill_gs_process): Recognize if someone has cleared the image - cache under us. - (valid_image_p): Protect better against invalid image - specifications. Previous code could signal an error. - (Fx_hide_tip, Fshow_tip): Doc fix. - (Fv_max_tooltip_size): New variable. - (syns_of_xfns): DEFVAR_LISP it. - (Fx_show_tip): Add parameter TEXT. Set the tip frame's root - window buffer to *tip* right after creating the frame. Set frame's - window_width. Use a maximum tooltip size specified by - Vx_max_tooltip_size, if that has valid contents. - (compute_tip_xy): Add parameters WIDTH and HEIGHT. - Make sure the tooltip is completely visible. - (x_create_tip_frame): Set tooltip buffer's truncate-lines to nil. - (Fx_create_frame): Adjust the frame's height for presence - of the tool bar before calling x_figure_window_size. - (x_set_tool_bar_lines): Clear the tool bar window's current matrix - when the window gets smaller. - (x_set_foreground_color): Set frame's cursor_pixel. - (x_set_foreground_color, x_set_background_color): Cleaned up. - (x_set_font): Handle case of x_new_fontset returning the same name - as before, although there was a change in fontsets. - -2001-10-21 Miles Bader - - * data.c (Fplus, Fminus, Fmax, Ftimes, Fquo, Flogand, Flogior) - (Flogxor): Add usage: string to doc string. - * charset.c (Fstring): Likewise. - * callproc.c (Fcall_process_region, Fcall_process): Likewise. - * alloc.c (Fmake_byte_code, Fvector, Flist): Likewise. - -2001-10-21 Pavel Jan,Am(Bk - - * buffer.c: Reindent DEFUNs and DEFVARs with doc: keywords. - - * alloc.c: Reindent DEFUNs with doc: keywords. - - * abbrev.c (Finsert_abbrev_table_description): Reindent. - - * frame.c: Change doc-string comments to `new style' [w/`doc:' - keyword]. - -See ChangeLog.9 for earlier changes. +See ChangeLog.10 for earlier changes. ;; Local Variables: ;; coding: iso-2022-7bit diff --cc src/ChangeLog.10 index c5e7bc61e47,00000000000..8dbf09269dc mode 100644,000000..100644 --- a/src/ChangeLog.10 +++ b/src/ChangeLog.10 @@@ -1,27939 -1,0 +1,28326 @@@ ++<<<<<<< TREE +2007-04-24 Chong Yidong ++======= ++2007-10-06 Martin Rudalics ++ ++ * keyboard.c (kbd_buffer_get_event): Break loop waiting for input ++ when there's an unread command event. ++ ++ * frame.c (focus_follows_mouse): Moved here from frame.el to allow ++ window autoselection act appropriately when leaving selected frame. ++ (syms_of_frame): Initialize focus_follows_mouse. ++ * frame.h (focus_follows_mouse): Extern it. ++ * macterm.c (XTread_socket): When focus_follows_mouse is nil ++ make SELECT_WINDOW_EVENT only if we don't leave the selected ++ frame. ++ * msdos.c (dos_rawgetc): Likewise. ++ * w32term.c (w32_read_socket): Likewise. ++ * xterm.c (handle_one_xevent): Likewise. ++ * xdisp.c (syms_of_xdisp): In doc-string of ++ mouse-autoselect-window mention focus-follows-mouse. ++ ++2007-10-06 Andreas Schwab ++ ++ * fileio.c (Fwrite_region): Ignore EINVAL error from fsync. ++ ++2007-10-05 YAMAMOTO Mitsuharu ++ ++ * macterm.c (mac_load_query_font): Fix missing return value. ++ [USE_CG_DRAWING] (mac_define_fringe_bitmap, mac_destroy_fringe_bitmap): ++ Add BLOCK_INPUT. ++ ++2007-10-04 Juanma Barranquero ++ ++ * image.c (syms_of_image) : Fix typo in docstring. ++ ++2007-10-02 Richard Stallman ++ ++ * xdisp.c (get_window_cursor_type): Implement documented behavior ++ for cursor-in-non-selected-windows = t. ++ ++2007-10-01 Juanma Barranquero ++ ++ * lread.c (Fload): Fix typo in docstring. ++ ++2007-09-29 Juri Linkov ++ ++ * emacs.c (standard_args): Change priority of "--no-splash" ++ from 40 to 3. Add "--no-desktop" with the same priority. ++ ++2007-09-29 Jason Rumney ++ ++ * w32.c (w32_get_resource): Always close registry keys. ++ ++2007-09-27 Jason Rumney ++ ++ * makefile.w32-in (LIBS): Add COMCTL32. ++ ++ * w32fns.c (globals_of_w32fns): Init common controls. ++ ++2007-09-21 Richard Stallman ++ ++ * image.c (our_memory_buffer): Renamed from omfib_buffer. ++ ++2007-09-21 Juanma Barranquero ++ ++ * w32term.c (x_draw_glyph_string): Use strike_through_color, not ++ underline_color, to draw strike-through. ++ ++2007-09-20 Glenn Morris ++ ++ * process.c (Fmake_network_process): Doc fix. ++ ++2007-09-19 Richard Stallman ++ ++ * buffer.c (Foverlays_at): Doc fix. ++ ++2007-09-18 Stefan Monnier ++ ++ * fns.c (Fplist_put): Preserve uneven tail data. ++ ++2007-09-16 Jan Dj,Ad(Brv ++ ++ * gtkutil.c (xg_get_image_for_pixmap): Always create a GdkPixbuf ++ when we have no file name for the icon. ++ (xg_tool_bar_expose_callback): Remove. ++ (xg_create_tool_bar): Don't connect expose signal to ++ xg_tool_bar_expose_callback. ++ ++2007-09-16 Andreas Schwab ++ ++ * alloc.c (reset_malloc_hooks): Set the hooks to the previous ++ values instead of zapping them. ++ ++2007-09-15 Glenn Morris ++ ++ * s/hpux.h: No longer define `static' as nothing. ++ ++2007-09-14 Glenn Morris ++ ++ * fringe.c (init_fringe_bitmap) : Move to file scope. ++ * gtkutil.c (xg_separator_p) : Move to file scope. ++ * image.c (our_memory_fill_input_buffer) : Move to file ++ scope and rename to omfib_buffer for clarity. ++ (gif_load) : Move to file scope. ++ ++2007-09-14 Peter O'Gorman (tiny change) ++ ++ * gtkutil.c (xg_get_file_with_chooser): Move GCPRO1 after declarations. ++ ++ * termhooks.h (enum event_kind): Remove trailing comma. ++ ++ * frame.h (enum): Remove trailing comma. ++ ++2007-09-14 Jan Dj,Ad(Brv ++ ++ * keyboard.c, xterm.c, xfaces.c (abs): #undef before #define. ++ ++2007-09-12 Glenn Morris ++ ++ * gtkutil.c (cnt): Rename to menu_grab_callback_cnt for clarity. ++ (menu_grab_callback): All uses changed. ++ ++ * xselect.c (cnt): Rename to x_reply_selection_request_cnt for clarity. ++ (x_reply_selection_request): All uses changed. ++ ++2007-09-06 Pixel (tiny change) ++ ++ * image.c (gif_load): Fix bug: Handle nonexistent colormap. ++ ++2007-09-06 Glenn Morris ++ ++ * gtkutil.c (menu_grab_callback) : ++ * xselect.c (x_reply_selection_request) : Move static ++ variable to file scope. ++ ++2007-09-02 Dhuvra Krishnamurthy (tiny change) ++ ++ * w32proc.c (delete_child): Don't terminate threads of zombies. ++ ++2007-09-02 Jan Dj,Ad(Brv ++ ++ * keyboard.c: Qrtl is new. ++ (parse_tool_bar_item): Handle :rtl keyword. ++ (syms_of_keyboard): Intern :rtl keyword. ++ ++ * dispextern.h (enum tool_bar_item_idx): Add TOOL_BAR_ITEM_RTL_IMAGE. ++ ++ * gtkutil.c (file_for_image, find_rtl_image): New functions. ++ (xg_get_image_for_pixmap): Use file_for_image ++ (update_frame_tool_bar): If direction is RTL, use RTL image if ++ defined. Use Gtk stock images or named theme icons if defined. ++ ++2007-08-29 Martin Rudalics ++ ++ * keyboard.h (struct kboard): New elt Vlast_repeatable_command. ++ ++ * keyboard.c (syms_of_keyboard): Set up new Lisp variable ++ last-repeatable-command. ++ (init_kboard): Initialize Vlast_repeatable_command. ++ (command_loop_1): Set it to real_this_command unless that was ++ bound to an input event. ++ (mark_kboards): Mark it. ++ ++2007-08-28 Juanma Barranquero ++ ++ * image.c (syms_of_image) : ++ Doc fixes. ++ ++2007-08-28 Jan Dj,Ad(Brv ++ ++ * gtkutil.c (xg_tool_bar_expose_callback): Just do SET_FRAME_GARBAGED ++ so no Lisp code is executed. ++ ++2007-08-27 YAMAMOTO Mitsuharu ++ ++ * macterm.c (x_draw_composite_glyph_string_foreground): Draw rectangle ++ for nonexistent or zero-width glyph in composition glyph. ++ ++2007-08-27 Richard Stallman ++ ++ * eval.c (condition-case): Doc fix. ++ ++2007-08-27 Masatake YAMATO ++ ++ * xfaces.c (tty_supports_face_attributes_p): Fix code ++ for LFACE_INVERSE_INDEX and LFACE_BACKGROUND_INDEX; code ++ was copied and not edited. ++ ++2007-08-23 Stefan Monnier ++ ++ * lread.c (load_warn_old_style_backquotes): Fix up array size typo. ++ ++2007-08-22 Stefan Monnier ++ ++ * lread.c (Qold_style_backquotes): New var. ++ (syms_of_lread): Init and staticpro it. ++ (load_warn_old_style_backquotes): New fun. ++ (Fload): Use them to warn about old style backquotes. ++ (end_of_file_error, Fload): Remove unused vars. ++ ++ * lisp.h (Fclear_face_cache, Fx_send_client_event): Declare. ++ ++ * lread.c (Vold_style_backquotes): New var. ++ (syms_of_lread): Init and export it to Elisp. ++ (read1): Set it when we find an old-style (back)quote. ++ ++2007-08-22 Jason Rumney ++ ++ * w32reg.c (SYSTEM_DEFAULT_RESOURCES): Add missing NULL terminator. ++ ++2007-08-21 Stefan Monnier ++ ++ * insdel.c (reset_var_on_error): New fun. ++ (signal_before_change, signal_after_change): ++ Use it to reset (after|before)-change-functions to nil in case of error. ++ Bind inhibit-modification-hooks to t. ++ Don't bind (after|before)-change-functions to nil while they run. ++ ++2007-08-19 Andreas Schwab ++ ++ * alloc.c (pure): Round PURESIZE up. ++ ++2007-08-17 Jan Dj,Ad(Brv ++ ++ * xterm.c (handle_one_xevent): Remove check that mouse click is in ++ active frame. ++ ++2007-08-15 Philippe Waroquiers ++ ++ * term.c (tty_default_color_capabilities): Declare static ++ variables in file scope, to avoid HPUX compiler problem. ++ ++2007-08-13 Jan Dj,Ad(Brv ++ ++ * gtkutil.c (update_frame_tool_bar): Use -1 as index ++ to gtk_toolbar_insert. ++ ++2007-08-11 YAMAMOTO Mitsuharu ++ ++ * xterm.c (x_draw_image_glyph_string): Adjust stipple origin when ++ filling pixmap with stippled background. ++ ++2007-08-10 Stefan Monnier ++ ++ * print.c (new_backquote_output): Rename from old_backquote_output. ++ (print): Inverse its logic (according to its name) so as to match the ++ behavior of new_backquote_flag in lread.c. ++ ++2007-08-09 YAMAMOTO Mitsuharu ++ ++ * gmalloc.c (posix_memalign): New function. ++ ++2007-08-08 Glenn Morris ++ ++ * Replace `iff' in doc-strings and comments. ++ ++2007-08-07 Chong Yidong ++ ++ * dispextern.h (struct image): New members. ++ ++ * image.c: Sync to trunk version. ++ (search_image_cache, uncache_image, image-refresh): New functions. ++ Check for fg and bg colors. ++ (lookup_image): Use search_image_cache. Cache fg and bg colors. ++ (pbm_load): Another check for invalid image data. ++ (png_load): Ignore default background field. ++ ++ * xdisp.c (move_it_by_lines): Remove incorrect optimization. ++ ++2007-08-07 Jan Dj,Ad(Brv ++ ++ * gmalloc.c (__malloc_initialize): Remove pthread_once. Not needed. ++ ++2007-08-07 Sam Steingold ++ ++ * gmalloc.c (__morecore): Fix the declaration to comply with the ++ definition. ++ ++2007-08-07 YAMAMOTO Mitsuharu ++ ++ * emacs.c (main) ++ [HAVE_GTK_AND_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]: ++ Call malloc_enable_thread on interactive startup. ++ ++ * gmalloc.c (_malloc_thread_enabled_p) [USE_PTHREAD]: New variable. ++ (LOCK, UNLOCK, LOCK_ALIGNED_BLOCKS, UNLOCK_ALIGNED_BLOCKS) ++ [USE_PTHREAD]: Conditionalize with it. ++ (malloc_atfork_handler_prepare, malloc_atfork_handler_parent) ++ (malloc_atfork_handler_child, malloc_enable_thread) [USE_PTHREAD]: ++ New functions. ++ ++2007-08-06 Chong Yidong ++ ++ * xdisp.c (redisplay_window): When restoring original buffer ++ position, make sure it is still valid. ++ ++2007-08-06 Martin Rudalics ++ ++ * window.c (window_min_size_2): New function. ++ (window_min_size_1, size_window, Fdisplay_buffer) ++ (Fsplit_window, adjust_window_trailing_edge): Use it to avoid ++ windows without mode- or header-lines when window-min-height is ++ too small. ++ (size_window): Reset nodelete_p after testing it, following an ++ earlier note by Kim F. Storm. ++ (display_buffer): Do not set split_height_threshold to twice the ++ value of window_min_height to avoid changing the value of a ++ customizable variable. Rather explicitly check whether the ++ height of the window that shall be splitted is at least as large ++ as split_height_threshold. ++ (Fwindow_full_width_p): New defun. ++ (syms_of_window): Defsubr it. ++ ++ * window.h: Add EXFUN for Fwindow_full_width_p. ++ ++2007-08-06 Andreas Schwab ++ ++ * window.c (Fdisplay_buffer): Use NILP. ++ (Fset_window_scroll_bars): Likewise. ++ ++2007-08-03 Richard Stallman ++ ++ * fileio.c (Fvisited_file_modtime): Use make_time. ++ ++2007-08-01 Ryo Yoshitake (tiny change) ++ ++ * mac.c (init_mac_osx_environment): Adjust load-path on self-contained ++ build. ++ ++2007-07-30 Stefan Monnier ++ ++ * eval.c (init_eval_once): Bump max_lisp_eval_depth to 400. ++ ++2007-07-25 Glenn Morris ++ ++ * Relicense all FSF files to GPLv3 or later. ++ ++ * COPYING: Switch to GPLv3. ++ ++2007-07-24 Jason Rumney ++ ++ * w32fns.c (x_real_positions): Get real position from OS instead of ++ calculating it. ++ ++2007-07-23 Jason Rumney ++ ++ * filelock.c (current_lock_owner): Allow for @ sign in username. ++ ++2007-07-20 Eli Zaretskii ++ ++ * makefile.w32-in (clean): Don't delete *~. ++ ++ * w32proc.c (IMAGE_NT_OPTIONAL_HDR32_MAGIC, IMAGE_OPTIONAL_HEADER32): ++ Define if not defined. ++ ++2007-07-18 Jason Rumney ++ ++ * w32proc.c (w32_executable_type): Handle 64 bit executables. ++ ++2007-07-16 Juanma Barranquero ++ ++ * coding.c (Ffind_operation_coding_system): ++ * eval.c (For, Fand, Fprogn): ++ * keyboard.c (Ftrack_mouse): ++ * print.c (Fwith_output_to_temp_buffer): ++ * window.c (Fsave_window_excursion): Doc fixes (some reported ++ by Johan Bockg,Ae(Brd). ++ ++2007-07-15 Richard Stallman ++ ++ * data.c (Fsetq_default): Doc fix. ++ ++ * eval.c (Fsetq): Doc fix. ++ ++2007-07-11 Jason Rumney ++ ++ * makefile.w32-in (LIBS): Include OLE32. ++ ++ * w32fns.c (w32_msg_pump) : Initialize COM. ++ (w32_msg_pump) : Uninitialize COM. ++ ++2007-06-28 YAMAMOTO Mitsuharu ++ ++ * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event): ++ Check WINDOWP before using XWINDOW. ++ ++2007-06-27 Juanma Barranquero ++>>>>>>> MERGE-SOURCE + + * Branch for 22.1. + +2007-04-24 Chong Yidong + + * xdisp.c (redisplay_window): Use BEG_UNCHANGED and END_UNCHANGED + values of the actual window. + +2007-04-23 Richard Stallman + + * process.c (Fstart_process): Doc fix. + +2007-04-23 Eli Zaretskii + + * process.c (Fstart_process): Doc fix. + +2007-04-22 Richard Stallman + + * abbrev.c (Fdefine_abbrev): Doc fix. + + * keymap.c (Fdefine_key): Minor doc fix. + +2007-04-21 Glenn Morris + + * keymap.c (Fdefine_key): Fix info ref in doc string. + +2007-04-20 Glenn Morris + + * sysdep.c (init_system_name): Don't accept localhost.localdomain. + +2007-04-19 Juanma Barranquero + + * minibuf.c (Fminibuffer_contents, Fminibuffer_contents_no_properties) + (Fminibuffer_completion_contents, Fdelete_minibuffer_contents): + Doc fixes. + +2007-04-16 Chong Yidong + + * dispnew.c (adjust_frame_glyphs_for_frame_redisplay): + Set garbaged flag in presence of window margins. + (showing_window_margins_p): New function. + + * xdisp.c (cursor_row_p): Only end row on newline if it's a + display string. Suggested by Lennart Borgman. + +2007-04-16 YAMAMOTO Mitsuharu + + * alloc.c (mem_insert): Set min_heap_address and max_heap_address + if they are not yet initialized. + +2007-04-15 Chong Yidong + + * xdisp.c (redisplay_window): When deciding whether or not to + recenter, don't use the reset values of BEG_UNCHANGED and + END_UNCHANGED. + +2007-04-13 Kim F. Storm + + * buffer.c (Fkill_buffer): gcpro BUF during kill_buffer_processes + and check that buffer is still alive upon return. + +2007-04-13 YAMAMOTO Mitsuharu + + * macterm.c [!TARGET_API_MAC_CARBON]: Include Displays.h. + (mac_screen_config_changed): New variable. + (mac_handle_dm_notification, init_dm_notification_handler) + (mac_get_screen_info): New functions. + [MAC_OS8] (main): Call init_dm_notification_handler. + (mac_initialize) [MAC_OSX]: Likewise. + (XTread_socket): Call mac_get_screen_info if screen config changed. + (mac_initialized): Make static. + (mac_initialize_display_info): Remove function. + (mac_term_init): Call mac_get_screen_info. Add partial contents of + mac_initialize_display_info. + +2007-04-12 YAMAMOTO Mitsuharu + + * mac.c (xrm_get_preference_database, Fmac_get_preference) + [TARGET_API_MAC_CARBON]: Use CFPreferencesAppSynchronize. + + * macterm.c [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event): + Use GetGlobalMouse instead of GetMouse and LocalToGlobal. + (mac_initialize_display_info) [MAC_OSX]: Use CGRectZero. + (mac_initialize_display_info) [!MAC_OSX]: dpyinfo->height and + dpyinfo->width are those of whole screen. + +2007-04-10 Chong Yidong + + * xdisp.c (note_mode_line_or_margin_highlight): Don't decrement + glyph pointer before start of glyph row. + +2007-04-09 YAMAMOTO Mitsuharu + + * s/darwin.h (__restrict, struct kboard): Remove outdated workarounds. + (C_SWITCH_SYSTEM): Remove `-I../mac/src'. + +2007-04-09 Martin Rudalics + + * indent.c (Fmove_to_column): Set next_boundary with correct start pt. + +2007-04-08 Richard Stallman + + * xdisp.c (syms_of_xdisp) : Default 100. + +2007-04-07 Chong Yidong + + * editfns.c (Ftranspose_regions): Validate interval before setting + text properties. + +2007-04-03 Eli Zaretskii + + * emacs.c (main): Fix instructions for building Emacs for profiling. + +2007-04-03 Jan Dj,Ad(Brv + + * gtkutil.c (xg_update_menubar): Call g_list_next after moving + menu bar item. + +2007-04-02 Juanma Barranquero + + * print.c (Fprin1_to_string): Use macro SPECPDL_INDEX. + +2007-04-01 Chong Yidong + + * keymap.c (Fcommand_remapping): New optional argument. + (where_is_internal): Use new keymaps argument. + (Fkey_binding): Caller changed. + + * keyboard.c (command_loop_1): Caller changed. + +2007-03-31 Eli Zaretskii + + * window.c (Fget_lru_window): Doc fix. + +2007-03-30 Chong Yidong + + * undo.c (Fprimitive_undo): Give clearer error message when trying + to change text properties outside accessible part of buffer. + +2007-03-29 Kim F. Storm + + * process.c (wait_reading_process_output) [HAVE_PTYS]: + When EIO happens, clear channel from descriptor masks before raising + SIGCHLD signal to avoid busy loop between read and sigchld_handler. + (sigchld_handler): Remove sleep (2007-03-11 & 2007-03-26 changes). + +2007-03-29 Juanma Barranquero + + * buffer.c (Fset_buffer_major_mode): Check that BUFFER is valid. + + * process.c (Fformat_network_address): Return nil when the + argument vector contains invalid values. + +2007-03-28 YAMAMOTO Mitsuharu + + * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Define USE_PTHREAD. + [USE_PTHREAD]: Include pthread.h. + (malloc_init_once_control, _malloc_mutex) [USE_PTHREAD]: New variables. + (malloc_initialize_1): New function created from __malloc_initialize. + (__malloc_initialize): Use it. + (LOCK, UNLOCK): New macros to make malloc etc. thread safe. + (_malloc_internal, _free_internal, _realloc_internal): Use them. + + * lread.c (readchar): Extend BLOCK_INPUT block to ferror/clearerr. + +2007-03-27 Juanma Barranquero + + * process.c (Fformat_network_address): Make args array big enough + to format IPv6 addresses. + +2007-03-27 Glenn Morris + + * m/hp800.h: Restore HP-UX support (removed 2007-01-29). + +2007-03-26 YAMAMOTO Mitsuharu + + * macfns.c (Fx_display_mm_height, Fx_display_mm_width): Scale whole + screen size in pixels by millimeters per pixel of main display. + + * macselect.c (get_scrap_target_type_list, x_own_selection): + Move assignments outside predicate macros. + (Vselection_converter_alist): Doc fix. + + * macterm.c (create_text_encoding_info_alist): Move assignments + outside predicate macros. + (mac_initialize_display_info) [MAC_OSX]: dpyinfo->height and + dpyinfo->width are those of whole screen. + +2007-03-26 Sam Steingold + + * process.c (sigchld_handler): Delay by 1ms instead of 1s to + alleviate sluggishness (the original problem is still fixed). + +2007-03-25 Kim F. Storm + + * intervals.c (merge_properties): Use explicit loop instead of + Fplist_member to avoid QUIT. Don't use Fcdr. + (intervals_equal): Likewise. Rewrite loop to perform length check + on the fly rather than calling Flength. Don't use Fcar. + +2007-03-24 Eli Zaretskii + + * editfns.c (Fgoto_char): Doc fix. + + * indent.c (Findent_to): Doc fix. + +2007-03-24 Chong Yidong + + * editfns.c (Ftranspose_regions): Use set_text_properties_1 + instead of Fset_text_properties to avoid GC. Signal after change. + +2007-03-24 Eli Zaretskii + + * xfns.c (Fx_show_tip): Doc fix. + + * macfns.c (Fx_show_tip): Doc fix. + + * w32fns.c (Fx_show_tip): Doc fix. + +2007-03-23 Kim F. Storm + + * intervals.c (merge_properties, intervals_equal): + Use Fplist_member instead of Fmemq to find properties. + +2007-03-23 Glenn Morris + + * unexhp9k800.c: Restore file with clarified legal status. + * m/sr2k.h: Restore since dependency unexhp9k800.c is restored. + +2007-03-22 Chong Yidong + + * widget.c (EmacsFrameSetCharSize): Catch X errors. + +2007-03-22 Kenichi Handa + + * fileio.c (Fcopy_file): Call barf_or_query_if_file_exists with + non-encoded file name. + (Frename_file): Likewise. + (Fadd_name_to_file): Likewise. + (Fmake_symbolic_link): Likewise. + +2007-03-20 YAMAMOTO Mitsuharu + + * Makefile.in (alloca.o, gtkutil.o): Depend on systime.h. + (dired.o, editfns.o, fileio.o, msdos.o): Depend on atimer.h. + (dosfns.o, window.o, fns.o, macselect.o): Depend on atimer.h and + systime.h. + (term.o, print.o, lread.o): Depend on blockinput.h, atimer.h, and + systime.h. + (macfns.o): Remove duplicate dependency on systime.h. + + * dispnew.c (Fopen_termscript): Add BLOCK_INPUT around fclose. + (Fsend_string_to_terminal): Add BLOCK_INPUT around fwrite. + + * fileio.c (do_auto_save_unwind): Add BLOCK_INPUT around fclose. + (Fdo_auto_save): Add BLOCK_INPUT around fwrite. + + * keyboard.c (record_char): Add BLOCK_INPUT around fwrite. + (Fopen_dribble_file): Add BLOCK_INPUT around fclose. + + * lread.c: Include blockinput.h. + (readchar, Fget_file_char): Add BLOCK_INPUT around getc. + (unreadchar): Add BLOCK_INPUT around ungetc. + (load_unwind): Add BLOCK_INPUT around fclose. + + * print.c: Include blockinput.h. + (Fredirect_debugging_output): Add BLOCK_INPUT around fclose. + + * process.c (Fmake_network_process) [HAVE_GETADDRINFO]: + Clear immediate_quit before calling freeaddrinfo. + Add BLOCK_INPUT around freeaddrinfo. + + * term.c: Include blockinput.h. + (write_glyphs, insert_glyphs): Add BLOCK_INPUT around fwrite. + +2007-03-19 Richard Stallman + + * keyboard.c (NUM_RECENT_KEYS): Bump up to 300. + + * buffer.c (syms_of_buffer): Doc fix. + +2007-03-18 Chong Yidong + + * image.c (pbm_load): Signal error for invalid image size. + +2007-03-18 YAMAMOTO Mitsuharu + + * macterm.c (note_mouse_movement): Don't return immediately for + LeaveNotify case. + + * macmenu.c (popup_activated_flag): New variable. + (x_activate_menubar, mac_menu_show): Set it during menu tracking. + (popup_activated): New function. + + * xdisp.c (redisplay_internal, note_mouse_highlight): + Check popup_activated for MAC_OS. + +2007-03-17 Juanma Barranquero + + * buffer.c (syms_of_buffer) : Doc fix. + Reported by Nikolaj Schumacher . + +2007-03-17 Richard Stallman + + * dired.c (file_name_completion): gcpro NAME. + +2007-03-17 Chong Yidong + + * xdisp.c (try_window_id): Increment matrix positions if the + buffer's byte count has increased, but not the character count. + +2007-03-12 Andreas Schwab + + * lisp.h: Declare check_obarray. + + * process.c (Fdelete_process): Properly handle deletion of first + element of deleted_pid_list. + (create_process): Declare pid as pid_t. + +2007-03-12 Kim F. Storm + + * process.c (sigchld_handler): Change type of pid to pid_t. + Scan deleted_pid_list explicitly to avoid using Fmember which don't + know about mark bits and make_fixnum_or_float which may malloc. + Reported by Andreas Schwab. + + * keyboard.c (read_key_sequence): Store original event into keybuf + when replaying sequence with local keymap(s) from string. + +2007-03-12 Glenn Morris + + * editfns.c (Fdecode_time, Fencode_time): Doc fix ("daylight + savings" to "daylight saving"). + +2007-03-11 Sam Steingold + + * process.c (sigchld_handler): Sleep before wait3 to avoid a busyloop. + +2007-03-11 YAMAMOTO Mitsuharu + + * macfns.c (Fx_server_vendor): Change vendor string to "Apple Inc.". + +2007-03-10 YAMAMOTO Mitsuharu + + * macterm.c [USE_CARBON_EVENTS] (mac_handle_mouse_event): + Ignore mouse wheel movement on title bar or tool bar. + +2007-03-10 Chong Yidong + + * keyboard.c (help_form_saved_window_configs): New var. + (read_char_help_form_unwind): New function. + (read_char): Don't restore window configuration if a mouse click + arrives while the help form is being displayed. + +2007-03-10 Kim F. Storm + + * xdisp.c (redisplay_window): Don't automatically select a new window + start for a contination line during mouse-click. + +2007-03-09 Jan Dj,Ad(Brv + + * xterm.c (handle_one_xevent): Ignore buttons > 3 for the tool bar. + +2007-03-09 Juanma Barranquero + + * keymap.c (Fdescribe_buffer_bindings): Check that BUFFER is valid. + +2007-03-08 Richard Stallman + + * keyboard.c (syms_of_keyboard): Doc fix. + +2007-03-08 Chong Yidong + + * minibuf.c (Ftry_completion): Don't short circuit if + completion-ignore-case is non-nil. + +2007-03-07 YAMAMOTO Mitsuharu + + * macfns.c (mac_set_scroll_bar_width, mac_frame_parm_handlers): + Undo 2006-03-06 changes. + + * macterm.c (XTset_vertical_scroll_bar) [MAC_OSX]: Don't show scroll + bar if its width is smaller than that of Aqua small scroll bar. + +2007-03-07 Stefan Monnier + + * minibuf.c (read_minibuf): Bind inhibit-read-only a bit longer so as + to handle correctly prompts with read-only property. + +2007-03-06 Jan Dj,Ad(Brv + + * sound.c (wav_play): Check header->data_length to see how much we + shall read. + (alsa_period_size): Convert ALSA period size in frames to bytes. + (alsa_write): Return if frames is zero. + +2007-03-06 Kenichi Handa + + * xselect.c (Vselection_coding_system): Documentation improved. + +2007-03-05 YAMAMOTO Mitsuharu + + * macterm.c (x_scroll_bar_create, XTread_socket): Replace #if + USE_TOOLKIT_SCROLL_BARS with #ifdef USE_TOOLKIT_SCROLL_BARS. + (x_set_window_size): Call SET_FRAME_GARBAGED. Clear window if + internal border width has changed. + + * macterm.h (struct mac_output): New member `internal_border_width'. + +2007-03-04 Richard Stallman + + * window.c (Fdisplay_buffer): Doc fix. + +2007-03-03 Glenn Morris + + * Makefile.in: Don't clear out LIB_X11_LIB, since XFT_LIBS does + not include -lX11 on Solaris. + +2007-03-02 Stuart D. Herring + + * keymap.c (Fkey_binding): Don't consider one-element lists as events. + +2007-03-01 Kenichi Handa + + * process.c (send_process_object): Check the process status and + signal an error if something is wrong. + +2007-02-28 Chong Yidong + + * insdel.c (Fcombine_after_change_execute): Return nil if + combine_after_change_buffer has been invalidated. + +2007-02-25 Dan Nicolaescu + + * m/xtensa.h: New file. + +2007-02-24 Nick Roberts + + * .gdbinit (xprintstr): Ensure GDB (> 6.6) prints symbol name + as strings and not character arrays. + +2007-02-24 YAMAMOTO Mitsuharu + + * macterm.c [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_drag) + (x_set_toolkit_scroll_bar_thumb): Add bar->min_handle as margin to + scroll bar handle size in order to avoid `scroll backward' problem. + (x_scroll_bar_create, XTset_vertical_scroll_bar) + [USE_TOOLKIT_SCROLL_BARS]: Initialize bar->min_handle. + + * macterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: + New member `min_handle'. + +2007-02-23 Kim F. Storm + + * print.c (print): Reset print_number_index if Vprint_number_table + is nil. + +2007-02-23 Eli Zaretskii + + * w32.c (stat, get_long_basename, is_unc_volume): Use _mbspbrk + instead of strpbrk. + +2007-02-23 YAMAMOTO Mitsuharu + + * macmenu.c (mac_menu_show): Call unbind_to early. Use variable + `menu_item_selection' as in W32 version. + [TARGET_API_MAC_CARBON] (mac_handle_dialog_event): Add explicit + braces to avoid ambiguous `else'. + + * macterm.c (mac_display_info_for_display): Remove function. + (mac_flush_display_optional) [USE_CG_DRAWING]: New function. + (x_redisplay_interface) [USE_CG_DRAWING]: Set it as handler for + flush_display_optional. + [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_press): + New argument MOUSE_POS. All uses changed. Set bar->dragging to + negative integer if scroll bar handle is pressed. + [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_release): + Negative bar->dragging means scroll bar handle is not dragged. + [USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_handle_drag): Get initial + offset of scroll bar handle from negative bar->dragging. + (XTread_socket) [USE_TOOLKIT_SCROLL_BARS]: Modifiers for scroll + bar click is compared against mapped one. Set down/up_modifier + for scroll bar click event with control key. + + * macterm.h (x_display_info_for_display): Remove extern. + (SCROLL_BAR_UNPACK, SET_SCROLL_BAR_CONTROL_HANDLE): Don't limit + value to be unpacked to 32-bit on LP64 model. + +2007-02-23 Kenichi Handa + + * process.c (send_process_object_unwind): New function. + (send_process_object): New function. + (Fprocess_send_region): Call send_process_object. + (Fprocess_send_string): Likewise. + +2007-02-22 Jason Rumney + + * w32menu.c (w32_menu_show): Mark the frame's menu as inactive + when popup menu finishes. + + * w32fns.c (menubar_in_use): New flag. + (w32_wnd_proc) : + Use it. + + * w32menu.c (Fx_popup_menu): Don't free menu strings here. + (w32_menu_show): Do it here instead. + + * w32fns.c (w32_wnd_proc) : Set menubar_active frame + parameter. + + * w32menu.c (current_popup_menu): Make available globally. + (menubar_selection_callback): Free menu strings before pushing the + menu event into the keyboard buffer. Remove menu_command_in_progress. + + * w32fns.c (current_popup_menu): Use from w32menu.c. + (w32_wnd_proc) : Use menubar_active + and current_popup_menu to determine whether a menubar menu has + been cancelled. + + * w32term.h (w32_output): Remove menu_command_in_progress. + +2007-02-22 Kim F. Storm + + * dispnew.c (update_frame, update_single_window): Set force_p here if + redisplay_dont_pause is set or Vredisplay_preemption_period is nil... + (update_window, update_frame_1): ... instead of here. + (update_text_area): Clear mouse face on header lines. + +2007-02-21 Kim F. Storm + + * minibuf.c (Fassoc_string): Doc fix. Allow symbol for KEY too. + +2007-02-21 YAMAMOTO Mitsuharu + + * macterm.c (WINDOW_RESOURCE, TERM_WINDOW_RESOURCE): Remove macros. + [USE_MAC_TSM] (mac_handle_text_input_event): Remove unused variable + `mapped_modifiers'. + (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1020]: Use Keyboard + Layout Services routines to get current Unicode keyboard layout. + +2007-02-20 Chong Yidong + + * frame.c (x_set_screen_gamma): Apply gamma value to the frame's + bgcolor. + +2007-02-19 Kim F. Storm + + * minibuf.c (Fassoc_string): Allow symbols as keys. + + * w32term.c (w32_set_scroll_bar_thumb): Don't resize scroll-bar + handle while dragging, except when we get close to eob. + Fix position and size calculations so we don't scroll backwards + just by clicking on the handle. + +2007-02-17 YAMAMOTO Mitsuharu + + * Makefile.in (${emacsapp}Contents/Resources/Emacs.rsrc) + [HAVE_CARBON]: Remove target. + (macosx-app) [HAVE_CARBON]: Don't depend on it. + +2007-02-17 Juanma Barranquero + + * callproc.c (syms_of_callproc) : + : + (Fgetenv_internal): Fix typos in docstrings. + + * doc.c (Fsubstitute_command_keys): Fix typo in docstring. + +2007-02-16 Andreas Schwab + + * frame.c (Fmodify_frame_parameters): Return a value. + + * editfns.c (Fformat): Add support for '+' flag. + * doprnt.c (doprnt1): Likewise. Fix overflow checking. + +2007-02-14 Chong Yidong + + * s/umips.h: Unused file removed. + +2007-02-14 Juanma Barranquero + + * xfaces.c (Fcolor_distance): Don't continue checking a color for + errors after it has been correctly parsed as an RGB list. + +2007-02-14 Jan Dj,Ad(Brv + + * xterm.c (do_ewmh_fullscreen): Also check for _NET_WM_STATE_FULLSCREEN. + +2007-02-13 YAMAMOTO Mitsuharu + + * macfns.c (Fx_focus_frame): Move current process to foreground if + it is not. + [TARGET_API_MAC_CARBON] (Fx_file_dialog): Replace #if MAC_OSX with + #ifdef MAC_OSX. + (Fmac_set_font_panel_visible_p) [USE_MAC_FONT_PANEL]: Rename from + Fmac_set_font_panel_visibility. All uses changed. Rename argument + VISIBLE to FLAG. + + * macterm.c (MakeMeTheFrontProcess) [MAC_OSX]: Remove function. + (mac_initialize) [MAC_OSX]: Call SetFrontProcess instead of + MakeMeTheFrontProcess. + +2007-02-12 Chong Yidong + + * frame.c (x_set_screen_gamma): Clear face cache. + +2007-02-11 Juanma Barranquero + + * buffer.c (Fgenerate_new_buffer_name, Fbuffer_modified_tick): + Reflow docstrings. + +2007-02-10 Eli Zaretskii + + * window.c (Fwindow_height, Fwindow_hscroll) + (Fwindow_redisplay_end_trigger, Fwindow_point, Fwindow_start) + (Fwindow_end, Fwindow_display_table, Fwindow_text_height): + Document the effect of WINDOW arg being nil. + +2007-02-08 Kim F. Storm + + * minibuf.c (read_minibuf): Fix 2007-01-30 change. + Use Qlambda as interim value of Vminibuffer_completing_file_name. + (Fcompleting_read): Use non-filename maps if value is Qlambda (or Qnil). + (syms_of_minibuf) : Document lambda. + +2007-02-07 Juanma Barranquero + + * makefile.w32-in ($(TRES)): Use literal "../nt/emacs.rc" instead + of $(ALL_DEPS). + +2007-02-07 Eli Zaretskii + + * makefile.w32-in ($(TRES)): Depend on stamp_BLD, since $(TRES) is + put into $(BLD). + +2007-02-06 Chong Yidong + + * frame.c (Fmodify_frame_parameters): Don't bind + Qinhibit_default_face_x_resources, which has no effect. + (Qinhibit_default_face_x_resources): Symbol deleted. + +2007-02-03 Eli Zaretskii + + * indent.c (Fmove_to_column): Document that the argument COLUMN is + taken from prefix numeric argument. + +2007-02-03 Juanma Barranquero + + * lread.c (syms_of_lread) : Doc fix. + +2007-01-29 Andreas Seltenreich (tiny change) + + * xterm.c [!USE_TOOLKIT_SCROLL_BARS] (x_scroll_bar_expose): + Use the foreground color of the scroll-bar face when drawing + the scroll-bar's border. + +2007-02-02 Jan Dj,Ad(Brv + + * xterm.c (do_ewmh_fullscreen): Check that what != NULL before + calling wm_supports. + +2007-02-01 Juanma Barranquero + + * lread.c (syms_of_lread) : Doc fix. + Wording by Eli Zaretskii. + +2007-01-31 Jan Dj,Ad(Brv + + * gtkutil.c (update_frame_tool_bar): Initialize h/vmargin to 0. + +2007-01-30 Richard Stallman + + * minibuf.c (read_minibuf): + Save and clear Vminibuffer_completing_file_name. + (read_minibuf_unwind): Restore it. + (Vminibuffer_completion_table, Qminibuffer_completion_table) + (Vminibuffer_completion_predicate, Qminibuffer_completion_predicate) + (Vminibuffer_completion_confirm, Qminibuffer_completion_confirm) + (Vminibuffer_completing_file_name): Definitions moved up. + +2007-01-29 Chong Yidong + + * m/hp800.h: Restore, removing HP-UX support. + +2007-01-29 Jan Dj,Ad(Brv + + * Makefile.in: Use a variable, XFT_LIBS, instead #define LIB_X11_LIB. + +2007-01-28 Richard Stallman + + * minibuf.c (Ftry_completion, Fall_completions) + (Fcompleting_read, Ftest_completion): + Rename arg ALIST or TABLE to COLLECTION. + +2007-01-27 Chong Yidong + + * unexhp9k800.c: Remove due to lack of legal papers. + + * m/sr2k.h, m/hp800.h: Remove due to dependence on above. + +2007-01-27 Eli Zaretskii + + * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector): Doc fix. + + * minibuf.c (Fcompleting_read): Doc fix. + +2007-01-26 Jan Dj,Ad(Brv + + * gtkutil.c (xg_initialize): Call XftInit if HAVE_XFT. + + * Makefile.in: Use XFT_LIBS if defined. + +2007-01-26 YAMAMOTO Mitsuharu + + * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Use + BLOCK_INPUT/UNBLOCK_INPUT. + + * blockinput.h (interrupt_input_blocked): Declare volatile. + + * keyboard.c (interrupt_input_blocked): Declare volatile. + + * syssignal.h (SIGNAL_THREAD_CHECK): Use pthread_equal. + +2007-01-24 Kim F. Storm + + * keymap.c (describe_map): Don't consider prefix keys to be shadowed. + +2007-01-23 Juanma Barranquero + + * editfns.c (Finsert_char): Doc fix. + (Fget_internal_run_time, Fdecode_time): Fix typos in docstrings. + +2007-01-22 YAMAMOTO Mitsuharu + + * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag): + Don't pass keyboard modifiers to mac_store_drag_event, but put + them as kEventParamKeyModifiers Apple event parameter. + +2007-01-21 Chong Yidong + + * xdisp.c (try_window): Revert previous change. + + * dispnew.c (update_text_area): Revert 2006-09-17 change. + Always redraw non-mode-line rows with mouse-face. + +2007-01-20 Chong Yidong + + * xdisp.c (try_window): Clear mouse-face highlights first. + + * window.c (set_window_buffer): Revert 2006-11-22 change. + +2007-01-20 Eli Zaretskii + + * .gdbinit (ppt, xtype, xmisctype, xint, xptr, xmarker, xframe) + (xbuffer, xcons, xcar, xcdr): Fix doc strings. + +2007-01-20 Chong Yidong + + * keyboard.c (read_key_sequence): Extract local map only if the + given position is in an accessible buffer region. + +2007-01-19 Nick Roberts + + * .gdbinit: Reformat documentation so that first sentence + displays properly with "help user-defined" (like apropos). + +2007-01-18 Bruno Haible (tiny change) + + * epaths.in: Move PATH_DOC from local/info to local/share/info. + +2007-01-15 YAMAMOTO Mitsuharu + + * macmenu.c (create_and_show_dialog) [TARGET_API_MAC_CARBON]: + Create movable modal window instead of movable alert window. + (create_and_show_dialog) [!MAC_OSX]: Use DeactivateControl instead + of DisableControl. + + * macselect.c (Fmac_resume_apple_event): Set error number when + descriptor type of reply is non-null. + +2007-01-14 YAMAMOTO Mitsuharu + + * macmenu.c (create_and_show_dialog) [TARGET_API_MAC_CARBON]: + Use DisableControl for disabled items. Set default button to first + enabled one. Use icon of application in execution. + +2007-01-13 Eli Zaretskii + + * process.c (Fdelete_process, Fprocess_id, sigchld_handler): + Copy PID into EMACS_INT to avoid GCC warnings. + + * fns.c (maybe_resize_hash_table): Copy new size of hash table + into EMACS_INT to avoid GCC warnings. + + * editfns.c (Fuser_uid, Fuser_real_uid): Copy values returned by + geteuid and getuid into EMACS_INT to avoid GCC warnings. + + * dired.c (Ffile_attributes): Fix last change. + +2007-01-12 Eli Zaretskii + + * dired.c (Ffile_attributes): Copy some members of `struct stat' + into int's to avoid GCC warnings about limited range of short in + arguments to FIXNUM_OVERFLOW_P. + +2007-01-12 YAMAMOTO Mitsuharu + + * macmenu.c (HAVE_DIALOGS): Define if TARGET_API_MAC_CARBON. + (mac_handle_dialog_event, install_dialog_event_handler) + (create_and_show_dialog) [TARGET_API_MAC_CARBON]: New functions. + (DIALOG_LEFT_MARGIN, DIALOG_TOP_MARGIN, DIALOG_RIGHT_MARGIN) + (DIALOG_BOTTOM_MARGIN, DIALOG_MIN_INNER_WIDTH) + (DIALOG_MAX_INNER_WIDTH, DIALOG_BUTTON_BUTTON_HORIZONTAL_SPACE) + (DIALOG_BUTTON_BUTTON_VERTICAL_SPACE, DIALOG_BUTTON_MIN_WIDTH) + (DIALOG_TEXT_MIN_HEIGHT, DIALOG_TEXT_BUTTONS_VERTICAL_SPACE) + (DIALOG_ICON_WIDTH, DIALOG_ICON_HEIGHT, DIALOG_ICON_LEFT_MARGIN) + (DIALOG_ICON_TOP_MARGIN) [TARGET_API_MAC_CARBON]: New macros. + (mac_dialog) [TARGET_API_MAC_CARBON]: Remove function. + (mac_dialog_show) [TARGET_API_MAC_CARBON]: Use create_and_show_dialog. + + * macterm.c (x_free_frame_resources) [USE_CG_DRAWING]: + Call mac_prepare_for_quickdraw. + (quit_char, make_ctrl_char) [TARGET_API_MAC_CARBON]: Move externs + outside #ifdef MAC_OSX. + (mac_quit_char_key_p) [TARGET_API_MAC_CARBON]: Move function + outside #ifdef MAC_OSX. + (mac_check_bundle) [MAC_OSX]: Remove unused function. + + * macterm.h (mac_quit_char_key_p): Move extern outside #ifdef MAC_OSX. + (HOURGLASS_WIDTH, HOURGLASS_HEIGHT): Parenthesize definitions. + +2007-01-11 Jan Dj,Ad(Brv + + * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Use pthread_equal, + block/unblock SIGIO. + +2007-01-10 Stefan Monnier + + * editfns.c (Fformat): Allow integer-format to work with floats of size + larger than most-positive-fixnum (but still smaller than MAXINT). + + * dired.c (Ffile_attributes): Use floats for large uids/gids. + +2007-01-09 Eli Zaretskii + + * emacs.c (syms_of_emacs) : Doc fix. + +2007-01-09 YAMAMOTO Mitsuharu + + * callproc.c (Fcall_process_region) [HAVE_MKSTEMP]: Add BLOCK_INPUT + around mkstemp. + + * image.c (XDrawLine) [MAC_OS]: Remove macro. + (XCreateGC_pixmap) [!HAVE_NTGUI]: Likewise. + (x_disable_image) [!HAVE_NTGUI]: Use XCreateGC instead of + XCreateGC_pixmap. + + * macgui.h (Display): Typedef to opaque type. + + * macmenu.c (mac_dialog_modal_filter) [MAC_OSX]: New function. + (Fx_popup_dialog) [MAC_OSX]: Use standard alert if called from + Fmessage_box, Fyes_or_no_p, or Fy_or_n_p. + [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030] (menu_quit_handler): + Use mac_quit_char_key_p. + + * macterm.c (XDrawLine): Rename from mac_draw_line_to_pixmap. + (XCreateGC): Change type of 2nd argument to void *. + (XFreeGC) [USE_CG_DRAWING && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: + Fix last change. + (mac_to_emacs_modifiers): Change return type to int. + [USE_CARBON_EVENTS] (mac_event_to_emacs_modifiers): Likewise. + (mac_mapped_modifiers): New function. + (XTread_socket): Use it. + [USE_TSM] (mac_handle_text_input_event): Likewise. + (do_window_update) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw. + (mac_quit_char_modifiers, mac_quit_char_keycode) [MAC_OSX]: + Remove variables. + (mac_determine_quit_char_modifiers, init_quit_char_handler) + [MAC_OSX]: Remove functions. + (make_ctrl_char) [MAC_OSX]: Add extern. + (mac_quit_char_key_p) [MAC_OSX]: New function. + (mac_initialize) [MAC_OSX]: Don't call init_quit_char_handler. + + * macterm.h (FONT_MAX_WIDTH): Remove unused macro. + (XCreateGC): Change type in extern. + (XDrawLine): Rename from mac_draw_line_to_pixmap. + (mac_quit_char_key_p) [MAC_OSX]: Add extern. + +2007-01-08 Jan Dj,Ad(Brv + + * keyboard.c (init_keyboard): Initialize interrupt_input_blocked and + interrupt_input_pending. + + * xterm.h (x_display_info): New: net_supported_atoms, + nr_net_supported_atoms and net_supported_window. + + * xterm.c (last_user_time): New variable. + (handle_one_xevent): Set last_user_time from events that have Time. + Set net_supported_window to 0 when reparented. + (wm_supports): New function. + (do_ewmh_fullscreen): Use wm_supports to check for _NET_WM_STATE. + (x_term_init): Initialize net_supported_atoms, nr_net_supported_atoms + and net_supported_window. + +2007-01-05 Kim F. Storm + + * indent.c (Fvertical_motion): Fix it overshoot check for overlay + strings without embedded newlines immediately followed by newline. + +2007-01-05 YAMAMOTO Mitsuharu + + * editfns.c (Fformat_time_string, Fdecode_time, Fencode_time) + (Fcurrent_time_string, Fcurrent_time_zone): Add BLOCK_INPUT around + gmtime/localtime/emacs_memftimeu/mktime. + + * mac.c (Fmac_set_file_creator): Use MAC_EMACS_CREATOR_CODE + instead of 'EMAx'. + [!MAC_OSX] (sys_open, sys_creat, sys_fopen): Likewise. + + * macgui.h (struct _XGC) [USE_CG_DRAWING + && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: New members cg_fore_color + and cg_back_color. + + * macmenu.c (Vshow_help_function) [TARGET_API_MAC_CARBON]: Add extern. + (restore_show_help_function, menu_target_item_handler) + [TARGET_API_MAC_CARBON]: New functions. + (install_menu_target_item_handler): New function. + (add_menu_item) [TARGET_API_MAC_CARBON]: Set help string as menu + item property. + + * macterm.c (CG_SET_FILL_COLOR_MAYBE_WITH_CGCOLOR) + (CG_SET_FILL_COLOR_WITH_GC_FOREGROUND) + (CG_SET_FILL_COLOR_WITH_GC_BACKGROUND) + (CG_SET_STROKE_COLOR_MAYBE_WITH_CGCOLOR) + (CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND): New macros. + (mac_cg_color_space_rgb) [USE_CG_DRAWING]: New variable. + (mac_cg_color_black) [USE_CG_DRAWING + && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: New variable. + (init_cg_color) [USE_CG_DRAWING]: New function. + (mac_draw_line, mac_draw_rectangle) [USE_CG_DRAWING]: Use + CG_SET_STROKE_COLOR_WITH_GC_FOREGROUND instead of CG_SET_STROKE_COLOR. + (mac_erase_rectangle, mac_clear_window, mac_draw_cg_image) + (mac_fill_rectangle, mac_draw_image_string_cg) [USE_CG_DRAWING]: + Use CG_SET_FILL_COLOR_WITH_GC_FOREGROUND or + CG_SET_FILL_COLOR_WITH_GC_BACKGROUND instead of CG_SET_FILL_COLOR. + (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Likewise. + (XCreateGC, XFreeGC, XSetForeground, XSetBackground) [USE_CG_DRAWING + && MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Use gc->cg_fore_color and/or + gc->cg_back_color. + (install_drag_handler, remove_drag_handler): Make extern. + (install_menu_target_item_handler): Add extern. + (install_window_handler): Call install_menu_target_item_handler. + [MAC_OS8] (main): Use MAC_EMACS_CREATOR_CODE instead of 'EMAx'. + (mac_initialize) [USE_CG_DRAWING]: Call init_cg_color. + + * macterm.h (MAC_EMACS_CREATOR_CODE): New enumerator. + +2007-01-04 Juanma Barranquero + + * window.c (Fwindow_end): Fix use of >= operator. + +2007-01-03 Richard Stallman + + * window.c (Fwindow_end): Check BUF_OVERLAY_MODIFF like BUF_MODIFF. + +2007-01-02 Jan Dj,Ad(Brv + + * gtkutil.h (xg_menu_item_cb_data_): Remove highlight_id and + unhighlight_id. + + * gtkutil.c (menuitem_highlight_callback): Invoked widget is the + parent of the menu item. Get menu item widget from event. + (xg_create_one_menuitem, xg_update_menu_item): highlight_id and + unhighlight_id has been removed. + (create_menus): Connect enter/leave-notify-event to the menu instead + of individual items. + +2006-12-31 Jan Dj,Ad(Brv + + * gtkutil.c (update_frame_tool_bar): Connect create-menu-proxy with + xg_tool_bar_menu_proxy. + (xg_tool_bar_menu_proxy): New function. + (xg_tool_bar_proxy_callback): New function. + +2006-12-30 Jan Dj,Ad(Brv + + * gtkutil.c (xg_tool_bar_button_cb): Save last modifier on widget. + (xg_tool_bar_callback): Remove check for button. + (update_frame_tool_bar): Put an event box in the tool bar and a button + in the event box. Attach enter/leave-notify-event to the event box. + +2006-12-30 Richard Stallman + + * keymap.c (Fdefine_key): Doc fix. + +2006-12-29 Kim F. Storm + + * frame.h (struct frame): New member minimize_tool_bar_window_p. + + * xdisp.c (auto_resize_tool_bars_p): Replace with ... + (Vauto_resize_tool_bars): ... this. + (syms_of_xdisp): DEFVAR_LISP and initialize it. Update doc string + to describe new value `grow-only', and use of C-l. + (display_tool_bar_line): Only use default face for border below + toolbar if not grow-only (to get acceptable visual appearence). + Explicitly set visible_height for empty toolbar lines. + (redisplay_tool_bar): Handle `grow-only' setting. Check and clear + minimize_tool_bar_window_p flag. + + * window.c (Frecenter): Set minimize_tool_bar_window_p flag + when called without arg to redraw with minimum toolbar height. + Update doc string. + +2006-12-29 Jason Rumney + + * s/ms-w32.h (tzname): Do not define in msvc8. + (utime): Do not define in msvc8. + + * regex.c (regerror): Change parameter name err_code. + +2006-12-26 Richard Stallman + + * search.c (Fsearch_forward): Doc fix. + + * callint.c (Finteractive): Doc fix. + +2006-12-25 Kim F. Storm + + * s/ms-w32.h (BROKEN_DATAGRAM_SOCKETS): Define it. + +2006-12-23 Eli Zaretskii + + * keyboard.c (some_mouse_moved): Fix last change. + +2006-12-22 Eli Zaretskii + + * callproc.c (syms_of_callproc) : Doc fix. + +2006-12-22 Mark Davies + + * m/amdx86-64.h, m/hp800.h: Add support for NetBSD. + * m/sh3el.h: New file. + +2006-12-22 Eli Zaretskii + + * makefile.w32-in (emacs, temacs): Depend on stamp_BLD instead of + $(BLD). + ($(OBJ0) $(OBJ1) $(WIN32OBJ)): New dependency on stamp_BLD. + (bootstrap-temacs): Pass $(XMFLAGS) to sub-make. + ($(OBJ0) $(OBJ1) $(WIN32OBJ)): Add lastfile.$(O) and firstfile.$(O). + (clean): Delete stamp_BLD. + +2006-12-22 YAMAMOTO Mitsuharu + + * macfns.c (mac_update_title_bar) [TARGET_API_MAC_CARBON]: + Call mac_update_proxy_icon also when buffer modification flag changed. + [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): Don't update alias, + but compare FSRef/FSSpec of resolved alias. + +2006-12-21 Kim F. Storm + + * w32.c (_sys_wait_accept): Fix handle leak. + +2006-12-20 Jan Dj,Ad(Brv + + * sound.c: Include if ALSA_SUBDIR_INCLUDE is + defined. + +2006-12-20 Kim F. Storm + + * s/ms-w32.h (BROKEN_NON_BLOCKING_CONNECT): Define it. + +2006-12-19 Juanma Barranquero + + * keyboard.c (syms_of_keyboard) : + * mac.c (Fmac_code_convert_string): + * search.c (Fsearch_forward): Doc fixes. + +2006-12-19 Kim F. Storm + + Rework 2006-12-04 change. A SIGUSR1 (SIGUSR2) signal now generates + a sigusr1 event instead of [signal usr1] sequence, and signal events + are now supposed to be handled via special-event-map. + + * keyboard.c (kbd_buffer_store_event_hold): Undo 2006-12-04 change. + (make_lispy_event): Don't generate Qsignal prefix for code 0. + Abort if signal code is unknown. + (store_user_signal_events): Don't make Qsignal prefix (code 0). + (Qsignal): Move declaration back to process.c. + (syms_of_keyboard): Don't intern or staticpro it here. + + * process.c (Qsignal): Declare here. + (syms_of_process): Intern or staticpro it. + + * emacs.c (main): Rename user signals to sigusr1 and sigusr2. + + * .gdbinit: Pass on SIGUSR1 and SIGUSR2 to Emacs. + +2006-12-19 Juanma Barranquero + + * buffer.c (syms_of_buffer) : + : Doc fixes. + +2006-12-17 Richard Stallman + + * fileio.c (Fread_file_name_internal): Pass Vread_file_name_predicate + to Ffile_name_completion. + + * dired.c (file_name_completion): New arg PREDICATE. Some cleanup. + (Ffile_name_completion): New arg PREDICATE. + +2006-12-17 Juanma Barranquero + + * buffer.c (Fkill_buffer): Doc fix. + (syms_of_buffer) : Doc fix. + +2006-12-16 Juanma Barranquero + + * minibuf.c (Ftry_completion): Check that obarray buckets are symbols. + +2006-12-16 Eli Zaretskii + + * w32fns.c (w32-window-exists-p): New function. + (syms_of_w32fns): Defsubr it. + + * prefix-args.c [STDC_HEADERS]: Include stdlib.h. + +2006-12-16 Juanma Barranquero + + * minibuf.c (Ftry_completion): Use `check_obarray' if ALIST is a vector. + +2006-12-15 Eli Zaretskii + + * emacs.c (USAGE3): Clarify documentation of --color. + +2006-12-15 YAMAMOTO Mitsuharu + + * mac.c (wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: + New variable. + (ENABLE_WAKEUP_FROM_RNE, DISABLE_WAKEUP_FROM_RNE): New macros. + [!MAC_OSX] (select): Use them. + [MAC_OSX] (select_and_poll_event, sys_select): Likewise. + (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: New function. + + * macfns.c (mac_atsu_font_face_attributes) [USE_ATSUI]: Add extern. + (Fmac_atsu_font_face_attributes) [USE_ATSUI]: New function. + (syms_of_macfns) [USE_ATSUI]: Defsubr it. + + * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag): + Use mac_wakeup_from_rne instead of mac_post_mouse_moved_event. + + * macterm.c (mac_query_char_extents) [USE_ATSUI]: Don't call + ATSUGetGlyphBounds if not necessary. + (Vmac_atsu_font_table) [USE_ATSUI]: Remove variable. + (syms_of_macterm) [USE_ATSUI]: Don't defvar it. + (fm_get_style_from_font, atsu_find_font_from_family_name) + (atsu_find_font_family_name, mac_atsu_font_face_attributes) + [USE_ATSUI]: New functions. + (init_font_name_table) [USE_ATSUI]: Use atsu_find_font_family_name. + (mac_load_query_font) [USE_ATSUI]: Use atsu_find_font_from_family_name. + Don't get metrics for Latin-1 right half characters. + (mac_load_query_font): Don't load font if space width is not positive. + [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event): + Use mac_wakeup_from_rne instead of mac_post_mouse_moved_event. + (XTread_socket): Call SelectWindow when unfocused frame is clicked. + + * macterm.h (mac_wakeup_from_rne) [TARGET_API_MAC_CARBON]: Add extern. + +2006-12-15 Kim F. Storm + + * keyboard.c (ignore_mouse_drag_p): New global var. + (some_mouse_moved): Return 0 if it is non-zero. + (make_lispy_event): Generate click event on mouse up if + ignore_mouse_drag_p is non-zero, even if mouse moved. + Clear ignore_mouse_drag_p on mouse down/up. + + * xdisp.c (redisplay_window): Set ignore_mouse_drag_p if tool-bar + is resized to avoid generating a mouse drag event. + +2006-12-14 Juanma Barranquero + + * w32fns.c (w32_wnd_proc): Force non-tooltip frames to respect the + minimum tracking size. Remove non-working old hack to do the same. + +2006-12-14 YAMAMOTO Mitsuharu + + * emacs.c (handle_user_signal): Move function to keyboard.c. + (main): Use add_user_signal for SIGUSR1 and SIGUSR2. + + * keyboard.c (make_lispy_event): Use find_user_signal_name. + (read_avail_input): Store pending user signal events. + (struct user_signal_info): New struct. + (user_signals): New variable. + (add_user_signal, store_user_signal_events) + (find_user_signal_name): New functions. + (handle_user_signal): Move function from emacs.c. Don't store + USER_SIGNAL_EVENT here, but increment number of pending signals. + + * keyboard.h (add_user_signals): Add extern. + +2006-12-11 Juanma Barranquero + + * buffer.c (syms_of_buffer) : + : + : Doc fixes. + + * xdisp.c (syms_of_xdisp) : Doc fix. + +2006-12-10 Kim F. Storm + + * xdisp.c (show_mouse_face): Never use text cursor in tool-bar. + +2006-12-10 Juanma Barranquero + + * abbrev.c (syms_of_abbrev) : + * buffer.c (syms_of_buffer) : + * keymap.c (Flookup_key): + * lread.c (Feval_buffer, Feval_region): + * macterm.c (syms_of_macterm) : + : + * marker.c (Fmarker_insertion_type): + * minibuf.c (syms_of_minibuf) : + * msdos.c (syms_of_msdos) : + * w32term.c (syms_of_w32term) : + : + * xdisp.c (format-mode-line): + * xterm.c (syms_of_xterm) : + : Doc fixes. + +2006-12-10 Andreas Schwab + + * systime.h (EMACS_GET_TIME): Remove check for + HAVE_STRUCT_TIMEZONE which is never defined. + +2006-12-10 Alan Mackenzie + + * syntax.c (Fpartial_parse_sexp): Correct Docco: Elt 8 of the + result is now neither the last elt nor optional for OLDSTATE. + +2006-12-09 Eli Zaretskii + + * process.c (Fsignal_process): Doc fix. Use XFLOAT_DATA to + extract the process ID from a Lisp float. + +2006-12-09 Chong Yidong + + * xterm.c (XTframe_raise_lower): Comment out _NET_ACTIVE_WINDOW code. + +2006-12-08 Eli Zaretskii + + * frame.h (PIX_TYPE): Redefine as `unsigned long', for 64-bit + platforms where long is 64-bit. + + * msdos.h (PIX_TYPE): Redefine as `unsigned long'. + +2006-12-08 NAKAJI Hiroyuki (tiny change) + + * m/amdx86-64.h: Add support for Solaris 10 on x86-64. + +2006-12-08 Kenichi Handa + + * xterm.c (x_query_font): Use xstricmp instead off strcasecmp. + +2006-12-08 Juanma Barranquero + + * emacs.c (syms_of_emacs) : Doc fix. + +2006-12-07 Kim F. Storm + + * process.c (parse_signal): Use xstricmp instead of strcasecmp. + (Fsignal_process): Don't use strncasecmp. + +2006-12-05 Glenn Morris + + * abbrev.c (Qforce): New Lisp_Object. + (Fdefine_abbrev): Do not overwrite non-system abbrevs with system + abbrevs, unless 'force is applied. + (syms_of_abbrev): Add Qforce. + +2006-12-04 Kim F. Storm + + * process.c (parse_signal): Rename macro from handle_signal. + (Fsignal_process): Also accept lower-case variants of signal + names (to align with signal names generated by Emacs itself). + + * emacs.c (handle_USR1_signal, handle_USR2_signal): Replace by... + (handle_user_signal): ... this, which generates two USER_SIGNAL_EVENTs + first with code == 0 [signal] and one with code == sig number. + (main): Use it as handler for SIGUR1 and SIGUSR2. + + * keyboard.c (kbd_buffer_store_event_hold): Don't throw-on-input + if first event in [signal xxx] sequence. + (lispy_user_signals, Qusr1_signal, Qusr2_signal): Remove. + (syms_of_keyboard): Don't intern and staticpro them. + (Qsignal): Declare here. + (syms_of_keyboard): Intern and staticpro it. + (make_lispy_event): Use it. Intern symbols on the fly for other + USER_SIGNAL_EVENTs events. + + * process.c (Qsignal): Declare extern. + (syms_of_process): Don't intern/staticpro it here. + + * process.c (read_process_output): Abort if carryover < 0. + +2006-12-04 YAMAMOTO Mitsuharu + + * config.in: Regenerate. + + * fileio.c [__NetBSD__]: Don't define `unix'. + (Funix_sync, syms_of_fileio): Use `#ifdef HAVE_SYNC' instead of + `#ifdef unix'. + +2006-12-04 Glenn Morris + + * Makefile.in (version): New variable, set by configure. + (bootstrapclean, mostlyclean): Also remove emacs-${version}. + +2006-12-03 Jan Dj,Ad(Brv + + * gtkutil.c (update_frame_tool_bar): Handle modifying a toolbar item + without an image. + +2006-12-01 Eli Zaretskii + + * w32fns.c (Fw32_shell_execute): Doc fix. + +2006-11-30 Chong Yidong + + * xdisp.c (move_it_to): Correctly count tab glyphs for continued + lines ending in tab. + +2006-11-30 Jan Dj,Ad(Brv + + * xterm.c (x_raise_frame): Move setting of _NET_ACTIVE_WINDOW + property ... + (XTframe_raise_lower): ... to here. + +2006-11-30 Kenichi Handa + + * regex.c (regex_compile): Fix previous change. + +2006-11-29 Juanma Barranquero + + * sound.c (Fplay_sound_internal): Remove spurious newline in docstring. + +2006-11-28 Chong Yidong + + * config.in: Regenerate. + +2006-11-28 Kenichi Handa + + * regex.c (regex_compile): Don't call SET_LIST_BIT with a + multibyte character. + +2006-11-27 Chong Yidong + + * s/aix4-2.h: Undefine _NO_PROTO. Suggested by Joe Buehler. + +2006-11-27 Kim F. Storm + + * window.c (set_window_buffer): Refactor recent changes. + +2006-11-27 Jason Rumney + + * w32term.c (w32_msg_worker): Declare correctly. + (w32_initialize): Don't cast w32_msg_worker. + + * w32fns.c (w32_msg_worker): Define as WINAPI and arg as void pointer. + +2006-11-26 Chong Yidong + + * m/amdx86-64.h: Look for standard libs in /usr/lib64 only if that + directory exists. + +2006-11-25 Eli Zaretskii + + * w16select.c (Fw16_set_clipboard_data): Fix the call to sit_for + as per the calling sequence change on 2006-07-11. + +2006-11-25 Chong Yidong + + * window.c (set_window_buffer): Use BLOCK_INPUT. + +2006-11-24 Juanma Barranquero + + * fns.c (substring_both): Add missing address operator. + +2006-11-24 Stefan Monnier + + * fns.c: Use AREF/ASIZE macros. + (concat): Provide the full ANSI prototype. + +2006-11-24 Juanma Barranquero + + * buffer.c (syms_of_buffer) : Doc fix. + +2006-11-23 William Smith (tiny change) + + * strftime.c (HAVE_SYS__MBSTATE_T_H): Fix typo. + +2006-11-22 Alfred M. Szmidt (tiny change) + + * s/openbsd.h (LD_SWITCH_SYSTEM): Remove /usr/pkg/lib and + /usr/pkg/lib from the library search path. + (LD_SWITCH_X_DEFAULT): New macro. + +2006-11-22 Chong Yidong + + * window.c (set_window_buffer): Clear mouse highlight if it is in + this window. + +2006-11-21 Chong Yidong + + * xfaces.c (realize_default_face): Check if the default font name + exists on this display before trying to use it. + +2006-11-21 Richard Stallman + + * fileio.c: Break line before &&, not after. + +2006-11-20 Eli Zaretskii + + * fns.c (concat) [!__GNUC__]: Add prototype. + +2006-11-20 Kenichi Handa + + * fileio.c (Fread_file_name_internal): Use SBYTES (not SCHARS) to + check the tailing slash of a filename. + +2006-11-20 KOBAYASHI Yasuhiro (tiny change) + + * indent.c (Fvertical_motion): Include composition in the case of + overshoot expected. + +2006-11-19 Andreas Schwab + + * xfaces.c (Fdisplay_supports_face_attributes_p): Initialize supports. + + * xmenu.c (Fx_popup_menu): Initialize selection. + +2006-11-18 Andreas Schwab + + * s/gnu-linux.h (GC_MARK_SECONDARY_STACK): Update call to mark_memory. + +2006-11-17 Tetsurou Okazaki (tiny change) + + * xterm.c (do_ewmh_fullscreen): Declare variable before XSETFRAME + to avoid gcc 2.96 error. + +2006-11-17 NIIMI Satoshi (tiny change) + + * search.c (simple_search): In the loop of backward searching, + check also the byte position against the limit. + +2006-11-14 Romain Francoise + + * minibuf.c (Fcompleting_read): Fix typo in docstring. + +2006-11-14 Kenichi Handa + + * coding.c (code_convert_region): Initialize coding->heading_ascii. + (decode_coding_string, code_convert_region): Likewise. + +2006-11-14 YAMAMOTO Mitsuharu + + * config.in: Regenerate. + + * macfns.c (Fx_display_mm_height, Fx_display_mm_width) + [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 + && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if + CGDisplayScreenSize is available. + + * macmenu.c (menu_quit_handler, install_menu_quit_handler): + Replace `#ifdef HAVE_CANCELMENUTRACKING' with + `#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030'. + (install_menu_quit_handler) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 + && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if + CancelMenuTracking is available. + + * macterm.c [USE_CG_TEXT_DRAWING] (mac_draw_image_string_cg) + [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 + && MAC_OS_X_VERSION_MIN_REQUIRED == 1020]: Check if + CGContextShowGlyphsWithAdvances is available. + +2006-11-13 Jason Rumney + + * s/ms-w32.h: Define HAVE_INET_SOCKETS. + +2006-11-13 Nozomu Ando + + * alloc.c (mark_memory): New argument OFFSET. All uses changed. + Fix address calculations for case END < START. + (mark_stack): Impose Lisp_Object alignment on jmp_buf. + +2006-11-12 Juanma Barranquero + + * coding.c (Fencode_sjis_char, Fencode_big5_char): + Improve argument/docstring consistency. + + * editfns.c (Fmessage): Doc fixes. + + * process.c (syms_of_process) : Doc fix. + +2006-11-12 Chong Yidong + + * xmenu.c (popup_activated): Define outside HAVE_MENUS. + +2006-11-12 Romain Francoise + + * xselect.c (selection-coding-system): Fix docstring. + +2006-11-12 Juanma Barranquero + + * category.c (Fchar_category_set): Improve arg/docstring consistency. + + * data.c (Flogxor): + * fns.c (Frandom, Flength, Fsafe_length, Fstring_bytes) + (Fstring_equal, Fcompare_strings, Fstring_lessp, Fcopy_sequence) + (Fstring_make_unibyte): Fix typos in docstrings. + +2006-11-10 Jan Dj,Ad(Brv + + * xterm.h (struct x_display_info): Fix indentation. + + * xterm.c (do_ewmh_fullscreen, XTfullscreen_hook): New functions. + (x_check_fullscreen): Call do_ewmh_fullscreen. + (x_initialize): Set fullscreen_hook to XTfullscreen_hook. + + * frame.c (x_set_fullscreen): Call fullscreen_hook if set. + + * term.c: Define fullscreen_hook. + (syms_of_term): Initialize fullscreen_hook to NULL. + + * termhooks.h: Add fullscreen_hook. + +2006-11-08 Juanma Barranquero + + * bytecode.c (Fbyte_code): + * data.c (Fmakunbound): Use SYMBOL_CONSTANT_P macro. + +2006-11-06 Juanma Barranquero + + * lread.c (syms_of_lread): + * xsmfns.c (syms_of_xsmfns): Fix typo in docstring. + +2006-11-06 Martin Rudalics + + * macmenu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS. + + * w32menu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS. + Return nil if building without menus. + + * xmenu.c (Fmenu_or_popup_active_p): Define outside HAVE_MENUS. + Return nil if building without menus. + +2006-11-05 Mark Davies (tiny change) + + * s/netbsd.h (POSIX_SIGNALS): Define. + +2006-11-05 Martin Rudalics + + * macmenu.c (Fmenu_or_popup_active_p): New function. + (syms_of_macmenu): Defsubr it. + + * w32menu.c (Fmenu_or_popup_active_p): New function. + (syms_of_w32menu): Defsubr it. + (popup_activated_flag, popup_activated): Remove. + + * xdisp.c (note_mouse_highlight) [HAVE_NTGUI]: Don't bother to + check popup_activated. + + * xmenu.c (Fmenu_or_popup_active_p): New function. + (syms_of_xmenu): Defsubr it. + +2006-11-05 YAMAMOTO Mitsuharu + + * unexmacosx.c (malloc_cookie): Remove unused variable. + (region_list_head, region_list_tail, lca, nlc, infile_lc_highest_addr) + (text_seg_lowest_offset, mh, curr_header_offset, infd, outfd) + (emacs_zone, data_segment_old_fileoff, data_segment_scp) + (num_unexec_regions, unexec_regions): Make variables static. + (print_regions, find_emacs_zone_regions): Make static. + (unexec_region_info): New typedef. + (unexec_regions): Change type from vm_range_t[] to unexec_region_info[]. + All uses changed. + (unexec_regions_recorder): Subtract size of trailing null pages from + filesize. Show filesize. + (unexec_regions_merge): Don't merge if null pages of preceding region + is not too small. Use long format in printf. + (copy_segment, copy_data_segment): Show filesize. + (copy_data_segment): Write filesize bytes of region data. + Adjust filesize in segment command accordingly. + (dump_it): Use long format in printf. + +2006-11-05 Juanma Barranquero + + * dosfns.c (Finsert_startup_screen): + * fns.c (Ffeaturep, syms_of_fns): + * frame.c (syms_of_frame): Fix typos in docstrings. + + * unexcw.c (unexec): Fix typo in output message. + +2006-11-04 Ralf Angeli + + * w32fns.c (w32_createwindow): Remove code for handling -geometry + command line option and `initial-frame-alist' which is superfluous + after the last change to `w32_createwindow'. + +2006-11-04 Slawomir Nowaczyk (tiny change) + + * w32proc.c (sys_wait): Only wait for processes with fd<0. + Others should be handled by sys_select instead. Fixes problems + with (progn (start-process "" nil "ls") (call-process "ls")). + +2006-11-04 Giorgos Keramidas (tiny change) + + * xmenu.c (Fmenu_bar_open): Declare variable before BLOCK_INPUT to + avoid gcc 2.95 error. + +2006-11-04 Chong Yidong + + * gtkutil.c (update_frame_tool_bar): If icon image is invalid and + wicon is null, insert an empty button. + +2006-11-03 Jan Dj,Ad(Brv + + * xterm.c (x_raise_frame): Send _NET_ACTIVE_WINDOW when raising the + window. + +2006-11-02 Juanma Barranquero + + * emacs.c (Fkill_emacs): Fix typo in docstring. + +2006-11-02 Nozomu Ando + + * unexmacosx.c (mach_header, segment_command, vm_region, section) + [_LP64]: New defines. + (VM_REGION_BASIC_INFO_COUNT, VM_REGION_BASIC_INFO, LC_SEGMENT) + (MH_MAGIC) [_LP64]: Redefine. + (delta): Remove variable. + (curr_file_offset, pagesize): New variables. + (ROUNDUP_TO_PAGE_BOUNDARY): New macro. + (data_segment_old_fileoff): Initialize explicitly. + (print_region, unexec_regions_recorder, print_load_command_name) + (copy_segment, copy_data_segment): Use long format in printf. + (MAX_UNEXEC_REGIONS): Increase to 400. + (unexec_regions_recorder): Don't warn too many regions here. + (find_emacs_zone_regions): Warn too many regions here. + (print_load_command_name) [_LP64]: Show correct load command name. + (copy_segment, copy_data_segment): Use variable `curr_file_offset'. + Show starting virtual memory address. Don't show ending file offset. + (copy_symtab, copy_dysymtab, copy_twolevelhints): New argument DELTA. + (dump_it): Use new local variable `linkedit_delta' and pass to them. + Error if trying to handle multiple DATA segments. + (unexec): Initialize variable `pagesize'. + +2006-11-01 Juanma Barranquero + + * eval.c (Fcatch): Doc fix. + +2006-10-31 YAMAMOTO Mitsuharu + + * image.c [MAC_OS] (image_load_qt_1, xpm_scan, xpm_make_color_table_v) + (xpm_put_color_table_v, xpm_get_color_table_v, xpm_make_color_table_h) + (xpm_put_color_table_h, xpm_get_color_table_h, xpm_str_to_color_key) + (xpm_load_image): Add const qualifier to arguments. + [MAC_OS] (xpm_color_key_strings): Make static const. + + * mac.c (create_apple_event_from_event_ref) + (create_apple_event_from_drag_ref, skip_white_space, parse_comment) + (parse_include_file, parse_binding, parse_component) + (parse_resource_name, parse_value, parse_resource_line) + (xrm_merge_string_database, xrm_get_resource) + (xrm_get_preference_database): Add const qualifier to arguments. + [MAC_OSX] (sys_select): Make variable `context' static const. + + * macfns.c (mac_color_map): Make static const. + (mac_color_map_lookup): Add const qualifier to arguments. + + * macmenu.c (install_menu_quit_handler): Make variable `typesList' + static const. + (name_is_separator): Add const qualifier to arguments. + + * macselect.c (init_service_handler): Make variable `specs' static + const. + + * macterm.c (mac_create_bitmap_from_bitmap_data): Make variable + `swap_nibbles' static const. + (atsu_get_text_layout_with_text_ptr): Make variables `lengths', + `tags', `sizes', `values' static const. + (mac_draw_string_common): Make variables `context' static. + Make variables `tags', `sizes', and `values' static const. + (pcm_get_status, x_detect_focus_change, x_scroll_bar_handle_click) + (xlfdpat_create, xlfdpat_block_match_1, xlfdpat_match) + (mac_to_x_fontname, parse_x_font_name, add_mac_font_name) + (mac_do_list_fonts, is_fully_specified_xlfd, do_grow_window) + (mac_store_event_ref_as_apple_event, mac_make_rdb): Add const + qualifier to arguments. + (xlfd_scalable_fields, keycode_to_xkeysym_table) + (fn_keycode_to_keycode_table): Make static const. + (mac_load_query_font): Make variables `tags', `sizes', `values', + `types', and `selectors' static const. + (mac_handle_command_event, mac_handle_window_event): + Make variables `names' and `types' static const. + (init_command_handler, install_window_handler): Make variables + `specs*' static const. + (mac_handle_font_event, mac_handle_text_input_event) + (mac_store_service_event): Make variables `names' and `types' + const. Make variables `names_*' and `types_*' static const. + + * macterm.h (create_apple_event_from_event_ref) + (create_apple_event_from_drag_ref, xrm_merge_string_database) + (xrm_get_resource, xrm_get_preference_database): Add const + qualifier to arguments in externs. + +2006-10-31 Kenichi Handa + + * xfns.c (xic_create_xfontset): Fix previous change. + +2006-10-30 Chong Yidong + + * s/openbsd.h (LD_SWITCH_SYSTEM): Add /usr/pkg/lib and + /usr/pkg/lib to library search path. + +2006-10-29 Mark Davies (tiny change) + + * ralloc.c (relinquish): Use a long for excess space counter to + handle 64-bit case correctly. + +2006-10-29 Jeramey Crawford + + * m/amdx86-64.h: Add defines for OpenBSD x86-64. + +2006-10-29 Juanma Barranquero + + * window.c (Fdisplay_buffer): Fix typo in docstring. + +2006-10-27 Ben North (tiny change) + + * w32term.c (x_draw_glyph_string_foreground): Set background mode + to TRANSPARENT before using overstrike to simulate bold faces. + + * xfaces.c (best_matching_font): Fix logic to decide whether to + use overstriking to simulate bold-face (it was reversed). + +2006-10-23 Kim F. Storm + + * xdisp.c (remember_mouse_glyph): Do nothing if glyphs are not + initialized. + + * keyboard.c (read_char): Make an element (t . EVENT) in + unread-command-events add EVENT to the current command's key sequence. + (syms_of_keyboard) : Update doc. + +2006-10-21 Richard Stallman + + * minibuf.c (Vread_expression_map): Define here. + (Qread_expression_history): New variable. + (syms_of_minibuf): Initialize them. + (Feval_minibuffer): Use Vread_expression_map and + Qread_expression_history. + +2006-10-21 Kenichi Handa + + * xfns.c (xic_create_fontsetname): If ADSTYLE field is not a wild + card, change it to "*". + (xic_create_xfontset): Call XCreateFontSet for each single + fontname in fontsetname. + +2006-10-19 Chong Yidong + + * callint.c (callint_message): Convert to a Lisp string. + (syms_of_callint): Initialize it. + (callint_message_size): Var deleted. + (Fcall_interactively): Use Fformat instead of doprnt to construct + prompt string. + +2006-10-19 YAMAMOTO Mitsuharu + + * xdisp.c (display_mode_line): Clear enabled_p flag on mode-line row. + +2006-10-19 YAMAMOTO Mitsuharu + + * macfns.c (Vmac_carbon_version_string) [TARGET_API_MAC_CARBON]: + New variable. + (syms_of_macfns) [TARGET_API_MAC_CARBON]: Defvar it. + +2006-10-19 Jan Dj,Ad(Brv + + * xselect.c (x_handle_selection_request): If the converted_selection + is nil or XCDR (converted_selection) is nil, decline the request. + +2006-10-16 Jan Dj,Ad(Brv + + * gtkutil.c (get_utf8_string): Remove warnings with casts. + (xg_tool_bar_button_cb): Ditto. + (xg_tool_bar_callback): Ditto. + +2006-10-16 YAMAMOTO Mitsuharu + + * dispnew.c (adjust_frame_glyphs_for_frame_redisplay): Remove unused + variable ch_dim. + (adjust_frame_glyphs_for_window_redisplay): Likewise. Don't allocate + menu bar window matrices on non-X systems. + + * mac.c (Fmac_get_preference, Fmac_code_convert_string): Add GCPROs. + + * macterm.c (mac_query_char_extents): Don't return glyph ID if layout + adjustment is needed. + (mac_load_query_font): Check if width and height are positive. + +2006-10-14 Richard Stallman + + * sysdep.c (init_sys_modes): Delete DEFVAR_LISP in the wrong place. + +2006-10-13 Chong Yidong + + * xdisp.c (decode_mode_spec): Ignore %c and %l constructs in frame + title. + +2006-10-12 Chong Yidong + + * keymap.c (Fkey_binding): Check Lisp_Object types before doing + XCAR and XINT. + +2006-10-12 Romain Francoise + + * image.c (xbm_read_bitmap_data): Delete extra semicolon. + +2006-10-10 Stefan Monnier + + * eval.c: Include xterm.h for x_fully_uncatch_errors and friends. + + * dispextern.h: Declare x_create_bitmap_from_xpm_data. + + * xterm.c (x_check_expected_move): Remove unused var `count'. + + * xmenu.c (syms_of_xmenu): Use Ffset rather than Fdefalias, since + Fdefalias is not declared in any *.h file. + +2006-10-09 Chong Yidong + + * dispnew.c (sit_for): Sit forever if TIMEOUT is t. + + * keyboard.c (command_loop_1): Handle non-number values of + `minibuffer-message-timeout'. + (Fexecute_extended_command): Fix typo. + + * minibuf.c (temp_echo_area_glyphs): Sit for + `minibuffer-message-timeout' seconds. + +2006-10-08 YAMAMOTO Mitsuharu + + * macterm.c (mac_draw_image_string, mac_draw_image_string_16): + Add argument OVERSTRIKE_P. + (mac_draw_string_common, mac_draw_image_string_cg): Likewise. + Support overstrike. + (mac_draw_string, mac_draw_string_16): Remove functions. + (x_draw_glyph_string_foreground): Use overstrike when needed. + (x_draw_composite_glyph_string_foreground): Likewise. + Use mac_draw_image_string_16 instead of mac_draw_string_16. + (mac_load_query_font): Rename from XLoadQueryFont. Take argument + F instead of DPY. All uses changed. Don't save/restore font. + +2006-10-07 Ralf Angeli + + * w32fns.c (w32_createwindow): Honour left and top positions if + supplied explicitly. + +2006-10-06 Kim F. Storm + + * xdisp.c (pos_visible_p): Fix value when EOB is visible. + +2006-10-05 Chong Yidong + + * frame.c (Qinhibit_face_set_after_frame_default): New var. + (syms_of_frame): Initialize it. + (x_set_frame_parameters): Avoid resetting :font attributes to the + new-frame defaults. + +2006-10-03 Stefan Monnier + + * lisp.h (clear_regexp_cache): Declare. + + * search.c (compile_pattern): Only check `cp->syntax_table' if needed. + (compile_pattern_1): Remember `used_syntax' in `cp->syntax_table'. + (clear_regexp_cache): Only flush those regexps which depend on + a syntax-table. + + * regex.c (regex_compile): Set the new `used_syntax' bit. + + * regex.h: Remove file local variables. + (struct re_pattern_buffer): New field `used_syntax'. + +2006-10-03 Kim F. Storm + + * process.c (list_processes_1): Run sentinels before removing dead + processes. Also remove `closed' network connections. + +2006-10-01 Stefan Monnier + + * xdisp.c (handle_fontified_prop): Don't fontify at EOB. + +2006-09-30 Eli Zaretskii + + * config.in: Regenerated. + +2006-09-29 Juri Linkov + + * buffer.c (syms_of_buffer): Reorder coding systems in the + docstring of %z to the real order displayed in the modeline. + +2006-09-28 Stefan Monnier + + * keymap.c (Fdefine_key): Yet another int/Lisp_Object mixup (YAILOM). + +2006-09-26 Chong Yidong + + * indent.c (Fvertical_motion): Do move back if the Lisp string + being displayed contains newlines. + +2006-09-26 YAMAMOTO Mitsuharu + + * macterm.c (mac_compute_glyph_string_overhangs, XLoadQueryFont) + [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw before QDTextBounds. + +2006-09-26 Kenichi Handa + + * keymap.c (Fsingle_key_description): For an invalid char, return + "Invalid char code NNNNN". + +2006-09-25 Chong Yidong + + * callint.c (Fcall_interactively): Doc fix. + +2006-09-25 YAMAMOTO Mitsuharu + + * macterm.c (x_underline_at_descent_line): New variable. + (syms_of_macterm): DEFVAR_BOOL it. + (x_draw_glyph_string): Use it. + (XLoadQueryFont): Calculate min_bounds.descent and max_bounds.descent. + +2006-09-25 Kenichi Handa + + * keymap.c (Fsingle_key_description): Return unique names for + generic characters. + +2006-09-24 Richard Stallman + + * search.c (compile_pattern_1): Don't BLOCK_INPUT. + +2006-09-24 Eli Zaretskii + + * makefile.w32-in ($(BLD)/fns.$(O), $(BLD)/w32proc.$(O)): + Depend on nt/inc/langinfo.h and nt/inc/nl_types.h. + + * w32proc.c (nl_langinfo): New function. + + * w32fns.c (w32-pass-alt-to-system, w32-alt-is-meta) + (w32-pass-lwindow-to-system, w32-enable-num-lock) + (w32-enable-caps-lock, w32-scroll-lock-modifier) + (w32-lwindow-modifier, w32-rwindow-modifier) + (w32-apps-modifier, w32-mouse-button-tolerance): Doc fix. + +2006-09-23 Juanma Barranquero + + * minibuf.c (Finternal_complete_buffer, Fread_minibuffer) + (Fdisplay_completion_list): Fix typos in docstrings. + +2006-09-23 Romain Francoise + + * s/gnu-linux.h (MAIL_USE_FLOCK): Check for HAVE_LIBLOCKFILE too. + +2006-09-23 Kenichi Handa + + * keymap.c (Fmap_keymap): Docstring mentions about generic character. + +2006-09-22 Stefan Monnier + + * regex.c (analyse_first): For eight-bit-control chars, mark both the + char's value and its leading byte in the fastmap. + (re_search_2): When fast-scanning without translation, be careful to + check that we only match the leading byte of a multibyte char. + + * charset.h (PREV_CHAR_BOUNDARY): Make it work from within a char's + byte sequence. + (AT_CHAR_BOUNDARY): New macro. + +2006-09-22 Kenichi Handa + + * fns.c (optimize_sub_char_table): Don't optimize a sub-char-table + whose default value is non-nil. + +2006-09-22 Jan Dj,Ad(Brv + + * gtkutil.c (xg_get_file_with_chooser): Only show C-l help for + Gtk+ versions < 2.10. + + * xfns.c (syms_of_xfns): Fix typo in help text for + x-gtk-file-dialog-help-text. + +2006-09-21 Kim F. Storm + + * fns.c (Fmemq): Refill doc string. + (Fmemql): New defun, like memq but using eql. + (syms_of_fns): Defsubr it. + +2006-09-20 Kim F. Storm + + * xdisp.c (pos_visible_p): CHARPOS < 0 means return info for + last visible glyph in window. + + * window.c (Fset_window_hscroll, Fwindow_line_height): + Doc fix. Use "off-window" instead of "off-screen". + (Fpos_visible_in_window_p): Likewise. + If POS is t, return info for last visible glyph in window. + +2006-09-19 Chong Yidong + + * search.c (struct regexp_cache): New entry syntax_table. + (compile_pattern_1): Set it. + (syms_of_search): Initialize it. + (compile_pattern): Require the syntax_table entry of the cache + element to match the current syntax table entry. + +2006-09-19 Stefan Monnier + + * window.c (Fwindow_end): Fix recent change. + +2006-09-19 Kim F. Storm + + * window.c (Fset_window_hscroll, Fpos_visible_in_window_p): + Doc fix. Use "off-screen" instead of "invisible". + (Fwindow_line_height): Make line numbers 0-based. Make line arg + optional; if nil, use current cursor row. Handle text terminals + properly. Return nil if non-interactive or pseudo-window. + +2006-09-19 Stefan Monnier + + * keymap.c: Include alloca.h if available. + (Fkey_binding): Only use AREF after checking it's a vector. + Remove unused var `window'. + +2006-09-19 YAMAMOTO Mitsuharu + + * emacs.c (shut_down_emacs) [!subprocesses]: Don't set + inhibit_sentinels. + + * mac.c [!MAC_OSX] (select): Fix argument name. + + * macmenu.c (enum mac_menu_kind, min_menu_id): New enumerator and + menu ID for Apple menu. + (menubar_selection_callback): Remove function. + (find_and_call_menu_selection): New function from xmenu.c. + (x_activate_menubar): Use it. + (set_frame_menubar): Don't use f->output_data.mac->menubar_active. + + * macterm.c (menubar_selection_callback): Remove extern. + (M_APPLE): Change to 234. + (do_apple_menu) [!TARGET_API_MAC_CARBON]: Make non-static. + (do_menu_choice): Remove function. + + * macterm.h (struct mac_output): Remove member menubar_active. + (do_menu_choice): Remove extern. + (do_apple_menu) [!TARGET_API_MAC_CARBON]: Add extern. + +2006-09-18 Jan Dj,Ad(Brv + + * xfns.c (syms_of_xfns): Rename x_gtk_show_chooser_help_text to + x_gtk_file_dialog_help_text. + + * gtkutil.c (xg_uses_old_file_dialog): Rename x-use-old-gtk-file-dialog + to x-gtk-use-old-file-dialog. + (xg_get_file_with_chooser): Rename x_gtk_show_chooser_help_text to + x_gtk_file_dialog_help_text. + + * xfns.c (syms_of_xfns): Ditto. + +2006-09-18 Kim F. Storm + + * window.c (Fwindow_line_visibility): Remove. + (Fwindow_line_height): New defun replacing it. + (syms_of_window): Defsubr it. + +2006-09-18 YAMAMOTO Mitsuharu + + * mac.c (SELECT_USE_CFSOCKET) [MAC_OSX]: Set default to 1. + [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Fix pointer type. + +2006-09-17 Jay Belanger + + * gmalloc.c: + * md5.c: + * md5.h: + * strftime.c: Replace "GNU Library General Public License" by "GNU + General Public License" throughout. + +2006-09-17 Kim F. Storm + + * dispnew.c (update_text_area): Undo 2000-07-18 change. + Always redrawing whole row if line has mouse-face in it causes + excessive flickering of the mode line. + +2006-09-17 Chong Yidong + + * search.c (clear_regexp_cache): New function. + + * syntax.c (Fmodify_syntax_entry): Clear regexp cache. + +2006-09-16 Jan Dj,Ad(Brv + + * gtkutil.c (xg_get_file_with_chooser): + Check x-gtk-show-chooser-help-text before adding the help text. + + * xfns.c (syms_of_xfns): New variable: x-gtk-show-chooser-help-text. + + * gtkutil.c (get_utf8_string): Try harder to convert to UTF8. Gtk+ + will simply crash if we fail. + +2006-09-16 Richard Stallman + + * regex.c (re_compile_pattern): Set gl_state.current_syntax_table. + +2006-09-15 Kim F. Storm + + * window.c (Fwindow_line_visibility): New defun for line-move-partial. + (syms_of_window): Defsubr it. + (Fwindow_end): Use window's buffer rather than current buffer. + +2006-09-15 Jay Belanger + + * COPYING: Replace "Library Public License" by "Lesser Public + License" throughout. + +2006-09-15 David Kastrup + + * Makefile.in (keymap.o): Add "keymap.h" and "window.h" dependencies. + + * keymap.c: include "window.h". + (Fcommand_remapping): New optional POSITION argument. + (Fkey_binding): New optional POSITION argument. Completely rework + handling of mouse clicks to get the same order of keymaps as + `read-key-sequence' and heed POSITION. Also temporarily switch + buffers to location of mouse click and back. + + * keyboard.c (command_loop_1): Adjust call of `Fcommand_remapping' + for additional argument. + (parse_menu_item): Adjust call of `Fkey_binding' for additional + argument. + (read_key_sequence): If there are both `local-map' and `keymap' + text properties at some buffer position, heed both. + + * keymap.h: Declare additional optional arguments of + `Fcommand_remapping' and `Fkey_binding'. + +2006-09-15 Juanma Barranquero + + * indent.c (Fcurrent_column, Findent_to): Fix typos in docstring. + +2006-09-14 Andreas Schwab + + * print.c: Whitespace fixup. + +2006-09-14 Kim F. Storm + + * xdisp.c (produce_image_glyph): Automatically crop wide images at + right window edge so we can draw the cursor on the same row to + avoid confusing redisplay by placing the cursor outside the visible + window area. + +2006-09-13 YAMAMOTO Mitsuharu + + * xterm.c (x_initialize): Don't install Xt event timer here. + (x_timeout_atimer_activated_flag): New var. + (x_activate_timeout_atimer): New function to install Xt timer. + (x_send_scroll_bar_event, x_process_timeouts): Use it. + + * xmenu.c (x_menu_set_in_use, popup_activate_callback) + (create_and_show_popup_menu, create_and_show_dialog): Use it. + + * xterm.h (x_activate_timeout_atimer): Add prototype. + +2006-09-13 Richard Stallman + + * print.c (print_string): When printcharfun is t, + copy string contents and call strout on the copy. + + * keyboard.c (read_char): If end_time specified, don't put the + event into this_command_keys. + (read_key_sequence): If Voverriding_terminal_local_map is specified, + don't check Voverriding_local_map at all. + +2006-09-12 Stefan Monnier + + * textprop.c (Fnext_property_change, Fnext_single_property_change) + (Fprevious_property_change, Fprevious_single_property_change): + Avoid changing limit, so we can correctly catch the case where the + property is constant up to limit. + +2006-09-12 YAMAMOTO Mitsuharu + + * macfns.c (mac_window) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: + * macterm.c (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: + Undo 2006-09-08 change. + +2006-09-11 Chong Yidong + + * keymap.c (Fkey_binding): Use string position for string objects. + +2006-09-11 Kim F. Storm + + * keymap.c (Fkey_binding): Fix last change. + + * editfns.c (Fmessage): Recommend using (message "%s" ...). + +2006-09-10 Chong Yidong + + * keymap.c (Fkey_binding): Check for local keymap for mouse click + events. + +2006-09-10 Kim F. Storm + + * keyboard.c (Finput_pending_p): Check Vunread_input_method_events + and Vunread_post_input_method_events. + + * dispnew.c (Fredisplay): Document return value. + +2006-09-10 Jan Dj,Ad(Brv + + * xfns.c (Fx_close_connection): Call xg_display_close when USE_GTK. + + * gtkutil.c (xg_display_close): Always change default display if needed, + check for < Gtk+ version 2.10 before calling gdk_display_close. + +2006-09-10 YAMAMOTO Mitsuharu + + * mac.c [MAC_OSX] (sys_select): Check argument `nfds' more rigidly. + Make variable `ofds' static. Remove variable `maxfd'. + + * macfns.c (Fx_file_dialog): Remove unused variable `f'. + Call check_mac. + + * macmenu.c (Vmenu_updating_frame, syms_of_macmenu): + * w32menu.c (Vmenu_updating_frame, syms_of_w32menu): + Apply 2006-09-08 change for xmenu.c. + + * xfns.c (Fx_file_dialog): Call check_x. + +2006-09-10 Kim F. Storm + + * xdisp.c (get_window_cursor_type): Use hollow cursor on + non-transparent images. + +2006-09-09 Eli Zaretskii + + * editfns.c (Fsystem_name): Mention "host" in the doc string. + (syms_of_editfns) : Likewise. + +2006-09-08 Martin Rudalics + + * xdisp.c (mouse_autoselect_window): Remove. + (Vmouse_autoselect_window): New variable. DEFVAR_LISP it. + + * dispextern.h (mouse_autoselect_window): Remove extern. + (Vmouse_autoselect_window): Add extern. + + * macterm.c (XTread_socket): Test Vmouse_autoselect_window + instead of mouse_autoselect_window. + + * msdos.c (dos_rawgetc): Likewise. + + * w32term.c (w32_read_socket): Likewise. + + * xterm.c (handle_one_xevent): Likewise. + +2006-09-08 Richard Stallman + + * xdisp.c (Vmenu_updating_frame): Define here. + (syms_of_xdisp): DEFVAR it here. + (update_menu_bar): Always return hooks_run. + Set Vmenu_updating_frame. + + * xdisp.c (redisplay_internal): Test Vinhibit_redisplay + before calculating SELECTED_FRAME. + + * xmenu.c (Vmenu_updating_frame): Don't define here. + (syms_of_xmenu): Don't DEFVAR it here. + + * xterm.c (x_error_quitter): For BadName error, just return. + + * eval.c (find_handler_clause): Give up on debugger if INPUT_BLOCKED_P. + + * casetab.c (init_casetab_once): Call set_case_table. + + * emacs.c (shut_down_emacs): Set inhibit_sentinels. + + * process.c (inhibit_sentinels): New variable. + (exec_sentinel): Test inhibit_sentinels. + (init_process): Initialize it. + + * process.h (inhibit_sentinels): Add decl. + + * search.c (looking_at_1, string_match_1, search_command): + Make syntax table's canon table point to eqv table. + +2006-09-08 Andreas Schwab + + * print.c (strout): Fix whitespace. + +2006-09-08 Kim F. Storm + + * xterm.c (x_draw_glyph_string): Fix 2006-08-24 change. + +2006-09-08 YAMAMOTO Mitsuharu + + * mac.c [!MAC_OSX]: Don't include keyboard.h. + [!MAC_OSX] (select): Try detect_input_pending before ReceiveNextEvent + in the same BLOCK_INPUT block, in case that some input has already + been read asynchronously. Pretend to be interrupted by a signal + if some input is available. + [MAC_OSX] (select_and_poll_event, sys_select): Likewise. + (SELECT_POLLING_PERIOD_USEC) [SELECT_USE_CFSOCKET]: Change to 100000. + Now used for ReceiveNextEvent timeout instead of select timeout. + (EVENT_CLASS_SOCK) [SELECT_USE_CFSOCKET]: Remove macro. + [SELECT_USE_CFSOCKET] (socket_callback): Add non-blocking connect + support. Quit event loop. + [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Add non-blocking + connect support. Reuse previously allocated CFRunLoopSource. + (Fmac_process_hi_command) [TARGET_API_MAC_CARBON]: New function. + (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it. + + * macfns.c (mac_window) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: + Specify kWindowAsyncDragAttribute. + + * macterm.c (mac_handle_origin_change, mac_handle_size_change) + (mac_get_ideal_size): New functions. + (x_set_offset, x_set_window_size, x_make_frame_visible) + (do_zoom_window, mac_handle_window_event, XTread_socket): Use them. + (install_window_handler, mac_handle_window_event) + [USE_CARBON_EVENTS]: Handle kEventWindowGetIdealSize and + kEventWindowBoundsChanged. + (XTread_socket) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Don't call + DragWindow. + +2006-09-07 Andreas Schwab + + * m/ibms390x.h (START_FILES, LIB_STANDARD): Override to + use lib64 instead of lib. + +2006-09-06 Stefan Monnier + + * Makefile.in: Avoid double quotes when possible. + +2006-09-06 Kenichi Handa + + * editfns.c (Fformat_time_string): Use make_unibyte_string to make + a Lisp string from the result of emacs_memftimeu call. + +2006-09-06 Kim F. Storm + + * xdisp.c (pos_visible_p): Remove exact_mode_line_heights_p arg; + so calculate heights even when pos-visible-in-window-p is called + with partially = t. Don't overshoot last_visible_y in move_it_to. + Return row height and row number in new rowh and vpos args. + (cursor_row_fully_visible_p): First line is always "fully visible". + (try_window): Don't clear matrix if vscrolled. + + * lisp.h (pos_visible_p): Update prototype. + + * window.c (Fpos_visible_in_window_p): Adapt to new pos_visible_p. + Return row height and row number for partially visible rows. + Modify return value to a 2 element list for fully visible rows and + 6 for partially visible row. + (window_scroll_pixel_based): Use pos_visible_p directly instead of + Fpos_visible_in_window_p. Fix auto vscrolling for partially + visible lines. Only vscroll backwards if already vscrolled + forwards. Unconditionally vscroll forwards if PT is first (and + only) line. Set new window start instead of scrolling at + start/end of tall line. + +2006-09-05 YAMAMOTO Mitsuharu + + * macterm.c (install_window_handler, mac_handle_window_event) + [USE_CARBON_EVENTS]: Handle kEventWindowClose. + [USE_MAC_TSM] (mac_handle_text_input_event): Set modifiers for + ASCII keystroke event. + +2006-09-04 Jan Dj,Ad(Brv + + * gtkutil.c (xg_get_file_with_chooser): Don't mention specific keys in + the file chooser message. Only call gtk_file_chooser_set_current_name + when action is SAVE. + +2006-09-04 Andreas Schwab + + * Makefile.in: Double all single and back quotes in C-style + comments to help fontifier. + +2006-09-03 Jason Rumney + + * w32.c (shutdown_handler): New function to exit cleanly on shutdown. + (globals_of_w32): Register it as a signal handler. + +2006-09-02 Juri Linkov + + * marker.c (Fmarker_position): Doc fix. + +2006-09-03 Eli Zaretskii + + * window.c (syms_of_window) : + : Doc fix. + +2006-09-02 Jan Dj,Ad(Brv + + * gtkutil.c (xg_get_file_with_chooser): Change file chooser message + for writing files. Call gtk_file_chooser_set_current_name to keep + default filename. + + * minibuf.c (Finternal_complete_buffer): Move after DEFUN:s it calls. + +2006-09-02 Jindrich Makovicka (tiny change) + + * fns.c (concat) [__GNUC__]: Declare with + `__attribute__((noinline))'. + + * eval.c (apply1, call2) [__GNUC__]: Declare with + `__attribute__((noinline))'. + +2006-09-02 Stuart D. Herring + + * minibuf.c (Finternal_complete_buffer): New function. + (syms_of_minibuf): Defsubr it. + (Fread_buffer): Use it, instead of Vbuffer_alist. + +2006-09-01 Martin Rudalics + + * buffer.h (struct buffer_text): New field chars_modiff. + (CHARS_MODIFF, BUF_CHARS_MODIFF): New macros. + * buffer.c (Fbuffer_chars_modified_tick): New function returning + value of BUF_CHARS_MODIFF. + (syms_of_buffer): Defsubr it. + (Fget_buffer_create): Initialize BUF_CHARS_MODIFF. + * insdel.c (modify_region): New argument preserve_chars_modiff. + Set CHARS_MODIFF to MODIFF provided preserve_chars_modiff is zero. + (insert_1_both, insert_from_string_1, insert_from_buffer_1) + (adjust_after_replace, adjust_after_replace_noundo) + (replace_range, replace_range_2, del_range_2): Reset CHARS_MODIFF. + * lisp.h (modify_region): Add fourth argument in extern. + * casefiddle.c (casify_region): Call modify_region with fourth + argument zero to assert that CHARS_MODIFF is updated. + * editfns.c (Fsubst_char_in_region, Ftranslate_region_internal) + (Ftranspose_regions): Likewise. + * textprop.c (Fadd_text_properties, Fset_text_properties) + (Fremove_text_properties, Fremove_list_of_text_properties): + Call modify_region with fourth argument 1 to avoid that + CHARS_MODIFF is updated. + +2006-08-31 Richard Stallman + + * editfns.c (Fformat): Don't sign-extend for %o or %x. + +2006-08-29 Chong Yidong + + * indent.c (Fvertical_motion): Don't move back if we were + displaying a Lisp string, either. + +2006-08-28 Kim F. Storm + + * xdisp.c (get_window_cursor_type) [!HAVE_WINDOW_SYSTEM]: + Don't attempt to replace cursor on image glyphs. + +2006-08-28 Kenichi Handa + + * coding.c (Fdetect_coding_region, Fdetect_coding_string): + Fix docstring about ISO-2022 control characters. + +2006-08-28 Kim F. Storm + + * xdisp.c (get_window_cursor_type): Replace BOX cursor on images + with a hollow box cursor if image is larger than 32x32 (or the default + frame font if that is bigger). Replace any other cursor on images + with hollow box cursor, as redisplay doesn't support bar and hbar + cursors on images. + +2006-08-27 YAMAMOTO Mitsuharu + + * alloc.c (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Undo previous + change. Move mutex lock/unlock operations inside BLOCK_INPUT. + + * dired.c (directory_files_internal_unwind, directory_files_internal) + (file_name_completion): Add BLOCK_INPUT around opendir/closedir. + + * image.c [MAC_OS] (image_load_qt_1): Use ComponentResult instead + of OSErr. + + * keyboard.c (in_sighandler): Remove variable. + (Fcurrent_idle_time): Add missing `doc:'. + (input_available_signal, init_keyboard): Undo previous change. + + * keyboard.h (in_sighandler): Remove extern. + + * mac.c (create_apple_event_from_event_ref, select) + (Fmac_get_file_creator, Fmac_get_file_type, Fmac_set_file_creator) + (Fmac_set_file_type, cfstring_create_normalized) + (mac_get_system_locale, select_and_poll_event, sys_select): + Use OSStatus instead of OSErr. + + * macfns.c [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): + Don't use FRAME_FILE_NAME. Use (FS)UpdateAlias. + (Fx_create_frame): Apply 2006-07-03 for xfns.c. + + * macselect.c (get_scrap_from_symbol, clear_scrap, put_scrap_string) + (put_scrap_private_timestamp, scrap_has_target_type, get_scrap_string) + (get_scrap_private_timestamp, get_scrap_target_type_list) + (x_own_selection, x_get_foreign_selection) + (Fx_disown_selection_internal, Fx_selection_owner_p) + (Fx_selection_exists_p): Use OSStatus instead of OSErr. + + * macterm.c (mac_draw_string_common, mac_query_char_extents) + (x_iconify_frame, XLoadQueryFont, install_window_handler) + (mac_handle_command_event, init_command_handler, init_menu_bar): + Use OSStatus instead of OSErr. + (x_free_frame_resources) [TARGET_API_MAC_CARBON]: Don't use + FRAME_FILE_NAME. + (x_query_font): Apply 2006-08-04 change for xterm.c. + (Qhi_command): Rename from Qhicommand. All uses changed. + + * macterm.h (struct mac_output) [TARGET_API_MAC_CARBON]: Remove member + file_name. + (FRAME_FILE_NAME): Remove macro. + (install_window_handler, create_apple_event_from_event_ref): + Return OSStatus instead of OSErr. + +2006-08-26 Kim F. Storm + + * buffer.c (Fset_buffer_multibyte): + * editfns.c (Fcurrent_time, Fget_internal_run_time): + * macfns.c (Fxw_color_values): + * w32fns.c (Fxw_color_values): + * xfns.c (Fxw_color_values): Simplify; use list3. + + * fileio.c (Fmake_directory_internal, Fdelete_directory) + (Fdelete_file): Simplify; use list1. + (Frename_file, Fadd_name_to_file, Fmake_symbolic_link): + Simplify; remove NO_ARG_ARRAY stuff, use list2. + +2006-08-25 Richard Stallman + + * buffer.c (Fswitch_to_buffer): Fix previous change. + +2006-08-25 Kim F. Storm + + * keyboard.c (Fcurrent_idle_time): Simplify. + +2006-08-25 Richard Stallman + + * fns.c (sxhash_string): Rotate properly; don't lose bits. + +2006-08-24 Francesc Rocher + + * xdisp.c (overline_margin): New variable. + (x_produce_glyphs): Use it. + (syms_of_xdisp): DEFVAR_INT it. + + * xterm.c (x_underline_at_descent_line): New variable. + (syms_of_xterm): DEFVAR_BOOL it. + (x_draw_glyph_string): Use it. + Draw underline and overline up to the end of line if the face + extends to the end of line. + + * macterm.c: Likewise. + + * w32term.c: Likewise. + +2006-08-24 Nick Roberts + + * buffer.c (Fswitch_to_buffer): Move buffer to front of + buffer-alist if necessary. + +2006-08-22 Kim F. Storm + + * xdisp.c (update_tool_bar): Redisplay toolbar also when only + number of items changes. + +2006-08-22 Stefan Monnier + + * buffer.c (Fset_buffer_multibyte): Record proper undo entry. + +2006-08-21 Jan Dj,Ad(Brv + + * keyboard.c: Clarify difference between in_sighandler and + handling_signal. + +2006-08-21 Kim F. Storm + + * macterm.c (x_draw_stretch_glyph_string): + * w32term.c (x_draw_stretch_glyph_string): + * xterm.c (x_draw_stretch_glyph_string): It is ok to draw a + stretch glyph in left marginal areas on header and mode lines. + +2006-08-21 Kenichi Handa + + * keyboard.c (syms_of_keyboard): Docstring of + Vunread_post_input_method_events and Vunread_input_method_events + fixed. + +2006-08-20 Chong Yidong + + * keyboard.c (show_help_echo): Preserve mouse movement flag if + tracking mouse. + +2006-08-20 Richard Stallman + + * xfaces.c (load_pixmap): Add quotes in error message. + + * keyboard.c (Fcurrent_idle_time): New function. + (syms_of_keyboard): defsubr it. + +2006-08-18 Nick Roberts + + * window.c (Fset_window_fringes): Do nothing on a tty. + (Fwindow_fringes): Put ? operator after the line break. + +2006-08-16 Andreas Schwab + + * print.c (debug_output_compilation_hack): Fix return type. + +2006-08-16 Richard Stallman + + * print.c (debug_output_compilation_hack): New function. + +2006-08-16 Kenichi Handa + + * fileio.c (choose_write_coding_system): Use LF for end-of-line + in auto-saving. + +2006-08-15 Chong Yidong + + * keyboard.c (read_char): Don't change idle timer state at all if + end_time is supplied. + +2006-08-15 Kenichi Handa + + * coding.c (ONE_MORE_BYTE_CHECK_MULTIBYTE): New arg RET. If SRC + is exhausted, return with RET. + (detect_coding_emacs_mule, detect_coding_iso2022) + (detect_coding_sjis, detect_coding_big5, detect_coding_utf_8) + (detect_coding_utf_16, detect_coding_ccl): Adjusted for the above + change. + +2006-08-14 Chong Yidong + + * keyboard.c (read_char): Don't reset idle timers if a time limit + is supplied. + +2006-08-14 Kim F. Storm + + * .gdbinit (pitx): Print iterator position. + Limit stack dump in case iterator is not initialized. + +2006-08-12 Eli Zaretskii + + * frame.c (Fmouse_position, Fmouse_pixel_position) + (Fset_mouse_position, Fset_mouse_pixel_position): Doc fix. + +2006-08-11 Jan Dj,Ad(Brv + + * xselect.c (Fx_register_dnd_atom): New function. + (syms_of_xselect): Defsubr it. + (x_handle_dnd_message): Check that message_type is in + dpyinfo->x_dnd_atoms before generating lisp event. + + * xterm.h (struct x_display_info): Add x_dnd_atoms* to keep track + of drag and drop Atoms. + + * xterm.c (x_term_init): Initialize dpyinfo->x_dnd_atoms*. + +2006-08-10 Jan Dj,Ad(Brv + + * keyboard.c: Define in_sighandler. + (input_available_signal): Set in_sighandler. + (init_keyboard): Initialize in_sighandler. + + * keyboard.h: Declare in_sighandler. + + * alloc.c (UNBLOCK_INPUT_ALLOC, BLOCK_INPUT_ALLOC): Use in_sighandler + to check if mutex should be locked or not. + +2006-08-09 Richard Stallman + + * keyboard.c (keyremap_step): No-op if fkey->parent = nil. + (read_key_sequence): Always start fkey.start and fkey.end at 0, + and likewise for keytran. + +2006-08-09 Kenichi Handa + + * coding.c (syms_of_coding): Improve the docstring + of file-coding-system-alist. + +2006-08-07 Andreas Schwab + + * puresize.h (BASE_PURESIZE): Increase to 1120000. + +2006-08-06 Chong Yidong + + * buffer.c (Vchange_major_mode_hook, Qchange_major_mode_hook): New vars. + (Fkill_all_local_variables): Use it. + (syms_of_buffer): Defvar it. + +2006-08-05 Eli Zaretskii + + * w32.c (w32_valid_pointer_p): New function. + + * w32.h: Add prototype for w32_valid_pointer_p. + + * alloc.c: Include w32.h. + (valid_lisp_object_p) [WINDOWSNT]: Call w32_valid_pointer_p to do + the job. + + * keyboard.c (kbd_buffer_get_event): Return Qnil when current time + is exactly equal to end_time, not only when it is past that. + +2006-08-04 Chong Yidong + + * keyboard.c (read_char): Rebalance specpdl after receiving jump. + + * process.c: Reapply 2006-08-01 change. + +2006-08-04 Eli Zaretskii + + * w32fns.c (w32_query_font): Fix last change: use stricmp. + +2006-08-04 Stefan Monnier + + * editfns.c (Fsubst_char_in_region): Redo the setup work after running + the before-change-functions since they may have altered the buffer. + +2006-08-04 Ralf Angeli + + * w32fns.c (w32_createwindow): Handle -geometry command line option + and the geometry settings in the Registry. + +2006-08-04 Kenichi Handa + + * w32fns.c (w32_query_font): Compare names by ignoring case. + + * xterm.c (x_query_font): Compare names by ignoring case. + +2006-08-03 Jason Rumney + + * w32menu.c (w32_menu_show, w32_dialog_show): Call Fsignal to quit + when no option selected. + +2006-08-03 Chong Yidong + + * process.c: Revert last change. + +2006-08-01 Kim F. Storm + + * process.c (wait_reading_process_output_unwind): New function. + Restores waiting_for_user_input_p to saved value. + (wait_reading_process_output): Unwind protect waiting_for_user_input_p + instead of save/restore old value on stack. + +2006-07-30 Thien-Thi Nguyen + + * editfns.c: Undo 2006-06-27 change. + +2006-07-29 Eli Zaretskii + + * coding.c (Ffind_operation_coding_system): Revert the change from + 2006-05-29. + + * alloc.c [WINDOWSNT]: Include fcntl.h, to fix last change. + +2006-07-28 Richard Stallman + + * xfaces.c (lookup_named_face, Fdisplay_supports_face_attributes_p): + Add conditional aborts for clarity. + + * xdisp.c (update_menu_bar): New arg HOOKS_RUN. Callers changed. + Used to avoid running the hooks over and over for each frame. + (prepare_menu_bars): Pass value from update_menu_bar + as HOOKS_RUN of next call. + + * keyboard.c (safe_run_hooks_1): Don't crash if Vrun_hooks is nil. + +2006-07-28 Kim F. Storm + + * alloc.c (valid_pointer_p): New function (from valid_lisp_object_p). + (valid_lisp_object_p): Use it to check for valid SUBRP obj. + +2006-07-26 Chong Yidong + + * keyboard.c (read_char): New arg END_TIME specifying timeout. + All callers changed. Turn off echoing if END_TIME is non-NULL. + (kbd_buffer_get_event): New arg END_TIME. + + * lread.c (read_filtered_event): New arg SECONDS to wait until. + (Fread_char, Fread_event, Fread_char_exclusive): New arg SECONDS. + + * lisp.h: Update read-char, read-event, and read_filtered_event + prototypes. + + * keyboard.h: Include systime.h. Update read_char prototype. + +2006-07-25 YAMAMOTO Mitsuharu + + * alloc.c (find_string_data_in_pure): New function. + (make_pure_string): Use it to reuse existing string data if possible. + + * puresize.h (BASE_PURESIZE): Decrease to 1102000. + +2006-07-22 Stefan Monnier + + * keymap.c (Fdefine_key): If the key binding definition looks like an + XEmacs-style key sequence, convert it to Emacs's format. + +2006-07-22 Ralf Angeli + + * w32fns.c (w32_createwindow): If `left' and/or `top' frame + parameters are bound to some values, use that instead of + CW_USEDEFAULT. + +2006-07-21 Eli Zaretskii + + * w32.c (convert_time): Use explicit long double constants to + ensure long double arithmetics is used throughout. + +2006-07-20 YAMAMOTO Mitsuharu + + * alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp): New vars. + (init_alloc_once): Initialize them. + (pure_alloc): Allocate non-Lisp objects from the end of pure storage + without alignment. + + * puresize.h (BASE_PURESIZE): Decrease to 1141000. + +2006-07-18 Francis Litterio + + * w32term.c (x_calc_absolute_position): Fix frame positioning + with negative X/Y coordinates. + +2006-07-18 Dan Nicolaescu + + * xterm.c (x_connection_closed, x_error_quitter): Mark as NO_RETURN. + + * textprop.c (text_read_only): Likewise. + + * lread.c (end_of_file_error): Likewise. + + * lisp.h (circular_list_error, memory_full, buffer_memory_full): + Likewise. + + * eval.c (unwind_to_catch): Likewise. + + * buffer.h (buffer_slot_type_mismatch): Likewise. + +2006-07-18 Kim F. Storm + + Cleanup Fsignal calls that never returns; now only use it for Qquit. + + * eval.c (xsignal): New func. Like Fsignal, but marked no-return. + (xsignal0, xsignal1, xsignal2, xsignal3): New no-return functions. + (signal_error): New no-return function (from xfaces.c). + (Fthrow): Use xsignal2 instead of Fsignal + abort. + (error): Use xsignal1 instead of Fsignal + abort. + (FletX, Flet, grow_specpdl): Use signal_error. + (Feval, Ffuncall, funcall_lambda): Use xsignal1, xsignal2. + + * alloc.c (buffer_memory_full, memory_full): Use xsignal. Remove loop. + (list1): New function. + + * lisp.h (list1): Add EXFUN. + (xsignal, xsignal0, xsignal1, xsignal2, xsignal3, signal_error): + Add prototypes. Mark them as no-return. + + * buffer.c (Fbuffer_local_value, Fbarf_if_buffer_read_only): + Use xsignal1. + + * callint.c (check_mark): Use xsignal0. + + * casefiddle.c (casify_object): wrong_type_argument is no-return. + + * cmds.c (Fforward_char, Fdelete_char): Use xsignal0. + + * coding.c (Fcheck_coding_system): Use xsignal1. Remove loop. + (Fdefine_coding_system_internal): Use xsignal1. + + * data.c (circular_list_error): Use xsignal. + (wrong_type_argument): Use xsignal2. Don't care about return value. + (args_out_of_range, args_out_of_range_3): Use xsignal2, xsignal3. + Remove loop around Fsignal. + (indirect_variable, Fsymbol_value, set_internal, Fdefault_value) + (indirect_function, Findirect_function, Fstring_to_number) + (Fmakunbound, Ffmakunbound, Fsymbol_function, Ffset): Use xsignal1. + (arith_driver, float_arith_driver, Frem, Fmod, arith_error): + Use xsignal0. + + * doc.c (Fdocumentation): Use xsignal1. + + * editfns.c (region_limit, Fget_internal_run_time): Use xsignal0. + + * fileio.c (report_file_error): Use xsignal. + (barf_or_query_if_file_exists, Fcopy_file, Fdelete_file) + (Finsert_file_contents): Use xsignal2. + (syms_of_fileio): Use list2, list3. + + * floatfns.c (arith_error, range_error, domain_error): Use xsignal2. + (range_error2, domain_error2): Use xsignal3. + (rounding_driver, fmod_float): Use xsignal0. + (float_error): Use xsignal1. + (matherr): Use xsignal. + + * fns.c (Flength): wrong_type_argument is no-return. + (hashfn_user_defined, Fmake_hash_table): Use signal_error. + (Fmd5): Use xsignal1. + + * frame.c (x_set_line_spacing, x_set_screen_gamma): Use signal_error. + + * keyboard.c (recursive_edit_1): Use xsignal1. + + * keymap.c (Fmap_keymap): Use xsignal1. + + * lread.c (Fload): Use xsignal2, signal_error. + (end_of_file_error): Use xsignal0, xsignal1. + (read0): Use xsignal1. + (invalid_syntax): New error function marked no-return. + (read_integer, read1, read_list): Use it. + + * macselect.c (x_get_local_selection): Use signal_error. + + * msdos.c (Fmsdos_set_mouse_buttons): Use xsignal2. + + * search.c (compile_pattern_1): Use xsignal1. + (signal_failure): Remove (was only called once). + (search_command): Use xsignal1 instead of signal_failure. + + * syntax.c (scan_lists): Use xsignal3. + + * textprop.c (text_read_only): Use xsignal0, xsignal1. + + * unexsol.c (unexec): Use xsignal. + + * window.c (window_scroll_pixel_based, window_scroll_line_based): + Use xsignal0. + + * xfaces.c (signal_error): Move to eval.c. + (resolve_face_name): Use xsignal1. + + * xfns.c (x_decode_color): Use signal_error. + + * xselect.c (x_get_local_selection, copy_multiple_data) + (x_get_window_property_as_lisp_data) + (lisp_data_to_selection_data, CHECK_CUT_BUFFER) + (Fx_get_cut_buffer_internal): Use signal_error. + +2006-07-18 YAMAMOTO Mitsuharu + + * macterm.c (XTread_socket): Undo previous change. + +2006-07-18 YAMAMOTO Mitsuharu + + * macterm.c (keycode_to_xkeysym): Remove function. All uses now + directly lookup keycode_to_xkeysym_table. + [USE_MAC_TSM] (mac_handle_text_input_event): Don't construct + ASCII_KEYSTROKE_EVENT for non-zero keycode_to_xkeysym_table entries. + (XTread_socket): Use character codes to construct keypad key events. + (mac_initialize_display_info) [MAC_OSX]: Use CGDisplaySamplesPerPixel. + (x_delete_display): Apply 2006-07-04 change for xterm.c. + +2006-07-17 Richard Stallman + + * keyboard.c (Vcommand_error_function): New variable. + (syms_of_keyboard): Defvar it. + (cmd_error_internal): Simplify, and handle Vcommand_error_function. + + * dispnew.c (init_display): Mention DISPLAY as well as TERM in err msg. + +2006-07-17 Kim F. Storm + + * xdisp.c (handle_single_display_spec): Ensure the right value of + it->position is saved by push_it. + (pop_it): Restore it->object for GET_FROM_BUFFER and GET_FROM_STRING. + (reseat_1): Don't setup it->object twice. + (set_iterator_to_next): No need to set it->object after pop_it. + (move_it_to): Explicitly check to see if last move reached to_charpos. + +2006-07-17 Thien-Thi Nguyen + + * xdisp.c (display_mode_line): Preserve match data. + +2006-07-14 Kim F. Storm + + * w32.c (pfn_WSACreateEvent, pfn_WSACloseEvent): New func ptrs. + (init_winsock): Load them. Use ws2_32.dll. + (sys_listen): Undo last change. Just set FILE_LISTEN flag. + (sys_accept): Undo last change. Instead, set child status to + STATUS_READ_ACKNOWLEDGED and reset char_avail event so next + sys_select will wakeup the reader thread. + (_sys_wait_accept): New function used by reader thread to wait for + an incoming connection on a server socket. + + * w32.h (_sys_read_ahead, _sys_wait_accept): Add prototypes. + + * w32proc.c (reader_thread): Use _sys_wait_accept to wait on a + server socket (FILE_LISTEN flag). + +2006-07-14 Jan Dj,Ad(Brv + + * sound.c (alsa_init): Call snd_pcm_close after successful snd_pcm_open. + +2006-07-14 Kim F. Storm + + * w32.c: Fix high cpu load for server sockets. + (pfn_WSAEventSelect): New function ptr. + (init_winsock): Load it. + (sys_listen): Set FILE_LISTEN flag. Set event mask for socket's + char_avail event object to FD_ACCEPT. + (sys_accept): Check FILE_LISTEN flag. Set event mask on new + socket's char_avail event object to FD_READ|FD_CLOSE. + + * w32.h (FILE_LISTEN): New filedesc flag value. + +2006-07-13 Kim F. Storm + + * bytecode.c (Fbyte_code): Use CAR, CDR for Bcar, Bcdr. + Use CAR_SAFE, CDR_SAFE for Bcar_safe, Bcdr_safe. + Simplify loops and use CAR for Bnth and Belt. + + * data.c (Findirect_function): Optimize for no indirection. + + * eval.c (Fthrow): Remove loop around Fsignal. + (Feval, Fapply, Ffuncall): Optimize for no function indirection. + Use original function name in all signaled errors. + Simplify Fsignal calls (no return). + (funcall_lambda): Simplify Fsignal calls (no return). + +2006-07-13 Andreas Schwab + + * syntax.c (scan_sexps_forward): Use EMACS_INT for out_bytepos and + out_charpos. + +2006-07-13 Kenichi Handa + + * editfns.c (Fformat): Fix calculation of text property positions + of format string. + +2006-07-12 Kim F. Storm + + * lisp.h (CHECK_TYPE): New macro for generic type checking. + (CAR_SAFE, CDR_SAFE): New macros. + (ARRAYP, CHECK_ARRAY): New macros. + (CHECK_VECTOR_OR_STRING, CHECK_SUBR): New macros. + (CHECK_WINDOW_CONFIGURATION): New macro. + (CHECK_LIST_CONS, CHECK_LIST_END): New checks for list traversal. + (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST) + (CHECK_STRING, CHECK_STRING_CAR, CHECK_CONS, CHECK_SYMBOL) + (CHECK_CHAR_TABLE, CHECK_VECTOR, CHECK_VECTOR_OR_CHAR_TABLE) + (CHECK_BUFFER, CHECK_WINDOW, CHECK_LIVE_WINDOW, CHECK_PROCESS) + (CHECK_NUMBER, CHECK_NATNUM, CHECK_MARKER, CHECK_OVERLAY) + (CHECK_NUMBER_COERCE_MARKER, CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT) + (CHECK_NUMBER_OR_FLOAT_COERCE_MARKER): Use CHECK_TYPE. + + * category.h (CHECK_CATEGORY, CHECK_CATEGORY_SET): + * frame.h (CHECK_FRAME, CHECK_LIVE_FRAME): Use CHECK_TYPE. + + * callint.c (Fcall_interactively): + * casefiddle.c (casify_object): + * editfns.c (general_insert_function): + * fns.c (Flength, Felt, Ffillarray): + * data.c (Fcar, Fcdr): Remove loop around wrong_type_argument. + + * data.c (wrong_type_argument): Remove loop around Fsignal. + (Farrayp, Fsequencep): Use ARRAYP. + (Fcar): Use CAR. + (Fcar_safe): Use CAR_SAFE. + (Fcdr): Use CDR. + (Fcdr_safe): Use CDR_SAFE. + (Fsetcar, Fsetcdr): Use CHECK_CONS. + (Fsubr_arity, Fsubr_name): Use CHECK_SUBR. + (Faset): Use CHECK_ARRAY. + + * fns.c (Felt): Use CHECK_ARRAY. + (concat): Use CHECK_NUMBER. + (Fsubstring, substring_both): Use CHECK_VECTOR_OR_STRING. + (Fmemq): Use CHECK_LIST. + (Fassq, Fassoc, Frassq, Frassoc): Use CAR. + (assq_no_quit): Use CAR_SAFE. + (Fnthcdr, Fmember, Fdelq, Fdelete, Fnreverse, Fnconc): + Use CHECK_LIST_CONS. + (Freverse, Fplist_get, Flax_plist_get): Use CHECK_LIST_END. + + * bytecode.c (Fbyte_code): Use CHECK_VECTOR. + + * casetab.c (check_case_table): + * category.c (check_category_table): + * marker.c (Fcopy_marker): + * syntax.c (check_syntax_table): + * xfaces.c (load_pixmap): Use CHECK_TYPE. + + * fns.c (Fcopy_sequence, concat): + * fringe.c (Fdefine_fringe_bitmap): + * lread.c (check_obarray): Cleanup wrong_type_argument use. + + * keyboard.c (access_keymap_keyremap): Use ARRAYP. + + * keymap.c (Fdefine_key, Flookup_key): + * macros.c (Fstart_kbd_macro): Use CHECK_VECTOR_OR_STRING. + + * mac.c (Fmac_get_preference): Use CHECK_LIST_END. + + * search.c (Fset_match_data): Use CHECK_LIST. + + * sunfns.c (sun_item_create): Use CHECK_LIST_CONS. + + * window.c (Fwindow_configuration_frame, Fset_window_configuration): + (compare_window_configurations): Use CHECK_WINDOW_CONFIGURATION. + +2006-07-12 YAMAMOTO Mitsuharu + + * Makefile.in (dired.o, editfns.o, fileio.o): Depend on blockinput.h. + + * dired.c: Include blockinput.h. + (Ffile_attributes): Add BLOCK_INPUT around getpwuid/getgrgid. + + * editfns.c: Include blockinput.h. + (Fuser_login_name, Fuser_full_name): Add BLOCK_INPUT around + getpwuid/getpwnam. + + * fileio.c: Include blockinput.h. + (Fexpand_file_name, search_embedded_absfilename): Add BLOCK_INPUT + around getpwnam. + (search_embedded_absfilename): Remove spurious xfree. + +2006-07-11 Kim F. Storm + + * dispnew.c (sit_for): Reduce number of args from 5 to 3. + Now just one TIMEOUT arg that can be a Lisp float or Lisp int. + Combine args DISPLAY and INITIAL_DISPLAY into one arg DO_DISPLAY. + Signal error if TIMEOUT is not a number. + Undo 2006-06-14 change for non-preemptive display if TIMEOUT < 0. + The rework of sit_for args also fixes several incorrect Qt args + which should have been 1. + (Fredisplay): Pass 1 instead of Qt to swallow_events and + detect_input_pending_run_timers. + + * lisp.h (sit_for): Update prototype. + (Fredisplay): Add EXFUN. + + * dispextern.h (sit_for): Remove prototype. + + * callint.c (Fcall_interactively): + * minibuf.c (temp_echo_area_glyphs): + * keyboard.c (command_loop_1, read_char, Fexecute_extended_command): + * fileio.c (Fdo_auto_save): Update/simplify sit_for calls. + +2006-07-11 Stefan Monnier + + * syntax.c (forw_comment): Also use EMACS_INT for buffer positions. + +2006-07-11 Kim F. Storm + + * dispnew.c (Fredisplay): Add FORCE argument to force redisplay when + input is available. Fix test for redisplay_dont_pause non-nil. + Specbind redisplay-dont-pause to t if FORCE non-nil. + +2006-07-10 Chong Yidong + + * puresize.h (BASE_PURESIZE): Increment to 1211000. + + * dispnew.c (Fredisplay): New function, equivalent to (sit-for 0). + (Fsit_for): Function deleted. + + * keyboard.c (command_loop_1, Fexecute_extended_command): + Call sit_for instead of Fsit_for. + + * minibuf.c (temp_echo_area_glyphs): Likewise. + +2006-07-09 Stefan Monnier + + * syntax.c (Fforward_comment): Revert the reversion. + (back_comment, scan_lists): Also use EMACS_INT for buffer positions. + +2006-07-09 John Paul Wallington + + * syntax.c (Fforward_comment): Revert previous change. + +2006-07-09 Kim F. Storm + + * window.c (Fforce_window_update): Doc fix. + +2006-07-08 Stephen Gildea + + * fileio.c (do_auto_save_make_dir): Make the auto-save-list-file + directory unreadable for better user privacy. + +2006-07-07 Stefan Monnier + + * syntax.c (Fforward_comment): Fix int-32 vs EMACS_INT-64 mixup. + + * lread.c (read_filtered_event): Remove `register' qualifier because it + causes compilation problem with gcc-4.0.2-20051125 on amd64. + (readevalloop): Remove unused var `bpos'. + Yet another int/Lisp_Object mixup (YAILOM). + +2006-07-07 Eli Zaretskii + + * keyboard.c (Fexecute_extended_command): Mention the argument + PREFIXARG in the doc string. + +2006-07-07 Kim F. Storm + + * fringe.c (Fdefine_fringe_bitmap): Doc fix. + +2006-07-05 Chong Yidong + + * insdel.c (prepare_to_modify_buffer): For an indirect buffer, do + clash detection using the base buffer. + + * puresize.h (BASE_PURESIZE): Increment to 1210500. + +2006-07-04 Kim F. Storm + + * xterm.c (x_delete_display): Don't free or derefence NULL pointers. + +2006-07-04 Kenichi Handa + + * fontset.c (Fset_overriding_fontspec_internal): Check if we need + to update Voverriding_fontspec_alist. + +2006-07-03 Richard Stallman + + * xfns.c (Fx_create_frame): Move unwind_create_frame setup down. + + * xfaces.c (Fface_attribute_relative_p): Doc fix. + + * textprop.c (Fget_char_property_and_overlay): Doc fix. + + * eval.c (Fdefvaralias): Doc fix. + +2006-07-03 Kim F. Storm + + * dispnew.c (sit_for): Fix preempt condition. + +2006-07-02 Stefan Monnier + + * lread.c (read_filtered_event): Treat select-window just like + switch-frame. + +2006-07-02 Kim F. Storm + + * xdisp.c (display_tool_bar_line): Skip glyphs which are too big + to ever fit the tool-bar, + (MAX_FRAME_TOOL_BAR_HEIGHT): New macro. + (tool_bar_lines_needed): Use unused mode-line row as temp_row. + (redisplay_tool_bar): Only clear desired matrix if we actually + change the tool-bar window height. Only try to make the tool-bar + window bigger if there is actually room for it. + +2006-06-30 Ralf Angeli + + * w32term.c (x_make_frame_visible): Use SystemParametersInfo with + SPI_GETWORKAREA to find the dimensions of the screen work area, + and adjust vertical position of the frame in order to avoid being + covered by the task bar. + + * w32fns.c (w32_createwindow): Use CW_USEDEFAULT instead of + f->left_pos and SH_SHOW instead of f->top_pos in the call to + CreateWindow. Record the actual position in f->left_pos and + f->top_pos. + +2006-06-30 John Paul Wallington + + * w32console.c (syms_of_ntterm) : + Doc fix - default value has changed. + +2006-06-28 YAMAMOTO Mitsuharu + + * mac.c [!TARGET_API_MAC_CARBON]: Don't include FixMath.h or Scrap.h. + + * macfns.c (Fx_create_frame): Apply 2006-06-24 change for xfns.c. + + * macgui.h (USE_MAC_TSM) [TARGET_API_MAC_CARBON]: Set default to 1. + + * macterm.c (Qeql): Add extern. + (x_set_mouse_pixel_position) [MAC_OSX]: Use CGWarpMouseCursorPosition. + (fm_style_face_attributes_alist) [USE_ATSUI]: New variable. + (syms_of_macterm) [USE_ATSUI]: Initialize and staticpro it. + Change keys of Vmac_atsu_font_table from strings to numbers. + (fm_style_to_face_attributes) [USE_ATSUI]: New function. + (init_font_name_table) [USE_ATSUI]: Use it. + (saved_ts_script_language_on_focus) [USE_MAC_TSM]: New variable. + (syms_of_macterm) [USE_MAC_TSM]: Initialize and staticpro it. + [USE_MAC_TSM] (mac_tsm_resume): Restore script and language codes + only when saved_ts_script_language_on_focus coincides with + Vmac_ts_script_language_on_focus. + [USE_MAC_TSM] (mac_tsm_suspend): Save value of + Vmac_ts_script_language_on_focus to saved_ts_script_language_on_focus. + (XTread_socket) [USE_MAC_TSM]: Add Mac OS Classic support. + [USE_MAC_TSM] (mac_handle_text_input_event, init_tsm): Likewise. + +2006-06-27 Chong Yidong + + * editfns.c (Fdelete_field, Ffield_string, Ffield_beginning) + (Ffield_string_no_properties, Ffield_end): Mention + args-out-of-range error condition in docstring. + +2006-06-27 Kim F. Storm + + * xdisp.c (handle_composition_prop): Set stop_charpos before push_it. + +2006-06-25 Kim F. Storm + + * s/gnu-linux.h (SIGNALS_VIA_CHARACTERS): Define for Linux kernel + version 2.4 and later. + +2006-06-24 Chong Yidong + + * xfns.c (Fx_create_frame): Set font parameter directly instead of + using x_default_parameter, since x_get_args clears the parm alist. + +2006-06-24 Eli Zaretskii + + * dired.c (directory_files_internal) [WINDOWSNT]: Find files + case-insensitively. + +2006-06-24 Aidan Kehoe + + * lread.c (read_escape): When an unknown Unicode code point is + encountered as a string or character escape, signal an error. + +2006-06-23 Kim F. Storm + + * .gdbinit (pitx): Dump iterator stack. + + * xdisp.c (handle_composition_prop): Push iterator on stack. + (set_iterator_to_next): Pop iterator at end of composition. + +2006-06-23 Martin Rudalics + + * fileio.c (Frename_file) [DOS_NT]: Don't try to move directory to + itself on DOS_NT platforms, if the old and new names are identical + but for the letter-case. + +2006-06-21 Kim F. Storm + + * dispextern.h (struct it): Add `position' member to iterator stack. + Rename `pos' member to `current'. Rearrange and add comments. + + * xdisp.c (handle_stop): Set it->ignore_overlay_strings_at_pos_p + if we get any overlays. + (set_cursor_from_row): Don't clobber `end' if we rescan from + start_string. + (push_it, pop_it): Save it->position. + +2006-06-19 Richard Stallman + + * window.c (size_window): New arg FIRST_ONLY. All callers changed. + (adjust_window_trailing_edge): Specially compute FIRST_PARALLEL + for the case of a top-level window and the following minibuffer. + Don't exit because of no `next' when there is a parent. + Use the FIRST_ONLY feature when resizing following windows. + + * syntax.c (init_syntax_once): Give most control chars' syntax Spunct. + +2006-06-17 Kim F. Storm + + * dispnew.c (update_frame): Check for input pending on entry. + (update_window, update_frame_1): Break loop if input is detected. + +2006-06-16 Francis Litterio + + * xterm.c (x_check_expected_move, handle_one_xevent) + (x_set_offset, x_check_fullscreen): Extensive changes to make + frame positioning deterministic under X. + + * xterm.h (x_output): Add members left_before_move and + top_before_move. Removed members expected_left and expected_top. + +2006-06-16 Kim F. Storm + + * dispextern.h (struct it): Add union to iterator stack to save + image, composition, and stretch specific paramters. + + * xdisp.c (next_overlay_string): Fix assert. + (push_it, pop_it): Handle composition and stretch specific values. + Only handle it->slice in image (for now). + (back_to_previous_visible_line_start): Continue search if newline is + part of a compisition. Simplify. + (reseat_1): Set it->object to buffer. + (set_iterator_to_next): Set it->object to string or buffer, when + setting it->method to GET_FROM_STRING or GET_FROM_BUFFER. + (next_element_from_composition): Set it->object to buffer if not + from string. + (set_cursor_from_row): Only save start of string if not already + done to handle multiple strings in a row. + + * .gdbinit (pitx): Show composition parameters. + (pgx, pg): New commands to print a glyph structure. + (pgi, pgn): New commands to print specific/next glyph. + (pgrowx, pgrow): New commands to print all glyphs in a row. + +2006-06-16 YAMAMOTO Mitsuharu + + * macfns.c (Fx_display_mm_height, Fx_display_mm_width) + [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]: Use CGDisplayScreenSize. + + * macterm.c (do_app_resume, do_app_suspend): Remove functions. + (mac_tsm_resume, mac_tsm_suspend) [USE_MAC_TSM]: New functions. + (mac_handle_window_event, XTread_socket) [USE_MAC_TSM]: Use them. + (Vmac_ts_script_language_on_focus) [USE_MAC_TSM]: New variable. + (syms_of_macterm) [USE_MAC_TSM]: Defvar it. + (saved_ts_language, saved_ts_component) [USE_MAC_TSM]: New variables. + (mac_initialize_display_info) [MAC_OSX]: Use Quartz Display + Services functions to get size of main display in pixels. + +2006-06-14 Chong Yidong + + * xdisp.c (back_to_previous_visible_line_start): + Reset it->continuation_lines_width. + +2006-06-14 Richard Stallman + + * eval.c (Fdefconst): Mark variable as risky. + + * callproc.c (Fcall_process): Doc fix. + + * window.c (adjust_window_trailing_edge): Don't break out of the loop + because there's no next window, if there are parallel windows. + Do break out when WINDOW is nil. + +2006-06-14 Kim F. Storm + + * dispextern.h (IT_STACK_SIZE): New macro specifying size of + iterator stack (instead of hardcoded number). Increase from 2 to + 4 to make room for propertized overlay strings before and after a + display string, image or composition. + (struct it): Add image_id and method members to iterator stack. + + * xdisp.c (init_from_display_pos): Don't set it->method and + overlay_string_index after pop_it. Add asserts. + (handle_stop): Look for overlay strings around a display string, + image, or composition. Handle properties on those strings. + (next_overlay_string): Don't set string, pos or method after pop_it. + (get_overlay_strings_1): Split from get_overlay_strings; don't + modify it if no overlay strings are found. + (get_overlay_strings): Use get_overlay_strings_1. Always set + it->string and it->method. + (push_it): Push it->image_id and it->method. Push it->object + instead of it->string if method is GET_FROM_IMAGE. + (pop_it): Pop it->image_id and it->method. Ppo it->object + instead of it->string if method is GET_FROM_IMAGE. + Reset it->current.string_pos if popped it->string is nil. + (reseat_1): Remove comment dated 19 May 2003. It expressed doubt + whether a given change was correct; but the change is correct. + Clear it->string_from_display_prop_p. + (set_iterator_to_next): Rely on it->method and it->image_id from + iterator stack, instead of setting them explicitly after pop_it. + + * dispnew.c (sit_for): Undo 2006-06-01 change. Instead, a + negative time forces redisplay even when input is available. + (Fsit_for): Doc fix. + +2006-06-13 Kim F. Storm + + * dispnew.c: Modify preemptive redisplay to be based on periodic + checks for input. + (PERIODIC_PREEMPTION_CHECKING): Define to 1 iff EMACS_HAS_USECS. + (Vredisplay_preemption_period): New variable. + (syms_of_display): DEFVAR_LISP and initialize it. + (preemption_period, preemption_next_check): New variables. + (update_frame, update_single_window): Initialize them based on + Vredisplay_preemption_period if !force_p. + (update_window, update_frame_1): Use them to determine when to + check for input. + +2006-06-03 Aidan Kehoe + + * lread.c (read_escape): Provide a Unicode character escape + syntax; \u followed by exactly four or \U followed by exactly + eight hex digits in a comment or string is read as a Unicode + character with that code point. + +2006-06-09 Eli Zaretskii + + * window.c (window_scroll_pixel_based): Signal "Beginning of + buffer" when scroll-down at the beginning of an empty buffer. + +2006-06-06 YAMAMOTO Mitsuharu + + * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event): + Exclude 0x7f from ASCII range. + +2006-06-05 Jason Rumney + + * w32term.c (w32_set_scroll_bar_thumb, x_scroll_bar_create) + (w32_set_vertical_scroll_bar, w32_scroll_bar_handle_click) + (x_scroll_bar_report_motion): Remove workarounds for + versions of Windows NT < 3.51. + [!SIF_ALL]: Remove. + (pfnSetScrollInfo, pfnGetScrollInfo): Remove. + (w32_initialize): Don't dynamically load Get/SetScrollInfo. + +2006-06-04 David Kastrup + + * dispnew.c: Mention `redisplay-dont-pause' in doc string of + `sit-for'. + +2006-06-03 YAMAMOTO Mitsuharu + + * macfns.c (x_set_icon_name): Apply 2006-06-02 change for xfns.c. + + * macgui.h (USE_MAC_TSM): Set default to 1 on Mac OS X. + + * macterm.c (tsm_document_id) [USE_MAC_TSM]: New variable. + (Qtext_input, Qupdate_active_input_area, Qunicode_for_key_event) + [USE_MAC_TSM]: Likewise. + (syms_of_macterm) [USE_MAC_TSM]: Intern and staticpro them. + (Qbefore_string) [USE_MAC_TSM]: Add extern. + (do_app_resume, do_app_suspend) [USE_MAC_TSM]: Call + ActivateTSMDocument/DeactivateTSMDocument. + (mac_store_event_ref_as_apple_event): Call mac_post_mouse_moved_event. + (mac_handle_window_event) [USE_MAC_TSM]: Handle + kEventWindowFocusAcquired/kEventWindowFocusRelinquish. + (mac_handle_text_input_event) [USE_MAC_TSM]: New function. + (install_window_handler) [USE_MAC_TSM]: Install it. Register + kEventWindowFocusAcquired/kEventWindowFocusRelinquish. + (keycode_to_xkeysym_table): Add entry for f16. + (XTread_socket) [USE_MAC_TSM]: Set/reset read_socket_inev + before/after passing keystroke event to toolbox dispatcher. + (init_tsm) [USE_MAC_TSM]: New function. + (mac_initialize) [USE_MAC_TSM]: Call it. + (Vmac_ts_active_input_overlay) [USE_MAC_TSM]: New defvar. + + * macterm.h (EVENT_PARAM_TEXT_INPUT_SEQUENCE_NUMBER): New enumerator. + +2006-06-02 John Paul Wallington + + * xfns.c (x_set_name_internal): Set icon to `text', derived from + name, when frame's icon_name isn't a string rather than only when + it is nil. + +2006-06-03 Eli Zaretskii + + * w32fns.c (x_set_icon_name): Don't use arg if it's not a string + and not nil. + +2006-06-02 Chong Yidong + + * xfns.c (x_set_icon_name): No-op if arg is non-nil and not a + string. + +2006-06-02 YAMAMOTO Mitsuharu + + * xdisp.c (next_element_from_composition): Set it->object to + it->string if composition is coming from string. + (set_cursor_from_row): Don't return 0 unless row displays a + continued line. + (dump_glyph): Dump composite glyph. + +2006-06-02 Jan Dj,Ad(Brv + + * gtkutil.c (menu_nav_ended): Check that menubar_widget is not NULL. + +2006-06-01 Richard Stallman + + * window.c (Fsplit_window): Doc fix. + +2006-06-01 Micha,Ak(Bl Cadilhac + + * process.c (deleted_pid_list): New variable to store the pids + of deleted processes. Declare it only if SIGCHLD is defined. + (init_process): Initialize it. + (syms_of_process): Staticpro it. + (Fdelete_process): Add pid of the deleted process to it. Check after + the addition and before the kill if the process is already stopped, + in which case it is deleted from the list and not killed. + (sigchld_handler): Define it only if SIGCHLD is. Search the process + that signaled Emacs in `deleted_pid_list' before `Vprocess_alist'. + Original idea by Stefan Monnier. + +2006-06-01 Kim F. Storm + + * dispnew.c (sit_for): Perform redisplay even if input is pending + when redisplay-dont-pause is non-nil. + +2006-06-01 YAMAMOTO Mitsuharu + + * macterm.c (mac_handle_visibility_change): Set buf.arg to Qnil. + (XTread_socket): Remove obsolete comment. + +2006-06-01 Jan Dj,Ad(Brv + + * xmenu.c (syms_of_xmenu): Make accelerate-menu an alias for + menu-bar-open. + +2006-06-01 Jan Dj,Ad(Brv + + * xmenu.c (Fmenu_bar_open, syms_of_xmenu): Change menu-bar-start to + menu-bar-open. + + * gtkutil.c (menu_nav_ended): Change x-menu-bar-start to menu-bar-open. + +2006-05-31 Juri Linkov + + * minibuf.c (Vhistory_add_new_input): New variable. + (read_minibuf): Use it. + (syms_of_minibuf) : New Lisp variable. + (syms_of_minibuf) : Doc fix. + +2006-05-31 Kim F. Storm + + * process.c (select_wrapper): Add wrapper around select to work around + "incomplete backtrace" bug in gdb 5.3, when emacs is stopped inside + select called from wait_reading_process_output. + +2006-05-30 Andreas Schwab + + * xmenu.c (Fmenu_bar_start): Return a value. + +2006-05-30 Richard Stallman + + * coding.c (Ffind_operation_coding_system): Doc fix. + +2006-05-30 Eli Zaretskii + + * w32term.c (x_draw_hollow_cursor): Fix last change. + +2006-05-29 Kim F. Storm + + * w32term.c (x_draw_stretch_glyph_string): Fix last change. + +2006-05-29 Eli Zaretskii + + * coding.c (Ffind_operation_coding_system): Doc fix. + +2006-05-29 YAMAMOTO Mitsuharu + + * macfns.c [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): + Call mac_set_font_info_for_selection if font panel is made visible. + + * macterm.c (font_panel_shown_p) [USE_MAC_FONT_PANEL]: New variable. + (mac_font_panel_visible_p, mac_show_hide_font_panel) + [USE_MAC_FONT_PANEL]: New functions. + [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): + Return immediately if font panel is not visible. + + * macterm.h (mac_font_panel_visible_p, mac_show_hide_font_panel): + Add externs. + +2006-05-29 Dan Nicolaescu + + * search.c (matcher_overflow): Mark as NO_RETURN. + + * xterm.c (x_connection_closed): Likewise. + + * sysdep.c (croak): Likewise. + + * sound.c (sound_perror, alsa_sound_perror): Likewise. + + * lisp.h (die, nsberror): Likewise. + +2006-05-29 Jan Dj,Ad(Brv + + * sound.c (alsa_open, alsa_configure, alsa_write): + Move assignment to err out of if-statement. + + * gtkutil.c (menu_nav_ended): New function. + (create_menus): Connect menu_nav_ended to "selection-done" to fix + grabs. + + * xmenu.c (Fmenu_bar_start): New function for USE_GTK and USE_X_TOOLKIT. + +2006-05-28 Dan Nicolaescu + + * charset.h (invalid_character): Mark as NO_RETURN. + +2006-05-29 Kenichi Handa + + * coding.c (Ffind_operation_coding_system): Call a function by + safe_call1 instead of call1. + +2006-05-28 Stefan Monnier + + * window.c (struct saved_window): Add `dedicated'. + (Fset_window_configuration, save_window_save): Save/restore the + `dedicated' flag. + +2006-05-28 Kim F. Storm + + * xdisp.c (set_cursor_from_row): If cursor cannot be set in row, + don't update w->cursor and return 0. Return 1 on success. + (try_cursor_movement): Repeat set_cursor_from_row on successive rows + until it succeeds. + + * dispextern.h (set_cursor_from_row): Update prototype. + +2006-05-28 Kim F. Storm + + * xdisp.c (get_phys_cursor_geometry): Return computed x and y through + parameters. Adjust x and width in case cursor in on a partially + visible stretch glyph on the left edge. + (erase_phys_cursor): Don't erase into left fringe/margin in case + previous cursor glyph is a partially visible stretch glyph on left. + + * dispextern.h (get_phys_cursor_geometry): Update prototype. + + * xterm.c (x_draw_stretch_glyph_string): Fix problems with invisible + cursor and erasing cursor on partially visible stretch glyph on left. + (x_draw_hollow_cursor): Compute x via get_phys_cursor_geometry. + + * macterm.c: Likewise. + + * w32term.c: Likewise. + +2006-05-27 YAMAMOTO Mitsuharu + + * macselect.c (mac_handle_apple_event): + Return errAEEventNotHandled if key binding is not found. + +2006-05-26 Eli Zaretskii + + * emacs.c (main) [PROFILING]: Enable also for __MINGW32__. + [__MINGW32__]: MinGW-specific declaration of `etext'. + + * w32heap.c (etext, edata): Remove unused definitions. + +2006-05-26 Chong Yidong + + * fileio.c (Fcopy_file): Delete argument MUSTBENEW. + Incorporate the exclusive file-opening functionality into the behavior + when OK-IF-ALREADY-EXISTS is nil. + (Frename_file): Call Fcopy_file without MUSTBENEW argument. + +2006-05-26 Jan Dj,Ad(Brv + + * sound.c (alsa_configure): Move get period/buffer_size after + setting hwparams. + +2006-05-26 Kenichi Handa + + * coding.c (Ffind_operation_coding_system): Allow (FILENAME + . BUFFER) in TARGET. + +2006-05-25 Chong Yidong + + * image.c (png_load): Don't call fclose on NULL. + +2006-05-25 Luc Teirlinck + + * fns.c (Fyes_or_no_p): + * callint.c (Fcall_interactively): Fread_from_minibuffer now takes + only seven args. + +2006-05-25 Juri Linkov + + * lisp.h (Fread_from_minibuffer): Decrement number of args. + + * minibuf.c (read_minibuf): Remove arg KEEP_ALL. Callers changed. + (Fread_from_minibuffer): Remove arg KEEP_ALL. Callers changed. + + * buffer.c (mode-line-format): Fix docstring. + +2006-05-25 Richard Stallman + + * emacs.c (main, Fdump_emacs): Don't test __linux or __linux__. + +2006-05-24 Luc Teirlinck + + * puresize.h (BASE_PURESIZE): Increase to 1210000. + +2006-05-24 Alan Mackenzie + + * lread.c (Vload_history): Enhance doc-string to say that the file + is the absolute truename of the loaded file. + + * lread.c (Vafter_load_alist): doc-string: state that an element + now has a regexp to match file names, not a file name as such. + + * lread.c (readevalloop): Call file-truename on the name for + load-history, except at preloading time. + + * lread.c (Fload): At preloading time, preserve the extension of + the filename which goes into load-history. New var hist_file_name. + + * lread.c (Fload): Do eval-after-load stuff by calling the lisp + function do-after-load-evaluation. + +2006-05-24 YAMAMOTO Mitsuharu + + * mac.c (ae_attr_table): New variable. + (syms_of_mac): Intern and staticpro its elements. + (mac_aelist_to_lisp): Also convert Apple event attributes. + (mac_ae_put_lisp): New function. + (create_apple_event_from_event_ref) [MAC_OSX]: Use typeUTF8Text. + + * macfns.c (Fx_server_version): Use gestaltSystemVersionMajor etc. + + * macselect.c (Qemacs_suspension_id): New variable. + (syms_of_macselect): Intern and staticpro it. + (struct suspended_ae_info): New struct. + (deferred_apple_events, defer_apple_events) + (Fmac_process_deferred_apple_events): Use it. + (suspended_apple_events): New variable. + (mac_handle_apple_event_1): New function. + (mac_handle_apple_event): Use it. Don't process previously + suspended events. + (cleanup_suspended_apple_events, get_suspension_id) + (cleanup_all_suspended_apple_events): New functions. + (init_apple_event_handler): Call cleanup_all_suspended_apple_events + at exit. + (Fmac_cleanup_expired_apple_events, Fmac_ae_set_reply_parameter) + (Fmac_resume_apple_event): New defuns. + (syms_of_macselect): Defsubr them. + + * macterm.c (fn_keycode_to_keycode_table, XTread_socket) [MAC_OSX]: + Fix last change. Don't map `fn' modifier if pressed with F1 ... F12. + + * macterm.h (TYPE_FILE_NAME): Change from macro to enumerator. + (KEY_EMACS_SUSPENSION_ID_ATTR): New enumerator. + (keyReplyRequestedAttr) [MAC_OS_X_VERSION_MAX_ALLOWED < 1030]: Likewise. + (gestaltSystemVersionMajor, gestaltSystemVersionMinor) + (gestaltSystemVersionBugFix) [MAC_OS_X_VERSION_MAX_ALLOWED < 1040]: + Likewise. + (typeUTF8Text, kEventParamWindowMouseLocation) + [MAC_OSX && MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Likewise. + (x_get_focus_frame, mac_ae_put_lisp): Add externs. + +2006-05-23 YAMAMOTO Mitsuharu + + * macterm.c (fn_keycode_to_xkeysym_table, convert_fn_keycode): Remove. + (fn_keycode_to_keycode_table) [MAC_OSX]: New variable. + (mac_set_unicode_keystroke_event) [TARGET_API_MAC_CARBON]: New function. + (XTread_socket) [TARGET_API_MAC_CARBON]: Use it. + (XTread_socket) [MAC_OSX]: Try 'uchr' Unicode keyboard-layout + resource to backtranslate key with modifiers. + (XTread_socket): Don't set read_socket_inev around AEProcessAppleEvent. + +2006-05-23 Jan Dj,Ad(Brv + + * xterm.c: Remove declarations already in xterm.h. + + * xterm.h: Add extern declarations for x_clear_errors, + x_fully_uncatch_errors, x_catching_errors and + x_alloc_lighter_color_for_widget. Remove duplicated declarations. + +2006-05-21 Richard Stallman + + * xfaces.c (best_matching_font): Abort for best == NULL + before we start to use it. + + * buffer.c (syms_of_buffer, Fmake_overlay): Doc fixes. + +2006-05-20 Kim F. Storm + + * xfaces.c (best_matching_font): Fix crash in 2006-05-17 change. + +2006-05-20 YAMAMOTO Mitsuharu + + * macterm.c (convert_fn_keycode): Fix last change. + +2006-05-19 Eli Zaretskii + + * w32.c (init_environment): Perform the processing of environment + variables on a copy of default variables and their values, not on + the original. Simplify code that calls ExpandEnvironmentStrings + and make buf1[] and buf2[] more visible for easier debugging. + +2006-05-19 YAMAMOTO Mitsuharu + + * frame.c (x_set_border_width): Remove #ifndef MAC_OS. + + * image.c [MAC_OS] (gif_load): Allocate Lisp string first. + + * macfns.c (Fx_focus_frame): Don't check dpyinfo->x_focus_frame. + + * macterm.c (XTread_socket) [TARGET_API_MAC_CARBON && MAC_OSX]: + Forward keyUp events to toolbox_dispatcher. + + * window.c (foreach_window): Check WINDOWP (FRAME_ROOT_WINDOW (f)). + +2006-05-18 Jan Dj,Ad(Brv + + * config.in: Regenerated (HAVE_ALSA). + + * sound.c (alsa_sound_perror, alsa_open, alsa_period_size) + (alsa_configure, alsa_close, alsa_choose_format, alsa_write) + (snd_error_quiet, alsa_init): New functions. + (vox_init): Return 0 if unable to open device. + (Fplay_sound_internal): Test for alsa first and use vox (oss) as + a fallback. + (struct sound_device): Add period_size. + (wav_play, au_play): Use period_size if set. + + * Makefile.in (CFLAGS_SOUND): New flags for ALSA. + (ALL_CFLAGS): Add CFLAGS_SOUND. + +2006-05-18 Kenichi Handa + + * callproc.c (Fcall_process): Reject encoding arguments by + ascii-incompatible coding systems (e.g. utf-16). + + * coding.c (Qascii_incompatible): New variable. + (syms_of_coding): Setup Qascii_incompatible. + (setup_coding_system): Be sure to initialize coding->common_flags. + Check `ascii-incompatible' property of the coding system. + + * coding.h (CODING_ASCII_INCOMPATIBLE_MASK): New macro. + +2006-05-18 Kim F. Storm + + * xdisp.c (display_tool_bar_line): Restore entire tool-bar + geometry when backtracking in case last image doesn't fit on line. + +2006-05-18 MIYOSHI Masanori (tiny change) + + * xdisp.c (display_tool_bar_line): Don't adjust tool-bar height by + more than height of one frame default line. + +2006-05-17 Richard Stallman + + * xfaces.c (better_font_p): Any font beats no font. + (best_matching_font): Simplify based on above change. + + * buffer.c (Fprevious_overlay_change, Fnext_overlay_change): Doc fixes. + +2006-05-16 Kim F. Storm + + * xterm.c (handle_one_xevent): Check that f is not NULL before + calling x_kill_gs_process. + +2006-05-14 Richard Stallman + + * textprop.c (Fnext_single_char_property_change) + (Fprevious_single_char_property_change): Don't allow returning + value beyond LIMIT in any cases. + (Fnext_char_property_change, Fprevious_char_property_change): Doc fix. + + * intervals.c (get_local_map): Abort if POSITION outside BEGV, ZV. + +2006-05-14 Jan Dj,Ad(Brv + + * xterm.c (handle_one_xevent): Check that f is not NULL before + calling _XEditResCheckMessages. + +2006-05-14 Kim F. Storm + + * xterm.c (handle_one_xevent): Fix crash in 2006-03-24 change. + +2006-05-13 Eli Zaretskii + + * frame.c (x_set_border_width): Fix error message to say "frame", + not "window". + + * Makefile.in (SOME_MACHINE_LISP): Add fringe.elc. + +2006-05-12 Chong Yidong + + * intervals.c (set_point_both): Fix mixup before before and after + in variable names. + + * editfns.c (Fline_beginning_position): Inhibit point-motion hooks + while setting point temporarily. + +2006-05-11 Richard Stallman + + * lread.c (readevalloop): Abort if START non-nil for non-buffer input. + +2006-05-11 Kim F. Storm + + * xdisp.c (redisplay_tool_bar): Handle large tool-bar-border values. + +2006-05-11 Kenichi Handa + + * fileio.c (Finsert_file_contents): Fix for the case of IO error + while handling replace operation. + +2006-05-10 Kenichi Handa + + * xfaces.c (realize_default_face) [HAVE_X_WINDOWS]: If the font + chosen for the default face was different from the frame font, + adjust the frame font. + +2006-05-10 YAMAMOTO Mitsuharu + + * image.c (Qduration) [MAC_OS]: Undo previous change. + (syms_of_image) [MAC_OS]: Likewise. + [MAC_OS] (gif_load): Emulate Graphic Control Extension block. + + * macfns.c (x_to_mac_color): Fix shift amount change. + (mac_set_font) [USE_MAC_FONT_PANEL]: Use x_get_focus_frame. + [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): Doc fix. + + * macselect.c (Vmac_service_selection) [MAC_OSX]: Rename from + Vmac_services_selection. All uses changed. + (mac_store_service_event): Rename from mac_store_services_event in + extern and calls. + + * macterm.c (Qservice) [MAC_OSX]: Rename from Qservices. All uses + changed. + [MAC_OSX] (mac_store_service_event): Rename from + mac_store_services_event. All callers changed. + [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): Add args + FACE_ID and C. All callers changed. + (x_free_frame_resources) [USE_MAC_FONT_PANEL]: Call + mac_set_font_info_for_selection when focus frame is destroyed. + (XTread_socket): Revert to FrontNonFloatingWindow/FrontWindow. + + * macterm.h (mac_set_font_info_for_selection): Add 2nd and 3rd + args in extern. + +2006-05-09 Chong Yidong + + * keymap.c (describe_map): Avoid generating duplicate entries if + the shadowed binding has the same definition. + +2006-05-09 Kenichi Handa + + * keymap.c (push_key_description): Handle invalid character key. + +2006-05-08 Kenichi Handa + + * callproc.c (Fcall_process): Use system_eol_type for encoding + arguments if eol_type is not yet decided. + + * coding.h (system_eol_type): Extern it. + + * coding.c (setup_coding_system): For invalid coding-system, set + coding->eol_type to CODING_EOL_UNDECIDED. + (encode_coding): Cancel previous change. + (shrink_encoding_region): Likewise. + (code_convert_region1): Likewise. + (code_convert_string1): Likewise. + (code_convert_string_norecord): Likewise. + + * fileio.c (choose_write_coding_system): Use system_eol_type for + encoding if eol_type is not yet decided. + + * process.c (setup_process_coding_systems): Use system_eol_type + for encoding if eol_type is not yet decided. + (read_process_output): Likewise. + (send_process): Likewise. + +2006-05-07 Juanma Barranquero + + * minibuf.c (syms_of_minibuf) : Fix typo in doc. + +2006-05-07 YAMAMOTO Mitsuharu + + * mac.c (Fmac_clear_font_name_table): Move defun to macfns.c. + (syms_of_mac): Likewise for defsubr. + + * macfns.c (mac_set_font): New function. + (mac_frame_parm_handlers, syms_of_macfns): Replace x_set_font with it. + (mac_window) [TARGET_API_MAC_CARBON && MAC_OSX]: Specify + kWindowToolbarButtonAttribute when creating window. + (Fmac_clear_font_name_table): Move from macfns.c. + (syms_of_macfns): Likewise for defsubr. + [USE_MAC_FONT_PANEL] (Fmac_set_font_panel_visibility): New defun. + (syms_of_macfns) [USE_MAC_FONT_PANEL]: Defsubr it. + + * macgui.h (USE_MAC_FONT_PANEL): Define to 1 if USE_ATSUI is set + and build is done on Mac OS X 10.2 and later. + + * macselect.c (mac_do_receive_drag): Remove unused variable `index'. + (mac_store_services_event): Change return type in extern. + + * macterm.c (XLoadQueryFont) [USE_ATSUI]: Set font->mac_fontnum to + FMFontFamily value. + [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): New function. + (x_new_focus_frame) [USE_MAC_FONT_PANEL]: Use it. + (QCfamily, QCweight, QCslant, Qnormal, Qbold, Qitalic): Add extern. + (QWindow) [MAC_OSX]: Likewise. + (Qfont) [USE_MAC_FONT_PANEL]: Likewise. + (Vmac_atsu_font_table) [USE_ATSUI]: New variable. + (syms_of_macterm) [USE_ATSUI]: Defvar it. + (Qtoolbar_switch_mode) [MAC_OSX]: New variable. + (Qpanel_closed, Qselection) [USE_MAC_FONT_PANEL]: Likewise. + (syms_of_macterm): Intern and staticpro them. + (init_font_name_table) [USE_ATSUI]: Add data to Vmac_atsu_font_table. + [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event): + New function. + [USE_CARBON_EVENTS] (mac_handle_command_event): Use it. + [MAC_OSX] (mac_store_services_event): Likewise. + [USE_CARBON_EVENTS] (mac_handle_window_event) [MAC_OSX]: Handle + kEventWindowToolbarSwitchMode event. + (install_window_handler) [USE_CARBON_EVENTS && MAC_OSX]: Register it. + [MAC_OSX] (mac_store_services_event): Change return type to OSStatus. + [USE_MAC_FONT_PANEL] (mac_handle_font_event): New function. + (install_window_handler) [USE_MAC_FONT_PANEL]: Install it. + (XTread_socket): Select window on mouse click if x_focus_frame is NULL. + + * macterm.h (mac_set_font_info_for_selection): Add extern. + +2006-05-06 YAMAMOTO Mitsuharu + + * image.c (Qduration) [MAC_OS]: New variable. + (syms_of_image) [MAC_OS]: Intern and staticpro it. + [MAC_OS] (gif_load): Save image extension data in img->data.lisp_val. + [MAC_OSX] (image_load_quartz2d): Use cfstring_create_with_utf8_cstring + instead of cfstring_create_with_string. + +2006-05-06 Kim F. Storm + + * .gdbinit (xframe): Print frame name. + (xlist): New command to print a list (max 10 elements). + (xpr): Print lisp object of any type. + (pitx): Print it->pixel_width. + +2006-05-05 Kenichi Handa + + * xdisp.c (handle_composition_prop): Fix for the case of empty + composition component. + +2006-05-05 YAMAMOTO Mitsuharu + + * keyboard.c (make_lispy_event) [MAC_OS]: Get Apple event info + from event->arg. + + * termhooks.h (enum event_kind) [MAC_OS]: Update comment for + MAC_APPLE_EVENT. + + * macterm.h (mac_make_lispy_event_code): Remove extern. + (mac_post_mouse_moved_event): Add extern. + (mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to + `const AEDesc *' in externs. + (create_apple_event_from_drag_ref) [TARGET_API_MAC_CARBON]: New extern. + + * mac.c (mac_aelist_to_lisp, mac_aedesc_to_lisp): Change arg 1 to + `const AEDesc *'. + [TARGET_API_MAC_CARBON] (create_apple_event): New function. + [TARGET_API_MAC_CARBON] (create_apple_event_from_event_ref): Use it. + Use xrealloc instead of repeated xmalloc/xfree. + [TARGET_API_MAC_CARBON] (create_apple_event_from_drag_ref): + New function. + + * macmenu.c (restore_menu_items, cleanup_popup_menu): Return a value. + + * macselect.c: Update copyright year. + (mac_store_apple_event): Change return type to void in extern. + (mac_handle_apple_event): Don't get return value from + mac_store_apple_event. + [TARGET_API_MAC_CARBON] (Vmac_dnd_known_types): New variable. + (syms_of_macselect) [TARGET_API_MAC_CARBON]: Defvar it. + [TARGET_API_MAC_CARBON] (mac_do_track_drag): Move function from + macterm.c. Use Vmac_dnd_known_types as acceptable flavors. + [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise. New + implementation using create_apple_event_from_drag_ref. + [TARGET_API_MAC_CARBON] (mac_do_track_dragUPP) + (mac_do_receive_dragUPP): Move variables from macterm.c. + (install_drag_handler, remove_drag_handler): New functions. + + * macterm.c (XTread_socket) [TARGET_API_MAC_CARBON]: Try window + path select also for proxy icon click. + [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event): New function. + [USE_TOOLKIT_SCROLL_BARS] (scroll_bar_timer_callback): Use it. + (xlfdpat_create): Remove unused label `error' and trailing sentences. + (mac_do_track_drag, mac_do_receive_drag): Move functions to macselect.c. + (mac_do_track_dragUPP, mac_do_receive_dragUPP): Move variables to + macselect.c. + (install_drag_handler, remove_drag_handler): Add extern. + (mac_store_apple_event): Change return type to void. All uses changed. + Create Lisp object from Apple event and store it into input event. + (mac_make_lispy_event_code): Remove function. + [TARGET_API_MAC_CARBON] (mac_store_drag_event): New function. + (install_window_handler): Call install_drag_handler. + (remove_window_handler): Call remove_drag_handler. + +2006-05-03 Richard Stallman + + * sound.c (Fplay_sound_internal): Dynamically allocate + current_sound_device and current_sound. + (sound_cleanup): Free them. + + * minibuf.c (read_minibuf): Don't use read_minibuf_noninteractive + when inside a keyboard macro. + +2006-05-02 Andreas Schwab + + * xmenu.c (restore_menu_items): Return a value. + +2006-05-01 Martin Rudalics + + * syntax.c (Fforward_comment): Detect generic comment at beginning of + buffer when moving backwards. + +2006-05-01 YAMAMOTO Mitsuharu + + * dispnew.c (update_window): Don't set changed_p when mode/header + line is updated. + + * xdisp.c (prepare_menu_bars) [MAC_OS]: Call mac_update_title_bar. + (get_glyph_face_and_encoding, get_char_face_and_encoding): + Don't distinguish known faces from others. + + * mac.c (mac_coerce_file_name_ptr): Try typeFSRef if coercion + through typeFileURL failed. + + * macfns.c (mac_update_title_bar): New function. + [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): New function. + (show_hourglass, hide_hourglass) [USE_CG_DRAWING]: + Call mac_prepare_for_quickdraw. + + * macgui.h (USE_ATSUI): Set default to 1 if MAC_OSX is defined. + (USE_CG_DRAWING): Don't define if compiled on Mac OS X 10.1. + (enum pcm_status): New enum. + (XCHARSTRUCTROW_CHAR_VALID_P, XCHARSTRUCTROW_SET_CHAR_VALID) + (XCharStructRow): Remove. Now validity is represented by + non-negativeness of sum of ascent and descent. + (struct MacFontStruct): Change type of member `rows'. + (struct _XGC) [USE_CG_DRAWING]: Add member `clip_rects'. + + * macterm.c (mac_draw_line, mac_draw_line_to_pixmap): + Adjust endpoints of strictly horizontal/vertical lines. + (mac_set_clip_rectangles) [USE_CG_DRAWING]: Set clip_rects. + (pcm_init, pcm_get_status): New functions. + (x_per_char_metric, XLoadQueryFont): Use them instead of + XCharStructRow and related macros. + (x_draw_relief_rect): Don't adjust arguments of mac_draw_line. + (x_free_frame_resources) [TARGET_API_MAC_CARBON]: Free FRAME_FILE_NAME. + (XTread_socket) [TARGET_API_MAC_CARBON]: Handle proxy icon drag + and window path pop-up menu on title bar. + (mac_use_core_graphics) [USE_CG_DRAWING]: Set default to 1. + + * macterm.h (mac_update_title_bar): Add extern. + (struct mac_output) [TARGET_API_MAC_CARBON]: New member `file_name'. + (FRAME_FILE_NAME): New macro. + + * unexmacosx.c (unexec): Error if trying unexec from dumped executable. + +2006-04-30 Richard Stallman + + * keymap.c (Fdefine_key): Improve error message + when KEY begins with a non-prefix key. + +2006-04-30 Martin Rudalics + + * syntax.c (Fforward_comment): Don't forget to break out of the loop + when we skipped backward over a generic comment. + +2006-04-27 Nick Roberts + + * .gdbinit (pp1, pv1): Only print value as expression is now + printed out by gud-print. + (pv1): Correct doc string. + +2006-04-26 Stefan Monnier + + * keymap.c (store_in_keymap): Change `def' arg to not be `register'. + Seems to trigger a bug in gcc-amd64 4.0.2 20051125 (Red Hat 4.0.2-8): + keymap.c:895: error: address of register variable `def' requested. + +2006-04-26 Jason Rumney + + * w32term.c (construct_mouse_wheel): Handle negative coordinates. + + * w32fns.c (w32_wnd_proc) : + : Call signal_user_input in the cases + where we preempt mouse_button_timer. + +2006-04-25 Miles Bader + + * editfns.c (Ffield_beginning, find_field): Undo change of 2006-04-23. + +2006-04-24 Stefan Monnier + + * process.h: Include headers for pid_t. + +2006-04-24 Kim F. Storm + + * xdisp.c (fill_stretch_glyph_string): Set s->nchars = 1 for code which + does last_glyph=s->first_glyph+s->nchars-1, e.g. if stretch has relief. + (produce_stretch_glyph): Assume that face box height and width is + already included in stretch glyph size so caller doesn't have to + consider the extra space otherwise added (fixes problem in ses.el). + + * frame.c (x_set_font): Clear f->n_tool_bar_rows and current frame + matrices to force recalculation of tool-bar height after font change. + + * xdisp.c (tool_bar_lines_needed): New local `temp_row' for clarity. + Clear it when done, so we don't accidentally draw a second copy of + the tool-bar after resetting f->n_tool_bar_rows. + (redisplay_tool_bar): Update tool-bar-lines frame parameter whenever + we recalculate f->n_tool_bar_rows. + +2006-04-23 Lars Hansen + + * editfns.c (find_field): Fix comment. + (Ffield_beginning): Fix bug when POS is at field beginning. + +2006-04-22 Eli Zaretskii + + * puresize.h (BASE_PURESIZE): Increase to 1205000. + +2006-04-21 Kim F. Storm + + * xdisp.c (redisplay_window): Fix last change. Don't recenter if + window start is at BEGV. + + * dispextern.h (struct image): New member `corners'. + (TOP_CORNER, LEFT_CORNER, BOT_CORNER, RIGHT_CORNER): New macros. + + * image.c (four_corners_best): New arg CORNERS specifies what pixels + to look at in case image has margin. + (x_create_bitmap_mask): Pass NULL for CORNERS to four_corners_best. + (image_background, image_background_transparent) + (x_build_heuristic_mask): Pass img->corners to four_corners_best. + (gif_load): Set img->corners according to image's margin spec. + Use img->corners values directly where applicable. + Save image extension data in img->data.lisp_val. + (gif_clear_image): New function to free img->data.lisp_val. + (gif_type): Use it instead of generic x_clear_image. + (Fimage_extension_data): New defun. + (syms_of_image): Defsubr it. + +2006-04-21 John Sullivan (tiny change) + + * window.c (Fdisplay_buffer): Doc fix. + +2006-04-21 Eli Zaretskii + + * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Increase to 25000. + +2006-04-21 YAMAMOTO Mitsuharu + + * image.c [MAC_OS] (xpm_load_image): Fill in background field + while we have ximg handy. + + * macmenu.c (restore_menu_items, save_menu_items): New functions + from xmenu.c. + (set_frame_menubar, digest_single_submenu): Apply 2006-04-18 + changes for xmenu.c. + + * macterm.c (x_per_char_metric): Return NULL if glyph width is 0. + (add_mac_font_name): New function. + (init_font_name_table): Use it. Adopt the first found font from + those having the same family name. + +2006-04-21 Nick Roberts + + * xdisp.c (note_mouse_highlight): Use build_string. + +2006-04-20 Lars Hansen + + * textprop.c (Fremove_list_of_text_properties): + Ensure modify_region is called only when buffer is modified and that + signal_after_change is allways called in that case. + + * print.c (PRINTFINISH): Call signal_after_change. + +2006-04-20 Kim F. Storm + + * xdisp.c (redisplay_window): Fix last change. + + * xdisp.c (redisplay_window): If current window start is not at the + beginning of a line, select a new window start if buffer is modified + and window start is in the modified region, but the first change is + before window start. + +2006-04-18 Richard Stallman + + * xmenu.c (restore_menu_items, save_menu_items): New fns. + (set_frame_menubar): Use save_menu_items. Save updated vector in + the frame before unwinding it. Don't use unuse_menu_items. + Don't use discard_menu_items. + (digest_single_submenu): Abort if an item is not in a pane. + (init_menu_items): Put the error check at the top. + + * keymap.c (describe_map): Make "shadowed" warning more verbose. + + * window.c (adjust_window_trailing_edge): Correctly distinguish + series vs parallel cases, even when window has no parent. + + * abbrev.c (record_symbol): New function. + (Finsert_abbrev_table_description): Sort the abbrevs alphabetically. + +2006-04-18 YAMAMOTO Mitsuharu + + * image.c (x_create_bitmap_from_data) [MAC_OS]: Don't check return + value of xmalloc. + + * mac.c (mac_coerce_file_name_ptr, mac_coerce_file_name_desc) + (create_apple_event_from_event_ref, xrm_get_preference_database) + (cfstring_create_normalized): Don't check return value of xmalloc. + + * macselect.c (get_scrap_target_type_list, defer_apple_events) + (copy_scrap_flavor_data, mac_handle_service_event): Don't check + return value of xmalloc/xrealloc. + + * macterm.c (XCreateGC, x_per_char_metric, xlfdpat_create) + (init_font_name_table, init_font_name_table, mac_do_list_fonts) + (XLoadQueryFont, mac_store_apple_event): Don't check return value + of xmalloc. + +2006-04-17 Kim F. Storm + + * window.c (coordinates_in_window): On the vertical border, + calculate the row number measured from the top of the window, not + the top of the frame. + (window_loop): Test w->dedicated with !NILP instead of EQ Qt. + (window_scroll_pixel_based): Fix off-by-one bug in 2002-12-23 change. + +2006-04-16 Eli Zaretskii + + * s/ms-w32.h (SYSTEM_PURESIZE_EXTRA): Reduce to 24000. + +2006-04-16 Romain Francoise + + * puresize.h (BASE_PURESIZE): Decrement back to 1200000. + +2006-04-16 Andreas Schwab + + * puresize.h (PURESIZE_RATIO): Reduce to 10/6. + +2006-04-15 Romain Francoise + + * puresize.h (BASE_PURESIZE): Increment to 1210000. + +2006-04-13 Micha,Ak(Bl Cadilhac + + * print.c (Fprin1_to_string): Mention in the `doc' that the + behavior is modified by `print-level' and `print-length'. + +2006-04-13 Kenichi Handa + + * coding.c (setup_coding_system): If eol-type is not yet decided + and system_eol_type is not LF, set CODING_REQUIRE_ENCODING_MASK. + If coding_system is nil, return 0. + (code_convert_region1): Even if coding_system is nil, don't skip + conversion if system_eol_type is not LF. + (code_convert_string1): Likewise. + (code_convert_string_norecord): Likewise. + +2006-04-13 Kenichi Handa + + * coding.c (setup_coding_system): Fix previous change. + (encode_coding): If eol_type is not yet decided, use system_eol_type. + (shrink_encoding_region): If eol_type is not yet decided and + system_eol_type is not LF, don't shrink. + +2006-04-13 Nick Roberts + + * xdisp.c (note_mouse_highlight): Add help echo for dragging vertical + line. + +2006-04-12 Richard Stallman + + * keyboard.c (read_key_sequence): Explicitly avoid keybuf[-1]. + + * process.c (conv_lisp_to_sockaddr): If FAMILY unknown, just return. + (Fprocess_send_eof): Abort if fail to open null device. + +2006-04-12 YAMAMOTO Mitsuharu + + * fns.c [HAVE_MENUS && MAC_OS]: Include macterm.h. + + * image.c [MAC_OS] (xpm_load_image): Add parentheses around + assignment used as truth value. Add explicit braces to avoid + ambiguous `else'. + [MAC_OS] (gif_load): Remove unused variable `gcpro1'. + + * lisp.h (syms_of_fontset, Fset_fontset_font): Put extern and + EXFUN in #ifdef HAVE_WINDOW_SYSTEM. + (syms_of_xfns, syms_of_xsmfns, syms_of_xselect, syms_of_xterm): + Put externs in #ifdef HAVE_X_WINDOWS. + (syms_of_macfns, syms_of_macselect, syms_of_macterm) + (syms_of_macmenu, syms_of_mac) [MAC_OS]: Add externs. + (init_mac_osx_environment) [MAC_OSX]: Add extern. + + * mac.c (init_process): Remove undef. + (select) [MAC_OSX]: Undefine before including sysselect.h. + (posix_pathname_to_fsspec, fsspec_to_posix_pathname) [MAC_OSX]: + Remove functions and prototypes. + (parse_value): Add parentheses around + inside shift. + (path_from_vol_dir_name): Make static. + (get_temp_dir_name): Remove unused variables `cpb' and `dir_name'. + [!MAC_OSX] (get_path_to_system_folder): Likewise. + (Fmac_get_file_creator, Fmac_get_file_type): Remove unused + variable `cCode'. + (Fmac_coerce_ae_data): Remove unused variables `fref' and `fs'. + (Fmac_get_preference): Add explicit braces to avoid ambiguous `else'. + + * macfns.c (x_to_mac_color): Remove unused variable `tail'. + (x_set_mouse_color): Remove unused variable `dpy'. + (Fx_create_frame): Remove unused variable `x_frame_count'. + (Fx_server_version): Add explicit braces to avoid ambiguous `else'. + (x_sync): Move from macterm.c. + (Fx_file_dialog): Remove unused variable `default_filter_index'. + + * macmenu.c (min_menu_id): Make element type explicit. + + * macselect.c (get_flavor_type_from_symbol): Remove unused + variable `val'. + (get_scrap_private_timestamp, x_get_foreign_selection) + (copy_scrap_flavor_data): Add explicit braces to avoid ambiguous `else'. + (Fmac_process_deferred_apple_events): Remove unused variables + `keyword', `reply', `apple_event', `count', and `err'. + + * macterm.c: Don't include gnu.h. + (x_io_error_quitter, x_draw_image_foreground_1): Remove prototypes. + (x_sync): Move to macfns.c. + [USE_CG_DRAWING] (mac_define_fringe_bitmap): Remove unused + variable `mask_bits'. + (mac_compute_glyph_string_overhangs): Avoid ambiguous `else'. + (x_draw_image_glyph_string): Remove unused variable `pixmap'. + (x_mac_to_emacs_modifiers): Remove function. + (XTset_vertical_scroll_bar, mac_handle_visibility_change) + (x_make_frame_visible, xlfdpat_create, mac_handle_command_event): + Add explicit braces to avoid ambiguous `else'. + (x_make_frame_visible): Remove unused variables `type', + `original_top', and `original_left'. + (mac_do_list_fonts, XTread_socket): Add parentheses around && within ||. + (x_load_font): Remove unused variables `full_name', and `value'. + (do_get_menus, do_init_managers, do_check_ram_size) [!MAC_OS8]: + Remove functions. + (do_zoom_window): Reorganize variables with respect to conditionals. + (init_command_handler): Remove unused variable `err'. + [MAC_OSX] (mac_check_bundle): Remove unused variable `child'. + + * macterm.h (x_set_mouse_position, x_set_mouse_pixel_position) + (x_make_frame_invisible, x_iconify_frame, x_free_frame_resources) + (x_destroy_window, x_wm_set_size_hint, x_delete_display, XFreeGC) + (do_menu_choice, have_menus_p, x_real_positions) + (x_set_menu_bar_lines, x_pixel_width, x_pixel_height, x_char_width) + (x_char_height, x_sync, x_set_tool_bar_lines, x_activate_menubar) + (free_frame_menubar): Add externs. + + * unexmacosx.c: Include config.h before using HAVE_MALLOC_MALLOC_H. + (malloc, realloc, free): Add undefs. + (read_load_commands): Remove unused variable `n' and `j'. + (copy_data_segment): Remove unused variable `r'. + + * xdisp.c (get_glyph_string_clip_rects): Add parentheses around && + within ||. Add explicit braces to avoid ambiguous `else'. + (dump_glyph_row): Remove label for `inverse_p' from legend. + + * xfaces.c (Finternal_merge_in_global_face, try_font_list): + Add explicit braces to avoid ambiguous `else'. + +2006-04-11 Micha,Ak(Bl Cadilhac + + * dispnew.c (init_display): Don't init X display if the user asked + for a non-X display. + +2006-04-12 Kenichi Handa + + * coding.c (setup_coding_system): Use system_eol_type for default + coding->eol_type. + +2006-04-11 Dan Nicolaescu + + * lisp.h (wrong_type_argument): Mark as NO_RETURN. + + * data.c (wrong_type_argument): Try to avoid compiler warnings due + to the fact the function is now marked as NO_RETURN. + +2006-04-10 Eli Zaretskii + + * s/ms-w32.h (pid_t) [_MSC_VER]: New typedef. + +2006-04-10 Romain Francoise + + * xrdb.c (gethomedir): Use xstrdup. + +2006-04-10 Andreas Schwab + + * xrdb.c (gethomedir): Make sure to always return a pointer that + can be passed to free. + +2006-04-09 Richard Stallman + + * lisp.h (Fkill_emacs): Undo previous change. + +2006-04-08 Richard Stallman + + * search.c (boyer_moore): Test ch >= 0400, not >. + +2006-04-09 Dan Nicolaescu + + * puresize.h (pure_write_error): Mark as NO_RETURN. + + * lisp.h (args_out_of_range, args_out_of_range_3, Fkill_emacs): + Likewise. + +2006-04-08 Eli Zaretskii + + * w32fns.c (w32_wnd_proc) : Ignore mouse movements + if a menu is active on this frame. + +2006-04-08 Dan Nicolaescu + + * lisp.h (report_file_error): Mark as NO_RETURN. + +2006-04-08 Eli Zaretskii + + * alloc.c [STDC_HEADERS]: Include stddef.h. + + * lisp.h (PSEUDOVECSIZE): Fix last change. + +2006-04-08 Stefan Monnier + + * process.h (struct Lisp_Process): Replace Lisp_Objects `pid', + `raw_status_high', and `raw_status_low' with plain integers, and move + them to the end of the structure. + + * alloc.c (allocate_process): Use PSEUDOVECSIZE to initialize the + pseudovector's size field so only the Lisp_Object fields get GC'd. + + * process.c (update_status, make_process, Fdelete_process) + (Fprocess_status, list_processes_1, start_process_unwind) + (create_process, Fmake_network_process, server_accept_connection) + (wait_reading_process_output, send_process, Fprocess_running_child_p) + (process_send_signal, proc_encode_coding_system, Fprocess_send_eof) + (sigchld_handler, status_notify): Adjust to new non-Lisp fields for + `pid' and `raw_status'. + (Fprocess_id, Fsignal_process): Same, and additionally use floats when + representing PIDs that are larger than most-positive-fixnum. + + * keymap.c (describe_map): Only use XINT if we checked INTEGERP. + + * lisp.h (OFFSETOF, PSEUDOVECSIZE): New macros. + +2006-04-08 Eli Zaretskii + + * w32fns.c (Fx_show_tip): Add 3 to the 5th arg of SetWindowPos. + +2006-04-03 Paul Eggert + + * editfns.c (TM_YEAR_IN_ASCTIME_RANGE): New macro, identical to + ../lib-src/b2m.c and ../lib-src/editfns.c. + (Fcurrent_time_string): Use it. + Document that the year might not consume 4 columns if it's outside + the range 1000-9999. + Check for asctime failure. + Don't assume that the output string length is always exactly 24. + +2006-04-03 YAMAMOTO Mitsuharu + + * macterm.c (XTread_socket): Initialize variable `f' before its use. + +2006-04-03 Kenichi Handa + + * image.c: Include "charset.h" and "coding.h". + (x_find_image_file): Return an encoded file name. + +2006-04-01 Eli Zaretskii + + * configure: Regenerated. + +2006-03-31 Kenichi Handa + + * xfns.c (xg_set_icon): Delete superfluous UNGCPRO. + +2006-03-30 Dan Nicolaescu + + * xdisp.c (syms_of_xdisp): Fix variable name. + +2006-03-30 Kenichi Handa + + * xterm.c (x_term_init): Delete superfluous UNGCPRO. + +2006-03-29 Juanma Barranquero + + * keyboard.c (process_tool_bar_item): Reorder dummy args. + +2006-03-29 Stefan Monnier + + * keyboard.c (tool_bar_items): Use map_keymap. + (process_tool_bar_item): Add dummy args to fit the required interface. + +2006-03-25 Eli Zaretskii + + * .gdbinit (pr, pp, pp1, pv, pv1): Force print_output_debug_flag + to zero before calling debug_print or safe_debug_print. + + * print.c (print_output_debug_flag): New global variable. + (Fexternal_debugging_output) [WINDOWSNT]: Don't call + OutputDebugString if print_output_debug_flag is zero. + +2006-03-24 Paul Eggert + + * editfns.c (TM_YEAR_BASE): Move up, so the changes below can use it. + (Fdecode_time, Fencode_time): Use TM_YEAR_BASE instead of 1900. + (Fdecode_time): Cast tm_year to EMACS_INT. + (Fcurrent_time_string): Report an invalid time specification if + the argument is invalid. Also, check for out-of-range time stamps. + +2006-03-24 Kim F. Storm + + * xterm.c (handle_one_xevent): + * w32term.c (w32_read_socket): + * macterm.c (XTread_socket): Don't let key-press clear mouse face + on in toolbar window if mouse-highlight is an integer. + + * fns.c (sxhash_list): Include last non-nil CDR in hash. + +2006-03-24 YAMAMOTO Mitsuharu + + * macmenu.c (enum mac_menu_kind): New enum. + (min_menu_id): New variable. + (POPUP_SUBMENU_ID, MIN_POPUP_SUBMENU_ID, MIN_MENU_ID) + (MIN_SUBMENU_ID): Remove defines. All uses are replaced with + min_menu_id and enumerators in enum mac_menu_kind. + (fill_menu, dispose_menus, install_menu_quit_handler): New arg KIND. + All uses changed. Add range check for menu ID. + (fill_menubar): Add range check for menu ID. + [HAVE_CANCELMENUTRACKING] (menu_quit_handler): Check error code of + GetEventParameter. + (set_frame_menubar, mac_menu_show): Call install_menu_quit_handler + for each menu kind. + +2006-03-22 Kim F. Storm + + * xdisp.c: Undo 2006-03-21 change. + + * term.c: Define aliases for append_glyph and produce_stretch_glyph + when `static' is defined to avoid name clash with those in xdisp.c. + + * process.c (Faccept_process_output): Fix to comply with lisp + reference. Change arg "timeout" to "seconds" and allow both + integer and float value. Change arg "timeout-msec" to "millisec" + and interpret" as milliseconds rather than microseconds. Fix doc + string accordingly. + +2006-03-21 Ken Raeburn + + * xdisp.c (store_next_glyph): Rename from append_glyph. + (generate_stretch_glyph): Rename from produce_stretch_glyph. + All callers changed accordingly. + +2006-03-21 Jan Dj,Ad(Brv + + * xterm.c: x_session_initialized new variable. + (x_term_init): Use x_session_initialized to check if + x_session_initialize should be called. + (x_initialize): Initialize x_session_initialized. + +2006-03-21 Kim F. Storm + + * fringe.c (draw_fringe_bitmap): Don't calculate default overlay arrow + bitmap here, but ... + (update_window_fringes): ... here, so we can test if it has changed. + +2006-03-20 Andreas Schwab + + * dispnew.c (init_display): Check DISPLAY here. + + * emacs.c (main): Don't check here. + + * xterm.c (x_display_ok): Don't use DISPLAY env var. + +2006-03-20 Stefan Monnier + + * window.c (window_scroll_pixel_based): Yet another int/Lisp_Object + mixup (YAILOM). + +2006-03-20 Eli Zaretskii + + * emacs.c (main): Fix last change. + +2006-03-20 Kenichi Handa + + * fileio.c (Fwrite_region): Set visit_file to Qnil before GCPRO it. + + * keymap.c (map_keymap): Set tail to Qnil before GCPRO it. + + * xfns.c (xg_set_icon): Remove unnecessary GCPRO. + + * xterm.c (x_term_init): Remove unnecessary GCPRO. + +2006-03-19 Kim F. Storm + + * xdisp.c (set_cursor_from_row): Fix cursor property on overlay string, + so it doesn't associate overlay string with following glyph by default. + Allow integer property value to specify explicit number of buffer + positions associate with overlay string. + +2006-03-18 Chong Yidong + + * xterm.c (x_display_ok): Fix minor bug and compilation warnings. + +2006-03-18 Nozomu Ando + + * m/pmax.h (BROKEN_NOCOMBRELOC) [__NetBSD__]: Define. + (LIB_STANDARD, START_FILES) [__NetBSD__]: Don't define. + (START_FILES, RUN_TIME_REMAP, UNEXEC) [__NetBSD__, __OpenBSD__]: + Don't redefine. + + * m/mips.h: Don't use unexmips on NetBSD. + (LIBS_MACHINE): Move definition lower, so it doesn't use + LD_SWITCH_MACHINE, START_FILES, LIB_STANDARD, LIBS_TERMCAP, + C_SWITCH_MACHINE, and C_DEBUG_SWITCH. + + * unexelf.c [BROKEN_NOCOMBRELOC]: Include assert.h. + (unexec) [BROKEN_NOCOMBRELOC]: Handle platforms whose nocombreloc + option is broken (e.g., MIPS/NetBSD). + +2006-03-18 Craig McDaniel (tiny change) + + * sheap.c (STATIC_HEAP_SIZE): Enlarge STATIC_HEAP_SIZE to 12MB. + Remove the HAVE_X_WINDOWS conditional. + +2006-03-18 Vivek Dasmohapatra (tiny change) + + * emacs.c (main): If user asks for a display that is unavailable, + simulate -nw. + + * xterm.c (x_display_ok): New function. + + * xterm.h: Add prototype for x_display_ok. + +2006-03-18 Eli Zaretskii + + * w32fns.c (Fw32_select_font): Doc fix. + +2006-03-16 YAMAMOTO Mitsuharu + + * image.c [MAC_OS] (XPutPixel, XGetPixel) + [!WORDS_BIG_ENDIAN && USE_CG_DRAWING]: Don't use specialized + version when depth is 32. + (mac_create_cg_image_from_image) [MAC_OS && USE_CG_DRAWING]: + New function. + (prepare_image_for_display) [MAC_OS && USE_CG_DRAWING]: Use it. + (x_clear_image_1) [MAC_OS && USE_CG_DRAWING]: Release CGImage. + + * macterm.c (XCreatePixmap) [!WORDS_BIG_ENDIAN && USE_CG_DRAWING]: + Create GWorld in ARGB pixel format. + (mac_copy_area, mac_copy_area_with_mask) [USE_CG_DRAWING]: + Remove functions. + (x_draw_image_foreground) [USE_CG_DRAWING]: Use mac_draw_cg_image + instead of mac_copy_area/mac_copy_area_with_mask. + +2006-03-15 Kim F. Storm + + * xdisp.c (extend_face_to_end_of_line): Always add space glyph to + empty row. Fixes memory corruption revealed by 2006-03-02 change. + (display_tool_bar_line): Skip empty tool-bar line if HEIGHT < 0. + (tool_bar_lines_needed): Fix tool-bar display in case the tool-bar + width is exactly the same as the window width. Don't count a final + empty tool-bar line (pass HEIGHT = -1 to display_tool_bar_line). + +2006-03-15 Juanma Barranquero + + * fringe.c (w32_init_fringe, w32_reset_fringes): Revert to being + conditional on HAVE_NTGUI, not WINDOWS_NT. + +2006-03-15 YAMAMOTO Mitsuharu + + * dispextern.h (mac_init_fringe) [MAC_OS]: Add prototype. + + * fringe.c (mac_init_fringe) [MAC_OS]: New function. + + * macterm.c (mac_initialize) [USE_CG_DRAWING]: Call mac_init_fringe. + (max_fringe_bmp, fringe_bmp) [USE_CG_DRAWING]: New variables. + (mac_define_fringe_bitmap, mac_destroy_fringe_bitmap) + (mac_draw_cg_image) [USE_CG_DRAWING]: New functions. + (mac_draw_bitmap) [USE_CG_DRAWING]: Remove function. + (x_draw_fringe_bitmap) [USE_CG_DRAWING]: Use mac_draw_cg_image + instead of mac_draw_bitmap. + (x_redisplay_interface) [USE_CG_DRAWING]: Set handlers for + define_fringe_bitmap and destroy_fringe_bitmap. + +2006-03-14 Chong Yidong + + * xterm.c (x_uncatch_errors): Block input for entire function. + +2006-03-12 Jason Rumney + + * w32fns.c (Fx_create_frame): Remove call to + Qface_set_after_frame_default (from xfns.c 2003-05-26). + + * w32menu.c (Fx_popup_menu): Call w32_free_menu_strings when + finished with the menu. + + * w32term.c: Sync 2005-10-24 xterm.c changes. + (last_mouse_glyph_frame): New var. + (note_mouse_movement): Say mouse moved if current frame differs + from last_mouse_glyph_frame, and update last_mouse_glyph_frame. + (w32_mouse_position): Set last_mouse_glyph_frame. + Remove OLD_REDISPLAY_CODE block. + +2006-03-12 YAMAMOTO Mitsuharu + + * macgui.h [USE_ATSUI && MAC_OSX]: Define USE_CG_TEXT_DRAWING to 1. + + * macterm.h (struct mac_output) [USE_CG_DRAWING]: New member cg_context. + (mac_prepare_for_quickdraw) [USE_CG_DRAWING]: Add prototype. + + * mac.c (sys_select) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw. + + * macfns.c (x_create_tip_frame): Apply 2006-03-11 change for xfns.c. + + * macterm.c (mac_draw_rectangle, x_draw_glyph_string_foreground) + (x_draw_composite_glyph_string_foreground) + (x_draw_image_foreground): Undo previous changes. + (x_draw_hollow_cursor): Likewise. Subtract 1 from the last + argument of mac_draw_rectangle. + (CG_SET_FILL_COLOR, CG_SET_STROKE_COLOR): New macros. + (mac_draw_string_common, mac_draw_image_string_cg): Use them. + (FRAME_CG_CONTEXT) [USE_CG_DRAWING]: New macro. + (mac_begin_cg_clip, mac_end_cg_clip, mac_prepare_for_quickdraw) + [USE_CG_DRAWING]: New functions. + (mac_draw_line, mac_erase_rectangle, mac_clear_window) + (mac_fill_rectangle, mac_draw_rectangle, mac_draw_string_common) + (mac_draw_image_string_cg) [USE_CG_DRAWING]: Add Quartz 2D drawing part. + (mac_draw_bitmap, mac_invert_rectangle, mac_draw_string_common) + (mac_copy_area, mac_scroll_area, x_scroll_bar_create) + (x_scroll_bar_remove, XTset_vertical_scroll_bar, x_set_window_size) + (XTread_socket) [USE_CG_DRAWING]: Call mac_prepare_for_quickdraw. + +2006-03-12 L$,1 q(Brentey K,Aa(Broly + + * xfns.c (x_icon): Disable redundant call to `x_wm_set_window_state'. + +2006-03-11 Jason Rumney + + * w32fns.c (signal_user_input): New function. + (post_character_message): Use it for keyboard input. + (w32_msg_pump): Use it for mouse input. + +2006-03-11 Luc Teirlinck + + * window.c: Rename preserve_y to window_scroll_pixel_based_preserve_y. + (window_scroll_pixel_based, syms_of_window): Adapt to above change. + +2006-03-11 Eli Zaretskii + + * w32fns.c (w32_wnd_proc): Ignore middle and extra button events + if a menu is already active (the menubar_active flag is on). + +2006-03-11 David Ponce + + * xfns.c (x_create_tip_frame): Preserve received parms by copying them. + +2006-03-11 Eli Zaretskii + + * w32term.c: Add x_fully_uncatch_errors and x_catching_errors to + the list of unused display error handling functions. + + * eval.c (unwind_to_catch): Call x_fully_uncatch_errors only if + HAVE_X_WINDOWS. + (internal_condition_case, internal_condition_case_1) + (internal_condition_case_2): Call x_catching_errors only if + HAVE_X_WINDOWS. + + * vm-limit.c [HAVE_GETRLIMIT]: Don't define unconditionally. + Don't include sys/resource.h unless defined. + +2006-03-11 Richard Stallman + + * keymap.c (describe_map): Shorten string to indicate shadowed binding. + + * vm-limit.c (get_lim_data, lim_data, data_space_start): + Move from mem-limits.h. + (enum warnlevel): New data type. + (check_memory_limits): Rewrite the logic about warnings. + Use standard `struct rlimit'. Check return values for nonsense. + (memory_warnings): Always clear lim_data. + + * mem-limits.h (get_lim_data, lim_data, data_space_start): + Move to vm-limit.c. + + * xterm.c (x_fully_uncatch_errors, x_catching_errors): New functions. + + * eval.c (unwind_to_catch): Call x_fully_uncatch_errors. + (internal_condition_case_1, internal_condition_case_2): + Abort if within unclosed x_catch_errors. + +2006-03-11 Romain Francoise + + * process.c (Vprocess_adaptive_read_buffering): Doc fix. + +2006-03-11 Giorgos Keramidas (tiny change) + + * lisp.h: Remove duplicate prototypes. Make the prototype of + getloadavg be conditioned on HAVE_GETLOADAVG being undefined. + +2006-03-11 Eli Zaretskii + + * xterm.c (x_draw_hollow_cursor): Subtract 1 from the last + argument of XDrawRectangle. + + * xdisp.c (get_phys_cursor_geometry): Don't decrease height by 1. + + * macterm.c (mac_draw_rectangle): Don't add 1 to width and height. + (x_draw_glyph_string_foreground) + (x_draw_composite_glyph_string_foreground) + (x_draw_image_foreground): Don't subtract 1 from width and height + arguments to mac_draw_rectangle. + (x_draw_hollow_cursor): Add 1 to w->phys_cursor_width. + +2006-03-10 Kim F. Storm + + * alloc.c (USE_POSIX_MEMALIGN): Fix last change. + +2006-03-09 Stefan Monnier + + * alloc.c (USE_POSIX_MEMALIGN): New macro. + (ABLOCKS_BASE, lisp_align_malloc, lisp_align_free): Use it. + +2006-03-09 Kenichi Handa + + * coding.c (DECODE_EMACS_MULE_COMPOSITION_CHAR): Fix decoding + ASCII component of a composition. + +2006-03-08 Luc Teirlinck + + * window.c: Declare preserve_y as a static global variable. + (window_scroll_pixel_based): No longer declare preserve_y; + it is global now. + (syms_of_window): Set preserve_y to -1. + +2006-03-08 YAMAMOTO Mitsuharu + + * image.c [MAC_OS] (XPutPixel): Set alpha channel bits if pixmap + depth is 32. + [MAC_OS] (XGetPixel): Strip off alpha channel bits if pixmap + depth is 32. + +2006-03-06 Chong Yidong + + * xdisp.c (handle_invisible_prop): Don't update it->position with + a buffer position if we're in a display string. + +2006-03-06 YAMAMOTO Mitsuharu + + * macterm.h (MAC_AQUA_VERTICAL_SCROLL_BAR_WIDTH) + (MAC_AQUA_SMALL_VERTICAL_SCROLL_BAR_WIDTH): New defines. + + * macfns.c (x_default_scroll_bar_color_parameter) + (x_set_scroll_bar_foreground, x_set_scroll_bar_background): + Remove unnecessary prototypes. + (x_set_scroll_bar_default_width): + Use MAC_AQUA_VERTICAL_SCROLL_BAR_WIDTH. + (mac_set_scroll_bar_width): New function. + (mac_frame_parm_handlers): Set it as handler for scroll-bar-width. + + * macterm.c (get_control_part_bounds): Fix type of return value. + (x_set_toolkit_scroll_bar_thumb, x_scroll_bar_create) + (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: Don't show + scroll bar if it is not tall enough to display scroll bar thumb. + [USE_CARBON_EVENTS] (mac_convert_event_ref) + (mac_handle_command_event, mac_handle_window_event) + (mac_handle_mouse_event): Check error code of GetEventParameter. + (convert_fn_keycode) [MAC_OSX]: Likewise. + +2006-03-05 Andreas Schwab + + * xselect.c (x_catch_errors_unwind): Fix missing return value. + +2006-03-02 Kim F. Storm + + * frame.h (struct frame): New member n_tool_bar_rows. + + * xdisp.c: Minimize the unpleasent visual impact of the requirement + that non-toolkit tool-bars must occupy an integral number of screen + lines, by distributing the rows evenly over the tool-bar screen area. + (Vtool_bar_border): New variable. + (syms_of_xdisp): DEFVAR_LISP it. + (display_tool_bar_line): Add HEIGHT arg for desired row height. + Make tool-bar row the desired height. Use default face for border + below tool-bar. + (tool_bar_lines_needed): Add N_ROWS arg. Use it to return number of + actual tool-bar rows. + (redisplay_tool_bar): Calculate f->n_tool_bar_rows initially. + Adjust the height of the tool-bar rows to fill tool-bar screen area. + (redisplay_tool_bar): Calculate f->n_tool_bar_rows when tool-bar area + is resized. + +2006-03-01 Luc Teirlinck + + * search.c (Fregexp_quote): Do not precede a literal `]' with two + backslashes to try to make clear that it has a literal meaning; it + does not do that. (It could close a character alternative + containing a backslash.) + +2006-02-28 Chong Yidong + + * xselect.c (x_catch_errors_unwind): New function. + (x_reply_selection_request): Put x_uncatch_errors in an unwind. + (Fx_get_atom_name): Call x_uncatch_errors earlier. + + * window.c (Qscroll_up, Qscroll_down): New syms. + (window_scroll_pixel_based): Make preserve_y static to avoid + getting point stuck when scrolling 1 line. + +2006-02-26 Chong Yidong + + * xterm.h, xterm.c (x_uncatch_errors): Delete unneccessary argument. + + * xterm.c (x_load_font, x_term_init, XTmouse_position) + (handle_one_xevent, x_connection_closed, x_list_fonts): + No arg for x_uncatch_errors. + + * xselect.c (x_own_selection, x_decline_selection_request) + (x_reply_selection_request, x_get_foreign_selection) + (Fx_get_atom_name, Fx_send_client_event): Likewise. + + * xfns.c (x_real_positions, x_set_mouse_color, Fx_focus_frame): + Likewise. + +2006-02-26 Luc Teirlinck + + * lread.c: Declare Vload_file_rep_suffixes instead of + deleted variable default_suffixes. + (Fget_load_suffixes): New function. + (Fload): Use Fget_load_suffixes and Vload_file_rep_suffixes. + No longer use deleted variable default_suffixes. Update docstring. + (syms_of_lread): defsubr Sget_load_suffixes. + Expand `load-suffixes' docstring. + Delete default_suffixes and DEFVAR_LISP the new variable + `load-file-rep-suffixes'. + + * w32.c (check_windows_init_file): Use Fget_load_suffixes instead + of Vload_suffixes. + + * lisp.h: EXFUN Fget_load_suffixes. + Extern Vload_file_rep_suffixes. + + * eval.c (specpdl_ptr): Remove volatile qualifier for consistency + with lisp.h. + +2006-02-26 Stefan Monnier + + * lisp.h (struct specbinding, specpdl_ptr): Remove the volatile + qualifier which was trying to avoid the bug that was fixed by + yesterday's changes to xterm.c. + +2006-02-25 Chong Yidong + + * xterm.h (x_catch_errors) Return value changed to void. + (x_uncatch_errors): Delete unused count argument. + + * xterm.c (x_catch_errors): Don't use record_unwind_protect, since + it can be called in a signal handler. + (x_catch_errors_unwind): Function deleted. + (x_uncatch_errors): Deallocate last x_error_message_stack struct. + (x_check_errors): Call x_uncatch_errors before signalling error. + + (x_load_font, x_term_init, XTmouse_position, handle_one_xevent) + (x_connection_closed, x_list_fonts): Use new versions of + x_catch_errors and x_uncatch_errors. + + * xselect.c (x_own_selection, x_decline_selection_request) + (x_reply_selection_request, x_get_foreign_selection) + (Fx_get_atom_name, Fx_send_client_event): Likewise. + + * xfns.c (x_real_positions, x_set_mouse_color, Fx_focus_frame): + Likewise. + + * eval.c (record_unwind_protect): Add an assertion. + +2006-02-25 Stefan Monnier + + * process.c (Fmake_network_process): Init the process's mark. + +2006-02-25 Kim F. Storm + + * buffer.c (modify_overlay): Force redisplay if we modify an + overlay at the end of the buffer. + +2006-02-24 Jan Dj,Ad(Brv + + * gtkutil.c (xg_get_image_for_pixmap): If x_find_image_file returns + nil the image file has been removed, in that case use the (cached) + pixmap. + +2006-02-24 Kenichi Handa + + * fileio.c (Finsert_file_contents): When a text is replaced + partially, be sure to set point before the inserted characters. + +2006-02-23 Zhang Wei (tiny change) + + * xfns.c (Fx_file_dialog): Return a decoded file name. + +2006-02-23 YAMAMOTO Mitsuharu + + * dispnew.c (update_text_area): Avoid needless redraw of rightmost + glyph whose face is extended to the text area end. + + * macterm.c (x_set_toolkit_scroll_bar_thumb): Don't set control + values if control is not visible or values are not changed. + +2006-02-22 Stefan Monnier + + * window.c (Fwindow_list): Check `window' before doing XWINDOW. + The default `window' should not be "on a different frame". + +2006-02-22 Kim F. Storm + + * indent.c (Fvertical_motion): Only try to move back if we can. + +2006-02-22 YAMAMOTO Mitsuharu + + * macgui.h (struct _XGC) [!MAC_OSX || !USE_ATSUI]: New member + n_clip_rects. + + * macmenu.c (digest_single_submenu): Apply 2006-02-19 change for + xmenu.c. + + * macterm.c (GC_CLIP_REGION): Remove macro. + (mac_begin_clip, mac_end_clip): Take arg GC instead of REGION. + All uses changed. Don't do clipping if n_clip_rects is zero. + (mac_set_clip_rectangles): Use xassert instead of abort. + Set n_clip_rects. Don't make clip_region empty when number of + clipping rectangles is zero. + (mac_reset_clip_rectangles): Set n_clip_rects directly instead of + calling mac_set_clip_rectangles. + (x_set_toolkit_scroll_bar_thumb): Temporarily hide scroll bar to + avoid multiple redraws. + +2006-02-22 Kim F. Storm + + * fringe.c (draw_fringe_bitmap): Fix overlay-arrow display. + +2006-02-21 Kim F. Storm + + * fringe.c (syms_of_fringe) : Doc fix. + +2006-02-21 Zhang Wei + + * xfns.c (Fx_file_dialog, Motif and GTK): DECODE_FILE before + returning it. + +2006-02-21 Giorgos Keramidas (tiny change) + + * fringe.c (horizontal_bar_bits): Rename from `horisontal_bar_bits'. + (standard_bitmaps): Use it. + +2006-02-21 YAMAMOTO Mitsuharu + + * macterm.c (mac_draw_string_common): Remove arg MODE. New arg + BG_WIDTH. All uses changed. Draw background if BG_WIDTH is not zero. + (mac_draw_image_string, mac_draw_image_string_16): New arg BG_WIDTH. + [USE_CG_TEXT_DRAWING] (mac_draw_image_string_cg): Rename from + mac_draw_string_cg. New arg BG_WIDTH. All uses changed. + Draw background if BG_WIDTH is not zero. Use float constants as + divisors instead of double. Use alloca instead of xmalloc/xfree. + (x_draw_glyph_string_background, x_draw_glyph_string_foreground) + [!MAC_OS8 || USE_ATSUI]: Background may be drawn using + mac_draw_image_string* functions. + (XLoadQueryFont) [MAC_OS8 && USE_ATSUI]: Don't adjust heights of + some fonts when srcCopy text transfer mode might be used. + (mac_begin_clip, mac_end_clip): Check if region is empty. + (mac_set_clip_rectangles): When resetting clip region, make it + empty instead of disposing of it. + +2006-02-20 Kim F. Storm + + * Makefile.in: Add fringe.elc to WINDOW_SUPPORT. + + * buffer.h (struct buffer): New members fringe_indicator_alist and + fringe_cursor_alist. + + * buffer.c (init_buffer_once): Set dummy default values for + fringe-indicator-alist and fringe-cursor-alist. The proper + default values are set by pre-loading fringe.el. + (syms_of_buffer): defvar_per_buffer new fringe-indicator-alist and + fringe-cursor-alist buffer-local variables and defvar_lisp_nopro + corresponding default- variables. + + * fringe.c (enum fringe_bitmap_type): Remove. Change all uses + to use `int'. + (NO_FRINGE_BITMAP, UNDEF_FRINGE_BITMAP, MAX_STANDARD_FRINGE_BITMAPS): + Define explicitly. + (Qtruncation, Qcontinuation, Qempty_line, Qtop_bottom) + (Qhollow_small): New variables. + (syms_of_fringe): Intern and staticpro them. + (question_mark_bits): Rename from unknown_bits. + (left_curly_arrow_bits): Rename from continuation_bits. + (right_curly_arrow_bits): Rename from continued_bits. + (left_triangle_bits): Rename from ov_bits. + (right_triangle_bits): Add. + (filled_rectangle_bits): Rename from filled_box_cursor_bits. + (hollow_rectangle_bits): Rename from hollow_box_cursor_bits. + (filled_square_bits): Add. + (vertical_bar_bits): Rename from bar_cursor_bits. + (horizontal_bar_bits): Rename from hbar_cursor_bits. + (empty_line_bits): Rename from zv_bits. + (standard_bitmaps): Update to use new names. + (draw_fringe_bitmap_1): Make static. + (get_logical_cursor_bitmap, get_logical_fringe_bitmap): New functions + to map from logical cursors and indicators to physical bitmaps. + (draw_fringe_bitmap): Resolve fringe cursor and overlay-arrow + bitmaps using symbol names instead of bitmap numbers. + (update_window_fringes): Use logical indicator symbol names + instead of bitmap numbers for logical. Add bitmap cache. + (LEFT_FRINGE, RIGHT_FRINGE): New helper macros. + +2006-02-20 Chong Yidong + + * regex.c: Revert 2006-02-19 change. + (xmalloc, xrealloc): Define these when not linked to Emacs. + Redefine malloc -> xmalloc, realloc -> xrealloc as in Emacs case. + +2006-02-19 Luc Teirlinck + + * regex.c (extend_range_table_work_area): Fix typo. + +2006-02-19 Richard M. Stallman + + * xterm.c (x_catch_errors): Use xmalloc. + + * regex.c (extend_range_table_work_area): Call xmalloc and xrealloc. + (regex_compile): Likewise. + (regcomp): Use xmalloc. + + * gtkutil.c (malloc_widget_value): Use xmalloc. + + * vm-limit.c [HAVE_GETRLIMIT]: Include sys/resource.h. + (check_memory_limits) [HAVE_GETRLIMIT]: Use getrlimit. + + * xmenu.c (digest_single_submenu): When pane_string is empty, + do initialize save_wv. + +2006-02-19 YAMAMOTO Mitsuharu + + * xdisp.c (update_menu_bar) [MAC_OS]: Don't set + w->update_mode_line if arg F is not the selected frame. + + * macmenu.c (popup_activated_flag, submenu_id) + (next_menubar_widget_id): Remove variables. + (initialize_frame_menubar): Remove function. + (pop_down_menu, mac_menu_show): Simplify save value. + (dispose_menus): New function. + (pop_down_menu, fill_menubar): Use it. + (fill_submenu): Remove function. All uses changed to fill_menu. + (add_menu_item): Remove args SUBMENU and FORCE_DISABLE. New arg + POS. Don't call SetMenuItemHierarchicalID here. + (fill_menu): Add arg SUBMENU_ID. Return submenu_id that is to be + used next. Call SetMenuItemHierarchicalID here. + (fill_menubar): Add arg DEEP_P. All uses changed. Clean up menu + objects if needed. Reuse existing menu bar titles if possible. + (set_frame_menubar): Don't clean up menu objects here. + +2006-02-18 Chong Yidong + + * window.c (window_min_size_1): Ensure room for the scroll bar and + fringes. + +2006-02-17 Romain Francoise + + * puresize.h (BASE_PURESIZE): Increment to 1200000. + +2006-02-17 Stefan Monnier + + * alloc.c (Fmake_symbol): Comment-out left-over assert from before the + addition of the BLOCK_INPUTs. + +2006-02-17 Juanma Barranquero + + * window.c (Fset_window_scroll_bars): Doc fix. + +2006-02-17 Kenichi Handa + + * xdisp.c (display_mode_element): Call display_string with correct + PREC arg (which must be a number of characters, not column width). + +2006-02-15 YAMAMOTO Mitsuharu + + * frame.c (x_get_arg): Clear out PARAM in ALIST also on Mac. + + * macfns.c (x_set_menu_bar_lines): Menu bar is always shown on Mac. + + * macmenu.c (set_frame_menubar): Don't call DrawMenuBar. + +2006-02-14 Richard M. Stallman + + * frame.c (x_get_arg): Clear out all occurrences of PARAM in ALIST. + + * m/ibms390x.h: New file. + +2006-02-14 Jan Dj,Ad(Brv + + * gtkutil.c (xg_tool_bar_detach_callback): Set show-arrow to the + value of x-gtk-whole-detached-tool-bar. + (xg_tool_bar_attach_callback): Set show-arrow to TRUE. + + * xfns.c (syms_of_xfns): New variable: x-gtk-whole-detached-tool-bar. + +2006-02-14 Jan Dj,Ad(Brv + + * xterm.c (x_x_to_emacs_modifiers): Make non-static. + + * xterm.h: Declare x_x_to_emacs_modifiers. + + * gtkutil.c (xg_tool_bar_button_cb): New function. + (xg_tool_bar_callback): Call x_x_to_emacs_modifiers to + store modifiers in event. + (update_frame_tool_bar): Connect button-release-event to + xg_tool_bar_button_cb. + +2006-02-13 Richard M. Stallman + + * .gdbinit (xwindow): Update the code to show the window box. + +2006-02-13 Jan Dj,Ad(Brv + + * xterm.c (note_mouse_movement): Check for NULL FRAME_X_OUTPUT (frame). + +2006-02-12 Richard M. Stallman + + * cmds.c (internal_self_insert): Handle weird auto-fill-function. + +2006-02-11 Eli Zaretskii + + * keyboard.c (Venable_disabled_menus_and_buttons): New variable. + (syms_of_keyboard): DEVFAR_LISP and initialize it. + (parse_tool_bar_item, parse_menu_item): If that variable is + non-nil, don't disable menu items and tool-bar buttons. + +2006-02-11 Juanma Barranquero + + * doc.c (Fsubstitute_command_keys): Doc fix. + +2006-02-10 Thien-Thi Nguyen + + * data.c (Findirect_function): Rewrite docstring. + Fix omission bug: Declare new arg NOERROR. + +2006-02-10 YAMAMOTO Mitsuharu + + * macfns.c (x_set_mouse_color): Don't call rif->define_frame_cursor + if window_desc is not set yet. + (Fx_create_frame): Remove variable x_frame_name. Apply 2005-12-07 + and 2006-01-26 changes for xfns.c. Call x_iconify_frame if frame + parameter `visibility' is `icon'. + (Fx_create_frame, x_create_tip_frame): Use "fontset-standard" + instead of "fontset-mac". + (Fx_focus_frame): New defun. + (syms_of_macfns): Defsubr it. + + * macterm.c (mac_define_frame_cursor): Don't change pointer shape + for unfocused frame. + (x_raise_frame): Call BringToFront instead of SelectWindow. + (x_lower_frame): Use NULL instead of nil. + (x_make_frame_visible): Don't call SelectWindow. + (XTread_socket): Increment handling_signal at the start, decrement + it at the end. + [USE_CG_TEXT_DRAWING] (init_cg_text_anti_aliasing_threshold): Use + CFPreferencesGetAppIntegerValue instead of Fmac_get_preference. + +2006-02-10 Kim F. Storm + + * data.c (Findirect_function): Add NOERROR arg. All callers changed + to pass Qnil for NOERROR. + + * keymap.c (current_minor_maps_error): Remove. + (current_minor_maps): Pass Qt for NOERROR to Findirect_function + instead of using internal_condition_case_1+current_minor_maps_error. + +2006-02-09 Jan Dj,Ad(Brv + + * xterm.c (handle_one_xevent): Must note mouse movement even for nil + frames for GTK, in that case it is the tool bar. This is so that + highlighted text get reset properly. + +2006-02-09 Juanma Barranquero + + * alloc.c (Fmake_bool_vector, Fpurecopy): Doc fixes. + +2006-02-08 Jan Dj,Ad(Brv + + * window.c (adjust_window_trailing_edge): Check that shrinking + does not set a window to size zero or less. + +2006-02-08 Miles Bader + + * editfns.c (Fconstrain_to_field): Use Fget_char_property instead + of Fget_text_property (other field functions work with overlays as + well as text-properties). + +2006-02-07 Kenichi Handa + + * dispextern.h (unibyte_display_via_language_environment): Extern it. + + * xterm.h (unibyte_display_via_language_environment): + * w32term.h (unibyte_display_via_language_environment): + * macterm.h (unibyte_display_via_language_environment): Delete extern. + +2006-02-07 Kenichi Handa + + * term.c (append_glyph): Refer to it->char_to_display instead of it->c. + (produce_glyphs): Set the character to print in + it->char_to_display. Handle unibyte-display-via-language-environment. + (produce_stretch_glyph): Set character to print in it->char_to_display. + +2006-02-06 Kenichi Handa + + * lread.c (openp): Initialize encoded_fn before GCPRO it. + +2006-02-05 Ken Raeburn + + * editfns.c (Fconstrain_to_field): Fix int/Lisp_Object mixup. + + * lisp.h (XPNTR) [!NO_UNION_TYPE && !HAVE_SHM && !DATA_SEG_BITS]: + Cast bitfield value to EMACS_INT, to suppress gcc warning. + + * xrdb.c (malloc, realloc, free) [emacs]: Undefine macros before + defining. + +2006-02-03 Kim F. Storm + + * xdisp.c: Cache last merged escape glyph face. + (last_escape_glyph_frame, last_escape_glyph_face_id) + (last_escape_glyph_merged_face_id): New variables. + (get_next_display_element): Use/update them. + (redisplay_internal): Reset them before redisplay. + + * xdisp.c (set_iterator_to_next): Optimize 2004-12-13 fix. + Only recheck faces after displaying ellipsis. + +2006-02-02 Kenichi Handa + + * coding.c (decode_composition_emacs_mule): Fix handling of + incorrect format data. + +2006-01-31 Jan Dj,Ad(Brv + + * gtkutil.c (update_frame_tool_bar): Use new tool bar function + gtk_toolbar_insert() so we can have tool bars of different sizes. + +2006-01-30 Luc Teirlinck + + * data.c (Flistp): Doc fix. + +2006-01-30 Juanma Barranquero + + * window.c (Fother_window, Fwindow_vscroll, Fset_window_vscroll): + Fix typos in docstrings. + +2006-01-28 Luc Teirlinck + + * data.c (Fcar, Fcdr): Add links to Elisp manual to the docstrings. + +2006-01-27 Chong Yidong + + * alloc.c (make_interval, allocate_string) + (allocate_string_data, make_float, Fcons, allocate_vectorlike) + (Fmake_symbol, allocate_misc): Use BLOCK_INPUT when accessing + global variables. + +2006-01-27 Eli Zaretskii + + * dired.c (DIRENTRY_NONEMPTY) [__CYGWIN__]: Don't use d_ino; use + the MSDOS definition. + +2006-01-26 Richard M. Stallman + + * alloc.c (check_pure_size): Make overflow message an "error message". + + * keymap.c (Fmap_keymap): Doc fix. + + * xfns.c (Fx_create_frame): Put all specified parms into f->param_alist + unless they were cleared out. + + * frame.c (x_get_arg): "Clear out" the parm in ALIST if found there. + +2006-01-26 L$,1 q(Brentey K,Aa(Broly + + * editfns.c (Fconstrain_to_field): Fix behaviour on field boundaries. + (find_field): Set before_field to after_field when pos is at BEGV. + (Fline_beginning_position, Fline_end_position): + Clarify confusing doc string. + + * cmds.c (Fbeginning_of_line, Fend_of_line): Clarify confusing doc + string. + +2006-01-26 Kenichi Handa + + * callproc.c (Fcall_process): GCPRO error_file. Encode infile, + current_dir, and error_file. On reporting an error, decode them + back. + +2006-01-24 Stefan Monnier + + * regex.c (IMMEDIATE_QUIT_CHECK): Use it with SYNC_INPUT as well. + (re_match_2_internal) : + Don't check for quit, since any loop will go through fail or jump. + +2006-01-24 Chong Yidong + + * alloc.c (allocate_string_data): Update next_free immediately, to + reduce risk of memory clobberage. + +2006-01-24 L$,1 q(Brentey K,Aa(Broly + + * xdisp.c (handle_invisible_prop): Set it->position to fix cursor + display when point moves across an ellipsis. If there are + adjacent invisible texts, don't lose the second one's ellipsis. + (x_produce_glyphs): Doc fix. + +2006-01-23 Stefan Monnier + + * xterm.c (x_catch_errors_unwind): Yet another int/Lisp_Object mixup. + +2006-01-23 Kim F. Storm + + * xdisp.c (handle_single_display_spec): Fix handling of space + property on char from string: set *position rather than + it->current.pos. + (produce_stretch_glyph): Reduce width of stretch glyphs so they + don't get wider than the window (unless truncate-lines is on). + +2006-01-22 Stefan Monnier + + * xterm.c: Avoid allocating Lisp data from a signal handler. + (x_error_message): New var to replace x_error_message_string. + (x_error_catcher, x_catch_errors, x_catch_errors_unwind) + (x_check_errors, x_had_errors_p, x_clear_errors, x_error_handler) + (syms_of_xterm): Use it instead of x_error_message_string. + + * alloc.c (lisp_align_free): Add an assertion. + (make_interval, allocate_string, make_float, Fcons, Fmake_symbol) + (allocate_misc): If ENABLE_CHECKING is on, check we're not called from + a signal handler. + +2006-01-21 Luc Teirlinck + + * dired.c (syms_of_dired) : Doc fix. + +2006-01-21 Romain Francoise + + * xdisp.c (get_window_cursor_type): Fix last change. + Update copyright year. + +2006-01-20 Eli Zaretskii + + * lread.c (Fload): Don't leak the file descriptor returned by + openp if we are going to signal an error. + + * w32.c (sys_close): If FD is outside [0..MAXDESC) limits, pass it + directly to _close. + (sys_dup): Protect against new_fd larger than fd_info[] can handle. + (sys_read): If FD is outside [0..MAXDESC) limits, pass it directly + to _read. + (sys_write): If FD is outside [0..MAXDESC) limits, pass it + directly to _write. + + * .gdbinit: Don't dereference Vsystem_type's Lisp_Symbol pointer + if it is NULL. + +2006-01-20 Kenichi Handa + + * puresize.h (BASE_PURESIZE): Increment to 1190000. + +2006-01-19 Chong Yidong + + * xdisp.c (get_window_cursor_type): Use cursor type specified by + the selected buffer for the echo area too. + +2006-01-19 Richard M. Stallman + + * keymap.c (Fmap_keymap): Doc fix. + + * s/irix6-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): New definitions. + + * keyboard.c (echo_char): Don't omit the space between first two + echoed chars. + + * minibuf.c (read_minibuf): Fix previous change. + +2006-01-19 Kenichi Handa + + * xterm.c (handle_one_xevent): Handle keysyms 0x1000000..0x10000FF. + +2006-01-17 Richard M. Stallman + + * frame.c (x_frame_get_and_record_arg): Don't record Qunbound + value in f->param_alist. + +2006-01-15 Andreas Schwab + + * search.c (Freplace_match): Use UPPERCASEP instead of !NOCASEP. + +2006-01-13 Richard M. Stallman + + * Makefile.in: Define new macro WINDOW_SUPPORT. + (lisp): Use it. + (SOME_MACHINE_LISP): Add conditionally loaded files. + +2006-01-12 YAMAMOTO Mitsuharu + + * macterm.c [USE_ATSUI] (atsu_get_text_layout_with_text_ptr) + [MAC_OS_X_VERSION_MAX_ALLOWED >= 1020]: Specify kATSLineUseQDRendering. + (XLoadQueryFont) [USE_ATSUI]: Display diacritical marks in + decomposed form. + + * process.c [HAVE_INTTYPES_H]: Include inttypes.h. + (ifflag_table): Fix typo (IFF_OACTIV -> IFF_OACTIVE). + (Fnetwork_interface_info): Use HAVE_STRUCT_IFREQ_IFR_NETMASK + macro. Also try member ifr_addr when getting netmask. + +2006-01-10 Stefan Monnier + + * fileio.c (Fexpand_file_name): Remove redundant tests. + Fix elimination of // so that it doesn't prevent elimination of an + immediately following /. or /.. + +2006-01-09 Jan Dj,Ad(Brv + + * gtkutil.c (xg_toggle_notify_cb): New function. + (xg_toggle_visibility_cb): Move setting of x_gtk_show_hidden_files to + xg_toggle_notify_cb. + (xg_get_file_with_chooser): Add callback to xg_toggle_notify_cb when + parameter value changes so the toggle button gets updated. + +2006-01-06 Nick Roberts + + * .gdbinit: Fix typo. + +2006-01-05 Eli Zaretskii + + * .gdbinit: Fix last change. + +2006-01-05 Kim F. Storm + + * process.c (Fmake_network_process): Use AF_INET instead of + AF_UNSPEC when AF_INET6 is not defined. + +2006-01-05 YAMAMOTO Mitsuharu + + * mac.c (mac_coerce_file_name_ptr, mac_coerce_file_name_desc): + Don't check that the other type is known file-related one. + + * macfns.c (Fx_server_version): Use gestaltSystemVersionMajor, + gestaltSystemVersionMinor, and gestaltSystemVersionBugFix on Mac + OS X 10.4 and later. + +2006-01-04 Jan Dj,Ad(Brv + + * gtkutil.c (xg_get_image_for_pixmap): If the image is from a file, + let GTK do all image processing. Importing Emacs own pixmaps to GTK + looks bad for inactive tool bar items with some Gnome themes. + +2006-01-04 Eli Zaretskii + + * .gdbinit: Avoid a warning message when x_error_quitter is not + compiled in. + + * process.c [WINDOWSNT]: Undef AF_INET6 to disable IPv6 support + for w32. + +2006-01-04 Kim F. Storm + + * process.c: Add IPv6 support. + (Qipv4, Qipv6): New vars. + (syms_of_process): Intern and staticpro them. + (Fformat_network_address): Handle 9 or 8 element vector as IPv6 address + with or without port number. Handle 4 element vector as IPv4 address + without port number. + (conv_sockaddr_to_lisp, get_lisp_to_sockaddr_size) + (conv_lisp_to_sockaddr): Handle IPv6 addresses. + (Fmake_network_process): Use :family 'ipv4 and 'ipv6 to explicitly + request that address family only. :family nil or omitted means to + determine address family from the specified :host and :service. + (ifflag_table): Add missing OpenBSD IFF_ flags. + (server_accept_connection): Handle IPv6 addresses. + (init_process): Add (:family ipv4) and (:family ipv6) sub-features. + + * .gdbinit: Undo last change. Instead, look at Vsystem_type to + determine which breakpoints to set. + +2006-01-03 Stefan Monnier + + * keymap.c (describe_map_compare): Yet another int/Lisp_Object mixup. + + * window.h (Fwindow_minibuffer_p): Declare (for use in minibuf.c). + +2006-01-03 Romain Francoise + + * emacs.c (main): Update copyright year. + +2006-01-03 Ken Raeburn + + * callproc.c (delete_temp_file): Bind file-name-handler-alist to + nil for the call to internal_delete_file. + +2006-01-01 Ken Raeburn + + * callproc.c (Fcall_process_region): Bind file-name-handler-alist + to nil for the call to Fwrite_region. + +2005-12-31 Richard M. Stallman + + * minibuf.c (read_minibuf): Clear out all other minibuffer windows. + +2005-12-31 Eli Zaretskii + + * emacs.c (gdb_pvec_type): A dummy variable for GDB's sake. + +2005-12-30 Luc Teirlinck + + * textprop.c (set_text_properties): Reword description of return value. + Return Qnil if caller wants to remove all text properties from a + string and the string already has no intervals. + +2005-12-30 Stefan Monnier + + * term.c (visible_cursor): New boolean var. + (set_terminal_modes, tty_show_cursor): Use "vs" or "ve" depending on + visible_cursor. + (syms_of_term): Export the new var as "visible-cursor". + +2005-12-30 Eli Zaretskii + + * .gdbinit: Tell users not to worry about GDB warnings that some + functions do not exist in the binary. + +2005-12-30 Andreas Schwab + + * process.c (Fnetwork_interface_info): Correctly terminate the + loop over ifflag_table. + +2005-12-29 Richard M. Stallman + + * lread.c (readevalloop): Test for reading a whole buffer + before actually reading anything. Handle all cases, including + START = END = nil and an already-narrowed buffer. + Convert END to a marker if it is a number. + + * keymap.c (describe_map): Put sparse map elements into an array, + sort them, then output a sequence of identical bindings on one line. + (struct describe_map_elt): New data type. + (describe_map_compare): New function. + +2005-12-28 Jan Dj,Ad(Brv + + * gtkutil.c (xg_get_file_with_chooser): Change message shown + in file chooser. + +2005-12-27 Richard M. Stallman + + * lread.c (readevalloop): Set PT and ZV in the proper buffer, + not the current one. + + * minibuf.c (Fminibuffer_message): Doc fix. + (read_minibuf): Set current_buffer->enable_multibyte_characters sooner. + + * eval.c (do_autoload): Ignore elements of Vautoload_queue + where car is not symbol. + +2005-12-27 Kenichi Handa + + * charset.c (lisp_string_width): Check multibyteness of STRING. + +2005-12-27 Jan Dj,Ad(Brv + + * xfns.c (x_show_hidden_files): New variable. + (syms_of_xfns): Defvar it. + + * gtkutil.c (xg_toggle_visibility_cb): New function. + (xg_get_file_with_chooser): Add toggle hidden files and a message + to the new file chooser dialog. Show hidden files if + x_show_hidden_files is non-zero. + +2005-12-26 Richard M. Stallman + + * keyboard.h: Undo previous change. + + * Makefile.in (undo.o): Undo previous change. + + * undo.c: Undo previous change. + +2005-12-26 Luc Teirlinck + + * keyboard.h: extern last_point_position_window. + + * undo.c: include keyboard.h. + + * Makefile.in (undo.o): Depend on keyboard.h. + +2005-12-26 Richard M. Stallman + + * commands.h (last_point_position_window): Declare. + + * undo.c: Depend on window.h. + (record_point): Save old point from the correct window. + + * keyboard.c (last_point_position_window): New variable. + (command_loop_1): Set last_point_position_window. + (syms_of_keyboard): Init it. + + * Makefile.in (undo.o): Depend on window.h. + +2005-12-25 Richard M. Stallman + + * eval.c (un_autoload): Expect (0 . OFEATURES) in Vautoload_queue + to undo a `provide'. + + * fns.c (Fprovide): Store (0 . OFEATURES) in Vautoload_queue. + +2005-12-25 Giorgos Keramidas + + * m/amdx86-64.h [__FreeBSD__] (START_FILES, LIB_STANDARD): + define for FreeBSD on this platform. + +2005-12-24 YAMAMOTO Mitsuharu + + * macterm.h (TYPE_FILE_NAME): New define. + (posix_pathname_to_fsspec, fsspec_to_posix_pathname): Remove externs. + + * mac.c (posix_pathname_to_fsspec, fsspec_to_posix_pathname): + Add prototypes. Make static. + (mac_aedesc_to_lisp): Initialize err to noErr. + (mac_coerce_file_name_ptr, mac_coerce_file_name_desc) + (init_coercion_handler): New functions. + (Fmac_coerce_ae_data): Use coercion of Apple event data for + translation from/to file names. + + * macterm.c: Don't include sys/param.h. + (init_coercion_handler): Add extern. + [MAC_OS8] (main): Call init_coercion_handler. + (mac_initialize) [MAC_OSX]: Likewise. + [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Use coercion of + Apple event data for translation from/to file names. + + * macfns.c [TARGET_API_MAC_CARBON] (Fx_file_dialog): Likewise. + + * image.c [MAC_OS] (find_image_fsspec): Likewise. + +2005-12-23 Martin Rudalics + + * insdel.c (insert, insert_and_inherit, insert_before_markers) + (insert_before_markers_and_inherit): Make sure FROM is correct + when `after-change-functions' are called. + +2005-12-23 Jan Dj,Ad(Brv + + * xfns.c (Fx_uses_old_gtk_dialog): New function. + + * gtkutil.c (xg_uses_old_file_dialog): New function. + (xg_get_file_name): Use xg_uses_old_file_dialog. + + * gtkutil.h: Declare xg_uses_old_file_dialog. + +2005-12-22 Richard M. Stallman + + * xmenu.c (xmenu_show): Call inhibit_garbage_collection. + +2005-12-22 YAMAMOTO Mitsuharu + + * mac.c (Fmac_coerce_ae_data) [MAC_OSX]: Fix memory leak. + + * macgui.h (XCharStruct): Remove member `valid_p'. + (STORE_XCHARSTRUCT): Don't set member `valid_p'. + (XCharStructRow): New typedef. + (XCHARSTRUCTROW_CHAR_VALID_P, XCHARSTRUCTROW_SET_CHAR_VALID): + New macros. + (struct MacFontStruct): Add member `bounds'. Remove member + `per_char'. All uses for QuichDraw Text fonts are changed to + `bounds.per_char'. ATSUI font bounds are represented as an array + `bounds.rows' of XCharStructRow's, each of which consists of a + bitmap of valid entries and an array of char bounds. + + * macterm.c (mac_per_char_metric): Add prototype. + (x_per_char_metric) [USE_CG_TEXT_DRAWING]: Remove prototype. + (mac_query_char_extents): New function. + (x_per_char_metric): Use it. + (XLoadQueryFont): Likewise. Consolidate min/max_bounds calculations. + [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): + Use mac_per_char_metric instead of x_per_char_metric. + (mac_text_extents_16): New function. + (mac_compute_glyph_string_overhangs): Use it. + (mac_unload_font): Free member `bounds' in struct MacFontStruct. + +2005-12-21 Stefan Monnier + + * minibuf.c (Fdisplay_completion_list): Use XCAR/XCDR. + (Fminibuffer_completion_help): Remove duplicates before display. + +2005-12-21 L$,1 q(Brentey K,Aa(Broly + + * print.c (print_preprocess): Don't lose print_depth levels while + iterating. + +2005-12-21 YAMAMOTO Mitsuharu + + * macmenu.c (Qmac_apple_event): Add extern. + (set_frame_menubar, mac_menu_show keymp_panes) + (single_keymap_panes, list_of_panes, list_of_item) + (single_menu_item): Add argument types to prototypes. + (mac_dialog_show) [HAVE_DIALOGS]: Likewise. + (struct skp): New struct (from xmenu.c). + (single_keymap_panes, single_menu_item, list_of_panes) + (list_of_item): Sync with xmenu.c. + (Fx_popup_menu, Fx_popup_dialog): Likewise. Don't get window from + POSITION if it is mac-apple-event event. + (menubar_selection_callback): Don't use menu_command_in_progress. + (set_frame_menubar): First parse all submenus, then make + widget_value trees from them. Don't allocate any widget_value + objects until we are done with the parsing. + (parse_single_submenu, digest_single_submenu): New functions. + (single_submenu): Function deleted, replaced by those two. + (install_menu_quit_handler) [HAVE_CANCELMENUTRACKING]: Don't create + or dispose of EventHandlerUPP. Install hander to all submenus. + (mac_menu_show) [!HAVE_MULTILINGUAL_MENU]: Use ENCODE_MENU_STRING + instead of ENCODE_SYSTEM. + (free_frame_menubar, fill_submenu, fill_menu): Don't use NULL for + integer values. + [HAVE_DIALOGS] (mac_dialog_show): Sync with xdialog_show (in xmenu.c). + (add_menu_item) [TARGET_API_MAC_CARBON]: Use CFString functions to + format menu item string. Don't use NULL for integer value. + + * macterm.h (struct mac_output): Remove unused member + menu_command_in_progress. + +2005-12-20 Juri Linkov + + * xmenu.c (Fx_popup_menu): Set Vmenu_updating_frame to f if + position is non-nil, else set it to nil. + + * macmenu.c (Fx_popup_menu): Add `else' to set + Vmenu_updating_frame to nil only if position is nil. + + * w32menu.c (Fx_popup_menu): Add `else' to set + Vmenu_updating_frame to nil only if position is nil. + +2005-12-19 YAMAMOTO Mitsuharu + + * keyboard.c (make_lispy_event): Drag-and-drop items are now + stored in member `args' of struct input_event. + + * termhooks.h (struct input_event): Fix comment for DRAG_N_DROP_EVENT. + + * xselect.c (x_handle_dnd_message): Drag-and-drop items are now + stored in member `args' of struct input_event. + + * w32term.c (construct_drag_n_drop): Likewise. + + * macterm.c (mac_do_receive_drag): Likewise. + (x_use_underline_position_properties): Undo 2005-07-13 change. + (syms_of_macterm) : Likewise. + (mac_use_core_graphics, mac_wheel_button_is_mouse_2) + (mac_pass_command_to_system, mac_pass_control_to_system): + New boolean variables renamed from Lisp_Object ones + Vmac_use_core_graphics, Vmac_wheel_button_is_mouse_2, + Vmac_pass_command_to_system, and Vmac_pass_control_to_system. + All uses changed. + (syms_of_macterm): DEFVAR_BOOL them. Remove previous DEFVAR_LISPs. + Make them user options. + (mac_handle_command_event, mac_store_services_event): + Call create_apple_event_from_event_ref without 5th argument. + (backtranslate_modified_keycode): Mask off modifier keys that are + mapped to some Emacs modifiers before passing it to KeyTranslate. + (syms_of_macterm): Make variables `mac-emulate-three-button-mouse', + `mac-wheel-button-is-mouse-2', and `mac-*-modifier' user options. + Fix docstrings of `mac-*-modifier'. + + * mac.c (create_apple_event_from_event_ref): Remove arg `types'. + (do_applescript): Change argument types to Lisp_Object. + All uses changed. + + * macterm.h (create_apple_event_from_event_ref): Remove 5th + argument from extern. + +2005-12-18 Dan Nicolaescu + + * xfns.c (Fx_backspace_delete_keys_p): In case we cannot determine + the answer, return `lambda', not nil. + +2005-12-17 Eli Zaretskii + + * makefile.w32-in (bootstrap-temacs): Warn that parts of commands + enclosed in $(ARGQUOTE)s should not be split between two lines, as + that will break with GNU Make >3.80, when sh.exe is used and + arg quoting is with '..'. + +2005-12-17 Chong Yidong + + * print.c (print_preprocess): Just signal an error if print_depth + is exceeded. + +2005-12-17 Eli Zaretskii + + * .gdbinit: Set a breakpoint on w32_abort. + +2005-12-16 Juri Linkov + + * minibuf.c (Fminibuffer_completion_contents): New Lisp function + created from minibuffer_completion_contents. + (minibuffer_completion_contents): Remove. + (do_completion, Fminibuffer_complete_word) + (Fminibuffer_completion_help): Replace minibuffer_completion_contents + with Fminibuffer_completion_contents. + (syms_of_minibuf): Add Sminibuffer_completion_contents. + (Fdisplay_completion_list): Doc fix. + (display_completion_list_1): Use `nil' for second arg of + `Fdisplay_completion_list'. + +2005-12-14 Jan Dj,Ad(Brv + + * xfns.c (compute_tip_xy): Handle negative dx and dy. + + * w32fns.c (compute_tip_xy): Ditto. + + * macfns.c (compute_tip_xy): Ditto. + +2005-12-14 Chong Yidong + + * print.c (print_preprocess): Go to a deeper print_depth to avoid + print_object loop. + +2005-12-14 Kyotaro HORIGUCHI (tiny change) + + * coding.c (code_convert_region_unwind): GCPRO arg. + +2005-12-12 Jan Dj,Ad(Brv + + * xfns.c (compute_tip_xy): Calculate root_y the same way as root_x, + i.e. dy is offset from top of frame instead of bottom. + + * macfns.c (compute_tip_xy): Ditto. + + * w32fns.c (compute_tip_xy): Ditto. + + * gtkutil.c (SSDATA): New macro to remove compiler warnings. + (xg_get_image_for_pixmap, xg_create_frame_widgets) + (xg_get_file_with_chooser): Use SSDATA instead of SDATA. + + * xmenu.c (menubar_selection_callback): Do nothing if the callback + is for an unselected radio menu item. + +2005-12-11 Richard M. Stallman + + * xdisp.c (syms_of_xdisp) : Doc fix. + + * lisp.h [! NO_UNION_TYPE] (EQ): Use == so args are computed just once. + + * keymap.c (Fset_keymap_parent, store_in_keymap): Use CHECK_IMPURE. + (Flookup_key): Doc fix. + (syms_of_keymap) : Doc fix. + + * fns.c (Frequire): Treat evaluating from a source file + like loading the file. + + * floatfns.c (Flog): Doc fix. + + * fileio.c (Finsert_file_contents): Set Vdeactivate_mark + when we change the buffer. + +2005-12-11 Juri Linkov + + * minibuf.c (display_completion_list_1): + Call `minibuffer_completion_contents' instead of using `nil' as + second arg of `Fdisplay_completion_list'. + (keys_of_minibuf): Unbind SPC in + Vminibuffer_local_filename_completion_map (see also related + change on 2005-12-06). + +2005-12-11 YAMAMOTO Mitsuharu + + * emacs.c (main) [MAC_OS8]: Undo previous change. + + * macselect.c (syms_of_macselect) : + Initialize to nil. Keymap is now created in lisp/term/mac-win.el. + +2005-12-10 YAMAMOTO Mitsuharu + + * Makefile.in (macselect.o): Depend on keymap.h. + + * emacs.c (main) [MAC_OS8]: Call syms_of_keymap before + syms_of_macselect. + + * image.c (init_image) [MAC_OS]: Don't call EnterMovies. + [!HAVE_GIF && MAC_OS] (gif_load): Call EnterMovies. + + * keyboard.c (Qmac_apple_event) [MAC_OS]: New variable. + (syms_of_keyboard) [MAC_OS]: Initialize it. + (make_lispy_event) [MAC_OS]: Build lisp event for MAC_APPLE_EVENT. + + * mac.c (Qundecoded_file_name): New variable. + (syms_of_mac): Initialize it. + (mac_aelist_to_lisp, mac_aedesc_to_lisp): New functions. + [TARGET_API_MAC_CARBON] (create_apple_event_from_event_ref): New fun. + (Fmac_coerce_ae_data): New defun. + (syms_of_mac): Defsubr it. + + * macselect.c: Include keymap.h. + (mac_ready_for_apple_events): New variable. + (Vmac_apple_event_map, Qmac_apple_event_class) + (Qmac_apple_event_id): New variables. + (syms_of_macselect): Initialize them. + (Qundefined, mac_store_apple_event): Add externs. + (struct apple_event_binding): New struct. + (find_event_binding_fun, find_event_binding) + (mac_find_apple_event_spec, defer_apple_events) + (mac_handle_apple_event, init_apple_event_handler) + (copy_scrap_flavor_data): New functions. + (Fmac_process_deferred_apple_events): New defun. + (syms_of_macselect): Defsubr it. + (mac_store_services_event): Fix extern. + (mac_handle_service_event): Don't allocate Lisp objects during + asynchronous input processing. Use mac_store_services_event + instead of mac_store_application_menu_event. + + * macterm.c (Qmac_ready_for_drag_n_drop, Qapplication, Qabout) + (Qpreferences): Remove variables. + (syms_of_macterm): Don't initialize them. + (Qhicommand) [USE_CARBON_EVENTS]: New variable. + (syms_of_macterm) [USE_CARBON_EVENTS]: Initialize it. + (init_required_apple_events, do_ae_open_application) + (do_ae_print_documents, do_ae_open_documents) + (do_ae_quit_application): Remove functions and prototypes. + (mac_ready_for_apple_events, Qundefined, init_apple_event_handler) + (mac_find_apple_event_spec): Add externs. + (mac_store_application_menu_event): Remove function. + (mac_store_apple_event, mac_make_lispy_event_code): New functions. + (mac_handle_command_event): Create Apple event from Carbon event. + Use mac_store_apple_event instead of mac_store_application_menu_event. + [MAC_OSX] (mac_store_services_event): Likewise. + (struct SelectionRange, SelectionRange): Remove struct and typedef. + [MAC_OS8] (main): Call init_apple_event_handler instead of + init_required_apple_events. + (mac_initialize) [MAC_OSX]: Likewise. + [!USE_CARBON_EVENTS] (mac_wait_next_event): + Use mac_ready_for_apple_events instead of Qmac_ready_for_drag_n_drop. + + * macterm.h (mac_make_lispy_event_code, mac_aedesc_to_lisp): + Add externs. + (create_apple_event_from_event_ref) [TARGET_API_MAC_CARBON]: Likewise. + (Fmac_get_preference): Add EXFUN. + + * termhooks.h (enum event_kind) [MAC_OS]: Add new MAC_APPLE_EVENT + event. + +2005-12-09 Richard M. Stallman + + * xfns.c (Fx_create_frame): Reinstate previous change. + +2005-12-09 Eli Zaretskii + + * w32fns.c (w32_abort) [__GNUC__]: Add instructions for attaching + GDB to the abort dialog. + +2005-12-09 Kyotaro HORIGUCHI (tiny change) + + * indent.c (Fvertical_motion): Force move if starting on + stretch glyph. + +2005-12-08 Richard M. Stallman + + * lread.c (read_escape) <\s>: Don't treat strings specially. + + * xfns.c (Fx_create_frame): Comment out previous change. + +2005-12-07 L$,1 q(Brentey K,Aa(Broly + + * xfns.c (Fx_create_frame): Initialize Vdefault_minibuffer_frame, + when needed. + +2005-12-06 Stefan Monnier + + * minibuf.c (keys_of_minibuf): Just unbind SPC in + Vminibuffer_local_filename_completion_map rather than forcing it + explicitly to the same binding as the global map. + +2005-12-06 Ken Raeburn + + * buffer.c (Fkill_buffer): Avoid dangerous side effects in NILP args. + * bytecode.c (Fbyte_code): Likewise. + * fileio.c (internal_delete_file, Fread_file_name_internal): Likewise. + * minibuf.c (Fminibuffer_complete_and_exit): Likewise. + * undo.c (truncate_undo_list): Likewise. + +2005-12-05 Richard M. Stallman + + * window.c (enlarge_window): Eliminate arg preserve_before. + Assume it is 0. All callers changed. + (Fenlarge_window, Fshrink_window): Likewise. + +2005-12-02 Eli Zaretskii + + * w32fns.c (compute_tip_xy): Put tip above pointer if it doesn't + fit below. + +2005-12-02 Jan Dj,Ad(Brv + + * xterm.h: Add prototype for xg_set_icon_from_xpm_data. + + * xfns.c (x_real_positions): int ign => unsigned int. + (xg_set_icon_from_xpm_data): Remove unused variable err. + (x_set_name_internal, Fx_create_frame, xg_set_icon): Add cast + to remove compiler warning. + (compute_tip_xy): Put tip above pointer if it doesn't fit below. + +2005-12-02 David Reitter + + * minibuf.c (Fcompleting_read): If Vminibuffer_completing_file_name is + non-nil, use the new keymaps Vminibuffer_local_filename_completion_map + and Vminibuffer_local_must_match_filename_map keymaps. + (keys_of_minibuf): Bind SPC in the new file-name completion keymaps. + + * keymap.c (Vminibuffer_local_filename_completion_map) + (Vminibuffer_local_must_match_filename_map): New variables. + (syms_of_keymap): DEFVAR_LISP them, initialize them, and set their + parent to be Vminibuffer_local_completion_map and + Vminibuffer_local_must_match_map, respectively. + + * commands.h (Vminibuffer_local_filename_completion_map) + (Vminibuffer_local_must_match_filename_map): Declare the new keymaps. + +2005-12-01 Stefan Monnier + + * window.c (Fset_window_configuration): Don't accidentally copy the + window-point of one window to another. + +2005-11-30 L$,1 q(Brentey K,Aa(Broly + + * buffer.c (Fpop_to_buffer): Remove superfluous call to record_buffer. + +2005-11-30 Kim F. Storm + + * alloc.c: Include fcntl.h. Define O_WRONLY if not defined. + (valid_lisp_object_p) [!GC_MARK_STACK]: Validate pointer by + passing it to `emacs_write'. + +2005-11-29 Ari Roponen (tiny change) + + * atimer.c (stop_other_atimers): Fix loop to correctly compute `prev'. + +2005-11-27 Richard M. Stallman + + * window.c (adjust_window_trailing_edge): New function. + (Fadjust_window_trailing_edge): New function. + (syms_of_window): Defsubr it. + (window_deletion_count): New variable. + (delete_window): Update window_deletion_count. + +2005-11-26 Eli Zaretskii + + * minibuf.c (syms_of_minibuf): Mention the extension of + `completion-auto-help's meaning by complete.el. + +2005-11-26 Henrik Enberg + + * xfaces.c (Finternal_set_lisp_face_attribute_from_resource): + Handle :inherit property as a lisp expression. + +2005-11-24 YAMAMOTO Mitsuharu + + * macterm.c (Qcontrol): Rename from Qctrl. All uses changed. + (syms_of_macterm): Staticpro Qcontrol, Qmeta, Qalt, Qhyper, + Qsuper, and Qmodifier_value. + (Vmac_control_modifier, Vmac_option_modifier) + (Vmac_command_modifier, Vmac_function_modifier) + (Vmac_emulate_three_button_mouse, Vmac_wheel_button_is_mouse_2) + (Vmac_pass_command_to_system, Vmac_pass_control_to_system) + (Vmac_charset_info_alist): Doc fixes. + +2005-11-23 YAMAMOTO Mitsuharu + + * emacs.c (main) [MAC_OSX]: Change working directory to home + directory if `-psn_*' option is specified. + + * mac.c (DECODE_UTF_8): Remove macro. + [TARGET_API_MAC_CARBON] (cfstring_to_lisp_nodecode): New function + created from cfstring_to_lisp. + [TARGET_API_MAC_CARBON] (cfstring_to_lisp): Use it. + (xrm_get_preference_database) [TARGET_API_MAC_CARBON]: Likewise. + + * macterm.h (cfstring_to_lisp_nodecode) [TARGET_API_MAC_CARBON]: + Add prototype. + +2005-11-21 Ken Raeburn + + * keymap.c (shadow_lookup): Use make_number to pass a number to + Fsubstring. + +2005-11-21 Juri Linkov + + * puresize.h (BASE_PURESIZE): Increment to 1180000. + +2005-11-20 Chong Yidong + + * xfaces.c (Finternal_set_lisp_face_attribute): + Use :ignore-defface for new frame defaults when `unspecified' is + supplied. + (Finternal_get_lisp_face_attribute): Hide :ignore-defface. + (merge_face_vectors): Don't do :ignore-defface overwriting here. + (Finternal_merge_in_global_face): Do it here. + +2005-11-20 Juri Linkov + + * charset.c (invalid_character): Use Lisp-readable syntax + for octal and hex. Reorder decimal, octal and hex values. + +2005-11-20 Nick Roberts + + * lisp.h: Use typedef when Lisp_Object is EMACS_INT so that + this type is recognised when debugging. + +2005-11-19 Andreas Schwab + + * .gdbinit (nextcons, xcdr, xfloat): Update for changes in + Lisp_Cons and Lisp_Float. + +2005-11-19 YAMAMOTO Mitsuharu + + * macterm.c [USE_CG_TEXT_DRAWING] (cg_text_anti_aliasing_threshold): + New variable. + [USE_CG_TEXT_DRAWING] (init_cg_text_anti_aliasing_threshold): New fun. + (init_font_name_table) [USE_ATSUI && USE_CG_TEXT_DRAWING]: Use it. + [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): Don't do antialiasing if + font size is smaller than or equal to cg_text_anti_aliasing_threshold. + +2005-11-17 Chong Yidong + + * image.c (x_create_bitmap_from_xpm_data): Free attributes on fail. + + * xfaces.c (Qignore_defface): New variable. + (syms_of_xfaces): Provide `:ignore-defface'. + (IGNORE_DEFFACE_P): New macro. + (check_lface_attrs, lface_fully_specified_p) + (Finternal_set_lisp_face_attribute) + (Fface_attribute_relative_p, Fmerge_face_attribute): + Handle Qignore_defface as a possible value. + (merge_face_vectors): The merged face is `unspecified' if the + mergee specifies `:ignore-defface'. + +2005-11-16 Stefan Monnier + + * lread.c (readevalloop): Add missing GCPROs. + +2005-11-16 Chong Yidong + + * xfns.c (xg_set_icon_from_xpm_data): New function. + + * gnu.h (gnu_xpm_bits): Rename from gnu_bits. + (gnu_xbm_bits): Rename from gnu_bits (xbm version). + + * xterm.c (x_bitmap_icon): Use the xpm if available. + + * image.c (x_create_bitmap_from_xpm_data): New function. + (x_create_bitmap_from_xpm_data): Initialize XpmAttributes. + +2005-11-15 Luc Teirlinck + + * Makefile.in (lisp, shortlisp): Add rfn-eshadow. + +2005-11-16 Nick Roberts + + * .gdbinit: Make SIGTSTP work like SIGINT normally does. + +2005-11-15 Andreas Schwab + + * lisp.h (struct Lisp_Cons): Make cdr a union. + (XCDR_AS_LVALUE): Adjust. + (struct Lisp_Float): Make data a union. + (XFLOAT_DATA): Adjust. + + * alloc.c (free_float): Make free list chaining aliasing-safe. + (make_float): Likewise. + (free_cons): Likewise. + (Fcons): Likewise. + (check_cons_list): Likewise. + (Fmake_symbol): Likewise. + (allocate_misc): Likewise. + (free_misc): Likewise. + (gc_sweep): Likewise. + +2005-11-15 YAMAMOTO Mitsuharu + + * mac.c (HASHKEY_QUERY_CACHE): New define. + (xrm_create_database, xrm_q_put_resource): Empty query cache. + (xrm_get_resource): Use query cache. + + * image.c (init_image) [MAC_OS]: Don't call EnterMovies if + inhibit_window_system is set. + +2005-11-13 YAMAMOTO Mitsuharu + + * macgui.h (USE_CG_TEXT_DRAWING): New define. + (struct MacFontStruct) [USE_CG_TEXT_DRAWING]: New members cg_font + and cg_glyphs. + + * macterm.c [USE_CG_TEXT_DRAWING] (mac_draw_string_cg): New function. + (x_draw_glyph_string_foreground) [USE_CG_TEXT_DRAWING]: Use it. + (XLoadQueryFont) [USE_CG_TEXT_DRAWING]: Set members cg_font and + cg_glyphs in struct MacFontStruct if synthesized bold or italic is + not used and font substitution never occurs for ASCII and Latin-1 + characters. + (XLoadQueryFont): Maximum and minimum metrics are now those among + ASCII characters. + (XLoadQueryFont) [!MAC_OS8 || USE_ATSUI]: Apply WebKit-style + height adjustments for Courier, Helvetica, and Times. + + * s/darwin.h (LIBS_CARBON) [!HAVE_CARBON]: Remove `-framework Carbon'. + +2005-11-11 David Reitter + + * macterm.c (syms_of_macterm): Remove macCtrlKey, macShiftKey, + macMetaKey, macAltKey. Introduce Qctrl, Qmeta, + Vmac_control_modifier / mac-control-modifier, + Vmac_option_modifier / mac-option-modifier, + Vmac_command_modifier / mac-command-modifier. + (mac_to_emacs_modifiers): Use the new style modifier + variables. Return UInt32 (modifiers are longs now.) + (backtranslate_modified_keycode): New function (refactoring). + (XTread_socket): Use new modifier variables and refactored function. + (mac_determine_quit_char_modifiers): Remove macMetaKey (there is + no dedicated meta key. Not in use anyway.) + (convert_fn_keycode): Map Fn-keys to their original keycode + using a table (english keyboard only). + +2005-11-11 Kim F. Storm + + * .gdbinit (pitx): Fix output format if n_overlay_strings > 0. + Add post hook to "backtrace" to always dump lisp call stack to + increase chance of people sending it to us when reporting bugs. + + * doc.c (Fsubstitute_command_keys): Doc fix. + + * dispextern.h (struct it): New member ignore_overlay_strings_at_pos_p. + + * xdisp.c (handle_stop): Skip overlay string handling if + ignore_overlay_strings_at_pos_p is set. + (set_iterator_to_next): At end of display vector, set + ignore_overlay_strings_at_pos_p if dpvec came from an overlay + string, so we skip those overlay strings at current pos. + +2005-11-10 Lars Hansen + + * fileio.c (file-regular-p): Doc fix. + +2005-11-10 Kim F. Storm + + * alloc.c (valid_lisp_object_p): New function to validate that + an object is really a valid Lisp_Object. + + * lisp.h (valid_lisp_object_p): Add prototype. + + * print.c (safe_debug_print): New function to be called from gdb + to print Lisp objects; use valid_lisp_object_p to avoid crashing + if user tries to print something which is not a Lisp object. + + * .gdbinit (pp, pp1): Use safe_debug_print. + (pv, pv1): New commands to print value of a lisp variable. + +2005-11-10 Nick Roberts + + * .gdbinit (pp1): New user-defined function. + +2005-11-09 YAMAMOTO Mitsuharu + + * image.c [MAC_OSX] (image_load_quartz2d): Fix memory leak. + + * mac.c [MAC_OSX] (init_mac_osx_environment): Reinitialize locale + related variables for dumped executable. + + * unexmacosx.c (unexec_write_zero): New function. + (copy_data_segment): Clear uninitialized local variables in + statically linked libraries. + + * s/darwin.h (C_SWITCH_SYSTEM): Remove -fno-common. + +2005-11-09 Juri Linkov + + * keymap.c (shadow_lookup): If Flookup_key returns a number, + call it again with a sub-key-sequence, and if its return value + is non-nil (sub-key is bound), return nil. + +2005-11-08 Kim F. Storm + + * process.c (Fsignal_process): Recognize signal names with and + without SIG prefix, e.g. SIGHUP and HUP. + + * search.c (search_buffer): No need to initialize base_pat. + +2005-11-04 Stefan Monnier + + * window.c (Fget_lru_window, Fget_largest_window, window_loop): + Don't abuse the `mini' arg. Use the `obj' arg instead. + +2005-11-04 Kim F. Storm + + * xdisp.c (show_mouse_face): Clear mouse face to eol. + +2005-11-03 Dan Nicolaescu + + * Makefile.in (lisp, shortlisp): Add emacs-lisp/syntax.elc, + font-lock.elc and jit-lock.elc. + +2005-11-03 Richard M. Stallman + + * window.c (Fenlarge_window): Rename SIDE to HORIZONTAL. + (enlarge_window): Rename WIDTHFLAG to HORIZ_FLAG. + (CURBEG, CURSIZE): Use HORIZ_FLAG instead of WIDTHFLAG. + + * sheap.c (STATIC_HEAP_SIZE): Increment both definitions. + + * alloc.c (refill_memory_reserve): Move decl out of conditionals. + +2005-11-03 Stefan Monnier + + * window.c (Fdisplay_buffer): Fix last change to not use + a dedicated window. + +2005-11-01 Kim F. Storm + + * fringe.c (update_window_fringes): Undo 2005-10-27 change. + Instead, rotate the bottom angle bitmap 180 degrees to indicate + that the bottom row does not end in a newline. + +2005-11-01 Andreas Schwab + + * unexelf.c (unexec): Handle .plt section in BSS segment. + +2005-11-01 Stefan Monnier + + * lread.c (readevalloop): Yet another int/Lisp_Object mixup (YAILOM). + + * window.c (window_loop): For LRU and LARGEST, let the `mini' argument + determine whether to consider dedicated windows as well. + (Fget_lru_window, Fget_largest_window): Add `dedicated' argument. + (Fdisplay_buffer): Do consider dedicated windows in those cases where + we will split the window rather than reuse it. + Don't try to use windows on other displays. + +2005-10-31 Dan Nicolaescu + + * puresize.h (BASE_PURESIZE): Increment to 1170000. + +2005-10-31 Romain Francoise + + * macfns.c: Update copyright year. + * m/gould.h: Likewise. + +2005-10-30 Kim F. Storm + + * xdisp.c (display_line): Restore it->current_x and call + extend_face_to_end_of_line when last glyph doesn't fit on line. + (set_glyph_string_background_width): Remove specific tests here + to see if face background should extend to end of line. Simplify. + +2005-10-30 Richard M. Stallman + + * alloc.c (BYTES_USED): Use uordblks, not arena. + (bytes_used_when_reconsidered): New variable. + (emacs_blocked_free): Set that. + +2005-10-29 Chong Yidong + + * alloc.c (emacs_blocked_free): Fix typo. + +2005-10-29 Richard M. Stallman + + * data.c (Fmake_variable_frame_local): Doc fix. + + * xdisp.c (handle_fontified_prop): Do nothing if memory full. + (format_mode_line_unwind_data): New arg SAVE_PROPTRANS + controls whether to save and restore mode_line_proptrans_alist. + Callers changed. + (unwind_format_mode_line): Work with that feature. + (redisplay_internal): Don't call prepare_menu_bars if memory full. + (move_elt_to_front): New function. + (display_mode_element): Use move_elt_to_front. + Don't bother munging text props on a null string. + Delete obsolete elts from mode_line_proptrans_alist. + (decode_mode_spec): Test Vmemory_full, not spare_memory. + (Fformat_mode_line): Clear mode_line_proptrans_alist after saving. + + * lisp.h (memory_full_cons_threshold): Declare. + (internal_lisp_condition_case): Declare. + + * alloc.c (syms_of_alloc) : Doc fix. + (Fmemory_full_p): Function deleted. + (syms_of_alloc): Don't defsubr it. + (memory_full_cons_threshold): New variable. + (spare_memory): Now a vector of 7 elts. + (buffer_memory_full): Don't set Vmemory_full here. + (xfree): Don't try to refill here. + (emacs_blocked_free): Record BYTES_USED in local var. + (memory_full): Now free all the slots in spare_memory. + (refill_memory_reserve): Allocate each slot in spare_memory. + (init_alloc_once): Call refill_memory_reserve. + + * keyboard.c (command_loop_1): Don't set Vmemory_full here. + + * eval.c (internal_lisp_condition_case): New function. + (Fcondition_case): Use internal_lisp_condition_case. + (Feval): Test Vmemory_full and memory_full_cons_threshold. + (Ffuncall): Likewise. + + * bytecode.c (Fbyte_code): Use internal_lisp_condition_case. + +2005-10-29 Stefan Monnier + + * syntax.c (Fparse_partial_sexp): Fix docstring. + +2005-10-28 Romain Francoise + + * puresize.h (BASE_PURESIZE): Increment to 1130000. + +2005-10-28 Richard M. Stallman + + * xfns.c (syms_of_xfns): Provide `x' as feature. + + * xdisp.c (decode_mode_spec): Define %e to indicate memory full. + + * editfns.c (Fformat): Don't include string padding + between info[n].start and info[n].end. + + * alloc.c (spare_memory): No longer static. + (xfree) [!SYSTEM_MALLOC]: Call refill_memory_reserve. + + * puresize.h (BASE_PURESIZE): Increment to 1120000. + +2005-10-27 Chong Yidong + + * data.c (Fmake_variable_frame_local): Add clarification to docstring. + + * fringe.c (update_window_fringes): Handle case where buffer ends + with a newline. + +2005-10-27 Kenichi Handa + + * coding.h (DECODE_SYSTEM): Fix argument name; name->str. + +2005-10-24 Kenichi Handa + + * charset.h (charset_mule_unicode_0100_24ff) + (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff): + Extern them. + + * charset.c (charset_mule_unicode_0100_24ff) + (charset_mule_unicode_2500_33ff, charset_mule_unicode_e000_ffff): + New variables. + (Fsetup_special_charsets): Initialize them. + + * xterm.c (handle_one_xevent): Handle keysyms directly mapped to + supported Unicode characters. + +2005-10-25 Jason Rumney + + * w32fns.c (w32_to_x_font): Avoid forcing font widths. + +2005-10-25 YAMAMOTO Mitsuharu + + * image.c [MAC_OS] (image_load_qt_1): Check image size. + Use GraphicsImportGetImageDescription instead of + GraphicsImportGetNaturalBounds. + [MAC_OSX] (image_load_quartz2d): Check image size. + [MAC_OS] (xpm_load_image): Likewise. + + * macterm.c (last_mouse_glyph_frame): New var. + (note_mouse_movement): Say mouse moved if current frame differs + from last_mouse_glyph_frame, and update last_mouse_glyph_frame. + (XTmouse_position): Set last_mouse_glyph_frame. + (XTread_socket): Clear last_mouse_glyph_frame on mouse up/down event. + (mac_draw_string_common) [USE_ATSUI && WORDS_BIG_ENDIAN]: Fix typo. + Use EndianU16_BtoN. + (mac_draw_string_common) [MAC_OSX]: Don't use ATSUClearLayoutControls. + (x_per_char_metric, XLoadQueryFont) + [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Use device origins to get + glyph bounds. + (mac_to_x_fontname, mac_do_list_fonts) + (mac_initialize_display_info): Change screen resolutions to 72dpi. + +2005-10-25 Masatake YAMATO + + * minibuf.c (Fdisplay_completion_list): Small doc fix. + +2005-10-24 Kim F. Storm + + * xterm.c: Undo 2005-10-23 change. + (last_mouse_glyph_frame): New var. + (note_mouse_movement): Say mouse moved if current frame differs + from last_mouse_glyph_frame, and update last_mouse_glyph_frame. + (XTmouse_position): Set last_mouse_glyph_frame. + (handle_one_xevent): Clear last_mouse_glyph_frame [instead of + last_mouse_glyph] on mouse up/down event. + + * editfns.c (Fcompare_buffer_substrings): Fix last change. + +2005-10-23 Stefan Monnier + + * editfns.c (Fcompare_buffer_substrings): Handle multibyte chars. + +2005-10-23 Jan Dj,Ad(Brv + + * xterm.c (note_mouse_movement): Always call note_mouse_highlight + so tool tips don't interfere with press on tool bar button. + +2005-10-23 Richard M. Stallman + + * casetab.c (Fset_case_table): Doc fix. + + * lread.c (build_load_history): Replace STREAM arg with ENTIRE. + (readevalloop): Compute ENTIRE properly. + (syms_of_lread) : Doc fix. + +2005-10-21 Richard M. Stallman + + * lread.c (Fload): Simplify gcpro structure. + Gcpro FOUND as well as FILE, but not EFOUND. + Unless preloading, record FOUND instead of FILE in Vload_history. + Rename repeat local FILE to MSG_FILE. + (syms_of_lread) : Doc fix. + +2005-10-21 Kenichi Handa + + * search.c (boyer_moore): Add parens to fix and/or precedence bug. + +2005-10-20 Kim F. Storm + + * buffer.c (clone_per_buffer_values): Remove unused var tem. + (init_buffer): Remove unused vars dotstat, pwdstat. + + * ccl.c (check_ccl_update): Remove unused var vp. + + * fileio.c (auto_save_error): Call SAFE_FREE. + + * fns.c (Fchar_table_range): Remove unused var i. + + * minibuf.c (display_completion_list_1): New wrapper function + for Fdisplay_completion_list. + (Fminibuffer_completion_help): Use it. + + * term.c (encode_terminal_code): Remove unused var src_start. + + * window.c (Fwindow_tree): Remove unused var alist. + + * xterm.c (x_calc_absolute_position): Remove unused vars win_x, win_y. + +2005-10-20 Aubrey Jaffer (tiny change) + + * unexelf.c (unexec): Fix calls to `fatal' with less than 3 arguments. + +2005-10-20 Olli Savia (tiny change) + + * syssignal.h [__Lynx__]: Undef SIGPOLL along with SIGIO. + +2005-10-20 Andreas Schwab + + * minibuf.c (Fdisplay_completion_list): Doc fix. + +2005-10-19 Kim F. Storm + + * image.c (check_image_size): Handle integer Vmax_image_size value + directly as max pixel value. Use default frame size for null frame. + (syms_of_image) : Describe integer value. + +2005-10-19 Romain Francoise + + * emacs.c (main): Update copyright year. + +2005-10-18 Chong Yidong + + * image.c (Vmax_image_size): New variable. + (check_image_size): New function. + (xbm_read_bitmap_data, pbm_load, png_load, jpeg_load, tiff_load) + (gif_load, gs_load): Use it. + (lookup_image): Try loading again if previous load failed. + (xbm_read_bitmap_data): Add a new argument, a pointer to the frame + to display in, NULL if none. + (xbm_load_image, xbm_file_p): Pass xbm_read_bitmap_data the new + argument. + +2005-10-18 Richard M. Stallman + + * search.c (Fstring_match): Doc fix. + +2005-10-18 YAMAMOTO Mitsuharu + + * macterm.c (note_mouse_movement): Use PtInRect. + (XTread_socket): Also ignore mouse motion just before a button + release event. Don't process button release event when mouse is + not grabbed. + +2005-10-16 Masatake YAMATO + + * minibuf.c (Fdisplay_completion_list): Add new optional + argument COMMON_SUBSTRING. Bind `completion-common-substring' + to the optional argument during running `completion-setup-hook'. + +2005-10-16 YAMAMOTO Mitsuharu + + * mac.c [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp): + Allow nil as argument. + [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Regard nil + for encoding arguments as UTF-16 in native byte order, no BOM. + + * macfns.c (Fx_create_frame): Add debugging code. + (Fx_show_tip): Set frame pixel width and height. + + * macterm.c (MAC_WINDOW_NORMAL_GC): Remove macro. + (FRAME_NORMAL_GC): New macro. + (mac_draw_line, mac_clear_area, mac_clear_window) + (mac_fill_rectangle, mac_draw_string, mac_draw_string_16) + (mac_draw_image_string, mac_draw_image_string_16): Rename from + XDrawLine, XClearArea, XClearWindow, XFillRectangle, XDrawString, + XDrawString16, XDrawImageString, and XDrawImageString16, respectively. + All uses changed. + (mac_draw_line, mac_erase_rectangle, mac_clear_area) + (mac_clear_window, mac_draw_bitmap, mac_draw_rectangle) + (mac_invert_rectangle, mac_draw_string_common, mac_draw_string) + (mac_draw_string_16, mac_draw_image_string) + (mac_draw_image_string_16, mac_copy_area, mac_copy_area_with_mask) + (mac_scroll_area): Drawing functions now take frame as destination. + All uses changed. + (mac_draw_string_common): Get port height with FRAME_PIXEL_HEIGHT. + (x_draw_fringe_bitmap): Set clipping area in face->gc. + + * macterm.h (mac_clear_area): Add extern. + +2005-10-14 YAMAMOTO Mitsuharu + + * macterm.c (note_mouse_movement, XTread_socket): Apply 2005-10-14 + changes for xterm.c. + + * w32term.c (note_mouse_movement, w32_read_socket): Likewise. + +2005-10-14 Kenichi Handa + + * search.c (search_buffer): Give up BM search on case-fold-search + if one of a target character has a case-equivalence of different + charset even if that target charcter is an ASCII. + + * casefiddle.c (casify_object): Fix for the case that case + conversion change the byte length. + +2005-10-14 Kim F. Storm + + * xterm.c (note_mouse_movement): Return 1 if mouse moved; 0 otherwise. + (handle_one_xevent): Only clear help_echo_string; restore it if + note_mouse_movement didn't record any mouse movement. + + * xdisp.c (pos_visible_p): Convert w->hscroll to pixels before use. + (remember_mouse_glyph): Clear RECT if mouse is over an image glyph. + + * keyboard.c (make_lispy_position): Adjust wx for left margin if + ON_TEXT. + (Fposn_at_x_y): Fix calculation of x coordinate. + (Fposn_at_point): Return nil if point is hscrolled out of view. + +2005-10-13 Andreas Schwab + + * sysdep.c (request_sigio, unrequest_sigio): Do nothing in + non-interactive mode. + +2005-10-12 YAMAMOTO Mitsuharu + + * xterm.c, w32term.c, macterm.c (note_mouse_movement): Undo last change. + +2005-10-12 Kim F. Storm + + * xterm.c (handle_one_xevent): Clear last_mouse_glyph on mouse up/down. + +2005-10-12 Romain Francoise + + * buffer.c (init_buffer): Rename `rc' to `len' for clarity. + +2005-10-12 YAMAMOTO Mitsuharu + + * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to + get end of text rows. Obtain header-line/mode-line rows directly. + + * xterm.c, w32term.c, macterm.c (note_mouse_movement): + Restore help_echo_string if mouse is moved inside last_mouse_glyph. + +2005-10-12 Kim F. Storm + + * xdisp.c (remember_mouse_glyph): New generic version based on + glyph_rect and remember_mouse_glyph from xterm.c enhanced to + properly handle all different window areas. + + * dispextern.h (remember_mouse_glyph): Add prototype. + + * xterm.c (glyph_rect, remember_mouse_glyph): Remove X versions. + (note_mouse_movement, XTmouse_position): Use generic + remember_mouse_glyph, add last_mouse_glyph arg. + + * w32term.c (note_mouse_movement): Fix last_mouse_glyph check. + (glyph_rect, remember_mouse_glyph): Remove w32 specific versions. + (note_mouse_movement, w32_mouse_position): Use generic + remember_mouse_glyph, add last_mouse_glyph arg. + + * macterm.c (note_mouse_movement): Add call to remember_mouse_glyph. + (glyph_rect, remember_mouse_glyph): Remove mac specific versions. + (XTmouse_position): Adapt to use generic remember_mouse_glyph + instead of pixel_to_glyph_coords. + + * window.c (coordinates_in_window): Fix x position for ON_RIGHT_MARGIN. + Fix x position for ON_TEXT when left margin width > 0. + +2005-10-11 Kim F. Storm + + * window.c (coordinates_in_window): Fix y position for ON_SCROLL_BAR. + + * keyboard.c (make_lispy_position): Fix buffer calculations for + mouse click or movement in right fringe and the margins. + +2005-10-11 Juanma Barranquero + + * image.c (fn_jpeg_stdio_src): Don't define it. + (init_jpeg_functions): Don't initialize `fn_jpeg_stdio_src'. + (our_common_init_source): Rename from `our_init_source'. + (our_common_term_source): Rename from `our_term_source'. + (our_memory_fill_input_buffer): Rename from + `our_fill_input_buffer'. + (our_memory_skip_input_data): Rename from `our_skip_input_data'. + (jpeg_memory_src): Use the new names. + (struct jpeg_stdio_mgr): New struct. + (JPEG_STDIO_BUFFER_SIZE): New constant. + (our_stdio_fill_input_buffer, our_stdio_skip_input_data) + (jpeg_file_src): New functions. + (jpeg_load): Use `jpeg_file_src' instead of `fn_jpeg_stdio_src'. + +2005-10-11 YAMAMOTO Mitsuharu + + * macterm.c (PER_CHAR_METRIC): Remove unused macro. + (fm_font_family_alist): New variable. + (syms_of_macterm): Initialize and staticpro it. + (decode_mac_font_name): Replace '-' in family name with '_' if it + occurs just once. Lower family name. + (parse_x_font_name): Rename from x_font_name_to_mac_font_name. + All uses changed. Remove argument MF and code conversion for it. + Add argument SIZE. Rename argument MF_DECODED to FAMILY, and CS + to CHARSET. Parse font size. Lower family name. Return integer + value for status of parsing. + (init_font_name_table) [USE_ATSUI]: Use decode_mac_font_name. + Don't use Fdowncase because family name is already lowered by + decode_mac_font_name. + (init_font_name_table): Always call decode_mac_font_name. + Add pair of family name and its reference to fm_font_family_alist. + (mac_clear_font_name_table): Clear fm_font_family_alist. + (XLoadQueryFont): Move font size parsing part to parse_x_font_name. + Lookup fm_font_family_alist to get font family reference. + (XLoadQueryFont) [USE_ATSUI]: Don't use Fdowncase because family + name is already lowered by parse_x_font_name. + +2005-10-11 Kim F. Storm + + * xterm.c (glyph_rect): Return 0 if position is outside text area. + + * keyboard.c (make_lispy_position): Fix buffer position calculation for + mouse click or movement in fringe. + +2005-10-10 Jason Rumney + + * xterm.c (remember_mouse_glyph): New function. + (note_mouse_movement): Use it to remember the current glyph if changed. + (XTmouse_position): Fix calculation of fake glyph under mouse. + Move code to calculate glyph under mouse into remember_mouse_glyph. + +2005-10-10 Jan Dj,Ad(Brv + + * emacs.c (USAGE3, standard_args): -nb => -nbi. + +2005-10-10 Juanma Barranquero + + * frame.c (Fredirect_frame_focus): Fix typos in docstring. + (next_frame, prev_frame, set_term_frame_name): Make static. + + * window.c (Fwindow_tree): Fix spelling. + +2005-10-09 Romain Francoise + + * window.c (Fwindow_end): Don't try to redisplay if non-interactive. + +2005-10-09 Jan Dj,Ad(Brv + + * emacs.c (standard_args): Remove options -i, -itype, --icon-type. + Add options -nb, --no-bitmap-icon. + + * xfns.c (Fx_create_frame): Make bitmapIcon have default on. + +2005-10-08 YAMAMOTO Mitsuharu + + * macgui.h (MAX_CLIP_RECTS): New define. + (struct _XGC): New member clip_region. + (struct _XGC) [MAC_OSX && USE_ATSUI]: New members n_clip_rects and + clip_rects. + + * macterm.c (GC_CLIP_REGION): New macro. + (saved_port_clip_region): New variable. + (mac_begin_clip, mac_end_clip): New functions. + (XDrawLine, mac_erase_rectangle, mac_draw_bitmap, XFillRectangle) + (mac_draw_rectangle, mac_draw_string_common, mac_copy_area) + (mac_copy_area_with_mask, mac_scroll_area): Use them. + (mac_set_clip_rectangle, mac_reset_clipping): Remove functions. + [USE_ATSUI] (atsu_get_text_layout_with_text_ptr) + [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Specify kATSLineFractDisable. + (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Clip to clipping + rectangles stored in gc. + (XFreeGC): Dispose of clipping region. + (mac_set_clip_rectangles, mac_reset_clip_rectangles): New functions. + (x_draw_fringe_bitmap, x_set_glyph_string_clipping) + (x_draw_relief_rect, x_draw_box_rect, x_draw_stretch_glyph_string) + (x_draw_glyph_string, x_clip_to_row, x_draw_hollow_cursor) + (x_draw_bar_cursor): Use them. + (x_set_glyph_string_clipping): Use get_glyph_string_clip_rects to + get multiple clipping rectangles. + + * macterm.h (mac_term_init): Add types to extern. + (struct mac_output): Remove members mWP and pending_menu_activation. + Put members scroll_bar_foreground_pixel and + scroll_bar_background_pixel in #if 0. + (FRAME_MAC_WINDOW, FRAME_X_WINDOW): Use window_desc. + + * xfaces.c (x_create_gc, x_free_gc) [MAC_OS]: Add BLOCK_INPUT. + Add debugging code. + +2005-10-08 Kim F. Storm + + * window.c (window_tree, Fwindow_tree): Rename fns added 2005-10-04. + +2005-10-07 Kim F. Storm + + * dispnew.c (redraw_overlapped_rows, redraw_overlapping_rows) + [!HAVE_WINDOW_SYSTEM]: Don't declare them... + (update_window) [!HAVE_WINDOW_SYSTEM]: ...and don't call them. + +2005-10-07 YAMAMOTO Mitsuharu + + * dispextern.h (struct glyph_string): Rename member for_overlaps_p + to for_overlaps. Now occupy 3 bits. + (OVERLAPS_PRED, OVERLAPS_SUCC, OVERLAPS_BOTH) + (OVERLAPS_ERASED_CURSOR): New defines. + (struct redisplay_interface): Add new OVERLAPS arg to member + fix_overlapping_area. + (x_fix_overlapping_area): Add new OVERLAPS arg. + (get_glyph_string_clip_rects): Add extern. + + * dispnew.c (redraw_overlapping_rows): + Call rif->fix_overlapping_area with new OVERLAPS arg as redrawn part. + + * xdisp.c: Rename member for_overlaps_p in struct glyph_string to + for_overlaps. + (get_glyph_string_clip_rects): New function created from + get_glyph_string_clip_rect. Set clipping rectangles according to the + value of for_overlaps. Enable to store multiple clipping rectangles. + (get_glyph_string_clip_rect): Use get_glyph_string_clip_rects. + (fill_composite_glyph_string, fill_glyph_string, draw_glyphs): + Rename argument OVERLAPS_P to OVERLAPS. All uses in macros changed. + (x_fix_overlapping_area): Add OVERLAPS arg. Pass it to draw_glyphs. + (draw_phys_cursor_glyph): Set width of erased cursor to use it for + calculating clipping rectangles later. Call x_fix_overlapping_area + with new OVERLAPS arg to draw only erased cursor area. + (expose_overlaps): Call x_fix_overlapping_area with new OVERLAPS arg + to draw overlaps in both preceding and succeeding rows. + + * xterm.c, w32term.c, macterm.c: Rename member for_overlaps_p in + struct glyph_string to for_overlaps. + +2005-10-04 Richard M. Stallman + + * alloc.c (refill_memory_reserve): Conditionalize the body, + not the function's existence. + +2005-10-04 Kim F. Storm + + * window.c (window_split_tree): New function. + (Fwindow_split_tree): New defun. + (syms_of_window): Defsubr it. + +2005-10-04 YAMAMOTO Mitsuharu + + * macterm.c (mac_invert_rectangle): New function. + (XTflash): Use it. + +2005-10-04 Stefan Monnier + + * regex.h (re_char): Don't expose it in the interface. + (re_set_whitespace_regexp): Adjust the arg's type to not use it. + + * regex.c (re_char): Move it back here. + (re_set_whitespace_regexp): Change the arg's type to not use it. + + * keyboard.c (make_lispy_event): If point has moved between down and up + event, make it a drag, not a click, to mirror what + mouse-drag-region expects. + +2005-10-02 Dan Nicolaescu + + * lisp.h (fatal): Undo previous change. + * term.c (fatal): Undo previous change. + +2005-10-01 Richard M. Stallman + + * xfaces.c (face_color_gray_p): Colors close to black count as gray. + +2005-10-01 Kim F. Storm + + * xdisp.c (try_window): Skip scroll-margin check if ZV is visible. + +2005-10-01 YAMAMOTO Mitsuharu + + * keyboard.c (init_keyboard) [MAC_OSX]: Don't install SIGINT handler. + + * macfns.c (start_hourglass): Apply 2005-05-07 change for xfns.c. + (x_create_tip_frame) [GLYPH_DEBUG]: Uncomment debugging code. + (Fx_create_frame, x_create_tip_frame) [USE_ATSUI]: + Try ATSUI-compatible 12pt Monaco font first. + + * macgui.h (struct _XCharStruct): New member valid_p. + (STORE_XCHARSTRUCT): Set valid_p. + (struct MacFontStruct) [USE_ATSUI]: New member mac_style. + + * macterm.c (mac_draw_string_common, x_per_char_metric) + (mac_compute_glyph_string_overhangs, init_font_name_table) + (XLoadQueryFont, mac_unload_font) [USE_ATSUI]: Add ATSUI support. + (atsu_get_text_layout_with_text_ptr) [USE_ATSUI]: New function. + (x_draw_glyph_string_background) + (x_draw_glyph_string_foreground) [MAC_OS8 && USE_ATSUI]: Don't use + XDrawImageString. Always draw background and foreground separately. + (x_draw_glyph_string_foreground) [USE_ATSUI]: Don't use 8-bit + functions for one-byte chars when using ATSUI-compatible fonts. + (atsu_font_id_hash) [USE_ATSUI]: New variable. + (syms_of_macterm) [USE_ATSUI]: Initialize and staticpro it. + (XLoadQueryFont): Set min_byte1, max_byte1, min_char_or_byte2, and + max_char_or_byte2 more in detail. + (quit_char_comp, mac_check_for_quit_char) [MAC_OSX]: Remove functions. + +2005-09-30 Dan Nicolaescu + + * image.c (slurp_file, xbm_read_bitmap_data): Cast to the correct type. + * xterm.c (handle_one_xevent, handle_one_xevent): Likewise. + + * unexelf.c (fatal): Fix prototype. + + * term.c (fatal): Implement using varargs. + + * regex.c (re_char): Move typedef ... + * regex.h (re_char): ... here. + (re_iswctype, re_wctype, re_set_whitespace_regexp): New prototypes. + + * emacs.c (malloc_set_state): Fix return type. + (endif): Fix type. + + * lisp.h (fatal): Add argument types. + + * dispextern.h (fatal): Delete prototype. + + * systime.h (make_time): Prototype moved from ... + * editfns.c (make_time): ... here. + + * editfns.c: Move systime.h include after lisp.h. + * dired.c: + * xsmfns.c: + * process.c: Likewise. + + * alloc.c (old_malloc_hook, old_realloc_hook, old_realloc_hook): + Add parameter types. + (__malloc_hook, __realloc_hook, __free_hook): Fix prototypes. + (emacs_blocked_free): Change definition to match __free_hook. + (emacs_blocked_malloc): Change definition to match __malloc_hook. + (emacs_blocked_realloc): Change definition to match __realloc_hook. + +2005-09-30 Romain Francoise + + * minibuf.c (Fread_buffer): Follow convention for reading from the + minibuffer with a default value. Doc fix. + +2005-09-29 Juri Linkov + + * editfns.c (Fmessage, Fmessage_box, Fmessage_or_box): + Rename argument name `string' to `format-string'. + (Fformat): Doc fix. + +2005-09-28 Kim F. Storm + + * image.c (gif_load): Fix size of allocated image buffer + for images where a sub-image may be larger than the image's + total height/width specifications. + +2005-09-28 YAMAMOTO Mitsuharu + + * macgui.h (struct _XCharStruct): Each member now takes short value. + +2005-09-27 Dan Nicolaescu + + * xfaces.c (lookup_derived_face): Add parameter type. + + * xdisp.c (cursor_row_fully_visible_p): Add parameter type. + + * marker.c (verify_bytepos): Add parameter type. + + * process.c (get_operating_system_release): Move prototype ... + + * systime.h (get_operating_system_release): ... here. + + * xterm.c (handle_one_xevent): Refer to union field to match the + type required by the function definition. + (set_vertical_scroll_bar): Move prototype ... + + * xterm.h: ... here. + + * fns.c (internal_equal, seed_random): Fix prototypes. + (internal_equal): Add missing parameter. + +2005-09-25 Richard M. Stallman + + * keyboard.c (update_menu_bindings): Variable deleted. + (syms_of_keyboard): Don't defvar it. + (parse_menu_item): Don't test it. + +2005-09-23 Richard M. Stallman + + * editfns.c (Fformat): Explicitly test for end of format string + and don't use `index'. + +2005-09-23 Dan Nicolaescu + + * s/aix4-2.h (BROKEN_GET_CURRENT_DIR_NAME): + Define BROKEN_GET_CURRENT_DIR_NAME. + + * sysdep.c (get_current_dir_name): Also define if + BROKEN_GET_CURRENT_DIR_NAME. + + * m/ibmrs6000.h: Test for USG5, not USG5_4. + +2005-09-22 Kim F. Storm + + * xdisp.c (message_dolog): Add warning about GC and Lisp strings. + (message2): Fix commentary. Ok to use alloca'ed memory. + Still not ok to use Lisp string data (because of GC). + (set_message): Add comment why GC cannot happen. + +2005-09-22 YAMAMOTO Mitsuharu + + * macterm.c (xlfdpat_block_match_1): Fix assertion. + (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't add style + variants for a scalable font multiple times. + +2005-09-21 YAMAMOTO Mitsuharu + + * process.c (create_process) [RTU || UNIPLUS || DONT_REOPEN_PTY]: + Setup slave tty options before forking. + +2005-09-20 Jan Dj,Ad(Brv + + * gtkutil.c (xg_set_geometry): Do a gtk_window_move if program + positions have been set for the frame (as is done for frames in + special-display-buffer-names). + +2005-09-19 Kim F. Storm + + * editfns.c (Fformat): Don't scan past end of format string that + ends in %. Reported by Johan Bockg,Ae(Brd. + +2005-09-18 Andreas Schwab + + * window.h (struct window): Remove height_fixed_p, no longer set. + + * window.c (make_window): Don't initialize height_fixed_p. + (window_fixed_size_p): Don't use it. + +2005-09-18 John Paul Wallington + + * data.c (Fdefalias): Signal an error if SYMBOL is not a symbol. + +2005-09-18 YAMAMOTO Mitsuharu + + * Makefile.in (SOME_MACHINE_OBJECTS): Undo previous change. + + * macfns.c (image_cache_refcount, dpyinfo_refcount) [GLYPH_DEBUG]: + New variables. + [TARGET_API_MAC_CARBON] (Fx_file_dialog): Don't allow multiple + file selection. + + * sysdep.c [MAC_OS8]: Don't include stdlib.h. Include sys/param.h. + +2005-09-17 Eli Zaretskii + + * Makefile.in (XMENU_OBJ) [!HAVE_CARBON]: Reinstate variable. + (obj): Use XMENU_OBJ, not a literal xmenu.o. + +2005-09-16 Romain Francoise + + * fileio.c (syms_of_fileio) : Doc fix. + +2005-09-15 Richard M. Stallman + + * xdisp.c (overlay_arrow_at_row): Add HAVE_WINDOW_SYSTEM conditional. + (display_mode_element): Instead of `lisp_string' and `this', + record `offset' and increment that. + `last_offset' replaces `last'. + + * Makefile.in (XMENU_OBJ): Variable deleted. + (obj): Use xmenu.o unconditionally. + (SOME_MACHINE_OBJECTS): Delete xmenu.o. + + * emacs.c (main): Don't conditionalize syms_of_xmenu on HAVE_XMENU. + +2005-09-15 Kim F. Storm + + * xdisp.c (move_it_vertically): Don't try to fetch byte BEGV-1. + (reseat_at_next_visible_line_start): Likewise (in xassert). + +2005-09-14 Romain Francoise + + * fileio.c (write_region_inhibit_fsync): New variable. + (Fwrite_region): Use it to skip call to fsync. + (syms_of_fileio): Initialize it. + +2005-09-14 Kenichi Handa + + * coding.c (code_convert_region_unwind): Argument format changed. + (run_pre_post_conversion_on_str): If pre-write-conversion function + changed the current buffer, delete the new buffer. + (run_pre_write_conversin_on_c_str): Likewise. + + * fileio.c (Fexpand_file_name): Check multibyteness of + default_directory. + +2005-09-13 Kenichi Handa + + * composite.c (compose_chars_in_text): Delete it. + + * composite.h (compose_chars_in_text): Delete extern. + +2005-09-13 Kim F. Storm + + * print.c (print_error_message): Fix last change. + +2005-09-12 Kim F. Storm + + * composite.c (compose_chars_in_text): Fix setup of `pend'. + Unconditionally reload `ptr' and `pend' after eval. + + * xdisp.c (message3): Pass copy of lisp string to message_dolog. + + * print.c (print_error_message): Pass copy of caller name to + message_dolog. + + * fileio.c (auto_save_error): Pass copy of lisp string to message2. + +2005-09-12 Kenichi Handa + + * xdisp.c (display_mode_element): Be sure to make variables THIS + and LISP_STRING point into a string data of ELT. + +2005-09-12 Kim F. Storm + + * editfns.c (Ftranslate_region_internal): Reload `tt' after + signal_after_change that may have GC'ed. + (Fmessage, Fmessage_box, Fmessage_or_box): Doc fix. + + * keymap.c (Fdescribe_buffer_bindings): Reload `translate' + after insert while runs signal_after_change. + + * minibuf.c (Fminibuffer_complete_word): Move `completion_string' + declaration to where it is used. + + * w32.c (check_windows_init_file): Fix allocation of error buffer. + + * xfns.c (x_encode_text): Declare static. Add FREEP arg. + (x_set_name_internal): Call x_encode_text with new FREEP arg to + know if xfree is needed instead of guessing. + + * xterm.h (x_encode_text): Remove prototype. + +2005-09-11 Chris Prince (tiny change) + + * w32term.c (x_bitmap_icon): Load small icons too. + +2005-09-10 Romain Francoise + + * buffer.c (init_buffer): Grow buffer to add directory separator + and terminal zero. Fix typos. + +2005-09-10 Eli Zaretskii + + * buffer.c (init_buffer): Fix error message for failed call to + get_current_dir_name. + (get_current_dir_name): Remove prototype. + + * xsmfns.c (get_current_dir_name): Remove prototype. + + * lisp.h (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]: + Add prototype. + + * sysdep.c [WINDOWSNT]: Add prototype for getwd. + Don't #undef NULL after including blockinput.h. + + * config.in: Regenerated. + +2005-09-10 Giuseppe Scrivano + + Remove the MAXPATHLEN limitations: + + * sysdep.c (get_current_dir_name) [!HAVE_GET_CURRENT_DIR_NAME]: + New function. + + * buffer.c (init_buffer): Use it. + + * xsmfns.c (smc_save_yourself_CB): Ditto. + +2005-09-09 Kim F. Storm + + * doc.c (Fsubstitute_command_keys): Lookup key binding for + commands that are remapped from some other command. + + * xdisp.c (try_window_reusing_current_matrix): Clear mode_line_p + flag in disabled rows below the window. + + * frame.h (struct frame): New member updated_p. + + * xdisp.c (redisplay_internal): Mark updated frames in new updated_p + member. Remove local `updated' array and associated variables. + +2005-09-07 Kim F. Storm + + * xdisp.c (handle_display_prop): Respect overlay window property. + + * xdisp.c (try_window): Remove superfluous cursor_height calculation. + Fixes crash reported by YAMAMOTO Mitsuharu. + +2005-09-06 YAMAMOTO Mitsuharu + + * macterm.c (struct xlfdpat_block, struct xlfdpat): New structs. + (xlfdpat_destroy, xlfdpat_create, xlfdpat_exact_p) + (xlfdpat_block_match_1, xlfdpat_match): New functions. + (xlfdpat_block_match): New macro. + (mac_to_x_fontname): Don't use tolower for non-ASCII characters. + (x_font_name_to_mac_font_name): Set coding.dst_multibyte to 0. + (add_font_name_table_entry): Increase font_name_table_size more + rapidly. + (mac_c_string_match): Remove function. + (mac_do_list_fonts): Use XLFD pattern match instead of regular + expression match. + + * xfaces.c (xstrlwr): Don't use tolower for non-ASCII characters. + +2005-09-03 Richard M. Stallman + + * xdisp.c (redisplay_internal): Make UPDATED as long as needed. + (move_it_in_display_line_to): Stop after last char on line even + on a windowing terminal, if that's the specified stop position. + + * fns.c (Fsort): Doc fix. + + * editfns.c (Fpropertize): Don't insist that properties be symbols. + +2005-09-02 Stefan Monnier + + * dired.c (directory_files_internal_unwind, directory_files_internal) + (file_name_completion): Use a Save_Value object rather than a cons of + two 16bit ints to store the DIR*. + (directory_files_internal, file_name_completion): Handle both EINTR and + EAGAIN consistently after `readdir'. + +2005-09-01 Stefan Monnier + + * intervals.c (update_interval): Add position info in error. + + * dispnew.c (window_to_frame_hpos, update_window): + Avoid gcc warning about unused variable `f'. + +2005-08-31 Jason Rumney + + * w32menu.c (add_menu_item): If unicode_append_menu returns an + error, revert to using AppendMenu. + +2005-08-31 YAMAMOTO Mitsuharu + + * image.c (PIX_MASK_DRAW, PIX_MASK_RETAIN): Remove argument. + All uses changed. + [MAC_OS] (XPutPixel, XGetPixel): Add efficient versions for common + cases. + (x_create_x_image_and_pixmap) [MAC_OS]: Don't call x_destroy_x_image. + [MAC_OS] (find_image_fsspec) [!MAC_OSX]: Don't use FSRef. + Use posix_pathname_to_fsspec. + [MAC_OS] (xpm_load_image): Fill in background_transparent field + while we have mask. + + * macgui.h [!TARGET_API_MAC_CARBON] (GetPixDepth): New define. + + * macterm.h (PIX_MASK_DRAW, PIX_MASK_RETAIN): Move defines to image.c. + +2005-08-29 Stefan Monnier + + * syntax.c (update_syntax_table): Properly reproduce the special +1 + setting of e_property at the end of the buffer when bumping into the + INTERVALS_AT_ONCE limit. + +2005-08-27 Eli Zaretskii + + * emacs.c (USAGE1): Fix the description of the -Q option. + +2005-08-26 Stefan Monnier + + * xdisp.c (pos_visible_p): Yet another int/Lisp_Object mixup (YAILOM). + +2005-08-26 Kim F. Storm + + * xdisp.c (resize_mini_window): Fix 2005-08-20 change. + Don't move PT to new window start. + +2005-08-25 YAMAMOTO Mitsuharu + + * keyboard.c (kbd_buffer_get_event) [MAC_OS]: Make events for + ICONIFY/DEICONIFY_EVENT. + + * macterm.c (mac_copy_area, mac_copy_area_with_mask): + Restore background color. + (mac_handle_visibility_change): New function. + (x_make_frame_invisible, x_iconify_frame) + (XTread_socket) [!USE_CARBON_EVENTS]: Use it. + [USE_CARBON_EVENTS] (mac_handle_window_event) + (install_window_handler): Handle visibility change events. + (x_make_frame_visible): Don't reposition window if it is iconified + or asked for visible before. Select and uncollapse window when it + is made visible. + (x_make_frame_invisible): Don't reset x_highlight_frame. + (x_iconify_frame): Likewise. Make invisible frame visible before + it is iconified. + (read_socket_inev): Move variable outside #if USE_CARBON_EVENTS. + (do_window_update): Don't change visibility of invisible frame. + +2005-08-22 Juri Linkov + + * term.c (turn_on_face): Check for TS_set_foreground and + TS_set_background depending on standout_mode. Simplify. + +2005-08-21 Kim F. Storm + + * fringe.c (update_window_fringes): Only put TOP and BOTTOM + bitmaps on fully visible rows. + + * fringe.c (update_window_fringes): Replace FORCE_P arg with + KEEP_CURRENT_P arg; if non-zero, don't update current row fringes, + and return 0. + + * xdisp.c (redisplay_window): Call update_window_fringes with + KEEP_CURRENT_P non-0 if we are going to refresh fringes later. + +2005-08-20 Richard M. Stallman + + * xdisp.c (display_echo_area_1): Get display start pos from w->start. + (resize_mini_window): Set w->start, and PT, so as to display the tail + end of the buffer, if it doesn't all fit. + +2005-08-18 Kim F. Storm + + * xdisp.c (calc_pixel_width_or_height): Use actual display + resolution when available instead of Vdisplay_pixels_per_inch. + +2005-08-17 Kim F. Storm + + * xdisp.c (pos_visible_p): Adjust X value if window is hscrolled. + + * dispnew.c (buffer_posn_from_coords): Check that target row is + within matrix. + +2005-08-16 Jan Dj,Ad(Brv + + * xterm.c (x_wm_set_icon_pixmap): Move GTK specific code to + xg_set_frame_icon and call it. + + * gtkutil.c (xg_set_frame_icon): New function. + + * gtkutil.h (xg_set_frame_icon): Declare it. + +2005-08-16 Kim F. Storm + + * dispnew.c (increment_row_positions): Skip non-enabled rows. + + * window.c (SAVED_WINDOW_VECTOR_SIZE): Remove dangerous define. + (Fcurrent_window_configuration): Use VECSIZE macro instead. + +2005-08-15 Richard M. Stallman + + * xdisp.c (message3_nolog): Clear echo_message_buffer. + +2005-08-15 Kim F. Storm + + * lisp.h (QUIT) [!SYNC_INPUT]: Throw t to Vthrow_on_input. + + * process.c (deactivate_process, status_notify, read_process_output) + (update_status, status_convert, decode_status, allocate_pty) + (make_process, remove_process, list_processes_1) + (create_process_1, unwind_request_sigio, read_process_output) + (send_process, keyboard_bit_set): Declare static. + (Fdelete_process): Simplify. Pass process to status_notify, so we + don't try to read output from it. + (status_notify): New arg deleting_process--don't try to read + output from that process. + + * lisp.h (deactivate_process, status_notify, read_process_output): + Remove prototypes. + +2005-08-14 Richard M. Stallman + + * image.c (syms_of_image): Init Qxbm, Qpbm before calling + define_image_type. + +2005-08-13 Jan Dj,Ad(Brv + + * gtkutil.c (xg_get_pixbuf_from_pix_and_mask): New function. + (xg_get_image_for_pixmap): Move some code to + xg_get_pixbuf_from_pix_and_mask, and call it. + + * gtkutil.h (xg_get_pixbuf_from_pix_and_mask): Declare. + + * xterm.c (x_wm_set_icon_pixmap): Call xg_get_pixbuf_from_pix_and_mask + to get an GTK icon and set it with GTK functions to avoid having GTK + override an icon set with just X functions. + +2005-08-11 Richard M. Stallman + + * image.c (syms_of_image): Init image_types here, and call + define_image_type. + (init_image): Not here. + +2005-08-09 Richard M. Stallman + + * bytecode.c (BYTE_CODE_QUIT): Throw t to Vthrow_on_input. + + * lisp.h (QUIT): Throw t to Vthrow_on_input. + +2005-08-09 Thien-Thi Nguyen + + * floatfns.c (Fexpt): Use floats for negative exponent. + +2005-08-08 Jan Dj,Ad(Brv + + * gtkutil.c (xg_modify_menubar_widgets): Remove semicolon that + should not be there, causing menu display errors with GTK 2.6.9. + +2005-08-07 Richard M. Stallman + + * floatfns.c (Fexpt): Undo previous change. + + * dispnew.c (Fframe_or_buffer_changed_p): Take an arg + so it can be used with various state vectors. + + * emacs.c (endif): Convert -script into -scriptload. + (standard_args): Add -scriptload. Allow -basic-display with one dash. + + * fns.c (syms_of_fns): Add `emacs' to features. + + * term.c (set_terminal_modes): If no TS_termcap_modes string, + output newlines to scroll the old screen contents off the screen. + +2005-08-06 Thien-Thi Nguyen + + * floatfns.c (Fexpt): Use floats for negative exponent. + Reported by D Goel. + +2005-08-02 Richard M. Stallman + + * frame.c (Fframe_char_width): Doc fix. + +2005-07-30 Juanma Barranquero + + * xdisp.c (syms_of_xdisp) : + Defvar it. + +2005-07-28 Juanma Barranquero + + * w32fns.c (my_set_window_pos, my_show_window): Don't declare. + (my_create_window, my_create_tip_window): Make static. + + * w32term.c (my_show_window, my_set_window_pos, my_set_focus) + (my_set_foreground_window, my_destroy_window): Make static. + +2005-07-26 Paul Eggert + + Merge gnulib getopt implementation into Emacs. + + * s/cygwin.h (C_SWITCH_SYSTEM): Remove, since gettext.h is + now part of lib-src. + +2005-07-26 Stefan Monnier + + * eval.c (Fdefvar): Allow (defvar enable-multibyte-characters). + +2005-07-25 Jason Rumney + + * w32menu.c (w32_menu_display_help): Suppress tooltip when + navigating menus with the keyboard. + +2005-07-23 Richard M. Stallman + + * insdel.c (syms_of_insdel): staticpro combine_after_change_buffer. + + * bytecode.c (MAYBE_GC): Test gc_cons_threshold and + gc_relative_threshold, one by one. + + * keyboard.c (read_char): Test gc_cons_threshold. + (syms_of_keyboard): staticpro Qecho_area_clear_hook. + + * eval.c (Feval, Ffuncall): Test gc_cons_threshold and + gc_relative_threshold, one by one. + + * alloc.c (gc_cons_threshold): Not static. + (gc_cons_combined_threshold): Var deleted. + (gc_relative_threshold): New variable. + (Fgarbage_collect, init_alloc_once): Compute gc_relative_threshold + instead of gc_cons_combined_threshold. + + * lisp.h (gc_cons_threshold, gc_relative_threshold): Declare. + (gc_cons_combined_threshold): Declaration deleted. + +2005-07-23 YAMAMOTO Mitsuharu + + * mac.c: Don't include stdlib.h or string.h. + (Fdo_applescript, Fmac_file_name_to_posix) + (Fmac_file_name_to_posix): Doc fixes. + [TARGET_API_MAC_CARBON] (Fmac_get_preference) + (Fmac_code_convert_string): Likewise. + [MAC_OSX] (init_mac_osx_environment): Fall back on terminal mode + if the executable is not contained in a bundle. + + * macfns.c: Don't include stdlib.h or string.h. Include atimer.h. + (gray_width, gray_height): Remove defines. + (gray_bits, gray_bitmap_width, gray_bitmap_height) + (gray_bitmap_bits): Remove variables. + (lispy_function_keys): Remove extern. + (free_frame_menubar): Add extern. + (x_window_to_frame): Remove function. + (unwind_create_tip_frame): Add declaration. + (x_set_name_internal): New function. + (x_set_name, x_set_title): Use it. + (Fx_create_frame, Fx_display_grayscale_p, Fx_display_pixel_width) + (Fx_display_pixel_height, Fx_display_planes) + (Fx_display_color_cells, Fx_server_max_request_size) + (Fx_server_vendor, Fx_server_version, Fx_display_screens) + (Fx_display_mm_height, Fx_display_mm_width) + (Fx_display_backing_store, Fx_display_visual_class) + (Fx_display_save_under, Fx_synchronize, Fx_show_tip): Doc fixes. + + * macmenu.c (Fx_popup_menu, Fx_popup_dialog): Doc fixes. + + * macselect.c (Fx_own_selection_internal): Follow error conventions. + (Fx_get_selection_internal, Fx_selection_owner_p) + (Fx_selection_exists_p): Doc fixes. + (syms_of_macselect) : Likewise. + +2005-07-21 Juanma Barranquero + + * buffer.c (syms_of_buffer) : Doc fix. + + * ccl.c (Fregister_ccl_program): Fix typos in docstring. + (Fccl_execute_on_string): Likewise; add usage info. + + * composite.c (Fcompose_region_internal) + (Fcompose_string_internal): + Improve argument/docstring consistency. + + * minibuf.c (Fminibuffer_prompt_end, Feval_minibuffer): + Fix typos in docstrings. + + * textprop.c (Fnext_char_property_change) + (Fprevious_char_property_change): Doc fixes. + + * window.c (Fset_window_margins, Fset_window_fringes): + Improve argument/docstring consistency. + + * xfaces.c (Finternal_lisp_face_p): Doc fix. + +2005-07-21 Andreas Schwab + + * eval.c (restore_stack_limits): Return a value. + +2005-07-20 Juanma Barranquero + + * eval.c (Fdefvar): Doc fix. + +2005-07-20 Kim F. Storm + + * fileio.c (Fdo_auto_save, do_auto_save_unwind): + Use make_save_value to unwind protect stream. + + * lread.c (Fload, load_unwind): + Use make_save_value to unwind protect stream. + +2005-07-19 Juanma Barranquero + + * eval.c (Fprog2, Fcalled_interactively_p), + (syms_of_eval) : Doc fixes. + (syms_of_eval) : + (Finteractive_p): Fix typos in docstrings. + +2005-07-19 Kim F. Storm + + * w32fns.c (Vx_hand_shape): Variable removed. + (syms_of_w32fns): Intern and staticpro Qw32_charset_default. + +2005-07-19 Kenichi Handa + + * fns.c (Fstring_as_multibyte): Escape backslashes in the docstring. + +2005-07-18 Stefan Monnier + + * buffer.h (Fgenerate_new_buffer_name): Declare (for use in coding.c). + +2005-07-18 Kim F. Storm + + * frame.h (struct frame): New member already_hscrolled_p. + + * xdisp.c (redisplay_internal): Only try to hscroll each frame once + to avoid redisplay looping hscrolling back and forth ad infinitum. + +2005-07-18 Juri Linkov + + * buffer.c (scroll-up-aggressively, scroll-down-aggressively): + * keymap.c (Fminor_mode_key_binding): + * macterm.c (mac-emulate-three-button-mouse): + Delete duplicate duplicate words. + +2005-07-18 Ken Raeburn + + * minibuf.c (Ftest_completion): Fix odd syntax in test. + +2005-07-18 YAMAMOTO Mitsuharu + + * macfns.c (x_set_cursor_color): Use XSetBackground and XSetForeground. + + * macgui.h (struct _XGC): New struct. + (GC): Use it. + (GCForeground, GCBackground, GCFont): Use X11 mask values. + (XCreateGC, XParseGeometry): Move externs to macterm.h. + + * macterm.c (x_bitmap_icon, x_make_frame_visible): Remove declarations. + (XSetFont): Add declaration. + (mac_set_forecolor, mac_set_backcolor, mac_set_colors): + Remove functions. + (GC_FORE_COLOR, GC_BACK_COLOR, GC_FONT, MAC_WINDOW_NORMAL_GC): + New defines. + (XDrawLine, mac_draw_line_to_pixmap, XClearWindow) + (mac_draw_bitmap, XCreatePixmapFromBitmapData, XFillRectangle) + (mac_draw_rectangle, mac_draw_string_common, mac_scroll_area): + Use them. + (mac_erase_rectangle): New function. + (XClearArea, x_draw_fringe_bitmap, x_clear_glyph_string_rect) + (x_draw_stretch_glyph_string): Use it. + (XChangeGC, XCreateGC, XGetGCValues, XSetForeground) + (XSetBackground, XSetFont): Adjust for new GC implementation. + (x_draw_fringe_bitmap, x_draw_box_rect): Use GC to set colors. + (XTset_vertical_scroll_bar): Clear area under scroll bar. + + * macterm.h (struct mac_display_info): Change types of + scratch_cursor_gc black_relief.gc, and white_relief.gc to GC. + (XCreateGC, XParseGeometry): Move externs from macgui.h. + + * xfaces.c [MAC_OS] (XCreateGC): Remove extern. + +2005-07-16 Richard M. Stallman + + * buffer.c (Fmake_overlay): Doc fix. + +2005-07-16 Eli Zaretskii + + * w32proc.c (syms_of_ntproc): staticpro Qhigh, Qlow, + Vw32_valid_locale_ids, and Vw32_valid_codepages. + +2005-07-16 YAMAMOTO Mitsuharu + + * mac.c [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): + Use Fstring_as_unibyte instead of string_make_unibyte. + +2005-07-15 Richard M. Stallman + + * xdisp.c (select_frame_for_redisplay): Use find_symbol_value. + +2005-07-15 Kim F. Storm + + * xdisp.c: Fix redisplay loop in last change. + (IT_POS_VALID_AFTER_MOVE_P): New macro. + (move_it_vertically_backward, move_it_by_lines): Use it. + +2005-07-14 Jason Rumney + + * w32.c (init_environment): Default HOME directory to user's + appdata directory if possible. + +2005-07-14 Kim F. Storm + + * .gdbinit (pitx): Fix output format. Print string charpos. + + * lread.c (syms_of_lread): Initialize seen_list. + + * search.c (syms_of_search): Staticpro searchbuf.whitespace_regexp. + + * syntax.c (syms_of_syntax): Staticpro lisp objects in gl_state. + Staticpro re_match_object. + +2005-07-14 YAMAMOTO Mitsuharu + + * macselect.c (get_scrap_target_type_list): Avoid NULL pointer + dereference. + + * macterm.c (mac_window_to_frame): Remove duplicate define. + +2005-07-14 Kenichi Handa + + * coding.c (code_convert_region_unwind): ARG is changed to a cons. + (code_convert_region): Adjust for the above change. + (set_conversion_work_buffer): If the work buffer is already in + use, generate a new buffer and return it. Otherwise return Qnil. + (run_pre_post_conversion_on_str): Adjust for the above change. + (run_pre_write_conversin_on_c_str): Likewise. + +2005-07-13 Kim F. Storm + + * xdisp.c (start_display): Don't reseat to next visible line start + if current start position is in a string or image. + (move_it_vertically_backward): Be sure to move out of strings and + images when moving it2 forward. + (move_it_by_lines): When moving forward, move to next buffer + position if we end up in a string or image. When moving backward, + count rows moved over when moving to start of current row in case + row starts in middle of a string or image. Also move further + backward if we end up in a string or image. + (try_cursor_movement): If overlay string spans multiple lines, + move backward to set cursor on start of an overlay string. + (cursor_row_p): Row is ok if cursor is at newline from string, but + string starts on this line (so we always position cursor at start + of string). + + * indent.c (Fvertical_motion): If start position is on an image, + don't move back if we move too far (that's almost certain to happen). + + * xdisp.c (cursor_row_fully_visible_p): Allow partially visible + row in minibuffer windows. + (try_window): Don't check margins in minibuffer windows. + +2005-07-13 YAMAMOTO Mitsuharu + + * macterm.c: Don't include stdlib.h or composite.h. + (x_use_underline_position_properties, last_mouse_press_frame) + (x_noop_count, Qvendor_specific_keysyms): Remove unused variables. + (syms_of_macterm, mac_initialize): Don't initialize them. + (waiting_for_input, initial_argv, initial_argc) + (Vcommand_line_args, Vx_no_window_manager, errno, window_scroll) + (set_frame_menubar, path_from_vol_dir_name): Remove externs. + (extra_keyboard_modifiers): Fix type in extern. + (x_window_to_frame, x_window_to_scroll_bar): Remove declarations. + (x_scroll_bar_report_motion): Add argument types to declaration. + (mac_compute_glyph_string_overhangs): Add declaration. + (disable_mouse_highlight): Remove unused variable. + [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click) + (x_scroll_bar_handle_press, x_scroll_bar_handle_release) + (x_scroll_bar_handle_drag): Remove argument `timestamp'. + All callers changed. + [USE_TOOLKIT_SCROLL_BARS] (construct_scroll_bar_click): Don't set + timestamp. + [USE_CARBON_EVENTS] (mac_handle_mouse_event): Likewise. + (x_scroll_bar_create, XTset_vertical_scroll_bar): Show scroll bar + only when its width is less than the height. + (XTredeem_scroll_bar): Sync with xterm.c. + (font_name_table, font_name_table_size, font_name_count): + Make static. + (drag_and_drop_file_list): Remove variable. Previous use is now + local to function. + (do_ae_open_documents): Move DRAG_N_DROP event construction part + from XTread_socket. + (XTread_socket): Consolidate setting of event timestamp. + Move DRAG_N_DROP event construction part to do_ae_open_documents. + Support extra_keyboard_modifiers. + + * xfaces.c (try_font_list) [MAC_OS]: Try font family name + beginning with that for ASCII. + +2005-07-13 Stefan Monnier + + * alloc.c (gc_cons_combined_threshold, Vgc_cons_percentage): New vars. + (Fgarbage_collect, init_alloc_once): Set gc_cons_combined_threshold. + (syms_of_alloc): Declare gc-cons-percentage. + + * eval.c (Feval, Ffuncall): + * keyboard.c (read_char): + * bytecode.c (MAYBE_GC): Use gc_cons_combined_threshold. + + * lisp.h (gc_cons_combined_threshold): Declare. + +2005-07-12 Kim F. Storm + + * coding.c (Qprocess_argument): + * coding.h (Qprocess_argument): Remove unused var. + + * xselect.c (intern): Remove dup. intern and staticpro for QTIMESTAMP. + +2005-07-12 YAMAMOTO Mitsuharu + + * mac.c [!TARGET_API_MAC_CARBON]: Include charset.h, coding.h, and + Endian.h. + [!MAC_OSX] (fchmod, fchown): New functions. + (mac_get_code_from_arg): Don't accept Lisp integer as argument. + Use SBYTES and EndianU32_BtoN. + (mac_get_object_from_code): Return 4 byte string even if argument + is 0. Use make_unibyte_string and EndianU32_NtoB. + (Fmac_get_file_creator, Fmac_get_file_type, Fmac_set_file_creator) + (Fmac_set_file_type): Fix documents and argument declarations. + Don't specify kFSCatInfoNodeFlags. Support Mac OS Classic. + +2005-07-11 Stefan Monnier + + * window.c (Frecenter): Yet another int/Lisp_Object mixup (YAILOM). + +2005-07-11 Jan Dj,Ad(Brv + + * xfaces.c (x_update_menu_appearance): Use fontSet resource for + Lucid if X_I18N, font otherwise. + +2005-07-10 Steven Tamm + + * mac.c (Fmac_get_file_type, Fmac_get_file_creator): Add. + (Fmac_set_file_type, Fmac_set_file_creator): Add. + (mac_get_object_from_code, mac_get_code_from_arg): Add. + +2005-07-10 Richard M. Stallman + + * lread.c (Qeval_buffer_list, Veval_buffer_list): New vars. + (syms_of_lread): Set up eval-buffer-list. + (Feval_buffer, Feval_region): Bind eval-buffer-list. + +2005-07-08 Richard M. Stallman + + * eval.c (Fdefvar): Allow defvaring a constant to itself quoted. + +2005-07-08 Kim F. Storm + + * keyboard.c (menu_bar_items): Don't GCPRO menu_bar_items_vector here. + (syms_of_keyboard): Initialize and staticpro menu_bar_items_vector. + +2005-07-07 Kim F. Storm + + * window.c (Frecenter): Fix last change (set iarg before use). + +2005-07-06 Richard M. Stallman + + * window.c (Frecenter): When arg is inside the scroll margin, + move it out of the margin. + +2005-07-06 Jason Rumney + + * w32console.c (initialize_w32_display): Detect when the console + dimensions are insane, and default to 80x25 instead. + (w32_use_full_screen_buffer): Default to nil. + +2005-07-06 YAMAMOTO Mitsuharu + + * macterm.c (mac_draw_vertical_window_border): Use foreground of + VERTICAL_BORDER_FACE_ID for vertical border line. + (mac_encode_char): Call check_ccl_update in advance. + (mac_to_x_fontname, x_font_name_to_mac_font_name) + (init_font_name_table, mac_do_list_fonts, XLoadQueryFont): + Don't assume that font family length is less than 32. + (x_compute_min_glyph_bounds): Make static. + (x_load_font): Never set fonts_changed_p to zero. + +2005-07-04 Lute Kamstra + + * Update FSF's address in GPL notices. + +2005-07-03 Richard M. Stallman + + * xdisp.c (try_window): Fix previous change in how it handles + a partially-visible line or one only partly past the margin. + + * window.c (window_scroll_pixel_based): Take account + of this_scroll_margin when finding point when scrolling up. + +2005-06-29 Ralf Angeli + + * window.c (window_scroll_pixel_based, window_scroll_line_based): + Handle `scroll-preserve-screen-position' non-nil, non-t specially. + (syms_of_window) : Doc fix. + +2005-07-02 Juri Linkov + + * w32term.c (w32_draw_vertical_window_border): Use foreground of + VERTICAL_BORDER_FACE_ID for vertical border line. + +2005-07-02 Eli Zaretskii + + * fileio.c (Fcopy_file): Rearrange the code that calls fchown and + fchmod so that chmod doesn't get called on MSDOS before the file + is closed. + +2005-07-01 Jason Rumney + + * w32term.c (cleartype_active): New flag for enabling sub-pixel + workaround. + (w32_initialize): Initialize it. + (w32_native_per_char_metric): Allow a couple of extra pixels when + Cleartype is active. + + * w32term.c (w32_initialize): Move check for screen reader here + from syms_of_w32term. + +2005-06-30 Jan Dj,Ad(Brv + + * xterm.c (handle_one_xevent): bzero compose_status when nbytes + is not zero. + +2005-07-01 Masatake YAMATO + + * emacs.c (main): Passing ADD_NO_RANDOMIZE to `personality'. + +2005-06-30 Juri Linkov + + * xdisp.c (x_draw_vertical_border): If left fringe is not present + decrease x coord of vertical border by 1 pixel to not occupy text + area of the right window. + + * xterm.c (x_draw_vertical_window_border): Use foreground of + VERTICAL_BORDER_FACE_ID for vertical border line. + + * term.c (turn_on_face): In standout mode apply specified + fg to bg, and specified bg to fg (this makes the logic of + inversion on terminal consistent with X). + +2005-06-29 Juanma Barranquero + + * eval.c (user_variable_p_eh): New function. + (Fuser_variable_p): Use it. Clarify docstring. + Return t for aliases of user options, nil for alias loops. + +2005-06-27 Richard M. Stallman + + * eval.c (Fdefvar): Improve error message. + +2005-06-27 YAMAMOTO Mitsuharu + + * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Fix last + change. + +2005-06-27 Juanma Barranquero + + * eval.c (Fdefvar): Don't try to set constant symbols. + +2005-06-25 Richard M. Stallman + + * macfns.c (Fx_show_tip): Pass new arg to try_window. + + * w32fns.c (Fx_show_tip): Pass new arg to try_window. + + * xfns.c (Fx_show_tip): Pass new arg to try_window. + + * xdisp.c (try_window): New arg CHECK_MARGINS. Calls changed. + (redisplay_window): Handle try_window reporting point in scroll margin. + + * dispextern.h (try_window): Declare new arg. + + * fileio.c (Fcopy_file): New arg PRESERVE_UID_GID. + Use fchmod to copy the file modes. + (Frename_file): Don't copy UID and GID here; + instead, specify t for PRESERVE_UID_GID when calling Fcopy_file. + + * eval.c (call_debugger): Take full care of extending stack limits + to make space for the debugger, and restore the change afterward. + Bind debug-on-error to nil. + (restore_stack_limits): New subroutine. + (Fsignal): Extend specpdl bound along with eval depth bound, + for calling edebug. Don't do either one, for calling debugger. + (find_handler_clause): Don't bind debug-on-error here. + Don't unbind anything either. + Temporarily advance max_specpdl_size for calling + internal_with_output_to_temp_buffer. + (grow_specpdl): Don't alter max_specpdl_size before signaling + an error. + (syms_of_eval) : Doc fix. + + * lread.c (read1): 0.0e+NaN should make a "positive" NaN. + +2005-06-24 Eli Zaretskii + + * fileio.c (Frename_file): Undo last change: no need to ifdef away + chown on DOS_NT platforms. + + * w32.c (sys_chown): New function. + + * s/ms-w32.h (chown): New; define to sys_chown. + +2005-06-24 Juanma Barranquero + + * xdisp.c (syms_of_xdisp) : Doc fix. + (syms_of_xdisp) : Doc fix. + + * fileio.c (Frename_file)[!DOS_NT]: Don't call chown on MSDOS/Windows. + +2005-06-23 Richard M. Stallman + + * xdisp.c (get_next_display_element): Finish reversing the tests of + Vnobreak_char_display. + + * xdisp.c (Vnobreak_char_display): Rename from Vshow_nonbreak_escape. + All uses changed. + (Qnobreak_space): Rename from Qno_break_space. All uses changed. + (syms_of_xdisp): Define nobreak-char-display and nobreak-space. + + * fileio.c (Frename_file): Preserve owner and group, if possible, + when copying. + +2005-06-23 Juanma Barranquero + + * abbrev.c (Funexpand_abbrev): + * category.c (Fmake_category_set): + * dispnew.c (Fsleep_for, Fsit_for): + * editfns.c (Fsubst_char_in_region): + * eval.c (Fdefvar, Fdefconst, Feval, Ffuncall): + * frame.c (make_frame_without_minibuffer): + * lread.c (read_vector): + * macfns.c (check_x_frame): + * process.c (Fstop_process, Fcontinue_process): + * search.c (Freplace_match): + * syntax.c (Fstring_to_syntax): + * w32fns.c (check_x_frame, check_x_display_info): + * xfaces.c (x_supports_face_attributes_p): + * xselect.c (Fx_own_selection_internal): Follow error conventions. + + * image.c (fn_png_init_io): Don't define it. + (init_png_functions) [HAVE_NTGUI]: Don't initialize fn_png_init_io. + (png_read_from_file): New function, based on png_read_from_memory. + (png_load): Use it, instead of fn_png_init_io. + +2005-06-23 Kim F. Storm + + * search.c (Fmatch_data): Remove evaporate option. + (Fset_match_data): Do not mention evaporate option in doc string. + Add commentary explaining evaporate arg (for internal use only). + (unwind_set_match_data): Add comment on evaporate use. + +2005-06-22 Miles Bader + + * xfaces.c (Qvertical_border): Rename from `Qvertical_divider'. + (realize_basic_faces, syms_of_xfaces): Update references to it. + * dispextern.h (enum face_id): Rename `VERTICAL_DIVIDER_FACE_ID' + to `VERTICAL_BORDER_FACE_ID'. + * dispnew.c (build_frame_matrix_from_leaf_window): Update references. + +2005-06-21 Juri Linkov + + * dispextern.h: Add extern Qframe_set_background_mode. + + * xfaces.c: Rename obsolete function Qframe_update_face_colors to + Qframe_set_background_mode. + + * frame.c (Fmodify_frame_parameters): + Call frame-set-background-mode after changing the background color + on non-window non-dos branch. + +2005-06-21 Juanma Barranquero + + * fns.c (Fchar_table_range): + * process.c (Fmake_network_process): Fix spellings. + +2005-06-20 Kim F. Storm + + * fns.c (Fsort): Doc fix. + +2005-06-20 Miles Bader + + * xfaces.c (Qvertical_divider): New variable. + (realize_basic_faces): Realize its face. + (syms_of_xfaces): Initialize it. + + * dispextern.h (enum face_id): Add `VERTICAL_DIVIDER_FACE_ID'. + + * dispnew.c (build_frame_matrix_from_leaf_window): Display vertical + window-separator on ttys using `vertical-divider' face by default. + +2005-06-17 Richard M. Stallman + + * xdisp.c (get_next_display_element): + Reverse test of Vshow_nonbreak_escape. + + * term.c (produce_special_glyphs): Use spec_glyph_lookup_face. + (Ftty_no_underline): New function. + (syms_of_term): defsubr it. + + * keyboard.c (read_char): Call restore_getcjmp after jump occurs. + + * dispnew.c (spec_glyph_lookup_face): New function. + (build_frame_matrix_from_leaf_window): Use it. + + * dispextern.h (spec_glyph_lookup_face): Add declaration. + + * buffer.c (syms_of_buffer) : Doc fix. + +2005-06-12 Richard M. Stallman + + * keyboard.c (read_char): After catching a longjmp, + call restore_getcjmp. + +2005-06-17 Juanma Barranquero + + * xselect.c (lisp_data_to_selection_data): Fix spelling. + +2005-06-15 YAMAMOTO Mitsuharu + + * macterm.c (mac_compute_glyph_string_overhangs): Don't set + overhangs unless the given glyph type is noncomposite CHAR_GLYPH. + [USE_CARBON_EVENTS] (mac_convert_event_ref): Convert dead key down + events. + (XTread_socket): Don't pass keyboard events with the option + modifier to the system when Vmac_command_key_is_meta is nil or + Vmac_option_modifier is non-nil. + [USE_CARBON_EVENTS] (read_socket_inev): New variable. + [USE_CARBON_EVENTS] (init_command_handler): Fix argument. + [USE_CARBON_EVENTS] (mac_handle_mouse_event): New Carbon event + handler function. + (install_window_handler) [USE_CARBON_EVENTS]: Install it. + (XTread_socket) [USE_CARBON_EVENTS]: Move mouse wheel event + handler part to mac_handle_mouse_event. + +2005-06-14 Juanma Barranquero + + * eval.c (Fdefvaralias): Rename arguments SYMBOL and ALIASED to + NEW-ALIAS and BASE-VARIABLE, respectively. + +2005-06-13 Stefan Monnier + + * xdisp.c (note_mode_line_or_margin_highlight): Lisp_Object/int mixup. + (get_phys_cursor_geometry, format_mode_line_unwind_data) + (get_line_height_property, x_produce_glyphs): Remove unused vars. + + * coding.c (run_pre_post_conversion_on_str): Remove unused var `buf'. + +2005-06-13 Eli Zaretskii + + * w32term.c (x_use_underline_position_properties): New variable. + (x_draw_glyph_string): Remind in a comment to change doc string of + x-use-underline-position-properties if/when underline positioning + is implemented. + (syms_of_w32term): DEFVAR_BOOL x-use-underline-position-properties, + and initialize it to nil. + +2005-06-12 Jason Rumney + + * w32fns.c (NEWOPENFILENAME): New struct. + (Fx_file_dialog): Use it to trick the system into giving us up to + date dialogs on systems that are documented to support it. + Do not set OFN_FILEMUSTEXIST flag if looking for a directory. + +2005-06-12 Eli Zaretskii + + * w32fns.c (w32_abort): Use the MB_YESNO dialog instead of + MB_ABORTRETRYIGNORE. Never return, even if DebugBreak does. + +2005-06-11 Eli Zaretskii + + * image.c (x_create_x_image_and_pixmap) [HAVE_NTGUI]: Cast 4th arg + to CreateDIBSection to avoid a compiler warning. + (pbm_load): Cast 3rd arg to IMAGE_BACKGROUND to avoid a compiler + warning. + (png_load): Cast return values of fn_png_create_read_struct and + fn_png_create_info_struct, to avoid compiler warnings on W32. + Cast 3rd arg to IMAGE_BACKGROUND and image_background_transparent + to avoid compiler warnings. + (jpeg_load): Cast return value of fn_jpeg_std_error to avoid a + compiler warning on W32. Cast 3rd arg to IMAGE_BACKGROUND to + avoid a compiler warning. + (tiff_load): Cast return values of fn_TIFFOpen and + fn_TIFFClientOpen to avoid compiler warning on W32. Cast 3rd arg + to IMAGE_BACKGROUND to avoid a compiler warning. + (gif_load): Cast return values of fn_DGifOpenFileName and + fn_DGifOpen to avoid compiler warnings on W32. Cast 3rd arg to + IMAGE_BACKGROUND to avoid a compiler warning. + (DrawText) [HAVE_NTGUI || MAC_OS]: If already defined, undef + before redefining. + + * w32bdf.c (create_offscreen_bitmap): Cast `bitsp' to `void **' in + the call to CreateDIBSection, to avoid a compiler warning. + +2005-06-11 Jason Rumney + + * w32fns.c (Fx_file_dialog): Unblock input before falling back to + minibuffer. + * macfns.c (Fx_file_dialog): Likewise. + +2005-06-10 Eli Zaretskii + + * makefile.w32-in ($(TEMACS)): Depend on addsection.exe. + +2005-06-10 Juanma Barranquero + + * process.c (syms_of_process) [ADAPTIVE_READ_BUFFERING]: + * w32fns.c (syms_of_w32fns): Fix spellings. + +2005-06-10 Eli Zaretskii + + * unexw32.c (COPY_CHUNK, COPY_PROC_CHUNK): Add a new argument + `verbose'; print diagnostic messages only if it is non-zero. + All callers changed to pass a zero value unless DEBUG_DUMP is defined + in the environment. + (copy_executable_and_dump_data): Print section names with %.8s. + +2005-06-10 Masatake YAMATO + + * xdisp.c (note_mode_line_or_margin_highlight): Call clear_mouse_face + when mouse_face is not given. + +2005-06-09 Luc Teirlinck + + * window.c (Fselect_window): Adapt call to Fselect_frame. + + * lisp.h: Update EXFUN of Fselect_frame. + + * keyboard.c (command_loop_1): Adapt call to Fselect_frame. + + * frame.c (Fhandle_switch_frame, Fselect_frame): Delete unused arg + no_enter. + (Fset_mouse_position, Fset_mouse_pixel_position, Ficonify_frame): + Adapt to above change. + +2005-06-10 Juanma Barranquero + + * fns.c (Fmemq, Fmaphash): Doc fixes. + +2005-06-09 Juanma Barranquero + + * xfaces.c (Fdisplay_supports_face_attributes_p): + Fix typo in docstring. + +2005-06-08 Steven Tamm + + * unexmacosx.c (copy_data_segment): Copy __la_sym_ptr2 section + used by gcc4 on intel mac. + +2005-06-09 Kim F. Storm + + * search.c (Fmatch_data): Add optional RESEAT arg. Unchain markers + in REUSE list if non-nil; free them if equal to evaporate. + (Fset_match_data): Add optional RESEAT arg. Unchain markers in LIST + if non-nil; free them if equal to evaporate. Use XCAR/XCDR. + (restore_search_regs): Rename from restore_match_data. Uses changed. + (unwind_set_match_data): New function. + (record_unwind_save_match_data): New function like save-match-data. + + * lisp.h (Fmatch_data, Fset_match_data): Fix EXFUN. + (record_unwind_save_match_data): Add prototype. + (restore_search_regs): Rename from restore_match_data. + + * composite.c (compose_chars_in_text): + * eval.c (do_autoload): + * macmenu.c (set_frame_menubar): + * process.c (read_process_output, exec_sentinel): + * xmenu.c (set_frame_menubar): + * xdisp.c (prepare_menu_bars, update_menu_bar, update_tool_bar): + * w32menu.c (set_frame_menubar): + Use record_unwind_save_match_data. + +2005-06-08 Richard M. Stallman + + * xdisp.c (get_next_display_element): Alter previous change: + Distinguish Vshow_nonbreak_escape = t or not t. + For t, use escape_glyph once again, as before previous change. + Use space or hyphen for display, instead of the non-ASCII char. + (syms_of_xdisp) : Doc fix. + + * process.c (Fstart_process): Don't touch command_channel_p slot. + + * process.h (struct process): Delete command_channel_p. + +2005-06-07 Masatake YAMATO + + * xdisp.c (note_mode_line_or_margin_highlight): + Check the overlapping of re-rendering area to avoid flickering. + (note_mouse_highlight): Call clear_mouse_face if PART + is not ON_MODE_LINE nor ON_HEADER_LINE. + +2005-06-07 Kim F. Storm + + * process.c: Improve commentary for adaptive read buffering. + +2005-06-06 Stefan Monnier + + * xterm.c (x_create_toolkit_scroll_bar): Use XtNarrowScrollbars + if available. + +2005-06-06 Jan Dj,Ad(Brv + + * macmenu.c (menu_quit_handler, install_menu_quit_handler): + New functions for popping down menus on C-g. + (set_frame_menubar, mac_menu_show): Call install_menu_quit_handler. + + * macterm.c: Make mac_quit_char_modifiers and mac_quit_char_keycode + non-static. + + * config.in: Add HAVE_CANCELMENUTRACKING. + +2005-06-06 Eli Zaretskii + + * w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR): Remove macros. + + * unexw32.c (RVA_TO_PTR): Move here from w32heap.h. + + * w32proc.c (RVA_TO_PTR): New macro. + + * w32heap.c (RVA_TO_PTR): No need to #undef now. + + * makefile.w32-in ($(BLD)/emacs.$(O), $(BLD)/w32select.$(O)): + Depend on w32heap.h. + +2005-06-06 Luc Teirlinck + + * keyboard.c (command_loop_1): Update Vthis_original_command. + +2005-06-06 Richard M. Stallman + + * xmenu.c (popup_get_selection): Undo previous change. + +2005-06-06 Juri Linkov + + * xdisp.c (Qno_break_space): New variable. + (syms_of_xdisp): Initialize it. + (get_next_display_element): Add no-break space and soft hypen + codes for iso8859-2 and iso8859-5. Don't add `\' for them. + Use `no-break-space' face for no-break spaces. + +2005-06-06 Jan Dj,Ad(Brv + + * window.c (delete_window): Handle the case where a h/vchild has + a h/vchild. + +2005-06-05 Eli Zaretskii + + * w32.c (sys_setsockopt): Change arg 4 to `const void *'. In the + call to pfn_setsockopt, cast optval to `const char *'. + +2005-06-04 Eli Zaretskii + + * w32.c (gettimeofday): Use struct _timeb, not struct timeb. + (open_unc_volume): Cast return value of map_w32_filename, to avoid + compiler warnings. + + * s/ms-w32.h (fileno): Don't define if already defined. + + * emacs.c: Include w32heap.h, to avoid compiler warning about sbrk. + + * makefile.w32-in (DOC): Define to point to the generated DOC-X. + +2005-06-04 Richard M. Stallman + + * xmenu.c (popup_get_selection): Click not in menu deactivates menu. + +2005-06-04 Jan Dj,Ad(Brv + + * macmenu.c (cleanup_popup_menu): New function. + (Fx_popup_menu): Unwind protect cleanup_popup_menu in case + mac_menu_show Quit:s. + (mac_menu_show): Quit on cancel if not popped up on click (i.e. + a dialog). + +2005-06-04 Kim F. Storm + + * coding.c (decode_coding_string): Handle CODING_FINISH_INTERRUPT. + + * callproc.c (Fcall_process): Don't use alloca to gradually + increase size of buf, as it effectively uses twice the necessary + space on the stack. Instead, pre-allocate buf of full size, and + gradually increase the read size. + + * bytecode.c (BYTE_CODE_QUIT): Check Vthrow_on_input. + + * eval.c (unbind_to): Preserve value of Vquit_flag. + + * xterm.c (handle_one_xevent): Also ignore mouse motion just + before a button release event. + +2005-06-03 Juanma Barranquero + + * xfaces.c (Finternal_lisp_face_equal_p): Really report + on faces in a frame, if the argument FRAME is non-nil. + Improve argument/docstring consistency. + +2005-06-02 Kim F. Storm + + * xdisp.c (MODE_LINE_NOPROP_LEN): New macro. + (x_consider_frame_title, Fformat_mode_line): Save offset into + mode_line_noprop_buf rather than pointer, in case buffer is relocated. + +2005-06-01 Kim F. Storm + + * fns.c (mapcar1): Maybe exit loop if original sequence was modified. + +2005-06-01 YAMAMOTO Mitsuharu + + * macterm.c (mac_to_x_fontname, mac_do_list_fonts): Set XLFD + resolution fields for scalable fonts to 0. + + * xfaces.c (build_scalable_font_name): Round pixel size to the + nearest integer. + +2005-06-01 Kim F. Storm + + * xdisp.c (display_mode_line): Support nested calls to redisplay + and format-mode-line. Set mode_line_target to MODE_LINE_DISPLAY. + +2005-05-31 Stefan Monnier + + * fileio.c (Finsert_file_contents): + * xdisp.c (note_mode_line_or_margin_highlight): Lisp_Object/int mixup. + +2005-05-31 Kim F. Storm + + * xdisp.c (mode_line_noprop_buf, mode_line_noprop_buf_end) + (mode_line_noprop_ptr): Rename from frame_title_*. + (store_mode_line_noprop_char): Rename from store_frame_title_char. + (store_mode_line_noprop): Rename from store_frame_title. + (mode_line_target): New enum to specify current output target + for mode line formatting. + (display_mode_element): Test it rather than frame_title_ptr and + mode_line_string_list to determine where output should go. + (mode_line_proptrans_alist, mode_line_string_alist): Make static. + (Vmode_line_unwind_vector): New variable. + (format_mode_line_unwind_data, unwind_format_mode_line): + New functions for unwind protection in mode line formatting. + (x_consider_frame_title): Use them and new local var 'title_start' + to support nested calls to format-mode-line and redisplay. + Set mode_line_target to MODE_LINE_TITLE. + (Fformat_mode_line): Use them and new local var 'string_start' to + support nested calls to format-mode-line and redisplay. + Set mode_line_target to MODE_LINE_NOPROP or MODE_LINE_STRING. + Don't trim trailing dashes. + (decode_mode_spec): Don't make infinite number of trailing dashes + for MODE_LINE_NOPROP and MODE_LINE_STRING targets. + (syms_of_xdisp): Initialize and staticpro mode_line_string_face, + mode_line_string_face_prop, and Vmode_line_unwind_vector. + (init_xdisp): Initialize mode_line_noprop_ptr to start of _buf. + Initialize mode_line_target to MODE_LINE_DISPLAY. + +2005-05-29 Richard M. Stallman + + * buffer.c (Fbuffer_local_value): Call indirect_variable. + +2005-05-28 Masatake YAMATO + + * xdisp.c (note_mode_line_or_margin_highlight): Change the + pointer to a hand cursor when hoovering over a mouse-face. + +2005-05-27 Kenichi Handa + + * xterm.c (x_encode_char): Call check_ccl_update in advance. + + * ccl.c: Now an element of Vccl_program_table is a vector of + length 4, not 3. + (ccl_get_compiled_code): New arg idx. Caller changed. + Adjust for the change of Vccl_program_table. + (setup_ccl_program): Adjust for the change of Vccl_program_table. + (check_ccl_update): New function. + (Fregister_ccl_program): Use ASET to set an element of a vector. + Adjusted for the change of Vccl_program_table. + + * ccl.h (struct ccl_program): New member idx. + (check_ccl_update): Extern it. + +2005-05-27 Juanma Barranquero + + * image.c (Vimage_library_alist): Move from image.el. + (syms_of_image): Defvar it. + (lookup_image_type): Use it. + + * buffer.c (Fbuffer_local_value): Make argument name match its use + in docstring. + +2005-05-26 Juanma Barranquero + + * keyboard.c (Frecursive_edit): Fix typo in docstring. + (Fposn_at_x_y): Make argument name match its use in docstring. + +2005-05-26 Lute Kamstra + + * eval.c (Frun_hooks): Mention run-mode-hooks in docstring. + +2005-05-24 Masatake YAMATO + + * xdisp.c (note_mode_line_or_margin_highlight): Use b and e + as loop sentinels. + +2005-05-24 Nick Roberts + + * xmenu.c (Fx_popup_dialog): Add a third boolean argument to + select frame title ("Question"/"Information"). + (xdialog_show): Use it. + + * macmenu.c (Fx_popup_dialog, mac_dialog_show): As for xmenu.c. + + * w32menu.c (Fx_popup_dialog, w32_dialog_show): As for xmenu.c. + + * fns.c (Fyes_or_no_p, Fy_or_n_p): Call Fx_popup_dialog with + a third argument (Qnil). + + * lisp.h: x-popup-dialog can have three arguments. + + * editfns.c (Fmessage_box): Use "Information" for frame title. + +2005-05-23 Thien-Thi Nguyen + + * termcap.c [VMS]: Include . + +2005-05-23 Masatake YAMATO + + * xdisp.c (note_mode_line_or_margin_highlight): Add code + for mouse-face. Change the type of the first argument from `window' + to `Lisp_Object'. + (note_mouse_highlight): Call note_mode_line_or_margin_highlight with + window instead of w. + +2005-05-22 Andreas Schwab + + * process.c (send_process): Move misplaced volatile. + +2005-05-21 Richard M. Stallman + + * xdisp.c (display_mode_element): If we're processing a list and + padding is specified, put it after the last element. + +2005-05-21 Eli Zaretskii + + * fileio.c (Fexpand_file_name) [DOS_NT]: Don't try to support + "superroot" on DOS_NT systems. + +2005-05-21 David Hunter (tiny change) + + * process.c (send_process): Restore the SIGPIPE handler if we + catch a SIGPIPE. + +2005-05-20 Juanma Barranquero + + * image.c (lookup_image, png_read_from_memory): Remove hacks (and + misleading comments). + (DEF_IMGLIB_FN): Use C calling convention for image libraries. + +2005-05-20 KOBAYASHI Yasuhiro + + * window.c (Fwindow_inside_edges, Fwindow_inside_pixel_edges): + Correct the right value. + +2005-05-19 Nick Roberts + + * keyboard.c (syms_of_keyboard): Remove Lisp variables + post-command-idle-hook and post-command-idle-delay. + (command_loop_1): Don't try to execute post-command-idle-hook. + +2005-05-16 Kim F. Storm + + * xdisp.c (handle_display_prop): Handle empty replacement. + (handle_single_display_spec): Return -1 for empty replacement. + + * keyboard.c (adjust_point_for_property): Skip empty overlay string. + + * .gdbinit (pitx): Print more info about iterator. + +2005-05-16 Andreas Schwab + + * unexmacosx.c (unexec_realloc): Move declarations before statements. + +2005-05-14 Richard M. Stallman + + * xdisp.c (message3): Call cancel_echoing. + + * alloc.c (Fmemory_full_p): New function. + (syms_of_alloc): defsubr it. + + * process.c (send_process_trap): Unblock SIGPIPE. + (send_process): Reset SIGPIPE handler before reporting error. + +2005-05-14 Nick Roberts + + * emacs.c (syms_of_emacs): Fix doc string for system-type. + +2005-05-13 Richard M. Stallman + + * fileio.c (Ffind_file_name_handler): Handle lambda-exp as handler. + (Finsert_file_contents): If we read 0 bytes from a special file, + unlock the visited file if we locked it. + (Fmake_symbolic_link, Frecent_auto_save_p): Doc fixes. + (Ffile_exists_p, Ffile_symlink_p): Doc fixes. + +2005-05-13 YAMAMOTO Mitsuharu + + * emacs.c (main) [MAC_OS8]: Call init_atimer before mac_term_init. + + * keyboard.c (readable_events) [USE_TOOLKIT_SCROLL_BARS]: + Regard toolkit scroll bar thumb drag events as squeezable and prevent + redisplay from being paused by them. + + * mac.c [!MAC_OSX]: Include keyboard.h and syssignal.h. + [!MAC_OSX] (target_ticks): Remove variable. + [!MAC_OSX] (check_alarm, pause, index): Remove functions. + [!MAC_OSX && __MRC__] (sys_strftime): Likewise. + [!MAC_OSX] (select): If fd 0 is not set in rfds and some input + event occurs before timeout, behave as if the function were interrupted. + [!MAC_OSX] (sigblock, sigsetmask, alarm): Simulate SIGALRM + handling using Time Manager routines. + [!MAC_OSX] (mac_atimer_task, mac_atimer_qlink, signal_mask): + New variables. + [!MAC_OSX] (mac_atimer_handler, set_mac_atimer, remove_mac_atimer) + (setitimer): New functions. + + * macfns.c, macmenu.c: Don't include signal.h. + + * macterm.c [USE_TOOLKIT_SCROLL_BARS] (get_control_part_bounds): + Rename from get_control_part_bound. All callers changed. + (x_scroll_bar_clear): New function. + (x_clear_frame): Use it. + (XTset_vertical_scroll_bar): Don't call Draw1Control. + (x_scroll_bar_handle_click): Change type of second argument from + int to ControlPartCode. + (check_alarm): Remove declaration. + (XTread_socket) [!TARGET_API_MAC_CARBON]: Don't call it. + (XTread_socket): Use ControlPartCode instead of SInt16. + +2005-05-13 Nozomu Ando + + * unexmacosx.c: Include assert.h. + (MACOSX_MALLOC_MULT16): New define. + [MACOSX_MALLOC_MULT16] (ptr_in_unexec_regions): Determine whether + ptr is in unexec regions by checking it is multiple of 16. + (unexec_malloc_header_t): New typedef. + (unexec_malloc, unexec_realloc, unexec_free): Store and use + allocated size information in unexec_malloc_header. + +2005-05-10 Richard M. Stallman + + * xterm.c (noinclude): Add #undef. + + * image.c, xfns.c, xmenu.c: Don't include signal.h. + +2005-05-09 Juanma Barranquero + + * fileio.c (Fexpand_file_name, Frename_file, Fadd_name_to_file) + (Fmake_symbolic_link, Faccess_file, Frecent_auto_save_p): + Doc fixes. + + * dired.c (Ffile_name_completion): Make argument name + match its use in docstring. + +2005-05-08 Luc Teirlinck + + * eval.c (Fdefvaralias): Remove any pre-existing + variable-documentation property of the alias. + +2005-05-07 Thien-Thi Nguyen + + * xfns.c (start_hourglass): Do nothing when running on a tty. + +2005-05-07 Juanma Barranquero + + * fns.c (Fchar_table_range): Fix typos in docstring. + +2005-05-06 Stefan Monnier + + * fns.c (Fchar_table_range): Yet Another Int/Lisp_Object Mixup. + +2005-05-06 Eli Zaretskii + + * lread.c (Flocate_file_internal): Doc fix. + + * Makefile.in (lisp, shortlisp): Add jka-cmpr-hook.elc. + +2005-05-06 YAMAMOTO Mitsuharu + + * macselect.c (x_own_selection): Accept Lisp string as result of + selection converter function. + (x_clear_frame_selections): Don't call x-lost-selection-functions + if Emacs is not owner of the selection. + (Vmac_services_selection): Put variable and initialization in + #ifdef MAC_OSX. + (syms_of_macselect) [MAC_OSX]: Set default value of + Vmac_services_selection to PRIMARY. + + * macterm.c (toolkit_scroll_bar_interaction): Remove unused variable. + (mac_handle_tool_bar_click): Remove unused function and declaration. + [USE_TOOLKIT_SCROLL_BARS] (scroll_bar_timer_callback) + (install_scroll_bar_timer, set_scroll_bar_timer) + (control_part_code_to_scroll_bar_part, construct_scroll_bar_click) + (get_control_part_bound, x_scroll_bar_handle_press) + (x_scroll_bar_handle_release, x_scroll_bar_handle_drag) + (x_set_toolkit_scroll_bar_thumb): New functions and declarations. + [USE_TOOLKIT_SCROLL_BARS] (last_scroll_bar_part, scroll_bar_timer) + (scroll_bar_timer_event_posted_p): New variables. + [USE_TOOLKIT_SCROLL_BARS] (SCROLL_BAR_FIRST_DELAY) + (SCROLL_BAR_CONTINUOUS_DELAY): New macros. + (x_scroll_bar_create): Set control reference with NewControl. + (x_scroll_bar_create) [USE_TOOLKIT_SCROLL_BARS]: + Initialize track_top and track_height to nil. + (x_scroll_bar_set_handle, x_scroll_bar_note_movement): + Put functions in #ifndef USE_TOOLKIT_SCROLL_BARS. + (XTset_vertical_scroll_bar): Don't make space between scroll bar + and associated window. + (XTset_vertical_scroll_bar) [MAC_OSX]: Get scroll bar area width + from window config. + (XTset_vertical_scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: + Set track_top and track_height to nil when scroll bar size is changed. + Recalculate them if they are nil. + (XTread_socket) [MAC_OSX]: Use control kind to determine if the + clicked control is a scroll bar. + (XTread_socket) [USE_TOOLKIT_SCROLL_BARS]: Use toolkit scroll bar + event handler functions. Don't add modifiers to scroll bar click + events. Call scroll bar release handler when window is deactivated. + (mac_initialize): Remove unused code for X toolkit. + (syms_of_macterm) [!USE_TOOLKIT_SCROLL_BARS]: + Initialize Vx_toolkit_scroll_bars to nil. + + * macterm.h (struct scroll_bar) [USE_TOOLKIT_SCROLL_BARS]: + New members track_top and track_height. + + * sysselect.h [DARWIN || MAC_OSX]: Temporarily undefine + init_process when including sys/select.h. + +2005-05-05 Luc Teirlinck + + * eval.c (Fdefvaralias): Doc fix. + + * xmenu.c (Fx_popup_menu, Fx_popup_dialog): Doc fixes. + +2005-05-05 Kim F. Storm + + * buffer.c (init_buffer_once): Set cursor_in_non_selected_windows + default value. + (syms_of_buffer): Add default-cursor-in-non-selected-windows. + Fix type of cursor-in-non-selected-windows. + +2005-05-03 Jan Dj,Ad(Brv + + * mac.c: #undef init_process so not to conflict with system headers. + +2005-05-02 Richard M. Stallman + + * buffer.c (syms_of_buffer): Define cursor-in-non-selected-windows. + + * buffer.h (struct buffer): Add cursor_in_non_selected_windows slot. + + * xdisp.c (Vcursor_in_non_selected_windows) + (Qcursor_in_non_selected_windows): Vars deleted. + (syms_of_xdisp): Don't initialize them. + (get_window_cursor_type): Use cursor_in_non_selected_windows + buffer slot. + +2005-05-02 Kim F. Storm + + * macros.c (executing_kbd_macro_index): Rename from + executing_macro_index. All uses changed. + (executing_kbd_macro_iterations): Rename from + executing_macro_iterations. All uses changed. + (executing_kbd_macro): Rename from executing_macro. + All uses changed. + (syms_of_macros): Rename Lisp var executing-macro-index to + executing-kbd-macro-index. + + * xdisp.c (move_it_in_display_line_to): Fix last change. + +2005-05-01 Luc Teirlinck + + * xmenu.c (Fx_popup_menu): Doc fix. + + * charset.c (syms_of_charset): Delete defsubr for Schars_in_region. + +2005-05-02 Jason Rumney + + * emacs.c (USAGE3, USAGE4): Keep strings below 2048 bytes. + +2005-05-02 Nozomu Ando + + * sysselect.h: Fix typo. + +2005-05-02 Nick Roberts + + * charset.c (Fchars_in_region): Remove as obsolete. + +2005-05-01 Kim F. Storm + + * xdisp.c (move_it_in_display_line_to): Stop if we move beyond + TO_CHARPOS. This may happen if last glyphs was an image or stretch + glyph. + +2005-05-01 Luc Teirlinck + + * dispnew.c (sit_for): Vexecuting_macro -> Vexecuting_kbd_macro. + +2005-05-01 Richard M. Stallman + + * xmenu.c [not HAVE_X_TOOLKIT] (xmenu_show): + If user cancels the menu, quit unless FOR_CLICK. + + * macros.c (Vexecuting_kbd_macro): Rename from Vexecuting_macro. + All uses changed. + (syms_of_macros): Define only executing-kbd-macro, not executing-macro. + * keyboard.c: Change Vexecuting_macro to Vexecuting_kbd_macro. + * macros.h (Vexecuting_kbd_macro): Declare instead of Vexecuting_macro. + * commands.h (Vexecuting_kbd_macro): Likewise. + +2005-05-01 Thien-Thi Nguyen + + * sysdep.c (get_frame_size) [VMS]: Use a fresh i/o channel. + +2005-04-30 Richard M. Stallman + + * fileio.c (Ffind_file_name_handler): Handle the `operations' + property of the file name handler. + (Qoperations): New variable. + (syms_of_fileio): Initialize and staticpro it. + + * xdisp.c (set_message_1): Delete xassert. + +2005-04-29 YAMAMOTO Mitsuharu + + * mac.c: Don't include time.h. Include sysselect.h after systime.h. + + * macfns.c (Fx_server_version): Add BLOCK_INPUT around Gestalt. + + * macgui.h [HAVE_CARBON && MAC_OSX]: Don't undefine/define mktime + before/after including Carbon.h if there is a working mktime. + +2005-04-28 Kim F. Storm + + * xfaces.c (resolve_face_name): Add arg SIGNAL_P. Calls changed. + Fix cyclic alias check. If alias loop is detected, signal + circular-list error if SIGNAL_P, and return Qdefault if !SIGNAL_P. + +2005-04-28 Lute Kamstra + + * eval.c (do_autoload): Record only autoloads in the autoload + property of symbols. + +2005-04-28 Nick Roberts + + * emacs.c (USAGE1): Add --basic-display and --quick options. + +2005-04-27 Kim F. Storm + + * data.c (syms_of_data) Staticpro Qcyclic_variable_indirection. + +2005-04-26 Richard M. Stallman + + * window.c (Fsame_window_p, Fspecial_display_p): Doc fixes. + (syms_of_window): Doc fixes. + + * indent.c (Fvertical_motion): Undo previous change. + +2005-04-26 Kenichi Handa + + * fns.c (char_table_range): New function. + (Fchar_table_range): Signal an error if characters in the range + have inconsistent values. Don't check the parent. + +2005-04-25 Kenichi Handa + + * fontset.c (fontset_set): Fix previous change. + +2005-04-24 Richard M. Stallman + + * indent.c (Fvertical_motion): Bind fontification-functions to nil. + +2005-04-24 Eli Zaretskii + + * regex.c (re_search_2, re_match_2_internal): Convert second arg + of RE_TRANSLATE to int, to shut up GCC warnings. + + * fileio.c (Fcopy_file): Doc fix. + [MSDOS]: Fix call to emacs_open: buffer_file_type not defined and + not needed. + +2005-04-24 YAMAMOTO Mitsuharu + + * Makefile.in [HAVE_CARBON] (MAC_OBJ): Add macselect.o. + (SOME_MACHINE_OBJECTS): Likewise. + (mac.o): Depend on ccl.h. + (macselect.o): New target. + + * emacs.c (main) [MAC_OS8 || MAC_OSX && HAVE_CARBON]: + Call syms_of_macselect. + + * frame.c (Fdelete_frame) [MAC_OS]: Call x_clear_frame_selections. + + * mac.c [!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h. + (QCLIPBOARD): Remove variable. + (syms_of_mac): Don't initialize it. + (Fmac_paste_function, Fmac_cut_function, Fx_selection_exists_p): + Remove functions. + (syms_of_mac): Don't defsubr them. + [TARGET_API_MAC_CARBON] (Qmime_charset, QNFD, QNFKD, QNFC, QNFKC) + (QHFS_plus_D, QHFS_plus_C): New variables. + (syms_of_mac) [TARGET_API_MAC_CARBON]: Initialize them. + [TARGET_API_MAC_CARBON] (get_cfstring_encoding_from_lisp) + (cfstring_create_normalized): New functions. + [TARGET_API_MAC_CARBON] (Fmac_code_convert_string): Likewise. + (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it. + + * macterm.c (handling_window_update, terminate_flag): + Remove variables. + (do_window_update, do_ae_quit_application, XTread_socket): + Don't use them. + (WNE_SLEEP_AT_SUSPEND, WNE_SLEEP_AT_RESUME): Don't define. + [USE_CARBON_EVENTS && MAC_OSX] (mac_handle_service_event) + (init_service_handler): Move to macselect.c. Remove declarations. + [USE_CARBON_EVENTS && MAC_OSX] (init_service_handler): Add extern. + (Qapplication, Qabout): New variables. + (syms_of_mac): Initialize them. + [USE_CARBON_EVENTS && MAC_OSX] (Qpreferences, Qservices, Qpaste) + (Qperform): New variables. + (syms_of_mac) [USE_CARBON_EVENTS && MAC_OSX]: Initialize them. + (do_get_menus) [TARGET_API_MAC_CARBON]: Don't call AppendResMenu. + (do_menu_choice): Unhighlight menu bar also when menu_id is 0. + (mac_store_application_menu_event, init_menu_bar): New functions. + [USE_CARBON_EVENTS] (mac_handle_command_event) + (init_command_handler): New functions. + (mac_handle_window_event): Return noErr on window update event. + (do_ae_quit_application): Call mac_store_application_menu_event. + (mac_initialize) [USE_CARBON_EVENTS]: Call init_command_handler + and init_menu_bar. + + * macterm.h (x_clear_frame_selections): Add extern. + + * macselect.c: New file for selection processing on Mac OS. + +2005-04-23 Richard M. Stallman + + * fileio.c (Fcopy_file): New arg MUSTBENEW. + (Frename_file): Pass new arg to Fcopy_file. + + * window.c (window_size_fixed): Variable deleted. + (syms_of_window): Initialize window-size-fixed to nil. + But don't DEFVAR window_size_fixed. + +2005-04-23 Andreas Schwab + + * m/macppc.h (LD_SWITCH_MACHINE) [LINUX]: Don't define. + (START_FILES, LIB_STANDARD) [LINUX && _ARCH_PPC64]: Override to + use lib64 instead of lib. + (_LP64) [_ARCH_PPC64]: Define if not defined. + +2005-04-23 David Hunter (tiny change) + + * s/ms-w32.h (HAVE_PWD_H): Define. + +2005-04-22 Kenichi Handa + + * fns.c (copy_sub_char_table): Explicitly copy the default value + of the sub-chartable. + + * fontset.c (fontset_set): When a sub-chartable is created, + explicitly sets the defalt value. + +2005-04-22 Kim F. Storm + + * fns.c (Fplist_get): Replace by Fsafe_plist_get. + (Fsafe_plist_get): Rename to Fplist_get. + (Fsafe_get): Remove, as Fget now uses safe Fplist_get. + (defsubr): Remove defsubr for Fsafe_plist_get and Fsafe_get. + + * lisp.h (Fsafe_plist_get, Fsafe_get): Remove EXFUN. + + * xdisp.c (store_mode_line_string, produce_stretch_glyph) + (note_mode_line_or_margin_highlight, note_mouse_highlight): + Use Fplist_get instead of Fsafe_plist_get. + + * xfaces.c (resolve_face_name): Use Fget instead of Fsafe_get. + +2005-04-21 Miles Bader + + * xdisp.c (dump_glyph_row): Don't display overlay_arrow_p field. + +2005-04-20 Thien-Thi Nguyen + + * sysdep.c: Remove reference to defunct vms-pwd.h. + * dired.c: Likewise. Also, for pwd.h, use HAVE_PWD_H, not !VMS. + * editfns.c, fileio.c, filelock.c, sysdep.c, xrdb.c: Likewise. + + * config.in: Regenerate. + +2005-04-20 Kenichi Handa + + * lisp.h (CHAR_TABLE_DEFAULT_SLOT_ASCII): New macro. + (CHAR_TABLE_DEFAULT_SLOT_8_BIT_CONTROL): New macro. + (CHAR_TABLE_DEFAULT_SLOT_8_BIT_GRAPHIC): New macro. + + * alloc.c (make_sub_char_table): Argument changed to initial + value of the slots. + + * data.c (Faref): Handle special slots used as default values of + ascii, eight-bit-control, eight-bit-control. Don't ignore a + default value set for a group of characters. + (Faset): Signal an error if IDXVAL is not a valid character code. + Make a sub-chartable with correct initial value. + + * fns.c (Fset_char_table_range): Don't set slots used as default + values for ascii, eight-bit-control, eight-bit-graphic. + Don't call Faref with charset-id. + (Fset_char_table_default): Document how to treat normal character + argument. Handle special slots used as default values of ascii, + eight-bit-control, eight-bit-control. Make a sub chartable if + necessary. + +2005-04-20 Kenichi Handa + + * search.c (boyer_moore): Fix previous change. + +2005-04-19 Kim F. Storm + + * xdisp.c (setup_for_ellipsis): Reset saved_face_id to use default + face unless last visible char and first invisible char have the + same face. Also use default face if saved_face_id is undefined. + +2005-04-19 YAMAMOTO Mitsuharu + + * macgui.h (MacFontStruct): Remove member `fontname'. Add member + `full_name'. + [TARGET_API_MAC_CARBON] (MacFontStruct): Use type int for + mac_scriptcode member. + + * macterm.c (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): Remove variables. + (syms_of_mac): Don't initialize them. + (Vmac_charset_info_alist): New variable. + (syms_of_mac): Defvar it. + (create_text_encoding_info_alist): New function. + (decode_mac_font_name, mac_to_x_fontname) + (x_font_name_to_mac_font_name, init_font_name_table): Don't hard + code the correspondence among XLFD charsets, Mac script codes, and + Emacs coding systems. Use Vmac_charset_info_alist and result of + create_text_encoding_info_alist instead. + (init_font_name_table) [TARGET_API_MAC_CARBON]: Use Font Manager + routines also on Mac OS Classic. + (init_font_name_table) [!TARGET_API_MAC_CARBON]: + Use add_font_name_table_entry. + (mac_do_list_fonts): Regard 0 in XLFD scaleble fields as + specified. Derive unspecified scalable fields from specified one. + (x_list_fonts): Consider Valternate_fontname_alist. + (kDefaultFontSize): Change value from 9 to 12. + (XLoadQueryFont): Get decoded font family, font face, and charset + from x_font_name_to_mac_font_name. Set full name of loaded font. + (mac_unload_font): Free `full_name' member. + (x_load_font): Don't try XLoadQueryFont if x_list_fonts returns + NULL. Copy full_name member of struct MacFontStruct to that of + struct font_info. + +2005-04-19 Kim F. Storm + + * xdisp.c (handle_stop): Set saved_face_id to current face if + selective_display_ellipsis_p so ellipsis will be shown in same + face as preceding text. + (setup_for_ellipsis): Don't set saved_face_id here. + (next_element_from_display_vector): Default to saved_face_id. + + * fns.c (Fsafe_get): New function. + (syms_of_fns): Defsubr it. + + * lisp.h (Fsafe_get): EXFUN it. + + * xfaces.c (resolve_face_name): Use Fsafe_get to avoid redisplay + loops in case of bad face property lists. Limit number of face + alias lookups to 10 (in case of face alias loops). + +2005-04-18 Kim F. Storm + + * dispextern.h (struct glyph_row): New member overlay_arrow_bitmap. + It replaces the corresponding member from struct window, as a + window may now show multiple overlay arrows. + Remove member overlay_arrow_p, superseeded by overlay_arrow_bitmap. + + * dispnew.c (row_equal_p, update_window_line, scrolling_window): + Compare overlay_arrow_bitmap than overlay_arrow_p members. + + * fringe.c (draw_fringe_bitmap): Use overlay_arrow_bitmap from row + rather than from window. + (update_window_fringes): Compare overlay_arrow_bitmap rather than + overlay_arrow_p members. + (Ffringe_bitmaps_at_pos): Return fringe overlay_arrow_bitmap name + if not default. + + * window.h (struct window): Remove member overlay_arrow_bitmap. + + * window.c (make_window): Don't initialize overlay_arrow_bitmap. + + * xdisp.c (overlay_arrow_string_or_property): Remove PBITMAP arg. + Calls changed. Don't check for overlay-arrow-bitmap property here. + (overlay_arrow_at_row): Remove PBITMAP arg. Instead, if left + fringe is present, return Lisp integer for bitmap (or -1 for default). + Fix value of overlay-arrow-bitmap property to be a symbol, use + lookup_fringe_bitmap to parse it. + (display_line): Change call to overlay_arrow_at_row. Store integer + return value as overlay bitmap in row rather than window. + Only show overlay arrow if row displays text, or if no other overlay + arrow is seen in window (if overlay marker is at point-max). + +2005-04-18 Thien-Thi Nguyen + + * xfaces.c (realize_x_face) [!HAVE_WINDOW_SYSTEM]: Return NULL. + +2005-04-18 Lute Kamstra + + * lread.c (Vloads_in_progress): Static. + * fns.c (Vloads_in_progress): Remove extern. + (load_in_progress): Add extern. + (Frequire): Use load_in_progress instead of Vloads_in_progress. + +2005-04-18 Thien-Thi Nguyen + + * xmenu.c (Fx_popup_menu): Initialize error_name to NULL. + +2005-04-18 YAMAMOTO Mitsuharu + + * macterm.c (XTread_socket): Don't beep on keyboard input even if + no frame is visible. + +2005-04-16 Dan Nicolaescu + + * term.c (struct keys): Add support for shifted keys. + +2005-04-16 Richard M. Stallman + + * xdisp.c (with_echo_area_buffer): Delete WHICH < 0 case. + (set_message): Call with_echo_area_buffer with WHICH = 0. + (set_message_1): Erase the echo area buffer first thing. + (echo_area_display): Don't clear echo_message_buffer. + +2005-04-16 YAMAMOTO Mitsuharu + + * Makefile.in (mac.o): Depend on charset.h and coding.h. + + * mac.c: Include charset.h and coding.h. + [TARGET_API_MAC_CARBON] (Qutf_8): Remove extern. + [TARGET_API_MAC_CARBON] (cfstring_create_with_string): New function. + [TARGET_API_MAC_CARBON] (Fmac_get_preference): Use it. + + * macfns.c [TARGET_API_MAC_CARBON] (Fx_file_dialog): Likewise. + + * image.c [MAC_OSX] (image_load_quartz2d): Likewise. + + * macterm.c (x_autoselect_window_p): Remove variable. + (last_window): New variable. + (XTreassert_line_highlight, x_change_line_highlight): + Remove declarations. + (mac_focus_changed, x_detect_focus_change): New functions and + declarations. + (XTextExtents16, front_emacs_window): Remove function. + (mac_focus_frame): New function. + (XTmouse_position, do_menu_choice, do_zoom_window, XTread_socket) + (mac_check_for_quit_char): Use it instead of front_emacs_window. + (x_scroll_bar_report_motion): Obtain window from control owner. + (x_make_frame_invisible): Set window manager size hint. + (do_mouse_moved): Remove function. + (XTread_socket): Move its contents here. Generate select-window + event on mouse movement if needed. Use x_detect_focus_change on + activate/deactivate events. Don't deiconify frame or invalidate + window rectangle when dnd items are dropped. + Don't activate/deactivate root control. + (frame_highlight, frame_unhighlight): Activate/deactivate root + control here. + (syms_of_macterm): Delete DEFVAR_BOOL for x_autoselect_window_p. + + * macterm.h (cfstring_create_with_string) [TARGET_API_MAC_CARBON]: + New extern. + +2005-04-15 Luc Teirlinck + + * Makefile.in: Define new macro TOOLTIP_SUPPORT. + (lisp): Use it. + (SOME_MACHINE_LISP): Add tooltip. + +2005-04-14 YAMAMOTO Mitsuharu + + * mac.c [!TARGET_API_MAC_CARBON]: Include MacLocales.h. + Don't include TextEncodingConverter.h. + (mac_system_script_code, Vmac_system_locale): New variables. + (syms_of_mac): Defvar them. + (mac_get_system_locale): New function. + + * macfns.c (x_set_name, x_set_title) [!TARGET_API_MAC_CARBON]: + Use ENCODE_SYSTEM to encode title bar string. + (x_create_tip_frame): Apply 2005-03-18 change for xfns.c. + (Fx_file_dialog) [TARGET_API_MAC_CARBON && !MAC_OSX]: + Use CFStringGetSystemEncoding to get system default string encoding. + + * macterm.c [!TARGET_API_MAC_CARBON]: Don't include + TextEncodingConverter.h. + +2005-04-13 Steven Tamm + + * macterm.c (syms_of_macterm): Remove redundant definition of + mac-pass-control-to-system. + +2005-04-12 Stefan Monnier + + * window.c (Fset_window_configuration): Be careful when you choose + among several possible points for the new_current_buffer. + +2005-04-12 YAMAMOTO Mitsuharu + + * keyboard.c (poll_for_input) [SYNC_INPUT]: Don't call + poll_for_input_1. Set interrupt_input_pending to 1 instead. + (Qlanguage_change) [MAC_OS]: New variable. + (syms_of_keyboard) [MAC_OS]: Intern and staticpro it. + (kbd_buffer_get_event) [MAC_OS]: Make event for LANGUAGE_CHANGE_EVENT. + + * macterm.c (mac_keyboard_text_encoding) + (current_mac_keyboard_text_encoding): Remove variables. + (XTread_socket): Store language-change event if keyboard script change + is detected. Don't convert input to `mac_keyboard_text_encoding'. + (syms_of_macterm): Delete DEFVAR_INT for mac-keyboard-text-encoding. + + * termhooks.h (enum event_kind) [MAC_OS]: Add LANGUAGE_CHANGE_EVENT. + +2005-04-10 Richard M. Stallman + + * emacs.c (standard_args): Rename --bare-bones to --quick. + Add -D aka --basic-display. + + * buffer.c (Fmake_indirect_buffer): Clear out some local variables. + +2005-04-09 Richard M. Stallman + + * keymap.c (where_is_internal): Convert a string used as event type + into "(any string)". + + * lread.c (Vloads_in_progress): Not static. + * fns.c (Vloads_in_progress): Add extern. + (Frequire): Don't do LOADHIST_ATTACH if Vloads_in_progress is nil. + +2005-04-09 Thien-Thi Nguyen + + * dispnew.c (mirror_line_dance): Avoid crash if W2 is null. + +2005-04-09 Lute Kamstra + + * print.c (PRINTPREPARE): Check if the marker PRINTCHARFUN is + within the accessible part of the buffer. + +2005-04-09 Kim F. Storm + + * lread.c (readevalloop): Add args START and END as region in + current buffer to read. Callers changed. + When specified, narrow to this region only when reading, + not during eval. Track next point to read from during eval. + Also restore point to "real" buffer position before eval. + (Feval_region): Don't save excursion and restriction here, and + don't narrow to region. Just pass region to readevalloop. + Note: Point is now preserved even when PRINTFLAG is nil. + +2005-04-08 Kim F. Storm + + * xdisp.c (syms_of_xdisp): Init overlay-arrow-string to "=>". + +2005-04-06 Kim F. Storm + + * emacs.c (standard_args): Add -Q, --bare-bones, -bare-bones. + +2005-04-06 YAMAMOTO Mitsuharu + + * mac.c (cfdate_to_lisp): Add `const' for variable `epoch_gdate'. + (Fmac_get_preference): Doc fix. + + * macfns.c (Fx_create_frame, x_create_tip_frame): + Add "fontset-mac" to fallback font/fontsets. + +2005-04-04 Kim F. Storm + + * alloc.c (Fgarbage_collect): Call CHECK_CONS_LIST before and after gc. + + * eval.c (Ffuncall): Always call CHECK_CONS_LIST on entry. + Call it again after autoload. + +2005-04-02 Jan Dj,Ad(Brv + + * alloc.c (allocate_string_data): Call BLOCK_INPUT before calling + mallopt. + + * ralloc.c (r_alloc_init): Ditto. + +2005-04-01 Kenichi Handa + + * lisp.h (Vascii_upcase_table, Vascii_canon_table) + (Vascii_eqv_table): Extern them. + + * casetab.c (set_case_table): If standard is nonzero, setup + Vascii_upcase_table, Vascii_canon_table, and Vascii_eqv_table. + + * search.c (looking_at_1): Use current_buffer->case_canon_table, + not DOWNCASE_TABLE. + (string_match_1): Likewise. + (fast_c_string_match_ignore_case): Use Vascii_canon_table, not + Vascii_downcase_table. + (fast_string_match_ignore_case): Likewise. + (search_buffer): Fix checking of boyer-moore usability. + (boyer_moore): Calculate translate_prev_byte1/2/3 in advance. + No need of tranlating characters in PAT. Fix calculation of + simple_translate. + +2005-03-31 Stefan Monnier + + * xterm.c [HAVE_XAW3D]: Include ThreeD.h for XtNbeNiceToColormap. + (x_create_toolkit_scroll_bar): Test XtNbeNiceToColormap before using it. + Use XtNtopShadowPixel and XtNbottomShadowPixel. + (x_set_toolkit_scroll_bar_thumb): Remove ugly old hack that didn't + really work and that breaks with some versions of Xaw3d. + +2005-03-31 Kenichi Handa + + * coding.c (syms_of_coding): Fix previous change. + +2005-03-30 Stefan Monnier + + * fileio.c (search_embedded_absfilename): Fix last change. + +2005-03-25 Kenichi Handa + + * coding.c (syms_of_coding): Suggest to use set-coding-category in + the docstring of coding-category-list. + +2005-03-31 Kim F. Storm + + * keyboard.c (Qmouse_fixup_help_message): New var. + (syms_of_keyboard): Intern and staticpro it. + (show_help_echo): Apply mouse-fixup-help-message to help string. + +2005-03-30 Kim F. Storm + + * xdisp.c (display_line): Allow multiple overlay arrows in window. + +2005-03-28 Stefan Monnier + + * fileio.c (Fexpand_file_name): Use IS_DEVICE_SEP. + (file_name_absolute_p): New fun, extracted from Ffile_name_absolute_p. + (Ffile_name_absolute_p): Use it. + (search_embedded_absfilename): New fun, extracted from + Fsubstitute_in_file_name. Use file_name_absolute_p. + Free the pw data after use. + (Fsubstitute_in_file_name): Use it. + After cutting a prefix, re-check file-name-handler. + +2005-03-26 Lennart Borgman + + * w32term.h (x_output): Add focus_state. + + * w32term.c (x_focus_changed, w32_detect_focus_change): New functions. + (w32_read_socket) : Call w32_detect_focus_change. + +2005-03-25 Stefan Monnier + + * minibuf.c (Fminibuffer_complete_and_exit, Fself_insert_and_exit): + Use Fexit_minibuffer. + (Fexit_minibuffer): Mark it as no-return, deactivate the mark. + +2005-03-24 Stefan Monnier + + * dired.c (Ffile_attributes): Add a missing gcpro. + + * alloc.c (make_number): The arg can be bigger than `int'. + * lisp.h (make_number): Make prototype more precise. + + * process.c, dired.c (Vfile_name_coding_system) + (Vdefault_file_name_coding_system): + * callproc.c (Vdoc_file_name, Vfile_name_coding_system) + (Vdefault_file_name_coding_system): Remove unused declarations. + +2005-03-24 Jan Dj,Ad(Brv + + * xmenu.c (create_and_show_popup_menu): Just remove menu and return + if it failed to pop up (Gnome "show pointer on ctrl" option makes + menus fail to pop up). + +2005-03-24 Stefan Monnier + + * xdisp.c (get_next_display_element): Also use `\ ' & `\-' for latin-9. + Just prepend a backslash without replacing the NBSP by an SPC. + +2005-03-22 Kim F. Storm + + * xfaces.c (lookup_derived_face): Add arg SIGNAL_P. + * dispextern.h (lookup_derived_face): Fix prototype. + * msdos.c (XMenuActivate): Fix call to lookup_derived_face. + + * xdisp.c (handle_single_display_spec): Derive left-fringe and + right-fringe face from fringe face. + + * fringe.c (draw_fringe_bitmap_1, Fset_fringe_bitmap_face): + Derive face from fringe face. + +2005-03-22 Jan Dj,Ad(Brv + + * xrdb.c (x_load_resources): Undo previous change (2005-03-18). + +2005-03-22 David Kastrup + + * textprop.c (Fnext_char_property_change) + (Fprevious_char_property_change): Allow marker as limit. + (Fnext_single_char_property_change) + (Fprevious_single_char_property_change): Check that limit is a + number in strings. + (Fnext_single_char_property_change): Coerce position to integer. + (Fprevious_single_char_property_change): Same here. + +2005-03-21 Thien-Thi Nguyen + + * s/openbsd.h (LD_SWITCH_SYSTEM_tmp): Define if undefined. + +2005-03-19 Stefan Monnier + + * frame.c (Fignore_event): Remove. + (syms_of_frame): Don't defsubr it. + + * keyboard.c (keys_of_keyboard): Just use `ignore' instead of the + redundant `ignore-event'. + +2005-03-19 Eli Zaretskii + + * unexec.c (write_segment, unexec): Move these functions to avoid + forward references (which cause errors with "gcc -gcoff"). + +2005-03-18 Jan Dj,Ad(Brv + + * xfns.c (x_create_tip_frame): Remove setting of Vx_resource_name so + that it doesn't become "tooltip". The specbind is enough. + + * xrdb.c (x_load_resources): Use different char *helv when I18N + is present. + +2005-03-17 Kenichi Handa + + * coding.c (syms_of_coding): Docstring of coding-category-list fixed. + +2005-03-17 Stefan Monnier + + * xfaces.c (x_update_menu_appearance) [HAVE_X_I18N]: + Use xic_create_fontsetname even for non-Motif menus. + Don't forget to free the fontsetname. + + * xfns.c (xic_create_fontsetname): Add a final catch-all font pattern. + +2005-03-17 Richard M. Stallman + + * dispnew.c (mirror_line_dance): Set W2 according to FRAME_FROM. + + * fileio.c (Fcopy_file, Frename_file, Fadd_name_to_file) + (Fmake_symbolic_link): Use G to read the new file name. + + * callint.c (Finteractive): Document G option. + (Fcall_interactively): Implement G option. + + * buffer.c (buffer_lisp_local_variables): New function, + broken out from Fbuffer_local_variables. + (clone_per_buffer_values): Use buffer_lisp_local_variables. + +2005-03-17 Stefan Monnier + + * xfns.c (xic_create_fontsetname): Add `motif' argument. + Always return a freshly allocated string. + (xic_create_xfontset): Adjust call. + + * xfaces.c (x_update_menu_appearance) [USE_MOTIF]: + Use xic_create_fontsetname to create a fontset so utf-8 locales work. + (dump_realized_face): Fix warning. + + * emacs.c (Fkill_emacs): YAILOM. + + * frame.c (Fignore_event): Fix ancient obscure C-u handling bug. + +2005-03-17 YAMAMOTO Mitsuharu + + * mac.c (HASHKEY_TERMINAL): Remove. + (HASHKEY_MAX_NID): New macro. + (xrm_q_get_resource_1): Rename from xrm_q_get_resource. Add extra + argument. + (xrm_q_get_resource): Call xrm_q_get_resource_1 with extra argument. + (xrm_create_database, xrm_q_put_resource) + (xrm_merge_string_database, xrm_q_get_resource_1) + (xrm_q_get_resource): Change resource database representation so + that it may not use multiple hash tables for a single database. + [TARGET_API_MAC_CARBON] (xrm_cfproperty_list_to_value): YAILOM. + +2005-03-16 Stefan Monnier + + * xmenu.c (ENCODE_MENU_STRING) [HAVE_X_I18N]: Use ENCODE_SYSTEM. + + * coding.h (ENCODE_SYSTEM, DECODE_SYSTEM) [!WINDOWSNT]: Use the + locale-coding-system, as was already done for WINDOWSNT. + + * keyboard.c (read_char): Only do the 7-bit-meta -> 27-bit-meta + translation for chars in the 0-255 range. + +2005-03-16 Lute Kamstra + + * floatfns.c (Ffloor): Doc fix. + +2005-03-16 YAMAMOTO Mitsuharu + + * mac.c: Include macterm.h instead of directly including Carbon.h. + [TARGET_API_MAC_CARBON] (Qstring, Qnumber, Qboolean, Qdate, Qdata) + (Qarray, Qdictionary): New variables. + (syms_of_mac) [TARGET_API_MAC_CARBON]: Initialize them. + [TARGET_API_MAC_CARBON] (Qutf_8): Add extern. + [TARGET_API_MAC_CARBON] (DECODE_UTF_8): New macro. + [TARGET_API_MAC_CARBON] (struct cfdict_context): New struct used + in callback for CFDictionaryApplyFunction. + [TARGET_API_MAC_CARBON] (cfdata_to_lisp, cfstring_to_lisp) + (cfnumber_to_lisp, cfdate_to_lisp, cfboolean_to_lisp) + (cfobject_desc_to_lisp, cfdictionary_add_to_list) + (cfdictionary_puthash, cfproperty_list_to_lisp): New functions. + [TARGET_API_MAC_CARBON] (Fmac_get_preference): New function. + (syms_of_mac) [TARGET_API_MAC_CARBON]: Defsubr it. + (P, LOOSE_BINDING, SINGLE_COMPONENT, HASHKEY_TERMINAL): New macro. + (skip_white_space, parse_comment, parse_include_file) + (parse_binding, parse_component, parse_resource_name, parse_value) + (parse_resource_line, xrm_create_database, xrm_q_put_resource) + (xrm_merge_string_database, xrm_q_get_resource, xrm_get_resource) + (xrm_cfproperty_list_to_value, xrm_get_preference_database): + New functions. + + * macfns.c (mac_get_rdb_resource): Remove function. + (x_get_string_resource): Use xrm_get_resource. + + * macgui.h (XrmDatabase): Typedef to Lisp_Object. + + * macterm.c (x_list_fonts): FONT-LIST-CACHE is now cadr part of + name_list_element. + (mac_make_rdb): Create resource database from preferences and + argument string. + (mac_term_init): Save resource database to cddr part of + name_list_element. + + * macterm.h (xrm_merge_string_database, xrm_get_resource) + (xrm_get_preference_database): Add externs. + [TARGET_API_MAC_CARBON] (cfdata_to_lisp, cfstring_to_lisp) + (cfnumber_to_lisp, cfdate_to_lisp, cfboolean_to_lisp) + (cfobject_desc_to_lisp, cfproperty_list_to_lisp): Likewise. + + * process.c (init_process): Change `#ifdef DARWIN' to `#if + defined (DARWIN) || defined (MAC_OSX)'. + + * s/darwin.h (DARWIN): Don't define. + +2005-03-16 YAMAMOTO Mitsuharu + + * macfns.c (Qhyper, Qsuper, Qmeta, Qalt, Qctrl, Qcontrol, Qshift): + Remove unused variables. + (syms_of_macfns): Don't initialize them. Likewise for + Qface_set_after_frame_default. Defvar and initialize + Vx_window_horizontal_drag_shape. + (x_set_mouse_color): Change mouse pointer shape. + (mac_window) [!MAC_OSX]: Create root control. + (Fx_create_frame): Remove initializations of mouse pointer shapes. + (hourglass_started): New function (from xfns.c). + (start_hourglass, cancel_hourglass): Put function body in #ifdef + MAC_OSX. + (show_hourglass) [TARGET_API_MAC_CARBON]: Create progress + indicator for each non-tooltip frame if needed, and show it. + (hide_hourglass) [TARGET_API_MAC_CARBON]: Hide progress indicators. + + * macgui.h [!TARGET_API_MAC_CARBON]: Include Appearance.h and + Controls.h. Use ThemeCursor instead of CursHandle. + + * macterm.c (activate_scroll_bars, deactivate_scroll_bars): + Remove functions and declarations. + (mac_set_colors): Take argument for saving background color. + All callers changed. + (XDrawLine, XClearArea, mac_draw_bitmap, XFillRectangle) + (mac_draw_rectangle, mac_draw_string_common): Save and Restore + background color. + (x_update_end, mac_do_track_drag): Don't reset background color. + (mac_define_frame_cursor) [!TARGET_API_MAC_CARBON]: + Use SetThemeCursor. + (x_set_window_size) [TARGET_API_MAC_CARBON]: Move progress + indicator control to the upper-right corner of the window. + (arrow_cursor) [!TARGET_API_MAC_CARBON]: Remove variable. + (do_init_managers) [!TARGET_API_MAC_CARBON]: Don't initialize it. + (do_window_update): Update controls after updating content area. + (mac_handle_window_event): Remove unused extern. + (XTread_socket): Check both control handle and control part code + to determine whether a scroll bar is clicked. Activate/deactivate + root control instead of contained scroll bar controls. + (make_mac_terminal_frame): Use ThemeCursor constants. + + * macterm.h (struct mac_output) [TARGET_API_MAC_CARBON]: + New member hourglass_control. + (HOURGLASS_WIDTH, HOURGLASS_HEIGHT): New defines. + (activate_scroll_bars, deactivate_scroll_bars): Remove declarations. + +2005-03-15 YAMAMOTO Mitsuharu + + * macterm.c (keycode_to_xkeysym_table): Change mapping so that it + coincides with that in Apple X11 except `clear', `enter' on + laptops, and fn + `enter' on laptops. + +2005-03-12 Stefan Monnier + + * xmenu.c (ENCODE_MENU_STRING): Explicitly use string_make_unibyte. + (list_of_panes, list_of_items, Fx_popup_menu): Use XCAR/XCDR. + (digest_single_submenu, xmenu_show): Use ENCODE_MENU_STRING. + + * xfns.c (xic_defaut_fontset): New constant. + (xic_create_fontsetname): New function. + Extracted from create_frame_xic. Try to generate a slightly + better fontset. + (xic_create_xfontset): Use it. + (create_frame_xic): Simplify. + +2005-03-11 Stefan Monnier + + * fileio.c (Fmake_symbolic_link): Fix last change. + +2005-03-11 Richard M. Stallman + + * fileio.c (Frename_file, Fadd_name_to_file) + (Fmake_symbolic_link): If NEWNAME or LINKNAME is a directory, + expand the basename of FILE relative to it. + +2005-03-11 Kenichi Handa + + * fileio.c (Finsert_file_contents): Call Fcheck_coding_system + before calling setup_coding_system so that autoloading of a coding + system work. + +2005-03-10 Jan Dj,Ad(Brv + + * xfns.c (hourglass_started): New function. + + * dispextern.h: Declare hourglass_started. + + * keyboard.c (Fexecute_extended_command): Restart hourglass + after call to Fcompleting_read if already started. + + * gtkutil.c (xg_update_scrollbar_pos): Call x_sync so that the + GTK main loop is entered in xterm.c, thus doing the redraw. + +2005-03-10 Kim F. Storm + + * xdisp.c (pos_visible_p): Fix X value in last line of buffer. + +2005-03-08 Kenichi Handa + + * frame.c (x_set_font): Call set_default_ascii_font if an + available font is found. + + * fontset.c (set_default_ascii_font): New function. + (syms_of_fontset): Don't set FONTSET_ASCII (Vdefault_fontset) here. + + * fontset.h (set_default_ascii_font): Extern it. + +2005-03-07 Kim F. Storm + + * xdisp.c (CLEAR_IMAGE_CACHE_COUNT): New const. + (clear_image_cache_count): New var. + (redisplay_internal): Don't clear face and image caches in the + middle of redisplay; do it afterwards. + + * blockinput.h (TOTALLY_UNBLOCK_INPUT): Avoid dangling else. + + * xdisp.c (notice_overwritten_cursor): Check that phys_cursor.vpos + is valid. If not, clear phys_cursor_on_p and return. + +2005-03-07 Andreas Schwab + + * blockinput.h (UNBLOCK_INPUT_TO): Always call UNBLOCK_INPUT. + +2005-03-06 Richard M. Stallman + + * keyboard.c (Ftop_level): Let Fthrow deal with UNBLOCK_INPUT. + + * eval.c (unwind_to_catch): Use UNBLOCK_INPUT_TO. + (Feval, Ffuncall): Use CHECK_CONS_LIST. + + * lisp.h (CHECK_CONS_LIST): New macro (two definitions). + + * blockinput.h (UNBLOCK_INPUT_TO): New macro. + (TOTALLY_UNBLOCK_INPUT): Handle a pending signal if any. + +2005-03-05 Juri Linkov + + * emacs.c (USAGE1): Replace Info node name "command arguments" + with "emacs invocation". + (USAGE3): Fix usage of `--color=MODE' which actually doesn't + allow arguments `--color' and `MODE' to be separated by space. + Add --no-blinking-cursor, -nbc. + (standard_args): Add -nbc, --no-blinking-cursor. + +2005-03-04 Thien-Thi Nguyen + + * s/vms.h: Define NO_HYPHENS_IN_FILENAMES. + * s/vms4-4.h, s/vms5-5.h: Undefine NO_HYPHENS_IN_FILENAMES. + * fileio.c (Fexpand_file_name) [VMS]: + Use NO_HYPHENS_IN_FILENAMES, not VMS4_4. + * doc.c (munge_doc_file_name) [VMS]: Likewise. + (Fsnarf_documentation): Call munge_doc_file_name. + +2005-03-04 Thien-Thi Nguyen + + * s/vms.h (FILE_SYSTEM_CASE): New macro. + * fileio.c (Fexpand_file_name) [VMS]: Don't upcase the name + "manually"; this is now handled generally via FILE_SYSTEM_CASE. + +2005-03-04 YAMAMOTO Mitsuharu + + * emacs.c (main): Change `#ifdef HAVE_CARBON' to `#if + defined (MAC_OSX) && defined (HAVE_CARBON)'. + + * image.c [!MAC_OSX && TARGET_API_MAC_CARBON]: Include QuickTime.h. + + * mac.c [!MAC_OSX && HAVE_CARBON]: Include Carbon.h. + [!MAC_OSX] (select) [TARGET_API_MAC_CARBON]: Use ReceiveNextEvent. + (posix_pathname_to_fsspec, fsspec_to_posix_pathname): New functions. + (mac_clear_font_name_table): Move extern to macterm.h. + + * macfns.c (install_window_handler): Move extern to macterm.h. + (Fx_file_dialog): Check STRINGP (default_filename) to see it is + valid. Don't check !NILP (dir) because it is already checked with + CHECK_STRING. + (Fx_file_dialog) [!MAC_OSX]: Use FSSpec instead of FSRef for + specifying the default location and obtaining the selected filename. + + * macgui.h [!MAC_OSX && HAVE_CARBON]: Include Carbon.h. + + * macmenu.c [TARGET_API_MAC_CARBON]: Don't include headers that + are included via Carbon.h. + + * macterm.c [TARGET_API_MAC_CARBON && !MAC_OSX]: + Define USE_CARBON_EVENTS to 1. + (qd) [__MRC__ && TARGET_API_MAC_CARBON]: Don't declare. + (x_free_frame_resources): Call remove_window_handler for + non-tooltip windows. + [TARGET_API_MAC_CARBON]: Don't include headers that are included + via Carbon.h. + [TARGET_API_MAC_CARBON] (mac_do_track_dragUPP) + (mac_do_receive_dragUPP): New variables. + (mac_handle_service_event, init_service_handler): Put declarations + and definitions in #ifdef MAC_OSX. + (install_window_handler) [TARGET_API_MAC_CARBON]: Create UPPs for + drag-and-drop handler functions and register them. + (remove_window_handler): New function. + (do_ae_open_documents, mac_do_receive_drag) [!MAC_OSX]: + Use fsspec_to_posix_pathname. + (main): Change #if !TARGET_API_MAC_CARBON to #ifdef MAC_OS8. + (XTread_socket) [!MAC_OSX]: Don't pass keyboard events to TSM. + [MAC_OS8] (make_mac_terminal_frame) [TARGET_API_MAC_CARBON]: + Set default cursors. + (mac_initialize) [USE_CARBON_EVENTS && !MAC_OSX]: Don't call + init_service_handler or init_quit_char_handler. + (mac_initialize) [!MAC_OSX]: Don't call MakeMeTheFrontProcess. + + * macterm.h (install_window_handler, remove_window_handler) + (posix_pathname_to_fsspec, fsspec_to_posix_pathname) + (mac_clear_font_name_table): New externs. + +2005-03-03 Thien-Thi Nguyen + + * fileio.c (FILE_SYSTEM_CASE): Define macro if not already defined. + (Ffile_name_directory): Use FILE_SYSTEM_CASE unconditionally. + (Fexpand_file_name): Likewise. + +2005-03-03 Thien-Thi Nguyen + + * emacs.c (Fkill_emacs): Use EXIT_SUCCESS; + no longer special-case VMS. Add bogus return value. + +2005-03-02 Kim F. Storm + + * dispextern.h (XASSERTS): Define to 0 if not already defined. + (xassert) [!XASSERTS]: Define dummy version. + +2005-03-02 Kim F. Storm + + * xdisp.c (redisplay_window): YABX (yet another bogus xassert). + Reported by David Kastrup. + +2005-03-01 Ehud Karni + + * xdisp.c (get_next_display_element): Fix control and escape + glyph from display vector. + +2005-03-01 Stefan Monnier + + * keyboard.c (Fposn_at_x_y): Check integerness of X and Y. + +2005-02-27 Richard M. Stallman + + * xdisp.c (fast_find_position): Rename END to BEG. + (syms_of_xdisp) : Doc fix. + +2005-02-27 Jan Dj,Ad(Brv + + * gtkutil.c (xg_resize_outer_widget): Remove unneeded call to + gtk_window_resize and x_wm_set_size_hint. + +2005-02-25 Kim F. Storm + + * dispextern.h (OVERLAY_STRING_CHUNK_SIZE): Increase from 3 to 16. + + * xdisp.c (init_from_display_pos): Don't read past end of + it->overlay_strings array. + +2005-02-25 Stephan Stahl (tiny change) + + * buffer.c (syms_of_buffer): Fix typo. + +2005-02-23 Lute Kamstra + + * buffer.c (Foverlay_buffer): Doc fix. + +2005-02-22 Kim F. Storm + + * minibuf.c (Ftry_completion, Fall_completions): Allow both string + and symbol keys in alists and hash tables. + + * xdisp.c (fast_find_position): Fix search for start of overlay. + +2005-02-21 Kim F. Storm + + * window.c (window_scroll_pixel_based): When scrolling backwards, + handle partial visible line at end of window even when we hit PT. + +2005-02-21 Stefan Monnier + + * keymap.h: Declare Fcurrent_active_maps, used in doc.c. + +2005-02-21 Kim F. Storm + + * xdisp.c (move_it_vertically_backward): Eliminate two xasserts. + I think those asserts are bogus if buffer contains invisible text + or images. + +2005-02-21 David Kastrup + + * gtkutil.c (xg_create_frame_widgets): UNBLOCK_INPUT on error. + +2005-02-20 Kim F. Storm + + * xdisp.c (pos_visible_p): Be sure to move to the specified + position. Always get the full ascent / descent of the + corresponding row, to return reliable rtop and rbot values. + (back_to_previous_visible_line_start): Fix 2005-01-18 change. + Must look one character back, as back_to_previous_line_start + returns position after the newline. + (move_it_vertically_backward): Fix heuristic for when to move further + back in case line_height * 2/3 is larger than window height. + (cursor_row_fully_visible_p): Rename make_cursor_line_fully_visible_p + as it does not do anything anymore. Add arg current_matrix_p to + use current matrix rather than desired matrix when set. + (try_cursor_movement): Don't scroll to make cursor row fully + visible if cursor didn't move. This avoids unexpected recentering + in case of blinking cursor or accepting process output. + Use current matrix to check cursor row visibility. + (redisplay_window): Fix whether to recenter or move to top in case + cursor line is taller than window height. + (find_first_unchanged_at_end_row): Stop search if we reach a row + which not enabled (instead of abort). + +2005-02-18 Kim F. Storm + + * xfaces.c (Finternal_set_lisp_face_attribute): Allow :color property + to be nil in a :box attribute value list; customize prints that + as lisp value when no box color is specified. + + * .gdbinit (pitx, pit): Pretty print display iterator. + (prowx, prow): Pretty print glyph row. + (pcursorx, pcursor): Pretty print a window cursor. + (pwinx, pwin): Pretty print struct window. + +2005-02-18 Stefan Monnier + + * alloc.c (BLOCK_BYTES): Harmless typo. + +2005-02-17 Andreas Schwab + + * xfns.c (hack_wm_protocols): Use correct type for last parameter + of XGetWindowProperty to avoid aliasing issues. + (Fx_window_property): Likewise. + + * xselect.c (Fx_disown_selection_internal): Use union of struct + input_event and struct selection_input_event to avoid aliasing issues. + + * xterm.c (handle_one_xevent): Use union of struct input_event and + struct selection_input_event to avoid aliasing issues. + (SET_SAVED_MENU_EVENT): Adapt reference to inev. + +2005-02-17 Kim F. Storm + + * dispextern.h (enum it_method): New enum. + (GET_FROM_*): Its members. + (struct it): Change member method from function pointer to enum. + + * xdisp.c (check_it, init_from_display_pos, handle_stop) + (setup_for_ellipsis, handle_single_display_spec) + (handle_composition_prop, next_overlay_string) + (get_overlay_strings, reseat_1, reseat_to_string) + (next_element_from_ellipsis, BUFFER_POS_REACHED_P) + (in_display_vector_p, display_line, get_next_display_element): + Change it->method from function pointer to enum. + (get_next_element): New array to map it->method to function. + (get_next_display_element): Use it. + (set_iterator_to_next): Use switch instead of if/else chain. + +2005-02-15 Benjamin Riefenstahl + + * w32select.c: Summary: Thorough rework to implement Unicode + clipboard operations and delayed rendering. + + Drop last_clipboard_text and related code, keep track of + ownership via clipboard_owner instead. Drop old #if0 sections. + + (DEFAULT_LCID, ANSICP, OEMCP, QUNICODE, QANSICP, QOEMCP) + (clipboard_owner, modifying_clipboard, cfg_coding_system) + (cfg_codepage, cfg_lcid, cfg_clipboard_type, current_text) + (current_coding_system, current_requires_encoding) + (current_num_nls, current_clipboard_type, current_lcid): + New static variables. + + (convert_to_handle_as_ascii, convert_to_handle_as_coded) + (render, render_all, run_protected, lisp_error_handler) + (owner_callback, create_owner, setup_config) + (enum_locale_callback, cp_from_locale, coding_from_cp): + New local functions. + + (term_w32select, globals_of_w32select): New global functions. + + (Fw32_set_clipboard_data): Ignore parameter FRAME, use + clipboard_owner instead. Use delayed rendering and provide + all text formats. Provide CF_LOCALE if necessary. + + (Fw32_get_clipboard_data): Handle CF_UNICODETEXT and + CF_LOCALE. Fall back to CF_TEXT, if CF_UNICODETEXT is not + available. Force DOS line-ends for decoding. + + (Fx_selection_exists_p): Handle CF_UNICODETEXT. + + (syms_of_w32select): Init and register new variables. + + * w32.h: Add prototypes for globals_of_w32select and + term_w32select. Make the neighboring K&R declarations into + prototypes, too. + + * emacs.c: Include w32.h to get function prototypes. + (main): Call globals_of_w32select. + + * w32.c (term_ntproc): Call term_w32select. + + * s/ms-w32.h: Guard MSC-specific #pragmas with an #ifdef. + +2005-02-16 Kim F. Storm + + * xdisp.c (BUFFER_POS_REACHED_P): Return true if pos reached and + at end of display vector. + +2005-02-15 Richard M. Stallman + + * xdisp.c (get_next_display_element): Fix escape-glyph criterion + for mode and header lines. + + * lread.c (syms_of_lread) : Doc fix. + + * keymap.h (describe_map_tree): Change decl. + + * keyboard.c (command_loop_1): Always use safe_run_hooks + to run Qdeferred_action_function. + + * keymap.c (describe_map_tree): New arg MENTION_SHADOW. Calls changed. + (describe_map, describe_vector): Likewise. When it's 1, + don't omit shadowed bindings, instead mark them as shadowed. + + * doc.c (Fsubstitute_command_keys): Compute list of shadowing maps + for describe_map_tree. Pass 1 for MENTION_SHADOW. + + * data.c (Fsetq_default): Allow no arg case. + +2005-02-14 Kenichi Handa + + * coding.c (encode_coding_string): Always return a unibyte string. + If NOCOPY is nonzero and there's no need of encoding, make STR + unibyte directly. + + * xselect.c (lisp_data_to_selection_data): If OBJ is a non-ASCII + multibyte string, signal an error instead of aborting. + +2005-02-12 Dan Nicolaescu + + * keyboard.c: If HAVE_FCNTL_H include fcntl.h. + +2005-02-12 Kim F. Storm + + * xdisp.c (expose_window): Don't fix overlaps for mode lines. + +2005-02-10 Kim F. Storm + + * xdisp.c (try_window_id): Set first_unchanged_at_end_row to NULL + if it moves outside window or it doesn't display text. + +2005-02-09 Kim F. Storm + + * undo.c (Fprimitive_undo): Check that undo function does not + switch buffer. + +2005-02-08 Jan Dj,Ad(Brv + + * xselect.c (selection_data_to_lisp_data): For the special case + type == XA_ATOM, data contains array of int, not array of Atom. + (x_property_data_to_lisp, selection_data_to_lisp_data): + Comment update: data must be array of int for format == 32. + +2005-02-08 Stefan Monnier + + * undo.c (Fprimitive_undo): Check veracity of delta,start,end. + +2005-02-07 Jan Dj,Ad(Brv + + * xfns.c (Fx_change_window_property): Use long array when format is 32. + (Fx_window_property): If format is 32 and long is bigger than 32 bits, + convert long array returned from XGetWindowProperty to an int array. + (x_set_tool_bar_lines): Check that width and height is greater than + zero before clearing area. + + * xselect.c (x_reply_selection_request): Pass long array to + XChangeProperty so that 64 bit longs are handeled correctly. + (x_get_window_property): If format is 32 and long is bigger than 32 + bits convert data from XGetWindowProperty from long array to int array. + (lisp_data_to_selection_data): When the input is a vector and the + format is 32, allocate a long array even if long is bigger than 32 bits. + (x_fill_property_data): Use char, short and long as the man page + for XChangeProperty specifies. This way the data returned is OK for + both 32 and 64 bit machines. + (x_handle_dnd_message): Calculate size correctly even for 64 bit + machines. + (Fx_send_client_event): Undo change from 2005-02-05, + x_fill_property_data now handles that case. + + * xfns.c (Fx_backspace_delete_keys_p): Add comment about the + reason for the approach in the code. + +2005-02-07 Kim F. Storm + + * undo.c (Fprimitive_undo): Record max one dummmy apply element. + +2005-02-06 Richard M. Stallman + + * eval.c (Frun_hook_with_args) + (Frun_hook_with_args_until_success) + (Frun_hook_with_args_until_failure): Doc fixes. + +2005-02-05 Andreas Schwab + + * sysdep.c (sys_subshell): Properly terminate execlp argument list. + +2005-02-05 Jan Dj,Ad(Brv + + * xselect.c (Fx_send_client_event, x_handle_dnd_message): Handle + the longs in a XClientMessageEvent correctly when long is 64 bits. + +2005-02-05 Eli Zaretskii + + * xfaces.c (face_color_supported_p): Use HAVE_WINDOW_SYSTEM + instead of HAVE_X_WINDOWS, for non-X windowed sessions. + +2005-02-03 Jan Dj,Ad(Brv + + * xmenu.c (menubar_selection_callback): Force out GTK buffered + events so the menu event comes after them. This is to prevent sit-for + from exiting on buffered events directly after a menu selection, + lisp code for Help => About Emacs uses sit-for. + + * gtkutil.c (create_menus): Connect selection-done event instead of + the deactivate event to deactivate_cb. This will make the last + leave event come before the call to deactivate_cb, so the leave + event does not make sit-for exit after a menu selection. + +2005-02-03 Kim F. Storm + + * dispnew.c (build_frame_matrix_from_leaf_window) + [!GLYPH_DEBUG]: Fix xassert. + + * xfaces.c (x_free_gc) [!GLYPH_DEBUG]: Fix xassert. + + * xfns.c (unwind_create_frame) [!GLYPH_DEBUG]: Fix xassert. + +2005-02-03 YAMAMOTO Mitsuharu + + * mac.c: Use MAC_OS_X_VERSION_MAX_ALLOWED to conditionalize by + the compiling OS version. + + * macfns.c (x_create_tip_frame): Likewise. + + * macterm.c (mac_draw_string_common, x_make_frame_visible): Likewise. + +2005-02-03 Richard M. Stallman + + * xterm.c (x_error_quitter): On GCC 3 and up, specify noinline. + + * xdisp.c (echo_area_display): Clear echo_message_buffer. + + * buffer.c (Fbury_buffer): Doc fix. + +2005-02-02 Steven Tamm + + * macfns.c (unwind_create_frame): Fix compile error due to + xassert being uncondition, but predicate is. + * dispnew.c (update_window): Fix compile error due to + xassert being uncondition, but predicate is. + +2005-02-02 Miles Bader + + * dispextern.h (xassert): Enable unconditionally. + +2005-02-02 Kim F. Storm + + * undo.c (Fprimitive_undo): Fix dummy apply undo entry. + +2005-02-02 Kenichi Handa + + * casefiddle.c (casify_object): Enable changing characters of + different byte length. + (casify_region): Fix loop condition, args to replace_range_2, and + update opoint_byte. + + * insdel.c (replace_range_2): Fix bugs in adjusting markers and point. + +2005-02-01 Kim F. Storm + + * xdisp.c (back_to_previous_visible_line_start): Reset iterator + stack before calling handle_display_prop. + +2005-01-31 Kim F. Storm + + * undo.c (Qapply): New lisp var. + (syms_of_undo): Intern and staticpro it. + (Fprimitive_undo): Support formats (apply FUNNAME . ARGS) and + (apply DELTA BEG END FUNNAME . ARGS) instead of (FUNNAME . ARGS). + + * buffer.c (syms_of_buffer) : Doc fix. + +2005-01-30 Jesper Harder + + * macterm.c (syms_of_macterm) + : Fix docstring indentation. + +2005-01-29 Luc Teirlinck + + * undo.c (syms_of_undo) : Doc update. + Increase value to 3 Meg. + +2005-01-29 Jan Dj,Ad(Brv + + * xfns.c (show_hourglass): Use FRAME_X_WINDOW as parent for GTK, + button events are not received otherwise. + +2005-01-29 Richard M. Stallman + + * buffer.c (syms_of_buffer) : Doc fix. + + * undo.c (Fprimitive_undo): Handle (FUNNAME . ARGS) by calling FUNNAME. + +2005-01-28 Stefan Monnier + + * keymap.c (access_keymap): YAILOM. + +2005-01-27 Kim F. Storm + + * xdisp.c (get_phys_cursor_geometry): New function to calculate + phys cursor position and size for hollow cursor. Position is + aligned with get_glyph_string_clip_rect and ensures that a hollow + cursor is shown, even when the actual glyph is not visible. + + * dispextern.h (get_phys_cursor_geometry): Add prototype. + + * xterm.c (x_clip_to_row): Ensure y >= 0. + (x_draw_hollow_cursor): Use get_phys_cursor_geometry. + + * w32term.c (x_draw_hollow_cursor): Use get_phys_cursor_geometry. + + * macterm.c (x_draw_hollow_cursor): Use get_phys_cursor_geometry. + +2005-01-27 Stefan Monnier + + * xterm.c (x_error_quitter): Add a prototype. Make it static again. + +2005-01-27 Kim F. Storm + + * xdisp.c (get_glyph_string_clip_rect): Always show a cursor + glyph, even when row is only partially visible and actual cursor + position is not visible. + +2005-01-24 Richard M. Stallman + + * xterm.c (x_error_quitter): No longer static, and moved after + x_error_handler. + +2005-01-24 Kim F. Storm + + * xdisp.c (move_it_by_lines): If we move forward after going too + far back, cancel move if end position is same as start position. + +2005-01-24 YAMAMOTO Mitsuharu + + * dispextern.h (struct glyph_string): New members clip_head and + clip_tail. + + * xdisp.c (get_glyph_string_clip_rect): Restrict horizontal clip + region to the area between clip_head and clip_tail. + (draw_glyphs): Record the area that need to be actually redrawn to + the new variables clip_head and clip_tail when there are + overhangs. Set values of these variables to the corresponding + members in struct glyph_string. Refine x coordinates for + notice_overwritten_cursor using clip_head and clip_tail. + + * macgui.h (STORE_XCHARSETSTRUCT): New macro. + + * macterm.c (mac_compute_glyph_string_overhangs): Implement with + QDTextBounds. + (x_draw_glyph_string): Don't fill the background of the successor + of a glyph with a right overhang if the successor will draw a cursor. + (XLoadQueryFont): Obtain font metrics using QDTextBounds. + (x_redisplay_interface): Add entry for compute_glyph_string_overhangs. + +2005-01-24 Kim F. Storm + + * window.c (window_scroll_pixel_based): Fix scrolling in the wrong + direction if window height was smaller than next-screen-context-lines. + Now always scroll at least one line in the requested direction. + Ensure that we actually do scroll backwards when requested to do so. + + * xdisp.c (redisplay_window): Only try to make cursor line fully + visible once (to avoid redisplay loop). + +2005-01-23 Kim F. Storm + + * window.c (Fpos_visible_in_window_p): Simplify return value for + partially visible rows. + (window_scroll_pixel_based): Adapt to that change. + + * window.c (window_scroll_pixel_based): Force moving to next line + if scrolling doesn't move start point, e.g. if looking at tall image. + + * xdisp.c (pos_visible_p): Return 0 if non-interactive. + Clear last_height before calling line_bottom_y to get real height. + Fix calculation of y. + +2005-01-22 Steven Tamm + + * s/darwin.h: Removed PTY_ITERATION from here. + (DARWIN): Define. + + * process.c (init_process): Default process-connection-type to + nil on darwin 6 or less, t if it is 7 or higher. This way the + broken pty behavior is still allowed on darwin 6 for interactive + processes for people that know what they are doing. + +2005-01-22 Kim F. Storm + + * window.c (auto_window_vscroll_p): New boolean. + (syms_of_window): DEFVAR_BOOL it. + (Fpos_visible_in_window_p): Extend return value to include RTOP + and RBOT values if FULLY is nil. + (window_scroll_pixel_based): Adjust vscroll for partially visible + rows if auto_window_vscroll_p is set. + (Fset_window_vscroll): Do nothing if vscroll is not modified. + + * xdisp.c (pos_visible_p): Replace FULLY arg by RTOP and RBOT args + to return number of partially invisible pixels at top and bottom + of the dislay row at POS. + + * lisp.h (pos_visible_p): Fix prototype. + +2005-01-21 Richard M. Stallman + + * fileio.c (Fcopy_file): Doc fix. + +2005-01-21 Jan Dj,Ad(Brv + + * gtkutil.c (xg_tool_bar_detach_callback): Remove unused variable bw. + (xg_get_file_name): Move declaration ofx_use_old_gtk_file_dialog to + start of function for older compilers. + +2005-01-20 Richard M. Stallman + + * editfns.c (Fmessage): If arg is "", return "" (as before). + + * keymap.c (access_keymap): Protect from bad value of meta_prefix_char. + + * .gdbinit (xgetptr, xgetint, xgettype): Copy $arg0 into a temp + variable. + +2005-01-20 Steven Tamm + + * editfns.c (Voperating_system_release): Add. + (init_editfns): Assign new variable operating-system-release + based on call to uname if available. + (get_operating_system_release): Add function to + allow c-level access to operating system release. + + * config.h: Regenerated. + + * s/darwin.h (PTY_ITERATION): Don't allow PTYs on darwin 6 or less. + (MIN_PTY_KERNEL_VERSION): Define minimum kernel version for + using ptys as '7'. + +2005-01-20 Kim F. Storm + + * alloc.c (STRING_MARKED_P, VECTOR_MARKED_P): Return boolean. + + * xterm.c (x_draw_glyph_string_box): Fix last_x for full width rows. + Thanks to Chong Yidong for debugging this. + + * macterm.c (x_draw_glyph_string_box): Likewise. + + * w32term.c (x_draw_glyph_string_box): Likewise. + + * indent.c (Fvertical_motion): Temporarily disable selective display. + +2005-01-19 Kim F. Storm + + * xdisp.c (note_mode_line_or_margin_highlight): Fix :pointer + image property. + + * fns.c (sweep_weak_table): Advance prev pointer when we keep a pair. + +2005-01-18 Kim F. Storm + + * xdisp.c (fast_find_position): Backtrack to find first row if + charpos is inside a display overlay that spans multiple lines. + +2005-01-18 Kenichi Handa + + * coding.c (decode_coding_iso2022): Translate invalid codes if + translation-table is specified. + +2005-01-18 Kim F. Storm + + * xdisp.c (back_to_previous_visible_line_start): Undo 2004-12-28 + change. If handle_display_prop indicates newline is replaced by + image or text, move back to start of relevant overlay or interval + and continue scan from there. Simplify. + +2005-01-17 Kim F. Storm + + * dispnew.c (mode_line_string, marginal_area_string): + Fix off-by-one error in search for glyph. + +2005-01-16 Kim F. Storm + + * macterm.c (syms_of_macterm) : Doc fix. + +2005-01-16 Steven Tamm + + * macterm.c (mac_to_x_fontname): Remove spurious argument. + +2005-01-16 Andreas Schwab + + * macterm.c (mac_draw_string_common): Fix compilation on OSX 10.1. + +2005-01-16 Jan Dj,Ad(Brv + + * fringe.c (Fdefine_fringe_bitmap, init_fringe): When assigning + fringe_faces, cast result from xmalloc/xrealloc to Lisp_Object *. + +2005-01-16 YAMAMOTO Mitsuharu + + * keyboard.c (READABLE_EVENTS_DO_TIMERS_NOW) + (READABLE_EVENTS_FILTER_EVENTS, READABLE_EVENTS_IGNORE_SQUEEZABLES): + New flags for readable_events. + (get_filtered_input_pending, readable_filtered_events): Remove. + (tracking_off): Call readable_events and get_input_pending with + flag READABLE_EVENTS_DO_TIMERS_NOW. + (readable_events): Move code from old readable_filtered_events here, + but check new READABLE_EVENTS_* in argument flags instead of previous + two boolean arguments do_timers_now and filter_events. + If we are doing mouse tracking and the mouse moved, return only if + READABLE_EVENTS_IGNORE_SQUEEZABLES is not set in flags. + (swallow_events): Call get_input_pending with flag + READABLE_EVENTS_DO_TIMERS_NOW. + (get_input_pending): Move code from old get_filtered_input_pending + here. Replace boolean arguments do_timers_now, filter_events with + flags, and pass flags to readable_events. Document new + READABLE_EVENTS_* flags. + (detect_input_pending_ignore_squeezables): New function. + (detect_input_pending_run_timers): Call get_input_pending with flag + READABLE_EVENTS_DO_TIMERS_NOW. + (Finput_pending_p): Call get_input_pending with flags + READABLE_EVENTS_DO_TIMERS_NOW and READABLE_EVENTS_FILTER_EVENTS. + + * dispnew.c (update_window, update_frame_1): Replace calls to + detect_input_pending with detect_input_pending_ignore_squeezables + so that redisplay is not paused if the event queue contains only + mouse movements. + + * lisp.h: Declare detect_input_pending_ignore_squeezables. + +2005-01-15 Steven Tamm + + * macterm.c (Vmac_use_core_graphics): Declare variable for + mac-allow-anti-aliasing. + (syms_of_macterm): DEFVAR_LISP and initialize it. + (mac_draw_string_common): Use core graphics text rendering if + mac-allow-anti-aliasing is enabled. + + * macfns.c (Fx_file_dialog): Save As dialog includes only the + file name in the text box. + +2005-01-15 YAMAMOTO Mitsuharu + + * macfns.c (x_set_foreground_color, x_set_background_color): + Sync with xfns.c. + (mac_window, x_create_tip_frame): Use XSetWindowBackground. + * macterm.c (XSetBackground, XSetWindowBackground): New functions. + * macterm.h (XSetBackground, XSetWindowBackground): Add externs. + +2005-01-14 Kim F. Storm + + * keyboard.c (Fposn_at_x_y): Add optional arg WHOLE. + +2005-01-13 Richard M. Stallman + + * keymap.c (Fcurrent_active_maps): Ignore Voverriding_local_map + if Voverriding_terminal_local_map is non-nil. + + * keyboard.c (syms_of_keyboard): Doc fix. + +2005-01-13 Kim F. Storm + + * xdisp.c (Fformat_mode_line): Fix last change. Remove NO_PROPS arg + (specify 0 for FACE instead). Reorder arg list. Doc fix. + +2005-01-12 Richard M. Stallman + + * xdisp.c (Fformat_mode_line): New arg FACE specifies a default + face property for characters that don't specify one. + + * fns.c (Frequire): Record in load-history unconditionally. + +2005-01-10 Kim F. Storm + + * dispextern.h (merge_faces): Rename from merge_into_realized_face. + + * xfaces.c (merge_faces): Rename from merge_into_realized_face. + Callers changed. + Add support to merge with lisp face id too (if face_name is t). + + * xdisp.c (get_next_display_element, next_element_from_display_vector): + Don't lookup lface_id from display table glyphs here; instead use + merge_faces to merge the lisp face id into current face. + +2005-01-09 Kim F. Storm + + * dispextern.h (struct it): New member dpvec_face_id. + (merge_into_realized_face): Add prototype. + + * xfaces.c (merge_into_realized_face): New function. Used to + merge escape-glyph face or face from display table into current face. + + * xdisp.c (Vshow_nonbreak_escape): New lisp var. + (syms_of_xdisp): DEFVAR_LISP it. + (escape_glyph_face): Remove var. + (redisplay_window): Don't initialize it. + (setup_for_ellipsis, get_next_display_element): + Set it->dpvec_face_id to -1. + (get_next_display_element): Test Vshow_nonbreak_escape. + Do not setup escape_glyph_face. + Properly merge escape-glyph face or face from display table with + current face for escape and control characters. + Set it->dpvec_face_id to relevant face id instead of adding it to each + element of display vector. + (next_element_from_display_vector): If it->dpvec_face_id is set, + use that instead of lface_id from glyph itself. + +2005-01-08 Jan Dj,Ad(Brv + + * xterm.h (struct x_output): New member, toolbar_detached. + + * gtkutil.c (xg_create_frame_widgets): Set initial tool bar height to + 38. + (xg_tool_bar_detach_callback): Set toolbar_detached to 1. + (xg_tool_bar_attach_callback): Set toolbar_detached to 0. + (xg_create_tool_bar): Initialize toolbar_detached. + (update_frame_tool_bar): Only set FRAME_TOOLBAR_HEIGHT (f) if + toolbar_detached is zero. + +2005-01-07 Jan Dj,Ad(Brv + + * xmenu.c (create_and_show_popup_menu): Pass zero as button to + gtk_menu_popup if not for_click, so callbacks for the menu are called. + + * gtkutil.c (xg_gtk_scroll_destroy, xg_create_scroll_bar) + (xg_tool_bar_callback, xg_tool_bar_help_callback) + (update_frame_tool_bar): Cast to EMACS_INT to avoid compiler warning. + + * xselect.c (x_get_foreign_selection, x_fill_property_data) + (Fx_get_atom_name, Fx_send_client_event): Replace XFLOAT with + XFLOAT_DATA to get extract number from Lisp object. + +2005-01-07 Kim F. Storm + + * xdisp.c (set_iterator_to_next): Fix 2004-12-13 change. + Set stop_charpos to current charpos instead of 0. + +2005-01-06 Nick Roberts + + * xdisp.c (Fformat_mode_line): First arg now required. + +2005-01-06 YAMAMOTO Mitsuharu + + * macterm.c (XLoadQueryFont): Correctly handle 0 size + font widths that are returned from some Japanese fonts. + +2005-01-06 Kim F. Storm + + * fringe.c (fringe_faces): Change to Lisp_Object pointer. + (draw_fringe_bitmap_1): Lookup user defined fringe faces here. + (destroy_fringe_bitmap): Set fringe_faces element to nil. + (Fdefine_fringe_bitmap, init_fringe): Change allocation of + fringe_faces array and init elements to nil. + (Fset_fringe_bitmap_face): Set fringe_faces to face name instead of + non-persistent face id. + (mark_fringe_data): New function for GC. + + * alloc.c (mark_fringe_data): Declare extern. + (Fgarbage_collect): Call mark_fringe_data. + + * alloc.c (overrun_check_free): Invalidate freed memory if + XMALLOC_CLEAR_FREE_MEMORY is defined. + +2005-01-05 YAMAMOTO Mitsuharu + + * macfns.c: Include sys/param.h. + [TARGET_API_MAC_CARBON] (mac_nav_event_callback): New declaration + and function. + [TARGET_API_MAC_CARBON] (Fx_file_dialog): Use MAXPATHLEN for size + of filename string. Set event callback function when creating + dialog boxes. Add code conversions for filenames. Don't dispose + of apple event descriptor record if failed to create it. + + * macterm.c: Include sys/param.h. + [USE_CARBON_EVENTS] (mac_handle_window_event): Add handler for + kEventWindowUpdate. + (install_window_handler) [USE_CARBON_EVENTS]: Register it. + (do_ae_open_documents) [TARGET_API_MAC_CARBON]: Get FSRef instead + of FSSpec from apple event descriptor record. + (do_ae_open_documents) [TARGET_API_MAC_CARBON]: Use MAXPATHLEN for + size of filename string. + [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise. + [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Return error when a + file dialog is in action. + [TARGET_API_MAC_CARBON] (mac_do_track_drag): Likewise. + Reject only when there are no filename items. Set background color + before (un)highlighting the window below the dragged items. + (XTread_socket) [USE_CARBON_EVENTS]: Don't call do_window_update. + +2005-01-05 Romain Francoise + + * term.c (encode_terminal_code): Fix buffer size computation. + +2005-01-04 Richard M. Stallman + + * xdisp.c (Fformat_mode_line): Doc fix. + +2005-01-04 Stefan Monnier + + * alloc.c (refill_memory_reserve): Move. + (emacs_blocked_free, emacs_blocked_malloc, emacs_blocked_realloc) + (reset_malloc_hooks, uninterrupt_malloc) [SYNC_INPUT]: Don't define. + +2005-01-03 Richard M. Stallman + + * window.c (window_scroll_pixel_based): Don't correct preserve_y + for CURRENT_HEADER_LINE_HEIGHT when moving backwards. + +2005-01-03 Jason Rumney + + * w32bdf.c (w32_load_bdf_font): Set fontp->average_width and + fontp->space_width to FONT_WIDTH so they are valid. + + * w32fns.c (w32_load_system_font): Set FONT_WIDTH to maximum, not + average width. Set fontp->average_width and fontp->space_width to + their appropriate values. + + * w32term.c (x_new_font): Set FRAME_COLUMN_WIDTH to + fontp->average_width, not FONT_WIDTH. Set FRAME_SPACE_WIDTH to + fontp->space_width. + +2005-01-03 YAMAMOTO Mitsuharu + + * macterm.c (x_new_font): Set FRAME_SPACE_WIDTH. + (x_font_min_bounds, XLoadQueryFont): Use the correct font width + metrics for max and min bounds. + (x_load_font): Correctly calculate average font width metrics. + +2005-01-02 Richard M. Stallman + + * alloc.c (Fgarbage_collect): Don't truncate_undo_list on dead buffers. + +2004-12-31 Jan Dj,Ad(Brv + + * xterm.c (handle_one_xevent): Clear area in expose event for GTK. + +2004-12-31 Richard M. Stallman + + * xdisp.c (setup_for_ellipsis, get_next_display_element): + Set it->ellipsis_p to 1 or 0. + (display_line): Record whether row ends in mid-ellipsis. + (set_cursor_from_row): If ends in ellipsis, find start of it. + (cursor_row_p): If PT's at the end of the ellipsis the row + ends within, don't display cursor on this row. + + * dispextern.h (struct it): New element ellipsis_p. + (struct glyph_row): New element ends_in_ellipsis_p. + + * xdisp.c (BUFFER_POS_REACHED_P): We haven't reached the specified + position if we're reading from something other than the buffer. + + * window.c (window_scroll_pixel_based): Only look at + Vscroll_preserve_screen_position if the old PT can't be kept. + (syms_of_window) : Doc fix. + +2004-12-30 Kim F. Storm + + * xdisp.c (get_line_height_property): New function extracted from + original calc_line_height_property. + (calc_line_height_property): Rework. Handle t and (nil . ratio). + (x_produce_glyphs): Use them to handle line-height and + line-spacing according to new height spec. + (Qtotal): Remove. + (syms_of_xdisp): Remove intern and staticpro for Qtotal. + +2004-12-30 Kenichi Handa + + * fileio.c (Finsert_file_contents): Don't use + current_buffer->buffer_file_coding_system even if REPLACE is + non-nil. Call Qafter_insert_file_set_coding with the second arg VISIT. + + * fontset.h (struct font_info): New members space_width and + average_width. + + * frame.h (struct frame): New member space_width. + (FRAME_SPACE_WIDTH): New macro. + + * xterm.h (struct x_display_info): New member Xatom_AVERAGE_WIDTH. + + * xterm.c (x_new_font): Set FRAME_COLUMN_WIDTH to + fontp->average_width, not FONT_WIDTH. Set FRAME_SPACE_WIDTH to + fontp->space_width. + (x_load_font): Calculate fontp->space_width and fontp->average_width. + (x_term_init): Initialize dpyinfo->Xatom_AVERAGE_WIDTH. + + * xdisp.c (x_produce_glyphs): Calculate tab width by + FRAME_SPACE_WIDTH, not FRAME_COLUMN_WIDTH. + +2004-12-29 Sanghyuk Suh + + * macterm.c (SelectionRange): Add Xcode position apple event struct. + (do_ae_open_documents): Handle Xcode-style file position open events. + +2004-12-29 Luc Teirlinck + + * buffer.c (syms_of_buffer) : Correct typo. + +2004-12-29 Richard M. Stallman + + * buffer.c (syms_of_buffer) : Doc fix. + +2004-12-29 YAMAMOTO Mitsuharu + + * macfns.c (install_window_handler): Modify extern to return OSErr + value. + (mac_window): Handle return value of install_window_handler. + + * macterm.c (reflect_byte): Remove function. + (mac_create_bitmap_from_bitmap_data): Don't call reflect_byte. + Lookup table instead. + (mac_do_font_lists): Simplify calculation of the longest + nonspecial string. + (init_mac_drag_n_drop): Remove function and declaration. + (mac_initialize) [TARGET_API_MAC_CARBON]: Don't call + init_mac_drag_n_drop. + (mac_do_track_drag): New function and declaration. + (install_window_handler): Return OSErr value. + (install_window_handler) [TARGET_API_MAC_CARBON]: + Register handlers for tracking/receiving drag-and-drop items. + (do_ae_open_documents): Generate unibyte strings for filenames. + (mac_do_receive_drag) [TARGET_API_MAC_CARBON]: Likewise. + Reject only non-filename items. Set event modifiers, and return value. + +2004-12-28 Dan Nicolaescu + + * coding.c (decode_coding): Fix previous change. + +2004-12-28 Richard M. Stallman + + * xdisp.c (back_to_previous_visible_line_start): + Don't call handle_display_prop. + +2004-12-28 Dan Nicolaescu + + * coding.c (decode_coding_XXX, decode_composition_emacs_mule) + (decode_coding_emacs_mule, encode_coding_emacs_mule) + (decode_coding_iso2022, encode_designation_at_bol) + (encode_coding_iso2022, decode_coding_sjis_big5, decode_eol) + (decode_coding): Constify arguments and local vars. + +2004-12-27 Jan Dj,Ad(Brv + + * xmenu.c (popup_get_selection): Only pop down dialogs + on C-g and Escape. + (popup_get_selection): Remove parameter down_on_keypress. + (create_and_show_popup_menu, create_and_show_dialog): + Remove parameter down_on_keypress to popup_get_selection. + +2004-12-27 YAMAMOTO Mitsuharu + + * dispextern.h: Change HAVE_CARBON to MAC_OS. + (struct glyph_string): Likewise. + + * emacs.c (main) [MAC_OS8]: Call mac_term_init instead of + mac_initialize. + + * fileio.c (Fnext_read_file_uses_dialog_p, Fread_file_name): + Change TARGET_API_MAC_CARBON to HAVE_CARBON. + + * fns.c (vector): Change MAC_OSX to MAC_OS. + + * frame.c (x_set_frame_parameters, x_report_frame_params) + (x_set_fullscreen): Remove #ifndef HAVE_CARBON. + (x_set_border_width, Vdefault_frame_scroll_bars): + Change HAVE_CARBON to MAC_OS. + + * image.c [MAC_OS]: Include sys/stat.h. + [MAC_OS && !MAC_OSX]: Include sys/param.h, ImageCompression.h, and + QuickTimeComponents.h. + + * mac.c [!MAC_OSX] (mac_wait_next_event): Add extern. + [!MAC_OSX] (select): Use mac_wait_next_event. + [!MAC_OSX] (run_mac_command): Change EXEC_SUFFIXES to Vexec_suffixes. + [!MAC_OSX] (select, run_mac_command): Change `#ifdef + TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'. + (mac_clear_font_name_table): Add extern. + (Fmac_clear_font_name_table): New defun. + (syms_of_mac): Defsubr it. + [MAC_OSX] (SELECT_POLLING_PERIOD_USEC): New define. + [MAC_OSX] (select_and_poll_event): New function. + [MAC_OSX] (sys_select): Use it. + [MAC_OSX && SELECT_USE_CFSOCKET] (socket_callback): New function. + [MAC_OSX && SELECT_USE_CFSOCKET] + (SELECT_TIMEOUT_THRESHOLD_RUNLOOP, EVENT_CLASS_SOCK): New defines. + [MAC_OSX] (sys_select) [SELECT_USE_CFSOCKET]: Use CFSocket and + RunLoop for simultaneously monitoring two kinds of inputs, window + events and process outputs, without periodically polling. + + * macfns.c (mac_initialized): Remove extern. + (stricmp): Put in #if 0. All callers changed to use xstricmp in + xfaces.c. + (strnicmp): Decrement `n' at the end of each loop, not the beginning. + (check_mac): Use the term "Mac native windows" instead of "Mac OS". + (check_x_display_info, x_display_info_for_name): Sync with xfns.c. + (mac_get_rdb_resource): New function (from w32reg.c). + (x_get_string_resource): Use it. + (install_window_handler): Add extern. + (mac_window): New function. + (Fx_create_frame): Use it instead of make_mac_frame. + Set parameter for Qfullscreen. Call x_wm_set_size_hint. + (Fx_open_connection, Fx_close_connection): New defuns. + (syms_of_macfns): Defsubr them. + (x_create_tip_frame) [TARGET_API_MAC_CARBON]: + Add kWindowNoUpdatesAttribute to the window attribute. + (x_create_tip_frame) [!TARGET_API_MAC_CARBON]: Use NewCWindow. + (x_create_tip_frame): Don't call ShowWindow. + (Fx_show_tip): Call ShowWindow. + (Fx_file_dialog): Change `#ifdef TARGET_API_MAC_CARBON' to `#if + TARGET_API_MAC_CARBON'. + (mac_frame_parm_handlers): Set handlers for Qfullscreen. + (syms_of_macfns) [MAC_OSX]: Initialize mac_in_use to 0. + + * macgui.h [!MAC_OSX]: Don't include Controls.h. Include Windows.h. + (Window): Typedef to WindowPtr and move outside `#if + TARGET_API_MAC_CARBON'. + (XSizeHints): New struct. + + * macterm.c (x_update_begin, x_update_end) + [TARGET_API_MAC_CARBON]: Disable screen updates during update of a + frame. + (x_draw_glyph_string_background, x_draw_glyph_string_foreground) + [MAC_OS8]: Use XDrawImageString/XDrawImageString16. + (construct_mouse_click): Put in #if 0. + (x_check_fullscreen, x_check_fullscreen_move): Remove decls. + (x_scroll_bar_create, x_scroll_bar_handle_click): Change `#ifdef + TARGET_API_MAC_CARBON' to `#if TARGET_API_MAC_CARBON'. + (activate_scroll_bars, deactivate_scroll_bars) + [!TARGET_API_MAC_CARBON]: Use ActivateControl/DeactivateControl. + (x_make_frame_visible) [TARGET_API_MAC_CARBON]: Reposition window + if the position is neither user-specified nor program-specified. + (x_free_frame_resources): Free size_hints. + (x_wm_set_size_hint): Allocate size_hints if needed. Set size_hints. + (mac_clear_font_name_table): New function. + (mac_do_list_fonts): Initialize font_name_table if needed. + (x_list_fonts): Don't initialize font_name_table. Add BLOCK_INPUT + around mac_do_list_fonts. + (mac_unload_font): New function. + (x_load_font): Add BLOCK_INPUT around XLoadQueryFont. + (init_mac_drag_n_drop, mac_do_receive_drag): Enclose declarations + and definitions with #if TARGET_API_MAC_CARBON. + [USE_CARBON_EVENTS] (mac_handle_window_event): Add decl. + (install_window_handler): Add decl. + (do_window_update): Add BeginUpdate/EndUpdate for the tooltip + window. Use UpdateControls. Get the rectangle that should be + updated and restrict the target of expose_frame to it. + (do_grow_window): Set minimum height/width according to size_hints. + (do_grow_window) [TARGET_API_MAC_CARBON]: Use ResizeWindow. + (do_zoom_window): Don't use x_set_window_size. + [USE_CARBON_EVENTS] (mac_handle_window_event): New function. + (install_window_handler): New function. + [!USE_CARBON_EVENTS] (mouse_region): New variable. + [!USE_CARBON_EVENTS] (mac_wait_next_event): New function. + (XTread_socket) [USE_CARBON_EVENTS]: Move call to + GetEventDispatcherTarget inside BLOCK_INPUT. + (XTread_socket) [!USE_CARBON_EVENTS]: Use mac_wait_next_event. + Update mouse_region when mouse is moved. + (make_mac_frame): Remove. + (make_mac_terminal_frame): Put in #ifdef MAC_OS8. + Initialize mouse pointer shapes. Change values of f->left_pos and + f->top_pos. Don't use make_mac_frame. Use NewCWindow. + Don't call ShowWindow. + (mac_initialize_display_info) [MAC_OSX]: Create mac_id_name from + Vinvocation_name and Vsystem_name. + (mac_make_rdb): New function (from w32term.c). + (mac_term_init): Use it. Add BLOCK_INPUT. Error if display has + already been opened. Don't pass argument to + mac_initialize_display_info. Don't set dpyinfo->height/width. + Add entries to x_display_list and x_display_name_list. + (x_delete_display): New function. + (mac_initialize): Don't call mac_initialize_display_info. + (syms_of_macterm) [!MAC_OSX]: Don't call Fprovide. + + * macterm.h (check_mac): Add extern. + (struct mac_output): New member size_hints. + (FRAME_SIZE_HINTS): New macro. + (mac_unload_font): Add extern. + + * xdisp.c (expose_window, expose_frame): Remove kludges for Mac. + + * xfaces.c (clear_font_table) [MAC_OS]: Call mac_unload_font. + +2004-12-27 Richard M. Stallman + + * buffer.c (Fbuffer_disable_undo): Delete (move to simple.el). + (syms_of_buffer): Don't defsubr it. + + * process.c (list_processes_1): Set undo_list instead + of calling Fbuffer_disable_undo. + + * xdisp.c (single_display_spec_string_p): Rename from + single_display_prop_string_p. + (single_display_spec_intangible_p): Rename from + single_display_prop_intangible_p. + (handle_single_display_spec): Rename from handle_single_display_prop. + Rewritten to be easier to understand. + + Change in load-history format. Functions now get (defun . NAME), + and variables get just NAME. + + * data.c (Fdefalias): Use (defun . FN_NAME) in LOADHIST_ATTACH. + + * eval.c (Fdefun, Fdefmacro): Use (defun . FN_NAME) in LOADHIST_ATTACH. + (Fdefvaralias, Fdefvar, Fdefconst): Use just SYM in LOADHIST_ATTACH. + (Qdefvar): Var deleted. + (syms_of_eval): Don't initialze it. + + * lread.c (syms_of_lread) : Doc fix. + +2004-12-27 Jan Dj,Ad(Brv + + * xmenu.c (popup_get_selection): Pop down on C-g. + (set_frame_menubar): Install translations for Lucid/Motif/Lesstif that + pops down menu on C-g. + (xdialog_show): If dialog popped down and no button in the dialog was + pushed, call Fsignal to quit. + (xmenu_show): In no toolkit version, if menu returns NO_SELECT call + Fsignal to quit. + + * xfns.c (Fx_file_dialog): Motif/Lesstif version: Pop down on C-g. + + * gtkutil.c (xg_initialize): Install bindings for C-g so that + dialogs and menus pop down. + +2004-12-27 Kenichi Handa + + * coding.c (code_convert_region): Fix calculation of `ratio'. + +2004-12-25 Jan Dj,Ad(Brv + + * gtkutil.c (update_frame_tool_bar): Make the value of + tool-bar-button-margin control margins of images in tool bar. + + * alloc.c (check_depth): New variable. + (overrun_check_malloc, overrun_check_realloc): Only add + overhead and write check pattern if check_depth is 1 (to handle + recursive calls). Increase/decrease check_depth in entry/exit. + (overrun_check_free): Only check for overhead if check_depth is 1. + Increase/decrease check_depth in entry/exit. + +2004-12-23 Jan Dj,Ad(Brv + + * keyboard.c (input_available_signal): Call SIGNAL_THREAD_CHECK + before touching input_available_clear_time, to avoid accessing it + from multiple threads. + +2004-12-23 Jason Rumney + + * image.c (__WIN32__) [HAVE_NTGUI]: Define for correct behaviour + of JPEG library. + +2004-12-22 Richard M. Stallman + + * emacs.c (main): If batch mode, set Vundo_outer_limit to nil. + + * lisp.h (Vundo_outer_limit): Fix decl. + + * undo.c (Vundo_outer_limit): Replaces undo_outer_limit. + Uses changed. + (syms_of_undo): Initialize appropriately. + (truncate_undo_list): If it's nil, there's no limit. + +2004-12-22 Kenichi Handa + + * xselect.c (Fx_get_cut_buffer_internal): Return a unibyte string. + +2004-12-21 Richard M. Stallman + + * eval.c (unwind_to_catch): Clear immediate_quit. + + * xdisp.c (get_next_display_element): Display codes 8a0 and 8ad + specially as `\ ' and `\-'. + + * keyboard.c (kbd_buffer_store_event_hold): + In the code for while-no-input, handle immediate_quit. + + * alloc.c (Fgarbage_collect): Update call to truncate_undo_list. + Call that at the very start. + (undo_limit, undo_strong_limit, undo_outer_limit): Move to undo.c. + (syms_of_alloc): Don't define undo-limit, + undo-strong-limit and undo-outer-limit here. + + * undo.c (truncate_undo_list): Return void. + Take just one argument, the buffer. + Make it current, and inhibit recursive GC. + Access and update the undo list directly; return void. + Refer to the undo...limit variables directly. + Test undo_outer_limit only after counting the whole current command. + When it's exceeded, call the function in undo-outer-limit-function. + (undo_limit, undo_strong_limit, undo_outer_limit): From alloc.c. + (Vundo_outer_limit_function): New variable. + (syms_of_undo): Define undo-limit, undo-strong-limit + and undo-outer-limit here, and undo-outer-limit-function. + Doc fixes. + + * lisp.h (truncate_undo_list): Update decl. + +2004-12-21 Piet van Oostrum + + * fileio.c (Fread_file_name): Delete duplicates in + file-name-history when history_delete_duplicates is true. + +2004-12-20 YAMAMOTO Mitsuharu + + * macterm.c (mac_do_list_fonts): Fix memory leak. + +2004-12-20 Richard M. Stallman + + * regex.c (re_match_2_internal) : + Fix calls to UPDATE_SYNTAX_TABLE_FORWARD. + +2004-12-18 YAMAMOTO Mitsuharu + + * macterm.c (endif, x_font_name_to_mac_font_name): + Use maccentraleurroman instead of maccentraleuropean + (mac_c_string_match, mac_do_list_fonts): Speed up font search by + quickly finding a specific font without needing regexps. + +2004-12-15 Jan Dj,Ad(Brv + + * syssignal.h: Declare main_thread. + (SIGNAL_THREAD_CHECK): New macro. + + * keyboard.c (input_available_signal): Move thread checking code + to macro SIGNAL_THREAD_CHECK and call that macro. + (interrupt_signal): Call SIGNAL_THREAD_CHECK. + + * alloc.c (uninterrupt_malloc): Move main_thread to emacs.c. + + * emacs.c: Define main_thread. + (main): Initialize main_thread. + (handle_USR1_signal, handle_USR2_signal, fatal_error_signal) + (memory_warning_signal): Call SIGNAL_THREAD_CHECK. + + * floatfns.c (float_error): Call SIGNAL_THREAD_CHECK. + + * dispnew.c (window_change_signal): Call SIGNAL_THREAD_CHECK. + + * sysdep.c (select_alarm): Call SIGNAL_THREAD_CHECK. + + * process.c (send_process_trap, sigchld_handler): + Call SIGNAL_THREAD_CHECK. + + * data.c (arith_error): Call SIGNAL_THREAD_CHECK. + + * atimer.c (alarm_signal_handler): Call SIGNAL_THREAD_CHECK. + + * xterm.c (xg_scroll_callback): Update XG_LAST_SB_DATA before + returning when xg_ignore_gtk_scrollbar is true. + +2004-12-14 Kim F. Storm + + * keyboard.c (read_char): Save and restore echo_string when + handling input method. + +2004-12-13 Richard M. Stallman + + * eval.c (syms_of_eval) : Doc fix. + + * keyboard.c (Vthrow_on_input): New variable. + (syms_of_keyboard): Defvar and initialize it. + (kbd_buffer_store_event_hold): Handle Vthrow_on_input. + + * lisp.h (QUIT): Check for Vthrow_on_input. + (Vthrow_on_input): Declare it. + +2004-12-13 Kim F. Storm + + * xdisp.c (set_iterator_to_next): Reset stop_charpos after display + vector. + +2004-12-12 Richard M. Stallman + + * indent.c (Fvertical_motion): Call move_it_by_lines even if LINES = 0. + + * minibuf.c (Fall_completions): Add var `zero' and use it in loop. + (Ftry_completion): Really use outer `zero'; eliminate inner one. + +2004-12-12 Kenichi Handa + + * term.c (encode_terminal_code): Fix previous change. + +2004-12-11 Stefan Monnier + + * keyboard.c (handle_async_input): Remove pthread mutex handling. + (input_available_signal): Move pthread thingy to !SYNC_INPUT branch. + + * syntax.c (Fforward_word): Avoid non-idempotent side-effects + in macro arguments. + + * minibuf.c (Ftry_completion, Fall_completions): Don't use + XFASTINT blindly. + + * emacs.c (main, Fdump_emacs): Don't touch malloc hooks if SYNC_INPUT. + +2004-12-11 Jan Dj,Ad(Brv + + * w32term.c (x_calc_absolute_position): Remove calculation of + difference between inner and outer window. Don't subtract difference + for left and top calculations. + + * xterm.c (x_calc_absolute_position): Don't subtract outer_pixel_diff + for left and top calculations. Remove call to x_real_positions. + [Bug report by Drew Adams in November.] + (x_check_expected_move): Do not set change_gravity to 1 when calling + x_set_offset. + +2004-12-08 Richard M. Stallman + + * xdisp.c (get_next_display_element): Use `escape-glyph' for + control chars and escaped octal codes. + (Qescape_glyph): New variable. + (syms_of_xdisp): Initialize it. + (escape_glyph_face): New variable. + (redisplay_window): Initialize it. + +2004-12-07 Paul Eggert + + * image.c (our_fill_input_buffer, jpeg_load, CHECK_LIB_AVAILABLE) + (init_image): Use 1 rather than TRUE. TRUE's not always defined. + +2004-12-07 Jan Dj,Ad(Brv + + * emacs.c (Fdump_emacs): Add ! defined (SYSTEM_MALLOC) around + reset_malloc_hooks. + + * keyboard.c (handle_async_input, input_available_signal): + Add ! defined (SYSTEM_MALLOC) around thread code. + + * alloc.c: Add comment about the reason for (UN)BLOCK_INPUT_ALLOC. + +2004-12-07 Stefan Monnier + + * eval.c (init_eval_once): Increase max_specpdl_size to 1000. + + * config.in: Regenerate. + +2004-12-07 Jan Dj,Ad(Brv + + * xmenu.c (Fx_popup_menu): Correct documentation about position. + (xmenu_show): Do not call XTranslateCoordinates. Adjust position + if not given by a mouse click to correspond with x-popup-menu + documentation. + + * config.in: Regenerate. + + * gtkutil.c: Include signal.h and syssignal.h. + (xg_get_file_name): Block and unblock __SIGRTMIN if defined. + + * alloc.c: If HAVE_GTK_AND_PTHREAD, include pthread.h, + new variables main_thread and alloc_mutex, + define (UN)BLOCK_INPUT_ALLOC to use alloc_mutex to protect + emacs_blocked_* calls and only do (UN)BLOCK_INPUT in the main thread. + If not HAVE_GTK_AND_PTHREAD, (UN)BLOCK_INPUT_ALLOC is the same + as (UN)BLOCK_INPUT. + (emacs_blocked_free, emacs_blocked_malloc) + (emacs_blocked_realloc): Use (UN)BLOCK_INPUT_ALLOC. + (uninterrupt_malloc): Initialize main_thread and alloc_mutex. + (reset_malloc_hooks): New function. + + * lisp.h: Declare reset_malloc_hooks. + + * emacs.c (Fdump_emacs): Call reset_malloc_hooks. + + * keyboard.c: Conditionally include pthread.h. + (handle_async_input, input_available_signalt): If not in the main + thread, block signal, send signal to main thread and return. + + * gtkutil.c (xg_get_file_with_chooser): Handle local files only. + Set current folder in file chooser if default_filename is a directory. + +2004-12-05 Stefan Monnier + + * regex.c (GET_UNSIGNED_NUMBER): Signal an error when reaching the end. + Remove redundant correctness checks. + (regex_compile): Fix up error codes for \{..\} expressions. + +2004-12-05 Richard M. Stallman + + * regex.c (regex_compile): Fix end-of-pattern case for space. + +2004-12-03 YAMAMOTO Mitsuharu + + * macterm.h (cfstring_create_with_utf8_cstring): Add prototype. + * mac.c (cfstring_create_with_utf8_cstring): Add to prevent + crashes with invalid characters. + * macmenu.c (add_menu_item): Use it. + * image.c (image_load_quartz2d): Likewise. + * macfns.c (x_set_name, x_set_title): Likewise. + (Fx_file_dialog): Likewise. Use constant CFRefs instead of + creating them each time for labels. + +2004-12-02 Richard M. Stallman + + * config.in (RE_TRANSLATE_P): If make_number is not a macro, + don't use it here. + + * eval.c (Fcalled_interactively_p): Don't check INTERACTIVE. + (interactive_p): Skip Scalled_interactively_p frames + like Sinteractive_p frames. + (unwind_to_catch): Clear handling_signal. + + * data.c (Fmake_variable_buffer_local): Doc fix. + (Fmake_local_variable): Doc fix. + + * insdel.c (insert_from_string_before_markers) + (insert_from_string): Don't modify buffer on empty insertion. + + * window.c (Fget_lru_window, Fget_largest_window): Doc fixes. + +2004-12-01 YAMAMOTO Mitsuharu + + * macmenu.c (add_menu_item): Fallback on MacRoman if encoding + menu text as UTF8 fails. + +2004-12-01 Kim F. Storm + + * alloc.c: Add commentary for last change. + (XMALLOC_PUT_SIZE, XMALLOC_GET_SIZE): New macros to handle + sizeof(size_t) != 4. + (overrun_check_malloc, overrun_check_realloc, overrun_check_free): + Use them. Also clear header and trailer of freed memory. + (GC_STRING_OVERRUN_COOKIE_SIZE): Rename from GC_STRING_EXTRA. + (string_overrun_cookie): Rename from string_overrun_pattern. + (GC_STRING_EXTRA): Define from GC_STRING_OVERRUN_COOKIE_SIZE. + +2004-12-01 Andreas Schwab + + * lisp.h: Declare string_to_multibyte. + +2004-12-01 Kenichi Handa + + * w32console.c (w32con_write_glyphs): Decide coding here. + Adjusted for the change of encode_terminal_code. + + * term.c (encode_terminal_code): Don't make it "static". + +2004-11-30 Kenichi Handa + + * term.c (encode_terminal_buf, encode_terminal_bufsize): New variables. + (encode_terminal_code): Argument changed. Encode all + characters at once, and return a pointer to the result of encoding. + (write_glyphs): Decide coding here. Adjusted for the above change. + (insert_glyphs): Likewise. + (term_init): Initialize encode_terminal_bufsize to 0. + + * coding.c (Vcode_conversion_workbuf_name): New variable. + (syms_of_coding): Initialize and staticpro it. + (set_conversion_work_buffer): New function. + (run_pre_post_conversion_on_str): Use it. + (run_pre_write_conversin_on_c_str): New function. + + * coding.h (run_pre_write_conversin_on_c_str): Extern it. + +2004-11-30 YAMAMOTO Mitsuharu + + * keyboard.c: Don't undef SIGIO + * s/darwin.h (NO_SOCK_SIGIO): Define NO_SOCK_SIGIO on carbon + * Makefile.in (mac.o): Depend on blockinput.h and atimer.h. + (macfns.o): Don't depend on ccl.h. + * macfns.c (mac_frame_parm_handlers): Set handlers for + Qleft_fringe and Qright_fringe. + * macterm.c (mac_fill_rectangle_to_pixmap) + (mac_draw_rectangle_to_pixmap, mac_copy_area_to_pixmap) + (mac_copy_area_with_mask_to_pixmap, x_draw_image_foreground_1): + Put in #if 0. + (mac_scroll_area) [TARGET_API_MAC_CARBON]: Use ScrollWindowRect. + (x_flush) [TARGET_API_MAC_CARBON]: Don't traverse frames. + (XFlush) [TARGET_API_MAC_CARBON]: Define to an empty replacement. + (x_draw_glyph_string_background, x_draw_glyph_string_foreground) + [!MAC_OS8]: Added ifdef'd out code for os8. Don't use + XDrawImageString. Always draw background and foreground separately. + (x_draw_image_foreground): Use clipping instead of computing the + intersection rectangle. + (x_draw_image_glyph_string): Don't draw an image with mask to a + pixmap. + (x_redisplay_interface): Set flush_display_optional member to 0. + (XTread_socket): Correctly reset the TEConverter + object. + +2004-11-30 Kim F. Storm + + * lisp.h: New defines to enable buffer overrun checking. + (GC_CHECK_STRING_OVERRUN, GC_CHECK_STRING_FREE_LIST) + (XMALLOC_OVERRUN_CHECK, GC_CHECK_CONS_LIST): Add. + + * alloc.c: Add more checks for buffer overruns. + (XMALLOC_OVERRUN_CHECK_SIZE, xmalloc_overrun_check_header) + xmalloc_overrun_check_trailer, overrun_check_malloc) + overrun_check_realloc, overrun_check_free): Add. + (GC_STRING_EXTRA, string_overrun_pattern): Add. + (check_sblock, allocate_string_data, compact_small_strings): + Set and check string_overrun_pattern if GC_CHECK_STRING_OVERRUN. + (check_cons_list): Condition on GC_CHECK_CONS_LIST. + (check_string_free_list): Add. + (allocate_string, sweep_strings): Call check_string_free_list. + + * emacs.c (malloc_initialize_hook): Don't free malloc_state_ptr if + XMALLOC_OVERRUN_CHECK to avoid crash during load. + +2004-11-29 Kim F. Storm + + * fns.c (concat): Use SAFE_ALLOCA. + +2004-11-29 Stefan Monnier + + * sysdep.c (emacs_write): Don't use QUIT. + +2004-11-29 Kenichi Handa + + * buffer.c (init_buffer): Set current_buffer->directory to a + multibyte string made by string_to_multibyte. + + * emacs.c (init_cmdargs): Set unibyte strings in Vcommand_line_args. + +2004-11-27 Andreas Schwab + + * alloc.c (mark_stack): Call GC_MARK_SECONDARY_STACK if defined. + + * s/gnu-linux.h: Enable no-op gcpros on ia64. + (GC_MARK_SECONDARY_STACK) [__ia64__]: Define. + + * filelock.c (lock_file_1): Call get_boot_time early. + Increase buffer size. + +2004-11-27 Eli Zaretskii + + * lisp.h (DECL_ALIGN): Define non-trivially only if NO_DECL_ALIGN + is not defined. + +2004-11-27 Kim F. Storm + + * search.c (syms_of_search) : Move 'doc:' + marker out of doc string. + +2004-11-26 Stefan Monnier + + * s/darwin.h (POSIX_SIGNALS): Undo the removal of 2002-08-25, + which was not mentioned in the log. + +2004-11-26 Kim F. Storm + + * fringe.c (update_window_fringes): Prefer truncation bitmaps over + angle bitmaps at top/bottom line. + + * xdisp.c: Undo recent changes for restoring saved_face_id. Instead, + set it when it->method is set to next_element_from_display_vector. + (setup_for_ellipsis): Add LEN argument. Callers changed. + Set it->saved_face_id. + (get_next_display_element): Use loop instead of recursion. + Set it->saved_face_id. Combine duplicate code for ctr chars. + (next_element_from_display_vector): Do not set it->saved_face_id. + (next_element_from_ellipsis): Use setup_for_ellipsis. + +2004-11-26 Eli Zaretskii + + * eval.c (Fdefvar): Declare pdl from last change as `volatile' to + prevent compiler warnings. + +2004-11-25 Stefan Monnier + + * keyboard.c (command_loop_1): Print a message describing the key + the user just pressed when this key has no binding. + + * sysdep.c (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set. + (emacs_open, emacs_read, emacs_write): Check QUIT when interrupted. + + * lread.c (readchar): Check QUIT when `getc' is interrupted. + +2004-11-24 Richard M. Stallman + + * coding.c (run_pre_post_conversion_on_str): Bind Qinhibit_read_only. + + * buffer.c (syms_of_buffer) : Doc fix. + +2004-11-24 Kim F. Storm + + * xdisp.c (move_it_in_display_line_to, display_line): + Restore saved_face_id also when truncate-lines or hscrolled. + +2004-11-23 Jan Dj,Ad(Brv + + * gtkutil.c (xg_get_file_name): Rename use-old-gtk-file-dialog to + x-use-old-gtk-file-dialog. + + * xfns.c: Define x_use_old_gtk_file_dialog. + (syms_of_xfns): Rename use-old-gtk-file-dialog to x-... Move it + outside ifdef USE_GTK. + +2004-11-23 Stefan Monnier + + * coding.h (ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM): + Don't use XFASTINT blindly. + + * config.in (RE_TRANSLATE_P): Don't use XFASTINT blindly. + + * indent.c (skip_invisible): Avoid non-idempotent side-effects + in macro arguments. + + * keymap.c (Flookup_key): Check INTEGERP before XINT. + + * lread.c (oblookup): Don't use XFASTINT blindly. + + * window.c (Fset_window_scroll_bars): Don't use XINT if it isn't int. + (decode_next_window_args, window_loop): Don't use XFASTINT blindly. + +2004-11-23 Kim F. Storm + + * dispextern.h (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P) + (MATRIX_ROW_STARTS_IN_MIDDLE_OF_CHAR_P): Not if dpvec_index is zero. + + * xfaces.c (lookup_named_face): Add signal_p arg. Return -1 if + signal_p is zero and face name is unknown. + (Fx_list_fonts): Don't signal error in lookup_named_face. + (Fface_font): Signal error in lookup_named_face. + (ascii_face_of_lisp_face): Likewise. + + * dispextern.h (lookup_named_face): Fix prototype. + + * xdisp.c (handle_single_display_prop): Don't signal error in + lookup_named_face for unknown fringe face name. + (highlight_trailing_whitespace): Don't signal error in + lookup_named_face if trailing-whitespace face unknown. + (calc_line_height_property): Don't signal error in + lookup_named_face if specified face name is unknown. + + * fringe.c (update_window_fringes): Show top row indicator if + window has header-line. Don't show arrow at bob and eob + if the boundary indicators are not used. + (Fset_fringe_bitmap_face): Signal error in lookup_named_face. + + * window.c (set_window_buffer): Clear display_error_modiff. + +2004-11-22 Kim F. Storm + + * fringe.c (update_window_fringes): Provide sensible fall-back + value for non-nil indicate-buffer-boundaries setting. + +2004-11-22 Markus Rost + + * minibuf.c (Fminibuffer_complete_and_exit): Fix previous change. + +2004-11-22 Stefan Monnier + + * eval.c (Fdefvar): Warn when var is let-bound but globally void. + +2004-11-21 Kim F. Storm + + * xdisp.c (erase_phys_cursor): Clear hollow cursor inside TEXT_AREA. + + * xterm.c (x_clip_to_row): Add area arg. Callers changed. + (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA. + + * w32term.c (w32_clip_to_row): Add area arg. Callers changed. + (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA. + + * macterm.c (x_clip_to_row): Add area arg. Callers changed. + (x_draw_hollow_cursor, x_draw_bar_cursor): Clip to TEXT_AREA. + + * xdisp.c (move_it_in_display_line_to, display_line): + Restore saved_face_id if overflow-newline-into-fringe is enabled and + line is continued before or in middle of element from display vector. + + * indent.c (Fvertical_motion): Fix last change. Use another + method to detect if iterator moved too far ahead after reseat. + + * xdisp.c (IT_EXPAND_MATRIX_WIDTH): New macro. Do not + expand matrix width for overflow in zero-width area. + (append_glyph, append_composite_glyph, produce_image_glyph) + (append_stretch_glyph): Use it to avoid loop in redisplay. + (note_mode_line_or_margin_highlight): Don't let help-echo from + string override help-echo from image map. + +2004-11-20 Luc Teirlinck + + * fns.c (Fyes_or_no_p): Call Fread_from_minibuffer with extra argument. + * callint.c (Fcall_interactively): Ditto. + +2004-11-20 Stefan Monnier + + * minibuf.c (Fminibuffer_complete_and_exit): + Fixup the case of the completed value, for case-indep completion. + +2004-11-20 Richard M. Stallman + + * lisp.h (Fread_from_minibuffer): Add arg in decl. + + * minibuf.c (read_minibuf): New arg KEEP_ALL. Callers changed. + (Fread_from_minibuffer): New arg KEEP_ALL. Callers changed. + + * search.c (Vsearch_spaces_regexp): + Rename from Vsearch_whitespace_regexp. All uses changed. + +2004-11-20 Thien-Thi Nguyen + + * eval.c (init_eval_once): Increase `max_specpdl_size' to 650. + +2004-11-19 Richard M. Stallman + + * search.c (Vsearch_whitespace_regexp): New variable. + (syms_of_search): Defvar it. + (compile_pattern_1): Call re_set_whitespace_regexp with it. + (search_buffer): No regexp is trivial if Vsearch_whitespace_regexp + is non-nil. + (struct regexp_cache): New element whitespace_regexp. + (syms_of_search): Initialize whitespace_regexp elements. + (compile_pattern): Compare whitespace_regexp elements. + (compile_pattern_1): Set whitespace_regexp elements. + + * regex.c (regex_compile): Substitute whitespace_regexp + for spaces, if it is nonzero. + (whitespace_regexp): New variable. + (re_set_whitespace_regexp): New function. + +2004-11-19 Kim F. Storm + + * indent.c (Fvertical_motion): Fix last change. + +2004-11-18 Kim F. Storm + + * indent.c (Fvertical_motion): Undo 2004-11-16 change. + Instead, move back again if reseating moves too far ahead. + +2004-11-17 Luc Teirlinck + + * xdisp.c (message3): Call clear_message. + +2004-11-17 Kim F. Storm + + * xdisp.c (erase_phys_cursor): Adjust cursor row visible height. + +2004-11-16 Jan Dj,Ad(Brv + + * gtkutil.c (xg_get_file_name): Typo in HAVE_GTK_FILE_SELECTION_NEW. + + * xmenu.c (x_menu_in_use): Remove. + (x_menu_set_in_use): Also set popup_activated_flag. + + * xfns.c (Fx_file_dialog): Call popup_activated instead of + x_menu_in_use. Call x_menu_set_in_use in Motif version also. + + * xterm.h (x_menu_in_use): Remove. + +2004-11-16 Richard M. Stallman + + * keymap.c (Fmap_keymap): New arg SORT-FIRST. + Use map-keymap-internal to implement that. + + * indent.c (Fvertical_motion): In batch mode, use vmotion directly. + +2004-11-16 Stefan Monnier + + * xdisp.c (get_glyph_string_clip_rect, init_glyph_string): Check it's + a window before using XWINDOW. + + * window.c (make_window, Fselect_window, make_dummy_parent) + (save_window_save): + * frame.c (make_frame): + * fns.c (concat): Avoid side-effects inside XSETFASTINT's arguments. + + * lisp.h (NILP): Use EQ rather than XFASTINT. + +2004-11-16 Kim F. Storm + + * fringe.c (Fdefine_fringe_bitmap): Always set 'h'. Simplify. + + * indent.c (Fvertical_motion): Fix last change. Only reseat when + moving backwards. + +2004-11-16 Luc Teirlinck + + * dispextern.h: Extern reseat_at_previous_visible_line_start. + +2004-11-16 Kenichi Handa + + * xdisp.c (display_mode_element): Fix previous change (calculate + end position of substring to display correctly). + +2004-11-16 Kim F. Storm + + * keyboard.c (Fposn_at_point): Remove extra */ after doc string. + Reported by Andrew M. Scott. + +2004-11-15 Kim F. Storm + + * fns.c (Fsafe_plist_get): New defun. + (syms_of_fns): Defsubr it. + + * lisp.h (Fsafe_plist_get): Add EXFUN. + + * xdisp.c (store_mode_line_string, produce_stretch_glyph): + Use Fsafe_plist_get. + (note_mode_line_or_margin_highlight, note_mouse_highlight): + Fix image map element parsing. Use Fsafe_plist_get. + +2004-11-15 Richard M. Stallman + + * xdisp.c (get_next_display_element): Fix previous change. + +2004-11-14 Jan Dj,Ad(Brv + + * window.c (shrink_windows): Handle special case of one window left + when trying to shrink the final reminder. Grow windows if + total_removed is less than total_shrink. + + * xmenu.c (pop_down_menu): Remove global variable current_menu, + extract pointer from arg with XSAVE_VALUE. + (create_and_show_popup_menu, create_and_show_dialog, xmenu_show): + Construct arg to record_unwind_protect with make_save_value. + +2004-11-13 Richard M. Stallman + + * xdisp.c (reseat_at_previous_visible_line_start): No longer static. + (get_next_display_element): Fix previous change to apply only to \n. + + * indent.c (Fvertical_motion): Scan to PT from start of line to + make iterator consistent. + + * minibuf.c (syms_of_minibuf) : Doc fix. + +2004-11-14 Jan Dj,Ad(Brv + + * gtkutil.c (pop_down_file_dialog): Add BLOCK_INPUT. + + * xfns.c (Fx_file_dialog): Call x_menu_in_use and x_menu_set_in_use. + Record unwind with clean_up_file_dialog. + + * xterm.h (x_menu_in_use, x_menu_set_in_use, x_menu_wait_for_event): + Declare. + + * xmenu.c (x_menu_in_use, x_menu_set_in_use): New functions. + +2004-11-13 Jan Dj,Ad(Brv + + * gtkutil.c (xg_file_sel_ok, xg_file_sel_cancel) + (xg_file_sel_destroy): Remove. + (xg_file_response_cb, pop_down_file_dialog) + (xg_get_file_name_from_chooser, xg_get_file_name_from_selector): + New functions. + (xg_get_file_with_chooser, xg_get_file_with_selection): + Take new arg func, set it to xg_get_file_name_from_chooser/selector. + Move common code to xg_get_file_name. Return widget created. + (xg_get_file_name): Set name, transient for, modal and destroy + with parent here. Connect response signal to xg_file_response_cb, + connect delete-event to gtk_true. Record pop_down_file_dialog + for unwind. Do event loop and call x_menu_wait_for_event in loop. + (xg_create_widget): Make dialogs modal. + + * xmenu.c (unuse_menu_items, pop_down_menu): Arg is of type + Lisp_Object. + (popup_get_selection): Move unwind protect ... + (create_and_show_popup_menu, create_and_show_dialog): ... to here. + Move destroy of widget to pop_down_menu. + (popup_widget_loop): Move unwind protect ... + (create_and_show_popup_menu, create_and_show_dialog): ... to here. + Move destroy of widget to pop_down_menu. + (pop_down_menu): BLOCK_INPUT and destroy widget/window. + (xmenu_show): Record unwind pop_down_menu. Move XMenuDestroy, + x_mouse_leave and grabbed = 0 to pop_down_menu. + +2004-11-13 Kim F. Storm + + * xdisp.c (make_cursor_line_fully_visible_p): New variable. + (syms_of_xdisp): DEFVAR_BOOL it. + (make_cursor_line_fully_visible, try_cursor_movement) + (try_window_id): Use it. + +2004-11-12 Kim F. Storm + + * dispextern.h (struct glyph_row): New member extra_line_spacing. + (struct it): New member max_extra_line_spacing. + (MR_PARTIALLY_VISIBLE, MR_PARTIALLY_VISIBLE_AT_TOP) + (MR_PARTIALLY_VISIBLE_AT_BOTTOM): New helper macros. + (MATRIX_ROW_PARTIALLY_VISIBLE_P): Fix to return false if invisible + part of last line is only extra line spacing (so the text on the + line is fully visible). Use helper macros. + Add W arg (to use them). All callers changed. + (MATRIX_ROW_PARTIALLY_VISIBLE_AT_TOP_P) + (MATRIX_ROW_PARTIALLY_VISIBLE_AT_BOTTOM_P): Use helper macros. + + * window.c (window_scroll_pixel_based, Frecenter): + Use move_it_vertically_backward directly. + (Frecenter): Fix calculation of new start pos for negative arg. + Before, the new start pos was sometimes chosen too far back, so + the last line became only partially visible, and thus would be + either only semi-visible or automatically scrolled to the middle + of the window by redisplay. + + * xdisp.c (init_iterator): Clear it.max_extra_line_spacing. + (move_it_vertically_backward): Don't recure to move further back. + (move_it_vertically): Remove superfluous condition. + (move_it_by_lines): Clear last_height when moved 0 lines. + (resize_mini_window): Use it.max_extra_line_spacing. + (display_tool_bar_line): Clear row->extra_line_spacing. + (try_scrolling): Use move_it_vertically_backward directly. + (redisplay_window): Likewise. + (compute_line_metrics): Set row->extra_line_spacing. + (display_line, display_string): Likewise. + (x_produce_glyphs): Update it->max_extra_line_spacing. + + * xmenu.c (pop_down_menu): Return nil. + +2004-11-12 Jan Dj,Ad(Brv + + * xmenu.c (x_menu_wait_for_event): New function. + (popup_get_selection, popup_widget_loop): Call x_menu_wait_for_event + to handle timers. + (popup_widget_loop): Add argument do_timers. + (create_and_show_popup_menu, create_and_show_dialog): Pass 1 for + do_timers to popup_widget_loop. + (xmenu_show): Call XMenuActivateSetWaitFunction so that + x_menu_wait_for_event is called by XMenuActivate. + (create_and_show_popup_menu): Pass 1 for do_timers to + popup_get_selection. + (pop_down_menu): New function. + (popup_get_selection, popup_widget_loop): Unwind protect to + pop_down_menu. + (popup_widget_loop): Add argument widget. + (create_and_show_popup_menu, create_and_show_dialog): Pass new + argument widget to popup_widget_loop. + +2004-11-10 Stefan Monnier + + * keymap.c (Fkeymap_prompt): Accept symbol keymaps. + +2004-11-09 Kim F. Storm + + * xselect.c: Include and (for getpid). + Fix various comments referring to XEvents instead of input events. + (x_queue_event): Fix format strings. + (x_stop_queuing_selection_requests): Likewise. + + * xdisp.c (produce_image_glyph): Remove unused variable 'face_ascent'. + (pint2hrstr): Add extra braces to silence compiler. + + * print.c (print_object): Fix format string. + + * lread.c (read1): Fix next_char matching. + + * lisp.h (Fdelete): Add EXFUN. + (replace_range_2): Add prototype. + + * keyboard.c (read_avail_input): Remove unused variable 'discard'. + + * intervals.h (NULL_INTERVAL_P): Add separate version when + ENABLE_CHECKING is not defined to silence compiler. + (compare_string_intervals): Add prototype. + + * fringe.c (destroy_fringe_bitmap): Fix return type. + (Ffringe_bitmaps_at_pos): Remove unused var 'old_buffer'. + + * emacs.c (Fdump_emacs): Fix format string. + + * doc.c: Include . + (Fsubstitute_command_keys): Remove unused variable 'firstkey'. + + * data.c (store_symval_forwarding): Remove unused variables. + + * callint.c (Fcall_interactively): Remove unused variable 'funcar'. + +2004-11-09 Jan Dj,Ad(Brv + + * Makefile.in (stamp-oldxmenu): If HAVE_GTK, don't add dependencies + to ${OLDXMENU}. + +2004-11-09 Kim F. Storm + + * process.c (Fmake_network_process): Remove kludge for interrupted + connects on BSD. If connect is interrupted, just close socket and + start over rather than sleeping and retry with same socket. + +2004-11-09 Jan Dj,Ad(Brv + + * .cvsignore: Add buildobj.lst. + + * doc.c: New variable Vbuild_files. + (Fsnarf_documentation): If Vbuild_files is nil, populate it with + file names from buildobj.lst. Only attach docstrings from files + that are in Vbuild_files. + (syms_of_doc): Defvar Vbuild_files. + + * Makefile.in (SOME_MACHINE_OBJECTS): Add fringe.o, image.o + and w32*.o. + (temacs${EXEEXT}): Generate buildobj.lst when temacs is linked. + (mostlyclean): Rm buildobj.lst. + + * makefile.w32-in ($(TEMACS)): Generate buildobj.lst when temacs + is linked. + +2004-11-09 Kim F. Storm + + * fringe.c (update_window_fringes): Update fringe bitmaps if + cur and row ends_at_zv_p differs. If bitmaps of a row is updated, + also update previous row to get rid of misc. artifacts. + +2004-11-08 Kim F. Storm + + * xdisp.c (fast_find_position): Fix start pos if header line present. + (note_mouse_highlight): Clear mouse face if we move out of text area. + +2004-11-08 Eli Zaretskii + + * editfns.c: Move #include "systime.h" before . + Don't include explicitly. + Include unconditionally, not just on MacOS. + +2004-11-08 Kenichi Handa + + * fontset.c (fontset_pattern_regexp): Cancel my previous change; + don't pay attention to '\' before '*'. + (fontset_pattern_regexp): Change the meaning of the second arg. + (Fnew_fontset): Call fs_query_fontset, not Fquery_fontset. + (check_fontset_name): Try NAME as literal at first, and if it + failes, try NAME as pattern. + +2004-11-07 Jan Dj,Ad(Brv + + * emacs.c (Fdump_emacs): Only output warning on GNU/Linux. + +2004-11-07 Andreas Schwab + + * lisp.h (Fmsdos_downcase_filename): Declare. + * dired.c (Fmsdos_downcase_filename): Don't declare here. + * fileio.c: Likewise. + +2004-11-07 Jan Dj,Ad(Brv + + * dosfns.c (Fdos_memget, Fdos_memput): Use integer variable offs in + comparisons with integers instead of Lisp_Object address. + (Fmsdos_set_keyboard): Declare argument allkeys. + + * msdos.c (IT_set_frame_parameters): Use EQ, not ==, for Lisp_Object:s. + + * dired.c (Fmsdos_downcase_filename): Declare extern on MSDOS to avoid + int/Lisp_Object mixup. + + * fileio.c: Ditto. + +2004-11-06 Steven Tamm + + * editfns.c: Need to include sys/time.h before resource.h on darwin. + +2004-11-06 Richard M. Stallman + + * callint.c (Fcall_interactively): Avoid reusing EVENT for other data. + + * xfaces.c (merge_named_face): GCPRO the face_name in the + named_merge_point struct that we make. + (merge_face_heights): Eliminate GCPRO arg. All callers changed. + + * keyboard.c (command_loop_1): Change Vtransient_mark_mode + before deciding whether to inactivate mark. + +2004-11-06 Lars Brinkhoff + + * config.in: Regenerate (add HAVE_GETRUSAGE). + * editfns.c (Fget_internal_run_time): New function. + (syms_of_data): Defsubr it. + * fns.c (sxhash): As far as possible, merge calculation of + hash code for symbols and strings. + +2004-11-06 Eli Zaretskii + + * frame.c (syms_of_frame): Fix the example in the doc string. + +2004-11-06 Jan Dj,Ad(Brv + + * eval.c (Feval): Remove check for INPUT_BLOCKED_P. + + * xmenu.c (popup_get_selection, create_and_show_popup_menu) + (create_and_show_dialog): Revert change from 2004-10-31. + +2004-11-05 Luc Teirlinck + + * macros.c (syms_of_macros) : Doc fix. + +2004-11-05 Kim F. Storm + + * print.c (print_object): Print Lisp_Misc_Save_Value objects. + + * fileio.c (Ffile_modes): Doc fix. + (auto_save_1): Check for Ffile_modes nil value. + +2004-11-05 Kim F. Storm + + * xselect.c (struct selection_event_queue, selection_queue) + (x_queue_selection_requests, x_queue_event) + (x_start_queuing_selection_requests) + (x_stop_queuing_selection_requests): Add new queue for selection + input events to replace previous XEvent queue in xterm.c. + (queue_selection_requests_unwind): Adapt to new queue. + (x_reply_selection_request): Adapt to new queue. + Unexpect wait_object in case of x errors (memory leak). + (x_handle_selection_request, x_handle_selection_clear): Make static. + (x_handle_selection_event): New function. May queue selection events. + (wait_for_property_change_unwind): Use save_value instead of cons. + Clear property_change_reply_object. + (wait_for_property_change): Abort if already waiting. + Use save_value instead of cons for unwind data. + (x_handle_property_notify): Skip events already arrived, but don't + free them, as "arrived" field is checked by wait_for_property_change, + and it will be freed by unwind or explicit unexpect_property_change. + (x_get_foreign_selection): Add to new queue. + (receive_incremental_selection): Don't unexpect wait_object when done + as it has already been freed by previous wait_for_property_change. + + * xterm.h (x_start_queuing_selection_requests) + (x_stop_queuing_selection_requests, x_handle_selection_request) + (x_handle_selection_clear): Remove prototypes. + (x_handle_selection_event): Add prototype. + + * xterm.c (handle_one_xevent): Don't queue X selection events + here, it may be too late if we start queuing after we have already + stored some selection events into the kbd buffer. + (struct selection_event_queue, queue, x_queue_selection_requests) + (x_queue_event, x_unqueue_events, x_start_queuing_selection_requests) + (x_stop_queuing_selection_requests): Remove/move to xselect.c. + (x_catch_errors_unwind): Block input around final XSync. + + * keyboard.h (kbd_buffer_unget_event): Add prototype. + + * keyboard.c (kbd_buffer_store_event_hold): Remove obsolete code. + (kbd_buffer_unget_event): New function. + (kbd_buffer_get_event, swallow_events): Combine SELECTION events + and use x_handle_selection_event. + (mark_kboards): Don't mark x and y of SELECTION_CLEAR_EVENT. + +2004-11-05 Jan Dj,Ad(Brv + + * xselect.c (TRACE3): New debug macro. + (x_reply_selection_request): Use it. + (receive_incremental_selection): In call to TRACE0, the name of + a symbol is in xname. + +2004-11-05 Kim F. Storm + + * fontset.c (fontset_pattern_regexp): Use unsigned char. + +2004-11-04 Jan Dj,Ad(Brv + + * fileio.c (Fnext_read_file_uses_dialog_p): New function. + + * gtkutil.h (use_old_gtk_file_dialog): Declare. + + * gtkutil.c: Make use_old_gtk_file_dialog non-static. + (xg_initialize): Move DEFVAR_BOOL for use_old_gtk_file_dialog ... + * xfns.c (syms_of_xfns): ... to here. + + * gtkutil.c (xg_get_file_with_chooser): Expand DEFAULT_FILENAME if + it doesn't start with /. + +2004-11-04 Kenichi Handa + + * fontset.c (fontset_pattern_regexp): If '*' is preceded by '\', + treat it as a literal character. + +2004-11-03 Kim F. Storm + + * .gdbinit (ppt): New function. + +2004-11-02 Jan Dj,Ad(Brv + + * xterm.c (x_window_to_scroll_bar): Only call + xg_get_scroll_id_for_window if toolkit scroll bars are used. + + * gtkutil.c (xg_get_file_with_chooser): Use GTK_STOCK_OK instead + of save. + +2004-11-02 Andreas Schwab + + * window.c (Fscroll_right): Fix last change. + +2004-11-02 Kim F. Storm + + * Makefile.in (callproc.o): Depend on blockinput.h, atimer.h, systime.h. + +2004-11-02 YAMAMOTO Mitsuharu + + * callproc.c (Fcall_process): Block input around vfork. + +2004-11-02 Kim F. Storm + + * eval.c (Fcalled_interactively_p): Rename from Fcall_interactive_p. + (syms_of_eval): Defsubr it. + +2004-11-02 Richard M. Stallman + + * insdel.c (replace_range_2): New function. + + * casefiddle.c (casify_region): Handle changes in byte-length + using replace_range_2. + + * emacs.c (USAGE3): Delete --horizontal-scroll-bars, -hb. + + * xdisp.c (back_to_previous_visible_line_start): + Subtract 1 from pos when checking previous newline for invisibility. + + * window.c (window_scroll_pixel_based): Update preserve_y + for header line if any. + (Fscroll_left, Fscroll_right): Don't call interactive_p; + use a new second argument instead. + + * eval.c (Fcall_interactive_p): New function. + (interactive_p): Don't test INTERACTIVE here. + (Finteractive_p): Doc fix. + + * eval.c (Feval): Abort if INPUT_BLOCKED_P. + +2004-11-02 KOBAYASHI Yasuhiro + + * w32fns.c (w32_font_match): Use fast_string_match_ignore_case for + comparing font names. + +2004-11-02 Jan Dj,Ad(Brv + + * fileio.c (Fread_file_name): Pass Qt as fifth parameter to + Fx_file_dialog if only directories should be read. + + * lisp.h: Fx_file_dialog takes 5 parameters. + + * xfns.c (Fx_file_dialog): Both Motif and GTK version: + Add parameter only_dir_p. + In Motif version, don't put DEFAULT_FILENAME in filter part of the + dialog, just text field part. Do not add DEFAULT_FILENAME + to list of files if it isn't there. + In GTK version, pass only_dir_p parameter to xg_get_file_name. + + * macfns.c (Fx_file_dialog): Add parameter only_dir_p. + Check only_dir_p instead of comparing prompt to "Dired". When using + a save dialog, add option kNavDontConfirmReplacement, change title + to "Enter name", change text for save button to "Ok". + + * w32fns.c (Fx_file_dialog): Add parameter only_dir_p. + Check only_dir_p instead of comparing prompt to "Dired". + + * gtkutil.c (xg_get_file_with_chooser, xg_get_file_with_selection): + New functions, only defined ifdef HAVE_GTK_FILE_CHOOSER_DIALOG_NEW + and HAVE_GTK_FILE_SELECTION_NEW respectively. + (xg_get_file_name): Add parameter only_dir_p. + Call xg_get_file_with_chooser or xg_get_file_with_selection + depending on HAVE_GTK_FILE* and the value of use_old_gtk_file_dialog. + (xg_initialize): New DEFVAR_BOOL use_old_gtk_file_dialog. + + * gtkutil.h (xg_get_file_name): Add parameter only_dir_p. + + * config.in: Rebuild (added HAVE_GTK_FILE_*). + +2004-11-01 Kim F. Storm + + * process.c (connect_wait_mask, num_pending_connects): + Only declare and use them if NON_BLOCKING_CONNECT is defined. + (init_process): Initialize them if NON_BLOCKING_CONNECT defined. + (IF_NON_BLOCKING_CONNECT): New helper macro. + (wait_reading_process_output): Only declare and use local vars + Connecting and check_connect when NON_BLOCKING_CONNECT is defined. + +2004-11-01 Andy Petrusenco (tiny change) + + * w32term.c (x_scroll_run): Delete region objects after use. + +2004-10-31 Jan Dj,Ad(Brv + + * xmenu.c: Add prototypes for forward function declarations. + (popup_get_selection): Remove parameter do_timers, remove call to + timer_check. + (create_and_show_popup_menu, create_and_show_dialog): + Remove parameter do_timers from call to popup_get_selection. + + * xdisp.c (update_tool_bar): Pass a copy of f->tool_bar_items to + tool_bar_items and assign the result to f->tool_bar_items if + not equal. Move BLOCK/UNBLOCK_INPUT from around call to + tool_bar_items to assignment of result. + + * atimer.c (alarm_signal_handler): Do not call set_alarm if + pending_atimers is non-zero. + +2004-10-31 Kim F. Storm + + * dispnew.c (margin_glyphs_to_reserve): Don't use ncols_scale_factor. + +2004-10-28 Will + + * macterm.c: Allow user to assign key modifiers to the Mac Option + key via a 'mac-option-modifier' variable. + +2004-10-28 Stefan Monnier + + * xselect.c (Vx_lost_selection_functions, Vx_sent_selection_functions): + Rename from Vx_lost_selection_hooks and Vx_sent_selection_hooks. + (x_handle_selection_request, x_handle_selection_clear) + (x_clear_frame_selections, syms_of_xselect): Adjust accordingly. + +2004-10-28 Richard M. Stallman + + * w32fns.c (Fx_server_vendor, Fx_server_version): Doc fixes. + + * xfns.c (Fx_server_vendor, Fx_server_version): Doc fixes. + +2004-10-27 Stefan Monnier + + * syntax.c (scan_sexps_forward): Give precedence to a 2-char + comment-starter over a 1-char one. + +2004-10-27 Richard M. Stallman + + * xdisp.c (get_next_display_element): In mode lines, + treat newline and tab like other control characters. + + * editfns.c (Fmessage): Doc fix. + + * indent.c (vmotion): When moving up, check the newline before. + Make prevline an int, not a Lisp_Object. + +2004-10-27 Kim F. Storm + + * editfns.c (Fformat): Allocate discarded table with SAFE_ALLOCA. + Only allocate info and discarded tables once. + + * lisp.h (USE_SAFE_ALLOCA): Add and init sa_must_free integer. + (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Increment it when malloc is used. + (SAFE_FREE): Test it to determine if we need to unwind to free. + Remove size arg. All users changed. + (SAFE_FREE_LISP): Remove. All users changed to use SAFE_FREE. + +2004-10-26 Jan Dj,Ad(Brv + + * gtkutil.c: Put empty line between comment and function body. + (xg_destroy_widgets): Rename from remove_from_container. + Just destroy all widgets in list. Argument wcont removed. + (xg_update_menubar, xg_update_submenu): Call xg_destroy_widgets + instead of remove_from_container. + (xg_display_close, xg_create_tool_bar, update_frame_tool_bar) + (free_frame_tool_bar): Add comment. + + * xfns.c (xic_create_xfontset): Check that FRAME_XIC_BASE_FONTNAME + is not NULL before strcmp. + +2004-10-26 Kim F. Storm + + * callint.c (Fcall_interactively): Add 'U' code to get the + up-event discarded by a previous 'k' or 'K' argument. + +2004-10-26 David Kastrup + + * buffer.c (syms_of_buffer): Fix a few typos. + +2004-10-26 Jan Dj,Ad(Brv + + * xsmfns.c: Put empty line between comment and function body. + Use two spaces before comment end. + +2004-10-25 Kenichi Handa + + * fontset.c (fontset_pattern_regexp): Optimize for the case that + PATTERN is full XLFD. + +2004-10-24 Kenichi Handa + + * regex.h (enum reg_errcode_t): New value REG_ERANGEX. + + * regex.c (re_error_msgid): Add an entry for REG_ERANGEX. + (regex_compile): Return REG_ERANGEX if appropriate. + +2004-10-22 Kenichi Handa + + * editfns.c (Ftranslate_region_internal): New function. + (syms_of_editfns): Defsubr it. + +2004-10-22 Jan Dj,Ad(Brv + + * xfns.c (xic_create_xfontset): Initialize missing_list to NULL. + +2004-10-21 K,Aa(Broly L$,1 q(Brentey + + * xterm.h (x_output): New member `xic_base_fontname'. + (FRAME_XIC_BASE_FONTNAME): New macro. + (xic_free_xfontset): Declare. + + * xfns.c (xic_create_xfontset): Share fontsets between frames + based on base_fontname. + (xic_free_xfontset): New function. + (free_frame_xic): Use it. + (xic_set_xfontset): Ditto. + + * xterm.c (xim_destroy_callback): Ditto. + +2004-10-20 B. Anyos (tiny change) + + * w32term.c (x_draw_glyph_string): Use overline_color for overlines. + +2004-10-20 Jan Dj,Ad(Brv + + * xterm.h (XSync): If USE_GTK, define XSync as process_all and then + XSync. + + * emacs.c (my_heap_start, heap_bss_diff, MAX_HEAP_BSS_DIFF): + New variables and constant. + (main): Calculate heap_bss_diff. If we are dumping and the + heap_bss_diff is greater than MAX_HEAP_BSS_DIFF, set PER_LINUX32 + and exec ourself again. + (Fdump_emacs): If heap_bss_diff is greater than MAX_HEAP_BSS_DIFF + print a warning. + + * lastfile.c: Make my_endbss and my_endbss_static available on all + platforms. + + * Makefile.in (RUN_TEMACS): Remove @SETARCH@. + * config.in (HAVE_PERSONALITY_LINUX32): Regenerate. + +2004-10-19 Luc Teirlinck + + * data.c (Flocal_variable_if_set_p): Doc fix. + +2004-10-19 Jason Rumney + + * w32.c (init_environment): Set emacs_dir correctly when running + emacs from the build directory. + +2004-10-19 Richard M. Stallman + + * editfns.c (Fdelete_and_extract_region): + If region is empty, return null string. + +2004-10-19 Jan Dj,Ad(Brv + + * gtkutil.h (xg_update_scrollbar_pos): Remove arguments real_left + and canon_width. + (xg_frame_cleared): Remove. + + * gtkutil.c (xg_frame_cleared, xg_fixed_handle_expose) + (xg_find_top_left_in_fixed): Remove. + (xg_create_scroll_bar): Put an event box widget between + the scroll bar widget and the edit widget. + (xg_show_scroll_bar): Show the parent widget (the event box). + (xg_remove_scroll_bar): Destroy parent (the event box) also. + (xg_update_scrollbar_pos): Remove arguments real_left and canon_width. + Move the parent (the event box) widget inside the fixed widget. + Move window clear to xterm.c. + + * gtkutil.h (xg_frame_cleared): Remove. + + * xterm.c (x_clear_frame): Remove call to xg_frame_cleared + (x_scroll_bar_create, XTset_vertical_scroll_bar): + Remove arguments left and width to xg_update_scrollbar_pos. + (XTset_vertical_scroll_bar): Do x_clear_area for USE_GTK also. + +2004-10-19 Kenichi Handa + + * xdisp.c (display_mode_element): Fix display of wide chars. + +2004-10-18 Jan Dj,Ad(Brv + + * gtkutil.c (xg_update_scrollbar_pos): Change XClearWindow to + gdk_window_clear and move gdk_window_process_all_updates after + clear so events are sent to the X server in correct order. + +2004-10-18 Kenichi Handa + + * fontset.c (fs_load_font): Use fast_string_match_ignore_case for + comparing font names. + (fs_query_fontset): Use fast_string_match for comparing fontset names. + (list_fontsets): Likewise. + + * search.c (fast_string_match_ignore_case): New function. + + * lisp.h (fast_string_match_ignore_case): Extern it. + +2004-10-17 Kim F. Storm + + * xdisp.c (overlay_arrow_at_row): Return overlay string rather + than bitmap if there is not left fringe. + (get_overlay_arrow_glyph_row): Also used on windows system. + (display_line): Display overlay string if no left fringe. + +2004-10-16 Jason Rumney + + * w32fns.c (w32_font_match): Encode font name being matched. + +2004-10-16 Richard M. Stallman + + * window.c (Fspecial_display_p): Doc fix. + +2004-10-15 Stefan Monnier + + * doc.c (Fsubstitute_command_keys): Fix remap-handling. + Don't ignore menus, because where-is-internal already does it for us. + +2004-10-15 Kim F. Storm + + * xdisp.c (redisplay_window): Only update fringes and vertical + border on window frames. + +2004-10-14 Andreas Schwab + + * m/ia64.h (DATA_SEG_BITS): Don't define. + +2004-10-14 Kim F. Storm + + * xterm.h: Include Xutil.h after keysym.h to work around bug + in some X versions. + +2004-10-13 Stefan Monnier + + * fns.c (map_char_table): Add missing gcpros. + +2004-10-13 Stefan Monnier + + * keymap.c (get_keymap): An autoload form is not a keymap. + + * textprop.c (syms_of_textprop): Make `syntax-table' nonsticky. + +2004-10-13 Kim F. Storm + + * callproc.c (Fcall_process): Simplify handling of display arg. + Resume `display_on_the_fly' once a coding system is determined. + + * xdisp.c (redisplay_preserve_echo_area): Fix last change. + +2004-10-12 Kim F. Storm + + * xdisp.c (redisplay_preserve_echo_area): Flush display in case + caller, such as call-process, is not going to poll for input. + (calc_line_height_property): Handle case where it->object is nil. + + * xterm.c (x_redisplay_interface): Fix flush_display_optional. + +2004-10-12 Kenichi Handa + + * xdisp.c (get_next_display_element): + If unibyte_display_via_language_environment is zero, display 8-bit + chars in octal in unibyte buffer. + +2004-10-12 Kim F. Storm + + * doc.c (Fsubstitute_command_keys): Ignore remappings unless there + are no ordinary bindings. + +2004-10-11 Jan Dj,Ad(Brv + + * xfns.c (syms_of_xfns): Defsubr x-file-dialog for GTK also. + +2004-10-10 YAMAMOTO Mitsuharu + + * macterm.c (x_raise_frame): Add BLOCK_INPUT around SelectWindow. + (x_lower_frame): Add BLOCK_INPUT around SendBehind. + (make_mac_frame): Add BLOCK_INPUT around the making of a + terminal frame. + (mac_initialize): Add BLOCK_INPUT around carbon initialization. + * macgui.h (mktime): Use emacs_mktime. + * macfns.c (Fx_file_dialog): Add BLOCK_INPUT around more code. + Make a cancel file-open dialog be like C-g. + * mac.c (mktime): Use emacs_mktime. + (Fdo_applescript): Add BLOCK_INPUT around do_applescript. + (Fmac_paste_function): Add better error handling for carbon cut/paste. + +2004-10-10 Kim F. Storm + + * keyboard.c (timer_resume_idle): New function to resume idle + timer without resetting timers on the idle list. + (read_char): Use timer_resume_idle. Remove local var last_idle_start. + (timer_start_idle, timer_stop_idle): Declare static. + (read_key_sequence): Use timer_resume_idle instead of timer_start_idle. + + * keyboard.h (timer_start_idle, timer_stop_idle): Remove prototypes. + +2004-10-08 Steven Tamm + + * config.in (HAVE_MALLOC_MALLOC_H): Regenerate. + * macterm.c (mac_check_for_quit_char): Remove warning for using + NULL where 0 should be used. + * unexmacosx.c: Use malloc/malloc.h on Tiger instead of + objc/malloc.h + * mac.c: Include time.h for Tiger compatibility. + +2004-10-07 Kim F. Storm + + * xdisp.c (redisplay_window): Fix flicker on vertical line between + windows. Update vertical line after drawing window fringes, but + only if actually drawing any bitmaps--or there is no fringe. + + * xterm.c (x_update_window_end): Likewise. + * macterm.c (x_update_window_end): Likewise. + * w32term.c (x_update_window_end): Likewise. + + * fringe.c (draw_window_fringes): Return value now indicates if + any fringe bitmaps were redrawn (or there are no fringes). + + * dispextern.h (draw_window_fringes): Update prototype. + +2004-10-06 YAMAMOTO Mitsuharu + + * macfns.c (mac_get_window_bounds): Add extern. + (x_real_positions): Use mac_get_window_bounds. + + * macmenu.c (update_submenu_strings): Apply 2004-09-07 change for + xmenu.c (YAILOM). + + * macterm.c [!MAC_OSX]: Include Windows.h. + (front_emacs_window): Rename from mac_front_window. All uses + changed. Return the frontmost non-tooltip emacs window. + (mac_get_window_bounds): New function. + (x_calc_absolute_position): Use the difference of width and height + between the inner and outer window. + (x_set_offset): Specify window position by the coordinae of the + outer window. Adjust the position if the title bar is completely + outside the screen. + (app_is_suspended, app_sleep_time): Remove unused variables. + (do_app_resume, do_app_suspend): Remove their contents because + window-activate/deactivate events will do the job. + (do_zoom_window): Remove unused variables. Make compliant to the + standard way of zooming. Set f->left_pos and f->top_pos. + (XTread_socket): Don't use argument `expected'. Don't use + FrontWindow to determine the clicked window. Exclude unprocessed + mouseUp cases in the early stage. Add parentheses to fix operator + precedence. + (XTread_socket) [TARGET_API_MAC_CARBON]: Don't specify drag area. + +2004-10-05 Jan Dj,Ad(Brv + + * config.in: Regenerate. + + * Makefile.in (RUN_TEMACS): Check HAVE_RANDOM_HEAPSTART instead of + HAVE_EXECSHIELD. + +2004-10-05 Jan Dj,Ad(Brv + + * xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for + a row if Alt or Meta has been found for that row. Also stop scanning + for Keysyms for that row. + +2004-10-04 Kim F. Storm + + * fringe.c (Ffringe_bitmaps_at_pos): Change return value from cons + to list. Include overlay arrow bitmap in return value. + + * xterm.c (XTset_vertical_scroll_bar): Improve handling of scroll + bars with fractional column width. If scroll bar separates two + windows, move it towards the window it belongs to. Only update + the padding area below the scroll bar widget when necessary, + i.e. when scroll bar widget is created, moved, or resized. + + * xdisp.c (define_frame_cursor1): Do not change frame cursor + while tracking/dragging mouse. + (x_draw_vertical_border): Do not draw line if frame has scroll bars. + + * window.c (coordinates_in_window): Relax check for cursor + on vertial border between mode lines. + (Fset_window_fringes): Do not allow negative widths. + (Fset_window_scroll_bars): Likewise. + + * .gdbinit (pp): Shorthand for p ARG + pr. + (ff): New command: flush frame updates (X only). + +2004-10-03 Michael Albinus + + * fileio.c (auto_save_1) Call Ffile_modes for remote files. + +2004-09-30 Kenichi Handa + + * process.c (send_process): Free composition data. + + * fileio.c (Finsert_file_contents): Free composition data. + + * coding.c (code_convert_region): Don't skip ASCIIs if there are + compositions to encode. + (encode_coding_string): Likewise. Free composition data. + +2004-09-30 Florian Weimer + + * coding.c (code_convert_region): Free composition data. + +2004-09-29 Kim F. Storm + + * fringe.c: Remove limit on number of bitmaps. + (fringe_bitmaps, fringe_faces): Change to pointers. + (max_fringe_bitmaps): New var. + (Fdefine_fringe_bitmap): Expand fringe_bitmaps and fringe_faces. + (init_fringe): Allocate fringe_bitmaps and fringe_faces. + + * dispextern.h (FRINGE_ID_BITS): Increase to 16 bits (64K bitmaps). + (struct glyph_row): Reorder fringe_bitmap related fields. + (struct it): Likewise. + + * w32term.c (fringe_bmp): Change to pointer. + (max_fringe_bmp): New var. + (w32_define_fringe_bitmap): Expand fringe_bmp. + (w32_draw_fringe_bitmap): Check max_fringe_bmp. + (w32_destroy_fringe_bitmap): Likewise. + +2004-09-29 Kim F. Storm + + * fringe.c: Simplify last change. + (lookup_fringe_bitmap): New function. + (valid_fringe_bitmap_p, resolve_fringe_bitmap): Remove. + (Fdestroy_fringe_bitmap): Use lookup_fringe_bitmap. + Keep standard bitmaps in Vfringe_bitmaps. + (Fdefine_fringe_bitmap): Use lookup_fringe_bitmap. + (Fset_fringe_bitmap_face): Likewise. + + * dispextern.h (lookup_fringe_bitmap): Add prototype. + (valid_fringe_bitmap_p): Remove prototype. + + * xdisp.c (handle_single_display_prop): Use lookup_fringe_bitmap. + +2004-09-29 Kim F. Storm + + * fringe.c (destroy_fringe_bitmap, init_fringe_bitmap) + (w32_init_fringe, w32_reset_fringes): Fix bootstrap (NULL rif). + + * dispextern.h (valid_fringe_bitmap_p): Fix prototype. + + * fringe.c (Vfringe_bitmaps): New variable. + (syms_of_fringe): DEFVAR_LISP it. + (valid_fringe_bitmap_p): Rename from valid_fringe_bitmap_id_p. + Change arg to Lisp_Object and fail if not an integer. + (get_fringe_bitmap_name, resolve_fringe_bitmap) + (destroy_fringe_bitmap): New functions. + (Fdestroy_fringe_bitmap): Change arg to bitmap symbol. + Use destroy_fringe_bitmap. Remove symbol from Vfringe_bitmaps and + clear its fringe property. + (init_fringe_bitmap): Use destroy_fringe_bitmap instead of + Fdestroy_fringe_bitmap. + (Fdefine_fringe_bitmap): Add BITMAP arg specifying new or existing + bitmap symbol; remove WHICH arg. Add symbol to Vfringe_bitmaps + and set fringe property. Signal error if no free slots. + (Fset_fringe_bitmap_face): Change arg to bitmap symbol. + (Ffringe_bitmaps_at_pos): Return bitmap symbols instead of numbers. + + * xdisp.c (handle_single_display_prop): Fringe bitmaps are now + symbols with a fringe property. + +2004-09-27 Kim F. Storm + + * buffer.c (syms_of_buffer) : + Doc fix. Format may now be a symbol or alist, not a cons. + + * fringe.c (update_window_fringes): Handle new formats of + indicate-buffer-boundaries (symbol or alist). No longer + allow a simple cons. + (Ffringe_bitmaps_at_pos): Use nil value for no bitmap. + +2004-09-25 Jan Dj,Ad(Brv + + * config.in: Rebuild. + +2004-09-24 Jan Dj,Ad(Brv + + * config.in: Rebuild. + + * Makefile.in: Run setarch i386 ./temacs if exec-shield is present. + +2004-09-18 Stefan Monnier + + * xterm.c (x_term_init): Work around a bug in some X servers. + +2004-09-18 Richard M. Stallman + + * buffer.c (syms_of_buffer) : Doc fix. + + * xdisp.c (try_window_reusing_current_matrix): + Handle the case where we reach the old displayed text, + out of sync with the old line boundary. + +2004-09-14 Stefan Monnier + + * fileio.c (Finsert_file_contents): Fix case of replacement in a + narrowed buffer. + +2004-09-14 Kim F. Storm + + * puresize.h (PURESIZE_RATIO): Define based on BITS_PER_EMACS_INT. + + * xfaces.c (Qface_no_inherit): New var. + (syms_of_xfaces): Intern and staticpro it. + (Finternal_make_lisp_face, Finternal_set_lisp_face_attribute) + (Finternal_copy_lisp_face, update_face_from_frame_parameter): + Don't increment face_change_count when face has non-nil + face-no-inherit property. + +2004-09-13 Stefan Monnier + + * bytecode.c (BYTE_CODE_QUIT): Add missing AFTER_POTENTIAL_GC. + (Fbyte_code): Remove dead code after `wrong_type_argument'. + + * alloc.c (Fgarbage_collect): Mark keyboards, gtk data, and specpdl + before doing the mark_stack_check_gcpros since they're not on the stack. + +2004-09-12 Kim F. Storm + + * editfns.c (Fformat): Handle format strings with multiple text + properties. Reverse text property list from the format string, + so the positions are in increasing order. + +2004-09-10 Jan Dj,Ad(Brv + + * xselect.c (x_reply_selection_request): XSync and UNBLOCK before + x_uncatch_errors so that possible protocol errors are delivered. + +2004-09-10 Eli Zaretskii + + * Makefile.in (msdos.o): Depend on buffer.h, commands.h, and + blockinput.h. + (dosfns.o): Depend on blockinput.h, window.h, dispextern.h, + charset.h, and coding.h + (w16select.o): Depend on buffer.h, charset.h, coding.h, and composite.h. + (term.o): Depend on window.h and keymap.h. + (abbrev.o): Depend on syntax.h. + (callint.o): Depend on keymap.h. + (casefiddle.o): Depend on charset.h and keymap.h. + (category.o): Depend on keymap.h. + (coding.o): Depend on dispextern.h. + (cmds.o): Depend on keyboard.h and keymap.h. + (dispnew.o): Depend on indent.h and intervals.h. + (doc.o): Depend on keymap.h. + (editfns.o): Depend on frame.h. + (emacs.o): Depend on dispextern.h. + (fileio.o): Don't depend on ccl.h. + (filelock.o): Depend on charset.h and coding.h. + (frame.o): Depend on w32term.h and macterm.h. + (insdel.o): Depend on region-cache.h. + (keyboard.o): Depend on keymap.h, w32term.h, and macterm.h. + (minibuf.o): Depend on $(INTERVALS_SRC) and keymap.h. + (search.o): Depend on $(INTERVALS_SRC). + (syntax.o): Depend on keymap.h, regex.h, and $(INTERVALS_SRC). + (window.o): Depend on keymap.h, blockinput.h, $(INTERVALS_SRC), + xterm.h, w32term.h, and macterm.h. + (xdisp.o): Depend on keyboard.h, $(INTERVALS_SRC), xterm.h, + w32term.h, and macterm.h. + (xfaces.o): Depend on keyboard.h, $(INTERVALS_SRC), + region-cache.h, xterm.h, w32term.h, and macterm.h. + (bytecode.o): Depend on dispextern.h, frame.h, and xterm.h. + (data.o): Depend on frame.h. + (fns.o): Depend on keymap.h, xterm.h, and blockinput.h. + (print.o): Depend on termchar.h and $(INTERVALS_SRC). + (lread.o): Depend on $(INTERVALS_SRC), termhooks.h, and coding.h. + (intervals.o): Depend on keymap.h. + + * msdos.c (msdos_set_cursor_shape, IT_display_cursor): + Add debugging print-out to termscript. + +2004-09-09 Richard M. Stallman + + * xdisp.c (decode_mode_spec): Use current buffer for most purposes. + +2004-09-08 Richard M. Stallman + + * window.c (Fset_window_buffer): Doc fix. + + * xdisp.c (Fformat_mode_line): New arg BUFFER says which buffer to use. + +2004-09-08 Dan Nicolaescu + + * minibuf.c (history_delete_duplicates): New variable. + (read_minibuf): Use it. + (syms_of_minibuf): Create the corresponding lisp variable. + +2004-09-08 Kim F. Storm + + * xdisp.c (set_cursor_from_row): Also look at 'cursor' property in + overlay just before point. + +2004-09-07 Luc Teirlinck + + * buffer.h (struct buffer): Add auto_save_file_format field. + * buffer.c (reset_buffer, init_buffer_once): + Handle auto_save_file_format field. + (syms_of_buffer): Add DEFVAR_PER_BUFFER for + `buffer-auto-save-file-format'. + * fileio.c: Delete declaration for removed Vauto_save_file_format. + (build_annotations): Adapt to replacement of + `auto-save-file-format' with the new buffer-local variable + `buffer-auto-save-file-format'. + (syms_of_fileio): Delete DEFVAR_LISP for auto-save-file-format. + +2004-09-07 Jason Rumney + + * w32term.h (AppendMenuW_Proc): Move declaration from w32menu.c. + + * w32fns.c (w32_wnd_proc) : + Handle Unicode menu titles. + +2004-09-07 Kim F. Storm + + * xdisp.c (set_cursor_from_row): Fix last change. Only use 'cursor' + property from text property or overlay strings at point. + +2004-09-07 Stefan Monnier + + * xmenu.c (update_submenu_strings): YAILOM. + (set_frame_menubar): Make sure last_i is initialized. + +2004-09-03 Jason Rumney + + * w32menu.c (_widget_value): Add lname and lkey. + (digest_single_submenu): Set lname and lkey in widget_value + instead of name and key. + (update_submenu_strings): New function. + (set_frame_menubar): Remove call to inhibit_garbage_collection, + call update_submenu_strings. + + * w32menu.c (globals_of_w32menu): Check for Unicode API. + (digest_single_submenu, w32_menu_show): Encode menu strings as + UTF-8 if Unicode API is available. + (utf8to16): New function. + (add_menu_item): Use it when calling Unicode API. + +2004-09-03 Kim F. Storm + + * xdisp.c (set_cursor_from_row): Look for non-nil `cursor' property + in overlay or text-property strings; set cursor on corresponding + glyph rather than at end of the string. + +2004-09-02 YAMAMOTO Mitsuharu + + * macfns.c (x_real_positions): Save the current window port and + set a new one before obtaining the global coordinate. + Use FRAME_MAC_WINDOW. + (x_set_name, x_set_title): Encode title to UTF8. + Use SetWindowTitleWithCFString. + (Fx_server_version): Get correct OS version. + + * macmenu.c (add_menu_item): Remove unused variable `i'. + Don't let separator items destroy refence constants of other menu items. + + * macterm.c (x_update_end): Move SetPortWindowPort to inside + BLOCK_INPUT. + (x_set_offset): Use FRAME_MAC_WINDOW. + + * xdisp.c (note_mouse_highlight): Set the mouse pointer shape to + nontext_cursor if it is on a scroll bar. + + * s/darwin.h (LIBS_CARBON): New define to specify libraries for + Carbon support. + (LD_SWITCH_SYSTEM_TEMACS): Don't link with unused libstdc++. + Use LIBS_CARBON. + +2004-09-02 Jan Dj,Ad(Brv + + * xfns.c (x_set_name_internal): New function. Check if we shall call + xfree before ENCODE_UTF_8. + (x_set_name, x_set_title): Call x_set_name_internal. + +2004-08-31 NAKAMURA Toshikazu (tiny change) + + * w32fns.c (w32_load_font): If a BDF font is already loaded, do not + reload it. + +2004-08-30 Jan Dj,Ad(Brv + + * macmenu.c (_widget_value): Add lname and lkey. + (single_submenu): Set lname and lkey in widget_value + instead of name and key. + (update_submenu_strings): New function. + (set_frame_menubar): Remove call to inhibit_garbage_collection, + call update_submenu_strings. + + * xmenu.c (digest_single_submenu): Set lname and lkey in widget_value + instead of name and key. + (update_submenu_strings): New function. + (set_frame_menubar): Remove call to inhibit_garbage_collection, + call update_submenu_strings. + + * gtkutil.h (_widget_value): Added lname and lkey. + +2004-08-30 Steven Tamm + + * macmenu.c (mac_menu_show): Remove shadowing of menu variable + by using different names for inner loop variables. + +2004-08-27 Jan Dj,Ad(Brv + + * xmenu.c (set_frame_menubar): Reintroduce inhibit_garbage_collection + from 2002-07-15T00:01:34Z!raeburn@raeburn.org so that strings from ENCODE_UTF_8 isn't GC:ed before used. + + * gtkutil.c (xg_create_frame_widgets): Compensate for tool bar when + tool bar items is 0. + +2004-08-26 YAMAMOTO Mitsuharu + + * macmenu.c (ENCODE_MENU_STRING): Added to handle multibyte + strings in menu items. + (single_submenu): Use ENCODE_MENU_STRING + (mac_menu_show): Use ENCODE_MENU_STRING. Reset grabbed because + button release isn't passed to event loop + (add_menu_item): Use SetMenuItemWithCFString. + +2004-08-26 Steven Tamm + + * fileio.c (Fread_file_name): Call x_file_dialog on carbon on + tool-bar/menu click. + * macfns.c (Fx_file_dialog): Implement using NavServices. + +2004-08-24 Jan Dj,Ad(Brv + + * xterm.c (x_catch_errors_unwind): Do not XSync if display has closed. + + * xfns.c (x_window_to_frame, x_any_window_to_frame) + (x_non_menubar_window_to_frame, x_menubar_window_to_frame) + (x_top_window_to_frame): Return 0 if wdesc is None. + +2004-08-22 Richard M. Stallman + + * process.c (process_send_signal) [SIGNALS_VIA_CHARACTERS, + HAVE_TERMIOS]: If there's no char for this signal, drop through + and use system calls. + + * bytecode.c (Fbyte_code) : Cannot GC. + +2004-08-20 Kim F. Storm + + * process.c (wait_reading_process_output): Rename from + wait_reading_process_input. All uses changed. + (wait_reading_process_output_1): Rename from + wait_reading_process_input_1. All uses changed. + + * dispnew.c (Fsleep_for): Remove obsolete code. + +2004-08-20 Kenichi Handa + + * syntax.c (skip_chars): Fix for unibyte case. + +2004-08-19 Stefan Monnier + + * syntax.c (char_quoted): Mixup byte/char pos. + (back_comment): Fixup globals in all cases. + +2004-08-19 Jan Dj,Ad(Brv + + * xfns.c (x_set_name, x_set_title): Encode title to UTF8 before + passing it to gtk_window_set_title. + +2004-08-19 Kim F. Storm + + * process.c (wait_reading_process_input): Clean up. + Add wait_for_cell, wait_proc, and just_wait_proc args + to avoid overloading `read_kbd' and `do_display' args. + Change read_kbd arg to int. All callers changed. + + * process.c (process_send_signal): Use CDISABLE. + + * sysdep.c (child_setup_tty, init_sys_modes): Use CDISABLE. + +2004-08-18 Kim F. Storm + + * process.c (Faccept_process_output): Add arg JUST-THIS-ONE; + forward to wait_reading_process_input via DO_DISPLAY arg. + (wait_reading_process_input): If DO_DISPLAY < 0 for a process + object, only process output from that process; also inhibit + running timers if DO_DISPLAY==-2. + +2004-08-17 Kim F. Storm + + * process.c (process_send_signal): Fix last change--use + _POSIX_VDISABLE instead of CVDISABLE when available. + +2004-08-16 Richard M. Stallman + + * sysdep.c (child_setup_tty) [SIGNALS_VIA_CHARACTERS]: + Set VQUIT and VINTR chars to the standard ones if they are unset. + [AIX]: Don't do that here. And don't force VINTR to standard + when SIGNALS_VIA_CHARACTERS. + + * process.c (process_send_signal) + [SIGNALS_VIA_CHARACTERS, HAVE_TERMIOS]: Clean up. + Do nothing if the character is CVDISABLE. + + * xfaces.c (merge_face_ref): Specifying `unspecified' is a no-op. + + * intervals.c (move_if_not_intangible): + Force POSITION to be between BEGV and ZV. + +2004-08-14 John Paul Wallington + + * buffer.c (Frestore_buffer_modified_p): Doc fix. + + * fileio.c (Fread_file_name): Doc fix. + + * minibuf.c (syms_of_minibuf) : Doc fix. + +2004-08-09 Luc Teirlinck + + * keymap.c (Fmake_keymap, Fmap_keymap, Fwhere_is_internal): Doc fixes. + +2004-08-08 Luc Teirlinck + + * keyboard.c: Declare Qdisabled_command_function instead of + Qdisabled_command_hook. + (Fcommand_execute): Use Qdisabled_command_function instead of + Qdisabled_command_hook. + (syms_of_keyboard): Ditto. + +2004-08-07 Luc Teirlinck + + * keymap.c (Flocal_key_binding, Fglobal_key_binding) + (syms_of_keymap) : Doc fixes. + +2004-08-07 Stefan Monnier + + * window.c (window_list_1): YAILOM. + + * fileio.c (make_temp_name): Handle multibyte prefixes. + +2004-08-06 Luc Teirlinck + + * keyboard.c (syms_of_keyboard) : + Doc fix. + +2004-08-03 Kenichi Handa + + * coding.c (decode_coding_string): Adjust coding->consumed, and + etc. with shrinked_bytes. + +2004-08-03 Kim F. Storm + + * indent.c (compute_motion): Fix check for full width window + in non-window case. Do not count left truncation glyph on + window systems. + +2004-08-02 Luc Teirlinck + + * data.c (Finteractive_form): Doc fix. + +2004-08-02 Kim F. Storm + + * indent.c (compute_motion): Use actual window width if WIDTH is -1, + properly accounting for continuation glyph on non-window systems. + (Fcompute_motion): Use actual window width if WIDTH is nil, and + actual window width/height if TOPOS is nil, properly accounting for + continuation glyphs on non-window systems, and optional header lines. + (vmotion): Let compute_motion calculate actual window width. + + * window.c (window_scroll_line_based): Let compute_motion + calculate actual window width. + +2004-08-02 Kim F. Storm + + * process.c (read_process_output): Use whole read buffer. + Don't trigger adaptive read buffering on errors. + +2004-07-31 Luc Teirlinck + + * keymap.c (Fset_keymap_parent, Fdefine_prefix_command): Doc fixes. + + * keyboard.c (syms_of_keyboard) : Doc fix. + + * callint.c (Fcall_interactively): Doc fix. + +2004-07-30 Richard M. Stallman + + * abbrev.c (Fexpand_abbrev): Undo previous change. + +2004-07-30 Kim F. Storm + + * editfns.c (Fformat): Allocate extra (dummy) element in info. + +2004-07-28 Luc Teirlinck + + * eval.c (Fdefvar, Fdefconst): Doc fixes. + +2004-07-27 Kim F. Storm + + * xdisp.c (move_it_in_display_line_to): Check BUFFER_POS_REACHED_P after + we have ensured that the glyph fits on the current line (or returned + MOVE_LINE_CONTINUED otherwise). + +2004-07-26 Kim F. Storm + + * xdisp.c (move_it_in_display_line_to): If overflow-newline-into-fringe + is enabled, return MOVE_LINE_CONTINUED rather than MOVE_POS_MATCH_OR_ZV + if target position is at end of display line but char is not a newline. + +2004-07-25 Richard M. Stallman + + * window.c (coordinates_in_window): Return ON_SCROLL_BAR + instead of ON_VERTICAL_BORDER, when on scroll bar. + (Fcoordinates_in_window_p): Handle ON_SCROLL_BAR--return nil. + + * dispextern.h (enum window_part): Add ON_SCROLL_BAR. + + * window.c (Fcoordinates_in_window_p): + Take account of FRAME_INTERNAL_BORDER_WIDTH. + + * alloc.c (check_cons_list): New function (contents commented out). + +2004-07-24 Luc Teirlinck + + * xfaces.c (Fcolor_supported_p): Doc fix. + + * frame.c (Fselect_frame, Fset_frame_selected_window) + (Fframe_visible_p, Fraise_frame): Doc fixes. + +2004-07-24 Richard M. Stallman + + * keyboard.h (not_single_kboard_state): Declare. + + * fileio.c (Fwrite_region): Doc fix. + + * window.c (Fwindow_at): Take account of FRAME_INTERNAL_BORDER_WIDTH. + + * abbrev.c (Fexpand_abbrev): Run Qpre_abbrev_expand_hook + only when a real abbrev is present. + + * xfns.c (x_icon_verify): New function. + (Fx_create_frame): Use it. + +2004-07-22 Barry Fishman (tiny change) + + * s/gnu-linux.h: Use GC_MARK_STACK if __amd64__ is defined. + +2004-07-21 Kim F. Storm + + * window.h (struct glyph_matrix): New members nrows_scale_factor + and ncols_scale_factor. + + * window.c (make_window): Initialize nrows_scale_factor and + ncols_scale_factor members. + + * dispnew.c (margin_glyphs_to_reserve): Apply ncols_scale_factor. + (allocate_matrices_for_frame_redisplay): Fix left/right margin mix-up. + (required_matrix_height): Apply nrows_scale_factor. + (required_matrix_width): Apply ncols_scale_factor. + + * xdisp.c (display_line): Increment nrows_scale_factor and set + fonts_changed_p if past last allocated row. + (append_glyph, append_composite_glyph, produce_image_glyph) + (append_stretch_glyph): Increment ncols_scale_factor and set + fonts_changed_p if current area is full. + +2004-07-21 Jan Dj,Ad(Brv + + * widget.c (EmacsFrameDestroy): Don't abort if normal_gc is 0. + +2004-07-19 Luc Teirlinck + + * window.c (Fpos_visible_in_window_p, Fset_window_hscroll) + (Fwindow_inside_pixel_edges, Fwindow_end, Fset_window_point) + (Fset_window_start, Fscroll_up, Fscroll_down) + (Fother_window_for_scrolling, Fscroll_other_window) + (Fsave_window_excursion, Fset_window_vscroll) + (syms_of_window) : Doc fixes. + +2004-07-19 KOBAYASHI Yasuhiro + + * w32fns.c (Fx_file_dialog): Use ENCODE_FILE instead of + ENCODE_SYSTEM for filenames. + +2004-07-18 YAMAMOTO Mitsuharu + + * mac.c (sys_select): Block input around call to + ReceiveNextEvent to prevent breakage. Correctly handle + blocking on event queue only by calling ReceiveNextEvent + instead of select (since GUI events aren't on an fd). + (sys_read): Remove function + * sysdep.c: Remove redefine of read to sys_read if HAVE_CARBON. + +2004-07-18 YAMAMOTO Mitsuharu + + * mac.c (sys_select): Redo sys_select to use alarm-based + polling instead of 1 sec timeouts (like solaris). + + * macterm.c (x_make_frame_visible): Comment in polling on + frame creation. + + * keyboard.c: Undef SIGIO on Carbon. + + * atimer.c (alarm_signal_handler): Call alarm handlers after + scheduling. + + * eval.c (Feval): Remove quit_char test. + + * process.c (wait_reading_process_input): Remove clearing + stdin for select call on process input. + +2004-07-18 Luc Teirlinck + + * xdisp.c (syms_of_xdisp) : Correct + capitalization error in docstring. + +2004-07-17 Juanma Barranquero + + * keyboard.c (not_single_kboard_state): Do nothing unless + MULTI_KBOARD is defined. + +2004-07-17 Richard M. Stallman + + * window.c (coordinates_in_window): Inside the window but outside + its box to the L or R, return ON_VERTICAL_BORDER. + (window_list_1): Rotate the list to start with WINDOW. + + * print.c (print_preprocess): Test for print_depth at limit + before entering in being_printed. + + * keyboard.c (not_single_kboard_state): New function. + (stuff_buffered_input): Now no-op only if no SIGTSTP. + + * frame.c (Fdelete_frame): If we're in single_bboard_state on + this kboard, and we delete its last frame, go to any_kboard_state. + + * buffer.c (syms_of_buffer) : Doc fix. + +2004-07-15 KOBAYASHI Yasuhiro + + * w32fns.c (Fx_file_dialog): Encode strings in system coding + system before passing them to OS functions for display. + +2004-07-15 David Kastrup + + * search.c (syms_of_search): Staticpro `saved_last_thing_searched'. + Apparently fixes an abort condition. + +2004-07-14 Luc Teirlinck + + * fileio.c (Fvisited_file_modtime): Return a list of two integers, + instead of a cons. + +2004-07-14 K,Aa(Broly L$,1 q(Brentey + + * keyboard.c (echo_dash): Do nothing if there already is a dash + at the end of the echo string. + +2004-07-12 Kim F. Storm + + * alloc.c (mark_object): Only look at Lisp_Misc_Save_Value + if GC_MARK_STACK. + +2004-07-10 Luc Teirlinck + + * buffer.c (Fswitch_to_buffer, Fpop_to_buffer): Doc fixes. + + * window.c (Fwindow_buffer, Fother_window, Fget_lru_window) + (Fget_largest_window, Fget_buffer_window, Fdelete_windows_on) + (Freplace_buffer_in_windows, Fset_window_buffer) + (Fselect-window, Fdisplay-buffer, Fsplit_window): Doc fixes. + (syms_of_window): Expand docstring of `display-buffer-function'. + +2004-07-09 Luc Teirlinck + + * editfns.c (Ffloat_time, Fformat_time_string, Fdecode_time) + (Fcurrent_time_string, Fcurrent_time_zone): Mention in docstrings + that time values of the type (HIGH . LOW) are considered obsolete. + +2004-07-06 Luc Teirlinck + + * keyboard.c (syms_of_keyboard): Fix `keyboard-translate-table' + docstring. + + * fns.c (Fclear_string): Declare `len' before call to CHECK_STRING. + +2004-07-06 John Paul Wallington + + * eval.c (Fdefmacro): Signal an error if NAME is not a symbol. + + * fns.c (Fclear_string): Signal an error if STRING is not a string. + +2004-07-05 Jan Dj,Ad(Brv + + * macterm.c (mac_initialize_display_info): Use CGGetActiveDisplayList + instead of CGMainDisplayID (only in OSX 10.2 and later). + +2004-07-04 John Paul Wallington + + * fileio.c (read_file_name_completion_ignore_case): New variable. + (syms_of_fileio): Declare and initialise it. + (Fread_file_name): Bind `completion-ignore-case' to respect it. + +2004-07-03 Eli Zaretskii + + * msdos.c (dos_rawgetc): Use make_number to produce Lisp objects + for event.x and event.y. + +2004-07-01 Kenichi Handa + + * w32select.c (Fw32_set_clipboard_data): Update `nbytes' correctly + after getting a new string by pre-write-conversion. + +2004-06-30 Stefan Monnier + + * xterm.c (x_detect_focus_change): Remove unused var `nr_events'. + (x_calc_absolute_position): Remove unused var `child'. + + * xfaces.c (x_supports_face_attributes_p) + (Fdisplay_supports_face_attributes_p): YAILOM. + (tty_supports_face_attributes_p): Remove unused var `i'. + + * syntax.c (skip_chars): Remove unused labels fwd_unibyte_ok and + back_unibyte_ok. + + * search.c (match_limit, Fmatch_data, Fset_match_data): YAILOM. + + * fontset.c (Fset_fontset_font): Remove unused vars `family' and + `registry'. + + * Makefile.in (${etc}DOC): Fix file name of make-docfile. + +2004-06-30 Andreas Schwab + + * image.c (CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES. + (Finit_image_library): Pass LIBRARIES through to + CHECK_LIB_AVAILABLE. Declare parameters. Doc fix. + (lookup_image_type): Pass Qnil as second argument to + Finit_image_library. + + * lisp.h (Finit_image_library): Declare. + +2004-06-29 YAMAMOTO Mitsuharu + + * macterm.c (do_window_activate, do_window_deactivate): Remove. + (XTread_socket): Send mouse button events to the toolbox + dispatcher even when the mouse is grabbed. Don't process window + activate events for non-Emacs windows. Replace function calls to + do_window_activate and do_window_deactivate with their contents. + Reset mouse grabbing status when a window is deactivated. + +2004-06-29 Steven Tamm + + * macterm.c (mac_get_emulated_btn) + (mac_event_to_emacs_modifiers): Fix emulated mouse button + support to correctly mask out modifiers. + +2004-06-29 David Kastrup + + * search.c (Fset_match_data): Allow buffer before end of list + which can happen if set-match-data is using a pre-consed list. + +2004-06-28 Steven Tamm + + * macterm.c (XTread_socket): Correctly set the frame position + after the window is moved. + +2004-06-28 Jan Dj,Ad(Brv + + * gtkutil.c (xg_get_image_for_pixmap): Call g_object_unref on + gpix and gmask just before return to avoid memory leak. + (xg_get_image_for_pixmap): Add workaround for monochrome displays + so insensitive and activated icons look ok. + +2004-06-27 Jason Rumney + + * w32fns.c (file_dialog_callback): Disable edit control if set + to directories only on CDN_INITDONE message. + (Fx_file_dialog): Default to directories only when prompt starts + with "Dired". + +2004-06-25 Kim F. Storm + + * alloc.c (allocate_misc): Update total_free_markers. + (free_misc): New function. + (safe_alloca_unwind, free_marker): Use it. + + * lisp.h (free_misc): Add prototype. + + * fns.c (Fmapconcat, Fmapcar): Remove superfluous GCPROs. + +2004-06-24 Richard M. Stallman + + * emacs.c (Vsignal_USR1_hook, Vsignal_USR2_hook): Definitions deleted. + (syms_of_emacs): Lisp variables deleted. + +2004-06-23 David Kastrup + + * search.c (Freplace_match): Adjust the match-data more thoroughly + when replacing strings in the buffer. + (Fmatch_data): When INTEGERS is non-nil and the last match was in + a buffer, add the buffer as last element to the match data. + (Fset_match_data): If an additional element of the match-data is a + buffer, restore it to last_thing_searched. + (save_search_regs): Save last_thing_searched as part of the match data. + (restore_match_data): Restore it again. + +2004-06-23 Luc Teirlinck + + * keymap.c (Ftext_char_description): Doc fix. + * doc.c (Fsnarf_documentation): Doc fix. + +2004-06-22 Kim F. Storm + + * fns.c (Fmapcar, Fmapconcat): GCPRO the args array. + + * lisp.h (struct Lisp_Save_Value): New member dogc. + (SAFE_ALLOCA_LISP): Change second arg to number of elements. + Set dogc member in Lisp_Save_Value object so it will be GC'ed. + (SAFE_FREE_LISP): New macro. + + * alloc.c (safe_alloca_unwind): Clear dogc and pointer members. + (make_save_value): Init new dogc member. + (mark_object): Mark Lisp_Save_Value pointer array if dogc is set. + + * fns.c (Fmapconcat, Fmapcar): Use new SAFE_ALLOCA_LISP and + SAFE_FREE_LISP macros. + +2004-06-22 Kim F. Storm + + * lisp.h (SAFE_ALLOCA_LISP): New macro to allocate Lisp_Objects. + Temporarily inhibits GC if memory is xmalloc'ed, as the Lisp_Objects + in that memory area are unknown to GC. Add comments. + + * fns.c (Fmapconcat, Fmapcar): Use SAFE_ALLOCA_LISP. + +2004-06-21 Kim F. Storm + + * lisp.h (MAX_ALLOCA): Define here. + (safe_alloca_unwind): Add prototype. + (USE_SAFE_ALLOCA, SAFE_ALLOCA, SAFE_FREE): New macros. + + * alloc.c (safe_alloca_unwind): New function. + + * casefiddle.c (casify_object): Use SAFE_ALLOCA. + + * charset.c (Fstring): Use SAFE_ALLOCA. + + * coding.c (MAX_ALLOCA): Remove define. + + * data.c (MAX_ALLOCA): Remove define. + (Faset): Use SAFE_ALLOCA. + + * editfns.c (Fformat, Ftranspose_regions): Use SAFE_ALLOCA. + + * fns.c (string_make_multibyte, string_to_multibyte) + (string_make_unibyte, Fmapconcat, Fmapcar): Use SAFE_ALLOCA. + (MAX_ALLOCA): Remove define. + (Fbase64_encode_region, Fbase64_encode_string) + (Fbase64_decode_region, Fbase64_decode_string): Use SAFE_ALLOCA. + (Fbase64_encode_region, Fbase64_encode_string): Fix potential + memory leak if encoding fails. + + * xdisp.c (add_to_log): Use SAFE_ALLOCA. + +2004-06-21 Eli Zaretskii + + * print.c (Fwith_output_to_temp_buffer): Doc fix. + +2004-06-20 Richard M. Stallman + + * xfaces.c (Finternal_copy_lisp_face): Small cleanup; doc fix. + + * search.c (match_limit): Cleaner err msg when no match data available. + + * window.c (syms_of_window): Doc fix. + + * keyboard.c (command_loop_1): Handle values `only' and `identity' + for Vtransient_mark_mode. + + * buffer.c (syms_of_buffer): Doc fix. + +2004-06-21 David Kastrup + + * minibuf.c (Ftry_completion, Fall_completions): Do lazy binding + and unbinding of `case-fold-search' according to + `completion-ignore-case' around calls of string-match and + predicates, respectively. Should give satisfactory performance + in all relevant cases. + +2004-06-17 Jan Dj,Ad(Brv + + * xterm.c (x_draw_image_foreground_1): Subtract slice.x/y from + clip_x/y_origin. + + * fns.c (string_to_multibyte): Use xmalloc/xfree instead of alloca. + + * macfns.c (Fx_display_color_cells): Do not limit return value to 256. + + * macterm.c (mac_initialize_display_info): Initialize n_planes correctly + on Mac OSX. + +2004-06-16 Luc Teirlinck + + * buffer.c (syms_of_buffer): Clarify `fill-column' docstring. + +2004-06-16 Kim F. Storm + + * dispextern.h (Vimage_types): Remove extern. + +2004-06-16 Miles Bader + + * image.c (lookup_image_type): Initialize image type if necessary. + +2004-06-15 Kim F. Storm + + * xdisp.c (try_cursor_movement): Exclude header line from scroll + margin at top of window. + (try_window_reusing_current_matrix): Calculate proper cursor position + after scrolling up with non-zero scroll margin, as the old cursor + position corresponds to value of PT before executing this command. + (try_window_id): Consider scroll margin at bottom of window too; + otherwise we fail to scroll when hl-line-mode is enabled. + + * syntax.c (skip_chars): Only recognize [:class:] when it has the + proper format and class is a lower-case word. + +2004-06-14 Jan Dj,Ad(Brv + + * gtkutil.c (xg_get_image_for_pixmap): New function. + (xg_get_gdk_pixmap_and_mask): Remove. + (update_frame_tool_bar): Call xg_get_image_for_pixmap instead of + xg_get_gdk_pixmap_and_mask. + + * xterm.h (struct x_display_info): Typo in comment fixed. + +2004-06-14 Juanma Barranquero + + * dispextern.h (Vimage_types): Make it conditional on + HAVE_WINDOW_SYSTEM. + + * image.c (Vimage_types): Move from xdisp.c. + (Vimage_type_cache): New variable. + (define_image_type): New argument indicating whether an image + library was loaded; cache loaded status and return t on success, + nil otherwise. + (CACHE_IMAGE_TYPE, ADD_IMAGE_TYPE): New macros. + (w32_delayed_load): New function to load an image library from a + list of possible filenames. + (init_xpm_functions, init_png_functions, init_jpeg_functions) + (init_tiff_functions, init_gif_functions): Use `w32_delayed_load'. + (CHECK_LIB_AVAILABLE): Call `define_image_library' with new argument. + (Finit_image_library): New function, extracted from `init_image'. + Try to initialize an image library on demand and cache whether we + were successful or not. + (syms_of_image): Initialize `Vimage_types' and + `Vimage_type_cache'. Add recognized image types to Vimage_types. + Export `init-image-library'. + (init_image): Remove initialization of all image types, except xbm + and pbm. + + * xdisp.c (Vimage_types): Delete (moved to image.c). + +2004-06-14 Andreas Schwab + + * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion): + Avoid calling specbind when completion-regexp-list is empty. + +2004-06-13 Richard M. Stallman + + * regex.h (CHAR_CLASS_MAX_LENGTH, re_wctype_t, re_wchar_t) + (re_wctype, re_iswctype, re_wctype_to_bit): + Non-function definitions moved here from regex.c. + + * regex.c (re_wctype, re_iswctype): Function defs longer static. + (CHAR_CLASS_MAX_LENGTH, re_wctype_t, re_wchar_t) + (re_wctype, re_iswctype, re_wctype_to_bit): + Non-function definitions moved to regex.h. + + * window.c (Fselect_window): Doc fix. + + * syntax.c: Include regex.h. + (skip_chars): New arg HANDLE_ISO_CLASSES. Callers changed. + If requested, make a list of classes, then check the scanned + chars for membership in them. + (in_classes): New function. + Doc fix. + + * keyboard.c (cmd_error): Don't call any_kboard_state + if inside a recursive edit level. + +2004-06-13 K,Aa(Broly L$,1 q(Brentey + + * keyboard.c (command_loop): Call any_kboard_state before + command_loop_2 when at top level. + +2004-06-13 Andreas Schwab + + * print.c (print_object): Always use %ld for printing EMACS_INT. + + * keyboard.c (cancel_hourglass_unwind): Return a value. + (modify_event_symbol): Always use %ld for printing EMACS_INT. + (Fexecute_extended_command): Likewise. + + * syntax.h (SYNTAX_ENTRY_FOLLOW_PARENT): Rename local variable to + avoid clashes. + (SYNTAX): Likewise. + (SYNTAX_WITH_FLAGS): Likewise. + (SYNTAX_MATCH): Likewise. + + * syntax.c (char_quoted): Avoid warning about undefined operation. + (find_defun_start): Likewise. + (scan_lists): Likewise. + (INC_FROM): Likewise. + (scan_sexps_forward): Likewise. + + * image.c: Include . + + * xfaces.c (face_attr_equal_p): Declare parameters. + +2004-06-13 Kenichi Handa + + * ccl.c (CCL_READ_CHAR): If hit EOF, set REG to -1. + +2004-06-12 Matthew Mundell + + * eval.c (Fdefun): Signal an error if NAME is not a symbol. + +2004-06-12 Kenichi Handa + + * ccl.c (CCL_CALL_FOR_MAP_INSTRUCTION): Save eof_ic in + ccl_prog_stack_struct and update it. + (CCL_INVALID_CMD): If CCL_DEBUG is defined, call ccl_debug_hook. + (CCL_READ_CHAR): Get instruction counter from eof_ic, not from + ccl->eof_ic on EOF. + (ccl_debug_hook): New function. + (struct ccl_prog_stack): New member eof_ic. + (ccl_driver): Handle EOF in subrountine call correctly. + +2004-06-11 Kenichi Handa + + * coding.c (encode_coding_string): Check CODING_FINISH_INTERRUPT. + +2004-06-11 Kim F. Storm + + * emacs.c (shut_down_emacs): Inhibit redisplay during shutdown. + +2004-06-11 Juanma Barranquero + + * keyboard.c (Fposn_at_point): Doc fix. + +2004-06-11 David Kastrup + + * search.c (match_limit): Don't flag an error if match-data + exceeding the allocated search_regs.num_regs gets requested, just + return Qnil. + +2004-06-08 Miles Bader + + * xfaces.c (push_named_merge_point): Return 0 when a cycle is detected. + +2004-06-07 Juanma Barranquero + + * editfns.c (Fuser_login_name, Ffloat_time, Fencode_time) + (Fcurrent_time_string, Fcurrent_time_zone) + (Finsert_buffer_substring, Ftranspose_regions): Doc fixes. + +2004-06-07 Miles Bader + + * xfaces.c (struct named_merge_point): New type. + (push_named_merge_point): New function. + (merge_named_face): New function. + (merge_face_ref, face_at_buffer_position, face_at_string_position): + Use `merge_named_face'. + (merge_face_inheritance): Function removed. + (merge_face_ref): Rename from `merge_face_vector_with_property'. + Add new `err_msgs' and `named_merge_points' args. Return error + status. Only print error messages if ERR_MSGS is true. Don't try to + do :inherit attribute validation. + (merge_face_heights): Handle `unspecified' in both directions. + (merge_face_vectors): Rename `cycle_check' arg to `named_merge_points'. + Call `merge_face_ref' instead of `merge_face_inheritance'. + (Fdisplay_supports_face_attributes_p, Fface_attributes_as_vector) + (compute_char_face, face_at_buffer_position) + (face_at_string_position): Call `merge_face_ref' instead of + `merge_face_vector_with_property'. + +2004-06-07 Kenichi Handa + + * coding.c (find_safe_codings): Check NILP (safe_codings) only at + the necessary places. + +2004-06-07 Kim F. Storm + + * process.c (Fdelete_process): Undo 2004-05-28 change. + Instead, call status_notify also for network process. + (status_message): Use process instead of status as arg. + Give messages "deleted" or "connection broken by remote peer" for + an exited network process. + (status_notify): Change call to status_message. + (read_process_output): Increase readmax to 4096. Do not increase + buffer size for datagram channels (default is now large enough). + +2004-06-06 Steven Tamm + + * macfns.c (x_create_tip_frame): Fix Mac OS X 10.1 compilation + problem due to newly defined variable. + +2004-06-06 Miles Bader + + * xfaces.c (Fdisplay_supports_face_attributes_p): Give up + immediately if non-interactive or not initialized. + +2004-06-05 Richard M. Stallman + + * minibuf.c (Fcompleting_read): Doc fix. + +2004-06-05 Andreas Schwab + + * macfns.c (x_create_tip_frame): Fix declaration after statement. + +2004-06-05 Juanma Barranquero + + * keymap.c (Fdescribe_vector): Fix docstring. + (Fkey_description, Fglobal_key_binding): Fix typo in docstring. + +2004-06-05 Miles Bader + + * xfaces.c (tty_supports_face_attributes_p): Make sure the specified + attributes have different values than the default face. + +2004-06-04 Eli Zaretskii + + * xfaces.c (x_supports_face_attributes_p): Make this function + conditional on HAVE_WINDOW_SYSTEM. + (Fdisplay_supports_face_attributes_p) [HAVE_WINDOW_SYSTEM]: + Don't call x_supports_face_attributes_p if it was not compiled in. + +2004-06-04 Miles Bader + + * xfaces.c (tty_supports_face_attributes_p): New function, mostly + from Ftty_supports_face_attributes_p. + (x_supports_face_attributes_p): New function. + (Ftty_supports_face_attributes_p): Function deleted. + (Fdisplay_supports_face_attributes_p): New function. + (syms_of_xfaces): Initialize Sdisplay_supports_face_attributes_p. + (face_attr_equal_p): New function. + (lface_equal_p): Use it. + +2004-06-03 Juanma Barranquero + + * w32fns.c (Fx_display_grayscale_p, Fw32_send_sys_command) + (Vw32_color_map): Fix typo in docstring. + (Fx_create_frame, Fw32_find_bdf_fonts, Fx_show_tip) + (Fw32_unregister_hot_key, Fw32_reconstruct_hot_key): + Make argument names match their use in docstring. + +2004-06-02 Juanma Barranquero + + Work around bugs/problems with MinGW builds of graphics libraries + called from MSVC builds of Emacs. + + * image.c (lookup_image): Make pointer to img static. + (png_read_from_memory): Disable "global" optimization. + +2004-06-01 Stefan Monnier + + * eval.c (Fcondition_case): Fix usage. Simplify. + + * mem-limits.h (EXCEEDS_LISP_PTR) [USE_LSB_TAG]: Never true. + +2004-05-29 YAMAMOTO Mitsuharu + + * macfns.c: Don't include ccl.h. + [MAC_OSX]: Don't include QuickTime/QuickTime.h. + [!MAC_OSX]: Don't include alloca.h, Windows.h, Gestalt.h, or + TextUtils.h. + (Fx_create_frame): Sync with xfns.c. Initialize cursor descriptors. + (Fx_display_mm_height, Fx_display_mm_width): Calculate length from + display height/width. + (compute_tip_xy, Vx_max_tooltip_size): Declare. + (unwind_create_tip_frame, compute_tip_xy): New functions. + (x_create_tip_frame, Fx_show_tip, Fx_hide_tip): Sync with xfns.c. + (syms_of_macfns): Initialize Qcancel_timer, Vx_max_tooltip_size, + and last_show_tip_args. + + * macgui.h [!MAC_OSX]: Include Gestalt.h. + (Cursor, No_Cursor): New defines. + [!TARGET_API_MAC_CARBON] (SetPortWindowPort): New compatibility macro. + [!TARGET_API_MAC_CARBON] (arrow_cursor): Declare. + + * macmenu.c (mac_menu_show, mac_dialog): Use SetPortWindowPort. + + * macterm.c: Don't include Gestalt.h. + (enum mouse_tracking_type, mouse_tracking_in_progress): Remove. + (XDrawLine, XClearArea, XClearWindow, mac_draw_bitmap) + (mac_set_clip_rectangle, mac_reset_clipping, XCreatePixmap) + (XFillRectangle, mac_draw_rectangle, mac_draw_string_common) + (mac_copy_area, mac_copy_area_with_mask, x_update_end) + (construct_mouse_click, XTmouse_position) + (x_scroll_bar_report_motion, x_calc_absolute_position) + (do_mouse_moved, do_zoom_window, mac_do_receive_drag) + (XTread_socket, make_mac_frame): Use SetPortWindowPort. + (note_mouse_movement): Clear the mouse face and reset the pointer + shape when the pointer goes outside the frame without grabbing. + (mac_front_window): New function. + (mac_window_to_frame): New macro. + (XTmouse_position, x_scroll_bar_report_motion, do_window_update) + (do_window_activate, do_window_deactivate, do_app_resume) + (do_app_suspend, do_mouse_moved, do_menu_choice, do_grow_window) + (do_zoom_window, mac_do_receive_drag, XTread_socket) + (mac_check_for_quit_char): Use mac_front_window and/or + mac_window_to_frame. + (x_scroll_bar_handle_click): Set `(PORTION . WHOLE)' part in a + scroll-bar click event. + (mac_define_frame_cursor): Change the pointer shape. + (x_free_frame_resources): Reset tip_window to NULL when it is + disposed of. + [!TARGET_API_MAC_CARBON] (arrow_cursor): New variable. + [!TARGET_API_MAC_CARBON] (do_init_managers): Initialize arrow_cursor. + (do_window_update): Don't do anything if the updated window is the + tooltip window. + (do_mouse_moved): Handle mouse movement events here (previously in + XTread_socket). Clear the mouse face if + dpyinfo->mouse_face_hidden is set. + (do_os_event, do_events): Remove (now in XTread_socket). + (XTread_socket): Immediately return if interrupt_input_blocked. + Loop until all the events in the queue are processed. + Rearrange codes for mouse grabbing. Add tooltip support. Include the + contents of do_os_event and do_events. Remove mouse movement + handling (now in do_mouse_moved). Add the case where + Vmouse_highlight has an integer value. + (NewMacWindow): Remove. + (make_mac_frame): Do what NewMacWindow previously did. Don't do + excess initializations. + (make_mac_terminal_frame): Previous initializations in + make_mac_frame are moved here. + (mac_initialize_display_info): + Initialize dpyinfo->mouse_face_overlay and dpyinfo->mouse_face_hidden. + + * xdisp.c [MAC_OS] (No_Cursor): Remove variable. + (define_frame_cursor1): Don't treat HAVE_CARBON as a special case. + +2004-05-29 Richard M. Stallman + + * lisp.h (truncate_undo_list): Update decl. + + * alloc.c (undo_outer_limit): New variable. + (syms_of_alloc): Defvar it. + (Fgarbage_collect): Pass undo_outer_limit to truncate_undo_list. + + * undo.c (truncate_undo_list): New arg LIMITSIZE. + + * alloc.c (lisp_align_malloc): Check for base == 0 + regardless of HAVE_POSIX_MEMALIGN. + Clean up HAVE_POSIX_MEMALIGN handling of `err'. + +2004-05-28 Stefan Monnier + + * alloc.c: Undo Kim's recent changes and fix the same bug differently. + (marker_blocks_pending_free): Remove. + (Fgarbage_collect): Sweep after cleaning up undo-lists. + Mark the undo lists after claning them up. + Don't free block in marker_blocks_pending_free. + (mark_buffer): Don't mark undo_list. + (gc_sweep): Sweep hash-tables and strings first. + Do free marker blocks that are empty. + +2004-05-28 Jim Blandy + + * regex.c (print_partial_compiled_pattern): Add missing 'break' + after 'case wordend'. For symbeg and symend, print to stderr, + like the other cases. + +2004-05-28 Noah Friedman + + * process.c (Fdelete_process): Do not call remove_process. + +2004-05-28 Stefan Monnier + + * alloc.c (struct backtrace): Remove. + (Fgarbage_collect): Use the new mark_backtrace. + + * eval.c (mark_backtrace): New function. + + * minibuf.c (run_exit_minibuf_hook): New function. + (read_minibuf_unwind): Don't run exit-minibuffer-hook any more. + (read_minibuf): Use separate unwind handler to run exit-minibuf-hook. + +2004-05-27 Kim F. Storm + + * xdisp.c (back_to_previous_visible_line_start): Skip backwards + over display properties, e.g. images, that replace buffer text. + +2004-05-25 Kim F. Storm + + * alloc.c (marker_blocks_pending_free): New var. + (gc_sweep): Store free marker blocks on that list. + (Fgarbage_collect): Free them after undo-list cleanup. + + * process.c (wait_reading_process_input): Check connect_wait_mask + before actually accepting connection in case it has already been + accepted due to recursion. + +2004-05-23 K,Aa(Broly L$,1 q(Brentey + + * coding.c (Fset_safe_terminal_coding_system_internal): + Set suppress_error in safe_terminal_coding, not terminal_coding. + +2004-05-22 Richard M. Stallman + + * alloc.c (Fmake_string): Doc fix. + + * buffer.c (clone_per_buffer_values): Copy the alist of local vars, + and the alist pairs too. + + * casefiddle.c (casify_object): Return OBJ unchanged if not real char. + + * emacs.c (main): Update copyright year. + + * fileio.c (Fread_file_name): Expand DIR if not absolute. + + * insdel.c (del_range_2, replace_range): Don't write an anchor + if the gap is empty. + + * xdisp.c (try_scrolling): If scroll-up-aggressively or + scroll-down-aggressively is small but positive, put point + near the screen edge. + +2004-05-22 Juanma Barranquero + + * keymap.c (Fdefine_key): Doc fix. + +2004-05-22 Kim F. Storm + + * alloc.c (struct backtrace): Add debug_on_exit member. + (Fgarbage_collect): Clear out buffer undo_list markers after gc_sweep. + Identify those markers as Lisp_Misc_Free objects. Clear car and cdr of + the removed cons cells. + (mark_object): Undo previous change - disallow Lisp_Misc_Free objects. + (gc_sweep): Clear cons_blocks before sweeping strings, so we don't have + any cons cells pointing to unallocated stings. + Do not lisp_free any marker blocks, as there may still be pointers + to them from buffer undo lists at this stage of GC. + + * keyboard.c (struct backtrace): Add debug_on_exit member. + (Fcommand_execute): Clear it. + +2004-05-20 Luc Teirlinck + + * intervals.c (lookup_char_property): Do not prematurely return nil. + +2004-05-19 Jim Blandy + + Add support for new '\_<' and '\_>' regexp operators, matching the + beginning and end of symbols. + + * regex.c (enum syntaxcode): Add Ssymbol. + (init_syntax_once): Set the syntax for '_' to Ssymbol, not Sword. + (re_opcode_t): New opcodes `symbeg' and `symend'. + (print_partial_compiled_pattern): Print the new opcodes properly. + (regex_compile): Parse the new operators. + (analyse_first): Skip sym(beg|end) (they match only the empty string). + (mutually_exclusive_p): `symend' is mutually exclusive with \s_ and + \sw; `symbeg' is mutually exclusive with \S_ and \Sw. + (re_match_2_internal): Match symbeg and symend. + + * search.c (trivial_regexp_p): \_ is no longer a trivial regexp. + +2004-05-19 Kim F. Storm + + * .gdbinit (xsymbol): Fix last change. + +2004-05-18 Stefan Monnier + + * .gdbinit (xprintstr): New fun. + (xstring, xprintsym): Use it. + + * w32proc.c (create_child): Use INTMASK. + + * alloc.c (Fgarbage_collect): Do all the marking before flushing + unmarked elements of the undo list. + +2004-05-18 David Ponce + + * print.c (print): Reset print_depth before to call print_object. + +2004-05-18 Jason Rumney + + * w32console.c: Prefix RIF functions with w32con_ to avoid + namespace clash with functions in term.c and w32term.c. + + * w32menu.c (add_menu_item, w32_menu_display_help) + [USE_LISP_UNION_TYPE]: Cast from Lisp_Object using i member. + + * w32term.h (display_x_get_resource, vga_stdcolor_name): Add prototype. + +2004-05-18 Eli Zaretskii + + * lisp.h (DECL_ALIGN): Remove restriction on MS-DOS systems. + + * msdos.c (syms_of_msdos): Initialize dos-unsupported-char-glyph + with make_number. + (IT_write_glyphs): Extract glyph from dos-unsupported-char-glyph + with XINT. + +2004-05-18 Kim F. Storm + + * blockinput.h (INPUT_BLOCKED_P): New macros. + + * keyboard.c (Frecursive_edit): Return immediately if input blocked. + (Ftop_level): Unblock input if blocked. + + * buffer.h (GET_OVERLAYS_AT): New macro. + * msdos.c (IT_note_mouse_highlight): Use it. + * textprop.c (get_char_property_and_overlay): Use it. + * xdisp.c (next_overlay_change, note_mouse_highlight): Use it. + * xfaces.c (face_at_buffer_position): Use it. + + * print.c (print_object): Increase buf size. + +2004-05-17 Jason Rumney + + * w32fns.c (Fw32_register_hot_key, Fw32_unregister_hot_key) + (Fw32_toggle_lock_key) [USE_LISP_UNION_TYPE]: Cast from + Lisp_Object using i member. + (w32_quit_key): Rename from Vw32_quit_key, and make an int. + (syms_of_w32fns, globals_of_w32fns): Use Lisp_Object and int + consistently. + + * w32proc.c (create_child): Use make_number instead of masking pid. + + * w32fns.c (w32_color_map_lookup): Return a Lisp_Object. + (x_to_w32_charset, w32_to_x_charset, w32_to_all_x_charsets): + Use EQ to compare Lisp_Objects. + (w32_parse_hot_key): Use int for lisp_modifiers consistently. + + * w32term.c (w32_num_mouse_buttons): Rename from + Vw32_num_mouse_buttons and make it an int. + + * w32.c (init_environment): Use it. + + * w32fns.c (w32_wnd_proc): Likewise. + + * w32proc.c (w32_pipe_read_delay): Rename from + Vw32_pipe_read_delay and make it an int. + + * w32.c (_sys_read_ahead): Use it. + + * lisp.h (egetenv) [USE_CRT_DLL]: Remove condition. + + * w32proc.c (create_child) [USE_LSB_TAG]: Don't try to mask pid. + + * w32inevt.c (w32_console_mouse_position, do_mouse_event) + (key_event): Don't mix Lisp_Object and int. + + * w32heap.c (init_heap) [USE_LSB_TAG]: Don't check heap location. + + * keyboard.c (kbd_buffer_get_event): Don't use event->code and + modifiers in language change event. + +2004-05-17 Kim F. Storm + + * alloc.c (mark_object): Ignore Lisp_Misc_Free objects. + Such objects may be freed markers which still exist on an undo list. + +2004-05-16 Juanma Barranquero + + * data.c (Fset_default): Make argument names match their use in + docstring. + +2004-05-15 Andreas Schwab + + * emacs.c (gdb_array_mark_flag): Define. + * .gdbinit: Mask off gdb_array_mark_flag from vector sizes. + +2004-05-15 Eli Zaretskii + + * lisp.h (DECL_ALIGN) [MSDOS]: Don't define DECL_ALIGN to use + __attribute__((__aligned__)), so that USE_LSB_TAG would not become + defined for the MS-DOS build. + +2004-05-14 Stefan Monnier + + * w32fns.c (Fw32_define_rgb_color): Avoid XSET. + +2004-05-14 Kenichi Handa + + * ccl.c (Fccl_execute_on_string): Fix setting elements of STATUS. + +2004-05-14 YAMAMOTO Mitsuharu + + * lisp.h (Vx_resource_name, Vx_resource_class): Move from xfns.c + section to frame.c section. + (Fxw_display_color_p, Fx_file_dialog): Declare if + HAVE_WINDOW_SYSTEM defined. + + * macfns.c (Fx_create_frame): Fix int/Lisp_Object mixup. + + * macmenu.c (set_frame_menubar): Use NILP to test a lisp value. + + * macterm.c (mac_get_emulated_btn, mac_event_to_emacs_modifiers) + (mac_get_mouse_btn): Use NILP and EQ to test/compare lisp values. + (XTread_socket): Fix int/Lisp_Object mixup. + (mac_check_for_quit_char): Fix pointer/Lisp_Object mixup. + + * macterm.h (struct frame, struct face, struct image) + (display_x_get_resource, Fx_display_color_p) + (Fx_display_grayscale_p, Fx_display_planes, x_free_gcs): + Add prototypes. + +2004-05-14 Kim F. Storm + + * process.c (wait_reading_process_input): Make reentrant. + Make Available and Connecting non-static. Save and restore value + of waiting_for_user_input_p. + +2004-05-13 Kim F. Storm + + * keyboard.c (mark_kboards): Don't mark x and y members + that are overloaded in selection request events. + +2004-05-13 Stefan Monnier + + * lisp.h (USE_LSB_TAG): Make it the default when it is known to work. + +2004-05-13 Glenn Morris + + * window.c (Fdisplay_buffer, Fsplit_window) + (split-height-threshold): Doc fix. + +2004-05-13 Juanma Barranquero + + * xfaces.c (Ftty_supports_face_attributes_p) + (Finternal_copy_lisp_face): Fix typo in docstring. + (Finternal_get_lisp_face_attribute): Fix docstring. + +2004-05-12 Jan Dj,Ad(Brv + + * xfns.c (syms_of_xfns): Provide x-toolkit also for GTK. + +2004-05-11 Steven Tamm + + * macfns.c (Fx_create_frame): Default to using tool-bar by + setting tool-bar-lines to 1 in default-frame-alist. + +2004-05-11 YAMAMOTO Mitsuharu + + * image.c (xpm_scan, xpm_make_color_table_v, xpm_put_color_table_v) + (xpm_get_color_table_v, xpm_make_color_table_h) + (xpm_put_color_table_h, xpm_get_color_table_h) + (xpm_str_to_color_key, xpm_load_image, xpm_load) + (syms_of_image): Support XPM on Carbon Emacs. Does not + depend on libXpm, but only supports XPM version 3 without extensions. + +2004-05-11 YAMAMOTO Mitsuharu + + * macterm.c (x_flush, XTframe_up_to_date): Use FRAME_MAC_P + instead of FRAME_X_P. + +2004-05-11 Kim F. Storm + + * process.c (read_process_output): Grow decoding_buf when needed; + this could cause a crash in allocate_string and compact_small_strings. + +2004-04-29 Jim Blandy + + * regex.c (mutually_exclusive_p): In 'case wordbeg', compare op2 + against proper opcode. + +2004-05-10 Juanma Barranquero + + * process.c (Fstart_process): Fix docstring. + + * charset.c (Fget_unused_iso_final_char): Fix typos in docstring. + (Fchar_bytes, Fchar_width, Fstring_width, Fchar_direction) + (Fsplit_char, Fchar_charset): Make argument names match their use + in docstring. + +2004-05-10 Richard M. Stallman + + * print.c (print_preprocess): Use being_printed, loop_count and + halftail to detect overdeep nesting and cyclic cdr chains. + +2004-05-10 Andreas Schwab + + * lisp.h (Fmake_symbolic_link): Declare. + + * fileio.c (Frename_file): Remove extra argument in call to + Fmake_symbolic_link. + +2004-05-10 Kim F. Storm + + * xdisp.c (calc_line_height_property): Use string position when + object is a string. + +2004-05-10 Kenichi Handa + + * print.c (temp_output_buffer_setup): Bind inhibit-read-only and + inhibit-modification-hooks to t temporarily before calling + Ferase_buffer. + + * xfns.c (x_create_tip_frame): Bind inhibit-read-only and + inhibit-modification-hooks to t temporarily before calling + Ferase_buffer. + + * w32fns.c (x_create_tip_frame): Bind inhibit-read-only and + inhibit-modification-hooks to t temporarily before calling + Ferase_buffer. + + * fns.c (count_combining): Delete it. + (concat): Don't check combining bytes. + +2004-05-09 Jason Rumney + + * w32fns.c (Vw32_ansi_code_page): New Lisp variable. + (globals_of_w32fns): Set it. + +2004-05-09 Piet van Oostrum + + * data.c (Fquo): Simplify. + +2004-05-08 Peter Whaite (tiny change) + + * data.c (Fquo): If any argument is float, do the computation in + floating point. + +2004-05-08 Juanma Barranquero + + * process.c (Fwaiting_for_user_input_p, Fmake_network_process) + (Fset_process_query_on_exit_flag, Vprocess_adaptive_read_buffering): + Fix spelling of Emacs on docstring. + (Fset_process_coding_system, Fprocess_coding_system) + (Fset_process_filter_multibyte, Fprocess_filter_multibyte_p): + Make argument names match their use in docstring. + (Fprocess_id, Fprocess_query_on_exit_flag, Finterrupt_process): + Fix docstring. + + * editfns.c (Finsert_buffer_substring): Make argument names match their + use in docstring. + + * syntax.c (Fmodify_syntax_entry): Fix docstring. + +2004-05-07 Steven Tamm + + * macterm.c (mac_check_for_quit_char): Adding BLOCK_INPUT + around call to ReceiveEvent to avoid certain crashes. + +2004-05-07 YAMAMOTO Mitsuharu + + * macterm.c (mac_draw_line_to_pixmap, XCreatePixmapFromBitmapData) + (mac_fill_rectangle_to_pixmap, mac_draw_rectangle_to_pixmap) + (mac_copy_area_to_pixmap, mac_copy_area_with_mask_to_pixmap): + Save/restore the current graphics port and device handle when + drawing into an offscreen graphics world. + + * image.c [MAC_OS] (XPutPixel, XGetPixel, image_load_qt_1) + (gif_load): Likewise. + +2004-05-07 Juanma Barranquero + + * window.c (Fset_window_buffer): Fix docstring. + +2004-05-06 Thien-Thi Nguyen + + * emacs.c (main) [VMS]: Fix var ref. + +2004-05-06 Romain Francoise + + * data.c (Fsetq_default): Fix docstring. + +2004-05-06 Jason Rumney + + * image.c (Display) [HAVE_NTGUI]: Redefine while loading xpm.h + to avoid name clash. + +2004-05-04 Jan Dj,Ad(Brv + + * fileio.c (barf_or_query_if_file_exists): Use lstat. + (Frename_file): Handle renaming of symlinks across file systems. + (Frename_file): Put symlink handling inside #ifdef S_IFLNK. + +2004-05-04 Kim F. Storm + + * xdisp.c (Qtotal): New var. + (syms_of_xdisp): Intern and staticpro it. + (calc_line_height_property): New arg total. Set it if + line-spacing property has format (total . VALUE). + (x_produce_glyphs): Ignore line-spacing if line-height is 0. + Handle total line-spacing property. + +2004-05-03 Jan Dj,Ad(Brv + + * gtkutil.c (xg_update_scrollbar_pos): Call XClearWindow to clear + "under" scroll bar when size/position changes. + +2004-05-03 Jason Rumney + + * makefile.nt: Remove. + +2004-05-02 Eli Zaretskii + + * syntax.h (SET_RAW_SYNTAX_ENTRY, SYNTAX_ENTRY_INT): + Avoid compiler warnings. + + * Makefile.in (region-cache.o): Depend on config.h. + +2004-05-02 Romain Francoise + + * indent.c (compute_motion): Save vpos in prev_vpos when dealing + with continuation lines, too. + +2004-05-02 Thien-Thi Nguyen + + * syssignal.h (init_signals): Move decl outside `#ifdef POSIX_SIGNALS'. + +2004-05-01 Stefan Monnier + + * xdisp.c (calc_line_height_property): YAILOM (yet another + int/Lisp_Object mixup). + +2004-05-01 Eli Zaretskii + + * msdos.c (top-level): Add "#pragma pack(0)" after , to + undo bad effect of pack(4) in some versions of system headers. + +2004-05-01 Jason Rumney + + * w32term.c (x_draw_hollow_cursor): Sync with xterm.c. + +2004-04-30 Kim F. Storm + + * buffer.c (syms_of_buffer) : Allow float value. + (syms_of_buffer) : Doc fix. + + * dispextern.h (struct it): Remove member use_default_face. + Add members override_ascent, override_descent, override_boff. + + * xdisp.c (init_iterator): Handle line-spacing float value. + Initialize override_ascent member. + (append_space_for_newline): Reset override_ascent. + Remove use_default_face. + (calc_line_height_property): New function to calculate value of + line-height and line-spacing properties. Look at overlays, too. + Set override_ascent, override_descent, override_boff members when + using another face than the current face. Float values are now + relative to the frame default font, by default; accept a cons + of ratio and face name to specify value relative to a specific face. + (x_produce_glyphs): Use calc_line_height_property. + Use override_ascent etc. when set to handle different face heights. + A negative line-spacing property value is interpreted as a total + line height, rather than inter-line spacing. + (note_mouse_highlight): Allocate room for 40 overlays initially. + +2004-04-29 Stefan Monnier + + * data.c (Fsubr_name): New fun. + (syms_of_data): Defsubr it. + +2004-04-29 Kim F. Storm + + * xdisp.c (null_glyph_slice): New var. + (append_glyph, append_composite_glyph, append_stretch_glyph): + Use it to initialize glyph slice. + +2004-04-27 Stefan Monnier + + * xdisp.c (x_produce_glyphs): Fix the proverbial int/Lisp_Object mixup. + (on_hot_spot_p): Make sure we always return a value. + (Flookup_image_map): Remove unused var ix and iy. + (note_mode_line_or_margin_highlight): Remove unused var `image'. + +2004-04-27 Eli Zaretskii + + * msdos.c (init_environment): If one of the TMP... environment + variables is set to a drive letter without a trailing slash, + append a slash. + +2004-04-27 Matthew Mundell + + * editfns.c (lisp_time_argument): Provide externally. + + * fileio.c (Fset_file_times): New function. + (syms_of_fileio): Intern and staticpro it. + +2004-04-27 Kim F. Storm + + * xdisp.c (x_produce_glyphs): Fix last change; handle newline in + header line strings. + + * dispextern.h (struct it): New member use_default_face. + + * xdisp.c (Qline_height): New variable. + (syms_of_xdisp): Intern and staticpro it. + (append_space_for_newline): Partially undo 2004-04-25 change; + add default_face_p arg, and restore callers. + Clear it->use_default_face after use. + (x_produce_glyphs): Set default font for ascii char if + it->use_default_font is set. Change line-spacing property to set + just extra line spacing. Handle new line-height property. + +2004-04-26 Andreas Schwab + + * print.c (print_object): Print non-ascii characters in bool + vector representation as octal escapes. + + * lisp.h (BOOL_VECTOR_BITS_PER_CHAR): Define. + * print.c (print_object): Use it instead of BITS_PER_CHAR for + bool vectors. + * lread.c (read1): Likewise. + * alloc.c (Fmake_bool_vector): Likewise. + * data.c (Faref, Faset): Likewise. + * fns.c (Fcopy_sequence, concat, internal_equal, Ffillarray) + (mapcar1): Likewise. + +2004-04-26 Steven Tamm + + * lread.c (init_lread): Fix typo in HAVE_CARBON test logic. + +2004-04-26 Miles Bader + + * lisp.h (CYCLE_CHECK): Macro moved from xfaces.c. + +2004-04-26 Juanma Barranquero + + * buffer.c (Fpop_to_buffer): Fix docstring. + +2004-04-26 Steven Tamm + + * lread.c (init_lread): Don't display missing lisp directory + warnings with Carbon Emacs because self-contained bundled Emacs + may be built without correct installation path. + +2004-04-25 Kim F. Storm + + * macterm.c (x_draw_hollow_cursor): Fix height of box for narrow lines. + + * xterm.c (x_draw_hollow_cursor): Fix height of box for narrow lines. + + * xdisp.c (append_space_for_newline): Rename from append_space. + Remove DEFAULT_FACE_P arg; always use current face. Callers changed. + (x_produce_glyphs): Handle line-spacing property on newline char. + If value is t, adjust ascent and descent to fit current row height. + If value is an integer or float, set extra_line_spacing to integer + value, or to float value x current line height. + +2004-04-23 Kenichi Handa + + * fontset.c (Finternal_char_font): If POSITION is nil, return + font for displaying CH with the default face. + +2004-04-23 Juanma Barranquero + + * makefile.w32-in: Add "-*- makefile -*-" mode tag. + +2004-04-21 Stefan Monnier + + * lisp.h (XINT) [EXPLICIT_SIGN_EXTEND && !NO_UNION_TYPE]: + Don't make assumptions about the relative place of i and val. + (EQ) [!NO_UNION_TYPE]: Don't forget to check the type match as well. + +2004-04-21 Kim F. Storm + + * dispextern.h (struct glyph_slice): New struct. + (struct glyph): New member slice. + (GLYPH_SLICE_EQUAL_P): New macro. + (GLYPH_EQUAL_P): Use it. + (struct glyph_string): New member slice. + (struct it_slice): New struct. + (struct it): New member slice, add member to stack too. + New member constrain_row_ascent_descent_p. + (image_ascent): Add prototype. + + * dispnew.c (buffer_posn_from_coords): Return full image width + and height even for image slices (posn is relative to full image). + (marginal_area_string): Adjust x0,y0 for image slice. + + * image.c (image_ascent): Add slice arg; calculate ascent for + image slice (or full image). + + * keyboard.c (Fposn_at_x_y, Fposn_at_point): New defuns. + (syms_of_keyboard): Defsubr them. + + * lisp.h (pos_visible_p): Fix prototype. + + * macterm.c (x_draw_relief_rect): Add top_p and bot_p args. + (x_draw_glyph_string_box): Fix call to x_draw_relief_rect. + (x_draw_image_foreground, x_draw_image_relief) + (x_draw_image_foreground_1, x_draw_image_glyph_string): + Draw sliced images. + + * w32term.c (w32_draw_relief_rect): Add top_p and bot_p args. + (x_draw_glyph_string_box): Fix call to x_draw_relief_rect. + (x_draw_image_foreground, x_draw_image_relief) + (w32_draw_image_foreground_1, x_draw_image_glyph_string): + Draw sliced images. + + * w32term.h (image_ascent): Remove prototype. + + * window.c (Fpos_visible_in_window_p): Return pixel position if + PARTIALLY arg is non-nil. Simplify. Doc fix. + (Fwindow_vscroll, Fset_window_vscroll): Add optional PIXEL_P arg + to return/set vscroll in pixels. + + * window.h (Fwindow_vscroll, Fset_window_vscroll): Fix EXFUN. + + * xdisp.c (Qslice): New variable. + (syms_of_xdisp): Intern and staticpro it. + (pos_visible_p): Return pixel position in new x and y args. + (init_iterator): Reset it->slice info. + (handle_display_prop): Parse (slice ...) property. + (push_it, pop_it): Save/restore slice info. + (make_cursor_line_fully_visible): Fix 2004-04-14 change. Do not + force repositioning of tall row if window is vscrolled, as that + would reset vscroll. + (append_space): Set it->constrain_row_ascent_descent_p to avoid + increasing row height if row is non-empty. + (fill_image_glyph_string): Copy slice info. + (take_vertical_position_into_account): Simplify. + (produce_image_glyph): Handle iterator slice info, setup glyph + slice info. Do not force minimum line height. + (x_produce_glyphs): If it->constrain_row_ascent_descent_p is set, + do not increase height (ascent/descent) of non-empty row when + adding normal character glyph; instead reduce glyph ascent/descent + appropriately; if row is higher than current glyph, adjust glyph + descent/ascent to reposition glyph within the existing row. + Likewise, when char is newline, only set ascent/descent if row is + currently empty. + (note_mouse_highlight): Handle hotspots with sliced image. + + * xterm.c (x_draw_relief_rect): Add top_p and bot_p args. + (x_draw_glyph_string_box): Fix call to x_draw_relief_rect. + (x_draw_image_foreground, x_draw_image_relief) + (x_draw_image_foreground_1, x_draw_image_glyph_string): + Draw sliced images. + + * xterm.h (image_ascent): Remove prototype. + +2004-04-20 Stefan Monnier + + * keymap.c (Fkey_description): Fix the usual int/Lisp_Object mixup. + +2004-04-20 John Paul Wallington + + * fns.c (Fassoc, Feql): Fix indentation. + + * fontset.c (regularize_fontname): Rename from regulalize_fontname. + +2004-04-19 John Paul Wallington + + * fns.c (Feql): New function. + (syms_of_fns): Defsubr it. + +2004-04-18 Jason Rumney + + * w32select.c (Fw32_set_clipboard_data): Get sequence number + after closing the clipboard. + +2004-04-16 Luc Teirlinck + + * buffer.c (Fbuffer_base_buffer): Doc fix. + +2004-04-17 Kim F. Storm + + * keymap.c (Fkey_description): Add optional PREFIX arg. + Combine prefix with KEYS to make up the full key sequence to describe. + Correlate meta_prefix_char and following (simple) key to describe + as meta modifier. All callers changed. + (describe_map): Rename arg `keys' to `prefix'. Remove local + `elt_prefix' var. Use Fkey_description with prefix instead of + elt_prefix combined with Fsingle_key_description. + (describe_vector): Declare static. Replace arg `elt_prefix' with + `prefix'. Add KEYMAP_P arg. Add local var `elt_prefix'; use it + if !KEYMAP_P. Use Fkey_description with prefix instead of + Fsingle_key_description. + + * keymap.h (Fkey_description): Fix prototype. + (describe_vector): Remove prototype. + + * xdisp.c (update_overlay_arrows): Fix handling of up_to_date < 0. + + * image.c (PNG_BG_COLOR_SHIFT): Remove. + (png_load): Fix calculation of transparent background color on X + and W32 platforms. + +2004-04-16 Juanma Barranquero + + * xdisp.c (try_scrolling): Make sure `scroll-conservatively' is + not too large before computing how much to scroll. + +2004-04-15 Stefan Monnier + + * dired.c (Ffile_attributes): Don't pass extra nil arg to file-handler. + +2004-04-14 Luc Teirlinck + + * fileio.c (Fverify_visited_file_modtime, Fvisited_file_modtime): + Add hyperlink to Elisp manual to the docstring. + +2004-04-14 Stefan Monnier + + * callint.c (fix_command): Use XDCR. + +2004-04-14 Nick Roberts + + * window.c (Fget_lru_window): Doc fix. + +2004-04-14 Kim F. Storm + + * editfns.c (Fformat): Fix allocation size of precision array. + + * dispnew.c (update_window): Only set changed_p if + scrolling_window actually did scroll. + (scrolling_window): Only return 1 if we actually did scroll. + + * xdisp.c (get_glyph_string_clip_rect): Fix reduction of cursor + height to glyph height when cursor row is not fully visible. + (make_cursor_line_fully_visible): Add FORCE_P arg to return + failure in case row is higher than window. Callers changed. + (try_scrolling): Fix loop in scrolling if last_line_misfit (from Gerd). + Try to scroll partially visible, higher-than-window cursor row. + (redisplay_window): Always try to scroll partially visible, + higher-than-window cursor row - both initially and again with + centering_position = 0. + Clear desired matrix before retrying with centering_position = 0. + +2004-04-13 Stefan Monnier + + * syntax.c (scan_lists): Simplify backward string scan. + Fix off-by-one boundary check for string and comment fences. + +2004-04-13 Joe Buehler + + * sheap.c, unexcw.c: New files. + +2004-04-12 Luc Teirlinck + + * buffer.c (Fmake_indirect_buffer): Throw an error if the intended + base buffer has been killed. Correct the error message if the + base buffer does not exist. + +2004-04-12 Joe Buehler + + * s/cygwin.h: Changes for Cygwin unexec() support, changes in + Cygwin itself. Add support for Xaw3d scrollbars. + + * puresize.h: Set up PURE_P() for Cygwin unexec() support. + + * lastfile.c: Define my_endbss[] for Cygwin unexec() support. + + * gmalloc.c (__default_morecore): Use bss_sbrk(), not __sbrk(), + before Cygwin unexec. + + * Makefile.in: Link changes for Cygwin unexec() support. + +2004-04-12 Andreas Schwab + + * buffer.c (Fmake_indirect_buffer): Check that NAME is a string. + +2004-04-11 Luc Teirlinck + + * buffer.c (Fgenerate_new_buffer_name): Return NAME argument if + IGNORE argument equals NAME. Doc fix. + +2004-04-11 Masatake YAMATO + + * buffer.c (fix_start_end_in_overlays): Make overlays + empty if they are backwards. + +2004-04-09 Stefan Monnier + + * xfaces.c (face_color_supported_p): Fix compilation without X11. + +2004-04-07 Stefan Monnier + + * doc.c (Fsnarf_documentation): Ignore new file name entries. + +2004-04-06 Kim F. Storm + + * msdos.c (clear_mouse_face): Only clear mouse highlight if not hidden. + (dos_rawgetc): Set mouse_face_hidden after clearing highlight. + + * w32term.c (w32_read_socket): Set mouse_face_hidden after + clearing highlight. + + * xdisp.c (clear_mouse_face): Only clear mouse highlight if not hidden. + + * xterm.c (handle_one_xevent): Set mouse_face_hidden after + clearing highlight. + + * indent.c (vmotion): Do not reserve one column for continuation + marks on window frames. + +2004-04-04 Eli Zaretskii + + * charset.h (SINGLE_BYTE_CHAR_P): Fix macro to avoid warnings + from GCC. + +2004-04-03 Stefan Monnier + + * .gdbinit-union: Remove. + + * .gdbinit: Make it work for USE_LSB_TAG and !NO_LISP_UNION. + (xgetptr, xgetint, xgettype): New funs. Use them everywhere. + ($nonvalbits): Remove. + ($valmask): Set it by calling xreload to avoid redundancy. + + * emacs.c (gdb_use_union, gdb_use_lsb): New vars. + (gdb_emacs_intbits): Remove. + +2004-03-31 Jan Dj,Ad(Brv + + * data.c (Fbyteorder): Make test work even if unsigned is not 4 bytes. + +2004-03-30 Kenichi Handa + + * editfns.c (Fformat): Fix initialization of the array info. + +2004-03-30 Kim F. Storm + + * xterm.c (x_mouse_click_focus_ignore_position): New var. + (syms_of_xterm): DEFVAR_BOOL it. + (ignore_next_mouse_click_timeout): New var. + (handle_one_xevent): Clear it on KeyPress, set it on EnterNotify. + Use it to filter mouse clicks following focus event. + +2004-03-29 David Ponce + + * callint.c (Fcall_interactively): Fix last change. + +2004-03-28 Stefan Monnier + + * eval.c (Fcommandp): Simplify. + + * data.c (Finteractive_form): Rename from Fsubr_interactive_form. + Extend to handle all kinds of functions. + + * lisp.h (Finteractive_form): Declare. + + * callint.c (Fcall_interactively): Use it. + +2004-03-26 Kim F. Storm + + * xdisp.c (syms_of_xdisp): Include `void-variable' in list_of_error + to catch errors in calc_pixel_width_or_height during redisplay. + +2004-03-26 Masatake YAMATO + + * buffer.c (fix_start_end_in_overlays): Rename fix_overlays_in_range. + + * lisp.h (fix_start_end_in_overlays): Likewise. + + * insdel.c (adjust_markers_for_insert): Call fix_start_end_in_overlays. + + * editfns.c (Ftranspose_regions): Likewise. + +2004-03-20 Jan Dj,Ad(Brv + + * xterm.c (handle_one_xevent): Do not pass key press events to GTK. + +2004-03-19 Richard M. Stallman + + * s/sol2-6.h: Delete previous change. + +2004-03-19 Kim F. Storm + + * xdisp.c (move_it_in_display_line_to): Fix MOVE_TO_POS case when + to_charpos corresponds to newline in right fringe. Use local + BUFFER_POS_REACHED_P macro. + +2004-03-19 Jan Dj,Ad(Brv + + * xdisp.c (calc_pixel_width_or_height): Add ifdef HAVE_WINDOW_SYSTEM + to compile on non-window system. + +2004-03-19 Kim F. Storm + + * dispextern.h (calc_pixel_width_or_height): Add prototype. + + * image.c (Qcenter): Move to xdisp.c. + + * xdisp.c (Qcenter): Declare here. + (syms_of_xdisp): Intern and staticpro it. + (handle_single_display_prop): Allow space display property on all + platforms. + (display_mode_line): Set mode_line_p before displaying line. + (calc_pixel_width_or_height): Declare extern. Add separate :align-to + handling. Remove complex cases for fringes and scroll-bars. + Add left, right, and center alignment positions. Add text (area) + width/height. Return width or height for image specs. + (produce_stretch_glyph): Improve handling of :align-to. Is now + relative to left of text area by default, but other base offsets + can be specified -- also for text lines. + + * term.c (produce_glyphs): Handle IT_STRETCH. + (produce_stretch_glyph): New function to handle space width and + align-to display properties on non-window systems. + +2004-03-17 Stefan Monnier + + * fileio.c (Fread_file_name): Set completion-ignore-case for + case-insensitive systems. + +2004-03-14 Masatake YAMATO + + * xdisp.c (note_mode_line_or_margin_highlight): Accept HEADER_LINE + when keymap and cursor are setup. + +2004-03-14 Steven Tamm + + * Makefile.in (XMENU_OBJ) [HAVE_CARBON]: Do not include xmenu.o. + +2004-03-14 Kim F. Storm + + * dispextern.h (x_find_image_file): Add prototype. + + * image.c (x_find_image_file): Make extern. + + * xfns.c (x_find_image_file): Remove prototype. + +2004-03-13 Eli Zaretskii + + * Makefile.in (XMENU_OBJ): Include xmenu.o if HAVE_MENUS is defined. + + * emacs.c (main): Call syms_of_xmenu only if HAVE_MENUS is defined. + +2004-03-12 Richard M. Stallman + + * fns.c (internal_equal): New arg PROPS controls comparing + text properties. All callers changed. + (Fequal_including_properties): New function. + (syms_of_fns): defsubr it. + +2004-03-12 Kim F. Storm + + Fix image support on MAC. From YAMAMOTO Mitsuharu. + + * dispextern.h (XImagePtr, XImagePtr_or_DC): Add typedefs. + (image_background, image_background_transparent): Fix prototypes. + + * image.c (XImagePtr, XImagePtr_or_DC): Move typedefs to dispextern.h. + + * macfns.c (x_list_fonts, x_get_font_info, x_load_font) + (x_query_font, x_find_ccl_program, x_set_window_size) + (x_make_frame_visible, mac_initialize, XCreatePixmap) + (XCreatePixmapFromBitmapData, XFreePixmap, XSetForeground) + (mac_draw_line_to_pixmap): Move prototypes to macterm.h. + + * macterm.h (x_list_fonts, x_get_font_info, x_load_font) + (x_query_font, x_find_ccl_program, x_set_window_size) + (x_make_frame_visible, mac_initialize, XCreatePixmap) + (XCreatePixmapFromBitmapData, XFreePixmap, XSetForeground) + (mac_draw_line_to_pixmap): Add prototypes. + +2004-03-12 YAMAMOTO Mitsuharu + + * macterm.c (XTread_socket): Fix mouse click on tool bar. + +2004-03-11 Kim F. Storm + + * dispextern.h: Move image related prototypes from xfns.c section + to image.c. Condition them by HAVE_WINDOW_SYSTEM rather than + HAVE_X_WINDOWS. + + * Makefile.in (XOBJ): Consolidate into one list. Add image.o. + Move gtkutil.o to new GTK_OBJ list. + (XMENU_OBJ) [HAVE_MENUS]: Move declaration to proper place. + (GTK_OBJ) [USE_GTK]: New declaration. + (obj): Add $(GTK_OBJ) to list. + +2004-03-11 Steven Tamm + + * image.c [MAC_OSX]: Include sys/stat.h. + + * macfns.c (syms_of_macfns): Remove definitions of things now + defined in image.c. + +2004-03-11 Kim F. Storm + + The following changes consolidates the identical/similar image + support code previously found in xfns.c, w32fns.c, and macfns.c + into a new file image.c. + + * makefile.w32-in (OBJ1): Add image.o. + ($(BLD)/image.$(O)): Add dependencies. + + * Makefile.in (XOBJ, MAC_OBJ): Add image.o. + (image.o): Add dependencies. + + * image.c: New file with consolidated image support code. + (COLOR_TABLE_SUPPORT): New define to control whether + color table support is available (X only). + (Bitmap_Record): Common name for x_bitmap_record, + w32_bitmap_record, and mac_bitmap_record. + (XImagePtr): Common name for pointer to XImage or equivalent. + (XImagePtr_or_DC): New type to simplify code sharing; equivalent + to XImagePtr on X+MAC, and to HDC on W32. + (GET_PIXEL): Wrapper for XGetPixel or equivalent. + (NO_PIXMAP): Common name for "None" or equivalent. + (PNG_BG_COLOR_SHIFT): Bits to shift PNG background colors. + (RGB_PIXEL_COLOR): Common type for an integer "pixel color" value. + (PIX_MASK_RETAIN, PIX_MASK_DRAW): Portability macros (from macfns.c). + (FRAME_X_VISUAL, x_defined_color, DefaultDepthOfScreen): + Define with suitable equivalents on W32 and MAC for code sharing. + (XDrawLine): Define on MAC for code sharing. + (Destroy_Image, Free_Pixmap): Wrappers for code sharing. + (IF_LIB_AVAILABLE): Macro to simplify code sharing. + (Vx_bitmap_file_path, Vimage_cache_eviction_delay) + (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) + (x_reference_bitmap, x_create_bitmap_from_data) + (x_create_bitmap_from_file, x_destroy_bitmap) + (x_destroy_all_bitmaps, x_create_bitmap_mask) + (XGetImage, XPutPixel, XGetPixel, XDestroyImage) + (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols) + (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask) + (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter) + (define_image_type, lookup_image_type, valid_image_p) + (image_error, enum image_value_type, struct image_keyword) + (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) + (make_image, free_image, prepare_image_for_display, image_ascent) + (four_corners_best, image_background, image_background_transparent) + (x_clear_image_1, x_clear_image, x_alloc_image_color) + (make_image_cache, free_image_cache, clear_image_cache) + (Fclear_image_cache, postprocess_image, lookup_image, cache_image) + (forall_images_in_image_cache, x_create_x_image_and_pixmap) + (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file) + (find_image_fsspec, image_load_qt_1, image_load_quicktime) + (init_image_func_pointer, image_load_quartz2d) + (struct ct_color, init_color_table, free_color_table) + (lookup_rgb_color, lookup_pixel_color, colors_in_color_table) + (cross_disabled_images, x_to_xcolors, x_from_xcolors) + (x_detect_edges, x_emboss, x_laplace, x_edge_detection) + (x_disable_image, x_build_heuristic_mask) + (XBM support, XPM support, PBM support, PNG support, JPEG support) + (TIFF support, GIF support, Ghostscript support): Consolidate image + code from xfns.c, w32fns.c, and macfns.c. + (syms_of_image): Consolidate image related symbol setup here. + (init_image): Consolidate image related initializations here. + + * emacs.c (main) [HAVE_WINDOW_SYSTEM]: Add calls to syms_of_image + and init_image. Remove call to init_xfns. + + * macterm.h (struct mac_bitmap_record): Add file member. + Not currently used, but simplifies code sharing. + + * macfns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay) + (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) + (x_reference_bitmap, x_create_bitmap_from_data) + (x_create_bitmap_from_file, x_destroy_bitmap) + (x_destroy_all_bitmaps, x_create_bitmap_mask) + (XGetImage, XPutPixel, XGetPixel, XDestroyImage) + (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols) + (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask) + (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter) + (define_image_type, lookup_image_type, valid_image_p) + (image_error, enum image_value_type, struct image_keyword) + (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) + (make_image, free_image, prepare_image_for_display, image_ascent) + (four_corners_best, image_background, image_background_transparent) + (x_clear_image_1, x_clear_image, x_alloc_image_color) + (make_image_cache, free_image_cache, clear_image_cache) + (Fclear_image_cache, postprocess_image, lookup_image, cache_image) + (forall_images_in_image_cache, x_create_x_image_and_pixmap) + (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file) + (find_image_fsspec, image_load_qt_1, image_load_quicktime) + (init_image_func_pointer, image_load_quartz2d) + (struct ct_color, init_color_table, free_color_table) + (lookup_rgb_color, lookup_pixel_color, colors_in_color_table) + (cross_disabled_images, x_to_xcolors, x_from_xcolors) + (x_detect_edges, x_emboss, x_laplace, x_edge_detection) + (x_disable_image, x_build_heuristic_mask) + (XBM support, XPM support, PBM support, PNG support, JPEG support) + (TIFF support, GIF support, Ghostscript support): Merge with image + code from xfns.c and macfns.c into image.c. + (syms_of_xfns): Move image related symbols to image.c. + (init_external_image_libraries, init_xfns): Remove; initialization + moved to init_image in image.c. + + * w32fns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay) + (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) + (x_reference_bitmap, x_create_bitmap_from_data) + (x_create_bitmap_from_file, x_destroy_bitmap) + (x_destroy_all_bitmaps, x_create_bitmap_mask) + (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols) + (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask) + (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter) + (define_image_type, lookup_image_type, valid_image_p) + (image_error, enum image_value_type, struct image_keyword) + (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) + (make_image, free_image, prepare_image_for_display, image_ascent) + (four_corners_best, image_background, image_background_transparent) + (x_clear_image_1, x_clear_image, x_alloc_image_color) + (make_image_cache, free_image_cache, clear_image_cache) + (Fclear_image_cache, postprocess_image, lookup_image, cache_image) + (forall_images_in_image_cache, x_create_x_image_and_pixmap) + (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file) + (struct ct_color, init_color_table, free_color_table) + (lookup_rgb_color, lookup_pixel_color, colors_in_color_table) + (cross_disabled_images, x_to_xcolors, x_from_xcolors) + (x_detect_edges, x_emboss, x_laplace, x_edge_detection) + (x_disable_image, x_build_heuristic_mask) + (XBM support, XPM support, PBM support, PNG support, JPEG support) + (TIFF support, GIF support, Ghostscript support): Merge with image + code from xfns.c and macfns.c into image.c. + (syms_of_xfns): Move image related symbols to image.c. + (init_external_image_libraries, init_xfns): Remove; initialization + moved to init_image in image.c. + + * xfns.c (Vx_bitmap_file_path, Vimage_cache_eviction_delay) + (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) + (x_reference_bitmap, x_create_bitmap_from_data) + (x_create_bitmap_from_file, x_destroy_bitmap) + (x_destroy_all_bitmaps, x_create_bitmap_mask) + (QCascent, QCmargin, QCrelief, QCconversion, QCcolor_symbols) + (QCheuristic_mask, QCindex, QCmatrix, QCcolor_adjustment, QCmask) + (Qlaplace, Qemboss, Qedge_detection, Qheuristic, Qcenter) + (define_image_type, lookup_image_type, valid_image_p) + (image_error, enum image_value_type, struct image_keyword) + (parse_image_spec, image_spec_value, Fimage_size, Fimage_mask_p) + (make_image, free_image, prepare_image_for_display, image_ascent) + (four_corners_best, image_background, image_background_transparent) + (x_clear_image_1, x_clear_image, x_alloc_image_color) + (make_image_cache, free_image_cache, clear_image_cache) + (Fclear_image_cache, postprocess_image, lookup_image, cache_image) + (forall_images_in_image_cache, x_create_x_image_and_pixmap) + (x_destroy_x_image, x_put_x_image, x_find_image_file, slurp_file) + (struct ct_color, init_color_table, free_color_table) + (lookup_rgb_color, lookup_pixel_color, colors_in_color_table) + (cross_disabled_images, x_to_xcolors, x_from_xcolors) + (x_detect_edges, x_emboss, x_laplace, x_edge_detection) + (x_disable_image, x_build_heuristic_mask) + (XBM support, XPM support, PBM support, PNG support, JPEG support) + (TIFF support, GIF support, Ghostscript support): Merge with + w32fns.c and macfns.c image code into image.c. + (syms_of_xfns): Move image related symbols to image.c. + (init_xfns): Remove; initialization moved to init_image in image.c. + + * lisp.h (syms_of_image, init_image): Add protoypes. + (init_xfns): Remove prototype. + + * dispextern.h (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) + (x_reference_bitmap, x_create_bitmap_from_data) + (x_create_bitmap_from_file, x_destroy_bitmap) + (x_create_bitmap_mask): Move prototypes from dispextern.h. + (gamma_correct) [MAC_OS]: Add prototype. + + * xterm.h (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap) + (x_reference_bitmap, x_create_bitmap_from_data) + (x_create_bitmap_from_file, x_destroy_bitmap) + (x_create_bitmap_mask): Move prototypes to dispextern.h. + +2004-03-09 Kenichi Handa + + * coding.c (decode_coding_emacs_mule): Handle insufficent source + correctly. + +2004-03-04 Richard M. Stallman + + * s/sol2-6.h (LD_SWITCH_SYSTEM_TEMACS): New definition. + + * window.c (Fdisplay_buffer): Doc fix. + + * buffer.c (Fpop_to_buffer): Doc fix. + +2004-03-03 Kim F. Storm + + * xdisp.c (display_line): Fix call to get_overlay_arrow_glyph_row. + +2004-03-02 Stefan Monnier + + * editfns.c (Ftranslate_region): Lisp_Object/int mixup. + +2004-03-02 Richard M. Stallman + + * indent.c (compute_motion): Save vpos in prev_vpos, like hpos etc. + +2004-03-02 Kenichi Handa + + * doc.c (Fsubstitute_command_keys): Fix counding bytes. + +2004-03-02 Kim F. Storm + + * window.h (struct window): New member overlay_arrow_bitmap. + + * window.c (make_window): Initialize overlay_arrow_bitmap. + + * xdisp.c (Voverlay_arrow_variable_list): New variable to properly + implement and integrate multiple overlay arrows with redisplay. + (syms_of_xdisp): DEFVAR_LISP and initialize it. + (last_arrow_position, last_arrow_string): Replace by properties. + (Qlast_arrow_position, Qlast_arrow_string) + (Qoverlay_arrow_string, Qoverlay_arrow_bitmap): New variables. + (syms_of_xdisp): Intern and staticpro them. + (overlay_arrow_string_or_property, update_overlay_arrows) + (overlay_arrow_in_current_buffer_p, overlay_arrows_changed_p) + (overlay_arrow_at_row): New functions for multiple overlay arrows. + (redisplay_internal): Use them instead of directly accessing + Voverlay_arrow_position etc. for multiple overlay arrows. + (mark_window_display_accurate): Use update_overlay_arrows. + (try_cursor_movement): Use overlay_arrow_in_current_buffer_p. + (try_window_id): Use overlay_arrows_changed_p. + (get_overlay_arrow_glyph_row): Add overlay_arrow_string arg. + (display_line): Use overlay_arrow_at_row to check multiple + overlay arrows, and get relevant overlay-arrow-string and + overlay-arrow-bitmap. Set w->overlay_arrow_bitmap accordingly. + (produce_image_glyph): Set pixel_width = 0 for fringe bitmap. + (syms_of_xdisp): Remove last_arrow_position and last_arrow_string. + + * fringe.c (draw_fringe_bitmap): Use w->overlay_arrow_bitmap if set. + (update_window_fringes): Remove unused code. + +2004-03-01 Jason Rumney + + * w32term.c (w32_read_socket): Fix last change to ButtonPress handling. + +2004-03-01 Juanma Barranquero + + * fringe.c (Fdefine_fringe_bitmap): Fix typo in docstring. + + * makefile.w32-in ($(BLD)/fringe.$(O)): Add dependencies. + +2004-03-01 Jan Dj,Ad(Brv + + * xfns.c (Fx_display_color_cells): Use number of planes to calculate + how many colors can be displayed. + +2004-03-01 Kenichi Handa + + * editfns.c (Ftranslate_region): Handle multibyte chars in TABLE + correctly. + +2004-02-28 Kim F. Storm + + * dispnew.c (update_window): Update header line also if there are + no other changes in window (move code after set_cursor label). + + * lisp.h (mark_window_display_accurate): Remove prototype. + + * window.c (window_loop, Fforce_window_update): Force mode line + updates by setting prevent_redisplay_optimizations_p and + update_mode_lines. + +2004-02-28 Jan Dj,Ad(Brv + + * xfns.c (x_window): Fix indentation. + + * xterm.c (x_calc_absolute_position): Call x_real_positions + to get WM window sizes and use those to calculate position. + (x_set_offset): Remove code commented out. + +2004-02-28 Miles Bader + + * keyboard.c (adjust_point_for_property): #ifdef-out dodgy xassert. + +2004-02-28 Kim F. Storm + + * keyboard.c (kbd_buffer_store_event_hold): New function to store + an event into kbd fifo, but with special handling of quit event; + a quit event is saved for later, and further events are discarded + until the saved quit event has been processed. + (kbd_buffer_store_event): Use kbd_buffer_store_event_hold. + (gen_help_event): Store help event in kbd fifo. + (NREAD_INPUT_EVENTS): Remove. + (read_avail_input): Adapt to new read_socket_hook interface. + Remove allocation and initialization of local input_event buffer, + as read_socket_hook stores events directly in fifo. Allocate and + initialize local hold_quit event to handle postponed quit event + (and store it if set by kbd_buffer_store_event_hold). + + * keyboard.h (kbd_buffer_store_event_hold): Add prototype. + (gen_help_event): Fix prototype. + + * macterm.c (XTread_socket): Remove bufp_r and + numcharsp args. Add hold_quit arg. + Rework to use just one, local, inev input_event. Store inev + directly in fifo using kbd_buffer_store_event_hold. + + * sysdep.c (BUFFER_SIZE_FACTOR): Remove. + (read_input_waiting): Adapt to new read_socket_hook interface. + Remove allocation and initialization of local input_event buffer, + as read_socket_hook stores events directly in fifo. Allocate and + initialize local hold_quit event to handle postponed quit event + (and store it if set by kbd_buffer_store_event_hold). + + * term.c (read_socket_hook): Fix arg list. + + * termhooks.h (read_socket_hook): Fix prototype. + + * w32inevt.c (w32_console_read_socket): Remove bufp_r and + numcharsp args. Add hold_quit arg. + Rework to use just one, local, inev input_event. Store inev + directly in fifo using kbd_buffer_store_event_hold. + + * w32inevt.h (w32_console_mouse_position): Fix prototype. + + * w32term.c (w32_read_socket): Remove bufp_r and numcharsp args. + Add hold_quit arg. Rework to use just one, local, inev + input_event. Store inev directly in fifo using + kbd_buffer_store_event_hold. Update count in one place. + Postpone call to gen_help_event until inev is stored; use new + local do_help for this. + Remove local emacs_event in handing of ButtonPress event; just use + inev instead (so no reason to copy it later). + + * xsmfns.c (x_session_check_input): Remove numchars arg. + + * xterm.c (x_focus_changed, x_detect_focus_change): + Remove numchars arg. Always store event into bufp arg. + Return nothing. Callers changed accordingly. + (glyph_rect): Simplify. + (STORE_KEYSYM_FOR_DEBUG): New macro. + (SET_SAVED_MENU_EVENT): Use inev instead of bufp, etc. + (current_bufp, current_numcharsp) [USE_GTK]: Remove. + (current_hold_quit) [USE_GTK]: Add. + (event_handler_gdk): Adapt to new handle_one_xevent. + (handle_one_xevent): Remove bufp_r and numcharsp args. + Add hold_quit arg. Rework to use just one, local, inev + input_event. Store inev directly in fifo using + kbd_buffer_store_event_hold. Update count in one place. + Postpone call to gen_help_event until inev is stored; use new + local do_help for this. + Simplify handling of keysyms (consolidate common code). Fix bug + where count was updated with nchars instead of nbytes. + Remove local emacs_event in handing of ButtonPress event; just use + inev instead (so no reason to copy it later). + Remove `out' label. Rename label `ret' to `done'; add various + `goto done' to clarify code flow in deeply nested blocks. + (x_dispatch_event): Simplify as handle_one_xevent now calls + kbd_buffer_store_event itself. + (XTread_socket): Remove bufp_r and numcharsp args. Add hold_quit + arg. Call handle_one_xevent with new arglist. Store event from + x_session_check_input in fifo. + [USE_GTK]: Setup current_hold_quit. + Decrement handling_signal before unblocking input. + (x_initialize) [USE_GTK]: Initialize current_count. + + * xterm.h (x_session_check_input): Fix prototype. + +2004-02-26 YAMAMOTO Mitsuharu + + * s/darwin.h (LD_SWITCH_SYSTEM_TEMACS): Add `-framework QuickTime'. + + * dispextern.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in + macgui.h). + + * emacs.c (main) [HAVE_CARBON]: Call init_xfns. + + * macgui.h [MAC_OSX]: Include Carbon/Carbon.h. + (mktime, DEBUG, Z, free, malloc, realloc, max, min) + (init_process) [MAC_OSX]: Avoid conflicts with Carbon/Carbon.h. + [!MAC_OSX]: Include QDOffscreen.h and Controls.h. + (INFINITY) [MAC_OSX]: Avoid conflict with definition in math.h. + (Bitmap): Remove typedef. + (Pixmap): Change int to GWorldPtr. + + * macmenu.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h). + + * macterm.h [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h). + (RED16_FROM_ULONG, GREEN16_FROM_ULONG, BLUE16_FROM_ULONG): + New #define to extract 16-bit depth color components from unsigned + long representation. + (PIX_MASK_DRAW, PIX_MASK_RETAIN): New #define to represent pixel + colors used for masks. + (struct mac_display_info): Add color_p. Remove n_cbits. + + * macfns.c: Include sys/types.h and sys/stat.h. + [MAC_OSX]: Do not include Carbon/Carbon.h (now in macgui.h). + Include QuickTime/QuickTime.h. + (XCreatePixmap, XCreatePixmapFromBitmapData, XFreePixmap) + (XSetForeground, mac_draw_line_to_pixmap): Add externs for + functions defined in macterm.c. + (XImagePtr): New typedef. Corresponds to XImage * in xfns.c. + (ZPixmap): New #define for compatibility with xfns.c. + (XGetImage, XPutPixel, XGetPixel, XDestroyImage) + (x_create_x_image_and_pixmap, x_destroy_x_image, x_put_x_image) + (find_image_fsspec, image_load_qt_1, image_load_quicktime): + New functions. + (four_corners_best, x_create_x_image_and_pixmap) + (x_destroy_x_image, unwind_create_frame, x_disable_image) + (x_edge_detection, init_color_table, colors_in_color_table) + (lookup_rgb_color, lookup_pixel_color, postprocess_image) + (x_put_x_image, slurp_file, xbm_scan, xbm_load, xbm_load_image) + (xbm_image_p, xbm_read_bitmap_data, xbm_file_p, x_to_xcolors) + (x_from_xcolors, x_detect_edges): New declarations (from xfns.c). + (mac_color_map_lookup, x_to_mac_color): Fix Lisp_Object/unsigned + long mixup. + (mac_defined_color, x_to_x_colors): Use RED16_FROM_ULONG etc. + (x_decode_color): Don't use n_cbits (in struct mac_display_info). + (x_set_foreground_color, x_set_cursor_color): Sync with w32fns.c. + (x_set_cursor_type, Fxw_color_values, valid_image_p) + (image_value_type, parse_image_spec, image_ascent, x_clear_image) + (x_alloc_image_color, clear_image_cache, lookup_image) + (x_find_image_file, xbm_read_bitmap_file_data) + (enum xbm_keyword_index, xbm_format, xbm_image_p, xbm_scan) + (xbm_read_bitmap_data, xbm_load, pbm_image_p, pbm_scan_number) + (enum pbm_keyword_index, pbm_format, enum png_keyword_index) + (png_format, png_image_p, enum jpeg_keyword_index, jpeg_format) + (jpeg_image_p, enum tiff_keyword_index, tiff_format, tiff_image_p) + (enum gif_keyword_index, gif_format, gif_image_p): Sync with xfns.c. + (x_make_gc): Sync with xfns.c. Enclose unused `border_tile' with + #if 0. + (x_free_gcs): Sync with xfns.c. Enclose unused `border_tile' with + #if 0. Free white_relief.gc and black_relief.gc. + (unwind_create_frame, x_emboss, x_laplace, x_edge_detection): + New functions (from xfns.c). + (Fx_create_frame): Record unwind_create_frame. + (Fxw_display_color_p): Use dpyinfo->color_p. + (Fx_display_grayscale_p, Fx_display_planes): Don't use + dpyinfo->n_cbits. + (Fx_display_color_cells): Use dpyinfo->n_planes; + (QCmatrix, QCcolor_adjustment, QCmask, Qemboss, Qedge_detection) + (Qheuristic, cross_disabled_images, emboss_matrix) + (laplace_matrix): New variables (from xfns.c). + (Fimage_size, Fimage_mask_p, four_corners_best, image_background) + (x_clear_image_1, postprocess_image, slurp_file, xbm_load_image) + (xbm_file_p, x_to_xcolors, x_from_xcolors, x_detect_edges) + (image_background_transparent): New function (from xfns.c). + Use PIX_MASK_DRAW/PIX_MASK_RETAIN. + (image_load_quicktime): Add declaration. + [MAC_OSX] (image_load_quartz2d): Likewise. + [MAC_OSX] (CGImageCreateWithPNGDataProviderProcType): New typedef. + [MAC_OSX] (MyCGImageCreateWithPNGDataProvider): New variable. + [MAC_OSX] (init_image_func_pointer, image_load_quartz2d): New funs. + (xbm_load_image_from_file, x_laplace_read_row) + (x_laplace_write_row, pbm_read_file): Remove functions. + [HAVE_XPM] (enum xpm_keyword_index, xpm_format, xpm_image_p) + (xpm_load): Sync with xfns.c (although XPM is not supported yet). + (colors_in_color_table): Sync with xfns.c (although not used). + (lookup_rgb_color): Don't lookup color table. Just do gamma + correction. + (COLOR_INTENSITY): New #define (from xfns.c). + (x_disable_image): New function (from xfns.c). + Use PIX_MASK_DRAW/PIX_MASK_RETAIN. + (x_build_heuristic_mask): Sync with xfns.c. + Use PIX_MASK_DRAW/PIX_MASK_RETAIN. + (HAVE_PBM): Remove #ifdef. + (pbm_load): Sync with xfns.c. Set img->width and img->height + before IMAGE_BACKGROUND. + (png_image_p, png_load): Don't enclose declarations with #if HAVE_PNG. + (Qpng, enum png_keyword_index, png_format, png_type, png_image_p): + Don't enclose with #if HAVE_PNG. + [!HAVE_PNG] (png_load) [MAC_OSX]: Use image_load_quartz2d if a + symbol _CGImageCreateWithPNGDataProvider is defined. + Otherwise use image_load_quicktime. + [!HAVE_PNG] (png_load) [!MAC_OSX]: Use image_load_quicktime. + [HAVE_PNG] (png_load): Sync with xfns.c. + Use PIX_MASK_DRAW/PIX_MASK_RETAIN. + (jpeg_image_p, jpeg_load): Don't enclose declarations with #if + HAVE_JPEG. + (Qjpeg, enum jpeg_keyword_index, jpeg_format, jpeg_type) + (jpeg_image_p): Don't enclose with #if HAVE_JPEG. + [!HAVE_JPEG] (jpeg_load) [MAC_OSX]: Use image_load_quartz2d. + [!HAVE_JPEG] (jpeg_load) [!MAC_OSX]: Use image_load_quicktime. + [HAVE_JPEG] (jpeg_load): Sync with xfns.c. + (tiff_image_p, tiff_load): Don't enclose declarations with #if + HAVE_TIFF. + (Qtiff, enum tiff_keyword_index, tiff_format, tiff_type) + (tiff_image_p): Don't enclose with #if HAVE_TIFF. + [!HAVE_TIFF] (tiff_load): Use image_load_quicktime. + [HAVE_TIFF] (tiff_error_handler, tiff_warning_handler): + New functions (from xfns.c). + [HAVE_TIFF] (tiff_load): Sync with xfns.c. + (gif_image_p, gif_load): Don't enclose declarations with #if HAVE_GIF. + (Qgif, enum gif_keyword_index, gif_format, gif_type, gif_image_p): + Don't enclose with #if HAVE_GIF. + [!HAVE_GIF] (gif_load): Use Quicktime Movie Toolbox if it is + animated gif. Otherwise use image_load_quicktime. + [HAVE_GIF] (gif_lib.h): Temporarily define DrawText as + gif_DrawText to avoid conflict with QuickdrawText.h. + [HAVE_GIF] (gif_load): Sync with xfns.c. + (enum gs_keyword_index, gs_format, gs_image_p, gs_load) + [HAVE_GHOSTSCRIPT] (x_kill_gs_process): Sync with xfns.c (although + Ghostscript is not supported yet). + (syms_of_macfns): Initialize Qemboss, Qedge_detection, Qheuristic, + QCmatrix, QCcolor_adjustment, and QCmask. Add DEFVAR_BOOL + cross_disabled_images (from xfns.c). Remove #if 0 for supported + image types. Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and + HAVE_PNG. Add defsubr for Simage_size and Simage_mask_p. + (init_xfns): Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and + HAVE_PNG. Call EnterMovies to support animated gifs. + Call init_image_func_pointer to bind a symbol + _CGImageCreateWithPNGDataProvider if it is defined. + + * macterm.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h). + (x_draw_bar_cursor): Sync declaration with xterm.c. + (XFreePixmap, mac_draw_rectangle_to_pixmap, mac_copy_area) + (mac_copy_area_to_pixmap): Implementation with GWorld (offscreen + graphics). + (mac_set_forecolor, mac_set_backcolor): Use RED16_FROM_ULONG etc. + (mac_draw_line_to_pixmap, XCreatePixmap) + (XCreatePixmapFromBitmapData, mac_fill_rectangle_to_pixmap) + (mac_copy_area_with_mask, mac_copy_area_with_mask_to_pixmap): + New functions. + (mac_draw_bitmap) [TARGET_API_MAC_CARBON]: + Use GetPortBitMapForCopyBits instead of the cast to Bitmap *. + Cast bits to char *. + (reflect_byte): New function (from w32fns.c). + (mac_create_bitmap_from_bitmap_data): Use it and don't stuff bits + due to byte alignment. + (mac_scroll_area) [TARGET_API_MAC_CARBON]: + Use GetPortBitMapForCopyBits instead of the cast to Bitmap *. + (XSetForeground): Remove static (now used in macfns.c). + (HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New #define (from w32term.c). + (mac_alloc_lighter_color, x_destroy_window): Sync with w32term.c. + (x_setup_relief_color, x_setup_relief_colors, x_draw_box_rect) + (x_draw_glyph_string_box, x_draw_image_foreground) + (x_draw_image_foreground_1, x_draw_image_glyph_string) + (x_draw_stretch_glyph_string, x_draw_glyph_string) + (x_draw_hollow_cursor, x_draw_bar_cursor, mac_draw_window_cursor): + Sync with xterm.c. + (x_draw_relief_rect): Sync with xterm.c. Make 1 pixel shorter + than the xterm.c version when a strictly horizontal or vertical + line is drawn. + (XTset_terminal_window): Add static. + (x_make_frame_visible): Add UNBLOCK_INPUT. + (x_free_frame_resources): New funcion (from xterm.c). + (XTread_socket): Call handle_tool_bar_click if mouse up/down event + occurs in tool bar area. + (mac_initialize_display_info): Remove dpyinfo->n_cbits. + Set dpyinfo->color_p. Determine dpyinfo->n_planes using HasDepth. + Initialize image cache. + (stricmp, wildstrieq, mac_font_pattern_match, mac_font_match): + Enclose unused functions with #if 0. + (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): New variables. + (decode_mac_font_name): New function to apply code conversions + from a mac font name to an XLFD font name according to its script code. + (x_font_name_to_mac_font_name): Apply code conversion from an XLFD + font name to a mac font name according to REGISTRY and ENCODING fields. + (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't use a font + whose name starts with `.'. + (init_font_name_table): Use decode_mac_font_name. Add both + jisx0208.1983-sjis and jisx0201.1976-0 entries if the script code + of a font is smJapanese. + (mac_do_list_fonts): New function to list fonts that match a given + pattern. + (x_list_fonts, XLoadQueryFont): Use it. + (XLoadQueryFont): Set rbearing field for each variable width + character to avoid needless redraw. + (syms_of_macterm): Initialize Qbig5, Qcn_gb, Qsjis, and Qeuc_kr. + +2004-02-26 Kim F. Storm + + * keyboard.c (NREAD_INPUT_EVENTS): Temporarily increase to 512 + as read_socket_hook handler on X aborts if buffer is too small + and W32 handler doesn't always check buffer limit. + + * xdisp.c (handle_single_display_prop): Handle left-fringe and + right-fringe similar to a display margin image. Specifically, + the characters having the fringe prop are no longer shown, and + we use IT_IMAGE/next_element_from_image with image_id = -1 to + do this. Set fringe bitmap face_id in it->face_id. + (produce_image_glyph): Handle image_id < 0 as "no image" case, but + still realize it->face (i.e. the fringe bitmap face). + +2004-02-25 Miles Bader + + * xdisp.c (check_it): Check string/string_pos consistency. + (init_iterator): Initialize string-related fields properly. + +2004-02-11 Miles Bader + + * xdisp.c (produce_image_glyph): Force negative descents to zero. + +2004-02-10 Miles Bader + + * xfns.c (lookup_image): Remove xassert(!interrupt_input_blocked); + BLOCK_INPUT can be nested, so it doesn't make much sense. + +2004-02-24 Michael Mauger + + * w32fns.c (slurp_file, xbm_scan, xbm_load_image) + (xbm_read_bitmap_data): Use unsigned char for image data. + +2004-02-23 Luc Teirlinck + + * abbrev.c (Finsert_abbrev_table_description): Doc fix. + +2004-02-22 Jason Rumney + + * w32term.c (w32_draw_fringe_bitmap): Draw overlaid bitmaps + correctly over other bitmaps. + +2004-02-21 Eli Zaretskii + + * emacs.c (USAGE1): Split into two halves. + (USAGE2): Second half of the old USAGE1. + (USAGE3): Rename from USAGE2. + (USAGE4): Rename from USAGE3. + +2004-02-21 Juri Linkov + + * emacs.c (USAGE1): Add --no-desktop. Move --display from USAGE2. + Fix --multibyte. Move --help, --version to USAGE2. Add alias + --file. Fix -f, -l. Sort options. Untabify. + (USAGE2): Add -hb. Fix --name, --title. Sort options. Untabify. + +2004-02-19 Luc Teirlinck + + * category.c (Fdefine_category, Fcategory_docstring) + (Fget_unused_category, Fset_category_table) + (Fcategory_set_mnemonics): Doc fixes. + +2004-02-20 Kim F. Storm + + * keyboard.c: Undo 2004-02-16 and 2004-02-17 changes. + The following changes are relative to the 2004-01-21 revision. + (NREAD_INPUT_EVENTS): Define as max number of input events to read + in one call to read_socket_hook. Value is 8. + (read_avail_input): Separate and rework handling of read_socket_hook + and non-read_socket_hook cases. Use smaller input_event buffer + in read_socket_hook case, and repeat if full buffer is read. + Use new local variable 'discard' to skip input after C-g. + In non-read_socket_hook case, just use a single input_event, and + call kbd_buffer_store_event on the fly for each character. + +2004-02-19 Stefan Monnier + + * lisp.h (union Lisp_Object): Give a more precise type for `type'. + Remove unused `gu' alternative. + +2004-02-19 Andreas Schwab + + * fringe.c (Fdefine_fringe_bitmap): Use && instead of & to avoid + warning. + +2004-02-18 Kim F. Storm + + * xdisp.c (get_window_cursor_type, display_and_set_cursor): + Fix last change. + +2004-02-17 Kim F. Storm + + * xdisp.c (fast_find_position): Fix return value of new version; + it was inverted compared to the 21.1 version. + (get_window_cursor_type): Don't look at glyph if NULL. + (display_and_set_cursor): Set glyph to NULL if cursor in fringe. + + * keyboard.c: Rework previous change; it didn't consider that the + buf array was allocated on the stack. + (prev_read): Remove variable. + (read_avail_input_buf): New static event buffer array. + (in_read_avail_input): New static variable to handle re-entrancy. + (read_avail_input): Change buf to pinter to read_avail_input_buf. + Use in_read_avail_input to handle re-entrance; when re-entered, + fully initialize and use tmp_buf array instead of read_avail_input_buf. + Do not initialize read_avail_input_buf in full here; instead assume it + is always cleared on entry. To ensure that, we clear (just) the + entries that were used before we return. + (init_keyboard): Initialize read_avail_input_buf here. + +2004-02-16 Jesper Harder + + * cmds.c (Fend_of_line): Doc fix. + +2004-02-16 Dmitry Antipov (tiny change) + + * keyboard.c (prev_read): New static variable. + (read_avail_input): Use it to zero out only those slots in buf[] + that were used last time we were called. + +2004-02-16 Eli Zaretskii + + * Makefile.in (obj): Move fringe.o from here... + (XOBJ, MAC_OBJ): ...to here. + +2004-02-16 Stephen Eglen + + * fringe.c (init_fringe_bitmap): Define j in MAC_OS code. + +2004-02-15 Stefan Monnier + + * data.c (Fbyteorder): + * fringe.c (Fdefine_fringe_bitmap): + * xdisp.c (handle_single_display_prop): + * xselect.c (x_handle_dnd_message): Lisp_Object/int mixup. + +2004-02-16 Jason Rumney + + * w32term.c (w32_draw_fringe_bitmap): Handle overlay fringe bitmaps. + +2004-02-15 Steven Tamm + + * macterm.c (Vmac_emulate_three_button_mouse): New variable for + controlling emulation of a three button mouse with option and + command keys. + (Qreverse, mac_get_enumlated_btn): Handle the emulation. + (mac_event_to_emacs_modifiers, XTread_socket): Ditto. + +2004-02-15 Kim F. Storm + + * buffer.c (syms_of_buffer): Doc fix for indicate-buffer-boundaries. + + * fringe.c (init_fringe_bitmap) [MAC_OS, WORDS_BIG_ENDIAN]: + Perform byte-swapping. + +2004-02-14 Kim F. Storm + + * dispextern.h (struct draw_fringe_bitmap_params): Change member + bits from char to short to facilitate wider bitmaps. + (struct redisplay_interface): Fix prototype of define_fringe_bitmap + member. + + * fringe.c (struct fringe_bitmap): Change member bits from char to + short to facilitate 16 bits wide bitmaps. Modify all standard + bitmaps accordingly. + (BYTES_PER_BITMAP_ROW, STANDARD_BITMAP_HEIGHT): New macros. + (FRBITS): Use STANDARD_BITMAP_HEIGHT instead of just sizeof. + (draw_fringe_bitmap): Ditto. + (init_fringe_bitmap) [MAC_OS]: Don't bitswap. + (init_fringe_bitmap) [HAVE_X_WINDOWS]: Enhance bitswapping to + handle up to 16 bits wide bitmaps. + (Fdefine_fringe_bitmap): Doc fix. Handle wider bitmaps. + (Ffringe_bitmaps_at_pos): Add missing arg declarations. + + * macterm.c (mac_draw_bitmap): Handle 16 bits wide bitmaps directly. + (x_draw_fringe_bitmap): Use enhanced mac_draw_bitmap, so we no longer + need to call mac_create_bitmap_from_bitmap_data and mac_free_bitmap. + + * w32term.c (w32_define_fringe_bitmap): Bitmaps are now 16 bits wide, + so it is no longer necessary to expand them here. + + * xterm.c (x_draw_fringe_bitmap): Handle wider bitmaps (max 16 bits). + +2004-02-12 Kim F. Storm + + * window.c (Fwindow_fringes): Doc fix. + +2004-02-10 Jan Dj,Ad(Brv + + * xselect.c (x_get_foreign_selection): Add new optional parameter + time_stamp. + (Fx_get_selection_internal): Ditto, pass time_stamp to + x_get_foreign_selection. + + * data.c (Fbyteorder): New function. + +2004-02-09 Jan Dj,Ad(Brv + + * atimer.c: Move include stdio.h to same place as in other files. + + * region-cache.c: Ditto. + + * sysdep.c: Ditto. + + * xfaces.c: Ditto. + +2004-02-09 Sam Steingold + + * w32term.c (w32_draw_fringe_bitmap): Fix a typo in the last patch. + +2004-02-09 Kim F. Storm + + * fringe.c: New file. Move original fringe related declarations + and code from dispextern.h and xdisp.c here. + Rework code to support user defined fringe bitmaps, redefining + standard bitmaps, ability to overlay user defined bitmap with + overlay arrow bitmap, and add faces to bitmaps. + (Voverflow_newline_into_fringe): Declare here. + (enum fringe_bitmap_align): New enum. + (..._bits): All bitmaps are now defined without bitswapping; that + is now done in init_fringe_once (if necessary). + (standard_bitmaps): New array with specifications for the + standard fringe bitmaps. + (fringe_faces): New array. + (valid_fringe_bitmap_id_p): New function. + (draw_fringe_bitmap_1): Rename from draw_fringe_bitmap. + (draw_fringe_bitmap): New function which draws fringe bitmap, + possibly overlaying bitmap with cursor in right fringe or the + overlay arrow in the left fringe. + (update_window_fringes): Do not handle overlay arrow here. + Compare and copy fringe bitmap faces. + (init_fringe_bitmap): New function. + (Fdefine_fringe_bitmap, Fdestroy_fringe_bitmap): New DEFUNs to + define and destroy user defined fringe bitmaps. + (Fset_fringe_bitmap_face): New DEFUN to set face for a fringe bitmap. + (Ffringe_bitmaps_at_pos): New DEFUN to read current fringe bitmaps. + (syms_of_fringe): New function. Defsubr new DEFUNs. + DEFVAR_LISP Voverflow_newline_into_fringe. + (init_fringe_once, init_fringe): New functions. + (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: New functions. + + * Makefile.in (obj): Add fringe.o. + (fringe.o): New dependencies. + + * dispextern.h (FRINGE_ID_BITS): New definition for number of + bits allocated to hold a fringe number. Increase number of bits + from 4 to 8 to allow user defined fringe bitmaps. + (struct glyph_row, struct it): New members left_user_fringe_bitmap, + left_user_fringe_face_id, right_user_fringe_bitmap, + right_user_fringe_face_id. + (enum fringe_bitmap_type, struct fringe_bitmap, fringe_bitmaps): + Move to new file fringe.c. + (MAX_FRINGE_BITMAPS): Define here. + (struct draw_fringe_bitmap_params): New members bits, cursor_p, + and overlay_p. Change member which to int. + (struct redisplay_interface): New members define_fringe_bitmap + and destroy_fringe_bitmap. + (valid_fringe_bitmap_id_p): Add prototype. + (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: Add prototypes. + + * dispnew.c (row_equal_p): Compare fringe bitmap faces and overlay + arrows. + (update_frame): Do flush_display if force_flush_display_p to + ensure display (specifically fringes) are updated in a timely + manner when resizing the frame by dragging the mouse. + (update_window_line): Update row if overlay arrow changed. + (scrolling_window): Redraw fringe bitmaps if fringe bitmap faces + or overlay arrow changed. + + * emacs.c (main) [HAVE_WINDOW_SYSTEM]: Call init_fringe_once, + syms_of_fringe, and init_fringe. + + * frame.h (struct frame): New member force_flush_display_p. + + * lisp.h (syms_of_fringe, init_fringe, init_fringe_once): + Add prototypes. + + * macterm.c (mac_draw_bitmap): Add overlay_p arg. + (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps; + thanks to YAMAMOTO Mitsuharu for advice on how to do this. + Use cursor color for displaying cursor in fringe. + (x_redisplay_interface): Add null handlers for + define_fringe_bitmap and destroy_fringe_bitmap functions. + + * w32term.c (w32_draw_fringe_bitmap): Copy unadapted code from + xterm.c to handle overlayed fringe bitmaps and to use cursor color + for displaying cursor in fringe. + (w32_define_fringe_bitmap, w32_destroy_fringe_bitmap): New W32 + specific functions to define and destroy fringe bitmaps in fringe_bmp. + (w32_redisplay_interface): Add them to redisplay_interface. + (w32_term_init): Call w32_init_fringe instead of explicitly + defining fringe bitmaps in fringe_bmp array. + (x_delete_display): Call w32_reset_fringes instead of explicitly + destroying fringe bitmaps in fringe_bmp array. + + * xdisp.c (Voverflow_newline_into_fringe, syms_of_xdisp) + (left_bits, right_bits, up_arrow_bits, down_arrow_bits) + (continued_bits, continuation_bits, ov_bits, first_line_bits) + (last_line_bits, filled_box_cursor_bits, hollow_box_cursor_bits) + (bar_cursor_bits, hbar_cursor_bits, zv_bits, hollow_square_bits) + (fringe_bitmaps, draw_fringe_bitmap, draw_row_fringe_bitmaps) + (draw_window_fringes, compute_fringe_widths, update_window_fringes): + Move fringe handling vars and code to new file fringe.c. + (handle_display_prop): Handle left-fringe and right-fringe + display properties; store user fringe bitmaps in iterator. + (move_it_in_display_line_to): Handle cursor in fringe at eob. + (clear_garbaged_frames): Set force_flush_display_p if resized. + (redisplay_window): Redraw fringe bitmaps if not just_this_one_p. + (display_line): Handle cursor in fringe at eob. + (display_line): Set row user fringe bitmaps from iterator. + + * xterm.c (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps. + Use cursor color for displaying cursor in fringe. + (x_redisplay_interface): Add null handlers for + define_fringe_bitmap and destroy_fringe_bitmap functions. + +2004-02-07 Jan Dj,Ad(Brv + + * macfns.c (Fx_change_window_property): Make doc string and + parameters same as for X version. + + * w32fns.c (Fx_change_window_property): Ditto. + +2004-02-07 Kim F. Storm + + * xdisp.c (hscroll_window_tree): Position cursor near to right + margin in hscrolled window when jumping to end of line (rather + than centering cursor). + + * process.c (wait_reading_process_input): Don't do adaptive read + buffering if waiting for a specific process. + +2004-02-05 Luc Teirlinck + + * minibuf.c (Fminibufferp, Fread_from_minibuffer) + (Fread_minibuffer, Feval_minibuffer) + (Fread_string, Fread_no_blanks_input) + (Fcompleting_read): Doc fixes. + (syms_of_minibuf): Doc fixes for minibuffer-completion-table and + completion-regexp-list. Define Qcase_fold_search and staticpro it. + (read_minibuf): Fix initial comment. + (Ftry_completion, Fall_completions, Ftest_completion): Bind + case-fold-search to the value of completion-ignore-case when + checking completion-regexp-list. + (Fdisplay_completion_list): Make it handle arguments that are + symbols. Doc fix. + +2004-02-05 Jan Dj,Ad(Brv + + * xterm.h: Add declaration of free_frame_menubar. + + * xfns.c (x_create_bitmap_mask): Removed unused variable depth. + (x_set_menu_bar_lines): Added ! defined USE_GTK for olines. + (Fx_change_window_property): Add declaration of parameters type and + format. Remove unused variable cons. + + * xselect.c: Include stdio.h. + +2004-02-05 Kenichi Handa + + * fns.c (Fset_char_table_range): Fix previous change. + + * buffer.c (Fset_buffer_multibyte): Fix docstring. + +2004-02-04 Luc Teirlinck + + * editfns.c (Fchar_after, Fchar_before): Doc fixes. + +2004-02-04 Stefan Monnier + + * keymap.c (Vmouse_events): Rename from Vmenu_events. + (syms_of_keymap): Add mouse-[45], header-line, and mode-line to it. + +2004-02-04 Kenichi Handa + + * fns.c (Fset_char_table_range): Handle charsets ascii, + eight-bit-control, and eight-bit-graphic correctly. + +2004-02-03 Jason Rumney + + * w32select.c (Fw32_set_clipboard_data): Make coding iso2022 safe. + + * w32fns.c (x_to_w32_font): Likewise. + +2004-02-03 Jan Dj,Ad(Brv + + * xterm.h: Add x_handle_dnd_message, x_check_property_data, + x_fill_property_data, x_property_data_to_lisp and check_x_display_info. + + * xterm.c (handle_one_xevent): Call x_handle_dnd_message for + ClientMessages. + + * xselect.c: Include termhooks.h and X11/Xproto.h. + (x_check_property_data, x_fill_property_data) + (x_property_data_to_lisp, mouse_position_for_drop) + (Fx_get_atom_name, x_handle_dnd_message): New functions for DND support. + (Fx_send_client_event): Move here from xfns.c. + (syms_of_xselect): Add Sx_get_atom_name and Sx_send_client_message. + + * xfns.c (x-send-client-message): Move to xselect.c. + (Fx_change_window_property): Add optional arguments TYPE, FORMAT and + OUTER_P. + (Fx_window_property): Add optional arguments TYPE, SOURCE, DELETE_P, + VECTOR_RET_P. Handle AnyPropertyType. Call x_property_data_to_lisp + if vector_ret_p is true. + (syms_of_xfns): Sx_send_client_message moved to xselect.c. + +2004-02-02 Eli Zaretskii + + * fileio.c (Fcopy_file): If NEWNAME is a directory, expand the + basename of FILE relative to it, not FILE itself. + +2004-02-02 Kenichi Handa + + * coding.c (coding_restore_composition): Check invalid + composition data more rigidly. + +2004-01-30 Luc Teirlinck + + * fileio.c (Fread_file_name_internal): Correctly handle the case + where insert-default-directory is nil. + (Fread_file_name): Always return an empty string if the user exits + with an empty minibuffer. Adapt the docstring accordingly. + (syms_of_fileio): Adapt the docstring of insert-default-directory + to the change in Fread_file_name. + +2004-01-29 Eli Zaretskii + + * alloca.c [!alloca]: Fix the prototype for xfree. + +2004-01-29 Kenichi Handa + + * fns.c (string_char_to_byte): Optimize for ASCII only string. + (string_byte_to_char): Likewise. + +2004-01-28 Peter Runestig + + * makefile.w32-in, w32fns.c: Add `default-printer-name' function. + +2004-01-27 Steven Tamm + + * unexmacosx.c (unexec_copy): Do not copy more than was + requested to prevent overwriting during unexec. + +2004-01-27 Jan Dj,Ad(Brv + + * process.c (sigchld_handler): Add comment about not calling malloc. + + * process.h: Add extern to synch_process_termsig. + +2004-01-27 Steven Tamm + + * macterm.c (make_mac_frame, make_mac_terminal_frame): + Move setting of scroll bars from make_mac_frame to + make_mac_terminal_frame to prevent clobbering of scroll-bar-mode. + +2004-01-26 Richard M. Stallman + + * search.c (Freplace_match): Handle nonexistent + back-references properly. + +2004-01-03 Richard M. Stallman + + * window.c (decode_any_window): New function. + (Fwindow_height, Fwindow_width, Fwindow_edges) + (Fwindow_pixel_edges, Fwindow_inside_edges) + (Fwindow_inside_pixel_edges): Use decode_any_window. + +2004-01-27 Jan Dj,Ad(Brv + + * process.h: synch_process_termsig new variable. + + * callproc.c: Define synch_process_termsig. + (Fcall_process): Initiate synch_process_termsig to zero and + check if non-zero and get signal name after subprocess has ended. + + * process.c (sigchld_handler): Set synch_process_termsig + if terminated by a signal. synch_process_death setting removed. + + * sysdep.c (mkdir, rmdir): Also check synch_process_termsig. + +2004-01-26 Andreas Schwab + + * print.c (print_preprocess): Declare size as EMACS_INT to not + lose bits. + (print_object): Likewise. + * alloc.c (Fpurecopy): Likewise. + +2004-01-25 Luc Teirlinck + + * window.c (Fwindow_minibuffer_p): Doc fix. + +2004-01-24 Jonathan Yavner + + * editfns.c (Fformat): Make both passes accept the same set of flags. + +2004-01-23 Kenichi Handa + + * fns.c (Fmd5): If OBJECT is a buffer different from the current + one, set buffer to OBJECT temporarily. + +2004-01-21 Stefan Monnier + + * keyboard.c (kbd_buffer_gcpro): Remove. + (kbd_buffer_store_event, clear_event, Fdiscard_input) + (stuff_buffered_input, init_keyboard, syms_of_keyboard): + Don't initialize and/or maintain the variable any more. It was made + redundant by my commit of 2003-06-15. + + * lisp.h [USE_LSB_TAG && !DECL_ALIGN]: Signal an error. + +2004-01-21 Jan Dj,Ad(Brv + + * lisp.h: Add undef DECL_ALIGN. + +2004-01-21 Stefan Monnier + + * process.c (wait_reading_process_input) [SYNC_INPUT]: + Check interrupt_input_pending explicitly. + + * lisp.h (QUIT) [SYNC_INPUT]: Check interrupt_input_pending as well. + + * keyboard.c (handle_async_input): New fun, + extracted from input_available_signal. + (input_available_signal, reinvoke_input_signal): Use it. + +2004-01-20 Stefan Monnier + + * buffer.c (buffer_defaults, buffer_local_symbols): Use DECL_ALIGN. + + * lisp.h [USE_LSB_TAG]: Add definitions for Lisp_Object value + manipulation macros for when tags are in the lower bits. + (struct Lisp_Free) [USE_LSB_TAG]: Add padding. + (DECL_ALIGN): New macro. + (DEFUN): Use it. + + * lisp.h [ENABLE_CHECKING]: Don't force union type. + + * s/darwin.h (__attribute__): Remove outdated workaround. + + * macterm.c (main) [USE_LSB_TAG]: Don't range check the ram. + + * alloc.c (lisp_malloc, lisp_align_malloc) [USE_LSB_TAG]: + Don't check range of malloc address. + (pure_alloc) [USE_LSB_TAG]: Enforce alignment. + + * process.c (wait_reading_process_input): Lisp_Object/int mixup. + + * dired.c (Ffile_attributes): Lisp_Object/int mixup. + +2004-01-19 Kenichi Handa + + * fontset.c (fontset_font_pattern): Fix previous change. + +2004-01-16 Miles Bader + + * xdisp.c (Voverflow_newline_into_fringe) + (move_it_in_display_line_to, redisplay_internal) + (update_window_fringes, redisplay_window, display_line, window): + Add `#ifdef HAVE_WINDOW_SYSTEM' around fringe-drawing stuff, so + that it compiles without a window-system. + * dispnew.c (direct_output_for_insert, update_window): Likewise. + +2004-01-16 Kim F. Storm + + * buffer.h (struct buffer): New member indicate_buffer_boundaries. + + * buffer.c (init_buffer_once): Set buffer_defaults and + buffer_local_flags for indicate_buffer_boundaries. + (syms_of_buffer): Defvar_per_buffer it, and defvar_lisp_nopro + default- variable for it. + + * dispextern.h (struct glyph_row): New members left_fringe_bitmap, + right_fringe_bitmap, redraw_fringe_bitmaps_p for new fringe handling. + New members exact_window_width_line_p and cursor_in_fringe_p for + overflowing newlines into right fringe. + New members indicate_bob_p, indicate_top_line_p, indicate_eob_p, + and indicate_bottom_line_p for buffer boundaries and scrolling. + (enum fringe_bitmap_type): Add UP_ARROW_BITMAP, DOWN_ARROW_BITMAP, + FIRST_LINE_BITMAP, LAST_LINE_BITMAP, FILLED_BOX_CURSOR_BITMAP, + HOLLOW_BOX_CURSOR_BITMAP, BAR_CURSOR_BITMAP, HBAR_CURSOR_BITMAP, + and HOLLOW_SQUARE_BITMAP. + (draw_fringe_bitmap, draw_window_fringes, update_window_fringes): + Add prototypes. + + * dispnew.c (row_equal_p, update_window_line): Compare fringe bitmaps + instead of related indicator fields. + Compare exact_window_width_line_p and cursor_in_mouse_face_p indicators. + (direct_output_for_insert): Handle exact width lines like + contined lines. Call update_window_fringes. + (update_window): Call update_window_fringes. + (scrolling_window): Don't skip desired rows with changed bitmaps. + Check if fringe bitmaps changes when assigning scrolled rows. + + * xdisp.c (Voverflow_newline_into_fringe): New variable. + (IT_OVERFLOW_NEWLINE_INTO_FRINGE): New macro. + (move_it_in_display_line_to): Overflow newline into fringe for + rows that are exactly as wide as the window. + (up_arrow_bits, down_arrow_bits, first_line_bits, last_line_bits) + (filled_box_cursor_bits, hollow_box_cursor_bits, bar_cursor_bits) + (hbar_cursor_bits, hollow_square_bits): New fringe bitmaps. + (fringe_bitmaps): Add new bitmaps. + (draw_fringe_bitmap): Make extern. Remove WHICH arg. + Select proper bitmap for cursor in fringe when appropriate. + Handle alignment of bitmap to top or bottom of row. + (draw_row_fringe_bitmaps): Don't select bitmaps here; that is now + done by update_window_fringes. + (update_window_fringes, draw_window_fringes): New functions. + (redisplay_internal): Call update_window_fringes in case only + cursor row is updated. + (redisplay_window): Call update_window_fringes. + Explicitly call draw_window_fringes if redisplay was done using + the current matrix or the overlay arrow is in the window. + (try_window_reusing_current_matrix): Mark scrolled rows for + fringe update (to update buffer-boundaries / scrolling icons). + (find_last_unchanged_at_beg_row): Handle exact width lines line + continued lines. + (display_line): Overflow newline into fringe for rows that are + exactly as wide as the window. Don't append space for newline + in this case. + (notice_overwritten_cursor): Explicitly clear cursor bitmap + in fringe as if it had been overwritten. + (erase_phys_cursor): Erase cursor bitmap in fringe. + (syms_of_xdisp): Mark show-trailing-whitespace and + void-text-area-pointer as user options. + DEFVAR_LISP Voverflow_newline_into_fringe. Enable by default. + + * xterm.c (x_update_window_end): Call draw_window_fringes. + (x_after_update_window_line): Just set redraw_fringe_bitmaps_p + in row instead of actually drawing fringe bitmaps. + (x_draw_fringe_bitmap): Handle bottom aligned bitmaps. + (x_draw_window_cursor): Draw cursor in fringe. + + * w32term.c (x_update_window_end): Call draw_window_fringes. + (x_after_update_window_line): Just set redraw_fringe_bitmaps_p + in row instead of actually drawing fringe bitmaps. + (w32_draw_fringe_bitmap): Handle bottom aligned bitmaps. + (w32_draw_window_cursor): Draw cursor in fringe. + + * macterm.c (x_update_window_end): Call draw_window_fringes. + (x_after_update_window_line): Just set redraw_fringe_bitmaps_p + in row instead of actually drawing fringe bitmaps. + (x_draw_fringe_bitmap): Handle bottom aligned bitmaps. + (mac_draw_window_cursor): Draw cursor in fringe. + +2004-01-16 Jan Dj,Ad(Brv + + * xterm.c (handle_one_xevent): Don't handle characters that are part + of an old style (XLookupString) compose sequence. + +2004-01-15 Kenichi Handa + + * search.c (Freplace_match): Use make_multibyte_string or + make_unibyte_string according to the buffer multibyteness. + +2004-01-14 Stefan Monnier + + * alloc.c (struct interval_block, struct string_block) + (struct symbol_block, struct marker_block, live_string_p) + (live_cons_p, live_symbol_p, live_float_p, live_misc_p): + Better preserve alignment for objects in blocks. + (FLOAT_BLOCK_SIZE): Adjust for possible alignment padding. + + * lread.c (defvar_per_buffer): Remove dead declaration. + + * macterm.c (do_check_ram_size): Don't hardcode the lisp address + space size. + +2004-01-12 Jan Dj,Ad(Brv + + * xmenu.c (popup_get_selection): Check new parameter down_on_keypress + if a key press should pop down. Only pop down if a key is pressed + outside the menu/dialog. + (create_and_show_popup_menu): Pass 0 for down_on_keypress to + popup_get_selection. + (create_and_show_dialog): Pass 1 for down_on_keypress to + popup_get_selection. + +2004-01-11 Jan Dj,Ad(Brv + + * alloc.c (allocate_vectorlike): Surround calls to mallopt with + BLOCK/UNBLOCK_INPUT. + +2004-01-08 Jan Dj,Ad(Brv + + * xmenu.c (Fx_popup_dialog): Add an Ok button if no buttons are + specified. + +2004-01-08 Kenichi Handa + + * editfns.c (Fformat): Fix '&' to '&&'. + +2004-01-08 Andreas Schwab + + * print.c (print_preprocess) : Only mask + size if PSEUDOVECTOR_FLAG is set. + +2004-01-07 Kenichi Handa + + * charset.c (Fdeclare_equiv_charset): Fix docstring. + + * fontset.c (fontset_ref_via_base): Fix previous change. + +2004-01-07 Kim F. Storm + + * process.c (read_process_output): Only activate adaptive + buffering if we read less than 256 bytes at a time. + +2004-01-06 Kim F. Storm + + * dispnew.c (buffer_posn_from_coords): Return both buffer/string + object and image object. Return glyph width and height. + (mode_line_string, marginal_area_string): Ditto. + + * dispextern.h (buffer_posn_from_coords, mode_line_string) + (marginal_area_string): Fix prototypes. + + * keyboard.h (POSN_POSN, POSN_SET_POSN): Rename macros from + POSN_BUFFER_POSN and POSN_SET_BUFFER_POSN. All uses changed. + (POSN_INBUFFER_P, POSN_BUFFER_POSN): New macros. + + * keyboard.c (make_lispy_position): Use modified mode_line_string, + buffer_posn_from_coords, and marginal_area_string functions to + include both string object and image object in the lispy position. + Also add actual glyph width and height to position. + (read_key_sequence): Use real buffer position from mouse + event to find keymap property even when click is in marginal area. + + * xdisp.c (note_mode_line_or_margin_highlight): Use modified + mode_line_string and marginal_area_string functions to handle + both string object and image object properties. + +2004-01-06 Andreas Schwab + + * syntax.c (skip_chars): Treat '-' at end of string as ordinary + character. + +2004-01-02 Andreas Schwab + + * macterm.c (emacs_options, x_initialized, same_x_server): + Remove unused (and duplicated) definitions. + +2004-01-02 Kim F. Storm + + * process.h (struct Lisp_Process): New members for adaptive read + buffering: adaptive_read_buffering, read_output_delay, and + read_output_skip. + + * process.c (ADAPTIVE_READ_BUFFERING): New conditional. + (READ_OUTPUT_DELAY_INCREMENT, READ_OUTPUT_DELAY_MAX) + (READ_OUTPUT_DELAY_MAX_MAX): New constants. + (process_output_delay_count, process_output_skip): New vars. + (Vprocess_adaptive_read_buffering): New variable. + (make_process): Initialize adaptive read buffering members. + (Fstart_process): Set adaptive_read_buffering member. + (deactivate_process): Cleanup adaptive read buffering. + (wait_reading_process_input): Temporarily omit delayed + subprocesses from the set of file descriptors to read from; + adjust the select timeout if we skipped any subprocesses. + (read_process_output): Increase adaptive read buffering delay if + we read less than a full buffer; reduce delay when we read a + full buffer. + (send_process): Simplify using local Lisp_Process var. + Reset adaptive read buffering delay after write. + (init_process): Initialize process_output_delay_count and + process_output_skip. + (syms_of_process): DEFVAR_LISP Vprocess_adaptive_read_buffering. + +2004-01-01 Jason Rumney + + * w32term.c (w32_text_out): Use s->font, for consistency with callers. + +2003-12-30 Luc Teirlinck + + * print.c (Ferror_message_string): Add hyperlink in the docstring + to the definition of `signal' in the Elisp manual. + * eval.c (Fsignal): Ditto. + +2003-12-29 James Clark + + * fns.c (internal_equal): Return t for two NaN arguments. + +2003-12-29 Richard M. Stallman + + * data.c (store_symval_forwarding): Handle setting + default-fill-column, etc., by changing the value in + buffers that use the default. + + * minibuf.c (Fset_minibuffer_window): Doc fix. + + * fileio.c (choose_write_coding_system): Ignore auto_saving + if using the visited file for auto saves. + (Fwrite_region): Don't update SAVE_MODIFF + if auto-saving in visited file. + +2003-12-29 Kenichi Handa + + * dispextern.h (face_font_available_p): Extern it. + + * fontset.c (Voverriding_fontspec_alist): New variable. + (lookup_overriding_fontspec): New function. + (fontset_ref_via_base): Call lookup_overriding_fontspec if necessary. + (fontset_font_pattern): Likewise. + (regulalize_fontname): New function. + (Fset_fontset_font): Call regulalize_fontname. + (Fset_overriding_fontspec_internal): New function. + (syms_of_fontset): Initialize and staticpro Voverriding_fontspec_alist. + Defsubr Sset_overriding_fontspec_internal. + + * xfaces.c (face_font_available_p): New function. + +2003-12-28 Richard M. Stallman + + * buffer.c (Fother_buffer): Don't crash if BUF is nil + or if its name is nil. + + * buffer.c (Fkill_buffer): Don't delete auto-save file + if it's the same as the visited file. + +2003-12-28 Luc Teirlinck + + * coding.c (Fcheck_coding_system): Doc fix. + +2003-12-28 Kim F. Storm + + * Makefile.in (eval.o): Depend on dispextern.h. + + * dispnew.c (buffer_posn_from_coords): Fix calculation of dy for + image glyph using image's ascent. + (mode_line_string): Return image glyph as object clicked on. + Adjust y0 for image glyph using image's ascent. + + * dispextern.h (FACE_ID_BITS, MAX_FACE_ID): New defines. + (struct glyph): New members, ascent and descent. Used to save + this glyph's ascent and descent, instead of having. + (struct glyph): Declare member face_id using FACE_ID_BITS. + (find_hot_spot): Add prototype. + + * keyboard.c (Qimage): Remove extern (now in lisp.h). + (QCmap): Declare extern. + (make_lispy_position): When position is inside image hot-spot, + use hot-spot element's id as posn element. + + * lisp.h (IMAGEP): New macro to test for image object type. + (Qimage): Declare extern. + + * macfns.c (Qimage): Remove extern (now in lisp.h). + (valid_image_p, parse_image_spec): Use IMAGEP macro. + + * macterm.c (Qface, Qmouse_face): Remove unused externs. + + * w32fns.c (Qimage): Remove extern (now in lisp.h). + (valid_image_p, parse_image_spec): Use IMAGEP macro. + + * w32menu.c (Qmouse_click, Qevent_kind): Remove unused externs. + + * w32term.c (Qface, Qmouse_face): Remove unused externs. + + * xdisp.c (Qarrow, Qhand, Qtext, Qpointer): New variables for + pointer types. + (Qrelative_width, Qalign_to): Remove unused variables. + (Vvoid_text_area_pointer): Replace Vshow_text_cursor_in_void. + (QCmap, QCpointer, Qrect, Qcircle, Qpoly): New variables for image + maps. + (x_y_to_hpos_vpos): Return glyph relative coordinates through new + dx and dy args. Remove buffer_only_p arg (always 0). Simplify + code accordingly. + (get_glyph_string_clip_rect): Draw cursor using glyph's rather + than row's ascent and height, to get sensible height on tall rows. + (build_desired_tool_bar_string): Remove Qimage extern. + (get_tool_bar_item): Fix call to x_y_to_hpos_vpos. + (produce_image_glyph): Adjust it.ascent to minimum row ascent if + image glyph is alone on the last line. + (append_glyph, append_composite_glyph, produce_image_glyph) + (append_stretch_glyph): Set glyph's ascent and descent. + (on_hot_spot_p): New function to check if position is inside an + rectangular, circular, or polygon-shaped image hot-spot, + (find_hot_spot): New function to search for image hot-spot. + (Flookup_image_map): New defun to search for image hot-spot. + (define_frame_cursor1): New aux function to determine frame + pointer. + (note_mode_line_or_margin_highlight, note_mouse_highlight): Handle + `pointer' text property and :pointer image property to control + frame pointer shape. Detect image hot-spots for pointer and + help_echo properties. Use define_frame_cursor1. + (note_mouse_highlight): Use Vvoid_text_area_pointer. + (syms_of_xdisp): Defsubr new defun. Intern and staticpro new + variables. DEFVAR_LISP Vvoid_text_area_pointer instead of + Vshow_text_cursor_in_void. + + * xfaces.c (cache_face): Abort if c->size exceeds MAX_FACE_ID. + + * xfns.c (x_set_mouse_color): Remove bogus x_check_errors call. + (Qimage): Remove extern (now in lisp.h). + (valid_image_p, parse_image_spec): Use IMAGEP macro. + + * xmenu.c (show_help_event): Remove unused code. + + * xterm.c (Qface, Qmouse_face): Remove unused externs. + (x_draw_hollow_cursor): Draw cursor using glyph's rather than + row's ascent and descent, to get a sensible height on tall rows. + +2003-12-25 Luc Teirlinck + + * minibuf.c (Fcompleting_read): Undo previous change. + +2003-12-25 Lars Hansen + + * dired.c (Fdirectory_files, Fdirectory_files_and_attributes): + Arguments GCPRO'ed in call to file name handler. + +2003-12-25 Thien-Thi Nguyen + + * termcap.c (tgetst1): Scan for "%pN"; if all + N are continuous in [1,9], remove all "%pN". + +2003-12-24 Jan Dj,Ad(Brv + + * gtkutil.c (xg_frame_set_char_size): Call x_wm_set_size_hint. + + * xfaces.c (lface_fully_specified_p): Take into account that + MAC OS always have unspecified stipple. + +2003-12-24 Thien-Thi Nguyen + + * tparam.c (tparam1): Add handling for `%pN', which + means use param N for the next substitution. + +2003-12-24 Thien-Thi Nguyen + + * xfaces.c (Fcolor_gray_p): Fix omission bug: + In case `frame' is nil, consult the selected frame. + (Fcolor_supported_p): Likewise. + +2003-12-23 Luc Teirlinck + + * fns.c (Frandom, Fstring_make_multibyte, Fset_char_table_range): + Doc fixes. + + * minibuf.c (read_minibuf): Allow INITIAL to be a cons of a string + and an integer. Adapt the introductory comment accordingly. + (Fread_from_minibuffer): Delete code moved into read_minibuf. + Doc fix. + (Fread_minibuffer, Fread_no_blanks_input): Adapt to changes in + read_minibuf. + (Fcompleting_read): Delete code moved into read_minibuf. + (Ftest_completion): Make it handle obarrays and hash tables correctly. + +2003-12-03 Kenichi Handa + + * coding.c (decode_coding_iso2022): Fix for preserving UTF-8 + encoding sequence. + +2003-12-01 Kenichi Handa + + * composite.c (syms_of_composite): Don't make the compostion hash + table week. + +2003-11-30 Luc Teirlinck + + * intervals.h: Add EXFUN for Fget_char_property_and_overlay. + * textprop.c (Fget_char_property_and_overlay): New function. + (syms_of_textprop): Defsubr it. + +2003-11-29 Jan Dj,Ad(Brv + + * dispnew.c (buffer_posn_from_coords): Add ifdef HAVE_WINDOW_SYSTEM + to compile on terminal configuration. + + * fileio.c (Fread_file_name): Check use_file_dialog also before + calling Fx_file_dialog. + + * fns.c (use_file_dialog): New variable. + (syms_of_fns): DEFVAR_BOOL use-file-dialog. + +2003-11-29 Kim F. Storm + + * msdos.c (Qcursor_type, Qbar, Qhbar): Declare extern. + (syms_of_msdos): Don't intern and staticpro them. + +2003-11-27 Kim F. Storm + + * dispnew.c (buffer_posn_from_coords): Calculate and return pixel + coordinates relative to glyph at posn. If glyph is an image, + return that as object at posn. Callers changed. + (mode_line_string, marginal_area_string): Calculate and return + pixel coordinates relative to glyph. Callers changed. + + * dispextern.h (buffer_posn_from_coords, mode_line_string) + (marginal_area_string): Fix prototypes. + (window_box_left_offset, window_box_right_offset): Add prototypes. + + * frame.h (get_specified_cursor_type, get_window_cursor_type): + Remove prototypes. + + * keyboard.h (EVENT_CLICK_COUNT, POSN_SCROLLBAR_PART): Fix defines. + + * keyboard.c (make_lispy_position): Add x and y coordinates + relative to the current glyph as 7th element of position. + If glyph is an image, return it in the object element. + (read_key_sequence): Skip checks for keymap property in cases + where POSN_STRING is not a string (e.g. an image). + + * xdisp.c (Vdisplay_pixels_per_inch): New variable. + (Vshow_text_cursor_in_void): New variable. + (glyph_to_pixel_coords): Don't use negative hpos. + (x_y_to_hpos_vpos): Fix for partially visible first glyph. + (append_stretch_glyph): Change ascent arg to be actual value + in pixels rather than ratio to height. Callers changed. + (calc_pixel_width_or_height): New aux function, implementing + pixel based artihmetic for glyph widths and heights. + (produce_stretch_glyph): Use calc_pixel_width_or_height for + :width, :height, :align-to, and :ascent, thus allowing these to + be specified in pixels as well as multiples of characters. + Don't produce stretch glyphs with zero width or height. + (get_specified_cursor_type): Declare static. + (get_window_cursor_type): Declare static. Add glyph arg to be + able to know when cursor is on an image; always substitute + hollow-box cursor for filled-box cursor on images, to avoid + negative images and flicker when blinking the cursor. + (display_and_set_cursor): Pass glyph to get_window_cursor_type. + (note_mode_line_or_margin_highlight): Use non-text cursor rather + than vertical scroll-bar cursor in display margins. + (note_mouse_highlight): Use non-text cursor rather than text + cursor in fringes and over images in the text area. + Use non-text cursor when mouse pointer is outside editable text, + i.e. in the void after end-of-line or end-of-buffer; this was + already done for W32, but is now standard for all systems -- + user can toggle show-text-cursor-in-void to get old behaviour. + (syms_of_xdisp): DEFVAR_LISP Vshow_text_cursor_in_void and + Vdisplay_pixels_per_inch. + +2003-11-25 Andreas Schwab + + * fns.c (internal_equal) : Declare size as + EMACS_INT to not lose bits. + (Ffillarray): Don't set bits beyond the size of a bool vector. + +2003-11-25 Kim F. Storm + + * print.c (Fredirect_debugging_output) [!GNU_LINUX]: Do not + define this defun on systems that cannot use stderr as lvalue. + +2003-11-24 Gerd Moellmann + + * s/freebsd.h (LD_SWITCH_SYSTEM_TEMACS) + [__FreeBSD_version >= 500042]: Define as -znocombreloc because + ld's default is incompatible with unexec. + +2003-11-23 Kim F. Storm + + * window.c (enum window_loop): Add REDISPLAY_BUFFER_WINDOWS. + (window_loop): Handle REDISPLAY_BUFFER_WINDOWS. + (Fforce_window_update): New defun. + (syms_of_window): Defsubr it. + (Fset_window_margins, Fset_window_fringes): Doc fix. + + * print.c (Fredirect_debugging_output): New defun. + (syms_of_print): Defsubr it. + +2003-11-22 Luc Teirlinck + + * fns.c (Fset_char_table_parent): Doc fix. + +2003-11-22 Kim F. Storm + + * dispnew.c (buffer_posn_from_coords): Return actual row/column + for glyph clicked on, rather than (unused) pixel positions. + (mode_line_string, marginal_area_string): Change X and Y args to + pointers for returning actual row/column for glyph clicked on. + Simplify and optimize loops. + + * dispextern.h (mode_line_string, marginal_area_string): + Update prototypes. + + * keyboard.c (make_lispy_position): New function for generating + mouse click positions from frame and pixel coordinates. + Enhanced to return buffer position and actual row/column for + events outside the text area using updated mode_line_string and + marginal_area_string functions. + Return left-fringe and right-fringe clicks as such, rather than + clicks in text area. + (make_lispy_event) [USE_X_TOOLKIT, USE_GTK]: Don't call + pixel_to_glyph_coords, as we never use the results. + (make_lispy_event): Use make_lispy_position for MOUSE_CLICK_EVENT, + WHEEL_EVENT, and DRAG_N_DROP_EVENT to replace redundant code. + Eliminate unused code in WHEEL_EVENT handling. + (make_lispy_movement): Use make_lispy_position. + + * window.c (coordinates_in_window): Remove redundant tests. + Fix returned X pixel value for left-margin. + + * xdisp.c (note_mode_line_or_margin_highlight): Adapt to new + mode_line_string and marginal_area_string parameters. + +2003-11-22 Lars Hansen + + * w32.c (struct the_group, getgrgid): Add. + * mac.c (struct my_group, getgrgid): Add. + +2003-11-21 Luc Teirlinck + + * fns.c (Fassq, Fassoc, Frassq, Frassoc): Doc fixes. + +2003-11-21 Lars Hansen + + * dired.c (Ffile_attributes): Add parameter ID-FORMAT and + include in call to file name handler. Optionally translate numeric + UID and GID to strings. Update docstring. + (directory_files_internal): Add parameter ID-FORMAT. + (Fdirectory_files_and_attributes): Add parameter ID-FORMAT and + include in call to file name handler and call to + directory_files_internal. Update Docstring. + (Fdirectory_files): Add dummy parameter in call to + directory_files_internal. + * lisp.h (Qinteger): Add. + (Qinteger_or_floatp, Qinteger_or_float_or_marker_p): Remove. + (Ffile_attributes): Add parameter. + * data.c (Qinteger): Export. + +2003-11-21 Luc Teirlinck + + * fns.c (Freverse, Fnreverse): Doc fixes. + +2003-11-19 Kim F. Storm + + * xdisp.c (init_iterator): Initialize it->start to position + before reseating (in case start position is invisible). + (init_to_row_start): Set it->start to row-start. + (redisplay_window): Accept optional_new_start if start position + is invisible (in which case IT_CHARPOS overshoots PT). + (display_line): Setup row->start from it->start (rather than + it->current which is wrong if first char on line is invisible). + When done, reseat it->start to it->current (= start of next row). + (expose_area): Fix exposure of text area when first char (e.g. TAB) + is only partially visible. + + * dispextern.h (struct it): New member start. + +2003-11-17 Stefan Monnier + + * alloc.c (make_float, Fcons): Clear the markbit at init time. + (make_float, Fcons, Fmake_symbol, allocate_misc): Move the increment + of block_index outside of the macro call. + (Fgarbage_collect): Remove null code. + + * m/amdx86-64.h: Don't redefine XPNTR. + + * keyboard.c (parse_modifiers, apply_modifiers): Use INTMASK instead + of VALMASK. + + * fns.c (hashfn_eq, hashfn_eql, hashfn_equal, hash_put) + (sxhash_string, sxhash): Use INTMASK instead of VALMASK. + (maybe_resize_hash_table): Use MOST_POSITIVE_FIXNUM. + + * lisp.h (VALMASK): Only define for non-union type. + (MARKBIT): Remove. + (ARRAY_MARK_FLAG): Use previous value of MARKBIT. + (XTYPE): Define unconditionally. + (XSETTYPE): Remove one more remnant. + (EQ): Define differently for the union and non-union cases. + (INTMASK): New bit mask. + (struct Lisp_Marker): Move down to prepare for upcoming patch. + (GC_EQ): Delegate to EQ. + + * coding.c (coding_restore_composition): Lisp_Object/int mixup. + +2003-11-17 Jan Dj,Ad(Brv + + * xterm.c (x_window_to_scroll_bar): Move check of display to + where window_id is compared. + +2003-11-17 Kim F. Storm + + * dispextern.h (struct it): New member first_vpos. + + * xdisp.c (start_display): Set it->first_vpos. + (try_window_id): Use first_vpos to start display in first _text_ + line if no reusable lines at start of window with header line. + +2003-11-16 Jan Dj,Ad(Brv + + * w32fns.c (XPutPixel): + * w32bdf.c (w32_init_bdf_font): + * sunfns.c (sel_read): + * process.c (Fmake_network_process): + * frame.c (store_frame_param): + * fontset.c (Fset_fontset_font): + * emacs.c (shut_down_emacs): + * ccl.c (ccl_driver): Remove period at end of error message. + + * config.in: Regenerate. + + * xfns.c (x_window_to_frame, x_any_window_to_frame) + (x_non_menubar_window_to_frame, x_menubar_window_to_frame) + (x_top_window_to_frame): Add Display* argument to xg_win_to_widget. + (x_create_bitmap_mask, xg_set_icon, create_frame_xic) + (xic_set_statusarea, x_window, gif_load): Formatting adjustments. + + * xterm.h (struct x_display_info): New field xg_cursor for GTK. + + * xterm.c: Add Display * to x_window_to_scroll_bar declaration. + (XTmouse_position, handle_one_xevent): Pass Display* to + x_window_to_scroll_bar. + (x_window_to_scroll_bar): Take a Display* argument. + Check that display for frame is equal to Display* argument. + (event_handler_gdk): Remove current_dpyinfo. Get dpyinfo from + x_display_info_for_display instead. Use Display in xev instead + of GDK_DISPLAY. + (x_dispatch_event): Call x_display_info_for_display. + (XTread_socket): Move GTK part out of loop. current_dpyinfo removed. + (x_connection_closed): Call xg_display_close for GTK. + (x_term_init): Call xg_display_open for additional displays. + Initiate dpyinfo->xg_cursor with call to xg_create_default_cursor + for GTK. + + * xmenu.c (single_menu_item, mouse_position_for_popup) + (x_activate_menubar): Formatting adjustments. + + * xdisp.c (update_tool_bar, redisplay_tool_bar): Formatting + adjustments. + + * gtkutil.c (xg_get_gdk_display, xg_set_screen, xg_display_open) + (xg_display_close, xg_create_default_cursor) + (xg_get_gdk_pixmap_and_mask): New functions for multiple display + handling. + (xg_left_ptr_cursor): Remove. + (xg_set_cursor): Change cursor to GdkCursor*. Do not create + cursor here. + (xg_win_to_widget): Take Display* argument, call + gdk_xid_table_lookup_for_display. + (xg_create_frame_widgets, xg_get_file_name, create_menus) + (xg_create_widget, xg_modify_menubar_widgets): Call xg_set_screen. + (xg_create_widget, xg_create_scroll_bar): Use xg_cursor + in FRAME_X_DISPLAY_INFO. + (xg_get_scroll_id_for_window): Take Display* argument. + (update_frame_tool_bar): Call xg_get_gdk_pixmap_and_mask. + (xg_initialize): Remove xg_left_ptr_cursor. + + * gtkutil.h (xg_get_scroll_id_for_window, xg_win_to_widget): Add + Display* argument. + (xg_display_open, xg_display_close, xg_create_default_cursor): Declare. + +2003-11-14 Jan Dj,Ad(Brv + + * xterm.c (x_detect_focus_change): Do not change focus frame for + Enter/LeaveNotify if the current focus frame has explicit focus. + +2003-11-14 Kim F. Storm + + * dispnew.c (update_text_area): Fix redisplay error when hscroll + is active and first glyph is only partially visible. + +2003-11-13 Kenichi Handa + + * xdisp.c (select_frame_for_redisplay): New function. + (redisplay_internal): Record also selected_frame for + unwind_redisplay. Call select_frame_for_redisplay before + redrawing each frame. + (unwind_redisplay): Argument changed to a cons. + +2003-11-12 Luc Teirlinck + + * fns.c (Fstring_to_multibyte): Doc fix. + +2003-11-11 Kenichi Handa + + * xterm.c (x_list_fonts): Fix excluding of auto-scaled fonts. + +2003-11-09 Jan Dj,Ad(Brv + + * xfns.c (x_window): Set XtNx and XtNy in shell widget for + program specified positions. + +2003-11-08 Jan Dj,Ad(Brv + + * xterm.c (XAW_ARROW_SCROLLBARS): Define it for Xaw 1.5E. + +2003-11-08 Kenichi Handa + + * Makefile.in (lisp): Add kannada.el. + (shortlisp): Likewise. + +2003-11-07 Kenichi Handa + + * coding.c (coding_allocate_composition_data): + Reset coding->composing to COMPOSITION_NO. + (coding_restore_composition): Detect invalid composition data. + Give Fstring and Fvector a Lispy integer, not C int. + +2003-11-05 Stefan Monnier + + * floatfns.c (Flogb): Don't use VALMASK. + + * m/amdx86-64.h (VALBITS, XINT, XUINT): Remove. + * m/ia64.h (VALBITS, XINT, XUINT): Remove. + + * lisp.h (XINT): Move the cast to clarify what is going on. + (GCTYPEMASK, XSETTYPE): Remove. + (XGCTYPE): Make it an alias of XTYPE. + +2003-11-03 Jan Dj,Ad(Brv + + * xterm.c (x_term_init): Fix formatting. + +2003-11-02 Jan Dj,Ad(Brv + + * gtkutil.h (xg_have_tear_offs): Declare. + (xg_keep_popup, xg_did_tearoff): Remove. + + * gtkutil.c: Remove variable xg_did_tearoff. + (xg_have_tear_offs): New function. + (tearoff_remove): Just decrease xg_detached_menus. + (tearoff_activate): Increase xg_detached_menus and call + tearoff_remove when tearoff is removed. + (xg_keep_popup): Remove function. + (create_menus): Give add_tearoff_p as argument to recursive + call to create_menus. + (xg_create_widget): Use variables instead of multiple + strcmp. Tell create_menus to create tear off only for + menu bar menus. + (xg_update_menubar): Change title for a detached menu also. + (xg_modify_menubar_widgets): Always call xg_update_menubar, regardless + of deep_p. + (xg_initialize): Initialize xg_detached_menus, remove + initialization of xg_did_tearoff. + + * xmenu.c (set_frame_menubar): For GTK, set deep_p if + xg_have_tear_offs returns non-zero. + (create_and_show_popup_menu): Remove setting of xg_did_tearoff and + call to xg_keep_popup. + +2003-11-01 Andrew Choi + + * macterm.c (XTread_socket): Handle menubar selection and grow + window only for mouseDown events. + +2003-10-31 Jan Dj,Ad(Brv + + * xterm.c (x_term_init): For GTK part, increase x_initialized + to check for more than one display. Use error instead of return 0. + +2003-10-31 Andrew Choi + + * unexmacosx.c (unrelocate): New function (contributed by Nozomu Ando). + (copy_dysymtab): Call it. + +2003-10-31 Luc Teirlinck + + * eval.c (Fdefvaralias): Doc fix. + +2003-10-26 Luc Teirlinck + + * data.c (Fsetplist): Doc fix. + +2003-10-14 Lute Kamstra + + * window.c (Fset_window_fringes): Clarify docstring. + +2003-10-14 Kim F. Storm + + * window.c (Fset_window_margins): Simplify arg checking. + +2003-10-13 Richard M. Stallman + + * regex.c (MAX_BUF_SIZE): Reduce to 2**15. + (print_partial_compiled_pattern): Replace assert with a printout. + (skip_noops, mutually_exclusive_p): Change args, values to re_char *. + + * alloc.c (lisp_align_malloc): If BASE is 0, call memory_full. + + * window.c (Fset_window_margins): Allow only integers as args. + (syms_of_window) : Doc fixes. + +2003-10-13 Lute Kamstra + + * window.c (Fset_window_fringes): Elaborate docstring. + +2003-10-12 Andrew Choi + + * macterm.c (XTread_socket): Call DragWindow only for mouseDown events. + + * s/darwin.h (GC_MARK_STACK): Define. + +2003-10-12 Jan Dj,Ad(Brv + + * window.c (shrink_windows): New function. + (size_window): Call shrink_windows to calculate window sizes when + shrinking frame with more than one window. + +2003-10-12 Kim F. Storm + + * xdisp.c (compute_fringe_widths): Doc fix. + +2003-10-08 Kenichi Handa + + * coding.c (Fcoding_system_p): Return t for auto-loading coding system. + +2003-10-07 Kenichi Handa + + * coding.c (Qcoding_system_define_form): New variable. + (syms_of_coding): Intern and staticpro it. + (Fcheck_coding_system): Try to autoload the definition of + CODING-SYSTEM. + +2003-10-05 Luc Teirlinck + + * fns.c (Frequire): Doc fix. + +2003-10-05 Jan Dj,Ad(Brv + + * xfns.c (Fx_send_client_event): New function as a base for + manipulating extended window manager hints. + (Fx_send_client_event): Remove unused variable s. + + * w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move, + that function is removed. + + * xterm.c (x_set_offset): Use move_offset_left/top instead of + x/y_pixels_outer_diff. + (x_check_expected_move): Calculate move_offset_left/top. + + * xterm.h (struct x_output): New members: move_offset_top/left. + + * frame.c (x_set_frame_parameters): Remove x_fullscreen_move, + call x_set_offset directly. + + * frame.h (enum): FULLSCREEN_MOVE_WAIT removed. + + * frame.c (Fdelete_frame): Free decode_mode_spec_buffer. + + * xterm.c (x_delete_display): Free font names and font_encoder + in dpyinfo->font_table. + + * xfns.c (Fx_close_connection): Only call XFreeFont here. + Move xfree of font names to x_delete_display. + + * xterm.h (struct x_display_info): New member, wm_type. + (struct x_output): New members, expected_top/left and + check_expected_move. + + * xterm.c (handle_one_xevent): Reset wm_type when ReparentNotify + is received. + (handle_one_xevent): Rename x_check_expected_move from + x_check_fullscreen_move. + (x_set_offset): Only add WM decoration sizes to modified_top/left + for X_WMTYPE_A. Set check_expected_move when WM type is unknown. + (x_check_expected_move): Rename from x_check_fullscreen_move. + Removed fullscreen specific code. Use check_expected_move, + expected_left/top instead. Also, set wm_type. + (x_term_init): Initialize wm_type to unknown. + + * frame.c (x_fullscreen_move): Remove addition of WM decoration + sizes to move_x/y. + +2003-10-03 Kenichi Handa + + * macterm.c (x_load_font): Clear all members of FONTP before start + filling them. + +2003-10-02 Kenichi Handa + + * fontset.c (fs_load_font): Don't set fontp->font_encoder to NULL + before calling find_ccl_program_func. Call find_ccl_program_func + only when fontp->font_encoder is not NULL. + + * xterm.c (x_load_font): Clear all members of FONTP before start + filling them. + +2003-10-03 John Paul Wallington + + * keymap.c (map_keymap): Don't abort when binding is a vector. + +2003-10-02 Jason Rumney + + * makefile.w32-in (emacs.o, coding.o, bytecode.o): + Sync dependencies with Makefile.in. + (alloca.o): Remove. + + * w32fns.c (w32_load_system_font): Clear all members of FONTP before + filling them. + + * w32bdf.c (w32_load_bdf_font): Likewise. + +2003-09-30 Richard M. Stallman + + * term.c (set_tty_color_mode): Calculate current_mode_spec + regardless of value of VAL. + + * intervals.c (graft_intervals_into_buffer): + Set BUF_INTERVALS (buffer)->up_obj when appropriate. + Handle over_used when splitting UNDER. + +2003-09-30 YAMAMOTO Mitsuharu + + * regex.c (regex_compile): Free the stack when returning from function. + +2003-09-28 Kenichi Handa + + * fontset.c (Finternal_char_font): Change return value to + cons (FONT-NAME . GLYPH-CODE). + +2003-09-28 Eli Zaretskii + + * term.c (tty_setup_colors): Treat any negative argument as -1. + +2003-09-27 Gaute B Strokkenes (tiny change) + + * process.c (send_process): Delete unused temp_buf. + +2003-09-26 Dave Love + + * xterm.c (x_bitmap_mask): Declare. + +2003-09-25 Dave Love + + * Makefile.in (fns.o): Depend on md5.h. + +2003-09-25 Kim F. Storm + + * window.c (set_window_buffer): Fix redisplay problems when + switching between buffers with different display margin widths. + +2003-09-23 Kim F. Storm + + * process.c (set_socket_option): Fix :bindtodevice option. + (Fset_network_process_option): Update process contact list when + setting option succeeds. + (Fmake_network_process): Doc fix. + +2003-09-23 Dave Love + + * process.c (Fnetwork_interface_info): Use HAVE_STRUCT_IFREQ... macros. + +2003-09-22 Eli Zaretskii + + * term.c (set_tty_color_mode): Use INTEGERP to test whether a + color mode is an integer number (it could be -1). + +2003-09-22 Richard M. Stallman + + * intervals.c (graft_intervals_into_buffer): Correct the main loop + in the case where OVER is longer than UNDER. + +2003-09-22 Masatake YAMATO + + * window.c (Fset_window_scroll_bars): Validate the value of + `vertical_type'. + +2003-09-21 Kim F. Storm + + * frame.c (Vdefault_frame_scroll_bars): New variable. + (x_set_vertical_scroll_bars): Use it instead of hardcoded values. + (syms_of_frame): DEFVAR_LISP it, and initialize according to + window-system default scroll bar position. + + * window.c (Fwindow_scroll_bars): Doc fix. + +2003-09-19 Jan Dj,Ad(Brv + + * xterm.c (x_set_offset): Take window manager decorations into account. + +2003-09-19 Richard M. Stallman + + * atimer.h: Don't include lisp.h. + (P_): Define it here (as well as elsewhere). + + * print.c (Fprin1_to_string): Move the PRINTPREPARE + later, so that PRINTFINISH won't unbind Qinhibit_modification_hooks. + + * data.c (Fvariable_binding_locus): New function. + (syms_of_data): defsubr it. + (Flocal_variable_p): Delete duplicate call to indirect_variable. + +2003-09-18 Dave Love + + * alloc.c (GC_MALLOC_CHECK): Move conditional undef after lisp.h. + + * process.c (Fnetwork_interface_info): Fix type error. + (Fnetwork_interface_list): Doc fix. + (read_process_output, read_process_output): Delete unused var. + +2003-09-17 Kim F. Storm + + * process.c (Fnetwork_interface_list, Fnetwork_interface_info): + Require HAVE_NET_IF_H and HAVE_SYS_IOCTL_H to include these fns. + (Fnetwork_interface_info): Check that ifreq struct has required + fields before accessing them; this requires that those fields are + defined as macros, which may be too restrictive on some platforms, + but it is better than failing on other platforms. + (syms_of_process): Only defsubr above fns when included. + +2003-09-17 Dave Love + + * unexalpha.c: Don't include varargs.h. + +2003-09-17 Kim F. Storm + + * process.c (Fset_process_sentinel): Add sentinel to childp plist + for network process. + (socket_options): Add `:' prefix to option names. Add optbit field. + (set_socket_option): Remove no_error arg and special handling of s < 0. + Return 1< + + * Makefile.in: Depend on coding.h. + +2003-09-14 Kim F. Storm + + * process.c [HAVE_SOCKETS]: Include sys/ioctl.h and net/if.h. + (Fnetwork_interface_list, Fget_network_interface_info): New defuns. + (syms_of_process): Defsubr them. + + * config.in: Regenerate. + +2003-09-12 Stefan Monnier + + * m/sr2k.h (XMARKBIT, XUNMARK): Remove. + * m/news-r6.h (XUNMARK): Remove. + * m/mips.h (XUNMARK): Remove. + * m/mips-siemens.h (XUNMARK): Remove. + * m/iris4d.h (XUNMARK): Remove. + * m/hp800.h (XMARKBIT, XUNMARK): Remove. + +2003-09-11 Stefan Monnier + + * lisp.h (VALBITS): Don't remove 1 for the markbit. + (union Lisp_Object): Use unsigned int for types. Remove markbit. + (MARKBIT): Remove 1 from VALBITS so we still use same old val. + (XTYPE): Use unsigned right-shift. + (XMARKBIT, XMARK, XUNMARK): Remove. + + * alloc.c (init_intervals, init_symbol, init_marker): + Don't preallocate anything. + (Fgarbage_collect, mark_object): Ignore the markbit. + + * bytecode.c (mark_byte_stack, unmark_byte_stack): Ignore the markbit. + +2003-09-08 Lute Kamstra + + * xdisp.c (pint2hrstr): New function. + (decode_mode_spec): Add `%i' and `%I' specs. + * buffer.c (syms_of_buffer): Document `%i' and `%I' constructs + for `mode-line-format'. + +2003-09-07 Andreas Schwab + + * alloc.c: Use long instead of int when casting ABLOCKS_BUSY to + avoid warning. + +2003-09-07 Eli Zaretskii + + * editfns.c (region_limit): Support any non-zero value of BEGINNINGP. + +2003-09-03 Kim F. Storm + + * xdisp.c (get_window_cursor_type): Partially undo 2002-03-01 + change (superseded by 2002-08-30 change); the default blink-off + cursor is now again "no cursor". + +2003-09-01 Jason Rumney + + * makefile.w32-in (alloca.o): Remove. + (coding.o): Depend on intervals.h + (emacs.o, bytecode.o): Depend on window.h. + +2003-09-01 Dave Love + + * Makefile.in (alloca.o): Remove commands. + (coding.o): Depend on intervals.h composite.h window.h. + (emacs.o): Depend on window.h keyboard.h keymap.h. + (gtkutil.o): Depend on keyboard.h charset.h coding.h. + (bytecode.o): Depend on window.h. + +2003-08-31 Jason Rumney + + * w32term.c (w32_per_char_metric): Allow cached metrics to be + returned even when font_type is unknown. + + * xdisp.c (init_iterator): Remove old WINDOWSNT conditional. + +2003-08-30 Jan Dj,Ad(Brv + + * xterm.c (x_term_init): Initialize new fields in x_display_info. + + * xterm.h (struct x_display_info): Add red/green/blue_bits and + *_offset. + + * xfns.c (lookup_rgb_color): Use new fields in x_display_info to + calculate pixel value. + +2003-08-29 Gerd Moellmann + + * xdisp.c (redisplay_internal): Fix change of 2003-04-30. + Don't tell redisplay display is accurate when it's actually been + paused for pending input. + +2003-08-29 Richard M. Stallman + + * dispnew.c (adjust_glyph_matrix): Call window_box + whenever W is nonzero. + + * data.c (Fmake_variable_buffer_local, Fmake_local_variable) + (Fkill_local_variable, Fmake_variable_frame_local) + (Flocal_variable_p, Flocal_variable_if_set_p): + Use indirect_variable to trace thru variable aliases. + + * config.in: Updated. + + * callint.c (Fcall_interactively): Save and restore + Vthis_command, Vthis_original_command, real_this_command, + and current_kboard->Vlast_command. + + * abbrev.c (Fexpand_abbrev): Insert before deleting. + +2003-08-29 Gerd Moellmann + + * xfns.c (lookup_rgb_color): Handle TrueColor visuals specially. + +2003-08-28 David Abrahams (tiny change) + + * coding.c (decode_coding_iso2022): Initialize local variable c2. + (decode_coding_sjis_big5): Likewise. + +2003-08-27 Jason Rumney + + * w32.c (sys_pipe): Protect against file descriptor overflow. + + * w32fns.c (syms_of_w32fns): Remove non-existent functions. + + * w32term.c (w32_read_socket): Fix WM_MOUSEWHEEL assignment. + +2003-08-26 Terje Rosten + + * xfns.c (Vgtk_version_string): New variable. + (syms_of_xfns): DEFVAR_LISP it. Provide gtk. + +2003-08-24 Eli Zaretskii + + * term.c (term_init): Remove `const' from buffer_size's declaration. + + * Makefile.in (msdos.o): Depend on intervals.h. + + * msdos.c: Include intervals.h, since STRING_INTERVALS requires that. + +2003-08-21 Jan Dj,Ad(Brv + + * xterm.h (struct x_display_info): New fields: client_leader_window + and Xatom_wm_client_leader. + + * xterm.c (x_initialize): Move call to x_session_initialize to ... + (x_term_init): ... here. Initialize client_leader fields in dpyinfo. + + * xsmfns.c (create_client_leader_window): New function. + (x_session_initialize): Call create_client_leader_window, take + dpyinfo as argument. + + * xfns.c (Fx_create_frame): Set property WM_CLIENT_LEADER. + + * Makefile.in (xsmfns.o): Add more depenedencies. + +2003-08-21 Dave Love + + * m/iris4d.h: Use _MIPS_SZLONG, not _LP64. + +2003-08-21 Kenichi Handa + + * term.c (term_init): Fix previous change; don't rely on the + length of `buffer' if TERMINFO is defined. + +2003-08-20 Dave Love + + * atimer.h: Include lisp.h. + + * lisp.h (EMACS_LISP_H): New. + (popup_activated_flag): Don't declare. + + * alloca.c: Some merging with gnulib. Change logic and doc + concerning (x)malloc/(x)free -- no longer Emacs-specific. + [DO_BLOCK_INPUT]: Don't include lisp.h. + (xmalloc, xfree): Declare. + (malloc): Don't declare. + + * Makefile.in (LWLIB_OPTIONS): Remove (unused). + (alloca.o): Remove obsolete stuff concerning alloca.s. Depend on + atimer.h, blockinput.h. + + * alloc.c (lisp_align_malloc): Change type of `aligned'. + + * alloca.s: Remove. + +2003-08-19 Gerd Moellmann + + * s/freebsd.h [__FreeBSD_version >= 400000]: Define TERMINFO, + use -lncurses. + + * term.c (term_init): Use a buffer of size 4096 for tgetent since + FreeBSD returns something longer than 2044. Abort if the end of + the buffer is overwritten. + +2003-08-19 Miles Bader + + * xterm.c (x_term_init): Correctly use result of Ffile_readable_p. + +2003-08-19 Gerd Moellmann + + * alloc.c (lisp_align_malloc): Check for memory full when + allocating ablocks, which also avoids freeing a pointer into an + ablocks structure. + + * puresize.h (BASE_PURESIZE): Increase to 1100000. + + * buffer.c (Fmove_overlay): Set overlay's next pointer unconditionally. + +2003-08-16 Richard M. Stallman + + * editfns.c (Fencode_time): Doc fix. + +2003-08-16 David Ponce + + * fileio.c (Fwrite_region): Fix conditional expression to issue + the right message. + +2003-08-16 Juri Linkov + + * syntax.c (Fforward_word): Argument changed to optional. + Set default value to 1. + +2003-08-15 Kenichi Handa + + * xfaces.c (better_font_p): Prefer a real scalable font; i.e. not + what autoscaled. + (best_matching_font): Once we find a better scalable font, set + non_scalable_has_exact_height_p to 1. + (try_font_list): Call try_alternative_families to try any family + with the given registry. + +2003-08-09 Andreas Schwab + + * alloc.c (mark_object): Handle Lisp_Misc_Save_Value. + + * print.c (print_string): Fix printing of multibyte string with + nontrivial printcharfun. + +2003-07-31 Jan Dj,Ad(Brv + + * xfns.c (xg_set_icon): Rewrite to compile with GTK 2.0 and 2.2. + + * xterm.c (x_bitmap_icon): Return if xg_set_icon succeeds. + +2003-07-31 Kenichi Handa + + * process.c (read_process_output): Return the actually read bytes + instead of the result of decoding. + +2003-07-31 Kenichi Handa + + * xterm.h (struct x_bitmap_record): New member have_mask. + + * xfns.c (x_create_bitmap_from_data): Initialize have_mask member + to 0. + (x_create_bitmap_from_file): Likewise. + (x_destroy_bitmap): Check have_mask member before freeing a mask. + (x_destroy_all_bitmaps): Likewise. + (x_create_bitmap_mask): Set have_mask member to 1. + +2003-07-30 Richard M. Stallman + + * Makefile.in (CFLAGS) [!OPTIMIZE]: Undo previous change. + +2003-07-29 Jan Dj,Ad(Brv + + * gtkutil.c (xg_mark_data): Update calls to mark_object. + +2003-07-29 Richard M. Stallman + + * xterm.c (xim_open_dpy, xim_initialize, xim_close_dpy): + Conditionalize XIM code on HAVE_XIM. + + * fns.c (Fclear_string): New function. + (syms_of_fns): defsubr it. + +2003-07-28 KOBAYASHI Yasuhiro + + * xfns.c (xic_set_preeditarea): Add the left fringe width to spot.x. + +2003-07-22 Stefan Monnier + + * xfns.c: Don't check HAVE_PNG_H: autoconf doesn't seem to find it. + + * buffer.c (delete_all_overlays): New function. + * buffer.h (delete_all_overlays): Declare. + * coding.c (run_pre_post_conversion_on_str): + * print.c (temp_output_buffer_setup): + * fileio.c (Finsert_file_contents): + * minibuf.c (get_minibuffer): Use it. + +2003-07-22 Andrew Choi + + * unexmacosx.c (unexec_regions_sort_compare): + (unexec_regions_merge): New functions. Sort and merge unexec + regions before dumping them. + +2003-07-22 Dave Love + + * xfns.c [HAVE_PNG]: Consider both png.h and libpng/png.h. + +2003-07-21 Stefan Monnier + + * alloc.c (MARK_STRING, UNMARK_STRING, STRING_MARKED_P) + (GC_STRING_CHARS, string_bytes): Use ARRAY_MARK_FLAG rather than + MARKBIT as the gcmarkbit for strings. + +2003-07-21 Richard M. Stallman + + * s/openbsd.h (LD_SWITCH_SYSTEM_TEMACS): Add undef. + + * fns.c (Flocale_info): Rename from Flanginfo. Doc fixes. + (syms_of_fns): Corresponding change. + + * alloc.c (syms_of_alloc): Doc fixes. + +2003-07-20 Han Boetes (tiny change) + + * s/netbsd.h: Use -Wl syntax. + +2003-07-17 Richard M. Stallman + + * xterm.c (xim_initialize): Redo 6/24 change. + +2003-07-15 Stefan Monnier + + * buffer.c (copy_overlays): Use EMACS_INT for positions. + (Fswitch_to_buffer): Don't signal an error when switching to the same + buffer in a dedicated window. + + * alloc.c: Use bitmaps for cons, as was done for floats. + (init_float, init_cons): Let the normal code allocate the first block. + (CONS_BLOCK_SIZE): Redefine based on BLOCK_BYTES and bitmap size. + (CONS_BLOCK, CONS_INDEX, CONS_MARKED_P, CONS_MARK, CONS_UNMARK): + New macros. + (struct cons_block): Move conses to the beginning. Add gcmarkbits. + (Fcons): Use lisp_align_malloc and CONS_UNMARK. + (live_cons_p): Check the pointer is not past the `conses' array. + (mark_maybe_object, mark_maybe_pointer): Use CONS_MARKED_P. + (mark_object, mark_buffer): Use CONS_MARKED_P and CONS_MARK. + (survives_gc_p): Use CONS_MARKED_P and simplify. + (gc_sweep): Use CONS_MARKED_P, CONS_UNMARK, and lisp_align_free. + +2003-07-13 Paul Eggert + + GCC 3.3 (sparc) no longer puts "int foo = 0;" into data; it + puts it into BSS instead, at least on Solaris 8 and 9. + This is a valid optimization, and it may occur on other platforms, + so Emacs should not assume that initializing a static variable to + zero puts it into data. + * alloc.c (pure, staticvec): + Initialize these arrays to nonzero, so that they're not + put into BSS by that optimization. + +2003-07-13 Stefan Monnier + + * alloc.c (BLOCK_PADDING): Rename from ABLOCKS_PADDING. Update users. + (lisp_align_malloc): Use posix_memalign is available. + (ABLOCKS_BASE): Use HAVE_POSIX_MEMALIGN as an optimization. + (STRING_BLOCK_SIZE): Rename from STRINGS_IN_STRING_BLOCK + for consistency. Update users. + +2003-07-13 Richard M. Stallman + + * s/netbsd.h (START_FILES_1, END_FILES_1): Always define them. + +2003-07-13 Terje Rosten + + * xterm.c (x_bitmap_icon, x_wm_set_icon_pixmap): Modify to add mask, + and use the Gtk+ function gtk_window_icon_from_file if available. + + * xfns.c (x_bitmap_mask, x_create_bitmap_mask): New functions to + handle mask of bitmaps. + (x_allocate_bitmap_record, x_destroy_bitmap): Modify to handle the + mask property. + (xg_set_icon): New function, wrapper for gtk_window_icon_from_file. + + * xterm.h (xg_set_icon): New function. + +2003-07-12 Paul Eggert + + * unexelf.c (unexec): Consider a section to precede the .bss + section if its addresses overlap that of .bss. + +2003-07-12 Richard M. Stallman + + * Makefile.in (CFLAGS) [!OPTIMIZE]: Set CFLAGS to -g. + + * config.in (HAVE_CRTIN): Add #undef. + (INLINE): Really inline only if OPTIMIZE is defined. + + * s/netbsd.h (START_FILES, LIB_STANDARD): Use START_FILES_1, + END_FILES_1. + (START_FILES_1, END_FILES_1): New macros (conditional). + (LD_SWITCH_SYSTEM_TEMACS): Define. + + * s/openbsd.h: Don't include bsd4-3.h. + (TERMINFO): Define. + (LIBS_TERMCAP): Define. + (LD_SWITCH_SYSTEM): Define (two definitions). + + * xfns.c: Include libpng/png.h instead of png.h. + +2003-07-11 Andreas Schwab + + * buffer.c (modify_overlay): Update prototype. + * lisp.h (adjust_overlays_for_insert, adjust_overlays_for_delete): + Likewise. + +2003-07-09 Stefan Monnier + + * lisp.h (VALBITS): Define in terms of GCTYPEBITS. + (struct interval): Move to intervals.h. + (struct Lisp_Marker): Use EMACS_INT for position info. + (forward_point): Remove prototype of defunct function. + (Qmodification_hooks, Qrear_nonsticky, Fnext_property_change) + (Fget_text_property, Fset_text_properties, Ftext_propertes_not_all) + (syms_of_textprop, set_text_properties): Remove prototypes that are + already in intervals.h. + + * intervals.h (struct interval): Move from lisp.h. + Use EMACS_INT for position and size info. + + * coding.c: Include intervals.h for Fset_text_properties. + + * buffer.h (struct buffer_text, struct buffer): Use EMACS_INT for + position and length information. + +2003-07-09 Stefan Monnier + + * buffer.h (struct buffer_text, struct buffer): Use EMACS_INT for + position and length information. + +2003-07-09 Stefan Monnier + + Change overlays_after and overlays_before so the overlays themselves + are linked into lists, rather than using cons cells. After all each + Lisp_Misc already occupies 5 words, so we can add a `next' field to + Lisp_Overlay for free and save up one cons cell per overlay (not + to mention one indirection when traversing the list of overlay). + + * lisp.h (struct Lisp_Overlay): New field `next'. + + * buffer.h (struct buffer): Change overlays_before and overlays_after + from Lisp lists of overlays to pointers to overlays. + + * buffer.c (overlay_strings, recenter_overlay_lists): + Fix typo in eassert in last commit. + (unchain_overlay): New function. + (add_overlay_mod_hooklist): Use AREF. + (copy_overlays, reset_buffer, overlays_at, overlays_in) + (overlay_touches_p, overlay_strings, recenter_overlay_lists) + (fix_overlays_in_range, fix_overlays_before, Fmake_overlay) + (Fmove_overlay, Fdelete_overlay, Foverlay_lists) + (report_overlay_modification, evaporate_overlays, init_buffer_once): + Adjust to new type of overlays_(before|after). + + * alloc.c (mark_object): Mark the new `next' field of overlays. + (mark_buffer): Manually mark the overlays_(after|before) fields. + + * coding.c (run_pre_post_conversion_on_str): + * editfns.c (overlays_around): + * xdisp.c (load_overlay_strings): + * fileio.c (Finsert_file_contents): + * indent.c (current_column): + * insdel.c (signal_before_change, signal_after_change): + * intervals.c (set_point_both): + * print.c (temp_output_buffer_setup): Use new type for + overlays_(before|after). + +2003-07-08 Stefan Monnier + + * buffer.c (report_overlay_modification): Don't run hooks while + traversing the list of overlays. + + * buffer.h (struct buffer): Use an int for overlay_center. + (overlays_at, evaporate_overlays, recenter_overlay_lists) + (overlay_strings, fix_overlays_before): Use EMACS_INT for positions. + + * buffer.c (reset_buffer, recenter_overlay_lists) + (adjust_overlays_for_insert, adjust_overlays_for_delete) + (fix_overlays_in_range, Fmake_overlay, Fmove_overlay) + (evaporate_overlays, init_buffer_once): Update use of overlay_center. + (overlays_at, evaporate_overlays, recenter_overlay_lists) + (overlay_strings, fix_overlays_before): Use EMACS_INT for positions. + + * xdisp.c (fast_find_position): Remove unused var. + + * cmds.c (Qexpand_abbrev): New sym. + (syms_of_cmds): Initialize it. + (internal_self_insert): Use it to call expand-abbrev. + +2003-07-09 Kim F. Storm + + * xterm.c (use_xim) [!USE_XIM]: Default to disable XIM if Emacs + was configured with --without-xim. + (x_term_init) [!USE_XIM]: Use `useXIM' resource to turn on XIM. + +2003-07-07 Richard M. Stallman + + * xdisp.c (reseat_1): Set it->area to TEXT_AREA. + + * alloc.c (Fgarbage_collect): Doc fix. + +2003-07-07 Nozomu Ando + + * buffer.c (Fkill_buffer): Clear charpos cache if necessary. + +2003-07-06 Stefan Monnier + + * minibuf.c (read_minibuf): UNGCPRO before returning. + (Ftry_completion, Fall_completions): Doc fix. + + * alloc.c (live_float_p): Check that p is not past the `floats' array, + now that `floats' is not the last element of the struct any more. + +2003-07-06 Jason Rumney + + * w32term.h (ClipboardSequence_Proc): New type. + + * w32fns.c (clipboard_sequence_fn): New variable. + (globals_of_w32fns): Initialize it. + + * w32select.c (last_clipboard_sequence_number): New variable. + (Fw32_set_clipboard_data, Fw32_get_clipboard_data): Use sequence + number if possible. + +2003-07-06 Stefan Monnier + + * m/amdx86-64.h (MARKBIT): + * m/ia64.h (MARKBIT): Remove definition since lisp.h does not compare + MARKBIT and ARRAY_MARK_FLAG any more. + + * m/hp800.h (XSETMARKBIT): + * m/sr2k.h (XSETMARKBIT): + * lisp.h (XSETMARKBIT): Remove unused macro. + + * lisp.h (mark_object): Change prototype. + + * alloc.c (mark_object): Change arg *Lisp_Object -> Lisp_Object. + (last_marked): Change accordingly. + (mark_interval, mark_maybe_object, mark_maybe_pointer) + (Fgarbage_collect, mark_glyph_matrix, mark_face_cache, mark_image) + (mark_buffer): Update calls to mark_object. + + * bytecode.c (mark_byte_stack): + * fns.c (sweep_weak_table): + * keyboard.c (mark_kboards): Update calls to mark_object. + +2003-07-06 Jason Rumney + + * alloc.c (struct ablock): Only include padding when there is some. + +2003-07-04 Stefan Monnier + + * alloc.c (ALIGN): Add casts to simplify usage. + (BLOCK_ALIGN, BLOCK_BYTES, ABLOCKS_PADDING, ABLOCKS_SIZE) + (ABLOCKS_BYTES, ABLOCK_ABASE, ABLOCKS_BUSY, ABLOCKS_BASE): New macros. + (struct ablock, struct ablocks): New types. + (free_ablock): New global var. + (lisp_align_malloc, lisp_align_free): New functions. + (FLOAT_BLOCK_SIZE): Redefine in terms of BLOCK_BYTES. + (struct float_block): Reorder and add gcmarkbits. + (GETMARKBIT, SETMARKBIT, UNSETMARKBIT, FLOAT_BLOCK, FLOAT_INDEX) + (FLOAT_MARKED_P, FLOAT_MARK, FLOAT_UNMARK): New macros. + (init_float, make_float): Use lisp_align_malloc. + (free_float, live_float_p): Don't use `type' any more. + (make_float): Use FLOAT_UNMARK to access to mark bit. + (mark_maybe_object, mark_maybe_pointer, survives_gc_p): + Use FLOAT_MARKED_P to access the mark bit. + (pure_alloc): Simplify use of ALIGN. + (mark_object): Use FLOAT_MARK to access the mark bit. + (gc_sweep): Use new macros to access the float's mark bit. + (init_alloc_once): Init free_ablock. + + * lisp.h (struct Lisp_Float): Remove unused field `type'. + +2003-06-27 Stefan Monnier + + * alloc.c (VECTOR_MARK, VECTOR_UNMARK, VECTOR_MARKED_P): New macros. + (GC_STRING_BYTES): Don't mask markbit (it's only used on `size'). + (allocate_buffer): Move. + (string_bytes): Don't mask markbit of `size_byte'. + (mark_maybe_object, mark_maybe_pointer, Fgarbage_collect) + (mark_object, mark_buffer, survives_gc_p, gc_sweep): + Use the `size' field of buffers (rather than the `name' field) for + the mark bit, as is done for all other vectorlike objects. + Use the new macros to access the mark bit of vectorlike objects. + +2003-06-26 Richard M. Stallman + + * puresize.h (BASE_PURESIZE): Increment base size. + + * xdisp.c (fast_find_position): Enable Gerd's new definition. + + * xterm.c (xim_initialize): Undo previous change. + +2003-06-26 Stefan Monnier + + * alloc.c (survives_gc_p): Simplify. + + * buffer.c (set_buffer_internal_1): Test CONSP for lists. + + * window.c (Fset_window_dedicated_p): Simplify. + (display_buffer_1): Don't raise the win from which minibuf was entered. + (temp_output_buffer_show): Don't assume BEG == 1. Simplify. + (Fminibuffer_selected_window): Simplify. + + * buffer.h (struct buffer_text): Lisp_Object `markers' => Lisp_Marker. + + * lisp.h (unchain_marker): Lisp_Object arg => Lisp_Marker. + (struct Lisp_Marker): Lisp_Object `chain' => Lisp_Marker `next'. + + * insdel.c (check_markers, adjust_markers_for_delete) + (adjust_markers_for_insert, adjust_markers_for_replace) + (prepare_to_modify_buffer, RESTORE_VALUE): + * marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos) + (Fset_marker, set_marker_restricted, set_marker_both, unchain_marker) + (set_marker_restricted_both, Fbuffer_has_markers_at, count_markers): + * alloc.c (Fmake_marker, free_marker, gc_sweep): + * buffer.c (Fget_buffer_create, Fkill_buffer, Fset_buffer_multibyte): + * editfns.c (save_excursion_restore, transpose_markers): + * window.c (delete_window): + * xdisp.c (message_dolog): Update for new types. + +2003-06-26 Jan Dj,Ad(Brv + + * xfaces.c (set_font_frame_param): Set default_face_done_p to zero. + (realize_default_face): Use default_face_done_p for the force_p + argument to set_lface_from_font_name. Set default_face_done_p to one. + + * frame.c (make_frame): Initialize default_face_done_p. + + * frame.h (struct frame): Add default_face_done_p. + + * config.in: Add XRegisterIMInstantiateCallback_arg6 so it + will be defined. + +2003-06-25 Stefan Monnier + + * alloc.c (make_interval, Fmake_symbol, allocate_misc): + Initialize the new field `gcmarkbit'. + (mark_interval, MARK_INTERVAL_TREE): Use the new `gcmarkbit' field. + (mark_interval_tree): Don't mark the tree separately from the nodes. + (UNMARK_BALANCE_INTERVALS): Don't unmark the tree. + (mark_maybe_object, mark_maybe_pointer, Fgarbage_collect) + (mark_object, survives_gc_p, gc_sweep): Use new `gcmarkbit' fields. + + * lisp.h (struct interval, struct Lisp_Symbol, struct Lisp_Free) + (struct Lisp_Marker, struct Lisp_Intfwd, struct Lisp_Boolfwd) + (struct Lisp_Kboard_Objfwd, struct Lisp_Save_Value) + (struct Lisp_Buffer_Local_Value, struct Lisp_Overlay) + (struct Lisp_Objfwd, struct Lisp_Buffer_Objfwd): Add `gcmarkbit' field. + +2003-06-24 Dave Love + + * xterm.c (xim_initialize): Use XRegisterIMInstantiateCallback_arg6. + + * strftime.c: Test HAVE_SYS__MBSTATE_H, not __hpux. Merge changes + from gnulib. + +2003-06-21 Richard M. Stallman + + * fileio.c (Fwrite_region): Alternate messages + for append and partial write. + + * keyboard.c (read_key_sequence): When converting upcase fn key to + downcase, update fkey and keytran so `backspace' gets translated. + + * keyboard.c (read_avail_input): Don't signal SIGHUP in batch mode. + + * process.c (wait_reading_process_input): Don't signal SIGIO + in batch mode. + +2003-06-17 Kenichi Handa + + * Makefile.in (xselect.o): Don't depend on charset.h, coding.h, + composite.h. + + * xselect.c: Don't include charset.h, coding.h, composite.h. + (Qforeign_selection): New variable. + (syms_of_xselect): Intern and static it. + (selection_data_to_lisp_data): Return a unibyte string made from + data with `foreign-selection' text property. + +2003-06-15 Stefan Monnier + + * termhooks.h (EVENT_INIT): New macro. + + * keyboard.c (mark_kboards): Move from alloc.c. Mark kbd_buffer. + + * alloc.c (mark_kboards): Move to keyboard.c. + + * keyboard.c (record_asynch_buffer_change, read_avail_input): + * xterm.c (x_dispatch_event): + * xmenu.c (find_and_call_menu_selection): + * xdisp.c (handle_tool_bar_click): + * w32menu.c (menubar_selection_callback): + * sysdep.c (kbd_input_ast, read_input_waiting): + * msdos.c (dos_rawgetc): + * macterm.c (mac_check_for_quit_char): + * macmenu.c (menubar_selection_callback): + * gtkutil.c (xg_tool_bar_callback): Don't pass uninitialized + data to kbd_buffer_store_event. + +2003-06-15 Kim F. Storm + + * xdisp.c (x_fix_overlapping_area): Always use area relative X + to fix redisplay problem with tall characters (such as ,AC(B). + +2003-06-13 Kai Gro,A_(Bjohann + + * fileio.c (Fcopy_file): Doc fix: copies file modes, too. + +2003-06-12 Kenichi Handa + + * fileio.c (Fwrite_region): Save and restore restriction. + +2003-06-12 Dave Love + + * alloca.c (alloca): Declare arg as size_t. + + * sysdep.c: Remove redundant include of unistd.h, stdlib.h. + Use HAVE_DECL_SYS_SIGLIST, not SYS_SIGLIST_DECLARED. + +2003-06-11 Dave Love + + * search.c (shrink_regexp_cache): Use xrealloc. + (syms_of_search): Use xmalloc. + +2003-06-10 Kim F. Storm + + * xdisp.c (phys_cursor_in_rect_p): Fix 2003-05-24 change. + Adjust phys_cursor.x to be relative to window box, rather than + text area before checking -- to ensure cursor is redrawn when + exposing window. + Note: This also fixes a similar (older) bug if display margins + are present. + +2003-06-06 Kenichi Handa + + * coding.c (encoding_buffer_size): If coding->type is + coding_type_ccl, double magnification on CRLF encoding. + +2003-06-06 Jason Rumney + + * w32reg.c (SYSTEM_DEFAULT_RESOURCES): New constant. + (w32_get_string_resource): Try SYSTEM_DEFAULT_RESOURCES last. + + * xfaces.c (Finternal_face_x_get_resource): Do it on Windows and + Mac too. + +2003-06-05 Dave Love + + * strftime.c: Merge changes from gnulib. + + * mktime.c (__mktime_internal): Merge changes from gnulib + involving year 69 and dst2. + + Changes to merge with gnulib version and be consistent with the + autoconf test: + + * getloadavg.c: Set NLIST_STRUCT from HAVE_NLIST_H. + Use HAVE_STRUCT_NLIST_N_UN_N_NAME, not NLIST_NAME_UNION. + [HAVE_LOCALE_H]: Include locale.h. + (getloadavg) [HAVE_SETLOCALE]: Run sscanf in C locale. + +2003-06-05 Kim F. Storm + + * window.c (coordinates_in_window): Convert X and Y to window + relative coordinates inside mode-line and header-line parts. + Convert X and Y to margin area relative coordinates inside left + and right display margin parts. + +2003-06-05 Jason Rumney + + * w32fns.c (add_system_logical_colors_to_map): New function. + (Fx_open_connection): Use it. + +2003-06-04 Stefan Monnier + + * process.c (allocate_pty): Revert part of the previous patch. + (Faccept_process_output): Simplify. + +2003-06-04 Jason Rumney + + * termhooks.h (enum event_kind): Remove MOUSE_WHEEL_EVENT. + + * keyboard.c (Qmouse_wheel, mouse_wheel_syms) + (lispy_mouse_wheel_names): Remove. + (syms_of_keyboard): Remove Qmouse_wheel and mouse_wheel_syms. + Always define drag_and_drop_syms. + + * macterm.c (XTread_socket): Map mouse wheel events to Emacs + WHEEL_EVENT events. + +2003-06-03 Stefan Monnier + + * xdisp.c (update_tool_bar): Add missing UNGCPRO. + + * buffer.c (init_buffer_once): Make kill-buffer-hook permanent-local. + +2003-06-03 Jan Dj,Ad(Brv + + * gtkutil.c (make_menu_item): Make sure we don't crash on a NULL + menu item label. + +2003-06-03 Richard M. Stallman + + * window.c (Fwindow_edges): Doc fix. + (Fwindow_pixel_edges, Fwindow_inside_edges) + (Fwindow_inside_pixel_edges): New functions. + (syms_of_window): defsubr them. + + * window.h (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS) + (WINDOW_MODE_LINE_LINES, WINDOW_HEADER_LINE_LINES): New macros. + +2003-06-02 Stefan Monnier + + * dispnew.c (Fsit_for): Don't lie about the number of args. + +2003-06-02 Dave Love + + * callproc.c: Use HAVE_FCNTL_H, not USG5. + (syms_of_callproc) : Doc fix. + + * doc.c: Use HAVE_FCNTL_H, not USG5. + + * xfaces.c (font_rescale_ratio): Fix for K&R. + + * termcap.c: Use HAVE_FCNTL_H, not _POSIX_VERSION. + + * mem-limits.h: Use HAVE_SYS_RESOURCE_H, HAVE_SYS_VLIMIT_H. + + * lread.c [HAVE_FCNTL_H]: Include fcntl.h. + + * gtkutil.c: Include keyboard.h, charset.h, coding.h. + (xg_create_frame_widgets): Use ENCODE_UTF_8. + + * xterm.c (Qutf_8): Move to coding.c. + + * xmenu.c (ENCODE_MENU_STRING): New. + (list_of_panes, list_of_items, digest_single_submenu, xmenu_show): + Use it. + + * coding.h (ENCODE_UTF_8): New. + (Qutf_8): Declare. + + * coding.c (Qutf_8): New. + (syms_of_coding): Intern it. + + * fns.c: Doc fixes. + +2003-06-02 Kenichi Handa + + * buffer.c (Fset_buffer_multibyte): Fix previous change. + +2003-06-01 Stefan Monnier + + * lread.c (openp): Make sure STR is a string. + +2003-06-01 David Ponce + + * termhooks.h (enum event_kind): Add new WHEEL_EVENT event. + Declare MOUSE_WHEEL_EVENT only if MAC_OSX defined. + + * keyboard.c (Qmouse_wheel): Declare only if MAC_OSX defined. + (mouse_wheel_syms, lispy_mouse_wheel_names): Likewise. + (discard_mouse_events): Discard WHEEL_EVENT events too. + (lispy_wheel_names, wheel_syms): New. + (syms_of_keyboard): Init and staticpro `wheel_syms'. Init and + staticpro `Qmouse_wheel' and `mouse_wheel_syms' only if MAC_OSX defined. + (make_lispy_event): Add WHEEL_EVENT handler. + + * w32term.c (construct_mouse_wheel): Construct WHEEL_EVENT. + (w32_read_socket): Map w32 WM_MOUSEWHEEL events to Emacs + WHEEL_EVENT events. + +2003-05-31 John Paul Wallington + + * Makefile.in (lisp, shortlisp): byte-run, float-sup, map-ynp, and + timer are in lisp/emacs-lisp. + +2003-05-31 Kenichi Handa + + * buffer.c (Fset_buffer_multibyte): Correctly recover a narrowed + region when a buffer is changed to unibyte. + + * charset.h (VALID_LEADING_CODE_P): New macro. + (UNIBYTE_STR_AS_MULTIBYTE_P): Check more rigidly. + + * coding.c (DECODE_EMACS_MULE_COMPOSITION_CHAR): If coding->flags + is nonzero, accept multibyte form of eight-bit-control chars. + (decode_composition_emacs_mule): Likewise. + (decode_coding_emacs_mule): Likewise. + (encode_coding_emacs_mule): If coding->flags is nonzero, produce + multibyte form of eight-bit-control chars. + + * fileio.c (Qauto_save_coding, auto_save_coding): New variables. + (Finsert_file_contents): If coding-system-for-read is bound to + Qauto_save_coding, use the coding system emacs-mule with special + setting for recovering a file. + (choose_write_coding_system): On auto saving, use the coding + system emacs-mule with special setting for auto saving. + (syms_of_fileio) : Intern and staticpro it. + +2003-05-30 Kenichi Handa + + * coding.c (ccl_coding_driver): Set ccl->eight_bit_control + properly before calling ccl_driver. + + * ccl.h (struct ccl_program) : Comment fixed. + + * ccl.c (CCL_WRITE_CHAR): Increment extra_bytes only when it is nonzero. + (ccl_driver): Initialize extra_bytes to ccl->eight_bit_control. + (setup_ccl_program): Initialize ccl->eight_bit_control to zero. + +2003-05-29 Glenn Morris + + * xfaces.c (realize_default_face): Do not abort if lface is + non-existent - reverts change from 2003-05-19. + +2003-05-29 Kenichi Handa + + * coding.c (decode_coding_iso2022): Pay attention to the byte + sequence of CTEXT extended segment, and retain those bytes as is. + +2003-05-28 Kenichi Handa + + * coding.c (ENCODE_UNSAFE_CHARACTER): Adjust for the name change + of CODING_REPLACEMENT_CHARACTER. + (decode_coding_iso2022): If CODING_FLAG_ISO_SAFE, set + CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in coding->mode, and + check this flag on encoding. + (encode_coding_sjis_big5): + Check CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag of coding->mode. + (Fset_terminal_coding_system_internal): + Set CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in terminal_coding.mode + instead of setting CODING_FLAG_ISO_SAFE flag in terminal_coding.flags. + + * coding.h (CODING_REPLACEMENT_CHARACTER): Rename from + CODING_INHIBIT_CHARACTER_SUBSTITUTION. + (CODING_MODE_INHIBIT_UNENCODABLE_CHAR): New macro. + +2003-05-28 Richard M. Stallman + + * print.c (syms_of_print) : Doc fix. + + * eval.c (unbind_to): Move init of this_binding to separate statement. + +2003-05-28 Kim F. Storm + + * xdisp.c (expose_window): Fix error in calculation of + window relative coordinates of area to redisplay. + +2003-05-27 Jason Rumney + + * w32term.c (GET_WHEEL_DELTA_WPARAM): New macro. + +2003-05-27 David Ponce + + Handle W32 mouse wheel events as mouse click events, like in X. + + * keyboard.c (make_lispy_event) [WINDOWSNT]: Don't handle + MOUSE_WHEEL_EVENT anymore. + + * w32term.c (construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. + Scrolling down/up the mouse wheel is respectively mapped to mouse + button 4 and 5. + (w32_read_socket): Map w32 WM_MOUSEWHEEL events to Emacs + MOUSE_CLICK_EVENT events. Forward w32 MSH_MOUSEWHEEL events as + WM_MOUSEWHEEL events. + +2003-05-27 Andreas Schwab + + * buffer.c (syms_of_buffer) : Doc fix. + + * xdisp.c (try_window_id): Avoid aborting if PT is inside a + partially visible line. + + * alloc.c (Fgarbage_collect): Fix last change. + +2003-05-26 John Paul Wallington + + * xfns.c (Fx_create_frame): Don't call Qface_set_after_frame_default. + +2003-05-25 Stefan Monnier + + * window.c (Fset_window_buffer): Add type of `keep_margins'. + (Fset_window_fringes, Fset_window_scroll_bars): Declare before use. + + * window.h (window_box_text_cols): Declare. + + * xdisp.c (window_text_bottom_y, draw_row_fringe_bitmaps) + (x_draw_vertical_border): Remove unused var `f'. + + * xfaces.c (build_scalable_font_name): Remove `unused var + pixel_size' warning. + + * xfns.c (png_load): Remove `unused vars intent, image_gamma' warning. + + * unexelf.c (unexec): Remove `unused var n' warning. + + * strftime.c (my_strftime_localtime_r): Remove `defined but + unused' warning. + + * process.c (allocate_pty): Remove `unused var stb' and + `cp might be used uninitialized' warnings. + + * dispnew.c (mode_line_string): Remove unused var `f'. + + * coding.c (find_safe_codings): Remove unused var `i'. + + * bytecode.c (Fbyte_code): Remove `unused val' warning. + + * buffer.c (Fkill_buffer): Remove unused var `list'. + + * alloc.c (Fgarbage_collect): Remove `unused var tail' warning. + +2003-05-25 Jan Dj,Ad(Brv + + * frame.c (make_frame): Condition want_fullscreen with + HAVE_WINDOW_SYSTEM. + +2003-05-25 Juanma Barranquero + + * window.c (Fset_window_scroll_bars): Fix typo in argument name. + (Fwindow_scroll_bars): Fix typo in docstring. + +2003-05-24 Kim F. Storm + + The following changes serve several purposes: + + 1) Swap the position of fringes and display margins in windows, i.e. + the fringes are now displayed between the margins and the text area + (by default). + + 2) Allow fringe and scroll bar parameters to be set per-buffer and + per-window (like display margins). Such settings are now stored + in window configurations, preserved when frames are resized, and + copied when windows are split vertically or horizontally. + Several bugs related to display margins have been fixed. + + 3) Consistently use FRAME_FONT and FRAME_FONTSET macros. + + 4) Use FRAME_COLUMN_WIDTH (f) consistently throughout the code + rather than FRAME_WIDTH (FRAME_FONT (f)). + + 5) Introduce a consistent naming of variables, members and macros + depending on whether their value is measured in pixels or in + canonical columns/lines. Pixel dimensions are named *_width and + *_height, while canonical columns/lines are named *_cols and + *_lines. Pixel positions are named *_x and *_y, while column/line + positions are named *_col and *_line. + + 6) Consolidate more of the X, W32, and MAC gui code by moving + common data into struct frame, and generalize it for the non-gui + case by using suitable defaults. + + 7) Cleanup and consolidate the macros controlling frame and window + layout into frame.h and window.h, and generalize the use of the + various window_box_* functions (enhanced to handle the new fringe + position and the per-window fringe and scroll bar settings). + + * frame.h (struct frame): Rename members height to text_lines, + width to text_cols, window_height to total_lines, window_width to + total_cols, new_height to new_text_lines, new_width to + new_text_cols. All uses changed. + (struct frame): New members which consolidate common members of + x_output, w32_output, and mac_output structures: left_pos, + top_pos, pixel_height, pixel_width, x_pixels_diff, y_pixels_diff, + win_gravity, size_hint_flags, border_width, internal_border_width, + line_height, fringe_cols, left_fringe_width, right_fringe_width, + want_fullscreen. All uses changed. + (struct frame): New member column_width contaning the canonical + column width, analogue to line_height. All uses changed. + (struct frame): Rename members scroll_bar_pixel_width to + config_scroll_bar_width, and scroll_bar_cols to + config_scroll_bar_cols. All uses changed. + (struct frame): New member scroll_bar_actual_width which + consolidates and renames the vertical_scroll_bar_extra member of + x_output, w32_output, and mac_output structures. All uses changed. + (FRAME_PIXEL_HEIGHT): Rename from PIXEL_HEIGHT and moved + from x/w32/macterm.h files. All uses changed. Also change code + which referred to f->output_data...->pixel_height. + (FRAME_PIXEL_WIDTH): Rename from PIXEL_WIDTH and moved + from x/w32/macterm.h files. All uses changed. Also change code + which referred to f->output_data...->pixel_width. + (FRAME_LINES): Rename from FRAME_HEIGHT. All uses changed. + Also change code which referred to f->height. + (FRAME_COLS): Rename from FRAME_WIDTH. All uses changed. + Also change code which referred to f->width. + (FRAME_NEW_HEIGHT, FRAME_NEW_WIDTH): Remove macros; change uses + to update new_text_lines and new_text_cols members directly. + (FRAME_CONFIG_SCROLL_BAR_WIDTH): Rename from + FRAME_SCROLL_BAR_PIXEL_WIDTH. All uses changed. + (FRAME_CONFIG_SCROLL_BAR_COLS): Rename from + FRAME_SCROLL_BAR_COLS. All uses changed. + (FRAME_LEFT_SCROLL_BAR_COLS, FRAME_RIGHT_SCROLL_BAR_COLS): + Rename from FRAME_LEFT_SCROLL_BAR_WIDTH and + FRAME_RIGHT_SCROLL_BAR_WIDTH, resp. All uses changed. + (FRAME_SCROLL_BAR_AREA_WIDTH, FRAME_LEFT_SCROLL_BAR_AREA_WIDTH) + (FRAME_RIGHT_SCROLL_BAR_AREA_WIDTH): New macros. + (FRAME_TOTAL_COLS): Rename from FRAME_WINDOW_WIDTH. + (SET_FRAME_COLS): Rename from SET_FRAME_WIDTH. + (FRAME_TOTAL_COLS_ARG): Rename from FRAME_WINDOW_WIDTH_ARG. + (WINDOW_VERTICAL_SCROLL_BAR_COLUMN): Remove unused macro. + (WINDOW_VERTICAL_SCROLL_BAR_HEIGHT): Remove unused macro. + (FRAME_LINE_HEIGHT): Rename from CANON_Y_UNIT. + Unconditionally return line_height member (it now has proper value + also for non-window frames). + (FRAME_COLUMN_WIDTH): Rename from CANON_X_UNIT. Unconditionally + return new column_width member (rather than the default font width). + (FRAME_FRINGE_COLS, FRAME_LEFT_FRINGE_WIDTH) + (FRAME_RIGHT_FRINGE_WIDTH): Rename from FRAME_X_... and moved + from x/w32/macterm.h files. Unconditionally return corresponding + member of frame structure (they now have proper values also for + non-window frames). + (FRAME_TOTAL_FRINGE_WIDTH): Rename from FRAME_FRINGE_WIDTH. + Calculate return value from left and right widths. + (FRAME_INTERNAL_BORDER_WIDTH): Unconditionally return + internal_border_width member (has proper value for non-window frame). + (FRAME_PIXEL_X_FROM_CANON_X): Rename from PIXEL_X_FROM_CANON_X. + (FRAME_PIXEL_Y_FROM_CANON_Y): Rename from PIXEL_Y_FROM_CANON_Y. + (FRAME_CANON_X_FROM_PIXEL_X): Rename from CANON_X_FROM_PIXEL_X. + (FRAME_CANON_Y_FROM_PIXEL_Y): Rename from CANON_Y_FROM_PIXEL_Y. + (FRAME_LINE_TO_PIXEL_Y): Rename from CHAR_TO_PIXEL_ROW, + consolidated from xterm.h, macterm.h, and w32term.h. + (FRAME_COL_TO_PIXEL_X): Rename from CHAR_TO_PIXEL_COL, + consolidated from xterm.h, macterm.h, and w32term.h. + (FRAME_TEXT_COLS_TO_PIXEL_WIDTH): Rename from + CHAR_TO_PIXEL_WIDTH consolidated from x/mac/w32term.h. + (FRAME_TEXT_LINES_TO_PIXEL_HEIGHT): Rename from + CHAR_TO_PIXEL_HEIGHT consolidated from x/mac/w32term.h. + (FRAME_PIXEL_Y_TO_LINE): Rename from PIXEL_TO_CHAR_ROW + consolidated from x/mac/w32term.h. + (FRAME_PIXEL_X_TO_COL): Rename from PIXEL_TO_CHAR_COL + consolidated from x/mac/w32term.h. + (FRAME_PIXEL_WIDTH_TO_TEXT_COLS): Rename from + PIXEL_TO_CHAR_WIDTH consolidated from x/mac/w32term.h. + (FRAME_PIXEL_HEIGHT_TO_TEXT_LINES): Rename from + PIXEL_TO_CHAR_HEIGHT consolidated from x/mac/w32term.h. + + * window.h (struct window): Rename members left to left_col, + top to top_line, height to total_lines, width to total_cols, + left_margin_width to left_margin_cols, right_margin_width to + right_margin_cols, orig_height to orig_total_lines, orig_top to + orig_top_line. All uses changed. + (struct window): New members left_fringe_width, right_fringe_width, + fringes_outside_margins, scroll_bar_width, vertical_scroll_bar_type. + (WINDOW_XFRAME, WINDOW_FRAME_COLUMN_WIDTH, WINDOW_FRAME_LINE_HEIGHT): + New macros primarily used to simplify other macros. + (WINDOW_TOTAL_COLS): New macro. Change relevant code that + referred to XINT (w->width). + (WINDOW_TOTAL_LINES): New macro. Change relevant code that + referred to XINT (w->height). + (WINDOW_TOTAL_WIDTH): New macro. Change relevant code that + referred to XINT (w->width) * canon_x_unit. + (WINDOW_TOTAL_HEIGHT): New macro. Change relevant code that + referred to XINT (w->height) * canon_y_unit. + (WINDOW_LEFT_EDGE_COL): New macro. Change relevant code that + referred to XINT (w->left). + (WINDOW_RIGHT_EDGE_COL): Rename from WINDOW_RIGHT_EDGE. Change + all uses and code that referred to XINT (w->left) + XINT (w->width). + (WINDOW_TOP_EDGE_LINE): New macro. Change relevant code that + referred to XINT (w->top). + (WINDOW_BOTTOM_EDGE_LINE): New macro. Change relevant code that + referred to XINT (w->top) + XINT (w->height). + (WINDOW_LEFT_EDGE_X): New macro. Change relevant code that + referred to XINT (w->left) * canon_x_unit. + (WINDOW_RIGHT_EDGE_X): New macro. Change relevant code that + referred to (XINT (w->left) + XINT (w->width)) * canon_x_unit. + (WINDOW_TOP_EDGE_Y): New macro. Change relevant code that + referred to XINT (w->top) * canon_y_unit. + (WINDOW_BOTTOM_EDGE_Y): New macro. Change relevant code that + referred to (XINT (w->top) + XINT (w->height)) * canon_y_unit. + (WINDOW_LEFTMOST_P): New macro. + (WINDOW_BOX_LEFT_EDGE_COL): Rename from WINDOW_LEFT_MARGIN. + All uses changed. + (WINDOW_BOX_RIGHT_EDGE_COL): Rename from WINDOW_RIGHT_MARGIN. + All uses changed. + (WINDOW_BOX_LEFT_EDGE_X): Rename from + WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, moved from dispextern.h. + Do not exclude left fringe width. + (WINDOW_BOX_RIGHT_EDGE_X): Rename from + WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X, moved from dispextern.h. + Do not exclude fringe widths. + (WINDOW_LEFT_FRINGE_WIDTH, WINDOW_RIGHT_FRINGE_WIDTH) + (WINDOW_FRINGE_COLS, WINDOW_TOTAL_FRINGE_WIDTH): New macros. + Change relevant code that referred to FRAME_LEFT_FRINGE_WIDTH, + FRAME_RIGHT_FRINGE_WIDTH, FRAME_FRINGE_COLS, and + FRAME_TOTAL_FRINGE_WIDTH to allow per-window fringe settings. + (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS): New macro. + (WINDOW_VERTICAL_SCROLL_BAR_TYPE, WINDOW_HAS_VERTICAL_SCROLL_BAR) + (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT) + (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT) + (WINDOW_CONFIG_SCROLL_BAR_WIDTH, WINDOW_CONFIG_SCROLL_BAR_COLS): + New macros. Change code which referenced corresponding + FRAME_VERTICAL_SCROLL_BAR_TYPE, FRAME_HAS_VERTICAL_SCROLL_BARS, + FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT, + FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT, + FRAME_SCROLL_BAR_PIXEL_WIDTH, and FRAME_SCROLL_BAR_COLS macros to + allow per-window scroll-bar settings. + (WINDOW_LEFT_SCROLL_BAR_COLS, WINDOW_RIGHT_SCROLL_BAR_COLS): New macros. + (WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH): New macro. Change code that + referred to FRAME_LEFT_SCROLL_BAR_WIDTH. + (WINDOW_RIGHT_SCROLL_BAR_AREA_WIDTH): New macro. Change code + that referred to FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT and + FRAME_SCROLL_BAR_WIDTH. + (WINDOW_SCROLL_BAR_COLS, WINDOW_SCROLL_BAR_AREA_WIDTH) + (WINDOW_SCROLL_BAR_AREA_X): New macros. + (WINDOW_HEADER_LINE_HEIGHT): Rename from + WINDOW_DISPLAY_HEADER_LINE_HEIGHT, moved from dispextern.h. + (WINDOW_BOX_HEIGHT_NO_MODE_LINE): Rename from + WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, moved from dispextern.h. + (WINDOW_BOX_TEXT_HEIGHT): Rename from + WINDOW_DISPLAY_PIXEL_WIDTH, moved from dispextern.h. + (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y) + (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y) + (WINDOW_TEXT_TO_FRAME_PIXEL_X): Move here from dispextern.h. + (WINDOW_LEFT_MARGIN_WIDTH): Rename from + WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH, moved from dispextern.h. + (WINDOW_RIGHT_MARGIN_WIDTH): Rename from + WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, moved from dispextern.h. + (window_from_coordinates): Update prototype. + (Fset_window_buffer): Update EXFUN. + (set_window_buffer): Update prototype. + + * dispextern.h (struct glyph_matrix): Rename members window_left_x + to window_left_col, window_top_y to window_top_line. All uses + changed. + (FRAME_INTERNAL_BORDER_WIDTH_SAFE): Remove macro; can now safely + use FRAME_INTERNAL_BORDER_WIDTH macro instead as + internal_border_width is now set to 0 for non-window frames. + (WINDOW_DISPLAY_PIXEL_WIDTH, WINDOW_DISPLAY_PIXEL_HEIGHT) + (WINDOW_DISPLAY_MODE_LINE_HEIGHT, WINDOW_DISPLAY_HEADER_LINE_HEIGHT) + (WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, WINDOW_DISPLAY_TEXT_HEIGHT) + (WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X) + (WINDOW_DISPLAY_TOP_EDGE_PIXEL_Y, WINDOW_DISPLAY_BOTTOM_EDGE_PIXEL_Y) + (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y) + (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y) + (WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH) + (WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, WINDOW_WANTS_MODELINE_P): + Move to window.h and renamed [see window.h changes]. + (WINDOW_AREA_TO_FRAME_PIXEL_X, WINDOW_AREA_PIXEL_WIDTH) + (WINDOW_DISPLAY_TEXT_AREA_PIXEL_WIDTH): Remove macros. + (WINDOW_WANTS_MODELINE_P, WINDOW_WANTS_HEADER_LINE_P): + Use WINDOW_TOTAL_LINES. + (frame_update_line_height): Remove prototype. + + * buffer.h (struct buffer): Rename members measured in columns: + left_margin_width to left_margin_cols, right_margin_width to + right_margin_cols. All uses changed. + New members left_fringe_width, right_fringe_width, + fringes_outside_margins for per-buffer fringe settings. + New members scroll_bar_width and vertical_scroll_bar_type for + per-buffer scroll bar settings. + + * buffer.c (init_buffer_once): Set buffer_defaults and + buffer_local_flags for new buffer-local variables + left_fringe_width, right_fringe_width, fringes_outside_margins, + scroll_bar_width, and vertical_scroll_bar_type. + (syms_of_buffer): Defvar_per_buffer them, and defvar_lisp_nopro + default-* variables for them. + + * dispnew.c: Make (many) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + (mode_line_string): No need to adjust width for mode lines, as it + is already adjusted by the caller. + (marginal_area_string): Handle fringes inside/outside margins. + + * frame.c: Make (many) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + (make_frame): Initialize left_fringe_width, right_fringe_width, + fringe_cols, scroll_bar_actual_width, border_width, + internal_border_width, column_width, line_height, x_pixels_diff, + y_pixels_diff, want_fullscreen, size_hint_flags, and win_gravity + members with values suitable for a non-window frames. + + * gtkutil.c: Make (many) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + + * indent.c: Make (few) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + + * keyboard.c: Make (many) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + (make_lispy_event): Use window positions returned from + window_from_coordinates when constructing the lisp event for + MOUSE_CLICK_EVENT and DRAG_N_DROP_EVENT, rather than calculating + (incorrect) values locally. + (make_lispy_movement): Use window positions returned from + window_from_coordinates when constructing the lisp event, rather + than calculating (incorrect) values locally. + + * scroll.c: Make (some) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + + * sunfns.c (Fsun_menu_internal): Adapt to per-window fringes and + scroll-bars. + + * sysdep.c: Make (few) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + + * term.c: Make (some) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + + * widget.c: Make (few) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + + * window.c: Make (many) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + (make_window): Initialize new members + left_margin_cols, right_margin_cols, left_fringe_width, + right_fringe_width, fringes_outside_margins, scroll_bar_width, + and vertical_scroll_bar_type. + (coordinates_in_window): Adapt to new fringe/margin positions + and per-window fringes and scroll-bars. + Fix bug related to incorrectly adjusting coordinates by + frame's internal_border_width (the effect normally negible since + the internal_border_width is typically 0 or 1 pixel, but very + noticeable for an internal_border_width of e.g. 25 pixels). + Upon successful return (other than ON_NOTHING), the coordinates + are now always properly converted to window relative for the + given display element. + (window_from_coordinates): Add new parameters wx and wy to + return the window relative x and y position in the returned + window and part. A null arg means, don't return the position. + All callers changed. + (adjust_window_margins): New function which may reduce the width + of the display margins if a window's text area is too small after + resizing or splitting windows. + (size_window): Fix bug that did not account for display margin + widths when checking the minimum width of a window; use + adjust_window_margins. + (set_window_buffer): Call Fset_window_fringes and + Fset_window_scroll_bars to setup per-window elements. + Add new arg KEEP_MARGINS_P. Non-nil means to keep window's + existing display margin, fringe widths, and scroll bar settings + (e.g. after splitting a window or resizing the frame). + All callers changed. + (Fset_window_buffer): New arg KEEP_MARGINS. All callers changed. + (Fsplit_window): Duplicate original window's display margin, + fringe, and scroll-bar settings; then call Fset_window_buffer with + KEEP_MARGINS non-nil. This fixes a bug which caused a split + window to only preserve the display margins in one of the windows. + When splitting horizontally, call adjust_window_margins on both + windows to ensure that the text area of the new windows is non too + narrow. This fixes a bug which could cause Emacs to trap if the + width of the split window was less than the width of the display + margins. + (window_box_text_cols): Rename from window_internal_width. + All uses changed. Adapt to per-window fringes and scroll bars. + Fix bug that caused vertical separator to be subtracted also on + window frames. Fix another bug that did not reduce the returned + value by the columns used for display margins. + (window_scroll_line_based): Fix bug related to scrolling too much + when display margins are present (implicitly fixed by the fix to + window_box_text_cols). + (scroll_left, scroll_right): Fix bug related to scrolling too far + by default when display margins are present (implicitly fixed by + the fix to window_box_text_cols). + (struct saved_window): Rename members left to left_col, top to + top_line, width to total_cols, height to total_lines, orig_top to + orig_top_line, orig_height to orig_total_lines. All uses changed. + New members left_margin_cols, right_margin_cols, + left_fringe_width, right_fringe_width, fringes_outside_margins, + scroll_bar_width, and vertical_scroll_bar_type for saving + per-window display elements. + (Fset_window_configuration): Restore display margins, fringes, + and scroll bar settings. This fixes a bug which caused display + margins to be discarded when saving and restoring a window + configuration. + (save_window_save): Save display margins, fringes, and scroll bar + settings. This fixes a bug which caused display margins to be + discarded when saving and restoring a window configuration. + (Fset_window_margins): Do nothing if display margins are not + really changed. Otherwise, call adjust_window_margins to ensure + the text area doesn't get too narrow. This fixes a bug which + could cause Emacs to trap if setting display margins wider than + the width of the window. + (Fset_window_fringes): New defun to allow user to specifically set + this window's fringe widths and position vs. display margins. + (Fwindow_fringes): New defun to return window's actual fringe settings. + (Fset_window_scroll_bars): New defun to allow user to specifically + set this window's scroll bar width and position. + (Fwindow_scroll_bars): New defun to return window's actual scroll + bar settings. + (compare_window_configurations): Also compare display margins, + fringes, and scroll bar settings. + (syms_of_window): Defsubr new defuns for fringe and scroll bars. + + * xdisp.c: Make (many) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + (window_box_width): Adapt to per-window fringes and scroll bars, + and new fringe vs. display margin position. Note that returned + value is no longer guaranteed to be a whole multiple of the frame + column width, since per-window fringes may now be any width. + (window_box_left_offset): New function like window_box_left, but + value is relative to left border of window (rather than frame). + (window_box_right_offset): New function like window_box_right, + but value is relative to left border of window. + (window_box_left): Adapt to per-window fringes and scroll bars, + and new fringe vs. display margin position. Simplify by using + WINDOW_LEFT_EDGE_X and window_box_left_offset. + (window_box): Allow null args for unnecessary return values; + change/simplify relevant callers. + (x_y_to_hpos_vpos): Adapt to per-window fringes and scroll bars, + and new fringe vs. display margin position. + Use window_box_left_offset and window_box_right_offset + (get_glyph_string_clip_rect): Adapt to per-window fringes and + scroll bars, and new fringe vs. display margin position. + Use WINDOW_LEFT_EDGE_X and WINDOW_TOTAL_WIDTH. + (draw_fringe_bitmap): Rework to handle per-window fringes and new + fringe vs. display margin position. + (hscroll_window_tree): Use window_box_width instead of window_box. + (redisplay_window): Adapt to per-window scroll bars. + (draw_glyphs): Rework to handle per-window fringes and scroll + bars, and new fringe vs. display margin position. + Use WINDOW_LEFT_EDGE_X, WINDOW_TOTAL_WIDTH, and window_box_left. + (x_clear_end_of_line): Adapt to per-window fringes and scroll + bars, and new fringe vs. display margin position. Fix bug which + increased total width of full_width rows by width of scroll bars + although window's total width already includes that. + (x_fix_overlapping_area): Simplify using window_box_left_offset. + (expose_area): Simplify using window_box_left_offset. + (x_draw_vertical_border): Handle per-window scroll bar settings, + mixing windows with left, right and no scroll bars. + + * xfaces.c [WINDOWSNT]: Move redefinition of FONT_WIDTH macro to + where it's used in x_list_fonts (for clarity). + (frame_update_line_height): Remove unused function; functionality + is now done directly when setting the default font in x_set_font. + + * xfns.c: Make (many) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + + * xmenu.c: Make (some) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + + * xterm.h (struct x_output): Move members left_pos, top_pos, + border_width, pixel_height, pixel_width, line_height, + internal_border_width, vertical_scroll_bar_extra, + left_fringe_width, right_fringe_width, fringe_cols, + fringes_extra, win_gravity, size_hint_flags, want_fullscreen, + x_pixels_diff, and y_pixels_diff to struct frame (frame.h). + (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h. + (FRAME_DEFAULT_FONT_WIDTH): Remove macro. + (PIXEL_WIDTH, PIXEL_HEIGHT) + (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH) + (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to + frame.h and renamed [see frame.h changes]. + (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH) + (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL) + (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h + and renamed [see frame.h changes]. + + * xterm.c: Make (several) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars. + (scroll_run): Adapt to new fringe position. + (glyph_rect): Use window coordinates returned from + window_from_coordinates rather than frame_to_window_pixel_xy. + (XTset_vertical_scroll_bar): Adapt to per-window fringes and + scroll-bars. + (handle_one_xevent): Simplify a USE_GTK conditional. + (x_clip_to_row): Remove superfluous whole_line_p arg and code + (fringes are now inside margins, i.e. always in the clipping area). + All callers changed. + (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT + directly, then call compute_fringe_widths. Don't call + frame_update_line_height. + + * w32term.h (struct w32_output): Move members left_pos, top_pos, + border_width, pixel_height, pixel_width, line_height, + internal_border_width, vertical_scroll_bar_extra, + left_fringe_width, right_fringe_width, fringe_cols, + fringes_extra, win_gravity, size_hint_flags, want_fullscreen, + x_pixels_diff, and y_pixels_diff to struct frame (frame.h). + (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h. + (FRAME_DEFAULT_FONT_WIDTH): Remove macro. + (PIXEL_WIDTH, PIXEL_HEIGHT) + (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH) + (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to + frame.h and renamed [see frame.h changes]. + (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH) + (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL) + (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h + and renamed [see frame.h changes]. + + * w32term.c: Make (several) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars. + (glyph_rect): Use window coordinates returned from + window_from_coordinates rather than frame_to_window_pixel_xy. + (XTset_vertical_scroll_bar): Adapt to per-window fringes and + scroll-bars. + (w32_clip_to_row): Remove superfluous whole_line_p arg and code + (fringes are now inside margins, i.e. always in the clipping area). + All callers changed. + (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT + directly, then call compute_fringe_widths. Don't call + frame_update_line_height. + + * w32console.c: Make (few) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + + * w32fns.c: Make (many) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + + * w32menu.c: Make (few) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + + * macterm.h (struct mac_output): Move members left_pos, top_pos, + border_width, pixel_height, pixel_width, line_height, + internal_border_width, vertical_scroll_bar_extra, + left_fringe_width, right_fringe_width, fringe_cols, + fringes_extra, win_gravity, size_hint_flags, want_fullscreen, + x_pixels_diff, y_pixels_diff to struct frame (frame.h). + (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h. + (FRAME_DEFAULT_FONT_WIDTH): Remove macro. + (PIXEL_WIDTH, PIXEL_HEIGHT) + (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH) + (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Move to + frame.h and renamed [see frame.h changes]. + (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH) + (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL) + (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Move to frame.h + and renamed [see frame.h changes]. + + * macterm.c: Make (several) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + (x_draw_glyph_string_box): Adapt to per-window fringes and scroll-bars. + (glyph_rect): Use window coordinates returned from + window_from_coordinates rather than frame_to_window_pixel_xy. + (XTset_vertical_scroll_bar): Adapt to per-window fringes and + scroll-bars. + (x_clip_to_row): Remove superfluous whole_line_p arg and code + (fringes are now inside margins, i.e. always in the clipping area). + All callers changed. + (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT + directly, then call compute_fringe_widths. Don't call + frame_update_line_height. + + * macfns.c: Make (several) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + (x_real_positions): Set f->x_pixels_diff and f->y_pixels_diff to 0. + + * macmenu.c: Make (few) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + + * msdos.h (struct x_output): Remove members left_pos, top_pos, + and line_height, and use corresponding new members in struct + frame. All uses changed. + (FRAME_LINE_HEIGHT, FRAME_INTERNAL_BORDER_WIDTH): Remove macros; + superseeded by corresponding macros in frame.h. + + * msdos.c: Make (several) trivial substitutions for renamed and + new macros in dispextern.h, frame.h and window.h. + (IT_note_mouse_highlight): Use updated window coordinates returned + by window_from_coordinates, rather than adjusting them locally. + (internal_terminal_init): No need to initialize line_height here; + it now defaults to 1. + +2003-05-24 Stefan Monnier + + * keyboard.c (read_key_sequence): Adjust fkey and keytran when + dropping `down' events. + +2003-05-24 Andreas Schwab + + * coding.c (find_safe_codings): Fix last change. + +2003-05-24 Istvan Marko (tiny change) + + * xfns.c (x_window): Fix typo from 2003-05-21 change. + +2003-05-23 Stefan Monnier + + * xdisp.c (display_mode_element): Increase max depth. + Simplify the error handling code. Use a different error string + for the case where we hit the depth limit. + + * lisp.h (Vfundamental_mode_abbrev_table): Don't declare. + + * buffer.c (reset_buffer_local_variables): Remove redundant setting. + +2003-05-21 Stefan Monnier + + * intervals.c (get_local_map): Don't get char-property of previous + point any more: get_pos_property already does it and better. + +2003-05-21 Dave Love + + [Merged from unicode branch.] + + * xfns.c (x_window, x_window): Use use_xim. + + * xterm.c (use_xim): Initialize. + (xim_open_dpy, xim_initialize, xim_close_dpy): Use use_xim. + (x_term_init): Maybe set use_xim. + + * xterm.h (use_xim) [HAVE_X_I18N]: Declare. + +2003-05-21 Jason Rumney + + * unexw32.c (_start): Remove _fmode initialization. + + * emacs.c (main) [WINDOWSNT]: Move it here. + +2003-05-20 Dave Love + + * s/gnu-linux.h (MAIL_USE_FLOCK): Make it conditional. + +2003-05-19 Richard M. Stallman + + * xfaces.c (Finternal_set_lisp_face_attribute): Handle Qunspecified + as value for QCfont attribute. + (realize_default_face): lface should already exist; crash if not. + Specify 0 for FORCE_P when calling set_lface_from_font_name. + + * frame.c (Fignore_event): Doc fix. + +2003-05-19 Kenichi Handa + + * coding.c (decode_coding_string): Handle post-read-conversion + even if the coding doesn't require decoding. + +2003-05-18 Richard M. Stallman + + * callproc.c (Fcall_process_region): Doc fix. + +2003-05-17 Stefan Monnier + + * lread.c (Fload): Print a message if package is obsolete. + + * window.c (Fselect_window): Add optional `norecord' arg. + (select_window_1): Fold into Fselect_window. + (select_window_norecord): New function. + (temp_output_buffer_show): Use it. Preserve current buffer. + + * window.h (Fselect_window): Update declaration. + + * window.c (delete_window, Fother_window, Fset_window_configuration): + * minibuf.c (read_minibuf): + * macterm.c (x_new_focus_frame): + * frame.c (do_switch_frame, Fset_frame_selected_window, Fdelete_frame): + * callint.c (Fcall_interactively): + * xterm.c (x_new_focus_frame): Pass nil as new arg to Fselect_window. + + * buffer.c (Fpop_to_buffer): Pass norecord to Fselect_window. + +2003-05-17 David Kastrup + + * process.c (read_process_output): Back out change from 2003-03-09. + +2003-05-17 Stefan Monnier + + * editfns.c (get_pos_property): Don't assume that `object' = nil. + + * textprop.c (text_property_stickiness): New arg `buffer'. + + * intervals.h (text_property_stickiness): New arg `buffer'. + (get_pos_property): Declare. + + * intervals.c (get_local_map): Use get_pos_property, to obey + stickiness and empty overlays. + (create_root_interval, graft_intervals_into_buffer): Use BEG. + (merge_properties, intervals_equal, merge_properties_sticky): + Use XCAR, XCDR. + (adjust_for_invis_intang): Pass new arg to text_property_stickiness. + +2003-05-17 Richard M. Stallman + + * minibuf.c (read_minibuf): If buffer is empty, record the default + in the history. + (Fminibuffer_complete_word): When deleting the overlap, take account + of its real position. + + * fns.c (map_char_table): Fix previous change. + + * syntax.c (find_defun_start): + When open_paren_in_column_0_is_defun_start, + return beginning of buffer. + + * lisp.h (map_char_table): Declare added arg. + + * fns.c (map_char_table): New arg TABLE gets the master table. + All calls changed. + Process default and inheritance, resorting to Faref if necessary. + + * keymap.c (Fset_keymap_parent, map_keymap, Fcopy_keymap) + (Faccessible_keymaps): Pass new arg to map_char_table. + + * fontset.c (Ffontset_info): Pass new arg to map_char_table. + + * casetab.c (set_case_table): Pass new arg to map_char_table. + + * data.c (let_shadows_buffer_binding_p): Make target of p volatile. + + * lisp.h (specbinding_func): New typedef. + (struct specbinding): Use specbinding_func, to put the `volatile' + in the right place. + + * alloc.c (Fgarbage_collect): Cast pointers into specpdl + to avoid GCC warning. + +2003-05-16 Ralph Schleicher + + * fileio.c (Fdelete_file): Handle symlinks pointing to directories. + +2003-05-15 Stefan Monnier + + * keyboard.c (apply_modifiers): Don't fill the other cache. + +2003-05-14 Stefan Monnier + + * .gdbinit-union: New file, for USE_LISP_UNION_TYPE users. + + * window.h (Qwindowp, Qwindow_live_p, Vwindow_list) + (Fwindow_end, Fselected_window, Fdelete_window, Fwindow_buffer) + (Fget_buffer_window, Fsave_window_excursion, Fsplit_window) + (Fset_window_configuration, Fcurrent_window_configuration) + (compare_window_configurations, Fcoordinates_in_window_p, Fwindow_at) + (Fpos_visible_in_window_p, mark_window_cursors_off) + (window_internal_height, window_internal_width, Frecenter) + (Fscroll_other_window, Fset_window_start, temp_output_buffer_show) + (replace_buffer_in_all_windows, init_window_once, init_window) + (syms_of_window, keys_of_window): Move from lisp.h. + * lisp.h: Move window.c declarations to window.h. + + * bytecode.c: Include window.h. + * emacs.c: Include window.h. + + * keyboard.c (make_lispy_event): Apply modifiers to multibyte-char key. + (keyremap): Add `parent' field. + (keyremap_step): Use it. Remove `parent' argument. + (read_key_sequence): Setup and use the new `parent' field. + +2003-05-11 Stefan Monnier + + * keyboard.c (adjust_point_for_property): Ensure termination. + +2003-05-10 Stefan Monnier + + * keyboard.c (follow_key): Remove dead variable `did_meta'. + (access_keymap_keyremap, keyremap_step): New funs, extracted from the + duplicated handling of function-key-map and key-translation-map + in read_key_sequence. + (read_key_sequence): Use them. + + * keyboard.c (adjust_point_for_property): Try harder to move point + to the non-sticky end of an invisible property. + + * xdisp.c (single_display_prop_intangible_p): Make `space' display + property intangible as well. + +2003-05-10 Andreas Schwab + + * xmenu.c (single_menu_item): Change last parameter to void* to + avoid warning. + +2003-05-09 Richard M. Stallman + + * print.c (Fprin1_to_string): Instead of gcpro, set abort_on_gc. + Bind Qinhibit_modification_hooks to t so there will be no GC. + Rename local `tem' to `save_deactivate_mark'. + + * eval.c (specpdl_ptr): Declare volatile. + (unbind_to): Copy the whole binding and decrement specpdl_ptr + before doing the work of unbinding it. + + * lisp.h (struct specbinding): Declare elements volatile. + (specpdl_ptr): Declare volatile. + + * Makefile.in (alloca.o): Specify -DDO_BLOCK_INPUT in compiling. + + * alloca.c: Test DO_BLOCK_INPUT rather than `emacs' + for use of BLOCK_INPUT and inclusion of lisp.h and blockinput.h. + +2003-05-08 Dave Love + + * coding.c (Vlast_coding_system_used): Doc fix. + +2003-05-07 Jason Rumney + + * fileio.c (Ffile_symlink_p): Let handlers handle symlinks even + when system does not support them. + +2003-05-05 Stefan Monnier + + * fileio.c (Qwrite_region_annotate_functions): New var. + (build_annotations): Use it to process the global part of the hook. + (syms_of_fileio): Init and staticpro it. + + * keyboard.c (safe_run_hooks_error): Display a message instead of + silently ignoring the error. + +2003-05-03 Stefan Monnier + + * keyboard.c (input_available_signal): Mark static. + (menu_bar_items): Use map_keymap. + (menu_bar_one_keymap): Remove. + (menu_bar_item): Adjust arglist (for use in map_keymap). + Properly hide a second binding when not both are keymaps. + + * xmenu.c (struct skp): New struct, to pass args through map_keymap. + (single_keymap_panes): Use it and map_keymap. + (single_menu_item): Use skp as well. + + * keymap.h (map_keymap_function_t): New type. + (map_keymap): Declare. + + * keymap.c (map_keymap_item, map_keymap_char_table_item, map_keymap) + (map_keymap_call, Fmap_keymap): New functions. + (syms_of_keymap): Defsubr map-keymap. + +2003-05-02 Jan Dj,Ad(Brv + + * gtkutil.c (create_dialog, make_widget_for_menu_item) + (make_menu_item, create_menus, xg_update_menu_item): Don't call + ..._with_mnemonic functions for menu items. + +2003-05-01 Kenichi Handa + + * coding.c (coding_system_accept_latin_extra_p): Delete this + function. + (find_safe_codings): Pay attention to + the property tranlsation-table-for-encode of each codings. + (syms_of_coding): Give Qtranslation_table the extra slot number 2. + +2003-05-01 Stefan Monnier + + * eval.c (Funwind_protect): Use func=Fprogn rather than symbol=Qnil. + +2003-04-30 Stefan Monnier + + * eval.c (unbind_to): Don't handle symbol = Qnil any more. + + * lisp.h (CHECK): Wrap args in parenthesis. + (specbind): Fix doc: symbol = Qnil is not supported any more. + + * bytecode.c (Fbyte_code) : + Use Fprogn rather than 0 and Qnil. + + * keyboard.c (parse_modifiers_uncached): Parse `down', `drag', + `double', and `triple' modifiers as well. + +2003-04-30 Richard M. Stallman + + * keyboard.c (echo_char): Don't clear out a dash that follows a space. + + * alloc.c (abort_on_gc): New variable. + (Fgarbage_collect): Abort if abort_on_gc is set. + + * lisp.h (abort_on_gc): Add decl. + + * eval.c (Fsignal): Clear abort_on_gc. + + * editfns.c (Fformat): Set abort_on_gc during first scan of format. + Reinit FORMAT_START and END before second scan. + + * xdisp.c (move_it_vertically_backward): Do the final big else + even if nlines is 0. + + * xdisp.c (redisplay_internal): Finish the per-frame loop + even if redisplay is suspended by input. + +2003-04-24 Andrew Choi + + * macterm.c (x_list_fonts): Return all fonts that match if + maxnames = -1. + +2003-04-25 Kenichi Handa + + * syntax.c (skip_chars): Fix previous change. + +2003-04-24 Kenichi Handa + + * syntax.c (skip_chars): Make the code faster by using the common + technique of *p, *stop, and *endp. + +2003-04-23 Jan Dj,Ad(Brv + + * xdisp.c (update_tool_bar): BLOCK_INPUT before calling + tool_bar_items so GTK tool bar expose callback does not access items + being updated. + +2003-04-19 Stefan Monnier + + * eval.c (Fapply): Undo last change and add a comment about why. + +2003-04-18 Miles Bader + + * data.c (Faset): Calculate nbytes earlier, to satisfy the now + pickier PARSE_MULTIBYTE_SEQ. + +2003-04-17 Stefan Monnier + + * eval.c (For, Fand, Fprogn, un_autoload, do_autoload): + Use XCDR, XCAR, CONSP. + (Fdefmacro): Fix docstring. Use XCAR, XCDR. + (Fapply): Remove unnecessary GCPRO. + + * doc.c (Fsubstitute_command_keys): Remove spurious casts. + + * charset.h (PARSE_MULTIBYTE_SEQ): Pretend `length' is used. + + * buffer.h: Don't hardcode BEG==1. + + * abbrev.c (Fdefine_abbrev_table): Use XCAR, XCDR. + +2003-04-16 Richard M. Stallman + + * xdisp.c (try_window, try_window_reusing_current_matrix): + When at end of window, set window_end_pos to Z-ZV. + + * buffer.c (Foverlay_recenter): Doc fix. + +2003-04-14 Stefan Monnier + + * dispnew.c (Fsit_For): Support XEmacs-style arg list. + +2003-04-14 Andrew Choi + + * macterm.c (mac_check_for_quit_char): Don't check more often than + once a second. + +2003-04-11 Stefan Monnier + + * keyboard.c (kbd_buffer_get_event): Don't handle SELECT_WINDOW_EVENT + specially, so that they can't hide an implicit switch-frame event. + (make_lispy_event): Handle SELECT_WINDOW_EVENT. + (head_table): Use switch-frame as event_kind for select-window. + (keys_of_keyboard): Don't bind [select-window] in special-event-map. + + * editfns.c (Fformat): Lisp_Object/int mixup. + (format2): Remove unused var numargs. + +2003-04-11 Kenichi Handa + + * fileio.c (Vafter_insert_file_adjust_coding_function): Delete. + (Qafter_insert_file_set_coding): New variable. + (syms_of_fileio): Initialize and staticpro it. Delete declaration + for after-insert-file-adjust-coding-function. + (Finsert_file_contents): Call Qafter_insert_file_set_coding + instead of Vafter_insert_file_adjust_coding_function. + +2003-04-11 Kenichi Handa + + * lisp.h (temp_echo_area_glyphs): Adjust prototype. + + * minibuf.c (temp_echo_area_glyphs): Change the arg to Lisp + string. Callers changed. + +2003-04-10 Kenichi Handa + + * fileio.c (Vafter_insert_file_adjust_coding_function): New variable. + (syms_of_fileio): Declare it as a lisp variable. + (Finsert_file_contents): + Call Vafter_insert_file_adjust_coding_function before calling + decode-format. + +2003-04-09 Jan Dj,Ad(Brv + + * xterm.c (xg_scroll_callback): Call gtk_range_get_adjustment to + get GtkAdjustment as widget now is a GtkRange. + + * gtkutil.c (xg_create_scroll_bar): Connect to value-changed on + GtkRange to avoid memory leak. + +2003-04-09 Kenichi Handa + + * xfaces.c (Vface_font_rescale_alist): New variable. + (struct font_name): New member rescale_ratio. + (font_rescale_ratio): New function. + (split_font_name): If NUMERIC_P is nonzero, set font->rescale_ratio. + (better_font_p): On comparing point sized, pay attention to + recale_ratio member of fonts. + (build_scalable_font_name): Reflect font->rescale_ratio in the + font name. + (syms_of_xfaces): Declare Vface_font_rescale_alist as a Lisp variable. + + * lread.c (read1): Before calling index, check if the 2nd + arguemnt is in ASCII range. + +2003-04-08 Richard M. Stallman + + * fileio.c (Ffile_symlink_p): Doc fix. + + * editfns.c (Fformat): Translate positions of text properties + in the format string to apply them to the result. + + * fileio.c (Finsert_file_contents): Doc fix. + (syms_of_fileio) : Doc fix. + +2003-04-08 Ivan Zakharyaschev (tiny change) + + * lread.c (openp): Get the Qfile_exists_p handler for STRING, not FN. + +2003-04-08 Steven Tamm + + * mac.c (init_mac_osx_environment): Switch libexec and bin so + that self-contained application finds libexec files. + +2003-04-08 Kenichi Handa + + * coding.c (code_convert_region_unwind): + Set Vlast_coding_system_used to the argument. + (code_convert_region): If post-read-conversion function changed + the value of last-coding-sytem, keep the new value in + coding->symbol so that it won't be overridden. + (run_pre_post_conversion_on_str): Likewise. + (coding_system_accept_latin_extra_p): New function. + (find_safe_codings): Pay attention to characters registered in + latin-extra-code-table. + +2003-04-07 Thien-Thi Nguyen + + * Makefile.in (md5.o): Add missing dependency info. + +2003-04-06 Richard M. Stallman + + * xselect.c (x_handle_selection_request): Move UNGCPRO to very end. + + * marker.c (verify_bytepos): New function. + + * intervals.c (set_intervals_multibyte_1): When becoming + multibyte, adjust right and left child sizes to a whole set of + characters. If an interval gets zero total-length, delete it. + If an interval consists of just its children, delete one of them. + + * intervals.h (CHECK_TOTAL_LENGTH): New macro. + * intervals.c: Add many calls to CHECK_TOTAL_LENGTH. + + * alloc.c (VALIDATE_LISP_STORAGE): Macro deleted. + All calls deleted. + (lisp_malloc): Do the work here directly. + +2003-04-06 Gareth Jones (tiny change) + + * fns.c (Flength): Return SUB_CHAR_TABLE_ORDINARY_SLOTS for sub + char tables. + +2003-04-04 Kenichi Handa + + * editfns.c (Fformat): Use a copy of FORMAT string so that we can + destructively change "%S" to "%s". + +2003-04-03 Miles Bader + + * xfaces.c (choose_face_font): Make sure *NEEDS_OVERSTRIKE is + always set. + +2003-04-01 Dave Love + + * xfns.c (xpm_lookup_color): Grok "opaque". + +2003-03-31 Andrew Choi + + * frame.c (x_report_frame_params) [HAVE_CARBON]: Do not report + parent window ID. + + * macfns.c (syms_of_macfns): Remove call to init_x_parm_symbols. + + * macterm.h (struct mac_output): Define x_pixels_diff and + y_pixels_diff. + +2003-03-31 Juanma Barranquero + + * makefile.w32-in ($(BLD)/frame.$(O)): Add dependency on + blockinput.h and files included from it. + +2003-03-31 Kim F. Storm + + The following changes consolidates the common code related to + frame-parameter handling from the xfns.c, w32fns.c, and macfns.c + files into frame.c. + + * frame.c: Include blockinput.h. + (Vx_resource_name, Vx_resource_class, Qx_frame_parameter) + (Qx_resource_name, Qface_set_after_frame_default): Define vars here. + (Qauto_raise, Qauto_lower, ...): Define all frame parameter + related vars here. + (struct frame_parm_table, frame_parms): New table for describing + frame parameters and their associated Q-variable. + The order of the parameters corresponds to the sequence of the + frame_parm_handlers table in redisplay_interface. + (x_fullscreen_move, x_set_frame_parameters) + (x_report_frame_params, x_set_fullscreen, x_set_line_spacing) + (x_set_screen_gamma, x_set_font, x_set_fringe_width) + (x_set_border_width, x_set_internal_border_width, x_set_visibility) + (x_set_autoraise, x_set_autolower, x_set_unsplittable) + (x_set_vertical_scroll_bars, x_set_scroll_bar_width, x_icon_type): + Generic functions for processing of frame parameters. + (validate_x_resource_name, xrdb_get_resource, Fx_get_resource) + (display_x_get_resource, x_get_resource_string): Functions for + generic access to X resources. + (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg) + (x_default_parameter, Fx_parse_geometry): Functions for generic + access to frame parameters. + (x_figure_window_size): Generic calculation of frame size. + Fixed to add space needed for tool bar. Also setup size_hint_flags. + (syms_of_frame): Intern and staticpro frame parameter variables. + Defvar_lisp Vx_resource_class and Vx_resource_name here. + Defsubr Sx_get_resource and Sx_parse_geometry. + + * frame.h (Qauto_raise, Qauto_lower, ...): Declare extern all frame + parameter related vars defined in frame.c. + (EMACS_CLASS): Define here. + (enum FULLSCREEN_*): Define here. + (x_set_scroll_bar_default_width, x_wm_set_icon_position) + (x_set_offset, x_new_font, x_new_fontset): Add prototypes. + (x_fullscreen_adjust, x_set_frame_parameters, x_report_frame_params) + (x_set_fullscreen, x_set_line_spacing, x_set_screen_gamma, x_set_font) + (x_set_fringe_width, x_set_border_width, x_set_internal_border_width) + (x_set_visibility, x_set_autoraise, x_set_autolower) + (x_set_unsplittable, x_set_vertical_scroll_bars) + (x_set_scroll_bar_width, x_icon_type, validate_x_resource_name) + (x_figure_window_size): Add prototypes. + + * dispextern.h (frame_parm_handler): New typedef. + (struct redisplay_interface): New member frame_parm_handlers. + (enum resource_types): Move declaration here. + (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg) + (x_default_parameter): Add prototypes. + + * window.c: Remove extern decl for frame parameter vars. + (change_window_heights): New generic function; + replaces x_change_window_heights. All users changed. + + * window.h (change_window_heights): Add prototype. + + * xfaces.c: Remove extern decl for frame parameter vars. + + * xterm.h (EMACS_CLASS): Remove. Use generic define. + (struct w32_display_info): Fix type of xrdb member. + (enum FULLSCREEN_*): Remove. + Remove prototypes for generic functions (in frame.h). + + * xfns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame + parameters now defined in frame.h and frame.c. + (Vx_resource_name): Remove. Use generic var. + (enum x_frame_parms): Remove (bogus, unused enum). + (check_x_display_info): Make non-static (for frame.c). + (struct x_frame_parm_table, x_frame_parms): Remove. + (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params) + (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font) + (x_set_border_width, x_set_internal_border_width, x_set_visibility) + (x_change_window_heights, x_set_autoraise, x_set_autolower) + (x_set_vertical_scroll_bars, x_set_scroll_bar_width) + (validate_x_resource_name, Fx_get_resource, x_get_resource_string) + (x_default_parameter, Fx_parse_geometry, x_figure_window_size): + Remove. Use generic functions instead. + (enum resource_types): Remove. + (x_set_scroll_bar_default_width): New global function (for frame.c). + (Fx_create_frame): Depend on x_figure_window_size to add space for + toolbar and setup size_hint_flags. + (x_frame_parm_handlers): New table for redisplay_interface. + (syms_of_xfns): Don't intern/staticpro removed vars. + + * xterm.c: Remove unnecessary extern declarations. + (x_fullscreen_adjust): Remove. Use generic instead. + (x_redisplay_interface): Add x_frame_parm_handlers member. + + * w32gui.h (XrmDatabase): New (dummy) typedef. + + * w32term.h (EMACS_CLASS): Remove. Use generic define. + (struct w32_display_info): Fix type of xrdb member. + (enum FULLSCREEN_*): Remove. + (x_fullscreen_adjust): Remove prototype. + + * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame + parameters now defined in frame.h and frame.c. + (Vx_resource_name): Remove. Use generic var. + (enum x_frame_parms): Remove (bogus, unused enum). + (check_x_display_info): Make non-static (for frame.c). + (struct x_frame_parm_table, x_frame_parms): Remove. + (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params) + (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font) + (x_set_border_width, x_set_internal_border_width, x_set_visibility) + (x_change_window_heights, x_set_autoraise, x_set_autolower) + (x_set_vertical_scroll_bars, x_set_scroll_bar_width) + (validate_x_resource_name, Fx_get_resource, x_get_resource_string) + (x_default_parameter, Fx_parse_geometry, x_figure_window_size): + Remove. Use generic functions instead. + (enum resource_types): Remove. + (x_set_scroll_bar_default_width): New global function (for frame.c). + (Fx_create_frame): Depend on x_figure_window_size to add space for + toolbar and setup size_hint_flags. + (w32_frame_parm_handlers): New table for redisplay_interface. + (syms_of_w32fns): Don't intern/staticpro removed vars. + + * w32term.c: Remove unnecessary extern declarations. + (x_fullscreen_adjust): Remove. Use generic instead. + (x_redisplay_interface): Add w32_frame_parm_handlers member. + + * w32reg.c (x_get_string_resource): Use XrmDatabase. + + * macgui.h (XrmDatabase): New (dummy) typedef. + + * macterm.h (EMACS_CLASS): Remove. + (struct mac_display_info): Add xrdb member. + (struct mac_output): Add want_fullscreen member. + + * macfns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame + parameters now defined in frame.h and frame.c. + (Vx_resource_name): Remove. Use generic var. + (check_x_display_info): Make non-static (for frame.c). + (struct x_frame_parm_table, x_frame_parms): Remove. + (init_x_parm_symbols, x_set_frame_parameters, x_report_frame_params) + (x_set_line_spacing, x_set_screen_gamma, x_icon_type, x_set_font) + (x_set_border_width, x_set_internal_border_width, x_set_visibility) + (x_change_window_heights, x_set_autoraise, x_set_autolower) + (x_set_vertical_scroll_bars, x_set_scroll_bar_width) + (validate_x_resource_name, Fx_get_resource, x_get_resource_string) + (x_default_parameter, Fx_parse_geometry, x_figure_window_size): + Remove. Use generic functions instead. + (enum resource_types): Remove. + (x_set_scroll_bar_default_width): New global function (for frame.c). + (mac_frame_parm_handlers): New table for redisplay_interface. + (syms_of_macfns): Don't intern/staticpro removed vars. + + * macterm.c: Remove unnecessary extern declarations. + (x_redisplay_interface): Add mac_frame_parm_handlers member. + + * Makefile.in (frame.o): Add dependency on blockinput.h and files + included from it (atimer.h and systime.h). + +2003-03-30 Andreas Schwab + + * xdisp.c (x_insert_glyphs): Fix swapped width and height + parameters for shift_glyphs_for_insert. + + * macterm.c (x_redisplay_interface): Add missing entry for + draw_vertical_window_border. + +2003-03-29 Kai Gro,A_(Bjohann + + * fileio.c (Fexpand_file_name): In the no-handler case, after + expanding, look again for a handler and invoke it. This is needed + for filenames like "/foo/../user@host:/bar/../baz" -- the first + expansion produces "/user@host:/bar/../baz" which needs to be + expanded again for the finame result "/user@host:/baz". + +2003-03-28 Jan Dj,Ad(Brv + + * gtkutil.c (xg_tool_bar_item_expose_callback): Reduce size + of area to be redrawn for better performance. + +2003-03-28 Stefan Monnier + + * xterm.c (take_vertical_position_into_account): Remove. + (xt_action_hook): Call set_vertical_scroll_bar if needed. + (XM_SB_MIN, XM_SB_RANGE): Remove (min is now set to 0). + (xm_scroll_callback, x_create_toolkit_scroll_bar) + (x_set_toolkit_scroll_bar_thumb): Simplify. + (x_scroll_bar_expose): Only compile if !USE_TOOLKIT_SCROLL_BARS. + (XTread_socket): Remove unused var. + (x_make_frame_invisible): Replace goto with else. + + * xdisp.c (set_vertical_scroll_bar): New fun. + (redisplay_window): Use it. + +2003-03-26 Richard M. Stallman + + * xdisp.c (update_tool_bar): Recompute tool bar if + update_mode_lines is set. Set w->update_mode_line + only if the tool bar contents actually change. + (update_menu_bar): Undo previous change. + +2003-03-26 Jan Dj,Ad(Brv + + * gtkutil.c (xg_resize_widgets): Don't call xg_frame_cleared. + (xg_frame_set_char_size): Calculate scroll bar width before frame + width. Call SET_FRAME_GARBAGED and cancel_mouse_face. + (xg_separator_p): Check for all documented separator types. + (xg_update_scrollbar_pos): Variable gheight not needed, use height. + (update_frame_tool_bar): Don't call gdk_window_process_all_updates. + + * xdisp.c (update_menu_bar): Set w->update_mode_line to Qt + so tool bar gets updated. + +2003-03-26 Stefan Monnier + + * data.c (store_symval_forwarding): Re-instate part of the code + that was deleted with too much enthusiasm. + +2003-03-25 Stefan Monnier + + * data.c (store_symval_forwarding): Delete special read-only + hack for type == -1, since we now use ->constant instead. + (Fkill_local_variable): Don't use XBUFFER if it can be nil. + + * buffer.c (overlays_in): Declare static. + (syms_of_buffer) : Use the symbol's + `constant' field rather than the variable's `type' field. + +2003-03-24 Andrew Choi + + * config.in [MAC_OSX]: Do not redefine bcopy, bzero, and bcmp. + + * dispextern.h [HAVE_CARBON]: Include Carbon.h. + + * fns.c [MAC_OSX]: Do not redefine vector. + + * keyboard.c [MAC_OSX]: Handle SIGINT with interrupt_signal. + + * macgui.h: Remove definition of No_Cursor. + + * macterm.h: Include Carbon.h. Replace (struct Cursor *) by Cursor. + + * xdisp.c: Define No_Cursor. + (x_write_glyphs, notice_overwritten_cursor) + (draw_phys_cursor_glyph, note_mode_line_or_margin_highlight) + (note_mouse_highlight): Remove Mac-specific code. + (note_mouse_highlight): Use bcmp instead of == to compare Cursors. + +2003-03-24 John Paul Wallington + + * xdisp.c (redisplay_window): If mini window's buffer is not + empty, then redisplay it like other windows. + +2003-03-23 Kim F. Storm + + * w32term.c (w32_draw_window_cursor): Fix last change. + +2003-03-23 Kenichi Handa + + * alloc.c (make_string_from_bytes, make_specified_string): + Add `const' for the arg CONTENTS. + + * lisp.h (make_string_from_bytes, make_specified_string): + Prototypes adjusted. + +2003-03-23 Jan Dj,Ad(Brv + + * xdisp.c (get_glyph_string_clip_rect): Remove ; at end of #endif. + + * gtkutil.h: Take two more arguments to xg_update_scrollbar_pos. + (XG_SB_RANGE): New define. + + * gtkutil.c (xg_fixed_handle_expose): New function. + (xg_create_frame_widgets): Call xg_fixed_handle_expose for + expose events. + (xg_update_scrollbar_pos): Take two more arguments, left and width + of scroll bar including borders. + Clear left and right part outside scroll bar separately as some + themes have bars that are not an even number of pixels. + Don't set reallocate_redraws, don't call + gdk_window_process_all_updates. + (xg_set_toolkit_scroll_bar_thumb): Upper value is fixed, + so no need to change it. Calculate size and value with XG_SB_RANGE. + + * xterm.c (x_scroll_bar_create, XTset_vertical_scroll_bar): + Pass left and width of scroll bar including borders to + xg_update_scrollbar_pos. + +2003-03-22 Thien-Thi Nguyen + + * Makefile.in: Make sure space precedes end-of-line backslashes. + +2003-03-22 Kim F. Storm + + * xdisp.c (pixel_to_glyph_coords, glyph_to_pixel_coords): + Add generic versions here. Remove system specific versions + defined elsewhere. + + * dispextern.h (pixel_to_glyph_coords, glyph_to_pixel_coords): + Add prototypes. + + * xterm.h (STORE_NATIVE_RECT): New macro. + +2003-03-21 Kim F. Storm + + * xdisp.c (get_glyph_string_clip_rect): + Use FRAME_INTERNAL_BORDER_WIDTH. + + * dispextern.h (struct redisplay_interface): Add active_p + argument to draw_window_cursor member. All uses changed. + +2003-03-21 Kim F. Storm + + The following changes consolidate code related to writing and + inserting glyphs, exposing frame, the tool bar, the mouse face, + the output cursor, and help echo from xterm.c, w32term.c and + macterm.c into xdisp.c. It also generalizes the use of the + window_part enum instead of using numeric values throughout. + + * xdisp.c: Consolidate gui-independent code here. + Include keymap.h. + (Qhelp_echo): Import. + (mouse_autoselect_window, x_stretch_cursor_p): Declare here. + (help_echo_string, help_echo_window, help_echo_object) + (previous_help_echo_string, help_echo_pos): Declare here. + (output_cursor, last_mouse_frame, last_tool_bar_item): Declare here. + (estimate_mode_line_height): Define here. Handle windowing + systems directly (without using estimate_mode_line_height_hook). + (x_y_to_hpos_vpos, get_tool_bar_item, note_tool_bar_highlight): + (update_window_cursor, update_cursor_in_window_tree) + (fast_find_position, fast_find_string_pos) + (note_mode_line_highlight, note_mode_line_or_margin_highlight) + (expose_area, expose_line, expose_overlaps, expose_window) + (expose_window_tree, phys_cursor_in_rect_p): New generic versions; + declared static as they are only used locally in xdisp.c. + (draw_glyphs): Rename from x_draw_glyphs and make static. + (tool_bar_item_info, notice_overwritten_cursor): Make static. + (frame_to_window_pixel_xy, get_glyph_string_clip_rect) + (set_output_cursor, x_cursor_to, handle_tool_bar_click) + (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line): + (x_fix_overlapping_area, draw_phys_cursor_glyph, erase_phys_cursor) + (display_and_set_cursor, x_update_cursor, x_clear_cursor) + (show_mouse_face, clear_mouse_face, cursor_in_mouse_face_p) + (note_mouse_highlight, x_clear_window_mouse_face) + (cancel_mouse_face, x_draw_vertical_border, expose_frame) + (x_intersect_rectangles): New generic functions for use by xdisp.c + and GUI front-ends. + (syms_of_xdisp): Initialize and staticpro help_echo* variables. + Defvar_bool "x-streach-cursor" and "mouse-autoselect-window" here. + + * dispextern.h (Display_Info): Generic typedef for *_display_info. + (NativeRectangle): Generic typedef for rectangle type. + (enum window_part): Move here from window.c. + (struct redisplay_interface): New members flush_display_optional, + define_frame_cursor, clear_frame_area, draw_window_cursor, + draw_vertical_window_border, shift_glyphs_for_insert. + Rename member clear_mouse_face to clear_window_mouse_face. + (estimate_mode_line_height_hook): Remove hook. + (auto_raise_tool_bar_buttons_p): Don't declare extern. + (tool_bar_item_info): Remove prototype. + (help_echo_string, help_echo_window, help_echo_object) + (previous_help_echo_string, help_echo_pos) + (last_mouse_frame, last_tool_bar_item, mouse_autoselect_window): + (x_stretch_cursor_p, output_cursor): Declare extern. + (x_draw_glyphs, notice_overwritten_cursor): Remove prototypes. + (x_write_glyphs), x_insert_glyphs, x_clear_end_of_line) + (x_fix_overlapping_area, draw_phys_cursor_glyph, erase_phys_cursor) + (display_and_set_cursor, set_output_cursor, x_cursor_to) + (x_update_cursor, x_clear_cursor, x_draw_vertical_border) + (frame_to_window_pixel_xy, get_glyph_string_clip_rect) + (note_mouse_highlight, x_clear_window_mouse_face, cancel_mouse_face) + (handle_tool_bar_click, clear_mouse_face, show_mouse_face) + (cursor_in_mouse_face_p, expose_frame, x_intersect_rectangles): + Add prototypes. + (mode_line_string, marginal_area_string): Fix prototypes. + + * window.c (enum window_part): Move to dispextern.h. + (coordinates_in_window): Use enum window_part member names + instead of numbers to describe return value. + (struct check_window_data): Change part member to window_part. + (check_window_containing): Return window_part unaltered. + (window_from_coordinates): Change part arg from int to enum + window_part. Allow part arg to be null. All users changed. + + * window.h (window_from_coordinates): Fix prototype. + + * term.c (estimate_mode_line_height): Move to xdisp.c. + + * keyboard.c (make_lispy_event): Use enum window_part. + + * dispnew.c (mode_line_string, marginal_area_string): Use enum + window_part instead of int in arg list. Users changed. + + * xterm.h (No_Cursor): Declare as None for X. + (struct mac_output): Replace member cross_cursor by hand_cursor. + + * xterm.c: Remove consolidated defines and code. + (BETWEEN): Remove unused macro. + (x_draw_vertical_window_border, x_shift_glyphs_for_insert) + (x_define_frame_cursor, x_clear_frame_area) + (x_draw_window_cursor): New X-specific functions for RIF. + (x_redisplay_interface): Add new members. + + * xfns.c: Setup and use hand_cursor instead of cross_cursor. + + * w32term.h (struct w32_output): Remove cross_cursor member. + + * w32term.c: Remove consolidated defines and code. + (BETWEEN): Remove unused macro. + (w32_draw_vertical_window_border, w32_shift_glyphs_for_insert) + (w32_define_frame_cursor, w32_clear_frame_area) + (w32_draw_window_cursor): New W32-specific functions for RIF. + (w32_redisplay_interface): Add new members. + + * w32gui.h (No_Cursor): Define as 0 for W32. + (XRectangle): Add X compatible rectangle type. + (NativeRectangle): Declare as RECT for W32. + (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros. + + * w32fns.c: Remove setup of cross_cursor (already has hand_cursor). + + * w32console.c: Remove consolidated defines and code. + + * msdos.h (Display_Info): Add generic typedef. + + * msdos.c: Remove consolidated defines and code. + (IT_note_mouse_highlight, dos_rawgetc): Use enum window_part. + + * macterm.h (struct mac_output): Replace member cross_cursor by + hand_cursor. + (activate_scroll_bars, deactivate_scroll_bars): Add prototypes. + + * macterm.c: Remove consolidated defines and code. + (BETWEEN): Remove unused macro. + (mac_draw_vertical_window_border, mac_shift_glyphs_for_insert) + (mac_define_frame_cursor, mac_clear_frame_area) + (mac_draw_window_cursor): New Mac-specific functions for RIF. + (x_redisplay_interface): Add new members. + + * macgui.h (No_Cursor): Define as 0 for Mac. + (XRectangle): Add X compatible rectangle type. + (NativeRectangle): Declare as Rect for Mac. + (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros. + + * macfns.c (x_set_mouse_color): Setup hand_cursor. + (x_set_cursor_color): Use x_display_and_set_cursor. + + * Makefile.in (xdisp.o): Add dependency on blockinput.h and files + included from it. Add dependency on keymap.h. + + * makefile.w32-in (xdisp.o): Add dependency on keymap.h. + +2003-03-21 Kenichi Handa + + * fileio.c (Fexpand_file_name): Fix previous change. + +2003-03-19 Kenichi Handa + + * fileio.c (Ffile_name_directory): Reconstruct file name by + make_specified_string. + (Ffile_name_nondirectory, Ffile_name_as_directory) + (Fdirectory_file_name, Fexpand_file_name) + (Fsubstitute_in_file_name): Likewise. + (Fread_file_name): Compare decoded homedir with DIR and + DEFAULT_FILENAME. + + * alloc.c (make_specified_string): If NCHARS is negative, count + the number of characters. + +2003-03-18 Jan Dj,Ad(Brv + + * gtkutil.c (xg_frame_cleared): Call gtk_widget_queue_draw for + all widgets. + + * gtkutil.h: Removed xg_ignore_next_thumb. + +2003-03-18 Kenichi Handa + + * coding.c (Vchar_coding_system_table): Remove this variable. + (Vcoding_system_safe_chars): New variable. + (intersection): Remove this function. + (find_safe_codings): Don't use Vchar_coding_system_table, but try + all codings in SAFE_CODINGS. + (Ffind_coding_systems_region_internal): Adjust for the change of + find_safe_codings. Get generic coding systems from + Vcoding_system_safe_chars. + (Fdefine_coding_system_internal): New function. + (syms_of_coding): Defsubr Sdefine_coding_system_internal. + Initialize and staticpro Vcoding_system_safe_chars. + +2003-03-18 Jan Dj,Ad(Brv + + * gtkutil.c (xg_set_toolkit_scroll_bar_thumb): Check if new values + equal old values before updating. + + * xterm.c (xg_scroll_callback): Remove xg_ignore_next_thumb. + + * gtkutil.c (xg_initialize): Remove xg_ignore_next_thumb. + +2003-03-17 Jan Dj,Ad(Brv + + * gtkutil.c: Removed handle_fixed_child, struct xg_last_sb_pos. + (xg_resize_widgets): Don't call foreach(handle_fixed_child). + (xg_gtk_scroll_destroy): Remove free of struct xg_last_sb_pos. + (scroll_bar_button_cb): Set bar->dragging to nil on button release. + (xg_create_scroll_bar): Pass bar to button event callback. + (xg_find_top_left_in_fixed): New function. + (xg_update_scrollbar_pos): Don't call gdk_window_clear on + whole scroll bar area. Get old position with + xg_find_top_left_in_fixed, calculate and only clear needed areas. + (xg_set_toolkit_scroll_bar_thumb): Do not adjust scroll bar if + dragging is in progress. Calculate whole as for Motif. + Remove code that saved last values. Call gtk_range functions to + set scroll bar sizes. + + * gtkutil.h: Removed xg_ignore_next_thumb. + +2003-03-17 Juanma Barranquero + + * makefile.w32-in ($(BLD)/xdisp.$(O)): Add dependency on blockinput.h + and files included from it. + +2003-03-18 Stefan Monnier + + * keymap.c (accessible_keymaps_1): Break cycles but without preventing + multiple occurrences of the same keymap under different prefixes. + (Faccessible_keymaps): Remove code redundant since 1994-08-03T07:39:00Z!rms@gnu.org. + +2003-03-16 Jason Rumney + + * w32gui.h: Use HDC for Display. + + * w32term.c (w32_encode_char): Prevent double-byte chars from + crashing Emacs. + + * w32fns.c (jpeg_load, png_load, slurp_file): Read image files + as binary. + +2003-03-16 Juanma Barranquero + + * xdisp.c (x_produce_glyphs): Use FRAME_BASELINE_OFFSET. + +2003-03-16 Kim F. Storm + + The following changes consolidate some of the gui-independent + parts of the processing and drawing of "glyph strings" from + xterm.c, w32term.c, and macterm.c into xdisp.c. + + * dispextern.h (struct glyph): Reduce face_id member from 22 to + 21 bits (this reduces number of faces from 4M to 2M). + Replace W32 specific w32_font_type member (2 bits) by generic + font_type member (3 bits) for portability. + (FONT_TYPE_UNKNOWN): New define, default for font_type member. + (enum draw_glyphs_face): Define here. + (struct glyph_string): Define here. Merge W32 and X versions. + (struct redisplay_interface): New members per_char_metric, + encode_char, compute_glyph_string_overhangs, draw_glyph_string. + (VCENTER_BASELINE_OFFSET): Define here. + (dump_glyph_string, x_get_glyph_overhangs, x_produce_glyphs) + (x_draw_glyphs, notice_overwritten_cursor): Declare prototypes here. + + * xdisp.c: Consolidate gui-independent "glyph string" code here. + (dump_glyph_string): Moved here. + (init_glyph_string, append_glyph_string_lists, append_glyph_string) + (prepend_glyph_string_lists, get_glyph_face_and_encoding) + (fill_composite_glyph_string, fill_glyph_string) + (fill_image_glyph_string, fill_stretch_glyph_string) + (left_overwritten, left_overwriting, right_overwritten) + (right_overwriting, get_char_face_and_encoding) + (set_glyph_string_background_width, compute_overhangs_and_x) + (append_glyph, append_composite_glyph, produce_image_glyph) + (take_vertical_position_into_account, append_stretch_glyph) + (produce_stretch_glyph): New generic functions (based on X version). + Call platform specific functions through rif. + (INIT_GLYPH_STRING): New macro, hides W32 details. + (BUILD_STRETCH_GLYPH_STRING, BUILD_IMAGE_GLYPH_STRING) + (BUILD_CHAR_GLYPH_STRINGS, BUILD_COMPOSITE_GLYPH_STRING) + (BUILD_GLYPH_STRINGS): Generic macros (based on X version). + (x_draw_glyphs, x_get_glyph_overhangs, x_produce_glyphs) + (notice_overwritten_cursor): + Generic functions exported to platform modules. Users changed. + + * xterm.h (FONT_DESCENT, FRAME_X_OUTPUT, FRAME_BASELINE_OFFSET) + (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE) + (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): + New macros for consolidated code. + + * xterm.c: Remove consolidated defines and code. + (x_per_char_metric, x_encode_char) + (x_compute_glyph_string_overhangs): Adapt to RIF requirements. + (x_redisplay_interface): Add new members. + + * w32gui.h (Display): Add dummy typedef for consolidation. + (XChar2b): Define alias for wchar_t for consolidation. + (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): New macros. + + * w32term.h (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY) + (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE): + New macros for consolidation. + + * w32term.c: Remove consolidated defines and code. + (BUILD_WCHAR_T, BYTE1, BYTE2): Macros removed; callers changed + to use STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2 instead. + (w32_per_char_metric): Change font_type arg to int for RIF. + (w32_encode_char): Return int according to RIF requirements. + (w32_compute_glyph_string_overhangs): Adapt to RIF. + (w32_get_glyph_overhangs): New function for RIF. Uses generic + x_get_glyph_overhangs. + (w32_redisplay_interface): Add new members. + + * macgui.h (XChar2b): Move typedef here for consolidation. + (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): New macros. + + * macterm.h (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY): + (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE): New macros for + consolidation. + + * macterm.c: Remove consolidated defines and code. + (mac_per_char_metric): New function for RIF. + (mac_encode_char): Adapt to new RIF requirements. + (mac_compute_glyph_string_overhangs): Adapt for RIF. + (x_redisplay_interface): Add new members. + +2003-03-15 Stefan Monnier + + * keymap.c (Vmenu_events): New var. + (syms_of_keymap): Initialize it. + (where_is_internal): Check more carefully what is a menu event. + +2003-03-14 Richard M. Stallman + + * lread.c (read1): After #!, exit loop on eof. + +2003-03-14 Jan Dj,Ad(Brv + + * gtkutil.h: Add declaration for xg_frame_cleared. + + * xterm.c (x_clear_frame): Call xg_frame_cleared for GTK. + + * gtkutil.c (struct xg_last_sb_pos): New structure. + (handle_fixed_child): New function. + (xg_resize_widgets): Call handle_fixed_child on all scroll bar widgets + and force a redraw on them. + (xg_gtk_scroll_destroy): Free struct xg_last_sb_pos also. + (xg_create_scroll_bar): Add struct xg_last_sb_pos to scroll bar + so we can avoid unneeded redraws. + (xg_update_scrollbar_pos): Invalidate data in xg_last_sb_pos + and force a redraw on the scroll bar. + (xg_set_toolkit_scroll_bar_thumb): Do not change/redraw scroll bar + if xg_last_sb_pos shows the positions are up to date. + (xg_frame_cleared): New function. + +2003-03-13 Kenichi Handa + + * coding.c (Fdetect_coding_region): Fix docstring. + (Fdetect_coding_string): Fix docstring. + +2003-03-13 Andreas Schwab + + * gtkutil.c: Add prototype for create_menus. + + * data.c (long_to_cons): Fix type of top. + + * xselect.c (selection_data_to_lisp_data): Use int instead of + long for an integer of size 4. + + * gtkutil.c (xg_update_frame_menubar): Add missing return value. + (xg_tool_bar_help_callback): Likewise. + +2003-03-12 Andreas Schwab + + * xterm.c (x_term_init) [USE_GTK]: Fix typo. + +2003-03-12 Kim F. Storm + + The following changes consolidate the fringe handling from + xterm.c, w32term.c, and macterm.c into xdisp.c. + + * xdisp.c: Consolidate fringe handling code here. + (left_bits, right_bits, continued_bits, continuation_bits) + (ov_bits, zv_bits): Define fringe bitmaps. + (fringe_bitmaps): New array holding fringe bitmaps. + (draw_fringe_bitmap): Draw a specific bitmap; call display + specific drawing routine via rif->draw_fringe_bitmap. + (draw_row_fringe_bitmaps): Generic replacement for + x_draw_row_fringe_bitmaps; all callers changed. + (compute_fringe_widths): Generic replacement for + x_compute_fringe_widths; all callers changed. + + * dispextern.h (enum fringe_bitmap_type): Define here. + (struct fringe_bitmap, struct draw_fringe_bitmap_params): New. + (fringe_bitmaps): Declare extern. + (struct redisplay_interface): New member draw_fringe_bitmap. + (draw_row_fringe_bitmaps, compute_fringe_widths): Declare extern. + + * xterm.c: Remove generic fringe code. + (x_draw_fringe_bitmap): Only perform actual fringe drawing. + (x_redisplay_interface): Add x_draw_fringe_bitmap member. + + * w32term.c: Remove generic fringe code. + (w32_draw_fringe_bitmap): Only perform actual fringe drawing. + (w32_redisplay_interface): Add w32_draw_fringe_bitmap member. + + * macterm.c: Remove generic fringe code. + (x_draw_fringe_bitmap): Only perform actual fringe drawing. + (x_redisplay_interface): Add x_draw_fringe_bitmap member. + +2003-03-11 Stefan Monnier + + * print.c (Fprin1_to_string): Return unibyte string if possible. + +2003-03-09 David Kastrup + + * process.c (read_process_output): We have allocated enough space + for readmax and carryover, so actually use the alloted space. + +2003-03-09 Jan Dj,Ad(Brv + + * keyboard.c (make_lispy_event): Extend mouse_syms if needed for + toolkit scrollbar click. + + * xterm.c (x_window_to_scroll_bar): Call xg_get_scroll_id_for_window + for USE_GTK. + (x_scroll_bar_handle_click): Use this function for toolkit scrollbars + also. + (handle_one_xevent): ButtonPress/Release: If event is for a toolkit + scrollbar and control is pressed, call x_scroll_bar_handle_click. + + * gtkutil.h (xg_get_scroll_id_for_window): Declare. + + * gtkutil.c (xg_get_scroll_id_for_window): New function. + (xg_tool_bar_item_expose_callback): New function. + (xg_tool_bar_expose_callback): Call update_frame_tool_bar. + (xg_create_tool_bar): Connect xg_tool_bar_expose_callback to expose + on the tool bar widget. + (update_frame_tool_bar): Connect xg_tool_bar_item_expose_callback + to expose on the tool bar item widgets. + +2003-03-08 Jan Dj,Ad(Brv + + * gtkutil.c (update_frame_tool_bar): Compare pixmap ID instead of + struct image* when deciding to update (struct image* may have been + deleted from the image cache). + + * xterm.c (handle_one_xevent): Pass ReparentNotify to Xt even if + the event isn't for a frame (i.e. for dialogs). + +2003-03-07 Kenichi Handa + + * coding.c (CODING_ADD_COMPOSITION_COMPONENT): If the number of + composition components reaches the limit, terminate composing. + (COMPOSITION_OK): New macro. + (detect_coding_iso2022): Use it if an escape sequence for + composition is found. + (coding_restore_composition): Adjust the number of composition + components if it is not sane. + +2003-03-06 Juanma Barranquero + + * w32term.h (struct w32_display_info): Add xrdb member to support + passing resources via -xrm on Windows. + + * w32term.c (w32_make_rdb): New function. + (w32_term_init): Use it to initialize xrdb member of w32_display_info + struct. Delete leftover code. + + * w32fns.c (Fx_get_resource, x_get_resource_string): Pass xrdb to check + for resources passed on the command line. + + * w32reg.c (w32_get_rdb_resource): New function. + (x_get_string_resource): Use it, so resources passed with -xrm + supercede the ones in the registry. + +2003-03-04 Jan Dj,Ad(Brv + + * xterm.c (x_detect_focus_change): Call x_any_window_to_frame + instead of x_top_window_to_frame. + +2003-03-03 Jan Dj,Ad(Brv + + * xsmfns.c (smc_save_yourself_CB): Add --no-splash to options + when restarting Emacs. + +2003-03-03 Richard M. Stallman + + * buffer.c (Fkill_buffer): Use Frun_hook_with_args_until_failure + to run kill-buffer-query-functions. + (Qkill_buffer_query_functions): New var. + (syms_of_buffer): Init and staticpro it. + +2003-03-02 Jan Dj,Ad(Brv + + * xterm.h (XSync): Define as gdk_window_process_all_updates for GTK. + +2003-02-25 Kim F. Storm + + * xdisp.c (redisplay_window): Fix infinite loop in redisplay. + If centering point failed to make whole line visible and vscroll + is non-zero, disable vscroll and try centering point again. + + * lread.c (read1): Accept `single space' syntax like (? x). + +2003-02-25 Jan Dj,Ad(Brv + + * keyboard.c (cancel_hourglass_unwind): Surround with + #ifdef HAVE_X_WINDOWS. + +2003-02-25 Kenichi Handa + + * buffer.c (Fset_buffer_multibyte): Pay attention to the buffer + process only when "subprocesses" is defined. + +2003-02-24 Stefan Monnier + + * syntax.c (back_comment): Only check nestedness of 2nd char if needed. + +2003-02-24 Juanma Barranquero + + * callint.c (fix_command): Declare as static void and move before + Fcall_interactively. + + * xdisp.c (Qwhen): Declare external; it's now defined in callint.c. + (syms_of_xdisp): Don't initialize Qwhen. + +2003-02-23 Jan Dj,Ad(Brv + + * keyboard.c (cancel_hourglass_unwind): New function. + (command_loop_1): Cancel hourglass with unwind-protect. + +2003-02-23 Richard M. Stallman + + * callint.c (fix_command): New subroutine, from Fcall_interactively. + Detect (when ... (region-beginning)) etc. + (Fcall_interactively): Call fix_command. + (Qif, Qwhen): New variables. + (syms_of_callint): Init and staticpro them. + + * regex.c (print_partial_compiled_pattern): Output to stderr. + +2003-02-23 Kai Gro,A_(Bjohann + + * dired.c (directory_files_internal): Don't expand directory. + (Fdirectory_files, Fdirectory_files_and_attributes): Do it here + instead. From Lars Hansen . + +2003-02-22 Stefan Monnier + + * fns.c (string_to_multibyte): Remove unused var i. + (Flanginfo): Fix int/Lisp_Object mixup. + (void_call2): New fun. + (Fmap_char_table): Use it in place of call2. + + * xfaces.c (x_face_list_fonts): Fix int/Lisp_Object mixup. + + * macros.c (Fstart_kbd_macro): Remove redundant assignment. + + * keymap.c (copy_keymap_1): Make it static. + + * alloc.c (Fgarbage_collect): Don't use XSETFLOAT. + +2003-02-22 David Ponce + + * lread.c (Fload): Don't check STRING_MULTIBYTE. + +2003-02-21 Jan Dj,Ad(Brv + + * process.h: Removed subtty field from struct Lisp_Process. + + * process.c (create_process): Remove setting of subtty. + (emacs_get_tty_pgrp): New function. + (Fprocess_running_child_p, process_send_signal): + Call emacs_get_tty_pgrp instead of ioctl. + (process_send_signal): Call EMACS_KILLPG if ioctl TIOCSIGSEND fails. + +2003-02-21 Kai Gro,A_(Bjohann + + * keymap.c (Fdefine_key): Doc fix. + +2003-02-21 Juanma Barranquero + + Port of patch for RC by Klaus Zeitler . + + * s/hpux10.h: Define POLL_INTERRUPTED_SYS_CALL, not + POLLING_PROBLEM_IN_SELECT. + + * s/hpux11.h: Include hpux10-20.h instead of hpux10.h. + Delete #undef of POLLING_PROBLEM_IN_SELECT. + + * s/hpux10-20.h: New file. + + * process.c (wait_reading_process_input): + Use POLL_INTERRUPTED_SYS_CALL, not POLLING_PROBLEM_IN_SELECT. + +2003-02-20 Kenichi Handa + + * fontset.c (check_fontset_name): If NAME is nil, return the + default fontset. + (override_font_info): New function. + (Fset_fontset_font): Document that NAME nil means the default fontset. + (Ffontset_info): If FONTSET is not the default fontset, merge + FONTSET onto the copy of the default fontset, and work on that + copy. Document that NAME nil means the default fontset. + (Ffontset_font): Document that NAME nil means the default fontset. + + * process.c (setup_process_coding_systems): If the process's + in/out descriptor is -1, do nothing. + +2003-02-19 Andreas Schwab + + * lisp.h (Fcancel_kbd_macro_events, Fstring_to_multibyte): + Add prototypes. + +2003-02-19 Kenichi Handa + + * xfaces.c (try_alternative_families): Try all scalable fonts if + Vscalable_fonts_allowed is not Qt. + +2003-02-19 Jan Dj,Ad(Brv + + * xfaces.c (x_face_list_fonts): Set *pfonts to 0 if no fonts found. + +2003-02-18 Jan Dj,Ad(Brv + + * xterm.c (x_list_fonts): If maxnames is less than 0, get all font + names. + + * xfaces.c (x_face_list_fonts): Allocate struct font_name here. + (sorted_font_list): Move allocation of struct font_name to + x_face_list_fonts. + (Fx_font_family_list): Set font-list-limit to -1 to get all font names. + (Fx_list_fonts): Set maxnames to -1 to get all font names. + +2003-02-18 Kim F. Storm + + * lread.c (read1): Fix last change. + "`" is not always special. Allow "?" after a character constant. + +2003-02-18 Andrew Choi + + * unexmacosx.c (copy_data_segment): Also copy __cfstring section. + +2003-02-18 Andreas Schwab + + * window.c (window_scroll_pixel_based): Move outside a + multi-glyph character before setting new window start. + + * xdisp.c (in_display_vector_p): New function. + * dispextern.h (in_display_vector_p): Declare. + +2003-02-18 Kim F. Storm + + * lread.c (read1): Fix and relax read syntax. + Recognize "[", ";", "#", and "?" after a dotted-pair dot. + Only recognize "," after dotted-pair dot if inside backquote. + Never include "`" or "," (inside backquote) in a symbol. + Allow dotted-pair dot after a character constant. + Allow "`" and "," (inside backquote) after a character constant. + +2003-02-17 Jan Dj,Ad(Brv + + * gtkutil.c (xg_tool_bar_expose_callback): New function. + (xg_create_tool_bar): Force style of tool bar to be horizontal with + icons. Set name of tool bar to emacs-toolbar. + (update_frame_tool_bar): Connect expose event to + xg_tool_bar_expose_callback. + +2003-02-17 Richard M. Stallman + + * keyboard.c (this_command_key_count_reset): New variable. + Initiatize to 0 where this_command_key_count is set. + (read_char): Save and restore this_command_key_count_reset + around input method code. + (read_char): If this_command_key_count_reset, echo reread commands. + (Freset_this_command_lengths): Set this_command_key_count_reset to 1. + +2003-02-17 Kenichi Handa + + * fns.c (string_to_multibyte): Always return a multibyte string. + +2003-02-16 Jason Rumney + + * w32fns.c (w32_list_bdf_fonts, w32_list_fonts): + Negative max_fonts parameter means list all. + +2003-02-14 Dave Love + + * fns.c (Flanginfo): Doc fix. + +2003-02-13 Kim F. Storm + + * lread.c (read_escape): Interpret \s as a SPACE character, except + for \s-X in a character constant which still is the super modifier. + (read1): Signal an `invalid read syntax' error if a character + constant is immediately followed by a digit or symbol character. + + * search.c (Fmatch_data): Doc fix. Explicitly state that + match-data is undefined if last search failed. + + * keymap.c (Fcommand_remapping): Rename from Fremap_command. + All uses changed. + +2003-02-12 Juanma Barranquero + + * eval.c (Fdefmacro): Fix typo. + +2003-02-12 Kim F. Storm + + * macros.c (Fstart_kbd_macro): If appending, and last keyboard + macro is a string, convert meta modifiers in string when copying + the string into a vector. + +2003-02-11 Kim F. Storm + + * keymap.c (Fremap_command): Return nil if arg is not a symbol. + +2003-02-11 Kenichi Handa + + * Makefile.in (lisp, shortlisp): Add malayalam.el and tamil.el. + +2003-02-10 Kim F. Storm + + * process.c: Doc fixes. + (syms_of_process): Add `:' prefix to QCfilter_multibyte. + +2003-02-10 Kenichi Handa + + * fns.c (Fstring_to_multibyte): Fix typo in the docstring. + + * process.c (QCfilter_multibyte): New variable. + (setup_process_coding_systems): New function. + (Fset_process_buffer, Fset_process_filter): + Call setup_process_coding_systems. + (Fstart_process): Initialize the member `filter_multibyte' of + struct Lisp_Process. + (create_process): Call setup_process_coding_systems. + (Fmake_network_process): New keyward `:filter-multibyte'. + Initialize the member `filter_multibyte' of struct Lisp_Process. + Call setup_process_coding_systems. + (server_accept_connection): Call setup_process_coding_systems. + (read_process_output): If the process has a filter, decide the + multibyteness of a string to given to the filter by + `filter_multibyte' member of the process. If the process doesn't + have a filter and the result of conversion is unibyte, use + Fstring_to_multibyte (not Fstring_make_multibyte) to get the + multibyte form. + (Fset_process_coding_system): Call setup_process_coding_systems. + (Fset_process_filter_multibyte): New function. + (Fprocess_filter_multibyte_p): New function. + (syms_of_process): Intern and staticpro QCfilter_multibyte. + Defsubr Sset_process_filter_multibyte and + Sprocess_filter_multibyte_p. + + * process.h (struct Lisp_Process): New member filter_multibyte. + + * lisp.h (setup_process_coding_systems): Add prototype. + + * buffer.c (Fset_buffer_multibyte): If the current buffer has a + process, update coding systems for the process. + +2003-02-09 Kenichi Handa + + * fns.c (string_to_multibyte): New function. + (Fstring_to_multibyte): New function. + (syms_of_fns): Defsubr it. + +2003-02-08 Andreas Schwab + + * Makefile.in (EXEEXT): Define to @EXEEXT@ and use this variable + instead of the substitution. + +2003-02-08 Jan Dj,Ad(Brv + + * xterm.c (x_make_frame_visible): Call gtk_window_deiconify. + + * xmenu.c (menu_position_func): Adjust menu popup position so that + the menu is fully visible. + +2003-02-07 Jan Dj,Ad(Brv + + * xterm.c (x_text_icon, x_raise_frame, x_lower_frame) + (x_make_frame_invisible, x_wm_set_icon_position): + Use FRAME_OUTER_WINDOW instead of ifdef X_TOOLKIT/else/endif. + + * xfns.c (x_set_name, x_set_title): Ditto. + +2003-02-04 Richard M. Stallman + + * keyboard.c (echo_now): Update before_command_echo_length. + (Freset_this_command_lengths): Reset this_command_key_count etc. + immediately rather than arranging to do it later. + (before_command_key_count_1, before_command_echo_length_1) + (before_command_restore_flag): Vars deleted. + (add_command_key): Don't handle before_command_restore_flag. + (read_char, record_menu_key): Don't update before_command_key_count or + before_command_echo_length. + (read_char): Don't handle before_command_restore_flag. + + * keyboard.c (command_loop_1): Don't call adjust_point_for_property + in direct-output clauses if it wouldn't be called in the ordinary case. + +2003-02-04 Kim F. Storm + + * keyboard.c (syms_of_keyboard) : Doc fix. + +2003-02-02 Jan Dj,Ad(Brv + + * gtkutil.c (remove_from_container): Copying list is not needed. + (xg_update_menubar, xg_update_menu_item, xg_update_submenu) + (xg_modify_menubar_widgets, update_frame_tool_bar): Call g_list_free + on list returned from gtk_container_get_children to avoid memory leak. + +2003-02-01 Jason Rumney + + * w32fns.c (w32_create_pixmap_from_bitmap_data): Use alloca for + local malloc. + [HAVE_XPM]: Avoid clashes with XColor, XImage and Pixel + definitions in xpm.h. + (init_xpm_functions): New function. + (xpm_load): Sync with xfns.c. Adapt for Windows version of libXpm. + (init_external_image_libraries): Try to load libXpm.dll. + + * fileio.c (Fcopy_file) [WINDOWSNT]: Reverse logic for setting + timestamp. + +2003-01-31 Dave Love + + * syntax.c (Fskip_chars_forward) + (open-paren-in-column-0-is-defun-start): Doc fix. + +2003-01-31 Joe Buehler + + * fileio.c: Support // at start of name for Cygwin (just added proper + preprocessor tests). + + * keyboard.c: Port to Cygwin (just added proper preprocessor tests). + + * Makefile.in: Use @EXEEXT@ for Cygwin. + + * mem-limits.h: Added ifdef to define BSD4_2 for Cygwin. + + * s/cygwin.h: Added for Cygwin port. + +2003-01-31 Juanma Barranquero + + * w32fns.c (DrawText): Kludge to avoid a redefinition on Windows + when including gif_lib.h. + (init_gif_functions, init_tiff_functions): New functions. + (gif_load, tiff_load): Sync with xfns.c version. Adjust colors for + Windows. Disable color table lookups. Call library functions + through pointers determined at runtime. + (init_external_image_libraries): Try to load libungif.dll and + libtiff.dll. + +2003-01-31 Kenichi Handa + + * xdisp.c (SKIP_GLYPHS): New macro. + (set_cursor_from_row): Skip all glyphs that comes from overlay string. + +2003-01-30 Jan Dj,Ad(Brv + + * gtkutil.c (free_frame_tool_bar): Remove debug printf. + +2003-01-30 Dave Love + + * alloc.c (Vgc_elapsed, gcs_done): New variables. + (Fgarbage_collect): Use them. + (init_alloc, syms_of_alloc): Set them up. + +2003-01-30 Juanma Barranquero + + * w32fns.c (init_external_image_libraries): Add missing operator. + +2003-01-29 Jason Rumney + + * w32fns.c (init_external_image_libraries): Allow jpeg-62.dll as + an alternative name for jpeg.dll. + +2003-01-29 Kenichi Handa + + * xdisp.c (set_cursor_from_row): Pay attention to string display + properties. + +2003-01-28 Benjamin Riefenstahl + + * macterm.c (keycode_to_xkeysym_table): Add , , + . + (keycode_to_xkeysym_table): Reformat and add more comments. + (XTread_socket): Drop special case for backspace. + +2003-01-28 Andrew Choi + + * macfns.c (x_to_mac_color): Correct the order for parsing the RGB + values in old-style RGB specs. + +2003-01-27 Juanma Barranquero + + * w32fns.c (init_external_image_libraries): Try alternate names for the + jpeg dll. + +2003-01-27 Jan Dj,Ad(Brv + + * gtkutil.c (create_dialog, xg_separator_p) + (xg_item_label_same_p, xg_update_menu_item): Check for NULL string + before calling strcmp or strlen. + +2003-01-26 Jan Dj,Ad(Brv + + * gtkutil.c (update_frame_tool_bar): Call prepare_image_for_display + and handle image load failure. + +2003-01-26 Jason Rumney + + * w32fns.c (init_jpeg_functions, jpeg_resync_to_restart_wrapper): + New functions. + (jpeg_load): Sync with xfns.c version. Adjust colors for Windows. + Disable color table lookups. Call jpeg library functions + through pointers determined at runtime. + (init_external_image_libraries): Try to load jpeg.dll. + +2003-01-25 Richard M. Stallman + + * lisp.h: Declare format2 instead of format1. + + * fileio.c (barf_or_query_if_file_exists): + Call format2 instead of format1. + + * editfns.c (format2): New function, replaces format1 + but takes exactly two Lisp Objects as format args. + + * buffer.c (Fkill_buffer): Call format2 instead of format1. + +2003-01-25 Jan Dj,Ad(Brv + + * xterm.h: Change to return value of x_dispatch_event to int. + + * xterm.c (x_filter_event): New function. + (event_handler_gdk, XTread_socket): Call x_filter_event. + (x_dispatch_event): Change to return value of finish. + (event_handler_gdk): Use return value from x_dispatch_event. + + * xfns.c (x_window): Call create_frame_xic for GTK version to + initialize input methods. + + * gtkutil.h: Add (void) prototypes. + + * gtkutil.c (create_menus): Remove code that puts the help menu to + the right. + +2003-01-25 Jason Rumney + + * w32fns.c (XPutPixel): Handle monochrome images; used for masks. + [HAVE_PNG]: Sync with xfns.c version. + (png_load): Adjust colors for Windows. Use Windows + bitmaps. Disable color table lookups. + (DEF_IMGLIB_FN, LOAD_IMGLIB_FN): New macros. + (init_png_functions): New function. + (png_read_from_memory, png_load): Call png library functions + through pointers determined at runtime. + (QCloader, QCbounding_box, QCpt_width, QCpt_height): Declare. + (init_external_image_libraries): New function. + (init_xfns): Call it. + +2003-01-24 Andreas Schwab + + * minibuf.c (Fminibuffer_message): Verify type of parameter. + +2003-01-24 Jan Dj,Ad(Brv + + * gtkutil.c (xg_initialize): Initialize id_to_widget here instead + of static initializer. + +2003-01-24 Dave Love + + * s/gnu-linux.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define for more + architectures. + + * alloc.c (mark_stack) [!GC_LISP_OBJECT_ALIGNMENT && __GNUC__]: + Use __alignof__. + +2003-01-24 Kenichi Handa + + * keyboard.c (adjust_point_for_property): New second arg MODIFIED. + It it is nonzero, don't pretend that an invisible area doesn't exist. + (command_loop_1): Call adjust_point_for_property with proper + second arg. + +2003-01-22 Jason Rumney + + Sync changes with xterm.c and xfns.c. + + * w32term.c (x_draw_glyph_string_foreground) + (x_draw_composite_glyph_string_foreground): Implement overstriking. + + * w32term.c (x_write_glyphs): Clear phys_cursor_on_p if current + phys_cursor's hpos is overwritten. This is still not completely + correct, as it doesn't really make sense to use hpos at all to + get the cursor glyph (as that is relative to the width of the + characters on the line, which may have changed during the update). + + * w32term.c (notice_overwritten_cursor): Handle the special case + of the cursor being in the first blank non-text line at the + end of a window. + + * w32term.c (x_draw_hollow_cursor, x_draw_bar_cursor) + (x_draw_phys_cursor_glyph): Set phys_cursor_width here. + Compute from the x position returned by x_draw_glyphs. + + (x_display_and_set_cursor): Don't set phys_cursor_width here, + except for NO_CURSOR and system caret, to make phys_cursor_width + contain what its name suggests. + (notice_overwritten_cursor): Consider the cursor image erased if + the output area intersects the cursor image in y-direction. + + * w32term.c (note_mode_line_or_margin_highlight): Rename from + note_mode_line_highlight and extend. + + * w32term.c (last_window): New variable. + (w32_read_socket) : Generate SELECT_WINDOW_EVENTs. + (note_mouse_movement): Remove reimplemented code in #if 0. + + * w32fns.c (x_set_cursor_type): Set cursor_type_changed, + not update_mode_lines, and always set it to 1. + +2003-01-21 Jason Rumney + + * w32fns.c (IDC_HAND): Define it if system headers don't. + +2003-01-21 KOBAYASHI Yasuhiro + + * w32term.h (struct w32_output): New member hand_cursor. + (WM_EMACS_SETCURSOR): New message definition. + + * w32term.c (note_mode_line_highlight): Delete #if 0 to enable + function w32_define_cursor. + (note_mouse_highlight): Initialize, setup cursor accoding to mouse + position, change member name output_data.x to output_data.w32 and + add function w32_define_cursor. + (show_mouse_face): Delete #if 0 to enable function w32_define_cursor + and change member name output_data.x to output_data.w32. + (w32_initialize_display_info): + Setup dpyinfo->vertical_scroll_bar_cursor. + + * w32fns.c (Vx_hand_shape): New variable. + (w32_wnd_proc): Add message entries for WM_SETCURSOR and + WM_EMACS_SETCURSOR. + (x-create-frame): Setup Cursor types. + +2003-01-21 David Ponce + + * w32term.c (w32_encode_char): For DIM=1 charset, set + ccl->reg[2] to -1 before calling ccl_driver. + (Sync. with xterm.c x_encode_char change by Kenichi Handa + on 2002-09-30.) + (w32_draw_relief_rect): Declare all args. + (w32_define_cursor): New. + + * w32fns.c (w32_load_cursor): New function. + (w32_init_class): Use it. + (x_put_x_image): Declare all args. + +2003-01-21 Richard Dawe + + * Makefile.in (ALL_CFLAGS): Include MYCPPFLAGS, not MYCPPFLAG. + +2003-01-21 Jan Dj,Ad(Brv + + * gtkutil.c: Must include stdio.h before termhooks.h. + +2003-01-21 Dave Love + + * alloc.c (Fgc_status): Print zombie list. + (mark_maybe_object) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]: + Fix assignment of zombies. + (Fgarbage_collect) [GC_MARK_STACK==GC_USE_GCPROS_CHECK_ZOMBIES]: + Don't take car of non-cons. + + * s/sol2-5.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define. + + * s/sunos4-0.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define. + +2003-01-20 David Ponce + + * w32menu.c (digest_single_submenu): Declare all args. + + Sync with 2002-12-23 Richard M. Stallman + changes in xmenu.c: + + (parse_single_submenu): Use individual keymap's prompt + string as pane name, if there is one. + (set_frame_menubar): Save menu_items_n_panes from each call to + parse_single_submenu and use it when calling digest_single_submenu. + +2003-01-20 Steven Tamm + + * macterm.c (XTread_socket): Check for valid, visible window + before sending a scroll-wheel event. + +2003-01-20 Richard M. Stallman + + * xdisp.c (redisplay_window): If mini window's buffer is not + a minibuffer, then redisplay it like other windows. + +2003-01-20 Jan Dj,Ad(Brv + + * gtkutil.c (xg_create_frame_widgets): Check if there is an + external tool bar before setting tool bar height. + +2003-01-19 Jan Dj,Ad(Brv + + * xterm.c (handle_one_xevent): Surround popup_activated + with #ifdef:s for non-toolkit version. + + * Makefile.in (XOBJ): Add gtkutil.o if USE_GTK. + (gtkutil.o): New file. + (TOOLKIT_DEFINES): Set to -DUSE_GTK if HAVE_GTK. + (LIBW): Set to @GTK_LIBS@ if USE_GTK. + + * gtkutil.c: New file for GTK version. + + * gtkutil.h: New file for GTK version. + + * xterm.h: Add xt_or_gtk_widget. + Include gtk files for USE_GTK. + (struct x_output): Add toolbar_height. + (struct x_output): Add GTK widgets and Gdk size_hints. + (GTK_WIDGET_TO_X_WIN, FRAME_GTK_OUTER_WIDGET, FRAME_GTK_WIDGET) + (FRAME_OUTER_WINDOW): New macros for USE_GTK. + (FRAME_OUTER_TO_INNER_DIFF_Y): Add FRAME_TOOLBAR_HEIGHT to calculation. + + * xterm.c: Include gtkutil.h for USE_GTK. + (free_frame_menubar): Declare extern void for USE_GTK. + (note_mouse_highlight): Check popup_activated for USE_GTK. + (xt_action_hook): Don't compile if USE_GTK. + (x_scroll_bar_to_input_event): Use CurrentTime for USE_GTK. + (xg_scroll_callback): New function. + (x_create_toolkit_scroll_bar): Call xg_create_scroll_bar for USE_GTK. + (x_set_toolkit_scroll_bar_thumb): Call xg_set_toolkit_scroll_bar_thumb + for USE_GTK. + (x_scroll_bar_create): Call xg_update_scrollbar_pos and + xg_show_scroll_bar for USE_GTK. + (x_scroll_bar_remove): Call xg_remove_scroll_bar for USE_GTK. + (XTset_vertical_scroll_bar): Call xg_update_scrollbar_pos for USE_GTK. + (event_handler_gdk): New function for USE_GTK. + (handle_one_xevent): Call xg_resize_widgets for USE_GTK. + (handle_one_xevent): Make sure widget is mapped before + calling x_real_positions for USE_GTK. + (XTread_socket): Add GTK event loop for USE_GTK. + (x_set_window_size): Call xg_frame_set_char_size for USE_GTK. + (x_make_frame_visible): Call gtk_widget_show_all for USE_GTK. + (x_make_frame_invisible): Call gtk_widget_hide for USE_GTK. + (x_iconify_frame): Add code for USE_GTK. + (x_free_frame_resources): Call gtk_widget_destroy for USE_GTK. + (x_wm_set_size_hint): Only compile if not USE_GTK. GTK version + is in gtkutil.c. + (x_term_init): Add initialization for GTK. + (syms_of_xterm): Set Vx_toolkit_scroll_bars for USE_GTK. + + * xmenu.c: Include gtkutil.h for USE_GTK. + (Fx_popup_menu): Use current position if x and y are nil. + (single_menu_item, single_menu_item, Fx_popup_dialog): + Check for USE_GTK. + (popup_widget_loop): New function for USE_GTK. + (x_activate_menubar): Add code for USE_GTK. + (popup_activate_callback, popup_deactivate_callback) + (menu_highlight_callback, menubar_selection_callback): + Add USE_GTK versions. + (update_frame_menubar): Call xg_update_frame_menubar for USE_GTK. + (set_frame_menubar): Call xg_modify_menubar_widgets for USE_GTK. + (free_frame_menubar): Only compile if not USE_GTK. GTK version + is in gtkutil.c. + (popup_selection_callback): New version for USE_GTK. + (create_and_show_popup_menu): New fuction, one USE_GTK version and + one USE_X_TOOLKIT version. + (xmenu_show): Call create_and_show_popup_menu. + (dialog_selection_callback): New version for USE_GTK. + (create_and_show_dialog): New fuction, one USE_GTK version and + one USE_X_TOOLKIT version. + (xdialog_show): Call create_and_show_dialog. + + * xfns.c: Include gtkutil for USE_GTK. + (x_window_to_frame, x_any_window_to_frame) + (x_non_menubar_window_to_frame, x_menubar_window_to_frame) + (x_top_window_to_frame): Add code for USE_GTK. + (x_set_background_color): Call xg_set_background_color for GTK. + (x_set_menu_bar_lines): Check for USE_GTK. + (x_set_tool_bar_lines): Call update_frame_tool_bar for USE_GTK. + (x_set_name, x_set_title): Call gtk_window_set_title for USE_GTK. + (x_window): Call xg_create_frame_widgets for USE_GTK. + (Fx_create_frame): Check for USE_GTK. + (Fx_file_dialog): New implementation for USE_GTK. + + * xdisp.c: Add check for USE_GTK for extern void set_frame_menubar. + (update_menu_bar): Add check for USE_GTK. + (update_tool_bar): Add check for USE_GTK and external tool bar. + (redisplay_tool_bar): Add check for USE_GTK and external tool bar. + (redisplay_internal): Add check for USE_GTK and popup_activated. + (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_MENU_BAR. + (redisplay_window): Add check for USE_GTK and FRAME_EXTERNAL_TOOL_BAR. + (display_menu_bar): Add check for USE_GTK. + + * lisp.h (Vx_resource_name): Declare extern. + + * keyboard.c (kbd_buffer_get_event): Check MENU_BAR_ACTIVATE_EVENT + for USE_GTK. + (make_lispy_event): Check MENU_BAR_EVENT for USE_GTK. + + * frame.h (struct frame): Add external_tool_bar. Check for USE_GTK. + (FRAME_EXTERNAL_TOOL_BAR): New macro. + (FRAME_EXTERNAL_MENU_BAR): Check for USE_GTK. + + * fileio.c (Fread_file_name): Add check for USE_GTK. + + * dispnew.c (adjust_frame_glyphs_for_window_redisplay): + Add check for USE_GTK. + + * config.in: Added HAVE_GTK. + + * alloc.c (Fgarbage_collect): Call xg_mark_data for GTK. + +2003-01-18 Stefan Monnier + + * charset.h (Funibyte_char_to_multibyte): Export. + +2003-01-18 Jan Dj,Ad(Brv + + * xmenu.c (mouse_position_for_popup): New function. + (Fx_popup_menu): Call mouse_position_for_popup for X and + mouse_position_hook for others. + +2003-01-17 Kim F. Storm + + * editfns.c (Finsert): Mention `string-make-multibyte' and + `string-as-multibyte' in doc string. + +2003-01-17 Kenichi Handa + + * fontset.c (syms_of_fontset): Setup Vfont_encoding_alist here. + + * editfns.c (Fformat): Convert an unibyte char argument that is + formatted by "%c" to multibyte if the total result must be a + multibyte string. + +2003-01-16 Kim F. Storm + + * process.c (set-process-filter): Document unibyte/multibyte-ness + of string argument. + +2003-01-16 Kenichi Handa + + * charset.h (NEXT_CHAR_BOUNDARY, PREV_CHAR_BOUNDARY): New macros. + + * regex.c (GET_CHAR_BEFORE_2): Use PREV_CHAR_BOUNDARY. + (re_search_2): Likewise. + +2003-01-15 Kenichi Handa + + * xdisp.c (message_dolog): Fix bug of the case that *Message* + buffer is unibyte. + +2003-01-15 Francesco Potort,Al(B + + * fns.c (Fsubstring): Clarify doc string. + + * textprop.c (Ftext_properties_at, Fnext_char_property_change) + (Fprevious_char_property_change) + (Fnext_single_char_property_change) + (Fprevious_single_char_property_change, Fnext_property_change) + (Fnext_single_property_change, Fprevious_property_change) + (Fprevious_single_property_change, Fadd_text_properties) + (Fput_text_property, Fset_text_properties) + (Fremove_text_properties, Fremove_list_of_text_properties) + (Ftext_property_any, Ftext_property_not_all): Clarify doc strings. + +2003-01-14 Kim F. Storm + + * process.h (struct Lisp_Process): New member plist replaces old + member private_vars. All uses changed. + + * process.c: Reworked 2003-01-12 change -- call a plist a plist! + (QCplist): Rename from QCvars. Change all uses. + (Fprocess_plist): Replaces Fprocess_variable. Simplified. + (Fset_process_plist): Replaces Fset_process_variable. Simplify. + (syms_of_process): Intern, staticpro, defsubr these. + (Fmake_network_process): Describe :plist arg. Remove :vars arg. + +2003-01-14 Francesco Potort,Al(B + + * m/delta.h: Remove (obsolete). + +2003-01-13 Francesco Potort,Al(B + + * fileio.c (Fdelete_directory, Fdelete_file): Document the + behaviour in front of symlinks. + (Fdelete_file): Raise an error on directories. + +2003-01-13 Dave Love + + * fns.c (Freverse): Use QUIT. + +2003-01-13 Richard M. Stallman + + * minibuf.c (minibuffer_completion_contents): + Error if point is inside prompt. + + * keyboard.c (command_loop_1): Don't redisplay directly + if there's a post-command-hook. + + * fileio.c (syms_of_fileio) : Doc fix. + (Fdo_auto_save): Add gcpros around Ffile_name_directory. + +2003-01-12 Kim F. Storm + + * process.h (struct Lisp_Process): New member private_vars. + + * process.c (QCvars): New variable. + (syms_of_process): Intern and staticpro it. + (Fset_process_contact): Removed function. + (Fprocess_variable, Fset_process_variable): New functions. + (syms_of_process): Defsubr them. + (Fstart_process): Initialize private_vars plist to nil. + (Fmake_network_process): New arg :vars to setup the private + variables for new network process. + (server_accept_connection): Copy server's private variables to + client process. + + * alloc.c (pure_alloc): Fixed 2003-01-10 changed (caused spurious + crashes). Code rewritten and simplified. Now directly aligns the + pointer and recalculates pure_bytes_used, rather than aligning the + size and adjusting the pointer. + +2003-01-11 Kim F. Storm + + * process.c (Fset_process_contact): New function. + (syms_of_process): defsubr it. + (make-network-process): Update doc. + +2003-01-10 Andreas Schwab + + * alloc.c (pure_alloc): Correct alignment for Lisp_Floats. + Reported by Berthold Gunreben . + +2003-01-10 Dave Love + + * composite.c (syms_of_composite): Make composition_hash_table weak. + +2003-01-09 Kim F. Storm + + * process.c (Fmake_network_process): Convert new port number + to host byte order for `:service t' case. From Mario Lang. + +2003-01-08 Jan Dj,Ad(Brv + + * xfns.c (Fx_file_dialog): Call XtAppNextEvent and x_dispatch_event + instead of XtAppProcessEvent. + + * xterm.c (handle_one_xevent): New function. + (x_dispatch_event): New function. + (XTread_socket): Call handle_one_xevent. + + * xterm.h (FRAME_OUTER_TO_INNER_DIFF_X/Y): New. + + * xmenu.c (Fx_popup_menu): If popping up at mouse position, + call XQueryPointer to get coordinates. + (popup_get_selection): Do not set popup_activated_flag to zero, + let popup_deactivate_callback do that. Needed for Motif. + Call x_dispatch_event instead of XtDispatchEvent. + (xmenu_show): Calculate root coordinate from frame top/left position. + +2003-01-08 Kim F. Storm + + * process.c (server_accept_connection): Fix recording of new + connection's local address in :local property of contact info. + (Fmake_network_process): Record local network address for new + client processes in :local property of contact info. + (format-network-address): Add arg OMIT-PORT. Change callers. + +2003-01-07 Dave Love + + * Makefile.in (fns.o): Depend on coding.h. + +2003-01-06 Dave Love + + * fns.c: Include coding.h. Use POINTER_TYPE*, not void*. + (Vlocale_coding_system): Declare. + (Qcodeset, Qdays, Qmonths, Qpaper): New. + (Flanginfo): New. + (syms_of_fns): Initialize new stuff. + +2003-01-07 Markus Rost + + * minibuf.c (Fread_variable): Doc fix. + + * eval.c (Fuser_variable_p): Doc change. For custom variables, + use the same test as for custom-variable-p. + +2003-01-05 Richard M. Stallman + + * xdisp.c (try_scrolling): New arg LAST_LINE_MISFIT. + Count LAST_LINE_MISFIT in scroll margin for end of window. + Move label too_near_end before setting SCROLL_MARGIN_POS. + Set LAST_LINE_MISFIT before jumping there. + + * xdisp.c (try_scrolling): Calculate amount_to_scroll better in + scroll_conservatively case. If scrolling that much doesn't change + STARTP, move it down one line. + + * xdisp.c (redisplay_window): Pass last_line_misfit arg to + try_scrolling. Make it 1 after make_cursor_line_fully_visible fails. + + * xdisp.c (setup_echo_area_for_printing): Kill Emacs if no + selected frame. + + * keymap.c (apropos_predicate, apropos_accumulate): Make them static. + (syms_of_keymap): Staticpro them. + (Fapropos_internal): Initialize them and clear them out. + Don't GCPRO them. + + * buffer.c (syms_of_buffer) : Doc fixes. + + * lisp.h: New misc type Lisp_Save_Value. + (enum Lisp_Misc_Type): Add Lisp_Misc_Save_Value. + (XSAVE_VALUE): New macro. + (struct Lisp_Save_Value): New data type. + (union Lisp_Misc): Add u_save_value alternative. + (make_save_value): Declare. + + * alloc.c (make_save_value): New function. + + * xterm.c (x_catch_errors): Save dpy using make_save_value. + (x_catch_errors_unwind): Call XSync. + +2003-01-01 Richard M. Stallman + + * window.c (window_scroll_pixel_based): Partially undo last change. + + * keyboard.c (command_loop_1): Call adjust_point_for_property + in direct action cases for Qforward_char and Qbackward_char. + Set already_adjusted so it won't be done twice. + +2002-12-30 Richard Dawe + + * src/config.in (!HAVE_SIZE_T): Fix order of arguments in + type definition of size_t. + +2003-01-02 Steven Tamm + + * macterm.c (syms_of_macterm): Provide the feature "mac-carbon" to + distinguish Carbon GUI builds from X11 builds on darwin. + +2002-12-30 Steven Tamm + + * macterm.c (syms_of_macterm): Set mac-wheel-button-is-mouse-2 + to default to t. + +2002-12-29 Francesco Potort,Al(B + + * data.c (Fstring_to_number, Fminus): Better English in doc strings. + +2002-12-28 Steven Tamm + + * Makefile.in (macosx-bundle): Fix Mac OS X/Carbon port to + allow building in a different directory than source. Uses some + GNU Make extensions, but there is no other make on Mac OS X. + +2002-12-26 Francesco Potort,Al(B + + * data.c (Fmakunbound, Ffmakunbound, Fmake_variable_buffer_local) + (Fsetq_default, Fmake_local_variable, Fkill_local_variable) + (Fmake_variable_frame_local, Faset, Fnumber_to_string, Fminus) + (Fstring_to_number): Mention the returned value in the doc strings. + +2002-12-23 Richard M. Stallman + + * buffer.c (syms_of_buffer) + : Doc fix. + + * xmenu.c (parse_single_submenu): Use individual keymap's prompt + string as pane name, if there is one. + (set_frame_menubar): Save menu_items_n_panes from each call to + parse_single_submenu and use it when calling digest_single_submenu. + + * window.c (window_scroll_pixel_based): Fix check for reaching BEGV. + Don't try to make last line fully visible if it is past end of window. + +2002-12-22 Steven Tamm + + * macmenu.c (MIN_POPUP_SUBMENU_ID): Add. + (mac_menu_show): Add support for hierarchical popup menus. + (add_menu_item): Remove indentation support. + (fill_submenu, fill_menu): Create hierarchical menus + instead of using indentation. + +2002-12-22 Richard M. Stallman + + * xdisp.c (try_cursor_movement): Don't call try_window here. + (redisplay_window): Never redisplay minibuffer when inactive. + + * window.c (select_window_1): Undo 9/21 change. + +2002-12-22 Steven Tamm + + * macterm.c (XTread_socket): Call KeyTranslate for control and + meta to deal correctly shifted non-alpha characters, like C-S-5 + being treated like C-%. Do not look for shift key to deal + with masking off control-key with mac-reverse-ctrl-meta. + +2002-12-21 Richard M. Stallman + + * xmenu.c (popup_get_selection): Now static. New arg DO_TIMERS. + If it is non-nil, run timers. Use an unwind-protect to requeue + the events that were read ahead. + (popup_get_selection_unwind): New subroutine. + (popup_get_selection_queue): File-scope variable now holds that queue. + (xmenu_show): Pass 0 for DO_TIMERS to popup_get_selection. + (xdialog_show): Pass 1 for DO_TIMERS to popup_get_selection. + Use an unwind-protect to pop down the dialog box. + (xdialog_show_unwind): New subroutine implements that. + + * xdisp.c (row_containing_pos): Change exit test using last_y. + (try_window_id): Abort if row_containing_pos returns null. + + * lread.c (load_error_handler): New function. + (Fload): Handle errors in Fsubstitute_in_file_name. + Don't expect Fsignal to return. + + * eval.c: Errors and throws work right with interrupt blocking. + (struct catchtag): New elt interrupt_input_blocked. + (unwind_to_catch): Restore interrupt_input_blocked from saved value. + (internal_catch, Fcondition_case, internal_condition_case) + (internal_condition_case_1, internal_condition_case_2): Save it. + (Fsignal): Don't do TOTALLY_UNBLOCK_INPUT. + + * editfns.c (Fformat): Add parens. + + * dired.c (file_name_completion): Fix that change. + Delete special quit-handling code; just use QUIT. + +2002-12-21 Tak Ota + + * dired.c (file_name_completion): Close directory on error + just as in directory_files_internal. + +2002-12-19 David Kastrup + + * window.c (Fset_window_configuration): Set old_point to correct + value when new_current_buffer == current_buffer. + +2002-12-17 Ben Key + + Revisited my earlier fix for the following entry in etc/PROBLEMS: + "Emacs built on Windows 9x/ME crashes at startup on Windows XP, + or Emacs builtpart of on XP crashes at startup on Windows 9x/ME." + + These changes were in part based upon suggestions made by Peter + 'Luna' Runestig [peter@runestig.com]. + + * w32.c (g_b_init_is_windows_9x, g_b_init_open_process_token) + (g_b_init_get_token_information, g_b_init_lookup_account_sid) + (g_b_init_get_sid_identifier_authority ): Add several static + global variables. + + * w32.c (globals_of_w32): New function. Used to initialize those + global variables that must always be initialized on startup even + when the global variable initialized is non zero. Its primary + purpose at this time is to set the global variables + g_b_init_is_windows_9x, g_b_init_open_process_token, + g_b_init_get_token_information, g_b_init_lookup_account_sid, and + g_b_init_get_sid_identifier_authority to 0 on startup. + Called from main. + + * w32.c (is_windows_9x): Perform initialization only if + g_b_init_is_windows_9x is equal to 0. On initialization set + g_b_init_is_windows_9x equal to 1. + + * w32.c (open_process_token): Perform initialization only if + g_b_init_open_process_token is equal to 0. On initialization set + g_b_init_open_process_token equal to 1. + + * w32.c (get_token_information): Perform initialization only if + g_b_init_get_token_information is equal to 0. On initialization + set g_b_init_get_token_information equal to 1. + + * w32.c (lookup_account_sid): Perform initialization only if + g_b_init_lookup_account_sid is equal to 0. On initialization + set g_b_init_lookup_account_sid equal to 1. + + * w32.c (get_sid_identifier_authority): Perform initialization + only if g_b_init_get_sid_identifier_authority is equal to 0. + On initialization set g_b_init_get_sid_identifier_authority equal to 1. + + * w32fns.c (globals_of_w32fns): New function. Used to initialize + those global variables that must always be initialized on startup + even when the global variable initialized is non zero. + Its primary purpose at this time is to initialize the global variable + track_mouse_event_fn. + + * w32fns.c (w32_wnd_proc): Remove initialization of + track_mouse_event_fn from the handler for the WM_SETFOCUS message. + + * w32fns.c (syms_of_w32fns): Call globals_of_w32fns. + + * w32menu.c (globals_of_w32menu): New function. Used to + initialize those global variables that must always be initialized + on startup even when the global variable initialized is non zero. + Its primary purpose at this time is to initialize the global + variables get_menu_item_info and set_menu_item_info. + + * w32menu.c (initialize_frame_menubar): Remove initialization of + get_menu_item_info and set_menu_item_info. + + * w32menu.c (syms_of_w32menu): Call globals_of_w32menu. + + * w32.h (globals_of_w32, globals_of_w32fns, globals_of_w32menu): + Declare them. + + * emacs.c (main): Call globals_of_w32 prior to calling + init_environment if WINDOWSNT is defined. Call globals_of_w32fns + and globals_of_w32menu if initialized is non zero and HAVE_NTGUI + is defined. + + * w32term.c (x_update_window_begin): Fix Windows API error + detected by BoundsChecker. Test to determine if + w32_system_caret_hwnd is NULL prior to attempting to use + SendMessage to send the WM_EMACS_HIDE_CARET message to it. + + * w32term.c (x_update_window_end): Fix Windows API error + detected by BoundsChecker. Test to determine if + w32_system_caret_hwnd is NULL prior to attempting to use + SendMessage to send the WM_EMACS_SHOW_CARET message to it. + +2002-12-17 Kenichi Handa + + * coding.c (coding_system_require_warning): New variable. + (syms_of_coding): DEFVAR it. + + * coding.h (coding_system_require_warning): Extern it. + + * fileio.c (choose_write_coding_system): Even if + Vcoding_system_for_write is non-nil, if + coding_system_require_warning is nonzero, call + Vselect_safe_coding_system_function. + +2002-12-17 Markus Rost + + * Makefile.in (lisp, shortlisp): Add cus-face and timer. + (lisp): Add font-core. + +2002-12-13 Stefan Monnier + + * textprop.c (text_read_only): New arg `propval'. + (get_char_property_and_overlay): Remove unused var `next_overlay'. + (verify_interval_modification): Use text_read_only's new arg. + +2002-12-13 Kenichi Handa + + * coding.c (Funencodable_char_position): Set pend correctly. + +2002-12-12 Jason Rumney + + * w32term.c (last_mousemove_x, last_mousemove_y): New variables. + (w32_read_socket) : Use them to detect non-movement. + Be more careful about when help_events are generated. + +2002-12-12 Steven Tamm + + * macterm.c (mac_check_for_quit_char): Correctly set the + modifiers of the event to 0. + * mac.c (sys_select): Duplicate rfds before calling select to + ensure that rfds survive the while loop. + +2002-12-11 Kim F. Storm + + * xdisp.c (try_window_id): Don't call set_cursor_from_row if + row_containing_pos returned NULL. + +2002-12-10 Steven Tamm + + * mac.c (sys_read): Fix sys_read to not call select if IO is + non-blocking. + (sys_select): Fix sys_select to not use a timeout larger than + the one given. + +2002-12-10 Juanma Barranquero + + * editfns.c (Fformat): Use alloca, not _alloca. + +2002-12-09 Richard M. Stallman + + * buffer.c (Fget_buffer_create): Call Qucs_set_table_for_input + as the last thing. + +2002-12-09 Dave Love + + * s/sol2-8.h: Removed. (Not necessary.) + +2002-12-09 Matthew Swift + + * editfns.c (Fformat): Handle precision in string conversion + specifiers like libc functions do (ie, print at most that many + characters). + +2002-12-08 Richard M. Stallman + + * xdisp.c (row_containing_pos): Check more carefully + whether charpos is really in the row before returning it. + +2002-12-07 Steven Tamm + + * sysdep.c (emacs_read) [HAVE_CARBON]: Have emacs_read use sys_read. + + * eval.c (Feval) [HAVE_CARBON]: Calls mac_check_for_quit_char at + each stack frame. This may change as it could be time consuming. + + * macterm.c (mac_check_for_quit_char, quit_char_comp) + (init_quit_char_handler, mac_determine_quit_char_modifiers) + (mac_initialize): Add code to check for pressing of quit_char + in the OS event queue. + + * mac.c (sys_select): Call mac_check_for_quit_char every second + while blocking on select. + + * mac.c (sys_read): Use sys_select to test for input first + before calling read, to allow C-g to break. + +2002-12-07 Richard M. Stallman + + * minibuf.c (Fcompleting_read): Doc fix. + + * lread.c (syms_of_lread) : Doc fix. + + * fileio.c (Fcopy_file): Set immediate_quit around emacs_open call. + + * eval.c (Fdefun, Fdefmacro): Record in load-history redefining an + autoload. + + * data.c (Fdefalias): Record in load-history redefining an autoload. + + * alloca.c: Undo ifdef change accidentally made on 12-04. + +2002-12-06 Francesco Potort,Al(B + + * xfns.c (png_load): Avoid double gamma correction for PNG images. + +2002-12-04 Richard M. Stallman + + * sysdep.c (fcntl.h): Test only HAVE_FCNTL_H. + + * fileio.c (fcntl.h): Test only HAVE_FCNTL_H. + + * alloca.c: Don't use #error. + +2002-12-03 Dave Love + + * buffer.c (Qucs_set_table_for_input): New. + (Fget_buffer_create): Use it. + (Qset_buffer_major_mode_hook): Deleted. + (Fset_buffer_major_mode): Revert previous change. + (init_buffer_once): Intern ucs-set-table-for-input. + (syms_of_buffer): Delete Qset_buffer_major_mode_hook. + Add &Qucs_set_table_for_input. + +2002-12-03 Andreas Schwab + + * callint.c (Fcall_interactively): Use next_event only if less + than key_count. + +2002-12-02 Andrew Choi + + * macmenu.c (add_menu_item, fill_menubar): Truncate menu item + names to 255 characters. + + * macterm.c (XTread_socket): If all frames have been collapsed, + expand the first one before handling drag-and-drop events. + + * s/darwin.h (GETPGRP_NO_ARG): Delete. Replaced by GETPGRP_VOID, + which is detected by autoconf. + +2002-12-01 Steven Tamm + + * unexmacosx.c (copy_twolevelhints, dump_it): Now corrects the + offset in two hints table to allow prebinding to be redone and + allow the executable to be stripped. + +2002-11-29 Dave Love + + * fns.c (Frequire): Don't call LOADHIST_ATTACH if feature was + already provided. + +2002-11-29 Richard M. Stallman + + * xdisp.c (start_display): Check more intelligently for + whether the line is continued. + (move_it_vertically_backward): Clear it->continuation_lines_width. + +2002-11-28 Dave Love + + * s/amdahl.h, s/unipl5-0.h, m/sgi3000.h, s/3700.h, s/alliant-2800.h: + * s/alliant.h, s/altos.h: Deleted. (Unused/empty.) + +2002-11-27 Steven Tamm + + * fns.c (Frequire): Change nesting allowance from 2 to 3 to cause + more descriptive error output from lread.c:Fload upon most require + cycles during boostrapping. + +2002-11-27 Jason Rumney + + * fileio.c (Finsert_file_contents): Give a more appropriate error + for files bigger than 2Gb when off_t is 32 bit. + + * dired.c (Ffile_attributes): Don't return negative file sizes for + files bigger than 2Gb when off_t is 32 bit. + +2002-11-27 Dave Love + + * s/irix6-0.h (GC_SETJMP_WORKS, GC_MARK_STACK): Define. + + * systty.h: Don't conditionally define GETPGRP_NO_ARG. + Test GETPGRP_VOID instead. + [BSD_TERMIOS]: Remove definitions (never used). + + * s/osf5-0.h (WAIT_USE_INT, SYS_SIGLIST_DECLARED, sys_siglist): + Don't define. + (GC_SETJMP_WORKS, GC_MARK_STACK): Define. + + * m/mips.h (WORDS_BIG_ENDIAN): Define conditionally. + +2002-11-25 Jason Rumney + + * w32.c (sys_write): Avoid non-blocking mode, which is not fully + supported. + +2002-11-25 Dave Love + + * unexalpha.c (update_dynamic_symbols): Cast arg of fatal_unexec. + + * Makefile.in (TEMACS_LDFLAGS): Update last change. + +2002-11-25 Andreas Schwab + + * m/ia64.h: Restore `#ifndef NOT_C_CODE' deleted by last change. + +2002-11-24 Steven Tamm + + * unexmacosx.c (unexec_realloc): Use malloc_default_zone to + determine the size of pointers alloced in unexed space instead + of using possibly invalid emacs_zone pointers. This fixes the + binary incompatibility problems caused by updates to libSystem.B. + +2002-11-24 Richard M. Stallman + + * search.c (Fstring_match): Doc fix. + + * callint.c (Fcall_interactively): If a command fails because + `*' detects a read-only buffer, but RECORD_FLAG is set, + record it anyway if the args don't actually do tty input. + +2002-11-22 Dave Love + + * sysdep.c (stuff_char) [PROTOTYPES]: Provide ISO C arglist. + + * keyboard.c (interrupt_signal): Provide forward declaration. + (kbd_buffer_store_event): Don't declare interrupt_signal. + + * xdisp.c (store_frame_title_char) [PROTOTYPES]: Provide ISO C arglist. + +2002-11-21 Richard M. Stallman + + * eval.c (interactive_p): Skip any number of bytecode + and special form frames, in any order. + +2002-11-20 Jason Rumney + + * w32fns.c (convert_mono_to_color_image): New function. + (xbm_load, xbm_load_image): Use it when foreground or background + is explicitly set. + +2002-11-19 Dave Love + + * s/usg5-4.h, sco4.h (bcopy, bzero, bcmp): Don't define. + +2002-11-18 Jason Rumney + + * w32fns.c (x_build_heuristic_mask): Filter palette info from color. + (XPutPixel): Swap blue and red. + (xpm_format, pbm_format, png_format, jpeg_format, tiff_format) + (gif_format, gs_format): Use IMAGE_ASCENT_VALUE. + (xpm_image_p, pbm_image_p, png_image_p, jpeg_image_p) + (tiff_image_p, gif_image_p, gs_image_p): Don't check ascent. + +2002-11-18 Dave Love + + * m/orion105.h (HAVE_ALLOCA): Don't define. + + * m/m68k.h, m/arm.h, mtekxd88.h, m/tower32v3.h: Don't define alloca. + + * m/intel386.h: Don't include alloca.h or define alloca. + + * m/ia64.h: Don't include alloca.h, stdlib.h. Don't declare + malloc, realloc, calloc. + + * m/hp800.h, m/sr2k.h, m/ns16000.h, m/wicat.h (bcopy, bzero) + (bcmp): Don't define. + + * m/delta.h (bcopy, bzero, bcmp, alloca): Don't define. + + * m/amdahl.h: Don't define LIB_STANDARD. + + * m/alpha.h: Move OSF1 stuff from here to s/osf1.h. + + * s/osf1.h: Move OSF1 stuff from m/alpha.h to here. + + * s/irix4-0.h, s/irix5-0.h, m/powerpcle.h, m/sparc.h: + Don't include alloca.h. + + * s/aix3-2.h (HAVE_FSYNC): Don't define. + + * regex.c (_GNU_SOURCE): Don't define. + + * process.c (_GNU_SOURCE): Don't define. + + * fileio.c (_GNU_SOURCE, HAVE_FSYNC): Don't define. + +2002-11-18 Markus Rost + + * s/sol2-8.h: Include sol2-6.h. + +2002-11-18 Miles Bader + + * dispextern.h (struct face): Add `overstrike' field. + * xterm.c (x_draw_glyph_string_foreground) + (x_draw_composite_glyph_string_foreground): Implement overstriking. + * xfaces.c (load_face_font): Set `face->overstrike' based on + result from choose_face_font. + (best_matching_font, choose_face_font): Add `needs_overstrike' + argument, and use it to return whether overstriking is desirable + for this face/font combo. + (set_font_frame_param): Pass new argument to choose_face_font. + +2002-11-17 Ben Key + + This change is my fix for the following entry in etc/PROBLEMS: + "Emacs built on Windows 9x/ME crashes at startup on Windows XP, + or Emacs builtpart of on XP crashes at startup on Windows 9x/ME." + + * w32.c: Added wrapper functions around the win32 API functions + OpenProcessToken, GetTokenInformation, LookupAccountSid, and + GetSidIdentifierAuthority. These wrapper functions serve two + purposes: + 1. They ensure that the wrapped function can never be called + when Emacs is running on an operating system on which they are + not supported (Microsoft Windows 95 / 98 / ME). + 2. They call the wrapped functions via function pointers rather + than calling them directly. This avoids taking advantage of the + undocumented fact that although these functions are not supported + in the 9x branch of Microsoft Windows, the functions do exist in + the version of advapi32.dll that is found in the 9x branch of + Microsoft Windows. + + * w32.c (init_user_info): Replace the calls to the win32 API + functions OpenProcessToken, GetTokenInformation, LookupAccountSid, + and GetSidIdentifierAuthority with calls to the newly added + wrapper functions. + + * w32.h: Added extern declarations for the following functions: + syms_of_w32term, syms_of_w32fns, syms_of_w32select, + syms_of_w32menu, and void syms_of_fontset. + + * w32fns.c (w32_wnd_proc): Add code to reinitialize the + function pointer track_mouse_event_fn in the handler for the + WM_SETFOCUS message. + + * w32menu.c (initialize_frame_menubar): Add code to + reinitialize the function pointers set_menu_item_info and + get_menu_item_info. + +2002-11-17 Ben Key + + * sound.c: Added a partial implementation of play-sound-internal + for Microsoft Windows. Added various #ifdef / #else / #endif + code blocks to separate the code that will compile under + Microsoft Windows from the code that is specific to GNU/Linux. + Moved several blocks of code around to make this separation of code + into Windows compatible and GNU/Linux compatible code blocks easier. + + * makefile.w32-in: Include sound.c and link with WinMM.lib. + + * s/ms-w32.h: Defined the symbol HAVE_SOUND so that the newly + added support for play-sound-internal under Windows would be + included in the build of Emacs. + +2002-11-16 Jason Rumney + + * w32fns.c (w32_load_system_font): Don't disable Cleartype. + + * w32term.c (w32_get_glyph_string_clip_rect): Clip cursor tightly. + +2002-11-15 Stefan Monnier + + * keyboard.c (command_loop_1): Fix int/Lisp_Object mixup. + (adjust_point_for_property): Move out of display and invisible even if + we were already inside before (in case a property was added while + we weren't looking). Be more careful when handling invisible props. + Skip invisible text as if it really wasn't there at all. + +2002-11-15 Jason Rumney + + * w32term.c (x_draw_image_foreground) + (w32_draw_image_foreground_1): Use standard copy and invert + operations to draw images. + + * w32fns.c (x_create_x_image_and_pixmap): Fill in palette for + depth of 1. + (xbm_read_bitmap_data): Invert bits as xbm is read in. + (XPutPixel): Don't invert bits here. + +2002-11-15 Jason Rumney + + * w32term.c (x_draw_image_foreground, x_draw_image_glyph_string) + (w32_draw_image_foreground_1): Handle image masks. + (x_draw_image_glyph_string): Don't BitBlt transparently. + + * w32fns.c (w32_defined_color): Adjust RGB values for Emacs. + (x_from_xcolors): Adjust RGB values for W32. + (image_background, image_background_transparent) + (postprocess_image, x_to_xcolors, x_disable_image) + (x_build_heuristic_mask): Adapt for W32 and enable. + (x_create_x_image_and_pixmap): Mark images with palettes as such. + (xbm_load): Remove unused variable. + +2002-11-14 Richard M. Stallman + + * buffer.c (syms_of_buffer): Doc fix. + +2002-11-14 Dave Love + + * alloc.c (SETJMP_WILL_NOT_WORK): Add note. + + * xterm.c (x_draw_relief_rect, x_draw_box_rect, x_update_cursor): + * xmenu.c (unuse_menu_items, digest_single_submenu): + * xfns.c (x_put_x_image): + * xdisp.c (message2_nolog, set_message): + * undo.c (record_point): + * terminfo.c (tparam): + * syntax.c (scan_sexps_forward): + * scroll.c (calculate_scrolling, calculate_direct_scrolling): + * composite.c (update_compositions): + * cm.c (calccost, cmgoto): + * charset.c (c_string_width): Declare all args (per C99). + + * frame.h (get_specified_cursor_type, get_window_cursor_type): Declare. + + * lisp.h (get_specified_cursor_type, get_window_cursor_type): + Don't declare. + + * emacs.c (main) [!VMS]: Avoid third arg. + + * fns.c (Fcopy_sequence): Doc fix. + (Fmap_char_table): Cast `call2'. + +2002-11-14 Francesco Potort,Al(B + + * s/sol2-8.h: New file. + +2002-11-14 Kim F. Storm + + * buffer.c (syms_of_buffer) : Document symbol + dependency on `risky-local-variable' and the :propertize form. + +2002-11-12 Stefan Monnier + + * fns.c (Fmap_char_table): Don't use map_char_table's function arg. + + * syntax.c (scan_sexps_forward): Undo last patch. + Use a more obvious fix: check eob before updating the syntax table. + +2002-11-09 Stefan Monnier + + * syntax.c (scan_sexps_forward): Update syntax table before reading + a char rather than after so we don't update the table past eob. + +2002-11-09 Dave Love + + * buffer.c (Fset_buffer_major_mode): Fix last change. + + * regex.c (regexec): Fix pmatch declaration. + + * cmds.c (Fself_insert_command): Apply Vtranslation_table_for_input. + + * keyboard.c (command_loop_1): Apply Vtranslation_table_for_input + to self-inserting characters. + (syms_of_keyboard) : Doc fix. + + * coding.c (Vtranslation_table_for_input): New. + (syms_of_coding): DEFVAR it. + +2002-11-08 Juanma Barranquero + + * w32term.c (w32_draw_fringe_bitmap): Remove unused local variable + window. + +2002-11-08 Pavel Jan,Am(Bk + + * process.c (Fformat_network_address): Remove unused locals p, + cp, and i. + +2002-11-06 Dave Love + + * buffer.c (Qset_buffer_major_mode_hook): New. + (Fset_buffer_major_mode): Use it. + +2002-11-06 Richard M. Stallman + + * xterm.c (x_term_init): Use turn_on_atimers, not start_polling + and stop_polling. + + * process.c (wait_reading_process_input): + Test POLLING_PROBLEM_IN_SELECT, not hpux. + Avoid initialization for auto Lisp_Object var. + + * s/hpux11.h (POLLING_PROBLEM_IN_SELECT): Add #undef. + + * s/hpux10.h (POLLING_PROBLEM_IN_SELECT): Defined. + +2002-11-05 Richard M. Stallman + + * s/sol2-5.h (BROKEN_SIGIO): Turn off the #undef. + + * callint.c (Fcall_interactively): New local filter_specs. + (Fcall_interactively): Check for progn as well as let. + Add a gcpro. + (Qprogn): New variable. + (syms_of_callint): Staticpro and init Qprogn. + +2002-11-04 John Paul Wallington + + * lread.c (Feval_buffer): Doc fix. + +2002-11-04 Dave Love + + * keyboard.c (read_char): Always translate iff + Vkeyboard_translate_table is a char table and c is valid. + + * xterm.c (XTread_socket): Check Lisp types for Vx_keysym_table + and fix C types. + +2002-11-03 Stefan Monnier + + * xdisp.c (single_display_prop_intangible_p): Strings are intangible. + + * editfns.c (get_pos_property): Don't hardcode Qfield. + + * keyboard.c (adjust_point_for_property): Handle `display' prop on + overlays. Also handle `invisible' prop. + +2002-11-02 Stefan Monnier + + * coding.c (decode_coding_emacs_mule, decode_coding_iso2022) + (decode_coding_sjis_big5, decode_eol): Allow lone \r in DOS EOL. + +2002-11-01 Andreas Schwab + + * editfns.c (Fmessage): Revert last change to properly handle %%. + +2002-11-01 Stefan Monnier + + * xmenu.c (unuse_menu_items): New fun. + (menu_items_inuse): New var. + (syms_of_xmenu): Initialize it. + (init_menu_items): Use it to detect re-entrance. + (Fx_popup_menu, Fx_popup_dialog, set_frame_menubar): Reset when done. + (Fx_popup_menu): Remove spurious XSETFRAME. + + * editfns.c (find_field): Make an exception for nil fields. + +2002-11-01 Dave Love + + * m/gec63.h: Deleted. + +2002-10-31 Dave Love + + * xterm.c (XTread_socket): Fix last change. + (xaw_scroll_callback): Cast call_data to long to avoid warning. + +2002-10-31 Stefan Monnier + + * process.c (Fformat_network_address): Fix int/Lisp_Object mixup. + +2002-10-30 Stefan Monnier + + * editfns.c (overlays_around, get_pos_property): New funs. + (find_field): Use them. + Also be careful not to modify POS before its last use. + (Fmessage): Don't Fformat if there's nothing to format. + +2002-10-30 Dave Love + + * process.c [HAVE_SYS_WAIT]: Include sys/wait.h. + [HAVE_PTY_H]; Include pty.h. + + * lread.c (Fload) : Close fd. + + * xterm.c (Qeql): Declare. + (Vx_keysym_table): New. + (syms_of_xterm): Initialize it. + (XTread_socket): Use it. Deal with ASCII keysyms. + (XSetIMValues) [HAVE_X11R6]: Prototype. + + * keyboard.c (lispy_accent_codes, lispy_accent_keys): Extended. + (lispy_kana_keys): Comment out. + (make_lispy_event) [XK_kana_A]: Comment out. + (modify_event_symbol) : + Fix sprintf call. + + * s/osf5-0.h (C_SWITCH_SYSTEM): Revert last change (fixed by + regexp.h change). + (TERMINFO, LIBS_TERMCAP): Define. + + * s/usg5-4.h (bcopy, bzero): Define conditional on HAVE_BCOPY. + (bcmp): Define conditional on HAVE_BCMP. + (NO_SIOCTL_H): Don't define. + (TIOCSIGSEND): Don't make conditional on IRIX6. + + * s/sol2-5.h: Don't include strings.h. + (bcopy, bzero, bcmp) [HAVE_BCOPY]: Don't undef. + + * s/irix6-0.h (IRIX6): Don't define. + (bcopy, bcmp, bzero): Don't undef. + + * s/irix6-5.h: Don't include strings.h. + (IRIX6): Don't define. + (bcopy, bcmp, bzero): Don't undef. + + * syntax.c (Fforward_comment): Doc fix. + +2002-10-29 Kim F. Storm + + * process.c (Fsignal_process): Allow PROCESS to be specified by + name in addition to pid (as integer or string). + +2002-10-28 Harald Maier (tiny change) + + * w32heap.c: Don't redefine _heap_init and _heap_term on MSVC 7 build + environments. + +2002-10-27 Kim F. Storm + + * xterm.c (note_mouse_highlight): Don't use mouse-face if hidden. + + * w32term.c (note_mouse_highlight): Don't use mouse-face if hidden. + + * msdos.c (IT_note_mouse_highlight): Don't use mouse-face if hidden. + + * macterm.c (note_mouse_highlight): Don't use mouse-face if hidden. + +2002-10-26 Richard M. Stallman + + * editfns.c (Fformat): Detect invalid format letters for floats. + +2002-10-25 Kenichi Handa + + * xfns.c (x_set_name): Encode by Qcompound_text unconditionally. + (x_set_title): Likewise. + +2002-10-25 Juanma Barranquero + + * macgui.h: + * w32gui.h: Remove definition of XColor. + + * dispextern.h [!HAVE_X_WINDOWS]: Define XColor. + +2002-10-24 Kim F. Storm + + * xdisp.c (get_window_cursor_type): New arg ACTIVE_CURSOR. + Callers changed (supply dummy arg). + + * lisp.h (get_window_cursor_type): Update prototype. + + * w32term.c (x_display_and_set_cursor): Get active_cursor from + get_window_cursor_type to track system caret. + +2002-10-24 Kim F. Storm + + * process.c (Fformat_network_address): New function. + (syms_of_process): Defsubr it. + (list_processes_1): Use it to format :local/:remote address if + service/host is not set; before Emacs would crash in that case. + (Fmake_network_process): Don't use Ffind_operation_coding_system + to setup coding system if host or service is not set. + +2002-10-23 Juanma Barranquero + + Patch suggested by Jay Finger . + + * w32term.c (w32_term_init): Pass XColor to w32_define_color, not + COLORREF. + + * macgui.h: + * w32gui.h: Add definition of XColor. + + * macfns.c: + * w32fns.c: + * xfaces.c: Remove definition of XColor. + +2002-10-22 Stefan Monnier + + * xfns.c (x_set_name, x_set_title): `icon.value' has unsigned char. + + * window.c (window_loop): For GET_LRU_WINDOW and GET_LARGEST_WINDOW>, + Only ignore truly dedicated windows. For UNSHOW_BUFFER, delete the + window if it is dedicated. + (Fshrink_window): Add preserve_before as was done for enlarge_window. + (Vspecial_display_function): Update docstring. + + * buffer.c (assoc_ignore_text_properties, Fother_buffer, Fkill_buffer) + (call_overlay_mod_hooks): Use CONSP and XCAR/XCDR. + (Fget_buffer_create, advance_to_char_boundary): Use BEG and BEG_BYTE. + +2002-10-21 Stefan Monnier + + * casefiddle.c (casify_region): Don't treat a prefix char as part + of a word when at the beginning. + +2002-10-17 Juanma Barranquero + + * lread.c (syms_of_lread): Fix typos. + +2002-10-17 Dave Love + + * Makefile.in (TEMACS_LDFLAGS): Add trailing comment. + +2002-10-16 Richard M. Stallman + + * fileio.c (Fcopy_file): Fix backward test of KEEP_TIME. + +2002-10-14 Juanma Barranquero + + * w16select.c (syms_of_win16select): Fix docstring for + `selection-coding-system'. + + * w32select.c (syms_of_w32select): Likewise. + +2002-10-14 Stefan Monnier + + * syntax.c (scan_lists): Don't get fooled by a symbol ending with + a backslash-quoted char. + (scan_lists, scan_sexps_forward): Pacify the compiler. + +2002-10-13 Richard M. Stallman + + * window.c (window_scroll): Set immediate_quit. + + * print.c (print): When backquote form is the car of a list, + output in old style. Use old_backquote_output to output all + comma forms inside it in old style too. + + * buffer.h (struct buffer): Move `undo_list' down below `name'. + +2002-10-11 Markus Rost + + * emacs.c (syms_of_emacs) : Doc fix (not run in + batch mode). + + * lread.c (Fload): Doc fix (load-suffixes). + +2002-10-10 Steven Tamm + + * macterm.c (syms_of_macterm, mac_get_mouse_btn): + Reverse functionality of mac-wheel-button-is-mouse-2 to be correct. + Also switch the default to Qnil from Qt. + +2002-10-08 Kenichi Handa + + * coding.c (code_convert_region): When we need more GAP for + conversion, pay attention to the case that coding->produced is not + greater than coding->consumed. + +2002-10-07 Richard M. Stallman + + * unexelf.c (unexec): Redo 9/16 change, but only if IRIX6_5. + +2002-10-06 Andrew Choi + + * macmenu.c (mac_menu_show): Add j to count menu items; match + menu_item_selection to it to find selected item. + +2002-10-06 Jan Dj,Ad(Brv + + * xterm.c (XTread_socket): Fix from 2002-10-03 didn't cover all + cases. The correct fix is to pass ReparentNotify to Xt. + The shell widget interprets ConfigureNotify differently depending + on if it has been reparented or not. + +2002-10-05 Markus Rost + + * editfns.c (Fformat_time_string): Doc fix. + +2002-10-05 John Paul Wallington + + * fns.c (Flength): Doc fix. + +2002-10-04 Stefan Monnier + + * keyboard.c (keyremap): New struct. + (read_key_sequence): Use it: globally replace keytran_foo with + keytran.foo and fkey_foo with fkey.foo. Rename temp vars + keytran_next and fkey_next to just `next'. + +2002-10-04 Steven Tamm + + * macterm.c (keycode_to_xkeysym_table): Change return to be + treated like an X keysym. + +2002-10-03 Jan Dj,Ad(Brv + + * xterm.c (XTread_socket): For ConfigureNotify, with x and y == 0, + and USE_MOTIF, call XTranslateCoordinates to get the real x and y. + This is to also handle x/y changes that occur because of a resize. + +2002-10-02 John Paul Wallington + + * frame.c (Vdelete_frame_functions): New variable. + (syms_of_frame): Initialize and defvar it. + (Fdelete_frame): Use it instead of delete-frame-hook. Don't run + it when frame's `tooltip' parameter is non-nil. + + * xfns.c (x_create_tip_frame): Set `tooltip' frame parameter to t. + + * w32fns.c (x_create_tip_frame): Likewise. + + * macfns.c (x_create_tip_frame): Likewise. + +2002-09-30 Kenichi Handa + + * xterm.c (x_encode_char): For DIM=1 charset, set ccl->reg[2] to + -1 before calling ccl_driver. + + * coding.c (decode_coding_emacs_mule): Check coding->cmp_data. + Only when it is non-nil, handle composition sequence. + (setup_coding_system) <0>: Don't force composition handling. + + * Makefile.in (lisp, shortlisp): Add utf-16.elc. + +2002-09-29 Richard M. Stallman + + * search.c (Freplace_match): Adjust match data for the substitution + just made in the buffer. + + * xdisp.c (STOP_POLLING, RESUME_POLLING): New macros. + (redisplay_internal): Use them. Do RESUME_POLLING at end of function. + +2002-09-27 Richard M. Stallman + + * keyboard.c (STOP_POLLING, RESUME_POLLING): New macros. + (read_char): Use them. Do all exits thru the end of the function. + +2002-09-27 Kenichi Handa + + * xfaces.c (try_font_list): Pay attention to the case that FAMILY + is nil. + +2002-09-26 Richard M. Stallman + + * regex.h (__restrict_arr): Don't define if already defined. + + * coding.c (run_pre_post_conversion_on_str): + Save and restore Vdeactivate_mark. + +2002-09-26 John Paul Wallington + + * minibuf.c (Fminibufferp): Add an optional `buffer' argument. + +2002-09-26 Kenichi Handa + + * xfaces.c (try_font_list): New arg PREFER_FACE_FAMILY. If it is + nonzero, try face's family at first. Otherwise try FAMILY at first. + (choose_face_font): If C is a single byte char or latin-1, call + try_font_list with PREFER_FACE_FAMILY 1. + +2002-09-21 Richard M. Stallman + + * window.c (select_window_1): Don't select frame. + Set frame's selected window only when frame itself is selected. + (Fselect_window): Doc fix. + +2002-09-18 Kim F. Storm + + * process.c (make-network-process): Doc fix (there is no + network-server-log-function hook). + +2002-09-18 Richard M. Stallman + + * print.c (print): Clear out the unused parts of Vprint_number_table. + (syms_of_print): Doc fix for `print-number-table'. + + * unexelf.c (unexec): Undo previous change. + +2002-09-17 Andreas Schwab + + * m/alpha.h [LINUX]: Don't define DATA_START. + +2002-09-16 Dave Love + + * unexelf.c (unexec): Deal with .got, reinstating change from + 25-08-1999. + +2002-09-13 Richard M. Stallman + + * s/sol2-6.h (UNEXEC): Comment out definition. + + * unexsol.c (unexec): Don't downcase first letter of error msg. + + * xfaces.c (Fcolor_supported_p): Just one arg is required. + +2002-09-12 Markus Rost + + * unexsol.c: Include buffer.h, charset.h, coding.h. + +2002-09-11 Richard M. Stallman + + * unexsol.c: Don't use report_file_error; do it by hand + using dlerror. + + * process.c (wait_reading_process_input, both versions): + Before calling turn_on_atimers, call stop_polling. + + * emacs.c (syms_of_emacs) : Doc fix. + + * xdisp.c (try_scrolling): If after make_cursor_line_fully_visible + we go to too_near_end, call clear_glyph_matrix. + (redisplay_window): After make_cursor_line_fully_visible, + call clear_glyph_matrix and bypass `goto done'. + + * xfns.c (x_report_frame_params): If FRAME_SCROLL_BAR_PIXEL_WIDTH is 0 + and we have non-toolkit scroll bars, return nil for scroll-bar-width. + +2002-09-10 Richard M. Stallman + + * fileio.c (Fdo_auto_save): Catch error making directory. + Only call push_message if we need to. + At the same time, make an unwind-protect to pop it. + Rename local message_p to old_message_p. + (do_auto_save_make_dir, do_auto_save_eh): New functions. + (do_auto_save_unwind): Don't call pop_message. + + * lisp.h (pop_message_unwind): Renamed from push_message_unwind. + + * keyboard.c (Fexecute_extended_command): Use pop_message_unwind. + + * alloc.c (Fgarbage_collect): Use pop_message_unwind. + + * xdisp.c (pop_message_unwind): Renamed from push_message_unwind. + +2002-09-10 Stefan Monnier + + * regex.c (DISCARD_FAILURE_REG_OR_COUNT): Delete. + (CHECK_INFINITE_LOOP): Don't pop anything: just set `cycle' to 1. + (re_match_2_internal): Be more careful with infinite loops. + +2002-09-10 Kim F. Storm + + * macros.c (end_kbd_macro): New function. + (Fend_kbd_macro): Use it. + + * macros.h (end_kbd_macro): Declare extern. + + * keyboard.c (Fdiscard_input): If defining keyboard macro, + end and save it instead of discarding it. + +2002-09-09 Markus Rost + + * s/sol2-6.h: Fix typo. Add comment. + +2002-09-09 Richard M. Stallman + + * regex.c (regnum_t): Use signed int, not unsigned int. + + * s/sol2-6.h: New file. + + * s/sol2-5.h (UNEXEC): Definition deleted. + +2002-09-08 Kim F. Storm + + * macros.c (executing_macro_index): Change type to EMACS_INT. + (syms_of_macros): DEFVAR_INT it (needed by kmacro). + + * macros.h (executing_macro_index): Change type to EMACS_INT. + +2002-09-06 Richard M. Stallman + + * casetab.c (set_case_table): Make canon table point to eqv table. + +2002-09-06 Juanma Barranquero + + * coding.c (syms_of_coding): Fix spacing. + + * composite.c (Fcompose_region_internal) + (Fcompose_string_internal): Likewise. + + * data.c (Flsh): Likewise. + + * fontset.c (Fset_fontset_font): Likewise. + + * macfns.c (Fx_server_max_request_size): Likewise. + + * w16select.c (syms_of_win16select): Likewise. + + * w32select.c (syms_of_w32select): Likewise. + + * xselect.c (syms_of_xselect): Likewise. + +2002-09-05 Richard M. Stallman + + * regex.c (set_image_of_range_1): In no-TRANSLATE case, + call EXTEND_RANGE_TABLE and return a proper value. + (set_image_of_range): Don't call set_image_of_range_1 + if no TRANSLATE or if range includes all of Latin-1. + Only call it for the Latin-1 part of the range. + For other cases, make two separate ranges, + one for the original specified characters and one for + their case-conversions. + +2002-09-04 Richard M. Stallman + + * s/sol2-5.h (UNEXEC): Use unexsol.o. + + * window.c (displayed_window_lines): Correct for one-off bug + in HEIGHT on non-window displays. + + * regex.c (set_image_of_range_1): New function. + (set_image_of_range): Use set_image_of_range_1 for Latin-1. + Return a value to indicate running out of memory. + (SET_RANGE_TABLE_WORK_AREA): Check value from set_image_of_range. + (extend_range_table_work_area): New subroutine. + (EXTEND_RANGE_TABLE): Replaces EXTEND_RANGE_TABLE_WORK_AREA. + Different calling conventions, and used from set_image_of_range{,_1}. + (IMMEDIATE_QUIT_CHECK): Definitions moved. + +2002-09-04 Juanma Barranquero + + * makefile.w32-in: All dependencies updated. + +2002-09-01 Richard M. Stallman + + * unexsol.c: New file. + + * xfns.c (Qbox): Declare external, don't define. + + * xdisp.c (redisplay_window) : + If point is on semi-visible last line, reposition + it at previous line. + + * alloc.c (display_malloc_warning): Use display-warning. + (malloc_warning_1): Function deleted. + + * alloc.c [ALLOC_DEBUG]: #undef INLINE. + + * lread.c (read1): Handle #! by skipping the line. + +2002-08-31 Richard M. Stallman + + * Makefile.in (TEMACS_LDFLAGS): Renamed from ALL_LDFLAGS. + Don't include LDFLAGS. + (temacs): Pass LDFLAGS separately, and not via YMF_PASS_LDFLAGS. + +2002-08-31 Eli Zaretskii + + * xdisp.c (get_window_cursor_type): Don't use x_highlight_frame + member of x_display_info unless we compile for some window system. + +2002-08-31 Kim F. Storm + + * xdisp.c (Valternate_cursor_type, Qalternate_cursor_type): Removed. + (get_window_cursor_type): Don't use them. + (syms_of_xdisp): Remove intern, staticpro, and defvar for them. + +2002-08-30 Kenichi Handa + + * xdisp.c (get_next_display_element): Fix previous change. + +2002-08-30 Andrew Choi + + * macterm.c (expose_overlaps): New function (merge code from xterm.c). + (expose_window): Use it to fix the display of overlapping + rows (merge code from xterm.c). + + * macfns.c (Qbox): Add extern declaration. + +2002-08-30 Juanma Barranquero + + * w32fns.c (Qbox): Make extern. + (syms_of_w32fns): Remove initialization of Qbox. + +2002-08-30 Rune Kleveland (tiny change) + + * xfns.c (Fx_open_connection): Fix error message. + +2002-08-30 Kim F. Storm + + The following changes consolidates the handling of the cursor + type in xdisp.c, moving duplicate code and functionality from + xfns.c, xterm.c, w32fns.c, w32term.c, macfns.c, and macterm.c. + + * frame.h (enum text_cursor_kinds): Consolidated here. + Added DEFAULT_CURSOR value. + (struct frame) + : New fields. + Consolidated from output_x, output_w32 and output_mac structs. + (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR) + (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros consolidated here. + + * xdisp.c (Qbar, Qhbar, Qbox, Qhollow, Vblink_cursor_alist): + Variables consolidated here. + (Valternate_cursor_type, Qalternate_cursor_type): New variables. + (Vcursor_in_non_selected_windows): Renamed from + cursor_in_non_selected_windows and changed to Lisp_Object. + (syms_of_xdisp): Define and staticpro new and moved variables. + (get_specified_cursor_type): Renamed from x_specified_cursor_type; + consolidated here. Recognize Qhollow setting. + (set_frame_cursor_types): New function to set frame cursor types + based on the frame parameters. + (get_window_cursor_type): New function to calculate new cursor + type and width for the specified window. Based on duplicated + code consolidated here. + Enhancements: cursor-in-non-selected-windows may be a cursor type, + check buffer-local alternate-cursor-type and blink-cursor-alist + before using built-in blink off methods. + + * dispextern.h (cursor_in_non_selected_windows): Extern removed. + + * lisp.h (Qcursor_in_non_selected_windows): Extern removed. + (get_specified_cursor_type, get_window_cursor_type) + (set_frame_cursor_types): Added prototypes. + + * macfns.c (x_specified_cursor_type): Removed. + (x_set_cursor_type): Use set_frame_cursor_types. + (Qbar, Qbox): Removed. + (syms_of_macfns): Don't intern or staticpro them. + + * macterm.c (x_specified_cursor_type): Remove prototype. + (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH. + (x_display_and_set_cursor): Use get_window_cursor_type. + Remove unused local variables cursor_non_selected, active_cursor. + Redraw cursor if hbar cursor width changes. + (make_mac_frame): Set FRAME_DESIRED_CURSOR. + + * macterm.h (enum text_cursor_kinds): Removed. + (struct output_mac) + : Members removed. + (FRAME_DESIRED_CURSOR): Macro removed. + + * w32fns.c (Vblink_cursor_alist): Removed. + (Qbar, Qhbar, Qbox, Qhollow): Removed. + (syms_of_w32fns): Don't intern, staticpro, or define them. + (x_specified_cursor_type): Removed. + (x_set_cursor_type): Use set_frame_cursor_types. + + * w32term.c (x_specified_cursor_type): Remove prototype. + (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH. + (x_display_and_set_cursor): Use get_window_cursor_type. + Remove unused local variables cursor_off_state. + Redraw cursor if hbar cursor width changes. + Changed all occurrences of w32_highlight_frame to x_highlight_frame. + + * w32term.h (enum text_cursor_kinds): Removed. + (struct output_w32) + : Members removed. + (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR) + (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros removed. + (struct w32_display_info) : Renamed member from + w32_highlight_frame. + + * xfns.c (Vblink_cursor_alist): Removed. + (Qbar, Qhbar, Qbox, Qhollow): Removed. + (syms_of_xfns): Don't intern, staticpro, or define them. + (x_specified_cursor_type): Removed. + (x_set_cursor_type): Use set_frame_cursor_types. + + * xterm.c (x_specified_cursor_type): Remove prototype. + (x_draw_bar_cursor): Use FRAME_CURSOR_WIDTH. + (x_display_and_set_cursor): Use get_window_cursor_type. + Remove unused local variables cursor_off_state. + Redraw cursor if hbar cursor width changes. + + * xterm.h (enum text_cursor_kinds): Removed. + (struct output_x) + : Members removed. + (FRAME_DESIRED_CURSOR, FRAME_CURSOR_WIDTH, FRAME_BLINK_OFF_CURSOR) + (FRAME_BLINK_OFF_CURSOR_WIDTH): Macros removed. + (x_specified_cursor_type): Remove prototype. + +2002-08-28 Richard M. Stallman + + * w32fns.c (x_set_cursor_type): Set FRAME_BLINK_OFF_CURSOR and + FRAME_BLINK_OFF_CURSOR_WIDTH using defaults and Vblink_cursor_alist. + (Vblink_cursor_alist): New variable. + (syms_of_w32fns): Initialize and defvar it. + (x_specified_cursor_type): Recognize Qbox for filled box. + Exceptions are hollow boxes. + (Qbox, Qhollow): New variables. + (syms_of_w32fns): Initialize and staticpro them. + + * w32term.h (FRAME_BLINK_OFF_CURSOR, FRAME_BLINK_OFF_CURSOR_WIDTH): + New macros. + (struct w32_output): New fields blink_off_cursor, + blink_off_cursor_width. + (FRAME_CURSOR_WIDTH): New macro. + + * w32term.c (x_display_and_set_cursor): Use FRAME_BLINK_OFF_CURSOR + and FRAME_BLINK_OFF_CURSOR_WIDTH for blinking cursor off. + + * w32term.c (x_display_and_set_cursor): Check FRAME_CURSOR_WIDTH + for bar cursor. + + * w32term.c (expose_overlaps): New function. + (expose_window): Use it to fix the display of overlapping rows. + +2002-08-28 Simon Josefsson + + * xfns.c (Fx_open_connection): Improve help when X connection + fails, xhost is insecure and xauth is better. + +2002-08-28 Juanma Barranquero + + * makefile.w32-in: Add missing dependencies on w32term.h and + composite.h. + + * emacs.c (USAGE1): Add missing newline. + +2002-08-27 Andrew Choi + + * s/darwin.h [HAVE_LIBNCURSES]: Define HAVE_TERMINFO. + +2002-08-27 Richard M. Stallman + + * xfns.c (x_set_cursor_type): Set FRAME_BLINK_OFF_CURSOR and + FRAME_BLINK_OFF_CURSOR_WIDTH using defaults and Vblink_cursor_alist. + (Vblink_cursor_alist): New variable. + (syms_of_xfns): Initialize and defvar it. + (x_specified_cursor_type): Recognize Qbox for filled box. + Exceptions are hollow boxes. + (Qbox, Qhollow): New variables. + (syms_of_xfns): Initialize and staticpro them. + + * xterm.h (FRAME_BLINK_OFF_CURSOR, FRAME_BLINK_OFF_CURSOR_WIDTH): + New macros. + (struct x_output): New fields blink_off_cursor, blink_off_cursor_width. + + * xterm.c (x_display_and_set_cursor): Use FRAME_BLINK_OFF_CURSOR + and FRAME_BLINK_OFF_CURSOR_WIDTH for blinking cursor off. + + * emacs.c (main): Handle --script. + (USAGE1): Mention --script. + (standard_args): Define sort order for --script. + +2002-08-27 Gerd Moellmann + + * xdisp.c (redisplay_updating_p): Variable removed. + (inhibit_free_realized_faces, Qinhibit_free_realized_faces): + New variables. + (init_iterator): Don't free realized faces if + inhibit_free_realized_faces is set. + (redisplay_internal): Bind Qinhibit_free_realized_faces to nil. + (syms_of_xdisp): DEFVAR_BOOL inhibit-free-realized-faces, + initialize Qinhibit_free_realized_faces. + + * dispextern.h (PRODUCE_GLYPHS): Set inhibit_free_realized_faces + when iterator is adding glyphs to a glyph matrix. + +2002-08-27 Kenichi Handa + + * xdisp.c (get_next_display_element): In unibyte case, don't use + octal form for such eight-bit characters that can be converted to + multibyte char. + +2002-08-26 Kim F. Storm + + * frame.c (make_terminal_frame) [CANNOT_DUMP]: Initialize + foreground and background colors. From Joe Buehler. + +2002-08-26 Miles Bader + + * bytecode.c (Fbyte_code): Fsub1 can GC, so protect it. + +2002-08-25 Andrew Choi + + * emacs.c (main): Call init_mac_osx_environment if HAVE_CARBON is + defined instead of MAC_OSX. + + * s/darwin.h (select): Define select to sys_select only if + HAVE_CARBON is defined. + (HAVE_WORKING_VFORK): #undef it. Define vfork to fork. + (DONT_REOPEN_PTY): #def it. + + * macterm.c (XTread_socket): Remove code to call + SendEventToEventTarget for keys with command modifiers when + mac_command_key_is_meta is nil. + +2002-08-24 Andreas Schwab + + * eval.c (Fdefvar): Fix last change. + +2002-08-23 Richard M. Stallman + + * eval.c (Fdefvar, Fdefconst, Fdefvaralias): + Record variables in load history as (defvar . VAR). + (Fdefvar): Don't record in load history if no initial value. + (Qdefvar): New variable. + (syms_of_eval): Init and staticpro it. + + * lread.c (syms_of_lread): Doc fix. + (build_load_history): Use Fmember to see if a definition + is already in the Vload_history element. + + * process.c (Fstart_process): Remove /: from program name. + + * emacs.c (decode_env_path): Don't add /: if file name handler + has a `safe-magic' property. + + * callproc.c (Fcall_process): Remove /: from program name. + +2002-08-23 Stefan Monnier + + * regex.c (PATFETCH): Remove the translating fetch. + (PATFETCH_RAW): Rename to PATFETCH. + (set_image_of_range): New fun. + (SET_RANGE_TABLE_WORK_AREA): Use it. + (regex_compile): Don't translate the pattern chars so eagerly. + Only do it when inserting an `exactn' bytecode or when handling + a char-range. + (mutually_exclusive_p): Avoid empty statement. + +2002-08-22 Kim F. Storm + + * xdisp.c (redisplay_window): Do not `goto try_to_scroll' when we + end up on a partially visible line; this reverts a specific part + of the 2002-07-07 change by Richard M. Stallman to "fix" a nasty + display error which has been reported several times now. + However it introduces the problem that changes was supposed to fix. + See my comments in the source if you want to debug this further. + +2002-08-20 Kenichi Handa + + * abbrev.c (Fexpand_abbrev): Fix for the multibyte case. + +2002-08-19 Eli Zaretskii + + * msdos.c (croak): Add `void' to definition. + + * sysdep.c (request_sigio, unrequest_sigio) [MSDOS]: + Don't define them, they are defined in msdos.c. + + * mem-limits.h [MSDOS]: Declare etext. + + * fileio.c (Ffile_name_directory) [DOS_NT]: Don't declare `beg' + `const' since CORRECT_DIR_SEPS modifies its target. + +2002-08-19 Kim F. Storm + + * keyboard.c (Fclear_this_command_keys): Add optional arg + KEEP-RECORD to avoid clearing lossage when we just want to clear + the current key sequence (kmacro needs this). + +2002-08-19 Kenichi Handa + + * composite.c (run_composition_function): Call FUNC if it is fboundp. + + * composite.h (COMPOSITION_MODIFICATION_FUNC): If PROP is not a + cons, return Qnil. + +2002-08-17 Richard M. Stallman + + * s/sol2-5.h (BROKEN_SIGIO): Add #undef. + + * sysdep.c [!VMS]: Include sys/files.h. + + * editfns.c (save_restriction_restore): Defend from unchained marker. + + * buffer.c (overlays_at): Handle extending vec uniformly. + (overlays_in): Handle extending vec from length 0 as in overlays_at. + +2002-08-15 Andrew Choi + + * mac.c (init_mac_osx_environment): New function. + + * emacs.c (main) [MAC_OSX]: Call init_mac_osx_environment. + +2002-08-14 Kim F. Storm + + * macros.c (Fstart_kbd_macro): Added NO-EXEC argument to inhibit + executing macro before appending to it (when used from Lisp). + (Fexecute_kbd_macro): Added LOOPFUNC argument to supply function + which is called prior to each iteration of macro (for kmacro.el). + (Fend_kbd_macro, Fcall_last_kbd_macro): Likewise. + + * lisp.h (Fexecute_kbd_macro): Update prototype. + + * keyboard.c (Fcommand_execute): Update call to Fexecute_kbd_macro. + +2002-08-14 Kenichi Handa + + * xselect.c (QUTF8_STRING): New variable. + (symbol_to_x_atom): Pay attention to QUTF8_STRING. + (x_atom_to_symbol): Likewise. + (x_get_local_selection): New argument local_request. If it is + nonzero, call handler_fn with the second arg nil. + (x_handle_selection_request): Call x_get_local_selection with + local_request 0. + (lisp_data_to_selection_data): Don't encode the string here. + (Fx_get_selection_internal): Call x_get_local_selection with + local_request 1. + (syms_of_xselect): Intern and staticpro QUTF8_STRING. + + * xterm.c (x_term_init): Initialize dpyinfo->Xatom_UTF8_STRING. + + * xterm.h (struct x_display_info): New member Xatom_UTF8_STRING. + +2002-08-13 Richard M. Stallman + + * minibuf.c (Fminibufferp): New function. + (syms_of_minibuf): Defsubr it. + (Fminibuffer_prompt_end): Handle non-minibuffers specially. + +2002-08-13 Gerd Moellmann + + * coding.c (Funencodable_char_position): Lisp_Object/int mixup. + +2002-08-12 Richard M. Stallman + + * syswait.h: Only the include of sys/wait.h tests HAVE_SYS_WAIT_H. + [!VMS] (WCOREDUMP, WEXITSTATUS, WIFEXITED, WIFSTOPPED, WIFSIGNALED) + (WSTOPSIG, WTERMSIG): Define each one independently if not defined + already. + + * buffer.c (syms_of_buffer) : Doc fix. + +2002-08-11 Andrew Choi + + * macterm.c (XTmouse_position): Check wp with is_emacs_window. + (Vmac_pass_command_to_system): New variable. + (Vmac_pass_control_to_system): New variable. + (do_mouse_moved): Check wp with is_emacs_window. + (XTread_socket): Check window_ptr with is_emacs_window. + Call FrontNonFloatingWindow instead of FrontWindow. Send keydown + events back to Mac Toolbox for processing, depending on values of + Vmac_pass_command_to_system and Vmac_pass_control_to_system. + (syms_of_macterm): DEFVAR_LISP Vmac_pass_command_to_system and + Vmac_pass_control_to_system. + +2002-08-10 Kenichi Handa + + * coding.c (unencodable_char_position): New function. + (Funencodable_char_position): New function. + (syms_of_coding): Defsubr Funencodable_char_position. + +2002-08-10 Andrew Choi + + * mac.c (sys_select) [MAC_OSX]: New function. + + * macterm.c (MakeMeTheFrontProcess): New function. + (mac_initialize): Call MakeMeTheFrontProcess. + + * s/darwin.h: Define select to sys_select. + +2002-08-09 Richard M. Stallman + + * keyboard.c (make_lispy_event): Test WINDOWSNT, not WINDOWS_NT. + +2002-08-09 Gerd Moellmann + + * xdisp.c (forward_to_next_line_start): Return 0 when reaching the + end of the buffer. + +2002-08-08 Ken Raeburn + + * coding.c (Ffind_operation_coding_system): Fix Lisp_Object/int mixup. + + * puresize.h (BASE_PURESIZE): Increase to 910000. + +2002-08-08 Kenichi Handa + + * coding.c (Ffind_operation_coding_system): For write-region, if + VISIT is a filename, make it the target. + +2002-08-07 Richard M. Stallman + + * alloc.c (mark_object): Detect long lists for debugging. + (mark_object_loop_halt): New variable. + + * s/hpux10.h (C_SWITCH_SYSTEM): #undef it. + + * data.c (Fmake_variable_frame_local): Doc fix. + +2002-08-01 David Ponce + + * w32menu.c (local_heap, local_alloc, local_free): New macros. + (malloc_widget_value, free_widget_value) + (w32_free_submenu_strings): Use them. + + (push_submenu_start, push_submenu_end, push_left_right_boundary) + (push_menu_pane, push_menu_item, single_keymap_panes) + (single_menu_item, Fx_popup_menu, menubar_selection_callback) + (single_submenu, set_frame_menubar) + (w32_menu_show, w32_dialog_show): Use AREF, ASET, ASIZE. + + (Fx_popup_menu): Don't show pop up menu until preceding one is + actually cleaned up. Moved UNGCPRO outside #ifdef HAVE_MENUS block. + + * w32menu.c: Changes adapted from xmenu.c + (set_frame_menubar): First parse all submenus, + then make widget_value trees from them. + Don't allocate any widget_value objects + until we are done with the parsing. + (parse_single_submenu): New function. + (digest_single_submenu): New function. + (single_submenu): Function deleted, replaced by those two. + +2002-08-04 Andrew Choi + + * macterm.c (XTread_socket): Check that FrontNonFloatingWindow + returns a valid window pointer before proceeding for keyDown and + autoKey events. + +2002-08-03 Andrew Choi + + * macterm.c (USE_CARBON_EVENTS): New macro. + (macCtrlKey, macShiftKey, macMetaKey, macAltKey): New macros. + (x_iconify_frame): Call CollapseWindow. + (Vmac_reverse_ctrl_meta): New variable. + (Vmac_wheel_button_is_mouse_2): New variable. + (init_mac_drag_n_drop): New function. + (mac_do_receive_drag): New function. + (mac_handle_service_event): New function. + (init_service_handler): New function. + (mac_to_emacs_modifiers): New function. + (mac_event_to_emacs_modifiers): New function. + (mac_get_mouse_btn): New function. + (mac_convert_event_ref): New function. + (XTread_socket) [USE_CARBON_EVENTS]: Call ReceiveNextEvent, + SendEventToEventTarget, mac_event_to_emacs_modifiers, and + mac_get_mouse_btn. + (mac_initialize): Call init_mac_drag_n_drop and init_service_handler. + + * keyboard.c: Define Qmouse_wheel, mouse_wheel_syms, and + lispy_mouse_wheel_names for MAC_OSX as well as for WINDOWS_NT. + (kbd_buffer_get_event): Set used_mouse_menu for MENU_BAR_EVENT and + TOOL_BAR_EVENT for MAC_OS as well. + (make_lispy_event): Handle MOUSE_WHEEL_EVENT for MAC_OSX as well + as for WINDOWS_NT. + (syms_of_keyboard): Initialize Qmouse_wheel for MAC_OSX. + + * termhooks.h (event_kind): Define MOUSE_WHEEL_EVENT also for MAC_OSX. + +2002-08-03 Gerd Moellmann + + * xdisp.c (forward_to_next_line_start): Fix a condition that + lead to a newline being skipped. + +2002-08-02 Andrew Choi + + * mac.c (syms_of_mac): Defsubr Sx_selection_exists_p. + +2002-08-01 Richard M. Stallman + + * Makefile.in (SOME_MACHINE_OBJECTS): Add fontset.o. + +2002-07-31 Andrew Choi + + * macfns.c: #undef init_process before #define-ing it. + + * s/darwin.h: Define MAC_OS, SYMS_SYSTEM, and OTHER_FILES only if + HAVE_CARBON is defined. + +2002-07-31 Richard M. Stallman + + * xmenu.c (set_frame_menubar): First parse all submenus, + then make widget_value trees from them. + Don't allocate any widget_value objects + until we are done with the parsing. + (parse_single_submenu): New function. + (digest_single_submenu): New function. + (single_submenu): Function deleted, replaced by those two. + +2002-07-30 Juanma Barranquero + + * w32proc.c (syms_of_ntproc): Fix docstring of + `w32-get-true-file-attributes'. + +2002-07-28 Richard M. Stallman + + * s/hpux8.h (HPUX8): Define this before including hpux.h. + (HAVE_SYS_WAIT_H): #define deleted; we let Autoconf decide. + + * s/hpux.h (HAVE_SYS_WAIT_H): The #undef is conditional on HPUX8. + + * keyboard.c (make_lispy_event): + Use #ifdef to test USE_TOOLKIT_SCROLL_BARS. + Explicitly clear up_modifier in event->modifiers. + +2002-07-27 Richard M. Stallman + + * xterm.h (FRAME_CURSOR_WIDTH): New macro. + + * xterm.c (x_display_and_set_cursor): Check FRAME_CURSOR_WIDTH + for bar cursor. + +2002-07-26 Kenichi Handa + + * coding.c (detect_coding_iso2022): While checking a byte sequence + for CODING_CATEGORY_MASK_ISO_8_2, if we read one extra byte, check + it in the normal loop. + +2002-07-24 Gerd Moellmann + + * xterm.c (expose_overlaps): New function. + (expose_window): Use it to fix the display of overlapping rows. + + * xdisp.c (unwind_redisplay): Clear redisplay_updating_p. + +2002-07-23 Ken Raeburn + + * lisp.h (XPNTR): Use NO_UNION_TYPE version for union as well, + since it only depends on XUINT. + + * m/alpha.h (BITS_PER_LONG, BITS_PER_EMACS_INT, EMACS_INT, + EMACS_UINT, SPECIAL_EMACS_INT, DATA_SEG_BITS, + PNTR_COMPARISON_TYPE, VALBITS, MARKBIT, XINT, XUINT, XPNTR): + Macros deleted. + + * mem-limits.h (start_of_data): If DATA_START is defined, prefer + its value over other approaches. + * sysdep.c (start_of_data): Don't define the function if a macro + form has been defined. + +2002-07-23 Gerd Moellmann + + * xdisp.c (redisplay_updating_p): New variable. + (init_iterator): Don't free realized faces when + redisplay_updating_p is set. + (redisplay_internal): Set redisplay_updating_p while updating + the display. + +2002-07-23 Richard M. Stallman + + * editfns.c (Fmessage): Treat "" like nil. + +2002-07-23 Kenichi Handa + + * xdisp.c (face_before_or_after_it_pos): + Call FETCH_MULTIBYTE_CHAR with byte postion, not char position. + +2002-07-22 Juanma Barranquero + + * callproc.c (init_callproc) [DOS_NT]: + Initialize Vshared_game_score_directory to nil. + (syms_of_callproc) [DOS_NT]: Likewise. + +2002-07-22 Gerd Moellmann + + * xdisp.c (display_line): Replace an abort with xassert. + +2002-07-21 Richard M. Stallman + + * xdisp.c (redisplay_window): Don't test BEG_UNCHANGED + and END_UNCHANGED when setting buffer_unchanged_p. + Use current_matrix_up_to_date_p to decide whether to use + try_cursor_movement. + + * config.in (HAVE_SHARED_GAME_DIR): Undef deleted. + + * epaths.in (PATH_GAME): New macro, edited by ../Makefile.in. + + * callproc.c (init_callproc): Set up Vshared_game_score_directory. + Set to nil if dir does not exist. + (syms_of_callproc): Init unconditionally and simply. + + * buffer.c (Fbuffer_list): Doc fix. + +2002-07-21 Ken Raeburn + + * sysdep.c (end_of_text, end_of_data): Unused functions deleted. + + * buffer.c (mmap_realloc): When shrinking, make sure number of + pages to unmap is rounded towards zero. + + * m/mips-siemens.h (XSETUINT, XSETPNTR): Unused macros deleted. + (XSETINT): Deleted. + + * m/att3b.h (XINT): Don't define. + (VALBITS, VALMASK, XTYPE): Deleted. + (DATA_SEG_BITS): Define. + * m/gec63.h (VALBITS, VALAMASK, XTYPE, XSETTYPE, XPNTR, XSET, + ARRAY_MARK_FLAG): Deleted. + (DATA_SEG_BITS): Define. + * m/pfa50.h (VALBITS, VALMASK, XTYPE): Deleted. + (DATA_SEG_BITS): Define. + +2002-07-20 Richard M. Stallman + + * print.c (print_error_message): New args CONTEXT and CALLER. + Calls changed. + + * lisp.h (print_error_message): Declare new args. + + * keyboard.c (cmd_error_internal): Pass Vsignaling_function + and CONTEXT to print_error_message, don't print them here. + For a Quit, don't use Vsignaling_function. + Call message_log_maybe_newline. + + * Makefile.in (xsmfns.o): Don't depend on lisp.h. + +2002-07-20 Kim F. Storm + + * xdisp.c (redisplay_window): Test MODIFF to set buffer_unchanged_p. + +2002-07-19 Ken Raeburn + + * bytecode.c (struct byte_stack): Pointers into byte string now + point to const. + * callproc.c (Fcall_process): Make NEW_ARGV array hold pointer to + const. + * charset.h (BCOPY_SHORT): Source pointer now points to const. + * coding.c (encode_eol, detect_coding, detect_eol): + (decode_coding, encode_coding, detect_coding_system): + Source strings now treated as const. + (decode_coding_string, encode_coding_string): Use STRING_COPYIN to + modify Lisp string contents. + * coding.h (decode_coding, encode_coding, detect_coding, + detect_eol): Declarations updated. + * composite.c (compose_chars_in_text): Treat Lisp string contents + as const. + * dispnew.c (safe_bcopy): Source pointer now points to const. + * lisp.h (STRING_COPYIN): New macro. + (detect_coding_system, safe_bcopy, temp_output_buffer_setup): + (internal_with_output_to_temp_buffer): Declarations updated. + * print.c (temp_output_buffer_setup): + (internal_with_output_to_temp_buffer): Buffer name argument is now + pointer to const. + * sound.c (struct sound_device): Function pointer field "write" + buffer argument now points to const. + (vox_write): Buffer argument points to const. + * syntax.c (Fstring_to_syntax, skip_chars): Treat Lisp string + contents as const. + * sysdep.c (emacs_write): Buffer pointer now const. + * term.c (encode_terminal_code): Buffer pointer now const. + * xfaces.c (may_use_scalable_font_p): Argument now points to const. + (x_face_list_fonts, x_update_menu_appearance): + (hash_string_case_insensitive): Treat Lisp string contents as const. + +2002-07-19 Juanma Barranquero + + * xdisp.c (syms_of_xdisp): Remove redundant deprecation info. + + * fileio.c (syms_of_fileio): Likewise. + (Ffile_name_as_directory): Fix argument name in docstring. + (file_name_as_directory): Use literal '/' instead of DIRECTORY_SEP. + +2002-07-18 Richard M. Stallman + + * data.c (Fdefalias): Doc fix. + +2002-07-17 Dave Love + + * intervals.h (text_property_stickiness): Use P_. + + * ccl.c: Remove `emacs' conditionals. + (ccl_backtrace_table): Fix size spec. + (ccl_driver): Fix type errors. + +2002-07-16 Ken Raeburn + + * alloc.c (xstrdup, make_string, make_unibyte_string) + (make_multibyte_string, build_string): String pointer args now + point to const. + * charset.c (find_charset_in_text, c_string_width): + (chars_in_text, multibyte_chars_in_text, parse_str_as_multibyte): + * fileio.c (report_file_error): + * insdel.c (copy_text, count_size_as_multibyte, insert_1): + (count_combining_before, count_combining_after, insert_1_both): + (insert, insert_and_inherit, insert_string): + (insert_before_markers, insert_before_markers_and_inherit): + * lread.c (intern, oblookup, hash_string): + * minibuf.c (temp_echo_area_glyphs): + * search.c (fast_c_string_match_ignore_case): + * sysdep.c (emacs_open, set_file_times): + * xfaces.c (xstricmp): + * xdisp.c (store_frame_title, string_char_and_length): + (message_dolog, message2, message2_nolog, set_message): Likewise. + (set_message_1): Cast message string argument to const pointer. + * editfns.c (general_insert_function): Insertion function now + takes pointer to const for input data. + * charset.h (find_charset_in_text, c_string_width): + (parse_str_as_multibyte): Declarations updated. + * dispextern.h (xstricmp): Declaration updated. + * lisp.h (chars_in_text, multibyte_chars_in_text, copy_text): + (count_size_as_multibyte, count_combining_before): + (count_combining_after, insert_1, insert_1_both, message_dolog): + (insert, insert_and_inherit, insert_before_markers) + (insert_before_markers_and_inherit, set_message, message2): + (message2_dolog, build_string, make_string, make_unibyte_string): + (make_multibyte_string, intern, oblookup, report_file_error): + (fast_c_string_match_ignore_case, temp_echo_area_glyphs): + (emacs_open, xstrdup): Declarations updated. + * systime.h (set_file_times): Declaration updated. + + * charset.c (find_charset_in_text, lisp_string_width): Use const + for pointer to lisp string data. + * charset.h (FETCH_STRING_CHAR_ADVANCE): + (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): + * coding.c (Ffind_coding_systems_region_interval): + * fileio.c (Ffile_name_directory, Ffile_name_nondirectory): + (Fmake_directory_internal, Fdelete_directory): + (Ffile_name_absolute_p, Fwrite_region, double_dollars): + * fontset.c (font_family_registry, fs_query_fontset): + (list_fontsets): + * frame.c (Fframe_parameter): + * keyboard.c (cmd_error_internal): + * keymap.c (Fdescribe_buffer_bindings): + * lread.c (complete_filename_p, openp): + * minibuf.c (Fminibuffer_complete_word): + * xdisp.c (string_pos_nchars_ahead, init_from_display_pos): + (face_before_or_after_it_pos, next_element_from_string): + (get_overlay_arrow_glyph_row, display_mode_element): + (decode_mode_spec_coding): + * xterm.c (same_x_server): Likewise. + + * buffer.c (reset_buffer_local_variables): Delete "#if 0" + settings of non-existent fields. + + * editfns.c (Fstring_to_char): Don't use XSTRING/XSETSTRING to + copy a lisp value. + + * lread.c (Fintern_soft): Use string macros instead of + Lisp_String fields. + * keyboard.c (echo_char, parse_modifiers_uncached): + (parse_solitary_modifier, Fexecute_extended_command): Likewise. + * textprop.c (validate_interval_range, interval_of): Likewise. + + * fontset.c (Fset_fontset_font): Use SDATA instead of XSTRING()->data. + + * charset.h (FETCH_STRING_CHAR_ADVANCE) + (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): Use SBYTES instead of + XSTRING()->size_byte. + + * lisp.h (SDATA, SREF): Produce rvalue. + (SSET): New macro. + * alloc.c (make_event_array): Use SSET for storing into a string. + * buffer.c (Fother_buffer): Use SREF when retrieving a byte from + a string. + * casefiddle.c (casify_object): Use SSET. + * charset.h (FETCH_STRING_CHAR_ADVANCE) + (FETCH_STRING_CHAR_ADVANCE_NO_CHECK): Use SDATA when getting + address of string contents. + * data.c (Faref): Use SDATA. + (Faset): Use SDATA, SSET. + * dired.c (directory_files_internal): Use SSET. + * fileio.c (Fmake_symbolic_link, Fexpand_file_name): Use SSET. + (Fread_file_name): Use SREF, SSET. + * fns.c (concat): Use SSET. + (concat, Fdelete): Use SDATA. + * insdel.c (insert_from_string_1): Use SDATA. + * keyboard.c (Fevent_convert_list): Use SREF. + * lread.c (Fload): Use SDATA, SSET. + * macfns.c (validate_x_resource_name): Use SSET. + * process.c (status_message): Use SSET. + * search.c (wordify): Use SDATA. + (Freplace_match): Use SREF. + * w32fns.c (validate_x_resource_name): Use SSET. + * xfns.c (validate_x_resource_name): Use SSET. + * xterm.c (x_catch_errors, x_clear_errors): Use SSET. + +2002-07-16 Richard M. Stallman + + * s/hpux11.h (USG_SUBTTY_WORKS): Defined. + + * xdisp.c (reconsider_clip_changes): + Don't test prevent_redisplay_optimizations_p. + (redisplay_internal): Test prevent_redisplay_optimizations_p + along with clip_changed in some cases. + (try_window_id): Likewise. + (redisplay_window): New local var buffer_unchanged_p. + + * keyboard.c (cmd_error) [HAVE_X_WINDOWS]: Maybe call cancel_houglass. + + * process.c (create_process): Test USG_SUBTTY_WORKS. + (process_send_signal): Clean up handling of GID. + Detect errors in ioctls meant to set GID. + + * window.c (temp_output_buffer_show): + Don't set prevent_redisplay_optimizations_p. + +2002-07-15 Juanma Barranquero + + * eval.c (Fdefvaralias): Add docstring argument. + +2002-07-15 Ken Raeburn + + * lisp.h (STRING_INTERVALS): Produce rvalue. + (STRING_SET_INTERVALS): New macro. + * buffer.c (Fget_buffer_create, Fmake_indirect_buffer): Use it. + * fns.c (Fstring_as_multibyte): Likewise. + * intervals.c (balance_possible_root_interval, delete_interval) + (create_root_interval, copy_intervals_to_string): Likewise. + * textprop.c (set_text_properties): Likewise. Use NULL_INTERVAL + instead of 0. + +2002-07-14 Ken Raeburn + + * lisp.h (STRING_SET_CHARS): New macro. + (SCHARS, SBYTES): Produce rvalues. + * dired.c (directory_files_internal): Use STRING_SET_CHARS. + * fns.c (concat): Likewise. + * lread.c (read_vector): Likewise. + + * lisp.h (SMBP): Delete. All uses changed to STRING_MULTIBYTE. + (STRING_SET_UNIBYTE): New macro. + (SET_STRING_BYTES): Delete. Callers (all of which supplied a + length of -1) changed to use STRING_SET_UNIBYTE. + * abbrev.c, alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, + casefiddle.c, category.c, ccl.c, charset.c, charset.h, coding.c, + composite.c, data.c, dired.c, dispnew.c, disptab.h, doc.c, + dosfns.c, editfns.c, emacs.c, eval.c, fileio.c, filelock.c, fn.c, + fontset.c, frame.c, indent.c, insdel.c, intervals.c, keyboard.c, + keymap.c, lread.c, mac.c, macfns.c, macmenu.c, macterm.c, + minibuf.c, msdos.c, print.c, process.c, search.c, sound.c, + sunfns.c, syntax.c, syntax.h, sysdep.c, textprop.c, undo.c, + w16select.c, w32.c, w32fns.c, w32menu.c, w32proc.c, w32select.c, + w32term.c, window.c, xdisp.c, xfaces.c, xfns.c, xmenu.c, + xselect.c, xsmfns.c, xterm.c: Most uses of XSTRING combined with + STRING_BYTES or indirection changed to SCHARS, SBYTES, + STRING_INTERVALS, SREF, SDATA; explicit size_byte references left + unchanged for now. + +2002-07-13 Kim F. Storm + + * keyboard.c (command_loop_1): Invert check on Vmemory_full. + +2002-07-12 Richard M. Stallman + + * fileio.c (Fwrite_region): Doc fix. + + * print.c (print_error_message): Don't handle Vsignaling_function here. + + * keyboard.c (cmd_error_internal): Handle Vsignaling_function here. + (command_loop_1): Avoid certain actions after memory-full error. + + * eval.c (Fsignal): Don't call cancel_hourglass. + For a memory-full error, don't call Vsignal_hook_function + and don't set Vsignaling_function. + + * process.c (process_send_signal): Add abort call. + +2002-07-11 Markus Rost + + * keymap.c (Fkey_binding): Fix typo. + +2002-07-11 Richard M. Stallman + + * alloc.c (Vmemory_full): New variable. + (Vmemory_signal_data): Rename from memory_signal_data. + Uses changed. + (syms_of_alloc): Defvar them. + (memory_full, buffer_memory_full): Set Vmemory_full. + + * lisp.h (Vmemory_full): Add declaration. + (current_column, indented_beyond_p): Change declaration. + + * indent.c (last_known_column): Declare as double, not float. + (current_column, current_column_1, string_display_width) + (position_indentation): Return `double'. + (indented_beyond_p): Arg `column' is `double'. Callers changed. + + * xdisp.c (message_dolog): Do nothing if Vmemory_full is non-nil. + (back_to_previous_visible_line_start) + (reseat_at_next_visible_line_start, next_element_from_buffer): + Use `double', not `float', when calling indented_beyond_p. + + * s/hpux11.h (BROKEN_SA_RESTART): Define. + + * sysdep.c (sys_signal): Test BROKEN_SA_RESTART. + +2002-07-11 Juanma Barranquero + + * alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, coding.c, + * composite.c, dired.c, dispnew.c, editfns.c, emacs.c, eval.c, + * fileio.c, fns.c, insdel.c, keyboard.c, keymap.c, lread.c, macfns.c, + * macmenu.c, macros.c, minibuf.c, print.c, process.c, sound.c, + * textprop.c, w32fns.c, w32menu.c, window.c, xfaces.c, xfns.c, + * xmenu.c, xselect.c, xterm.c: Use SPECPDL_INDEX wherever makes sense. + +2002-07-10 Juanma Barranquero + + * lisp.h (SPECPDL_INDEX): Rename from BINDING_STACK_SIZE. + All callers changed. + +2002-07-09 Stefan Monnier + + * data.c (Fdefalias): Add an optional `docstring' argument. + (set_internal, Fsetq_default): Use XCAR/XCDR. + + * composite.c (HASH_VALUE, HASH_KEY): + * ccl.c (HASH_VALUE): Remove (it's in lisp.h now). + +2002-07-09 Kenichi Handa + + * callproc.c (Fcall_process): Fix previous change. + +2002-07-07 Stefan Monnier + + * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion): + Add support for hash-tables. + (Ftry_completion): Return t even if the string appears multiple times. + + * fns.c (Fnconc): Use XCDR. + (Fprovide): Use CONSP and XCDR. + (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX) + (HASH_TABLE_SIZE): Delete: moved to lisp.h. + (Fmake_hash_table): Accept `:size nil'. + (Fmakehash): Delete: moved to subr.el. + (syms_of_fns): Don't defsubr makehash. + + * lisp.h (HASH_KEY, HASH_VALUE, HASH_NEXT, HASH_HASH, HASH_INDEX) + (HASH_TABLE_SIZE): Move from fns.c. + +2002-07-07 Richard M. Stallman + + * xdisp.c (make_cursor_line_fully_visible): Don't try short scrolls. + Instead just return 0 when there is something to be done. + (try_scrolling): If make_cursor_line_fully_visible returns 0, + retry scrolling as if cursor were off the bottom. + (try_cursor_movement): If make_cursor_line_fully_visible returns 0, + return CURSOR_MOVEMENT_MUST_SCROLL. + (redisplay_window): If make_cursor_line_fully_visible returns 0, + go to try_to_scroll. + + * buffer.c (Fbuffer_local_value): Store current value into its binding + so we get the up-to-date value for the binding that is loaded. + + * eval.c (Fdefmacro): Doc fix. + +2002-07-05 Dave Love + + * keyboard.c (read_key_sequence): Set initial_idleness_start_time + correctly. + + * ccl.c (Vtranslation_hash_table_vector, GET_HASH_TABLE) + (HASH_VALUE, CCL_LookupIntConstTbl, CCL_LookupCharConstTbl): New. + (ccl_driver): Add cases for CCL_LookupIntConstTbl, + CCL_LookupCharConstTbl. + (syms_of_ccl): Defvar translation-hash-table-vector. + +2002-07-05 Pavel Jan,Am(Bk + + * xdisp.c: Remove unused variable `face'. + +2002-07-04 Juanma Barranquero + + * keyboard.c (post_command_idle_hook): Remove redundant (and inexact) + obsolescence information. + +2002-07-03 Andrew Choi + + * macterm.c (x_list_fonts): Fix comment. Cache fonts matching + pattern. Search cache first. + (init_font_name_table): Also add entry for jisx0201.1976-0 coding + for Japanese font. + (XLoadQueryFont): Use it. + +2002-07-02 Richard M. Stallman + + * keymap.c (Fdefine_key): Doc fix. + + * xterm.c (x_term_init): Turn off polling around XtOpenDisplay. + +2002-07-02 Juanma Barranquero + + * keymap.c (syms_of_keymap): Fix typo. + +2002-07-01 Andrew Choi + + * s/darwin.h: Define POSIX_SIGNALS. + + * macterm.c (do_ae_open_documents) [MAC_OSX]: Call FSpMakeFSRef + and FSRefMakePath to convert FSSpec returned with Apple Event to + Posix pathname. + (mac_initialize) [TARGET_API_MAC_CARBON]: + Call init_required_apple_events and disable the `Quit' menu item + provided automatically by the Carbon Toolbox. + +2002-07-01 Dave Love + + * keyboard.c (kbd_buffer_store_event): Fix interrupt_signal decl + for K&R. + + * xterm.c: Fix prototype for K&R. + + * term.c (costs_set): Declare static, non-initialized for pcc. + +2002-07-01 Richard M. Stallman + + * keyboard.c (timer_last_idleness_start_time): New variable. + (timer_start_idle): Set that. + (read_key_sequence): Use that to reset timer_idleness_start_time + to previous value. + + * window.c (Frecenter): With arg, set optional_new_start. + + * xdisp.c (redisplay_internal): Make optional_new_start really work. + + * minibuf.c (Fminibuffer_complete_and_exit): Move to end of + buffer for completion. + +2002-06-29 Ken Raeburn + + * xdisp.c (store_mode_line_string): Lisp_Object/int mixup. + +2002-06-28 Jan Dj,Ad(Brv + + * keyboard.c (readable_filtered_events): New function that filters + FOCUS_IN_EVENT depending on parameter. + (readable_events): Calls readable_filtered_events, not filtering + FOCUS_IN_EVENT. + (get_filtered_input_pending): New function, filtering parameter passed + to readable_filtered_events. + (get_input_pending): Calls get_filtered_input_pending, not filtering + FOCUS_IN_EVENT. + (Finput_pending_p): Calls get_filtered_input_pending, DO filter + FOCUS_IN_EVENT. + + * xterm.h (struct x_output): Add focus_state. + + * xterm.c (x_focus_changed): New function. + (x_detect_focus_change): New function. + (XTread_socket): Call x_detect_focus_change for FocusIn/FocusOut + EnterNotify and LeaveNotify to track X focus changes. + +2002-06-28 Andreas Schwab + + * lisp.h: Remove duplicate declaration of code_convert_string_norecord. + +2002-06-27 Kim F. Storm + + * xdisp.c (mode_line_string_list, mode_line_string_face) + (mode_line_string_face_prop): New variables. + (store_mode_line_string): New function. + (display_mode_element): Use store_mode_line_string to + add mode-line string elements to mode_line_string_list + when mode_line_string_list is non-nil. + (Fformat_mode_line): Now returns propertized string by + default. New arg NO-PROPS to ignore properties. + (decode_mode_spec): Only add two dashes for %- in propertized + mode-line string. + (syms_of_xdisp): Init and staticpro mode_line_string_list. + +2002-06-27 Stefan Monnier + + * minibuf.c (minibuffer_completion_contents): Add return type. + +2002-06-27 Juanma Barranquero + + * charset.c (Fchar_bytes): Remove obsolescence info from docstring. + +2002-06-26 Juanma Barranquero + + * fileio.c (read_file_name_cleanup): Add missing return. + +2002-06-26 Richard M. Stallman + + * window.c (Frecenter): Don't set force_start flag. + + * minibuf.c (do_completion, Fminibuffer_complete_word) + (Fminibuffer_completion_help): Complete just the text before point. + (minibuffer_completion_contents): New function. + + * buffer.c (Fbury_buffer): Use frames_discard_buffer. + + * frame.c (frames_bury_buffer): Function deleted. + +2002-06-25 Miles Bader + + * callint.c (Fcall_interactively): When checking to see if doprnt hit + the end of callint_message, allow for a terminating '\0'. + +2002-06-24 Juanma Barranquero + + * w32select.c: Include composite.h. + + * w16select.c: Likewise. + +2002-06-24 Kenichi Handa + + * callproc.c (Fcall_process): If code detection is necessary, + call detect_coding directly here. + + * coding.c (detect_eol): Preserve coding->cmp_data. + + * w16select.c (Fw16_get_clipboard_data): + * w32fns.c (w32_to_x_font): + * w32select.c (Fw32_get_clipboard_data): + * xselect.c (selection_data_to_lisp_data): + * xterm.c (XTread_socket): Disable composition handling. + +2002-06-24 Stefan Monnier + + * print.c (temp_output_buffer_setup): Kill all local variables. + +2002-06-22 Stefan Monnier + + * lread.c (Fread): Remove redundant and imprecise declaration. + + * xfns.c (check_x_display_info): Use check_x_frame. + + * .gdbinit (xprintsym): Use the new `xname' field. + (xsymbol): Use it. + +2002-06-22 Jason Rumney + + * w32fns.c (file_dialog_callback): New function. + (Fx_file_dialog): Allow selecting directories as well as files. + +2002-06-21 Pavel Jan,Am(Bk + + * m/pmax.h (START_FILES): Define START_FILES for NetBSD and + OpenBSD. Add support for mipseb-*-netbsd* machines. + +2002-06-17 Andrew Choi + + * macterm.c (mac_scroll_area): Set foreground and backcolor to + black and white before scrolling. Restore frame background and + foreground color after scrolling. + (do_window_update): Call XClearWindow before calling expose_frame. + (make_mac_frame): Don't set FRAME_BACKGROUND_PIXEL and + FRAME_FOREGROUND_PIXEL of frame. + + * macterm.c (XTread_socket): If Vmac_command_key_is_meta is nil, + test Mac command key as key. + +2002-06-17 Stefan Monnier + + * window.c (Fset_window_configuration): Lisp_Object/int mixup. + + * keyboard.c (read_key_sequence): Be more careful with first_unbound. + Lookup keys in function-key-map immediately so that key-translation-map + can be applied earlier. + Remove function_key_possible and key_translation_possible, replaced + by checking `keytran_start < t'. + + * .gdbinit (xsymbol): Use the new `xname' field. + +2002-06-17 Andrew Choi + + * macterm.c (XTread_socket): If Vmac_command_key_is_meta is nil, + test Mac command key as key. + + * mac.c (do_applescript): Call initialize_applescript if necessary + when first called. Dispose of result_desc only when there is no error. + (Fdo_applescript): Use %d format specifier instead of %ld. + +2002-06-16 Andrew Choi + + * macterm.c (XTread_socket): Call FrontNonFloatingWindow instead + of FrontWindow for cases keyDown and autoKey. + + * fontset.c (syms_of_fontset) [MAC_OS]: Set ASCII font of + Vdefault_fontset to Monaco with mac-roman coding. + + * mac.c, macfns.c, macmenu.c, macterm.c: Undefine and redefine + init_process before and after inclusion of Carbon/Carbon.h, resp. + + * macterm.c (x_new_font): Set font for normal_gc, reverse_gc, and + cursor_gc. + (add_font_name_table_entry): New function. + (init_font_name_table): Use add_font_name_table_entry; add italic, + bold, and bold-italic entries for truetype fonts. + + * xfaces.c (init_frame_faces) [MAC_OS]: Call realize_basic_faces + for Mac too. + (try_font_list) [MAC_OS]: If no font matches given registry, try + fonts with any registry matching face_family. + (realize_x_face) [MAC_OS]: Remove old ad-hoc fix to load font here. + + * s/darwin.h: If autoconf detects the Ncurses library, define + LIBS_TERMCAP to -lncurses to use it. + +2002-06-16 Eli Zaretskii + + * strftime.c [__hpux]: Include sys/_mbstate_t.h. + +2002-06-15 Richard M. Stallman + + * window.c (Fset_window_configuration): Explicitly preserve + the point value that new_current_buffer had at the start. + +2002-06-14 Juanma Barranquero + + * composite.c (Fcompose_region_internal, Fcompose_string_internal): + Fix typos. + +2002-06-14 Kim F. Storm + + * insdel.c (insert_1_both, insert_from_string_1) + (insert_from_buffer_1): Recalculate END_UNCHANGED in case the + insert happened in the end_unchanged region. Otherwise, the + redisplay may be confused and duplicate the last line in the + buffer [seen after save-buffer when require-final-newline==t]. + +2002-06-13 Jason Rumney + + * w32.c (init_environment): Remove EMACSLOCKDIR. + (stat): Swap _S_IFDIR and _S_IFREG. + +2002-06-13 Pavel Jan,Am(Bk + + * keyboard.c, macterm.c, macmenu.c, msdos.c, sysdep.c + * termhooks.h, xmenu.c, xsmfns.c, xterm.h, xterm.c, w32term.c, + * w32menu.c, w32inevt.c: Rename enum event_kind as follows: + ascii_keystroke to ASCII_KEYSTROKE_EVENT, multibyte_char_keystroke + to MULTIBYTE_CHAR_KEYSTROKE_EVENT, non_ascii_keystroke to + NON_ASCII_KEYSTROKE_EVENT, timer_event to TIMER_EVENT, mouse_click + to MOUSE_CLICK_EVENT, mouse_wheel to MOUSE_WHEEL_EVENT, + language_change_event to LANGUAGE_CHANGE_EVENT, scroll_bar_click + to SCROLL_BAR_CLICK_EVENT, w32_scroll_bar_click to + W32_SCROLL_BAR_CLICK_EVENT, selection_request_event to + SELECTION_REQUEST_EVENT, selection_clear_event to + SELECTION_CLEAR_EVENT, buffer_switch_event to BUFFER_SWITCH_EVENT, + delete_window_event to DELETE_WINDOW_EVENT, iconify_event to + ICONIFY_EVENT, deiconify_event to DEICONIFY_EVENT, + menu_bar_activate_event to MENU_BAR_ACTIVATE_EVENT, drag_n_drop to + DRAG_N_DROP_EVENT, save_session_event to SAVE_SESSION_EVENT and + no_event to NO_EVENT. + +2002-06-12 Pavel Jan,Am(Bk + + * macmenu.c: Remove declaration of Qmouse_click and Qevent_kind. + +2002-06-12 Stefan Monnier + + * intervals.c (textget): Don't forget to `return'. + (lookup_char_property): Use XCAR/XCDR. + +2002-06-12 Juanma Barranquero + + * xdisp.c (Fformat_mode_line): Fix typo. + +2002-06-12 Kim F. Storm + + * xdisp.c (Fformat_mode_line): New function. + (frame_title_buf, frame_title_buf_end, frame_title_ptr) + (store_frame_title_char, store_frame_title): Use unconditionally. + (init_xdisp): Defsubr Fformat_mode_line. + Initialize frame_title_buf etc. unconditionally. + +2002-06-11 Stefan Monnier + + * keyboard.c (read_key_sequence): + Remove prev_(fkey|keytran}_(map|start|end) since we don't want to pass + things through those maps after downcasing events. + Enforce that keytran_end <= fkey_start, i.e. that key-translation-map + applies after function-key-map. + Make sure that keytran can be done in the middle in the sequence. + Be careful not to throw away events past the one we downcase. + + * lread.c (read_integer): Remove unused var `tem'. + (read1): Fix int/Lisp_Object mixup. + + * xfaces.c (tty_lookup_color): Type bool/Lisp_Object mismatch fixed. + +2002-06-11 Richard M. Stallman + + * keyboard.c (readable_events): Ignore any number of + FOCUS_IN_EVENT events and return 0 if nothing else in buffer. + +2002-06-09 Miles Bader + + * xfaces.c (Ftty_supports_face_attributes_p): New function. + (parse_rgb_list, tty_lookup_color): New functions. + (tty_defined_color): Use `tty_lookup_color' to do all the work. + (color_distance, Fcolor_distance): New functions. + (TTY_SAME_COLOR_THRESHOLD): New macro. + (Qtty_color_standard_values): New variable. + (syms_of_xfaces): Initialize new vars & functions. + +2002-06-08 Colin Walters + + * textprop.c (Vchar_property_alias_alist): New variable. + (syms_of_textprop) : DEFVAR_LISP. + + * intervals.c (lookup_char_property): New function for looking up + overlay and text properties, created from textget. + (textget): Use it. + + * intervals.h (lookup_char_property): Declare. + (Vchar_property_alias_alist): Declare. + + * buffer.c (Foverlay_get): Use lookup_char_property. + +2002-06-07 Sam Steingold + + * xselect.c (lisp_data_to_selection_data): Fix last change: + *data_ret is not a Lisp string, while unibyte_string is. + +2002-06-07 Eli Zaretskii + + * xselect.c (lisp_data_to_selection_data): Fix last change: + set size_ret. + +2002-06-07 Andreas Schwab + + * m/amdx86-64.h: New file. + +2002-06-05 Eli Zaretskii + + * fns.c (Fstring_make_unibyte): Doc fix. + + * xselect.c (lisp_data_to_selection_data): If the requested type + is STRING, call string_make_unibyte to encode the selected text + as a string. + + * window.c (Fset_window_hscroll): Doc fix. + +2002-06-05 Pavel Jan,Am(Bk + + * fileio.c (choose_write_coding_system): + Call select-safe-coding-system properly. + +2002-06-03 Richard M. Stallman + + * xdisp.c (message_with_string): Error if STRING is not a string. + + * fns.c (md5): Pass FILE arg to Vselect_safe_coding_system_function. + + * fileio.c (choose_write_coding_system): Pass FILE arg to + Vselect_safe_coding_system_function. + +2002-06-03 Ken Raeburn + + * buffer.c (fix_overlays_before): Fix list-walking bug in 05-19 change. + +2002-06-02 Thien-Thi Nguyen + + * bytecode.c (Fbyte_code): Cast `current_column' return value to int. + * cmds.c (Fdelete_backward_char, internal_self_insert): Likewise. + * keymap.c (describe_command): Likewise. + * minibuf.c (read_minibuf): Likewise. + + * xdisp.c (redisplay_internal, redisplay_window, decode_mode_spec): + Cast `current_column' return value to int. + (back_to_previous_visible_line_start) + (reseat_at_next_visible_line_start, next_element_from_buffer): + Cast `indented_beyond_p' 3rd arg to float. + + * indent.c (last_known_column): Now a float. + (current_column_1, position_indentation, current_column) + (string_display_width): Return float. + (Fcurrent_column): Cast `current_column' return value to int. + (Fcurrent_indentation): Cast `position_indentation' retval to int. + (indented_beyond_p): Third arg now a float. + (compute_motion, vmotion): Cast `indented_beyond_p' 3rd arg to float. + + * lisp.h (current_column): Now returns float. + (indented_beyond_p): 3rd arg now a float. + +2002-05-31 Eli Zaretskii + + * xfns.c (x_encode_text): Return stringp non-NULL if coding_system + is Qcompound_text_with_extensions. + + * xselect.c (lisp_data_to_selection_data): Always set selection + type as string if x_encode_text returns streingp non-NULL. + + * s/netbsd.h: Include /usr/pkg in the run time shared library path. + +2002-05-30 Richard M. Stallman + + * window.c (Fset_window_configuration): Correct the handling + of point in current buffer, to work with multiple windows. + +2002-05-29 Colin Walters + + * lread.c (Fread_from_string): Don't depend on order of evaluation + for C function parameters. + +2002-05-28 Richard M. Stallman + + * xterm.c (x_display_and_set_cursor): Change the cursor in the same + way for blinked-off state and for a nonselected window. + + * window.c (window_scroll_pixel_based): Don't call Fbolp; + instead, see if the new start pos is at beginning of line. + + * fileio.c (Fwrite_region): If START is a string, don't + make any annotations. + + * eval.c (syms_of_eval): Doc fix. + +2002-05-28 Colin Walters + + * emacs.c (USAGE1): Add --no-splash. + (standard_args): Ditto. + +2002-05-28 Colin Walters + + * lread.c (readchar_count): New variable. + (readchar): Increment it. + (unreadchar): Decrement it. + (read_multibyte): Decrement it. + (Vread_with_symbol_positions): New variable. + (Vread_symbol_positions_list): New variable. + (read_internal_start): New function, created from Fread and + Fread_from_string. Handle Vread_symbol_positions_list and + Vread_with_symbol_positions. + (readevalloop, Fread, Fread_from_string): Use it. + (read1): Use readchar_count to add symbol positions to + Vread_symbol_positions_list if Vread_with_symbol_positions is non-nil. + (syms_of_lread): DEFVAR_LISP and initialize them. + + * lread.c (read0, read1, read_list, read_vector, read_multibyte) + (substitute_object_recurse, substitute_object_in_subtree) + (substitute_in_interval): Prototype. + (read_multibyte): Return c if it's less than zero. + +2002-05-28 Kim F. Storm + + * fileio.c (Fread_file_name_internal): Added brute-force + speed up for using predicate file-directory-p. + +2002-05-28 Kim F. Storm + + * fileio.c (Vread_file_name_function, Vread_file_name_predicate): + New variables. + (syms_of_fileio): DEFVAR_LISP them. + (read_file_name_cleanup): New unwind function. + (Fread_file_name_internal): Only return completions satifying + Vread_file_name_predicate. Temporarily unwind protect and rebind + default-directory while checking completions against the predicate. + (Fread_file_name): Added PREDICATE argument. Specbind it to + Vread_file_name_predicate during completion. + Call Vread_file_name_function to read the file name if non-nil. + + * lisp.h (Fread_file_name): Now has 6 args. + + * callint.c (Fcall_interactively) <"D">: Supply Qfile_directory_p + predicate for Fread_file_name when reading directory name. + Supply Qnil for predicate in other calls to Fread_file_name. + +2002-05-26 Miles Bader + + * term.c (tty_capable_p): New function. + * dispextern.h (tty_capable_p): New function declaration. + (TTY_CAP_INVERSE, TTY_CAP_UNDERLINE, TTY_CAP_BOLD, TTY_CAP_DIM) + (TTY_CAP_BLINK, TTY_CAP_ALT_CHARSET): New macros. + +2002-05-23 Stefan Monnier + + * fileio.c (read_non_regular, Finsert_file_contents): Use BEG_BYTE. + (Finsert_file_contents, build_annotations): Use XCAR, XCDR. + (Vwrite_region_annotate_functions): Docstring fix. + +2002-05-23 Kim F. Storm + + * xterm.c (x_write_glyphs): Clear phys_cursor_on_p if current + phys_cursor's hpos is overwritten. This is still not completely + correct, as it doesn't really make sense to use hpos at all to + get the cursor glyph (as that is relative to the width of the + characters on the line, which may have changed during the update). + +2002-05-22 Jason Rumney + + * w32fns.c (enumfont_t): Remove tail, make pattern a normal + Lisp_Object. + (enum_font_cb2, enum_font_maybe_add_to_list, w32_list_fonts): + Use modified enumfont_t struct. + + * w32term.h (text_cursor_kinds): New enumeration member HBAR_CURSOR. + + * w32term.c (x_draw_bar_cursor): New argument KIND; callers changed. + Handle the `hbar' cursor type. + (x_display_and_set_cursor): Handle the HBAR_CURSOR case. + + * w32fns.c (Qhbar): New variable. + (x_specified_cursor_type): Use it. + +2002-05-21 Ken Raeburn + + * w32fns.c (enum_font_maybe_add_to_list): Use XCDR_AS_LVALUE for + now, when the address is needed. + +2002-05-21 Colin Walters + + * Makefile.in (shortlisp): Add font-core.el. + +2002-05-20 Richard M. Stallman + + * buffer.c (syms_of_buffer) : Doc fix. + + * keyboard.c (read_char_minibuf_menu_prompt): Don't list + equivalent key bindings here. + +2002-05-20 Ken Raeburn + + Change symbol structure to contain a lisp object for the symbol + name: + * lisp.h (struct Lisp_Symbol): Replace field "name" with a lisp + object field named "xname". + (SYMBOL_NAME): New macro. + * abbrev.c (write_abbrev): Use SYMBOL_NAME instead of XSYMBOL and + name field. + * alloc.c (Fmake_symbol): Set symbol xname field instead of name. + (mark_object, gc_sweep): Use symbol xname field and XSTRING + instead of name field. + * buffer.c (buffer_slot_type_mismatch): Use XSTRING and + SYMBOL_NAME instead of XSYMBOL and name field. + * callint.c (Fcall_interactively): Use XSTRING and SYMBOL_NAME + instead of XSYMBOL and name field. + * charset.c (Fdefine_charset, Fdeclare_equiv_charset): Use XSTRING + and SYMBOL_NAME instead of XSYMBOL and name field. + * coding.c (Fread_coding_system, code_convert_region1) + (code_convert_string1, code_convert_string_norecord) + (Ffind_operation_coding_system): Use SYMBOL_NAME instead of + XSYMBOL and name field. + * data.c (Fkeywordp, Fsymbol_name, store_symval_forwarding) + (Fmake_variable_buffer_local, Fmake_local_variable) + (Fmake_variable_frame_local): Use SYMBOL_NAME and XSTRING instead + of XSYMBOL and name field. + * editfns.c (Fformat): Use SYMBOL_NAME and XSTRING instead of + XSYMBOL and name field. + * emacs.c (shut_down_emacs) [#if 0]: Use SYMBOL_NAME and XSTRING + instead of XSYMBOL and name field. + * eval.c (do_autoload): Use SYMBOL_NAME and XSTRING instead of + XSYMBOL and name field. + * fns.c (Fstring_equal, Fstring_lessp, Frequire, sxhash): + Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field. + * fontset.c (Fset_fontset_font): Use SYMBOL_NAME and XSTRING + instead of XSYMBOL and name field. + * keyboard.c (echo_char, record_char, parse_modifiers_uncached) + (parse_modifiers, apply_modifiers, Fevent_convert_list) + (parse_solitary_modifier, Fexecute_extended_command): + Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field. + * keymap.c (silly_event_symbol_error, Fsingle_key_description) + (Fdescribe_buffer_bindings): Use SYMBOL_NAME and XSTRING instead + of XSYMBOL and name field. + (describe_command, describe_translation): Use SYMBOL_NAME and + assignment instead of XSYMBOL and name field and XSETSTRING. + * lread.c (Fintern_soft, oblookup): Use SYMBOL_NAME and XSTRING + instead of XSYMBOL and name field. + (Funintern): Use SYMBOL_NAME and assignment instead of XSYMBOL and + name field and XSETSTRING. + * macfns.c (parse_image_spec): Use SYMBOL_NAME and XSTRING instead + of XSYMBOL and name field. + * minibuf.c (Fread_command, Fread_variable): Use SYMBOL_NAME and + assignment instead of XSYMBOL and name field and XSETSTRING. + * print.c (print_error_message, print_object): Use SYMBOL_NAME and + XSTRING instead of XSYMBOL and name field. + * process.c (set_socket_options, Fsignal_process): Use SYMBOL_NAME + and XSTRING instead of XSYMBOL and name field. + * w32fns.c (parse_image_spec, w32_parse_hot_key): Use SYMBOL_NAME + and XSTRING instead of XSYMBOL and name field. + * xfaces.c (merge_face_vector_with_property): Use SYMBOL_NAME and + XSTRING instead of XSYMBOL and name field. + * xfns.c (parse_image_spec): Use SYMBOL_NAME and XSTRING instead + of XSYMBOL and name field. + * xselect.c (symbol_to_x_atom, x_get_foreign_selection): + Use SYMBOL_NAME and XSTRING instead of XSYMBOL and name field. + +2002-05-19 Ken Raeburn + + * lisp.h (LISP_MAKE_RVALUE): Delete disabled version, making XCAR + and XCDR real rvalues in most configurations. + + * buffer.c (fix_overlays_in_range, fix_overlays_before): + Don't take the address of the cdr part of a cons cell; instead, track + the parent cell and call XSETCDR, or set the variable for the head + of the list if we haven't started down the list yet. + +2002-05-19 Richard M. Stallman + + * doc.c (reread_doc_file): Don't ask for confirmation. + +2002-05-18 Jason Rumney + + * w32fns.c (w32_create_pixmap_from_bitmap_data): New function. + (xbm_load_image): Use it. + (xbm_load): Ditto. + (xbm_read_bitmap_data): Reverted to xfns.c version. + From David Ponce . + +2002-05-17 Eli Zaretskii + + * msdos.c (sig_suspender, sigprocmask): Don't define for DJGPP + 2.02 and later. + +2002-05-16 Juanma Barranquero + + * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector): Fix typo. + +2002-05-15 Stefan Monnier + + * keyboard.c (read_char_x_menu_prompt): Use an equivalent but more + meaningful test. + (read_char_minibuf_menu_prompt): Fix typo. + +2002-05-15 Eli Zaretskii + + * eval.c (Fcommandp): Doc fix. + +2002-05-13 Stefan Monnier + + * keymap.c (keymap_parent): New fun, extracted from Fkeymap_parent. + (Fkeymap_parent, keymap_memberp, fix_submap_inheritance): Use it. + (Fset_keymap_parent): Gcpro a bit more. + (access_keymap): Gcpro around meta_map call and around the main loop. + (get_keyelt): Gcpro when following indirect references. + (copy_keymap_item): New fun, extracted from Fcopy_keymap. + (copy_keymap_1, Fcopy_keymap): Use it. Don't copy the parent map. + (Fdefine_key, Flookup_key): Gcpro before calling get_keymap. + Remove useless ad-hoc remap code. + +2002-05-13 Richard M. Stallman + + * search.c (search_buffer): Give up boyer moore search if inverse + translation change charset_base. + +2002-05-12 Eli Zaretskii + + * coding.c (decode_coding) : If a lone CR + characters is carried over from the previous block of text, adjust + coding->produced to account for the extra character. + +2002-05-11 Andreas Schwab + + * coding.c (intersection): Keep the elements of the returned list + in the same order as in the first list. + +2002-05-11 Kim F. Storm + + * keymap.c (current_minor_maps): Fix resizing of cmm_maps; + only update cmm_size if realloc actually succeeds. + Testing with initial size of 2 elements revealed that using + realloc on GNU/Linux would cause a random trap in xmalloc + later on, so I rewrote the code to use malloc/bcopy/free instead + of realloc. + +2002-05-10 Jason Rumney + + * w32fns.c (enum_font_cb2): Avoid DBCS raster fonts. + +2002-05-10 Eli Zaretskii + + * coding.c (encode_coding_sjis_big5): Enclose bitwise AND in + parens, to ensure correct evaluation order. + +2002-05-10 Kim F. Storm + + * keymap.c (Vemulation_mode_map_alists): New variable. + (syms_of_keymap): DEFVAR_LISP it. + (current_minor_maps): Process keymap alists in that list before + minor-mode-overriding-map-alist and minor-mode-map-alist. + +2002-05-09 Richard M. Stallman + + * search.c (Freplace_match): Doc fix. + +2002-05-09 Kim F. Storm + + * macterm.c (x_draw_image_foreground, x_draw_image_foreground_1): + Enlarge cursor rectangle drawn around image with non-zero relief. + + * w32term.c (x_draw_image_foreground, w32_draw_image_foreground_1): + Enlarge cursor rectangle drawn around image with non-zero relief. + + * xterm.c (x_draw_image_foreground, x_draw_image_foreground_1): + Enlarge cursor rectangle drawn around image with non-zero relief. + +2002-05-07 Eli Zaretskii + + * xselect.c (lisp_data_to_selection_data): Don't set selection + type if comes from the Lisp object's car. If the selection + contains a pure ASCII text, always return QSTRING as its type. + +2002-05-06 Pavel Jan,Am(Bk + + * mac.c (mac-cut-function): Doc fix. + +2002-05-05 Richard M. Stallman + + * s/gnu.h [DOUG_LEA_MALLOC] (REL_ALLOC): Undefine it. + +2002-05-04 Jason Rumney + + * keyboard.c (make_lispy_event) : Set count to 1 + for event-click-count. + + * process.c (init_process): Only add server subfeature if we can + use non-blocking I/O. + +2002-05-04 Andrew Choi + + * macterm.c (XTread_socket): Call WaitNextEvent once instead of + repeatedly. + +2002-05-03 Jason Rumney + + * process.c (Fmake_network_process): Only support server sockets + when we can make them non-blocking. + + * s/ms-w32.h (HAVE_SELECT): Define. + + * w32.h (FILE_NDELAY): New flag. + + * w32.c (sys_getpeername, fcntl): New functions. + (_sys_read_ahead): Temporarily block on non-blocking sockets. + + * w32proc.c: Include sys/file.h. + +2002-05-03 Colin Walters + + * callproc.c (Vgame_score_directory): Renamed to + Vshared_game_score_directory. + +2002-04-30 Richard M. Stallman + + * s/gnu.h [emacs]: Include stdio.h. + (GNU_LIBRARY_PENDING_OUTPUT_COUNT): New definition, conditional. + + * eval.c (do_autoload): Error if called while preparing to dump. + + * fns.c (Frequire): Error if need to load while preparing to dump. + +2002-04-28 Colin Walters + + * callproc.c (Vgame_score_directory) [!HAVE_SHARED_GAME_DIR]: + Default to "~/.emacs.d/games". + +2002-04-29 Stefan Monnier + + * lread.c (openp): Change arg exec_only to predicate. + (build_load_history): Use XCAR/XCDR. + (Flocate_file_internal): New fun. + (syms_of_lread): Defsubr it. + (Fload): Update call to openp. + + * lisp.h (openp): Update prototype. + + * xfns.c (x_create_bitmap_from_file, x_find_image_file): + * w32proc.c (sys_spawnve): + * w32fns.c (x_create_bitmap_from_file, x_find_image_file): + * w32.c (check_windows_init_file): + * sound.c (Fplay_sound_internal): + * process.c (Fstart_process): + * macfns.c (x_create_bitmap_from_file, x_find_image_file): + * mac.c (run_mac_command): + * emacs.c (init_cmdargs): + * callproc.c (Fcall_process): Update call to openp. + + * textprop.c (remove_properties): Don't use XCAR without CONSP. + + * xterm.c (XTread_socket): Disable the Xutf8LookupString code. + +2002-04-29 Pavel Jan,Am(Bk + + * dispextern.h (DEFAULT_TOOL_BAR_BUTTON_MARGIN) + (DEFAULT_TOOL_BAR_BUTTON_RELIEF): Change default values. + +2002-04-28 Richard M. Stallman + + * minibuf.c (Fall_completions, Ftry_completion): New arg to Fcommandp. + + * eval.c (Fcommandp): New arg for_call_interactively. + * lisp.h (Fcommandp): Declare new arg. + +2002-04-28 Jason Rumney + + * w32proc.c (syms_of_w32proc): Get true file attributes by default. + + * w32.c (stat, fstat): Use file index information to generate + inodes for directories where available. + +2002-04-26 Andrew Choi + + * Makefile.in (C_SWITCH_SYSTEM_TEMACS): Add. + [HAVE_CARBON]: Include Mac object files. + + * alloc.c, callproc.c, dispextern.h, dispnew.c, emacs.c, + fontset.c, frame.c, frame.h, keyboard.c, sysdep.c, term.c, + termcap.c, window.c, xdisp.c, xfaces.c: Use macros MAC_OS8, + MAC_OSX, and MAC_OS instead of macintosh. + + * editfns.c [MAC_OS8]: Include stdio.h. + + * emacs.c [MAC_OS8]: Call mac_initialize instead of x_term_init. + + * fontset.c [MAC_OS]: Set Vdefault_fontset to ETL Fixed instead of + Apple Monaco. + + * process.c (QCfamily, QCfilte): Declare extern. + (wait_reading_process_input) [MAC_OSX]: Clear bit for stdin before + calling select. + + * termcap.c [MAC_OSX]: Don't define tgetnum, PC, tputs, and tgetent. + + * tparam.c [MAC_OSX]: Don't define BC and UP. + + * config.in [HAVE_CARBON]: Add. + + * mac.c, macgui.h, macfns.c, macmenu.c, macterm.c, macterm.h: + Move here from mac/src and mac/inc. + + * s/darwin.h, m/powermac.h, unexmacosx.c: New files. + +2002-04-26 Gerd Moellmann + + * xterm.c (x_draw_phys_cursor_glyph): Undo last change. + Compute phys_cursor_width from the x position returned + by x_draw_glyhs, which is cheaper. + (x_display_and_set_cursor): Compute the buffer-local value + of `cursor-in-non-selected-windows' only when needed. + +2002-04-25 Gerd Moellmann + + * xterm.c (x_draw_phys_cursor_glyph): Take into account that a box + cursor on a stretch glyph has a width that depends on + x_stretch_cursor_p. + +2002-04-25 Pavel Jan,Am(Bk + + * abbrev.c (abbrev-start-location): Doc fix. + + * indent.c (Fvertical_motion): Fix last change. + +2002-04-25 Gerd Moellmann + + * indent.c (Fvertical_motion): Move to the start of the line + containing PT before moving up or down. + +2002-04-24 Gerd Moellmann + + * dispnew.c (update_text_area): Set phys_cursor_on_p to 0 in the + case of writing a whole row, more or less analogous to the case of + writing only parts of a row. + + * xterm.c (x_display_and_set_cursor): Set phys_cursor_width to + 0 for NO_CURSOR. + + * xterm.c (notice_overwritten_cursor): Fix an off by 1 error. + +2002-04-23 Colin Walters + + * buffer.c (syms_of_buffer): Doc fix. + +2002-04-23 Gerd Moellmann + + * xterm.c (notice_overwritten_cursor): Handle the special case + of the cursor being in the first blank non-text line at the + end of a window. + + * xterm.c (x_draw_hollow_cursor, x_draw_bar_cursor) + (x_draw_phys_cursor_glyph): Set phys_cursor_width here. + (x_display_and_set_cursor): Don't set phys_cursor_width here, for + bar cursors only, to make phys_cursor_width contain what its name + suggests. + (notice_overwritten_cursor): Consider the cursor image erased if + the output area intersects the cursor image in y-direction. + +2002-04-23 Simon Marshall + + * xfns.c (x_set_mouse_color): Change default for cross_cursor + to XC_hand2. + +2002-04-23 Pavel Jan,Am(Bk + + * xdisp.c: Remove unused global variable `minibuf_prompt_pixel_width'. + +2002-04-22 Kim F. Storm + + * textprop.c (remove_properties): Fixed trap for malformed plist. + +2002-04-22 Richard M. Stallman + + * cmds.c (Fend_of_line): Handle intangible text in mid line. + + * window.c (make_window): Initialize height_fixed_p, + last_cursor_off_p, and p->cursor_off_p slots. + +2002-04-20 Pavel Jan,Am(Bk + + * fns.c (use-dialog-box): Doc fix. + +2002-04-19 Pavel Jan,Am(Bk + + * xterm.c (note_mode_line_or_margin_highlight): Remove unused + variables `row', `i' and `area'. + (XTread_socket) : Pass KeyPress events when in menu to + toolkit library. + +2002-04-19 Stefan Monnier + + * xfaces.c (clear_font_table): Don't free the default font of + a frame even if it's on another display. + (Finternal_set_lisp_face_attribute): Don't use XFRAME on something + that could be Qt. + +2002-04-19 Juanma Barranquero + + * indent.c (Fmove_to_column): Remove unused local variable + `next_boundary_byte'. + (current_column_1): Likewise. + +2002-04-19 Eli Zaretskii + + * msdos.c (Qhbar): New variable. + (syms_of_msdos): Intern and staticpro it. + (IT_set_cursor_type, IT_set_frame_parameters): Handle the `hbar' + cursor type. + +2002-04-19 Dave Lambert + + Theses change implement an underscore-like (`hbar') cursor. + + * xterm.h (text_cursor_kinds): New enumeration member HBAR_CURSOR. + + * xterm.c (x_draw_bar_cursor): New argument KIND; callers changed. + Handle the `hbar' cursor type. + (x_display_and_set_cursor): Handle the HBAR_CURSOR case. + + * xfns.c (Qhbar): New variable. + (syms_of_xfns): Intern and staticpro it. + (x_specified_cursor_type): Handle `hbar' cursor. + + * s/sol2-5.h (bcopy, bzero, bcmp): Define only if HAVE_BCOPY is + not defined. + +2002-04-18 Richard M. Stallman + + * textprop.c (remove_properties): New arg LIST allows scanning + either a list or a plist. + (interval_has_some_properties_list): New function, like + interval_has_some_properties using list instead of plist. + All callers changed. + (Fremove_list_of_text_properties): New function. + (syms_of_textprop): Defsubr it. + +2002-04-17 Eli Zaretskii + + * s/sol2.h (HAVE_LIBKSTAT): Define only if not already defined. + +2002-04-17 Juanma Barranquero + + * indent.c (Fmove_to_column): Remove unused local variable `end_byte'. + +2002-04-17 Eli Zaretskii + + * window.c (coordinates_in_window): Don't report on margin area + if its width is zero. + +2002-04-16 Jason Rumney + + * w32fns.c (Fx_file_dialog): Decode file name before using. + + * w32term.c (construct_drag_n_drop): Likewise. + +2002-04-16 Eli Zaretskii + + * puresize.h (BASE_PURESIZE): Increase to 830000, since we now + store load-history in pure space. + + * s/msdos.h (SYSTEM_PURESIZE_EXTRA): Reduce to 50000. + +2002-04-16 Stefan Monnier + + * xterm.c (Qlatin_1, Qutf_8): New vars. + (syms_of_xterm): Initialize them. + (XTread_socket): Eliminate incorrect optimization that tried to avoid + decoding the output of X*LookupString. + Always use latin-1 to decode the output of XLookupString. + Try Xutf8LookupString if XmbLookupString failed. + + * region-cache.c (new_region_cache): Use BEG. + +2002-04-16 Gerd Moellmann + + * buffer.c (MMAP_ALLOCATED_P): New macro to be set from system + configuration files. + (mmap_enlarge): Enlarge mapped regions only if MMAP_ALLOCATED_P + returns 0. + +2002-04-15 Andreas Schwab + + * config.in: Regenerated using autoheader. + + * m/7300.h, m/acorn.h, m/alliant-2800.h, m/alliant.h, m/alpha.h, + m/altos.h, m/amdahl.h, m/apollo.h, m/arm.h, m/att3b.h, m/aviion.h, + m/celerity.h, m/clipper.h, m/cnvrgnt.h, m/convex.h, m/cydra5.h, + m/delta.h, m/delta88k.h, m/dpx2.h, m/elxsi.h, m/gec63.h, + m/gould.h, m/hp800.h, m/hp9000s300.h, m/i860.h, m/ia64.h, + m/ibmps2-aix.h, m/ibmrs6000.h, m/ibmrt-aix.h, m/ibmrt.h, + m/ibms390.h, m/intel386.h, m/iris4d.h, m/irist.h, m/isi-ov.h, + m/m68k.h, m/macppc.h, m/masscomp.h, m/mg1.h, m/mips-siemens.h, + m/mips.h, m/news-r6.h, m/news.h, m/next.h, m/nh3000.h, m/nh4000.h + m/ns32000.h, m/orion.h, m/pfa50.h, m/plexus.h, m/pmax.h, + m/powerpcle.h, m/pyrmips.h, m/sequent-ptx.h, m/sequent.h, + m/sparc.h, m/sr2k.h, m/symmetry.h, m/tad68k.h, m/tahoe.h, + m/targon31.h, m/tek4300.h, m/tekxd88.h, m/template.h, m/tower32.h, + m/tower32v3.h, m/ustation.h, m/vax.h, m/wicat.h, m/windowsnt.h, + m/xps100.h, s/aix3-2.h, s/aix4-2.h, s/irix4-0.h, s/irix5-0.h, + s/sco5.h, s/unixware.h: Don't set HAVE_ALLOCA, C_ALLOCA and + STACK_DIRECTION, now set by autoconf. + +2002-04-14 Pavel Jan,Am(Bk + + * dispnew.c (marginal_area_string): Sort arguments. + + * dispextern.h (marginal_area_string): Add prototype. + +2002-04-13 Richard M. Stallman + + * fileio.c (Finsert_file_contents): + Don't call temp_output_buffer_setup--do just part, by hand. + + * coding.c (run_pre_post_conversion_on_str): + Don't call temp_output_buffer_setup--do just part, by hand. + + * keyboard.c (command_loop_1): Don't call start_hourglass + or cancel_hourglass when executing a macro. + + * marker.c (count_markers): New function. + + * xdisp.c (display_mode_element): Don't let mode_line_proptrans_alist + grow without limit. Move recently used elements to the front. + +2002-04-13 Eli Zaretskii + + * unexelf.c (unexec) [__sgi]: Undo the change from 2002-01-20. + +2002-04-12 Gerd Moellmann + + * xdisp.c (sync_frame_with_window_matrix_rows): Don't give frame + rows marginal areas. + (Fdump_frame_glyph_matrix) [GLYPH_DEBUG]: New function. + (syms_of_xdisp) [GLYPH_DEBUG]: Defsubr it. + + * dispnew.c (marginal_area_string): Check that glyph row is enabled. + +2002-04-12 Dave Love + + * dispnew.c (marginal_area_string): New. + + * window.c (window_part): Add ON_LEFT_MARGIN, ON_RIGHT_MARGIN. + (Qleft_margin, Qright_margin): Declare. + (coordinates_in_window, (Fcoordinates_in_window_p): Deal with margins. + + * xterm.c (note_mode_line_or_margin_highlight): Renamed from + note_mode_line_highlight and extended. + + * keyboard.c (Qleft_margin, Qright_margin): Declare. + (make_lispy_event): Deal with mouse events in margins. + +2002-04-12 Stefan Monnier + + * msdos.c (dos_rawgetc): Use a single event for HELP_EVENT. + + * keyboard.c (command_loop_1): Turn off transient-mark-mode rather + than deactivating the mark if tmm is set to `lambda'. + (gen_help_event, kbd_buffer_store_help_event, kbd_buffer_get_event): + Use a single event for HELP_EVENT. + (Fexecute_extended_command): Save last_point_position. + +2002-04-12 Pavel Jan,Am(Bk + + * lisp.h (Fpropertize): Add prototype. + + * fns.c (Fy_or_n_p): Use `minibuffer-prompt' face for prompt. + +2002-04-10 Colin Walters + + * config.in: Add HAVE_SHARED_GAME_DIR. + + * callproc.c (Vgame_score_directory): New variable. + (syms_of_callproc) : DEFVAR_LISP. + +2002-04-10 Richard M. Stallman + + * puresize.h (BASE_PURESIZE): Reduce again to avoid big excess. + +2002-04-09 Stefan Monnier + + * minibuf.c (read_minibuf): Use empty_string. + (Ftry_completion): Allow lambda forms and lists of strings for `alist'. + Short-circuit the search as soon as it "failed". + (Fall_completions): Allow lambda forms and lists of strings for alist. + (Fcompleting_read): Set Qminibuffer_completion_confirm to nil + when require_match is nil. + (Ftest_completion): Rename from `test_completion' and export to elisp. + Call the predicate also when alist is a list. + Obey Vcompletion_regexp_list. + (do_completion, Fminibuffer_complete_and_exit): Use it. + (Fassoc_string): Rename from `assoc_for_completion'. + Allow list of strings as well and export to elisp. + +2002-04-08 Stefan Monnier + + * puresize.h (BASE_PURESIZE): Increase to 900KB. + +2002-04-08 Juanma Barranquero + + * w32.c (sys_accept): Don't hide variable `s'. + +2002-04-05 Gerd Moellmann + + * callint.c (Fcall_interactively): Use INTEGERP instead of + NUMBERP for checking Vhistory_length. + +2002-04-05 Pavel Jan,Am(Bk + + * sound.c (Fplay_sound_internal): Renamed from Fplay_sound. + Doc fix to reflect it. + +2002-04-04 Richard M. Stallman + + * xdisp.c (display_mode_element): New arg RISKY. + Disregard text props found or specified within a variable + that isn't marked risky-local-variable. + (Qrisky_local_variable): New variable. + (syms_of_xdisp): Init and staticpro it. + +2002-04-04 Stefan Monnier + + * undo.c (record_point): New fun. + (record_delete, record_insert): Use it. + +2002-04-03 Juanma Barranquero + + * doc.c (Fdocumentation): Add missing parentheses. + (Fdocumentation_property): Likewise. + +2002-04-03 Stefan Monnier + + * doc.c (Fdocumentation, Fdocumentation_property): When the doc + data is 0, just return nil. + +2002-04-03 Eli Zaretskii + + * msdos.c (syms_of_msdos): Fix last change with + mouse_autoselect_window. + +2002-04-03 Pavel Jan,Am(Bk + + * w32term.c, xterm.c, msdos.c: Rename autoselect_window_p to + mouse_autoselect_window. + +2002-04-02 Stefan Monnier + + * keyboard.c (make_lispy_event): Handle unknown keysyms together + with system-specific keysyms. Use it also for unknown function keys. + + * doc.c (reread_doc_file): Return whether reload was attempted. + (Fdocumentation, Fdocumentation_property): Don't try to reload + if the doc is 0 and only ask once. + + * Makefile.in (lisp, shortlisp): Add ucs-tables.elc. + +2002-04-02 Eli Zaretskii + + * keyboard.c (read_char): If the event was Qselect_window, + restore timer_idleness_start_time to its previous value. + + * msdos.c (dos_rawgetc): Generate SELECT_WINDOW_EVENTs when required. + +2002-04-01 Stefan Monnier + + * region-cache.c (new_region_cache): Use BEG. + + * marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos): + Use BEG and BEG_BYTE. + + * doc.c (get_doc_string): Return nil if the location is wrong. + (reread_doc_file): New fun. + (Fdocumentation, Fdocumentation_property): + Call it if get_doc_string fails. + (Fsnarf_documentation): Make it work for a dumped Emacs. + + * charset.h (DEC_POS, BUF_DEC_POS): Use BEG_BYTE. + Bound the search with MAX_MULTIBYTE_LENGTH to avoid pathological case. + + * charset.c (Fstring): Allow 0 arguments. + + * xterm.c (XTread_socket): Fix int/Lisp_Object confusion. + + * process.c (DATAGRAM_CONN_P, list_processes_1) + (Fprocess_datagram_address, Fset_process_datagram_address) + (Fset_network_process_options, server_accept_connection): + Fix some int/Lisp_Object confusions (thank you union types). + +2002-04-01 Pavel Jan,Am(Bk + + * msdos.c: Rename x_autoselect_window_p to autoselect_window_p. + + * w32term.c: Likewise. + (note_mouse_movement): Put code for x_autoselect_window_p in #if 0. + + * keyboard.c (Qselect_window): New symbol. + (head_table): Use it. + (keys_of_keyboard): Bound select-window event to handle-select-window. + (kbd_buffer_get_event): Make a Lisp event from SELECT_WINDOW_EVENT. + + * xterm.c: Rename x_autoselect_window_p to autoselect_window_p. + (last_window): New variable. + (XTread_socket): Generate SELECT_WINDOW_EVENTs. + (note_mouse_movement): Remove reimplemented code in #if 0. + (XTread_socket): Generate SELECT_WINDOW_EVENTs only for + Emacs windows. + + * termhooks.h (enum event_kind): New event type `SELECT_WINDOW_EVENT'. + +2002-03-31 Gerd Moellmann + + * xterm.c (x_get_char_face_and_encoding): Add parameter DISPLAY_P. + Callers changed. + +2002-03-30 Richard M. Stallman + + * window.c (window_scroll_pixel_based): Exit the move_it_by_lines + loop whenever it stops making progress. + + * widget.c (set_frame_size): Don't call change_frame_size. + +2002-03-30 Gerd Moellmann + + * dispnew.c (direct_output_for_insert): + Call mark_window_display_accurate. + +2002-03-29 Jason Rumney + + * w32term.c (w32_draw_relief_rect): Fix calculations of line lengths. + +2002-03-29 Eli Zaretskii + + * Makefile.in (lread.o): Depend on coding.h. + + * lread.c (openp, Fload): Encode the file name before passing it + to `stat', `access', and `emacs_open'. + (openp): GCPRO the encoded file name. Don't recompute Lisp + strings unnecessarily. + +2002-03-29 Kim F. Storm + + * fns.c (Flax_plist_put): Doc fix. + +2002-03-28 Miles Bader + + * process.c (DATAGRAM_CONN_P): Make sure PROC is really a process. + +2002-03-27 Pavel Jan,Am(Bk + + * process.c (set-network-process-options): Add usage. + (make-network-process): Doc fix. + +2002-03-26 Eli Zaretskii + + * emacs.c (Fdump_emacs): Fix a typo in "command-line-processed". + +2002-03-26 Richard M. Stallman + + * fns.c (Fsubstring_no_properties): New function. + (Flax_plist_get, Flax_plist_put): New functions. + (syms_of_fns): defsubr them. + + * xdisp.c (update_menu_bar): Test only update_mode_lines; + don't test or alter w->update_mode_line. + + * window.c (Fdisplay_buffer): Doc fix. + +2002-03-24 Richard M. Stallman + + * regex.c (GET_UNSIGNED_NUMBER): Give proper error for spaces. + +2002-03-24 Gerd Moellmann + + * eval.c (Qdeclare, Vmacro_declaration_function): New variables. + (Fdefmacro): Handle `(declare ...)'. + (syms_of_eval) : Initialize and staticpro. + (syms_of_eval) : DEFVAR_LISP. + +2002-03-24 Jason Rumney + + * w32fns.c (xbm_scan, xbm_load_image, xbm_read_bitmap_data) + (xbm_file_p): Add prototypes. + (xbm_format, xbm_image_p): Sync with xfns.c. + (reflect_byte): New function. + (xbm_read_bitmap_data): Sync with xfns.c, adapt for Windows. + (xbm_load_image): Create bitmaps with a depth of 1. + (init_xfns): Enable XBM images. + +2002-03-23 Jason Rumney + + * w32term.c (w32_handle_tool_bar_click): Detect up and down events + correctly. Do not pass up_modifier to keyboard buffer. + + * w32fns.c [HAVE_IMAGES, HAVE_PBM]: Remove conditionals. + +2002-03-22 Stefan Monnier + + * Makefile.in (bootstrapclean): New target. + (bootstrap-temacs, bootstrap-doc): Remove. + (bootstrap-emacs): Use a bog-standard `temacs'. + Don't bother to build a DOC file. + + * sysdep.c (wait_for_termination): Use sigsuspend rather than sigpause. + + * emacs.c (main): Handle --unibyte, --multibyte, and --no-loadup + in temacs even if !CANNOT_DUMP. + (standard_args): Keep --no-loadup even if !CANNOT_DUMP. + + * alloc.c (check_pure_size): Only output a warning. + +2002-03-22 Jason Rumney + + * w32fns.c (Fx_create_frame): Enable tool-bar when images are + supported. + + * w32term.c (zv_bits): Declare as short, for word alignment. + (w32_read_socket) : Fix last change. + (syms_of_w32term): Define x-use-underline-position-properties. + + * w32fns.c (x_set_cursor_color): Set cursor_gc as well. + (clear_image_cache): Block input, fix logic, clear matrices in + all frames that share this cache. + +2002-03-22 Eli Zaretskii + + * emacs.c (main): Update the Copyright year in the blurb printed + by "emacs --version". + + * xdisp.c (message_with_string): Fix syntax of a call to GCPRO2. + + * xterm.c (XTread_socket): If XK_ISO_Lock and + XK_ISO_Last_Group_Lock are defined, handle keysyms between + XK_ISO_Lock and XK_ISO_Last_Group_Lock similarly to Mode_switch. + +2002-03-21 Kim F. Storm + + * keyboard.c (menu_bar_items): Mostly undo 2002-02-20 patch, so + menu-bar bindings in keymap and local-map properties _are_ used. + But try keymap property first in accordance with 2002-01-03 patch. + Added comment describing why this is not always reliable. + (tool_bar_items): Ditto for tool-bar. + +2002-03-21 Jason Rumney + + * w32fns.c (x_clear_image_1): Disable color table code. + +2002-03-21 Kim F. Storm + + * lisp.h (DEFUN) [USE_NONANSI_DEFUN]: The 2001-10-17 patch + removed the wrong version of the DEFUN macro; fixed it. + + * fns.c (Ffeaturep): Allow subfeature to be a list (test using + Fmember rather than Fmemq). + (Fprovide): Check that subfeatures is a list. + + * process.c (QCfeature, QCdatagram): Removed variables. + (QCtype, Qdatagram): New variables. + (network_process_featurep): Removed function. + (Fmake_network_process): Removed :feature check. + Use :type 'datagram instead of :datagram t to create a datagram + socket. This allows us to add other connection types (e.g. raw + sockets) later in a consistent manner. + (init_process) [subprocess, HAVE_SOCKETS]: Provide list of + supported subfeatures for feature make-network-process. + (syms_of_process) [subprocess]: Remove QCfeature and QCdatagram. + Intern and staticpro QCtype and Qdatagram. + (syms_of_process) [!subprocess]: Intern and staticpro QCtype. + + * xfns.c (QCtype): Remove duplicate declaration and + initialization (is now declared in process.c). + + * w32fns.c (QCtype): Remove duplicate declaration and + initialization (is now declared in process.c). + +2002-03-21 Richard M. Stallman + + * regex.c (DISCARD_FAILURE_REG_OR_COUNT): New macro. + (CHECK_INFINITE_LOOP): Use DISCARD_FAILURE_REG_OR_COUNT + when jumping to `fail' to avoid undoing reg changes in the + last iteration of the loop. + (GET_UNSIGNED_NUMBER): Skip spaces around the number. + + * Makefile.in (dispnew.o, sysdep.o, xdisp.o, xselect.o, alloc.o): + Depend on process.h. + +2002-03-20 Jason Rumney + + Most of the following changes are still conditional on HAVE_IMAGES + which is not set by default on Windows. + + * emacs.c (main) [WINDOWSNT]: Call init_xfns. + + * w32fns.c (x_set_cursor_color): Set foreground of cursor, not frame. + (Fimage_size, Fimage_mask_p, XPutPixel): New functions. + (four_corners_best, x_clear_image_1, x_clear_image) + (x_alloc_image_color, postprocess_image) + (x_create_x_image_and_pixmap, x_destroy_x_image, xbm_load_image) + (x_from_x_colors, x_disable_image, pbm_load): Adapt for Windows. + (init_xfns, syms_of_w32fns): Initialize image functions and constants. + + * w32gui.h (struct XImage): Define. + + * w32term.c (w32_read_socket) : Use XFASTINT to + extract mouse co-ordinates. + +2002-03-20 Jason Rumney + + * w32.c (init_winsock): Dynamically load new server and UDP + socket functions. + (socket_to_fd): New function. + (sys_socket): Use it. + (sys_setsockopt, sys_listen, sys_getsockname, sys_accept) + (sys_recvfrom, sys_sendto): New wrapper functions. + + * process.c (QCfamily, QCfilter): Remove duplicate declaration + and initialization. + + * makefile.w32-in (LIBS): Remove $(WSOCK32). + +2002-03-20 Eli Zaretskii + + * process.c (conv_sockaddr_to_lisp, conv_lisp_to_sockaddr): + Don't use "sun" as a variable, it's a predefined constant on Sun + machines. + +2002-03-20 Pavel Jan,Am(Bk + + * bytecode.c (Fbyte_code): Revert last change. + +2002-03-19 Kim F. Storm + + * makefile.w32-in (LIBS): Add $(WSOCK32). + From David Ponce . + +2002-03-18 Pavel Jan,Am(Bk + + * process.c (wait_reading_process_input): Move variables `pname' + and `pnamelen' down where they are used. + + * bytecode.c (Fbyte_code): Discard unused computed value to + prevent gcc warning. + + * lisp.h (Fplist_member): Add prototype. + +2002-03-18 Kim F. Storm + + * config.in: Add HAVE_SENDTO, HAVE_RECVFROM, HAVE_SETSOCKOPT, + HAVE_GETSOCKOPT, HAVE_GETPEERNAME, HAVE_GETSOCKNAME, and HAVE_SYS_UN_H. + + * process.c: Define HAVE_LOCAL_SOCKETS based on HAVE_SYS_UN_H. + Remove explicit GNU_LINUX settings for datagram support. + +2002-03-18 Pavel Jan,Am(Bk + + * process.c (Fmake_network_process): Remove unused variable `sa'. + Doc fix. Add usage:. + (set_socket_options): Remove unused variables `optnum' and `opttype'. + +2002-03-17 Richard M. Stallman + + * xdisp.c (cursor_type_changed): New variable. + (redisplay_internal): Redisplay all windows if cursor_type_changed. + Clear it when clearing windows_or_buffers_changed. + (try_cursor_movement, redisplay_window, try_window_id) + (try_window_reusing_current_matrix): Test cursor_type_changed + along with windows_or_buffers_changed. + + * window.h (cursor_type_changed): New variable. + + * xfns.c (x_set_cursor_type): Set cursor_type_changed, + not update_mode_lines, and always set it to 1. + + * xdisp.c (clear_garbaged_frames): Don't set windows_or_buffers_changed + if no frames needed redrawing. + +2002-03-17 Kim F. Storm + + The following changes add support for network server processes, + datagram connections, and local (unix) sockets. + + * process.h (struct Lisp_Process): New member log. + Doc fix: Member command used to indicate stopped network process. + Doc fix: Member childp contains plist for network process. + Doc fix: Member kill_without_query is inverse of query-on-exit flag. + + * process.c (Qlocal, QCname, QCbuffer, QChost, QCservice, QCfamily) + (QClocal, QCremote, QCserver, QCdatagram, QCnowait, QCnoquery, QCstop) + (QCcoding, QCoptions, QCfilter, QCsentinel, QClog, QCfeature): New + variables. + (NETCONN1_P): New macro. + (DATAGRAM_SOCKETS): New conditional symbol. + (datagram_address): New array. + (DATAGRAM_CONN_P, DATAGRAM_CHAN_P): New macros. + (status_message): Use concat3. + (Fprocess_status): Add `listen' status to doc string. Return + `stop' for a stopped network process. + (Fset_process_buffer): Update contact plist for network process. + (Fset_process_filter): Ditto. Don't enable input for stopped + network processes. Server must listen, even if filter is t. + (Fset_process_query_on_exit_flag, Fprocess_query_on_exit_flag): + New functions. + (Fprocess_kill_without_query): Removed. Now defined in simple.el. + (Fprocess_contact): Added KEY argument. Handle datagrams. + (list_processes_1): Optionally show only processes with the query + on exit flag set. Dynamically adjust column widths. Omit tty + column if not needed. Report stopped network processes. Identify + server and datagram network processes. + (Flist_processes): New optional arg `query-only'. + (conv_sockaddr_to_lisp, get_lisp_to_sockaddr_size) + (conv_lisp_to_sockaddr, set_socket_options) + (network_process_featurep, unwind_request_sigio): New helper + functions. + (Fprocess_datagram_address, Fset_process_datagram_address): + (Fset_network_process_options): New lisp functions. + (Fopen_network_stream): Removed. Now defined in simple.el. + (Fmake_network_process): New lisp function. Code is based on + previous Fopen_network_stream, but heavily reworked with new + property list based argument list, support for datagrams, server + processes, and local sockets in addition to old client-only + functionality. + (server_accept_connection): New function. + (wait_reading_process_input): Use it to handle incoming connects. + Do not enable input on a new connection if process is stopped. + (read_process_output): Handle datagram sockets. Use 2k buffer for + them. + (send_process): Handle datagram sockets. + (Fstop_process, Fcontinue_process): Apply to network processes. A + stopped network process is indicated by setting command field to t. + (Fprocess_send_eof): No-op if datagram connection. + (Fstatus_notify): Don't read input for a stream server socket or a + stopped network process. + (init_process): Initialize datagram_address array. + (syms_of_process): Intern and staticpro new variables, defsubr new + functions. + +2002-03-16 Jason Rumney + + * w32fns.c (w32_to_all_x_charsets): Return correct type in + startup case. + +2002-03-16 Richard M. Stallman + + * xdisp.c (redisplay_internal, redisplay_windows): + Use list_of_error to call internal_condition_case_1. + (safe_eval, safe_call): Pass Qt to internal_condition_case_{1,2} + so as to catch all errors with no possibility of debugger redisplay. + (list_of_error): New variable. + (syms_of_xdisp): Init and staticpro it. + + * print.c (print_object): Delete `\ ' from printed rep of frame. + +2002-03-15 Eli Zaretskii + + * msdos.c (dos_rawgetc): Disable the x-autoselect-window feature, + until its implementation is fixed. + +2002-03-14 Pavel Jan,Am(Bk + + * xfns.c (png_load): Remove unused variable `gamma_str'. + +2002-03-14 Richard M. Stallman + + * xfns.c (x_real_positions): Handle failure in XQueryTree. + +2002-03-14 Miles Bader + + * intervals.c (adjust_for_invis_intang): New function. + (set_point_both): Use `adjust_for_invis_intang' to do most of the + work for dealing with invisible+intangible regions. Do so before + and after both forward and backward movements, to handle both + front-sticky and rear-sticky cases. + * textprop.c (text_property_stickiness): Function moved here from + `editfns.c'. + * intervals.h (text_property_stickiness): New declaration. + * editfns.c (char_property_eq): Function removed. + (text_property_stickiness): Function moved to `textprop.c'. + +2002-03-13 Jason Rumney + + * config.in: Add STRFTIME_NO_POSIX2. + + * strftime.c (my_strftime) [STRFTIME_NO_POSIX2]: Handle %h, %EX + and %OX when underlying strftime does not. + +2002-03-13 Stefan Monnier + + * xterm.c (x_set_toolkit_scroll_bar_thumb) : + Use a fixed-size thumb (based on an ad-hoc estimate of 30 chars per + line) to avoid annoying flicker. + (xm_scroll_callback): Get rid of the now unnecessary kludge. + (XTread_socket): Mark it static. + + * xdisp.c (display_mode_element): Fix int/Lisp_Object mixup. + +2002-03-13 Kim F. Storm + + * puresize.h (BASE_PURESIZE): Increase to 775000. + +2002-03-12 Juanma Barranquero + + * editfns.c (syms_of_editfns): Fix typo. + +2002-03-12 Gerd Moellmann + + * xsmfns.c: Include stdio.h because termhooks.h needs it. + Include termopt.h for interrupt_input. + +2002-03-11 Andreas Schwab + + * coding.c (syms_of_coding) : Doc fix. + +2002-03-11 Gerd Moellmann + + * xterm.c (note_mouse_movement): Put code for + x_autoselect_window_p in #if 0. + + * lread.c (Fload): Don't assume that message_with_string uses the + string it is given like a C string. + +2002-03-10 Jan Dj,Ad(Brv + + * xterm.h (x_session_check_input, x_session_initialize): Declare. + + * xterm.c (XTread_socket): Add call to x_session_check_input and + x_session_have_connection. + (x_initialize): Add call to x_session_initialize. + + * termhooks.h (enum event_kind): Add save_session_event. + + * keyboard.c: Add Emacs event save_session_event. + + * emacs.c (main): Add call to syms_of_xsmfns. + + * lisp.h (syms_of_xsmfns): Declare extern. + + * config.in: Add HAVE_X_SM. + + * Makefile.in (LIBXT): Add -lSM -lICE + if HAVE_X_SM and not USE_X_TOOLKIT. + (XOBJ): New file xsmfns.c added. + + * xsmfns.c: New file for X session management. + +2002-03-09 Jason Rumney + + * fileio.c (Fcopy_file) [WINDOWS_NT]: Ensure file is not + read-only when setting modified time. + +2002-03-08 Gerd Moellmann + + * xdisp.c (move_it_vertically_backward): At the end of the function, + when moving forward by lines, treat terminal frames specially. + + * keyboard.c (echo_char): Make sure to add a separator between + keys even if echo_dash hasn't been called. + + * xdisp.c: Use new string macros. + (update_echo_area): Pass number of bytes to message3 instead of + number of chars. + (set_message_1): Don't access a string's size_byte directly. + (decode_mode_spec_coding): Use number of bytes of eoltype string + instead number of chars. + + * lisp.h (SREF, SDATA, SCHARS, SBYTES, SMBP): New macros. + +2002-03-08 Juanma Barranquero + + * w32fns.c (Fx_display_color_cells): Force 24+ bit color depths to + 24-bit. + +2002-03-06 Jason Rumney + + * w32term.c (x_draw_hollow_cursor): Draw same size as block cursor. + +2002-03-06 Gerd Moellmann + + * keyboard.c (echo_prompt, echo_char, echo_dash, echo_now) + (cancel_echoing, echo_length, echo_truncate): Changed to + work with new kboard definition. + (echo_now): Use message3_nolog instead of message2_nolog. + + * alloc.c (mark_kboards): Mark echo_string. + + * keyboard.h (ECHOBUFSIZE): Removed. + (struct kboard): Member echoptr removed, member echobuf renamed + to echo_string. + + * xdisp.c (message_with_string): Use Fformat instead of doprnt and + message3 instead of message2 to display the message using STRING's + text properties. + +2002-03-05 Andreas Schwab + + * xdisp.c (hscroll_margin): Change to EMACS_INT. + +2002-03-05 Per Abrahamsen + + * frame.c (default-frame-alist): Explain that setting it doesn't + affect existing frames. + +2002-03-05 Stefan Monnier + + * indent.c (skip_invisible): Fix my brain fart. + + * dispnew.c (sit_for): Don't wait if executing a kbd macro. + +2002-03-04 Stefan Monnier + + * dosfns.c, dosfns.h, dispnew.c, dispextern.h, commands.h, charset.c, + * alloc.c, abbrev.c, emacs.c, eval.c, keyboard.c, keyboard.h, + * lisp.h, lread.c, sysdep.c, termcap.c, termchar.h, w32term.c, + * window.c, xdisp.c, xselect.c, xterm.c: Change defvar_int definition + and variables to use EMACS_INT instead of just int. + + * buffer.c (syms_of_buffer): Allow non-string `mode-name'. + +2002-03-04 Eli Zaretskii + + * sysdep.c (sys_subshell) [MSDOS]: If PWD is set in the + environment, pass it down with corrected value. + +2002-03-04 Pavel Jan,Am(Bk + + * lread.c (read_filtered_event): Do not call start_hourglass + before returning. + +2002-03-04 Juanma Barranquero + + * w32term.c (x_display_and_set_cursor): Fix typo. + +2002-03-03 Richard M. Stallman + + * fileio.c (Fmake_temp_name): Doc fix. + +2002-03-03 Gary Wong + + * termcap.c [!emacs]: Replace ospeed for building standalone + libtermcap, for binary compatibility. + + * tparam.c [!emacs]: Move #define of bcopy to after string.h. + +2002-03-03 Richard M. Stallman + + * xrdb.c (file_p): Rename arg `path' to `filename'. + + * abbrev.c (Fexpand_abbrev): Increment plist as use count + only if it is an integer. + + * xfns.c (png_load): Set screen_gamma based on f->gamma. + If png_get_sRGB gives an answer, call png_set_gamma + using the default image gamma value. + + * lread.c (read1): When reading from a file, default string to + multibyte only if it has some multibyte characters. + + * print.c (print_object): Output multibyte chars 128...255 + using \x even if ! print_escape_multibyte. + + * xdisp.c (display_mode_element): Move the places where + bytepos, charpos, this, and lisp_string are set. + Use lisp_string to set bytepos. + + * xdisp.c (redisplay_internal): + Call clear_image_cache only if HAVE_WINDOW_SYSTEM. + + * xdisp.c (display_mode_element): Merge properties specified with + :propertize onto those that come with the string. + +2002-03-03 Eli Zaretskii + + * xdisp.c (syms_of_xdisp) : Renamed from + automatic-hscrolling. Users changed. + : Renamed from automatic-hscroll-margin. + Users changed. + : Renamed from automatic-hscroll-step. Users changed. + +2002-03-02 Eli Zaretskii + + * buffer.c (syms_of_buffer) : Doc fix. + +2002-03-02 Kim F. Storm + + * window.c (Fminibuffer_selected_window): New function. + (syms_of_window): Defsubr it. + +2002-03-01 Kim F. Storm + + * window.h (struct window): New member phys_cursor_width. + + * window.c (make_window, replace_window): Init phys_cursor_width. + + * xterm.c (x_display_and_set_cursor): Blink box cursor using + hollow box cursor. Blink bar cursor using 1 pixel wide bar. + + * w32term.c (x_display_and_set_cursor): Blink box cursor using + hollow box cursor. Blink bar cursor using 1 pixel wide bar. + + * lisp.h (GCPRO6): New macro. + + * process.c (Fopen_network_stream): Use GCPRO6. + +2002-03-01 Kim F. Storm + + * process.c (Qconnect, Qfailed): New variables. + (syms_of_process): Intern and staticpro them. + (Fprocess_status): Document connect and failed return values. + [NON_BLOCKING_CONNECT]: New conditional. + (connect_wait_mask, num_pending_connects): New variables. + (status_message): Convert Qfailed status. + (Fopen_network_stream): Added support for non-blocking connect. + New optional args: filter, sentinel, non_blocking. Doc updated. + [HAVE_GETADDRINFO, !HAVE_GETADDRINFO]: Merged common code. + (deactivate_process): Handle pending non-blocking connect. + (wait_reading_process_input): Poll for status of non-blocking + connects. Exec sentinel directly when connect succeeds. + (status_notify): Don't read process output if not yet connected. + +2002-02-28 Kim F. Storm + + * window.c (minibuf_selected_window): Renamed from + Vminibuf_selected_window. Users changed. + (syms_of_window): Staticpro it. + +2002-02-26 Kim F. Storm + + The following changes add a new Vminibuf_selected_window variable + which is similar to Vminibuf_scroll_window, but which is only set + on entry to the minibuffer (from a non-minibuffer window): + + * window.c (Vminibuf_selected_window): New variable. + (struct save_window_data): New member minibuf_selected_window. + (Fset_window_configuration): Restore Vminibuf_selected_window. + (Fcurrent_window_configuration): Save Vminibuf_selected_window. + Set minibuf_scroll_window member to nil if minibuf_level is 0. + (compare_window_configurations): Compare minibuf_selected_window. + + * window.h (Vminibuf_selected_window): Declare extern. + + * minibuf.c (read_minibuf): Set Vminibuf_selected_window on first + entry to minibuffer or on entry from a non-minibuffer window. + + * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): Compare with + Vminibuf_selected_window instead of Vminibuf_scroll_window. + + * xdisp.c (init_iterator): Compare with Vminibuf_selected_window + instead of Vminibuf_scroll_window when deciding in which window + the region should be highlighted. Consequently, the region remains + highlighteded even when a completion buffer is also displayed. + +2002-02-26 Eli Zaretskii + + * fileio.c (Fsubstitute_in_file_name): Fix the change from 2002-02-08. + + * xselect.c (Qcompound_text_with_extensions): Renamed from + Qcompound_text_no_extensions. + (lisp_data_to_selection_data, syms_of_xselect): Use the new name. + +2002-02-26 Juanma Barranquero + + * w32proc.c (syms_of_ntproc): Doc fix. + +2002-02-24 Pavel Jan,Am(Bk + + * intervals.h: Include "dispextern.h" unconditionally. + +2002-02-24 Jason Rumney + + * Makefile.in (WINNT_SUPPORT) [WINDOWSNT]: Add w32-vars.elc + and disp-table.elc. + (lisp): Add emacs-lisp/backquote.elc. + +2002-02-24 Kim F. Storm + + * keymap.c (Flookup_key): Fix problem in 2001-12-28 patch: + The validation of the event type was too strict as it didn't + allow string events; buffer names are used in bindings for + menu-bar-select-buffer (see `menu-bar-update-buffers'). + +2002-02-23 Kim F. Storm + + The following changes rework my patch of 2002-02-06 which + added command remapping by entering the commands directly into + the keymaps. Now, command remapping uses an explicit `remap' + prefix in the keymaps, i.e. [remap COMMAND]. + + * keymap.c (Qremap, remap_command_vector): New variables. + (is_command_symbol): Remove function. + (Fdefine_key): No longer accept a symbol for KEY. + Added validation of [remap COMMAND] argument for KEY. + The DEF is no longer required to be a symbol when remapping a command. + (Fremap_command): New function to remap command through keymaps. + (Flookup_key): Perform command remapping initiated by + Fremap_command directly for speed. + (Fkey_binding): Use Fremap_command for command remapping. + (where_is_internal): Handle new command remapping representation. + (syms_of_keymap): Intern Qremap, initialize remap_command_vector, + staticpro them. Defsubr Fremap_command. + + * keymap.h (Fremap_command): Declare extern. + (is_command_symbol): Remove extern. + + * keyboard.c (command_loop_1): Use Fremap_command for command + remapping; now try command remapping for all symbols. + +2002-02-23 Eli Zaretskii + + * coding.h (run_pre_post_conversion_on_str): Add prototype. + +2002-02-23 Jason Rumney + + * w32select.c (Fw32_set_clipboard_data): Run pre-write-conversion + on the string before encoding it. + (Fw32_get_clipboard_data): Run post-read-conversion on the string + after decoding it. + + * w32fns.c (w32_wnd_proc) : Fix last change. + +2002-02-23 Pavel Jan,Am(Bk + + * w32term.c (enter_timestamp): Remove unused static variable to + prevent warning. + + * xterm.c (enter_timestamp): Put in #if 0 to prevent warning. + +2002-02-23 Eli Zaretskii + + * w16select.c (Fw16_get_clipboard_data): Fix last change. + + * xselect.c (selection_data_to_lisp_data): Fix last change. + +2002-02-22 Jason Rumney + + * w32term.h (struct w32_output): New member menu_command_in_progress. + + * w32menu.c (menubar_selection_callback): Free the menu and + clear the menu_command_in_progress flag. + + * w32fns.c (mouse_move_timer, mouse_button_timer): Initialize. + (menu_free_timer): New variable. + (MENU_FREE_ID, MENU_FREE_DELAY): New constants. + (w32_wnd_proc) : Handle menu_free_timer. + : Delay before freeing menu. Do nothing if a + menu command is in progress. + : Set the menu_command_in_progress flag. + Kill any menu_free_timer that is running. + + * w32term.c (w32_text_out): Renamed from W32_TEXTOUT. + Call ExtTextOutA rather than ExtTextOut. + +2002-02-22 Eli Zaretskii + + * puresize.h (BASE_PURESIZE): Increase to 755000. + +2002-02-22 Eli Zaretskii + + * w16select.c (Fw16_set_clipboard_data): Run pre-write-conversion + on the string before encoding it. + (Fw16_get_clipboard_data): Run post-read-conversion on the string + after decoding it. + +2002-02-22 Eli Zaretskii + + Support for ICCCM Extended Segments in X selections: + + * xselect.c : New variable. + (syms_of_xselect): Intern and staticpro it. + (selection_data_to_lisp_data): Run post-read-conversion on decoded + selection text. + (lisp_data_to_selection_data): If next-selection-coding-system is + compound-text-no-extensions, set the type of selection to be + compound-text. + + * xterm.h (x_encode_text): Update prototype. + + * xfns.c (x_encode_text): Accept additional arg SELECTIONP; all + callers changed. If SELECTIONP is non-zero, run the + pre-write-conversion function before encoding the selection text. + +2002-02-21 Kim F. Storm + + * frame.c (syms_of_frame): Change mouse-highlight default to t. + + * keyboard.c (kbd_buffer_get_event) [WINDOWSNT]: + Correct composing of language-change event. + +2002-02-20 Kim F. Storm + + * keyboard.c (menu_bar_items): Don't include keymap or local-map + bindings at PT when building menu (the menu is not updated often + enough for this to work reliable). + (tool_bar_items): Likewise. + (current_active_maps): Removed unused (and buggy) function. + +2002-02-20 Pavel Jan,Am(Bk + + * xfns.c (gif_load): Use correct width and height for GIF images. + +2002-02-19 Eli Zaretskii + + * floatfns.c (Fatan): Accept an optional second arg and call + atan2 if passed 2 args. + +2002-02-18 Jason Rumney + + * w32term.c (glyph_rect): Determine the row and glyph more precisely. + +2002-02-17 Jason Rumney + + * w32term.c (x_autoselect_window_p): New variable. + (syms_of_w32term): DEFVAR_BOOL and initialize it. + (note_mouse_movement): Use it. + + * w32fns.c (w32_load_system_font): Never set fonts_changed_p to zero. + + * w32bdf.c (w32_load_bdf_font): Maybe set fonts_changed_p. + + * w32fns.c (Qfullscreen, Qfullwidth, Qfullheight, Qfullboth): + New variables. + (syms_of_w32fns): Intern and staticpro them. + (x_frame_parms) <"fullscreen">: New parameter. + (x_fullscreen_move, x_set_fullscreen): New functions. + (x_set_frame_parameters): Support Qfullscreen. + (x_real_positions): Save x/y_pixels_diff frame params. + (x_figure_window_size): Support full-screen frames. + (Fx_create_frame): Default the fullscreen parameter. + + * w32term.c (x_check_fullscreen, x_check_fullscreen_move) + (x_fullscreen_adjust): New functions. + (w32_read_socket) : Don't resize to + fullscreen. Call x_check_fullscreen_move, and set the + want_fullscreen member of output_data.w32 + : Call x_check_fullscreen. + + * w32term.h: New enum for FULLSCREEN_* constants. + (struct w32_output): New members want_fullscreen, x_pixels_diff, + y_pixels_diff, x_pixels_outer_diff, and y_pixels_outer_diff. + (x-fullscreen-adjust): New prototype. + +2002-02-17 Kim F. Storm + + * frame.c (Vmouse_highlight): New variable. + (syms_of_frame): DEFVAR_LISP it. + + * frame.h (Vmouse_highlight): Declare extern. + + * xterm.h (struct x_display_info): Add mouse_face_hidden. + + * xterm.c (disable_mouse_highlight): Removed variable. + (note_mouse_highlight): Don't highlight if Vmouse_highlight is nil. + (show_mouse_face): Don't show highlight if mouse_face_hidden is set. + (XTread_socket): Turn mouse_face_hidden off after mouse movement, + and on after keyboard input. + (x_term_init): Initialize mouse_face_hidden. + + * msdos.h (struct display_info): Add mouse_face_hidden. + + * msdos.c (disable_mouse_highlight): Removed variable. + (show_mouse_face): Don't show highlight if mouse_face_hidden is set. + (IT_note_mouse_highlight): Don't highlight if Vmouse_highlight is nil. + (internal_terminal_init): Initialize mouse_face_hidden. + (dos_rawgetc): Turn mouse_face_hidden off after mouse movement, + and on after keyboard input. + + * w32term.h (struct w32_display_info): Add mouse_face_hidden. + + * w32term.c (disable_mouse_highlight): Removed variable. + (note_mouse_highlight): Disable highlight if Vmouse_highlight is nil. + (show_mouse_face): Don't show highlight if mouse_face_hidden is set. + (w32_read_socket): Turn mouse_face_hidden off after mouse movement, + and on after keyboard input. + (w32_initialize_display_info): Initialize mouse_face_hidden. + +2002-02-16 Eli Zaretskii + + * msdos.c (last_mouse_window): New variable. + (dos_rawgetc): Fix last change--if the mouse is in the same window + as recorded in last_mouse_window, don't select this window. + + * Makefile.in (lisp, shortlisp): Use cus-start.elc, not cus-start.el. + + * msdos.c (x_autoselect_window_p): New variable. + (syms_of_msdos): Defvar it. + (dos_rawgetc): If x_autoselect_window_p is set, select the window in + which the last mouse movement occured, unless it is already selected. + + * xdisp.c (automatic_hscroll_margin, Vautomatic_hscroll_step): + New variables. + (syms_of_xdisp): DEVFAR them. + (hscroll_window_tree): Use automatic_hscroll_margin and + Vautomatic_hscroll_step to compute the amount of window scrolling. + +2002-02-16 Pavel Jan,Am(Bk + + * xterm.c (x-autoselect-window): New variable. + (note_mouse_movement): Use it. + + * keyboard.c: Do not include "systime.h" twice. + +2002-02-15 Andreas Schwab + + * puresize.h (PURESIZE_RATIO): Increase to 9/5. + + * alloc.c (NSTATICS): Increase to 1280. + +2002-02-15 Kai Gro,A_(Bjohann + + * alloc.c (NSTATICS): Bump to 1026. + + * xterm.c (Vx_alt_keysym, Vx_hyper_keysym, Vx_meta_keysym) + (Vx_super_keysym): New variables. + (syms_of_xterm): DEFVAR_LISP them. + (x_x_to_emacs_modifiers, x_emacs_to_x_modifiers): Use the + variables to determine which keys to use for the various modifiers. + +2002-02-13 Kim F. Storm + + * window.c (Vmode_line_in_non_selected_windows): Removed. + (mode_line_in_non_selected_windows): New variable. + (syms_of_window): DEFVAR_BOOL it. + + * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): + Use mode_line_in_non_selected_windows. + (mode_line_in_non_selected_windows): Declare extern. + (Vmode_line_in_non_selected_windows): Removed extern. + +2002-02-13 Richard M. Stallman + + * keyboard.c (Fthis_command_keys, Fthis_command_keys_vector) + (Fthis_single_command_keys, Fthis_single_command_raw_keys) + (Fclear_this_command_keys): Doc fixes. + + * xfaces.c (Finternal_make_lisp_face, Finternal_copy_lisp_face) + (update_face_from_frame_parameter): Increment face_change_count + and windows_or_buffers_changed to force redisplay using changed faces. + + * xdisp.c (QCpropertize): New variable. + (mode_line_proptrans_alist): New variable. + (display_mode_element): New arg PROPS; all calls changed. + Implement this, for strings. + Handle literal output of strings by sharing the + main-line code for strings, using local var `literal'. + Handle :propertize feature. + (syms_of_xdisp): Initialze and staticpro QCpropertize and + mode_line_proptrans_alist. + +2002-02-11 Kim F. Storm + + * window.c (Vmode_line_in_non_selected_windows): New variable. + (syms_of_window): DEFVAR_LISP it. + + * dispextern.h (CURRENT_MODE_LINE_FACE_ID_3): New macro. + (CURRENT_MODE_LINE_FACE_ID): Use it. + (Vmode_line_in_non_selected_windows): Declare extern. + + * xdisp.c (display_mode_lines): Use CURRENT_MODE_LINE_FACE_ID_3 + to get mode line face. + +2002-02-11 Eli Zaretskii + + * msdos.c (Vx_bitmap_file_path, x_stretch_cursor_p): Remove these + variables; cus-start.el doesn't need them anymore. + +2002-02-09 Kim F. Storm + + * insdel.c (make_gap_smaller): Preserve BEG_UNCHANGED during gap + reduction. This fixes a display problem where stray newlines were + inserted in the window (corrected by C-l). Clarified code (IMHO). + +2002-02-09 Eli Zaretskii + + * dispextern.h (CURRENT_MODE_LINE_FACE_ID): Fix last change. + + * xdisp.c (display_mode_lines): Fix last change. + +2002-02-09 Jason Rumney + + * w32fns.c (enum_font_cb2): Don't let charsets unknown to Windows + match each other. + (w32_load_system_font): Prevent Cleartype fonts from loading. + (Fx_show_tip): Ensure tip frames are above other topmost windows. + +2002-02-09 Kim F. Storm + + * dispextern.h (CURRENT_MODE_LINE_FACE_ID): New macro. + (CURRENT_MODE_LINE_HEIGHT): Use it. + (enum face_id): Add MODE_LINE_INACTIVE_FACE_ID. + + * xdisp.c (window_box_height): Use CURRENT_MODE_LINE_FACE_ID. + (pos_visible_p, handle_face_prop): Likewise. + (display_mode_lines): Likewise, but for the real selected window. + (init_iterator) [row == NULL]: Handle MODE_LINE_INACTIVE_FACE_ID. + + * xfaces.c (Qmode_line_inactive): New face variable for mode-line + in non-selected windows. + (realize_basic_faces): Realize it. + (syms_of_term): Intern and staticpro it. + +2002-02-08 Kim F. Storm + + * alloc.c (SETJMP_WILL_LIKELY_WORK, SETJMP_WILL_NOT_WORK): + Changed mail addresses to emacs-devel@gnu.org. + +2002-02-08 Eli Zaretskii + + * fileio.c (Fsubstitute_in_file_name): If the file name includes + ~user, and there's no such user, don't discard everything before ~user. + + * floatfns.c (Fround): Doc fix. + +2002-02-08 Pavel Jan,Am(Bk + + * sysdep.c (init_system_name): Put unused variable `p' in #if 0. + +2002-02-07 Stefan Monnier + + * lisp.h (Fx_file_dialog): Add extern decl (used in fileio.c). + +2002-02-07 Kim F. Storm + + * keymap.c (where_is_internal): Only check whether definition is + remapped if it fulfills is_command_symbol. + +2002-02-07 Andreas Schwab + + * s/gnu-linux.h (GC_LISP_OBJECT_ALIGNMENT): Define to 2 for m68k. + + * alloc.c (mark_stack): Don't assume sizeof (Lisp_Object) is 4. + +2002-02-06 Kim F. Storm + + * keymap.c (Fdefine_key): Allow symbol as KEY argument for + defining command remapping. Doc updated. + (Flookup_key): Remap command through keymap if KEY is a symbol. + (is_command_symbol): New function. + (Fkey_binding): Use it. New optional argument NO-REMAP. + Doc updated. Callers changed. Perform command remapping via + recursive call unless that arg is non-nil. + (where_is_internal): New argument no_remap. Callers changed. + Call recursively to find original key bindings for a remapped + comand unless that arg is non-nil. + (Fwhere_is_internal): New optional argument NO-REMAP. + Doc updated. Callers changed. Pass arg to where_is_internal. + + * keymap.h (Fkey_binding, Fwhere_is_internal): Update prototype. + (is_command_symbol): Add prototype. + + * keyboard.c (Vthis_original_command): New variable. + (syms_of_keyboard): DEFVAR_LISP it. + (command_loop_1): Set it, and perform command remapping. + +2002-02-06 Pavel Jan,Am(Bk + + * keyboard.c (recursive_edit_1): Call cancel_hourglass unconditionally. + +2002-02-06 Jason Rumney + + * w32term.c (w32_native_per_char_metric): Disable 2002-01-20 change. + +2002-02-06 Eli Zaretskii + + * charset.c (get_charset_id): Use if-else instead of ?:. + +2002-02-06 Richard M. Stallman + + * filelock.c (S_ISLNK): Define if not defined. + +2002-02-03 Richard M. Stallman + + * fileio.c (Fdo_auto_save): Improve "auto save disabled" msg. + + * lread.c (read1): Redesign strategy for force_multibyte and + force_singlebyte. Now is_multibyte records whether read_buffer + is multibyte. Encountering any multibyte character makes it so. + +2002-02-02 Stefan Monnier + + * term.c (term_get_fkeys_1): If `k0' and `k;' are both specified and + with the same sequence, map that sequence to f10 rather than f0. + +2002-02-03 Andreas Schwab + + * s/gnu-linux.h: Check for __mc68000__ instead of __m68k__, the + latter never being defined on GNU/Linux. + +2002-02-02 Eli Zaretskii + + * xfaces.c (realize_default_face): Don't set the weight and slant of + the default face to Qnormal, unless these attributes are unspecified. + +2002-02-02 Pavel Jan,Am(Bk + + * keyboard.c (command_loop_1) [HAVE_X_WINDOWS]: + Call cancel_hourglass unconditionally. + + * eval.c (Fsignal): Remove duplicated declaration of + the variable `display_hourglass_p'. + +2002-01-31 Richard M. Stallman + + * editfns.c (region_limit): Nicer error message. + + * coding.c (decode_composition_emacs_mule): + Give up if NCOMPONENT gets too large to index `component'. + + * callint.c (check_mark): New arg to specify clearer error message. + Callers changed. + +2002-01-27 Richard M. Stallman + + * minibuf.c (Fcompleting_read): Doc fix. + +2002-01-27 Pavel Jan,Am(Bk + + * minibuf.c (Fread_from_minibuffer, Fread_command, Fread_function) + (Fread_variable, Fread_buffer, minibuffer-completion-confirm): + Fix doc-strings. + +2002-01-26 Richard M. Stallman + + * buffer.c (syms_of_buffer): Doc fixes for scroll-...-aggressively. + + * xdisp.c (try_scrolling): Exchange uses of scroll_down_aggressively + and scroll_up_aggressively. + +2002-01-26 Pavel Jan,Am(Bk + + * keyboard.c (parse_tool_bar_item): Remove duplicated prototypes. + +2002-01-25 Stefan Monnier + + * textprop.c (Fnext_property_change, Fnext_single_property_change) + (Fprevious_property_change, Fprevious_single_property_change): + Stay within the narrowed-buffer boundaries. + +2002-01-25 Eli Zaretskii + + * term.c (Ftty_display_color_cells): New function. + (syms_of_term): Defsubr it. + (Ftty_display_color_cells, Ftty_display_color_p): Change the + argument name to DISPLAY. Doc fix. + + * dispextern.h: Add prototype for set_tty_color_mode and + tty_setup_colors. + +2002-01-24 Jason Rumney + + * w32term.c (x_scroll_run): Use ScrollWindowEx in place of BitBlt. + If region left to draw is not what was expected, mark the frame as + garbaged. + + * w32fns.c (w32_wnd_proc) : Initialize update_rect. + Combine the regions returned by BeginPaint and GetUpdateRect. + +2002-01-23 Jason Rumney + + * w32term.c (x_update_window_begin): Only hide caret if + w32_use_visible_system_caret is set. + (x_update_window_end): Only show caret if + w32_use_visible_system_caret is set. + (syms_of_w32term): Handle SystemParametersInfo call failing. + + * w32fns.c (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd. + +2002-01-22 Richard M. Stallman + + * unexelf.c (unexec): Define n so as to cause compilation error + for the code where people have often written n instead of nn. + + * .gdbinit (hookpost-run): Defined. + +2002-01-22 Jan Dj,Ad(Brv + + * xfns.c (x_set_frame_parameters): Typo in previous fix corrected. + +2002-01-21 Jan Dj,Ad(Brv + + * xfns.c (x_set_frame_parameters): Just call x_fullscreen_adjust + if fullscreen is being set. + +2002-01-21 Pavel Jan,Am(Bk + + * minibuf.c (Fminibuffer_contents) + (Fminibuffer_contents_no_properties, Fread_from_minibuffer) + (Fread_string, Fread_no_blanks_input, Fcompleting_read): Doc fixes. + +2002-01-21 Richard M. Stallman + + * window.c (check_frame_size): Fix minimum height calculation. + +2002-01-20 Ken Raeburn + + * dispextern.h (WINDOW_WANTS_MODELINE_P): Use XFASTINT on window + height before comparison. + (WINDOW_WANTS_HEADER_LINE_P): Likewise. + +2002-01-20 Jason Rumney + + * w32term.c (w32_system_caret_width): Remove. + (w32_use_visible_system_caret): New user flag. + (syms_of_w32term): DEFVAR_BOOL it. Initialize based on whether + Windows reports a screen reader running. + (x_update_window_begin): Hide the system caret. + (x_update_window_end): Show the system caret. + (x_display_and_set_cursor): Don't draw a cursor when + w32_use_visible_system_caret is set. Do not adjust width. + + * w32fns.c (w32_visible_system_caret_hwnd): New static variable. + (w32_wnd_proc) : Set it. + : Arrange for system caret to be visible if + the user requests it. Use system default width when creating. + : Handle new messages. + + * w32term.h (WM_EMACS_SHOW_CARET, WM_EMACS_HIDE_CARET): + New window messages. + +2002-01-20 Richard M. Stallman + + * window.c (MIN_SAFE_WINDOW_HEIGHT): Value now 1. + +2002-01-20 Pavel Jan,Am(Bk + + * doprnt.c (doprnt1): Fix typos in error call. + +2002-01-20 Eli Zaretskii + + * unexelf.c (unexec) [__sgi]: Support the .got sections. + +2002-01-20 Jason Rumney + + * w32term.c (w32_native_per_char_metric): Don't trust the metrics + that Windows returns. If a double check fails, try to guess how + ExtTextOut is going to act. + + * w32fns.c (w32_load_system_font, w32_to_x_charset): Use strnicmp + in place of stricmp. + (w32_list_synthesized_fonts): Removed. + (w32_to_all_x_charsets, enum_font_maybe_add_to_list): New functions. + (struct enumfont_t): New element; list. + (enum_font_cb2): List all style and charset variations of a font. + (Fw32_select_font): New optional argument; include_proportional. + Exclude vertical fonts. Exclude proportional fonts unless + include_proportional is non-nil. + (w32_enable_synthesized_fonts): Change to a boolean. + (Fw32_send_sys_command): Doc fix. + +2002-01-19 Pavel Jan,Am(Bk + + * dispnew.c (update_frame): Move the variable `tem' to the block + where it is used. + +2002-01-19 Jason Rumney + + * w32fns.c (Fx_create_frame): Bind redisplay-dont-pause around + call to face-set-after-frame-default. + +2002-01-18 Richard M. Stallman + + * dispextern.h (WINDOW_WANTS_MODELINE_P): Check window height > 1. + (WINDOW_WANTS_HEADER_LINE_P): Check window height provides room. + +2002-01-17 Richard M. Stallman + + * window.c (enlarge_window): When exceeding size of parent, + directly delete all the siblings instead of trying to resize it. + +2002-01-17 Pavel Jan,Am(Bk + + * term.c (set_tty_color_mode): Remove unused variable `tem'. + +2002-01-16 Henrik Enberg + + * lread.c (init_lread): Move the installed-lisp dirs later in the path. + +2002-01-16 Kim F. Storm + + * xterm.c (x_erase_phys_cursor): Don't erase cursor if cursor row + is invisible. This can happen if cursor is on top line of a + window, and we switch to a buffer with a header line. + + * w32term.c (x_erase_phys_cursor): Ditto. + +2002-01-16 Pavel Jan,Am(Bk + + * xterm.c (XTread_socket) [!USE_X_TOOLKIT]: Compute the value of + `dont_resize' only when used. + + * xdisp.c: Remove forgotten extern declaration of `Qimage'. + +2002-01-15 Eli Zaretskii + + * xdisp.c (display_mode_element): When computing charpos, depend + on multibyteness of elt, not the text in field. + +2002-01-15 Pavel Jan,Am(Bk + + * buffer.c (Fkill_all_local_variables): + Increment `update_mode_lines' only once. + +2002-01-14 Pavel Jan,Am(Bk + + * lisp.h (adjust_after_replace_noundo) + (Fupdate_coding_systems_internal): Add prototypes. + + * sound.c (Fplay_sound): Initialize header_size also for :data case. + +2002-01-14 Eli Zaretskii + + Support for the --color command-line argument and tty-color-mode + frame parameter: + + * term.c (tty_default_color_capabilities, tty_setup_colors) + (set_tty_color_mode): New functions. + (term_init): Call tty_default_color_capabilities. + (Qtty_color_mode_alist): New variable. + (syms_of_term): Intern and staticpro it. + + * frame.c (store_frame_param): Call set_tty_color_mode for termcap + frames. + (do_switch_frame): For termcap frames, switch the tty + color mode as specified by the frame's parameters. + (Qtty_color_mode): New variable. + (syms_of_frame): Intern and staticpro it. + + * emacs.c (USAGE2): Add the --color option. + (standard_args): Ditto. + +2002-01-13 Jan Dj,Ad(Brv + + * xterm.h (struct x_output): New members want_fullscreen, + x_pixels_diff, y_pixels_diff, x_pixels_outer_diff, and + y_pixels_outer_diff. + New enum for FULLSCREEN_* constants. + (FRAME_OUTER_WINDOW): Handle the case where output_data.x->widget + is NULL. + (x_fullscreen_adjust): Add prototype. + + * emacs.c (USAGE2): Add the new full-screen arguments. + (standard_args): Ditto. + + * xfns.c (Qfullscreen, Qfullwidth, Qfullheight, Qfullboth): + New variables. + (syms_of_xfns): Intern and staticpro them. + (x_frame_parms) <"fullscreen">: New parameter. + (x_fullscreen_move, x_set_fullscreen): New functions. + (x_set_frame_parameters): Support for Qfullscreen. + (x_real_positions): More accurate computation of the frame position. + (x_figure_window_size): Support full-screen frames. + (Fx_create_frame): Default the fullscreen parameter. + + * xterm.c (x_check_fullscreen, x_fullscreen_adjust): New functions. + (XTread_socket) : Call x_check_fullscreen. + : Don't resize to fullscreen. + Call x_check_fullscreen_move, and set the want_fullscreen member of + output_data.x. + +2002-01-13 Jason Rumney + + * w32term.h (WM_XBUTTONDOWN, WM_XBUTTONUP): New window messages + for mice with more than 3 buttons. + + * w32term.c (parse_button): New parameter xbutton. Callers changed. + (w32_read_socket): Handle new "XBUTTON" messages. + + * w32fns.c (w32_pass_extra_mouse_buttons_to_system): New user option. + (syms_of_w32fns): DEFVAR_BOOL it. + (w32_wnd_proc): Handle new "XBUTTON" messages. + +2002-01-13 Pavel Jan,Am(Bk + + * keyboard.c (read_key_sequence): Remove unused variable `extra_maps'. + +2002-01-13 Andreas Schwab + + * xterm.c (x_load_font): Never set fonts_changed_p to zero. + +2002-01-12 Andreas Schwab + + * .gdbinit (xbuffer): Remove address operator since data is now a + pointer. + +2002-01-11 Richard M. Stallman + + * insdel.c (adjust_after_replace_noundo): New function. + + * coding.c (code_convert_region): Don't copy old text if undo disabled. + +2002-01-09 Jason Rumney + + * xdisp.c (x_consider_frame_title): Don't count the tooltip frame + when checking for multiple frames. + +2002-01-08 Richard M. Stallman + + * window.c (delete_window): Rewrite the code for changing the + selected window to handle the case where WINDOW is not a leaf. + +2002-01-07 Eli Zaretskii + + * process.c (send_process): Set src_multibyte to 1 after the call + top setup_coding_system, not before the call. + +2002-01-07 Jason Rumney + + * xmenu.c (set_frame_menubar, xmenu_show): + (xdialog_show): Initialize wv->help to Qnil. + + * w32menu.c (single_submenu, set_frame_menubar, w32_menu_show): + (w32_dialog_show): Initialize wv->help to Qnil. + +2002-01-06 Jason Rumney + + * xmenu.c (single_submenu): Initialize wv->help to Qnil. + + * w32menu.c (w32_menu_display_help): Revert last change. + + * xmenu.c (menu_highlight_callback): Revert last change. + +2002-01-06 Andreas Schwab + + * insdel.c (make_gap_larger): Make sure buffer size does not + overflow range of int. + +2002-01-05 Jason Rumney + + * w32term.c (x_draw_glyphs): Don't call notice_overwritten_cursor if + OVERLAPS_P. + + * w32menu.c (w32_menu_display_help): Hide any tooltip window. + + * w32fns.c (compute_tip_xy): If tooltip won't fit on the screen + to the left or to the right of the pointer, put it against + the left screen edge. + (x_frame_parms): Add missing braces around initializer. + + * w32term.c (x_setup_relief_colors): Don't compute an image's + background color if it doesn't have a Pixmap. + (notice_overwritten_cursor): Don't depend on + output_cursor and updated_area. Compare pixel coordinates with + window's cursor pixel coordinates. + (x_draw_glyphs, x_clear_end_of_line, show_mouse_face): + Call notice_overwritten_cursor with new arg list. + (show_mouse_face): Fix bug setting a row's mouse_face_p flag + unconditionally. + (x_draw_image_relief): Use predefined macro instead of + constant when the value of `tool_bar_button_relief' is negative. + + * w32term.c (x_display_and_set_cursor): Fix PostMessage arg types. + +2002-01-04 Richard M. Stallman + + * xmenu.c (menu_highlight_callback): Hide any tooltip window. + +2002-01-03 Richard M. Stallman + + * keymap.c (Fcurrent_active_maps): Put the `keymap' property map first. + (Fkey_binding): Try the `keymap' property map first. + (Fdescribe_buffer_bindings): Show `keymap' property bindings before + minor mode bindings. + +2002-01-03 Kim F. Storm + + * keyboard.c (read_key_sequence): Fix cast of submaps arg to bcopy. + +2002-01-02 Richard M. Stallman + + * keyboard.c (read_key_sequence): Handle the keymap property + before minor mode maps. + + * editfns.c (Fformat): Update thissize from field_width + based on the actual width, in the string case. + +2002-01-01 Pavel Jan,Am(Bk + + * charset.h (UNIBYTE_STR_AS_MULTIBYTE_P): Parenthesize assignment + when used as truth value to prevent gcc warnings. + + * sysdep.c, unexapollo.c, w32.c, w32bdf.c, w32heap.c, w32inevt.c, + * w32proc.c: Include . + +2002-01-01 Andreas Schwab + + * eval.c (max_specpdl_size, max_lisp_eval_depth): Define as int, + not EMACS_INT, to make them compatible with DEFVAR_INT. + * lisp.h (max_specpdl_size): Adjust declaration. + +2002-01-01 Richard M. Stallman + + * print.c (print_object): Test print_escape_nonascii only for + unibyte strings. + (PRINTPREPARE): Once again bind Qprint_escape_nonascii + when outputting to a multibyte buffer. + +2001-12-29 Richard M. Stallman + + * print.c (print_object): In multibyte string, use hex escapes. + Use octal only for unibyte strings. + (PRINTPREPARE): Don't ever set Qprint_escape_nonascii. + + * lread.c (read_escape): New arg BYTEREP for reporting whether + escape forces unibyte or multibyte. + (read1): When reading a string, take note of that info. + +2001-12-29 Ken Raeburn + + * abbrev.c (Fexpand_abbrev): Use NILP instead of implicit zero + comparison to test lisp value returned by Fget. + +2001-12-29 Richard M. Stallman + + * lisp.h (max_specpdl_size): Add declaration. + + * fileio.c (Fdo_auto_save): If NO_MESSAGE, don't call push_message. + + * keymap.c (silly_event_symbol_error): New subrtn, from Fdefine_key. + Handle modifier bits. Correct typo in error message. + +2001-12-28 Richard M. Stallman + + * abbrev.c: Use the plist of an abbrev for multiple params if nec. + (Fdefine_abbrev): New arg SYSTEM-FLAG for a system abbrev. + (Fdefine_global_abbrev, Fdefine_mode_abbrev): + Update calls to Fdefine_abbrev. + (write_abbrev): Update for changed data format. + Don't list "system" abbrevs. + (Fexpand_abbrev): Update use count with new data format. + (describe_abbrev): Update for changed data format. + (Fdefine_abbrev_table): Handle the new SYSTEM-FLAG. + + * config.in (HAVE_MBSINIT): Add #undef. + + * strftime.c (mbsinit): Define as no-op if not available. + + * s/sco5.h (LIBX11_SYSTEM) [MOTIF]: Add -lgen. + (sigprocmask_set): Conditionalize decl on ! NOT_C_CODE. + + * keymap.c (Flookup_key): Error message if key has wrong data type. + (Fdefine_key): Add error message for trying to bind [DEL], [RET], etc. + (exclude_key): New variable. + +2001-12-28 Gerd Moellmann + + * xterm.c (x_setup_relief_colors): Don't compute an image's + background color if it doesn't have a Pixmap. + + * xterm.c (notice_overwritten_cursor): Don't depend on + output_cursor and updated_area. Compare pixel coordinates with + window's cursor pixel coordinates. + (x_draw_glyphs, x_clear_end_of_line, show_mouse_face): + Call notice_overwritten_cursor with new arg list. + (show_mouse_face): Fix bug setting a row's mouse_face_p flag + unconditionally. + + * xdisp.c (try_scrolling) : Add the + height of the cursor line to the amount to scroll. + +2001-12-27 Richard M. Stallman + + * intervals.c (set_point_both): The position after an invisible, + intangible character is not an acceptable stopping point. + +2001-12-27 Ken Raeburn + + * window.c (enlarge_window): In new preserve_before code, convert + CURBEG from lisp object to integer before doing arithmetic. + +2001-12-27 Richard M. Stallman + + * bytecode.c (Fbyte_code): Undo previous change. + +2001-12-26 Kim F. Storm + + * keyboard.c (record_char): Ignore duplicate help-echo events only + separated by mouse-movement. When tracking mouse, only record + first and last mouse-movement event in same window. + Don't record mouse-movement events in keyboard macros. + +2001-12-25 Richard M. Stallman + + * window.c (enlarge_window): New arg PRESERVE_BEFORE. Callers changed. + (Fenlarge_window): New arg PRESERVE_BEFORE. + + * bytecode.c (Fbyte_code): Use Fstring_make_unibyte + instead of Fstring_as_unibyte. + +2001-12-22 Pavel Jan,Am(Bk + + The following changes remove mocklisp support: + + * mocklisp.h, mocklisp.c: Files removed. + + * lisp.h: Remove declarations of variables `Vmocklisp_arguments', + `Qmocklisp' and `Qmocklisp_arguments'. + Remove prototype of syms_of_mocklisp. + + * makefile.nt, makefile.w32-in, Makefile.in: Remove mocklisp files. + + * callint.c: Do not include mocklisp.h. + (Fcall_interactively): Do not test for mocklisp case. + + * eval.c: Remove variables `Qmocklisp_arguments', + `Vmocklisp_arguments' and `Qmocklisp'. Remove prototype of ml_apply. + (Fprogn, Fwhile, Fcommandp, Feval, Ffuncall, funcall_lambda): + Do not test for mocklisp case. + (Fwhile): Remove unused variable `tem'. + (syms_of_eval): Remove variable `moclisp-arguments'. + + * data.c (wrong_type_argument): Remove mocklisp case. + + * doc.c (Fdocumentation): Remove mocklisp case. + + * emacs.c (main): Do not call syms_of_mocklisp. + +2001-12-21 Richard M. Stallman + + * xfns.c (compute_tip_xy): If tooltip won't fit on the screen + to the left or to the right of the pointer, put it against + the left screen edge. + +2001-12-21 Eli Zaretskii + + * Makefile.in (distclean): Remove .gdbinit if we are building + outside the source tree. + +2001-12-19 Eli Zaretskii + + * w32.c (emacs_root_dir): New function. + + * msdos.c (emacs_root_dir): New function. + + * fileio.c (Fexpand_file_name) [DOS_NT]: Use the root directory + of the current drive as the fallback for default_directory. + + * dired.c (file_name_completion): Run the elements of + completion-ignored-extensions through ENCODE_FILE. + + * lisp.h (scmp): Remove prototype, since it's now a static + function private to dired.c. + +2001-12-18 Richard M. Stallman + + * dired.c (scmp): Function moved from minibuf.c. + Delete multibyte handling--used only on encoded strings. + + * minibuf.c (scmp): Function moved to dired.c. + + * fns.c (merge): Add QUIT call. + +2001-12-18 Dave Love + + * Makefile.in (lisp, shortlisp): Add language/utf-8-lang.el, + language/georgian.el. + +2001-12-18 Eli Zaretskii + + * Makefile.in (lisp, shortlisp): Synchronize with changes to + lisp/Makefile.in:DONTCOMPILE. + +2001-12-18 Pavel Jan,Am(Bk + + * xdisp.c (window_box_height): Do not return negative values. + From Gerd Moellmann . + + * keyboard.c (head_table): Add missing braces around initializer. + + * term.c (keys): Likewise. + + * xfns.c (x_frame_parms, visual_classes): Likewise. + +2001-12-17 Sam Steingold + + * coding.c (DECODE_COMPOSITION_END): Fixed a typo in the last + patch (COMPOSING_P, not COMPOSING). + +2001-12-17 Richard M. Stallman + + * editfns.c (Fcompare_buffer_substrings): Add QUIT to main loop. + + * coding.c (code_convert_region): Update coding->cmp_data->char_offset + before calling decode_coding. + + * charset.c (Fdefine_charset): Call Fupdate_coding_systems_internal. + + * coding.c (DECODE_COMPOSITION_END): Check for ! COMPOSING_P (coding) + instead of only for COMPOSITION_DISABLED. + +2001-12-16 Richard M. Stallman + + * alloc.c (pure_alloc): After overflow, allocate just a small block. + + * Makefile.in (xmenu.o, xterm.o, fontset.o): Depend on buffer.h. + + * buffer.h (struct buffer): New field `display_error_modiff'. + * buffer.c (reset_buffer): Initialize `display_error_modiff'. + + * window.c (Frecenter): Clear display_error_modiff field. + + * xdisp.c (redisplay_window_0, redisplay_window_1): New functions. + Call redisplay_window, but not if display_error_modiff field says no. + (redisplay_window_error): New function. + (displayed_buffer): New variable. + (redisplay_internal, redisplay_windows): Call the new functions + instead of redisplay_window directly. + +2001-12-15 Richard M. Stallman + + * keyboard.c (syms_of_keyboard) : Doc fix. + +2001-12-14 Andrew Innes + + * makefile.w32-in (EMACSLOADPATH): Define. + ($(EMACS)): Run `list-load-path-shadows' after dumping Emacs. + (bootstrap-temacs): Remove dependency on bootstrap-clean. + +2001-12-13 Eli Zaretskii + + * xfns.c (x_report_frame_params): Make the scroll-bar-width frame + parameter have a numeric value all the time. + + * w32fns.c (x_report_frame_params): Likewise. + +2001-12-12 Richard M. Stallman + + * fileio.c (Fwrite_region): Doc fix. + + * xdisp.c (CLEAR_FACE_CACHE_COUNT): Redefine as 500. + (redisplay_internal): Call clear_image_cache only for window terminals. + +2001-12-12 Gerd Moellmann + + * xdisp.c (move_it_vertically_backward): Change heuristic + for the case that we didn't move far enough initially. + + * window.c (Frecenter): Simplify computation in the case of window + system frames and ARG < 0; use window_box_height. + +2001-12-11 Richard M. Stallman + + * Makefile.in, mem-limits.h, dispnew.c, emacs.c, fileio.c: + * process.c, sysdep.c, unexec.c: Test GNU_LINUX, not LINUX. + +2001-12-11 Andrew Innes + + * insdel.c (make_gap) [DOUG_LEA_MALLOC]: Call make_gap_smaller if + arg is negative. + +2001-12-11 Richard M. Stallman + + * m/hp800.h: Split the __hpux conditional into the parts + that are right for GNU/Linux too and the parts that are not. + Use the former if GNU_LINUX. + (HAVE_ALLOCA, LOAD_AVE_TYPE, LOAD_AVE_CVT): New defs for GNU/Linux. + + * s/gnu-linux.h (GNU_LINUX): Defined. + +2001-12-11 Pavel Jan,Am(Bk + + * macros.c, msdos.c, w16select.c: Change doc-string comments to + `new style' [w/`doc:' keyword]. + +2001-12-10 Jason Rumney + + * w32menu.c (w32_free_submenu_strings): Clear menu item struct + before using. + +2001-12-09 Pavel Jan,Am(Bk + + * dosfns.c: Change doc-string comments to `new style' [w/`doc:' + keyword]. + +2001-12-09 Eli Zaretskii + + * dosfns.c (dos-display-scancodes, dos-decimal): Doc fix. + + * s/hpux10.h (srand48): Don't undefine. + +2001-12-09 Jason Rumney + + * w32menu.c (_widget_value): Make `help' field a Lisp_Object. + Add comment to explain where the struct came from. + (single_submenu, w32_menu_show): Set `help' field as Lisp_Object. + (add_menu_item): Process pop-up menus first to avoid memory leak. + (add_menu_item, w32_menu_display_help): Use `help' field as + Lisp_Object. + (w32_free_submenu_strings): Only free owner-drawn strings. + +2001-12-09 Pavel Jan,Am(Bk + + * COPYING: Moved back. + + * charset.c (char_to_string_1, translate_char, Fdefine_charset): + Add parentheses around && within ||. + + * indent.c (compute_motion): Likewise. + + * intervals.c (merge_properties_sticky): Likewise. + + * coding.c (setup_coding_system, shrink_encoding_region) + (Fdecode_sjis_char): Likewise. + +2001-12-07 Andreas Schwab + + * xdisp.c (display_mode_element): Don't read past end of string if + it ends with '%'. + + * alloc.c (inhibit_garbage_collection): Don't exceed value an int + can hold. + + * data.c (Vmost_positive_fixnum, Vmost_negative_fixnum): + Rename from most_positive_fixnum and most_negative_fixnum, resp., and + type changed to Lisp_Object. + (syms_of_data): DEFVAR_LISP them. + +2001-12-07 Richard M. Stallman + + * callproc.c (init_callproc): Set Vdata_directory based on the source + location whenever Emacs was run uninstalled. + +2001-12-06 Paul Eggert + + * config.in (HAVE_WORKING_VFORK): New #undefs. + * process.c (create_process): + Use HAVE_WORKING_VFORK, not HAVE_VFORK. + * m/cnvrgnt.h (HAVE_VFORK): Remove #define. + * m/ibm370aix.h (HAVE_VFORK): Remove #undef. + * m/ibmps2-aix.h (HAVE_VFORK): Remove #define. + * m/intel386.h (HAVE_VFORK): Likewise. + * m/mips-siemens.h (HAVE_VFORK): Likewise. + * m/mips.h (HAVE_VFORK): Likewise. + * s/freebsd.h (vfork): Remove #define. + * s/lynxos.h (HAVE_VFORK): Remove #undef. + * s/usg5-4-2.h: Fix comment about vfork. + +2001-12-06 Richard M. Stallman + + * s/hpux10.h (random): Add undef. + (HAVE_RANDOM): Define it just once. + +2001-12-06 Stefan Monnier + + * eval.c: Undo last change: the standard syntax is not wanted. + +2001-12-06 Eli Zaretskii + + * xterm.c (x_free_frame_resources) [USE_X_TOOLKIT]: Remove all the + scroll bars of the frame before deleting the frame itself. If the + frame has a widget, delete the frame with XtDestroyWidget, and do + not call XDestroyWindow before that. + +2001-12-06 Kim F. Storm + + * xfns.c (x_report_frame_params): Return actual fringe widths. + + * w32fns.c (x_report_frame_params): Return actual fringe widths. + +2001-12-05 Andrew Innes + + * alloc.c (Fgarbage_collect): Shrink buffer gaps that are + excessively large. + + * insdel.c (make_gap_larger): New function. + (make_gap_smaller): New function. + (make_gap) [USE_MMAP_FOR_BUFFERS || REL_ALLOC]: + Call make_gap_smaller if arg is negative. + +2001-12-04 Stefan Monnier + + * keyboard.c (kbd_buffer_store_event): Fix interrupt_signal prototype. + Pass a dummy argument when calling interrupt_signal. + (parse_menu_item): Mark disabled items before checking for empty def. + (read_char_minibuf_menu_prompt): Make safety more visible. + (read_key_sequence): Add a `first_unbound' variable. + Use it to detect C-c ESC ESC ESC ESC ... cases and drop the + unbound prefix as soon as we can detect it. + + * doc.c (Fsnarf_documentation): Add prototype. + (get_doc_string): Handle negative arguments. + (Fdocumentation): Use AREF and ASIZE. + Move the calls to get_doc_string to a single place. + Don't confuse an interactive-spec for a docstring reference. + (Fdocumentation_property): Take advantage of the fact that + get_doc_string now ignores the sign of the docstring position. + + * eval.c: Use standard syntax for usage in docstrings. + +2001-12-03 Pavel Jan,Am(Bk + + * xdisp.c (syms_of_xdisp): Make `tool-bar-button-relief' an option. + +2001-12-02 Pavel Jan,Am(Bk + + * xterm.c (x_draw_image_relief): Use predefined macro instead of + constant when the value of `tool_bar_button_relief' is negative. + +2001-12-02 Richard M. Stallman + + * xmenu.c (menu_highlight_callback): Use `help' field as Lisp_Object. + (single_submenu, xmenu_show): Set `help' field as Lisp_Object. + + * fileio.c (read_non_regular): Delete Fsignal call. + +2001-12-01 Stefan Monnier + + * lisp.h (run_hook_list_with_args): Undo last change. + +2001-12-01 Gerd Moellmann + + * xterm.c (x_draw_fringe_bitmap): Always undo clipping. + +2001-12-01 Jason Rumney + + * window.c (Qleft_fringe, Qright_fringe): Remove. Now in frame.c. + + * w32term.h (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) + [!WM_MOUSELEAVE]: Define. + + * w32menu.c (current_popup_menu, get_menu_item_info): + (set_menu_item_info): New vars. + (set_frame_menubar): Doc fix clarifying GC interaction with menus. + (w32_menu_show): Set current_popup_menu. + (add_menu_item): Allocate new strings for owner-drawn menu items + and help strings. + Use owner-draw for disabled menu items again. + (w32_menu_display_help): Ignore owner-drawn items and popup menus. + (w32_free_submenu_strings, w32_free_menu_strings): New functions. + + * w32fns.c (trackmouse_window, track_mouse_event_fn): New vars. + (w32_wnd_proc) : Notice when mouse enters frame. + : Free menu strings. + : Stop tracking mouse. + (x_create_tip_frame): Specify no minibuffer, modeline or fringes. + + * w32term.c (w32_read_socket) : Cancel help echo + and mouse face. + +2001-12-01 Kim F. Storm + + The following changes add left-fringe and right-fringe + frame parameters to adjust fringe widths, or remove one or + both fringes. + + * frame.h (struct frame): Remove trunc_area_pixel_width and + trunc_area_cols fields. + (Qleft_fringe, Qright_fringe): Declare. + (FRAME_RIGHT_FRINGE_WIDTH): New macro. + + * frame.c (Qleft_fringe, Qright_fringe): New vars. + (syms_of_frame): Initialize them. + + * window.c (coordinates_in_window): Handle separate left and right + fringe widths. + + * xterm.h (struct x_output): Add left_fringe_width, right_fringe_width, + and fringe_cols fields. + (FRAME_FRINGE_BITMAP_WIDTH, FRAME_FRINGE_BITMAP_HEIGHT): Remove macros. + (FRAME_X_FRINGE_COLS): Use fringe_cols field. + (FRAME_X_FRINGE_WIDTH): Use fringes_extra field. + (FRAME_X_LEFT_FRINGE_WIDTH): Use left_fringe_width field. + (FRAME_X_RIGHT_FRINGE_WIDTH): Use right_fringe_width field. + (x_compute_fringe_widths): Add prototype. + + * xterm.c (zv_height, zv_bits, zv_period): Changed zv bitmap to + fill fringe evenly with small dashes. + (x_draw_fringe_bitmap): Clear background if necessary. Align and + clip the new ZV bitmap to avoid jitter between rows. + (x_draw_row_fringe_bitmaps): Rely on x_draw_fringe_bitmap to clear + background. Don't draw fringe bitmaps if fringe width is zero. + (x_compute_fringe_widths): New function. + (x_new_font, x_set_window_size_1): Use it. + + * xfns.c (x_frame_parms): Add `left-fringe' and `right-fringe' parms. + (x_set_frame_parameters): Process `font' parameter before other + parameters as fringe widths depend on it. + (x_set_fringe_width): New function. + (x_figure_window_size): Use x_compute_fringe_widths. + (Fx_create_frame): Process `left-fringe' and `right-fringe' frame + parameters. + + * widget.c (set_frame_size): Use x_compute_fringe_widths. + (EmacsFrameSetCharSize): Ditto. + + * w32term.h: Merged changes from xterm.h. + * w32term.c: Merged changes from xterm.c. + * w32fns.c: Merged changes from xfns.c. + +2001-11-29 Pavel Jan,Am(Bk + + * COPYING: Removed. + +2001-11-29 Dave Love + + * coding.c (syms_of_coding) : Give it an + extra extra slot. + (detect_coding_mask): Fix call of detect_coding_iso2022. + +2001-11-29 Pavel Jan,Am(Bk + + * fileio.c (file-name-coding-system) + (default-file-name-coding-system): Doc fix (links to referenced + variables added). + +2001-11-28 Stefan Monnier + + * lisp.h (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5): + Add dummy uses of gcproN variables. + + * category.c (describe_category, describe_category_1) + (Fdescribe_categories): Remove. (Moved to lisp/help-fns.el.) + (syms_of_category): Don't defsubr Sdescribe_categories. + +2001-11-28 Richard M. Stallman + + * fileio.c (Ffind_file_name_handler): Avoid initializer for `result'. + + * Makefile.in (lispdir): New variable, referring to build dir. + (TAGS-LISP): Find Makefile in $(lispdir), not $(lispsource). + +2001-11-28 Andrew Innes + + * w32menu.c (w32_menu_display_help): Actually add the new argument + OWNER. + +2001-11-28 Jason Rumney + + * w32menu.c (add_menu_item): Do not use owner-draw for disabled + menu items. From David Ponce . + (w32_dialog_show) [HAVE_DIALOGS]: Compile whole function + conditionally. + (w32_menu_display_help): New argument OWNER. Rewritten to store a + help event in the owner frame's keyboard buffer. + + * w32fns.c (w32_wnd_proc) : Display help directly. + (Fx_show_tip): Don't subtract last width from row width. + + * w32term.c (w32_read_socket) : Remove. + (w32_read_socket): Use EQ to compare frames. + +2001-11-28 Gerd Moellmann + + * xterm.c (x_draw_glyphs): Don't call notice_overwritten_cursor if + OVERLAPS_P. + +2001-11-28 Pavel Jan,Am(Bk + + * xdisp.c (message_dolog): Remove unused variables `gcpro2', + `gcpro3' and `gcpro4'. + + * coding.c (decode_coding_string): Remove unused variable `gcpro1'. + +2001-11-28 Stefan Monnier + + * ccl.c: Use AREF and ASIZE. + +2001-11-27 Stefan Monnier + + * lisp.h (run_hook_list_with_args): Remove. + (LIST_END_P): Fix call to wrong_type_argument. + (make_fixnum_or_float): Use EMACS_INT rather than int. + +2001-11-26 Stefan Monnier + + * syntax.c (syms_of_syntax): Remove defsubr of Sdescribe_syntax. + (describe_syntax, describe_syntax_1, Fdescribe_syntax): Remove. + + * eval.c: Use AREF and ASIZE. + (Ffetch_bytecode): Add the file name to the error message. + + * fileio.c (Ffind_file_name_handler): Give precedence to handlers + which match the end of the file-name. + (Fsubstitute_in_file_name): Don't signal an error if $ENVVAR + is not a valid env var, but leave it as is instead. + + * keymap.c (access_keymap): Handle t bindings like nil bindings. + Make nil bindings in char-tables transparent. + (store_in_keymap): Turn a nil binding into a t binding for char-tables. + +2001-11-26 Richard M. Stallman + + * textprop.c (set_text_properties_1): Allow START, END in either order. + Do nothing if range is empty. + + * Makefile.in (mallocobj): Simplify logic using auxiliary vars. + + * Makefile.in (mostlyclean): Delete bootstrap-emacs here. + (clean): Not here. + +2001-11-25 Stefan Monnier + + * textprop.c (set_text_properties_1): Clearly mark that the + interval should not be empty. + + * intervals.c (graft_intervals_into_buffer): + Don't call set_text_properties_1 on an empty interval. + +2001-11-25 Richard M. Stallman + + * unexelf.c (unexec): Index by n, not nn, when checking for ".sbss". + + * callproc.c (Fcall_process): When we make a bigger buffer for bufptr, + don't lose the data in it. + +2001-11-25 Juanma Barranquero + + * abbrev.c (Fexpand_abbrev): Use Frun_hooks instead of Vrun_hooks. + + * buffer.c (Fkill_buffer): Likewise. + + * print.c (temp_output_buffer_setup): Likewise. + +2001-11-25 Stefan Monnier + + * xfaces.c (merge_face_heights): Coerce back to int explicitly. + +2001-11-25 Eli Zaretskii + + * window.c (Fset_window_vscroll): Doc fix. From Kalle Olavi + Niemitalo . + +2001-11-25 Jason Rumney + + * w32term.h (FRAME_X_FRINGE_COLS): No fringe on tip frames. + + * w32fns.c (x_create_tip_frame): Set frame's fringes_extra to 0. + (Fx_show_tip): Block input during frame creation. + (Fx_show_tip, Fx_hide_tip): Enable. + +2001-11-24 Richard M. Stallman + + * lread.c (Fload): Detect recursive load error for more than 3 + nestings of the same file. + (Vrecursive_load_depth_limit): Variable deleted. + (syms_of_lread) : Variable deleted. + +2001-11-24 Jason Rumney + + * xfns.c (compute_tip_xy): Initialize root_x and root_y from + mouse position if either left or top is not specified. + + * w32fns.c (w32_wnd_proc) : Revert last change. + : Let tip frames resize without restriction. + (my_create_tip_window, Fx_show_tip): Adjust size for external border. + (my_create_tip_window): Assign tip_window. + (x_create_tip_frame): Use same defaults as X. + (compute_tip_xy): Remove unused variable. Use full screen width. + (Fx_show_tip): Do not double height. Call ShowWindow directly. + + * w32term.c (x_after_update_window_line): Doc fix. + (w32_read_socket): Doc fix. Avoid SET_FRAME_GARBAGED for tip + frames. + : Redo mouse highlight when hiding tip frame. + + * xdisp.c (prepare_menu_bars) [HAVE_WINDOW_SYSTEM]: Use tip_frame + for all Windowed systems. + +2001-11-23 Eli Zaretskii + + * msdos.c (IT_clear_screen): If the frame's faces are not yet + realized, use the initial screen colors to clear the screen. + +2001-11-23 Pavel Jan,Am(Bk + + * textprop.c (Fset_text_properties): Remove unused variables + `unchanged', `prev_changed', `s' and `len'. + + * search.c (Freplace_match): Remove unused variable `inslen'. + + * keymap.c (access_keymap): Remove unused variables `c1' and `c2'. + +2001-11-22 Jason Rumney + + * w32fns.c (x_window_to_frame): Remove irrelevant TODO comment. + (w32_wnd_proc) : Show help echo directly. + (my_create_tip_window): New function. + (x_create_tip_frame, compute_tip_xy): Adapt for Windows. + (Fx_show_tip, Fx_hide_tip) [TEST_TOOLTIPS]: Adapt for Windows. + +2001-11-20 Jason Rumney + + * coding.h (Vw32_system_coding_system) [WINDOWSNT]: Remove. + (ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: Use Vlocale_coding_system. + + * w32fns.c (Vw32_system_coding_system): Remove. + (w32_to_x_font, x_to_w32_font): Use Vlocale_coding_system. + +2001-11-19 Stefan Monnier + + * fileio.c (Fwrite_region): Move choose_write_coding_system to + after build_annotations. + + * syntax.c (describe_syntax): Add dummy arg. + (describe_syntax_1): Update call to describe_vector. + + * category.c (describe_category): Add dummy arg. + (describe_category_1): Update call to describe_vector. + + * keymap.c (Fdescribe_vector): Add `describer' parameter. + (describe_command, describe_translation): Add dummy second param. + (describe_map): Call elt_describer with two arguments. + (describe_vector_princ): Add `fun' parameter. + Call it instead of the hardcoded `princ'. + (describe_vector): Add arg `args'. + Pass it as a new second argument to elt_describer. + + * keymap.h (describe_vector): Update prototype. + + * frame.c: Don't include keymap.h any more. + (keys_of_frame): Remove. + + * lisp.h (keys_of_frame): Remove declaration. + + * emacs.c (main): Don't call `keys_of_frame' any more. + +2001-11-14 Andreas Schwab + + * unexelf.c [!defined MAP_ANON]: Define MAP_ANON to MAP_ANONYMOUS + if defined, 0 otherwise. + (MAP_FAILED): Define if not defined and use it to test mmap failure. + (unexec) [!MAP_ANON]: Use /dev/zero as file to map. + +2001-11-19 Richard M. Stallman + + * indent.c (current_column_1): Fix handling of scan_bytes for mb chars. + +2001-11-18 Jason Rumney + + * w32term.c (note_mouse_highlight): Fix type of variable `ignore'. + (x_draw_bar_cursor): If the background color of the glyph under + the cursor equals the frame's cursor color, use the glyph's + foreground color for drawing the bar cursor. + (x_after_update_window_line): Clear internal border in different + circumstances. + (w32_set_vertical_scroll_bar): Check for width and height > 0. + (w32_draw_relief_rect): Correct relief by 1 pixel. + (x_set_glyph_string_background_width): + Set extends_to_end_of_line_p if the row's fill_line_p is set and + drawing the last glyph with DRAW_IMAGE_{RAISED,SUNKEN}. + (x_display_and_set_cursor): If cursor_in_echo_area, use NO_CURSOR + if cursor_in_non_selected_windows is false. + (show_mouse_face): Clean up. Recognize overwritten cursor differently. + (x_draw_glyphs): Remove parameters REAL_START and REAL_END. + Notice if cursor gets overwritten. + (notice_overwritten_cursor): Renamed from + note_overwritten_text_cursor. Rewritten to take glyph widths + into account, and to take X positions as parameters. + (x_draw_phys_cursor_glyph): Save state of w->phys_cursor_on_p + around call to x_draw_glyphs. + (x_setup_relief_colors): Use `IMAGE_BACKGROUND' and + `IMAGE_BACKGROUND_TRANSPARENT' to calculate the correct background + color to use for image glyph reliefs. + (x_draw_image_relief): Accept zero tool_bar_button_relief. + (glyph_rect): Remove unused variable `area'. + + * w32fns.c (x_set_frame_parameters): Avoid infinite recursion for + some items. + (x_set_internal_border_width): Set frame garbaged when window + doesn't exist yet. + (Fx_create_frame): Accept zero tool_bar_button_relief. + (x_clear_image_1, four_corners_best, image_background) + (image_background_transparent): New functions. + (xpm_format, png_format, jpeg_format, tiff_format, gif_format) + (gs_format): Add `:background' entry. + (lookup_image): Set IMG's background color if specified. + (pbm_load, xbm_load_image, png_load): Set IMG's background field + when appropriate. + (x_clear_image_1): Reset `background_valid' and + `background_transparent_valid' fields. + (x_build_heuristic_mask): Use IMAGE_BACKGROUND instead of + calculating it here. Set IMG's background_transparent field. + (enum xpm_keyword_index): Add XPM_BACKGROUND. + (enum png_keyword_index): Add PNG_BACKGROUND. + (enum jpeg_keyword_index): Add JPEG_BACKGROUND. + (enum tiff_keyword_index): Add TIFF_BACKGROUND. + (enum gif_keyword_index): Add GIF_BACKGROUND. + (enum gs_keyword_index): Add GS_BACKGROUND. + (pbm_load, png_load, jpeg_load, tiff_load, gif_load): + Pre-calculate image background color where necessary. + (x_create_x_image_and_pixmap, xbm_load, gs_load): + Use display info's n_cbits entry for screen depth. + (Fx_show_tip): Remove unused variables `buffer', `top', + `left', `max_width' and `max_height'. + + * w32menu.c (w32_menu_show, push_menu_pane): Doc fixes. + +2001-11-18 Gerd Moellmann + + * puresize.h (BASE_PURESIZE): Increase to 750000. + +2001-11-18 Pavel Jan,Am(Bk + + * frame.c (Fframe_live_p): Doc fix. + +2001-11-18 Richard M. Stallman + + * xdisp.c (message_dolog_marker1, message_dolog_marker2) + (message_dolog_marker3): New static variables hold three markers. + (syms_of_xdisp): Initialize and staticpro them. + (message_dolog): Use message_dolog_marker1..3 instead of + allocating markers each time. Unchain them when done. + +2001-11-17 Richard M. Stallman + + * doc.c (Fsnarf_documentation): Doc fix. + +2001-11-17 Andreas Schwab + + * xterm.c (note_mouse_highlight): Fix type of variable `ignore'. + +2001-11-17 Richard M. Stallman + + * fileio.c (Fwrite_region): Avoid initializer for Lisp_Object. + +2001-11-17 Jason Rumney + + * xterm.c (notice_overwritten_cursor): Take care of end < 0 case. + +2001-11-17 Gerd Moellmann + + * xdisp.c (tool_bar_item_info): Avoid calling Fget_text_property + with invalid position. + +2001-11-16 Richard M. Stallman + + * syswait.h: Delete conditionals for HPUX7, ISC 4.1, and convex. + + * s/isc4-1.h (HAVE_SYS_WAIT_H): Add #undef. + * s/hpux.h (HAVE_SYS_WAIT_H): Add #undef. + * s/hpux8.h (HAVE_SYS_WAIT_H): Define it. + + * m/convex.h (HAVE_SYS_WAIT_H): Add #undef. + +2001-11-16 Stefan Monnier + + * fileio.c (build_annotations): Split off the tail. + (build_annotations_2): New fun. Extracted from build_annotations. + (Fwrite_region): Split the call to build_annotations into two + calls to build_annotations and build_annotations_2. + +2001-11-16 Pavel Jan,Am(Bk + + * sysdep.c (wait_for_kbd_input) [VMS]: Do not call + clear_waiting_for_input with argument. + + * xterm.h (x_update_cursor): Remove duplicated prototype. + + * keyboard.h (clear_waiting_for_input): Remove duplicated prototype. + + * xterm.c (waiting_for_input): Remove unnecessary declaration. + + * data.c (Ftimes, Fquo, Frem, Fmod): Doc fix. + +2001-11-16 Stefan Monnier + + * fileio.c (choose_write_coding_system): New fun, extracted + from Fwrite_region. + (Fwrite_region): Use it. + + * eval.c (max_specpdl_size, max_lisp_eval_depth): Use EMACS_INT. + (funcall_lambda, run_hook_with_args): Make static and add prototype. + (ml_apply, find_handler_clause): Add prototype. + +2001-11-16 Eli Zaretskii + + * config.in: Add #undef HAVE_COFF_H. + + * unexec.c (coff.h): Don't include unless HAVE_COFF_H is defined. + Required for ISC 4.1. + +2001-11-16 Eli Zaretskii + + * syswait.h (HAVE_SYS_WAIT_H): Undef for ISC 4.1. Reported by + Andrew Wiseman . + +2001-11-16 Kim F. Storm + + The following changes are made to clean up the various internal + references to the fringes to actually use the term `fringe' for + them. Previously, they were called `flags areas', `bitmap areas', + `left/right side of windows', or implicitly as `flags' or + `bitmaps': + + * dispextern.h (FRINGE_FACE_ID): Renamed from BITMAP_AREA_FACE_ID. + Comments fixed. Use renamed symbols. + + * dispnew.c: Comment fix. Use renamed symbols. + + * frame.h (FRAME_FRINGE_COLS): Renamed from FRAME_FLAGS_AREA_COLS. + (FRAME_FRINGE_WIDTH): Renamed from FRAME_FLAGS_AREA_WIDTH. + (FRAME_LEFT_FRINGE_WIDTH): Renamed from FRAME_LEFT_FLAGS_AREA_WIDTH. + + * msdos.c: Comment fix. + + * w32fns.c: Use renamed symbols. + + * w32term.c: Comment fixes. Use renamed symbols. + (fringe_bitmap_type): Renamed from bitmap_type. + (NO_FRINGE_BITMAP): Renamed from NO_BITMAP. + (w32_draw_fringe_bitmap): Renamed from w32_draw_bitmap. + (x_draw_row_fringe_bitmaps): Renamed from x_draw_row_bitmaps. + + * w32term.h: Comment fixes. Use renamed symbols. + (fringes_extra): Renamed from flags_areas_extra. + (FRAME_FRINGE_BITMAP_WIDTH): Renamed from FRAME_FLAGS_BITMAP_WIDTH. + (FRAME_FRINGE_BITMAP_HEIGHT): Renamed from FRAME_FLAGS_BITMAP_HEIGHT. + (FRAME_X_FRINGE_COLS): Renamed from FRAME_X_FLAGS_AREA_COLS. + (FRAME_X_FRINGE_WIDTH): Renamed from FRAME_X_FLAGS_AREA_WIDTH. + (FRAME_X_LEFT_FRINGE_WIDTH): + Renamed from FRAME_X_LEFT_FLAGS_AREA_WIDTH. + (FRAME_X_RIGHT_FRINGE_WIDTH): + Renamed from FRAME_X_RIGHT_FLAGS_AREA_WIDTH. + + * widget.c: Use renamed symbols. + + * window.c: Comment fixes. Use renamed symbols. + (coordinates-in-window-p): Doc fix. + + * xdisp.c: Comment fixes. Use renamed symbols. + + * xfaces.c (realize_basic_faces): Use FRINGE_FACE_ID. + + * xfns.c: Use renamed symbols. + + * xterm.c: Comment fixes. Use renamed symbols. + (fringe_bitmap_type): Renamed from bitmap_type. + (NO_FRINGE_BITMAP): Renamed from NO_BITMAP. + (x_draw_fringe_bitmap): Renamed from x_draw_bitmap. + (x_draw_row_fringe_bitmaps): Renamed from x_draw_row_bitmaps. + + * xterm.h: Comment fixes. Use renamed symbols. + (fringes_extra): Renamed from flags_areas_extra. + (FRAME_FRINGE_BITMAP_WIDTH): Renamed from FRAME_FLAGS_BITMAP_WIDTH. + (FRAME_FRINGE_BITMAP_HEIGHT): Renamed from FRAME_FLAGS_BITMAP_HEIGHT. + (FRAME_X_FRINGE_COLS): Renamed from FRAME_X_FLAGS_AREA_COLS. + (FRAME_X_FRINGE_WIDTH): Renamed from FRAME_X_FLAGS_AREA_WIDTH. + (FRAME_X_LEFT_FRINGE_WIDTH): + Renamed from FRAME_X_LEFT_FLAGS_AREA_WIDTH. + (FRAME_X_RIGHT_FRINGE_WIDTH): + Renamed from FRAME_X_RIGHT_FLAGS_AREA_WIDTH. + +2001-11-15 Jason Rumney + + * w32menu.c (add-menu-item): Make help_echo and radio buttons + work for most menu items. From David Ponce + . + +2001-11-15 Gerd Moellmann + + * xfns.c (x_set_frame_parameters): Revert change of 2001-11-07. + Some x_set_* function expect to be called even if old and new + value are equal. + + * xdisp.c (build_desired_tool_bar_string): Accept zero + tool_bar_button_relief. + + * xfns.c (Fx_create_frame): Accept zero tool_bar_button_relief. + + * xterm.c (x_draw_image_relief): Accept zero tool_bar_button_relief. + + * xterm.c (x_draw_bar_cursor): If the background color of the + glyph under the cursor equals the frame's cursor color, use + the glyph's foreground color for drawing the bar cursor. + + * dispnew.c (direct_output_forward_char): Fix character/byte + position comparison. + +2001-11-15 Miles Bader + + * editfns.c (find_field): Add BEG_LIMIT and END_LIMIT parameters. + (Fdelete_field, Ffield_string, Ffield_string_no_properties): + Update arguments to find_field. + (Ffield_beginning, Ffield_end): Add LIMIT param, pass to find_field. + (Fconstrain_to_field): Use LIMIT arg to shorten search time. + * lisp.h (Ffield_beginning, Ffield_end): Update EXFUN decl. + * minibuf.c (Fminibuffer_prompt_end): Update args to Ffield_end. + +2001-11-14 Richard M. Stallman + + * editfns.c (Fpropertize): Allow call with 1 arg. + + * dispextern.h (image_background, image_background_transparent): + Conditionalize on HAVE_X_WINDOWS. + +2001-11-13 Richard M. Stallman + + * print.c (Fprin1_to_string): Doc fix. + + * sunfns.c (Fsun_change_cursor_icon): Doc fix. + + * floatfns.c (Fceiling, Ffloor): Doc fixes. + + * filelock.c (Funlock_buffer, Ffile_locked_p): Doc fixes. + + * fileio.c (Ffile_accessible_directory_p): Doc fix. + + * eval.c (syms_of_eval): Doc fix. + + * coding.c (syms_of_coding): Doc fix. + + * doc.c (Fsnarf_documentation): Doc fix. + + * dispnew.c (syms_of_display): Doc fix. + + * category.c (Fget_unused_category): Doc fix. + + * buffer.c (syms_of_buffer): Doc fixes. + +2001-11-14 Eli Zaretskii + + * print.c (prin1, print): Doc fix. + +2001-11-14 Pavel Jan,Am(Bk + + * fontset.h: Remove declarations of variables + `Vhighlight_wrong_size_font' and `Vclip_large_size_font'. + + * fontset.c: Remove variables `Vhighlight_wrong_size_font' and + `Vclip_large_size_font'. + +2001-11-13 Jason Rumney + + * w32fns.c: Doc fix. + +2001-11-13 Pavel Jan,Am(Bk + + * xfaces.c (Fface_attributes_as_vector): Doc fix. + + * fns.c: Doc fix. + + * emacs.c: Doc fix. + + * coding.c: Doc fix. + + * cmds.c, composite.c, dired.c, doc.c, filelock.c, floatfns.c, + * fontset.c, insdel.c, keymap.c: Change doc-string comments to + `new style' [w/`doc:' keyword]. + +2001-11-12 Richard M. Stallman + + * xterm.c (XTread_socket): Don't update focus for EnterNotify or + LeaveNotify events. Only FocusIn and FocusOut do that now. + (x_display_and_set_cursor): Do display hollow cursors in active + minibuffer windows when they are not selected. + +2001-11-12 Jason Rumney + + * w32console.c, w32fns.c, w32menu.c, w32proc.c, w32select.c, + * w32term.c: Change doc-string comments to `new style' + [w/`doc:' keyword]. Doc fixes. + + * w32fns.c: Don't define max. + (Fx_open_connection): Only execute once. + +2001-11-12 Pavel Jan,Am(Bk + + * ccl.c: Change macros to use do-while block instead of if-else. + Use braces to follow GNU Coding Standards. + +2001-11-11 Richard M. Stallman + + * sysdep.c (child_setup_tty): Don't clear ICRNL or INLCR. + + * lread.c (read_escape): Use end_of_file_error for reporting eof. + + * insdel.c (replace_range): Use adjust_markers_for_replace + instead of adjust_markers_for_delete and adjust_markers_for_insert. + + * intervals.h (set_text_properties, set_text_properties_1): Declare. + + * textprop.c (set_text_properties_1): New subroutine + broken out of set_text_properties. + (set_text_properties): Use set_text_properties_1. + + * intervals.c (graft_intervals_into_buffer): + Use set_text_properties_1 to clear out properties. + + * search.c (Freplace_match): Use replace_range to insert + and delete. Don't request property inheritance from + surrounding text. + +2001-11-10 Jason Rumney + + * w32fns.c (enum_font_cb2): Use leading @ on face name to detect + vertical fonts. Allow them if face name is explicitly specified. + Do not give up if we find a font that cannot be converted to an xlfd. + +2001-11-10 Gerd Moellmann + + * unexelf.c (unexec): Use mmap/munmap to allocate buffers + instead of malloc/free. + +2001-11-09 Pavel Jan,Am(Bk + + * xfaces.c (merge_face_vectors): Use braces to follow GNU + Coding Standards. + (Finternal_set_lisp_face_attribute): Likewise. + + * buffer.c (Fbury_buffer): Likewise. + + * indent.c (current_column_1): Remove unused variable `prev_col'. + + * coding.c (encode_coding): Use precomputed value of `src'. + (encode_coding): Remove unused variable `src_end'. + (code_convert_region): Remove unused variables `count'. + +2001-11-07 Jason Rumney + + * w32term.c (x_display_and_set_cursor): Do not move system caret + if cursor_glyph is NULL. + +2001-11-07 Pavel Jan,Am(Bk + + * keymap.c (access_keymap): Fix compilation error. + +2001-11-07 Miles Bader + + * xfns.c (x_set_frame_parameters): Avoid infinite recursion. + +2001-11-07 Pavel Jan,Am(Bk + + * intervals.c (graft_intervals_into_buffer): + Remove #ifdef'd-out code. + (graft_intervals_into_buffer): Remove unused variable `middle'. + + * lread.c (Feval_region): Remove obsolete #ifdef'd-out + code (eval-current-buffer). + Change doc-string comments to `new style' [w/`doc:' keyword]. + +2001-11-06 Richard M. Stallman + + * keymap.c (access_keymap): Don't use initializers on Lisp_Object. + +2001-11-06 Stefan Monnier + + * lread.c (read1): Fix behavior with nested backquoting. + + * keyboard.c (make_lispy_event): Check integerness and fix + Lisp_Object/int mixup. + +2001-11-06 Pavel Jan,Am(Bk + + * fns.c (copy_hash_table): Remove unused variable `v'. + + * fontset.c (fontset_font_pattern): Remove unused variable + `family_registry'. + + * indent.c (current_column_1): Remove unused variable `prev_col'. + +2001-11-05 Richard M. Stallman + + * m/news-risc.h (BROKEN_PROTOTYPES): Defined. + + * buffer.c (Fkill_buffer): Don't delete auto save file + if buffer is modified. + +2001-11-05 Andrew Innes + + * w32proc.c (Fw32_set_keyboard_layout): Use CHECK_NUMBER_CAR and + CHECK_NUMBER_CDR. + +2001-11-05 Richard M. Stallman + + * unexelf.c (unexec): Minor changes; clean up comments. + +2001-11-05 Sam Steingold + + * w32term.c (x_display_and_set_cursor): Fix w32 compilation error. + +2001-11-05 Andreas Schwab + + * sound.c (sound_perror): Save errno from being clobbered. + +2001-11-05 Dale Hagglund + + * unexelf.c (unexec): Don't use `mmap'. Instead, read and write + the program image directly. + +2001-11-05 Pavel Jan,Am(Bk + + * buffer.h (Fbuffer_local_value): Add prototype. + +2001-11-04 Richard M. Stallman + + * buffer.c (Fbuffer_local_value): Remove extra args from CHECK_SYMBOL + and CHECK_BUFFER. + + * keyboard.c (read_char): Use Fcar and Fcdr, not Fnth. + (record_char): Likewise. + + * keyboard.c (make_lispy_event): Don't insist a drag event must + move to a different buffer position. Instead, check for moving at + least double_click_fuzz. + + * fns.c (Fmake_hash_table): Use XCAR and XCDR, not Fnth and Flength. + + * keyboard.c (echo-area-clear-hook): Undo Oct 29 change. + + * indent.c (current_column_1, Fmove_to_column): Separate the code + for display-table glyphs from the code for buffer text, to fix + bugs in the former. + +2001-11-04 Michael Welsh Duggan + + * buffer.c (Fbuffer_local_value): New function. + (syms_of_buffer): Defsubr it. + + * xterm.c, w32term.c (x_display_and_set_cursor): Use buffer-local + value of `cursor-in-non-selected-windows'. + + * lisp.h (Qcursor_in_non_selected_windows): New declaration. + * xdisp.c (Qcursor_in_non_selected_windows): New variable. + (syms_of_xdisp): Initialize it. + +2001-11-04 Pavel Jan,Am(Bk + + * xfns.c (Fx_create_frame): Doc fix. + + * coding.c: Change doc-string comments to `new style' [w/`doc:' + keyword]. + + * eval.c (top_level_value, top_level_set): Remove commented and + #ifdef'd-out code. + (Fdefvar): Fix usage in doc-string. + +2001-11-03 Richard M. Stallman + + * xfns.c: Include unistd.h, if it exists. + + * editfns.c: Move the include of ctype.h after unistd.h. + + * gmalloc.c: Test BROKEN_PROTOTYPES. + +2001-11-03 Ken Raeburn + + * lisp.h (CHECK_STRING_CAR): New macro. + * lread.c (Fload): Use XSETCARFASTINT, XSETCDRFASTINT instead of + treating XCAR and XCDR as lvalues. + (openp): Use CHECK_STRING_CAR. + (read_list): Use XSETCDR instead of treating XCDR as lvalue. + +2001-11-03 Eli Zaretskii + + * s/sco5.h (sigprocmask_set): Declare as extern SIGMASKTYPE. + (SIGMASKTYPE): Define. + + * syssignal.h (sigunblock): Don't define if already defined. + +2001-11-02 Pavel Jan,Am(Bk + + * eval.c (debugger_may_continue, Vdebug_ignored_errors) + (call_debugger, Fcondition_case, skip_debugger, unbind_to): + Fix typos in comments. + + * mocklisp.c (Fml_defun, Fml_while, Fml_substr): Remove commented + and #ifdef'd-out code. + Fix and reindent comments. + + * mocklisp.h: Remove comment which is a copy of comment in mocklisp.c. + + * category.h (CHECK_CATEGORY, CHECK_CATEGORY_SET): Remove unused + argument `i' in macros. + + * frame.h (CHECK_FRAME, CHECK_LIVE_FRAME): Remove unused argument + `i' in macros. + + * lisp.h (CHECK_STRING_OR_BUFFER, CHECK_HASH_TABLE, CHECK_LIST) + (CHECK_STRING, CHECK_CONS, CHECK_SYMBOL, CHECK_CHAR_TABLE) + (CHECK_VECTOR, CHECK_VECTOR_OR_CHAR_TABLE, CHECK_BUFFER) + (CHECK_WINDOW, CHECK_LIVE_WINDOW, CHECK_PROCESS, CHECK_NUMBER) + (CHECK_NATNUM, CHECK_MARKER, CHECK_NUMBER_COERCE_MARKER) + (CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT) + (CHECK_NUMBER_OR_FLOAT_COERCE_MARKER, CHECK_OVERLAY) + (CHECK_NUMBER_CAR, CHECK_NUMBER_CDR): Remove unused argument `i' + in macros. + + * abbrev.c, alloc.c, buffer.c, bytecode.c, callint.c, callproc.c, + * casefiddle.c, category.c, ccl.c, charset.c, cmds.c, coding.c, + * composite.c, data.c, dired.c, dispnew.c, doc.c, dosfns.c, emacs.c, + * eval.c, fileio.c, filelock.c, fns.c, fontset.c, frame.c, frame.h, + * indent.c, keyboard.c, keymap.c, lread.c, macros.c, marker.c, + * minibuf.c, mocklisp.c, msdos.c, print.c, process.c, search.c, + * sunfns.c, syntax.c, textprop.c, undo.c, w16select.c, w32console.c, + * w32fns.c, w32menu.c, w32proc.c, w32select.c, window.c, xdisp.c, + * xfaces.c, xmenu.c, xselect.c: Update usage of CHECK_ macros + (remove unused second argument). + +2001-11-02 Stefan Monnier + + * syntax.c (describe_syntax): New wrapper. + (Finternal_describe_syntax_value): Rename from describe_syntax. + Don't insert space at front and \n at the end. + (syms_of_syntax): Defsubr Sinternal_describe_syntax_value. + + * regex.c (re_wctype): Try to fix some warnings. + (regcomp, regexec): Don't forget the __restrict. + +2001-11-02 Richard M. Stallman + + * textprop.c (Fget_char_property): Doc fix. + +2001-11-02 Pavel Jan,Am(Bk + + * process.c (Fstart_process): Add usage to doc-string. + + * data.c (Fsetq_default): Ditto. + + * callint.c (Finteractive): Ditto. + +2001-11-01 Stefan Monnier + + * macros.c: Don't include keymap.h any more. + +2001-11-01 Richard M. Stallman + + * data.c (Fmake_local_variable): Doc fix. + + * eval.c (Frun_hooks, Frun_hook_with_args_until_failure): Doc fix. + (Frun_hook_with_args_until_success, Frun_hook_with_args): Doc fix. + + * keymap.c (Fdescribe_buffer_bindings): Print character property + bindings along with or instead of the buffer local map. + Make the overriding maps override what they should. + +2001-11-01 Pavel Jan,Am(Bk + + * window.c (grow_mini_window): Fix typo in comment. + +2001-11-01 Gerd Moellmann + + * xterm.c (x_scroll_bar_create): Check for width and height > 0. + (XTset_vertical_scroll_bar): Likewise. + + * xfns.c (x_build_heuristic_mask): Use four_corners_best + instead of IMAGE_BACKGROUND. + + * xfns.c (four_corners_best): Reindent. + + * xfaces.c (Finternal_set_lisp_face_attribute_from_resource): + Handle :box so that it is possible to specify sexprs. + +2001-10-31 Eli Zaretskii + + * s/hpux11.h: New file. + +2001-10-31 Pavel Jan,Am(Bk + + * emacs.c (USAGE1): Show command line option --no-window-system + instead of --no-windows in usage. + (standard_args): Rename --no-windows to --no-window-system. + (bug_reporting_address): Follow Emacs coding conventions. + + * eval.c (Fcommandp): Doc fix. + Change doc-string comments to `new style' [w/`doc:' keyword]. + + * frame.c (Fframe_live_p): Doc fix. + + * buffer.c (selective-display-ellipses): Doc fix. + +2001-10-31 Gerd Moellmann + + * lread.c (to_multibyte): Fix computation of new read_buffer_size. + + * xfaces.c (realize_x_face): If C is not a single-byte character, + set the face's colors_copied_bitwise_p instead of the defaulted_p + members which have a different meaning. + (free_face_colors): Do nothing for a face whose colors have been + copied bitwise. + + * dispextern.h (struct face) : New member. + +2001-10-31 Pavel Jan,Am(Bk + + * marker.c, mocklisp.c: Change doc-string comments to `new style' + [w/`doc:' keyword]. + +2001-10-31 Gerd Moellmann + + * fns.c (require_unwind): Return Lisp_Object. + +2001-10-31 Pavel Jan,Am(Bk + + * keyboard.c (lucid-menu-bar-dirty-flag): Doc fix. + (last-input-char): Revert doc-string to be the same as the + doc-string of `last-input-event'. + + * xdisp.c: Fix typos in comments. + +2001-10-31 Gerd Moellmann + + * window.c (grow_mini_window): Handle case that the root + window is already smaller than the nominal mininum height. + +2001-10-30 Stefan Monnier + + * emacs.c (main): Don't call keys_of_macros any more. + + * lisp.h (keys_of_macros): Remove. + + * macros.c (keys_of_macros): Remove. + + * xfaces.c (Fface_attribute_relative_p): Declare args. + +2001-10-30 Jason Rumney + + * w32fns.c (w32_to_x_charset): Increase size of XLFD charset buffer. + (enum_font_cb2): Ignore fonts with vertical orientation. + +2001-10-30 Richard M. Stallman + + * keyboard.c (Finput_pending_p): Doc fix. + +2001-10-30 Gerd Moellmann + + * xterm.c (x_after_update_window_line): Don't run the code + clearing in borders for rows whose visible height is 0. + + * xdisp.c (clear_garbaged_frames): Redraw the frame only if its + resized_p flag is set. If not set, use the much less flickering + method previously used. + + * dispnew.c (change_frame_size_1): Set frame's resized_p. + + * frame.h (struct frame) : New member. + + * lread.c (to_multibyte): Ensure read_buffer is at least twice + as large as the number of bytes to convert. + + * lread.c (to_multibyte): New function. + (read1): Use it. + +2001-10-30 Eli Zaretskii + + * msdos.h (FRAME_LINE_HEIGHT): Define (it's used by xmenu.c). + +2001-10-30 Gerd Moellmann + + * xterm.c (x_draw_relief_rect): Correct bottom relief by 1 pixel. + (x_set_glyph_string_background_width): Set extends_to_end_of_line_p + if the row's fill_line_p is set and drawing the last glyph with + DRAW_IMAGE_{RAISED,SUNKEN}. + + * xdisp.c (clear_garbaged_frames): Call Fredraw_frame. + +2001-10-29 Stefan Monnier + + * xmenu.c: Include coding.h and charset.h. + (Fx_popup_menu): Use FRAME_PTR and FRAME_FONT and FRAME_LINE_HEIGHT. + (Fx_popup_dialog): Use FRAME_PTR and enum scroll_bar_part. + (single_submenu, xmenu_show): Use ENCODE_SYSTEM. + Explicitly set wv->help. Use `TRUE' rather than `True'. + (menu_help_callback): Use empty_string. + + * w32menu.c (Fx_popup_menu): Explicitly init f, xpos, and ypos. + (Fx_popup_dialog): Explicitly init f. + (w32_menu_display_help): Use empty_string. + +2001-10-29 Richard M. Stallman + + * fns.c (Frequire): Detect recursive try to require the same + feature 3 or more levels deep, and get error. + (require_unwind): New subroutine. + (require_nesting_list): New variable. + (syms_of_fns): Init and staticpro it. + + * print.c (print_object): Clarify indication of insertion type. + +2001-10-29 Eli Zaretskii + + * coding.c (syms_of_coding): Document that locale-coding-system is + used for decoding input on X. + + * window.c (Fscroll_left, Fscroll_right): Doc fix. + +2001-10-29 Pavel Jan,Am(Bk + + * keyboard.c (Finput_pending_p): Fix typo in doc-string. + (echo-area-clear-hook): Properly DEFVAR_LISP and staticpro it. + +2001-10-29 Gerd Moellmann + + * xterm.c (x_display_and_set_cursor): If cursor_in_echo_area, + use NO_CURSOR if cursor_in_non_selected_windows is false. + + * xfaces.c (Fface_font): Use UNSPECIFIEDP instead of NILP for + the slant attribute if FRAME is t. + + * xfns.c (x_set_internal_border_width): Set frame garbaged + when X window doesn't exist yet. + + * xterm.c (x_after_update_window_line): Clear internal border + in different circumstances. + + * xterm.c (XTread_socket) : Don't use + STRING_CHAR_AND_LENGTH if nchars == nbytes. From Kenichi Handa + . + +2001-10-28 Eli Zaretskii + + * m/ibms390.h: New file. From Adam Thornton + . + +2001-10-28 Gerd Moellmann + + * xfns.c (x_build_heuristic_mask): Use x_alloc_image_color. + + * xfns.c (x_build_heuristic_mask): Fix a bug not incrementing + a loop counter. + +2001-10-28 Pavel Jan,Am(Bk + + * emacs.c: Use argv[0] instead of "emacs" when -t was specified. + + * keyboard.c: Change doc-string comments to `new style' [w/`doc:' + keyword]. + Fix typos in comments. + + * emacs.c (bug_reporting_address): New function. + Use it when displaying usage message. + + * minibuf.c (read_minibuf): Remove unused external declaration of + variable `Qread_only'. + + * keymap.c (access_keymap): Remove unused variable `charset'. + +2001-10-28 Miles Bader + + * xfaces.c (merge_face_heights): Handle TO being relative as well. + Remove #ifdef'd-out code. + (Fface_attribute_relative_p, Fmerge_face_attribute): New functions. + (syms_of_xfaces): Initialize them. + +2001-10-27 Jason Rumney + + * w32fns.c (w32_wnd_proc) : Destroy the system caret. + : Track cursor + position using the system caret. + + * w32term.c (w32_system_caret_hwnd, w32_system_caret_width) + (w32_system_caret_height, w32_system_caret_x) + (w32_system_caret_y): New variables for tracking system caret. + (w32_initialize): Initialize them. + (x_display_and_set_cursor): Make system caret follow the active cursor. + + * w32term.h (WM_EMACS_TRACK_CARET, WM_EMACS_DESTROY_CARET): + New messages types. + + * w32term.c (note_mouse_highlight): Clear old help_echo. + +2001-10-27 Pavel Jan,Am(Bk + + * xterm.c: Fix typo in a comment. + + * emacs.c: Fix typos in comments. + Remove unnecessary spaces. + Change doc-string comments to `new style' [w/`doc:' keyword]. + (USAGE2): Fix typos in usage string. + + * xterm.c: Fix typo in a comment. + + * lisp.h (gdb_lisp_params): Remove code in #if 0 which is now in + emacs.c. + +2001-10-27 Gerd Moellmann + + * xdisp.c (move_it_vertically_backward): Use 2/3 line_height + instead of 1/2 line_height in the heuristic for skipping + farther backward when target_y was not reached. + + * sound.c (sound_perror): Unblock SIGIO, turn on atimers. + Display errno only if non-zero. + (sound_warning): New function. + (vox_configure): Don't treat failing to set sample rate as error. + (various places): Improve error messages. + +2001-10-26 Eli Zaretskii + + * fileio.c (Faccess_file): Run the argument filename through + Fexpand_file_name, before using it. + + * dispnew.c (syms_of_display) : Add a reference to + ring-bell-function. Suggested by Alf-Ivar Holm + +2001-10-26 Gerd Moellmann + + * insdel.c (insert_1_both): Do nothing if NCHARS == 0. + + * xterm.c (XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]: + Fix clearing in the case of scroll bars on the right. + +2001-10-26 Juanma Barranquero + + * w32gui.h (XImage): Add a dummy typedef. + +2001-10-26 Gerd Moellmann + + * xfns.c (XScreenNumberOfScreen): Fix struct to pointer comparison. + +2001-10-25 Eli Zaretskii + + * frame.c (Fframe_parameter): Fix last change. + + * fileio.c: Revert last change (which removed old commented-out + version of expand-file-name). Add a comment that explains why + this old version should not be removed. + +2001-10-25 Gerd Moellmann + + * frame.c (Fframe_parameter): Fix a bug whereby some + ``artificial'' frame parameters, like `minibuffer' were not + obtained by calling Fframe_parameters. + + * xterm.c (show_mouse_face): Clean up. Recognize overwritten + cursor differently. + + * xdisp.c (move_it_vertically_backward): Compute line height + differently. Add heuristic to try to be more compatible to 20.x. + +2001-10-25 Stefan Monnier + + * lisp.h (make_fixnum_or_float): Coerce double to int explicitly. + + * editfns.c (text_property_stickiness): Fix Lisp_Object used as + boolean. + +2001-10-25 Miles Bader + + * xfns.c (png_load): Make sure SPECIFIED_BG is a string. + BG is a pointer to a structure, not a structure. + (gif_format, png_format): Add missing commas. + +2001-10-24 Richard M. Stallman + + * xfaces.c (Fface_attributes_as_vector): New function. + (syms_of_xfaces): Defsubr it. + +2001-10-24 Pavel Jan,Am(Bk + + * dispnew.c (sync_window_with_frame_matrix_rows): Remove unused + variable `area'. + +2001-10-25 Pavel Jan,Am(Bk + + * search.c (scan_newline): Remove unused variable `selective_display'. + +2001-10-25 Miles Bader + + * dispextern.h (struct image): Add `background', + `background_valid', and `background_transparent' fields. + (image_background, image_background_transparent): New declarations. + (IMAGE_BACKGROUND, IMAGE_BACKGROUND_TRANSPARENT): New macros. + * xfns.c (image_background, image_background_transparent) + (four_corners_best): New functions. + (xpm_format, png_format, jpeg_format, tiff_format, gif_format) + (gs_format): Add `:background' entry. + (lookup_image): Set IMG's background color if specified. + (pbm_load, xbm_load_image, png_load): Set IMG's background field + when appropriate. + (x_clear_image_1): Reset `background_valid' and + `background_transparent_valid' fields. + (x_build_heuristic_mask): Use IMAGE_BACKGROUND instead of + calculating it here. Set IMG's background_transparent field. + (enum xpm_keyword_index): Add XPM_BACKGROUND. + (enum png_keyword_index): Add PNG_BACKGROUND. + (enum jpeg_keyword_index): Add JPEG_BACKGROUND. + (enum tiff_keyword_index): Add TIFF_BACKGROUND. + (enum gif_keyword_index): Add GIF_BACKGROUND. + (enum gs_keyword_index): Add GS_BACKGROUND. + (pbm_load, png_load, jpeg_load, tiff_load, gif_load): + Pre-calculate image background color where necessary. + * xterm.c (x_setup_relief_colors): Use `IMAGE_BACKGROUND' and + `IMAGE_BACKGROUND_TRANSPARENT' to calculate the correct background + color to use for image glyph reliefs. + +2001-10-24 Gerd Moellmann + + * xterm.c (x_draw_glyphs): Don't check for cursor overwriting + in full-width rows. + + * xterm.c (XTset_vertical_scroll_bar) [!USE_TOOLKIT_SCROLL_BARS]: + Fix clearing of area not covered by scroll bar. + +2001-10-24 Pavel Jan,Am(Bk + + * xterm.c (x_insert_glyphs): Remove unused variables `real_end' + and `real_start'. + (x_draw_image_foreground): Remove unused variables `mask' and `xgcv'. + (glyph_rect): Remove unused variable `area'. + +2001-10-24 Gerd Moellmann + + * xdisp.c: Change #ifdef GLYPH_DEBUG to #if. + + * xdisp.c (try_window_reusing_current_matrix): Use row_containing_pos. + (row_containing_pos): Take additional argument DY. + Treat rows ending in middle of char differently. + (display_line): Handle tabs on window systems differently. + + * xterm.c, w32term.c (fast_find_position): Call row_containing_pos + with additional argument. + + * dispextern.h (row_containing_pos): Adjust prototype. + + * xdisp.c (inhibit_try_window_id, inhibit_try_window_reusing) + (inhibit_try_cursor_movement) [GLYPH_DEBUG]: New variables. + (try_window_id, try_window_reusing_current_matrix) + (try_cursor_movement) [GLYPH_DEBUG]: Don't run if inhibited. + (syms_of_xdisp) [GLYPH_DEBUG]: DEFVAR_BOOL the variables. + +2001-10-24 Pavel Jan,Am(Bk + + * xmenu.c: Spell the name of Emacs properly (GNU Emacs instead of + gnuemacs). + (HAVE_BOXES): Fix typo in comment. + (push_menu_pane): Fix typo in comment. + + * xdisp.c (display_prop_string_p): Remove unused local declaration + of `Qwhen'. + (single_display_prop_string_p): Remove unused local declarations + of `Qwhen' and `Qmargin'. + (string_buffer_position): Remove unused variable `around'. + (store_frame_title): Remove unused variable `width'. + + * window.c: Don't define max. + (coordinates_in_window): Remove unused variable `uy'. + + * widget.c: Don't define max. + + * process.c: Don't define max. + (create_process): Remove unused variable `buffer'. + +2001-10-23 Gerd Moellmann + + * xfaces.c (Finternal_set_lisp_face_attribute): Fix compilation error. + +2001-10-23 Eli Zaretskii + + * xfaces.c (Finternal_set_lisp_face_attribute) + [HAVE_WINDOW_SYSTEM]: Don't do anything for QCfont unless the + frame is on a windowed display. + +2001-10-23 Gerd Moellmann + + * dispnew.c (sync_window_with_frame_matrix_rows): + Fix handling of windows which aren't full-width, fix handling + of marginal areas. + + * lread.c (syms_of_lread) : Raise to 50. + +2001-10-23 Andreas Schwab + + * m/macppc.h [LINUX]: Undef LD_SWITCH_SYSTEM_TEMACS and override + LD_SWITCH_MACHINE_TEMACS with "-Xlinker -znocombreloc". + +2001-10-23 Gerd Moellmann + + * xterm.c (x_draw_glyphs): Remove parameters READ_START and + REAL_END. Notice if cursor gets overwritten. + (notice_overwritten_cursor): Take X positions as parameters. + (x_draw_phys_cursor_glyph): Save state of w->phys_cursor_on_p + around call to x_draw_glyphs. + +2001-10-23 Pavel Jan,Am(Bk + + * syntax.c (modify-syntax-entry): Fix argument names (use CHAR + instead of C) and usage. + + * editfns.c (char-to-string): Fix argument names (use CHAR instead + of C) and usage. + + * xfns.c (Fx_show_tip): Remove unused variables `buffer', `top', + `left', `max_width' and `max_height'. + +2001-10-23 Gerd Moellmann + + * xdisp.c (display_line): For a tab continued to the next line, + set row's ends_in_middle_of_char_p. + +2001-10-22 Gerd Moellmann + + * xdisp.c (display_line): Fix computation of continuation lines + width for TABs. + +2001-10-22 Pavel Jan,Am(Bk + + * xdisp.c (build_desired_tool_bar_string): Remove unused variable + `Qlaplace'. + + * fileio.c: Remove unused code. + +2001-10-22 Miles Bader + + * lisp.h (DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_BOOL) + (DEFVAR_INT, DEFVAR_PER_BUFFER, DEFVAR_KBOARD): + Remove `DOC_STRINGS_IN_COMMENTS' cases. + +2001-10-21 Jason Rumney + + * w32term.c (x_erase_phys_cursor): Remove inverse_p again. + +2001-10-21 Eli Zaretskii + + * mocklisp.c (Fml_if, Fml_provide_prefix_argument) + (Finsert_string): Avoid the multi-line string literals warning. + +2001-10-22 Miles Bader + + * doc.c (Vhelp_manyarg_func_alist): Variable removed. + (Fdocumentation): Don't use it. + (syms_of_doc): Don't initialize it. + + * keyboard.c (Ftrack_mouse): Add usage: string to doc string. + * print.c (Fwith_output_to_temp_buffer): Likewise. + * window.c (Fsave_window_excursion): Likewise. + * editfns.c (Fsave_excursion, Fsave_current_buffer) + (Fsave_restriction): Likewise. + * eval.c (Frun_hooks, Frun_hook_with_args) + (Frun_hook_with_args_until_failure) + (Frun_hook_with_args_until_success, Ffuncall, For, Fand, Fif) + (Fcond, Fprogn, Fprog1, Fprog2, Fsetq, Fquote, Ffunction, Fdefun) + (Fdefmacro, Fdefvar, Fdefconst, FletX, Flet, Fwhile, Fcatch) + (Funwind_protect, Fcondition_case): Likewise. + * coding.c (Ffind_operation_coding_system): Likewise. + * keyboard.c (Ftrack_mouse): Likewise. + +2001-10-21 Miles Bader + + * fns.c (Fappend, Fconcat, Fvconcat, Fnconc, Fwidget_apply) + (Fmake_hash_table): Add usage: string to doc string. + * editfns.c (Finsert, Finsert_and_inherit, Finsert_before_markers) + (Fmessage, Fmessage_box, Fmessage_or_box, Fpropertize, Fformat) + (Fencode_time, Finsert_and_inherit_before_markers): Likewise. + * mocklisp.c (Finsert_string, Fml_if, Fml_provide_prefix_argument) + (Fml_prefix_argument_loop): Likewise. + +2001-10-21 Pavel Jan,Am(Bk + + * fileio.c (Finsert_file_contents): Remove unused variable `gap_size'. + + * sysdep.c (init_sys_modes): Change doc-string comments to `new + style' [w/`doc:' keyword]. + + * data.c, fileio.c, indent.c, print.c, search.c, sound.c, + * sunfns.c, textprop.c, undo.c, xselect.c: Change doc-string + comments to `new style' [w/`doc:' keyword]. + +2001-10-21 Jason Rumney + + * w32fns.c (Fx_file_dialog): Pass a filter to GetOpenFileName. + + * w32term.c (remember_mouse_glyph): New function. + (w32_mouse_position): Use it. + (note_mouse_movement): If the mouse moved off the glyph, remember + its new position. + + * w32term.h (struct w32_output): Correct spelling of x_compatible. + (w32_display_info): Add mouse_face_overlay. + + * w32term.c (notice_overwritten_cursor): Renamed from + note_overwritten_text_cursor. Rewritten to take glyph widths into + account. + (x_y_to_hpos_vpos): Add parameter BUFFER_ONLY_P. + (fast_find_string_pos): New function. + (fast_find_position): Return the correct vpos. Add parameter + STOP. In the final row, stop before glyphs having STOP as object. + Don't consider glyphs that are not from a buffer. + (fast_find_position) [0]: Add a presumably more correct version + for after 21.1. + (expose_window_tree, expose_frame): Don't compute intersections here. + (expose_window): Do it here instead. + (expose_window_tree, expose_window, expose_line): Return 1 when + overwriting mouse-face. + (expose_window): If W is the window currently being updated, mark + the frame garbaged. + (expose_frame): If mouse-face was overwritten, redo it. + (x_use_underline_position_properties): New variable. + (syms_of_xterm): DEFVAR_BOOL it. + (x_draw_glyph_string): Add comment to use it in future. + (x_draw_glyph_string): Restore clipping after drawing box. + Fix a computation of the underline position. + (w32_get_glyph_string_clip_rect): Minor cleanup. + (x_fill_stretch_glyph_string): Remove an assertion. + (x_produce_glyphs): Don't convert multibyte characters + to unibyte characters in unibyte buffers. + (cursor_in_mouse_face_p): New function. + (x_draw_stretch_glyph_string): Use it to choose a different GC + when drawing a cursor within highlighted text. Don't draw + background again if it has already been drawn. + (x_draw_glyph_string_box): Don't draw a full-width + box just because the glyph row's full_width_p flag is set. + (x_draw_glyphs): Fix computation of rightmost x for + full-width rows. + (x_dump_glyph_string): Put in #if GLYPH_DEBUG. + (w32_draw_relief_rect): Extend left shadow to the bottom and left; + change bottom shadow accordingly. Some cleanup. + (x_update_window_end): Handle overwritten mouse face + also for tool bar windows. + (show_mouse_face): Set the glyph row's mouse_face_p flag also when + DRAW is DRAW_IMAGE_RAISED. + (clear_mouse_face): Return 1 if text with mouse face was + actually redrawn. Make the function static. + Reset dpyinfo->mouse_face_overlay otherwise note_mouse_highlight might + optimize away highlighting if we pass over that same overlay again. + (note_mouse_highlight): Call mouse_face_overlay_overlaps + to detect a case where we have to highlight a different region + despite not having left the currently highlighted region. + Set mouse_face_overlay in the x_display_info. Avoid changing the + mouse pointer shape when show_mouse_face has already done it, or + there is no need. Handle mouse-face and help-echo in strings. + (glyph_rect): New function. + (w32_mouse_position): Use it to raise the threshold for mouse + movement event generation. + (w32_initialize_display_info): Initialize the x_display_info's + mouse_face_overlay. + (w32_set_vertical_scroll_bar): Don't clear a zero height + or width area. + (w32_set_vertical_scroll_bar, x_scroll_bar_create): Don't configure + a widget to zero height. + + * w32menu.c (single_submenu, w32_menu_show) [!HAVE_MULTILINGUAL_MENU]: + Protect unibyte strings created by replacing their multibyte + equivalents in menu_items. + (w32_menu_show): Don't overwrite an item's name with its key + description in case the description is a multibyte string. + (single_submenu): Some cleanup. + + * w32fns.c (x_laplace_read_row, x_laplace_write_row): Removed. + (postprocess_image): New function. + (lookup_image): Call it for all image types except PostScript. + (x_kill_gs_process): Call postprocess_image. + (tiff_error_handler, tiff_warning_handler): New functions. + (tiff_load): Install them as handlers. + (x_kill_gs_process): Recognize if someone has cleared the image + cache under us. + (valid_image_p): Protect better against invalid image + specifications. Previous code could signal an error. + (Fx_hide_tip, Fshow_tip): Doc fix. + (Fv_max_tooltip_size): New variable. + (syns_of_xfns): DEFVAR_LISP it. + (Fx_show_tip): Add parameter TEXT. Set the tip frame's root + window buffer to *tip* right after creating the frame. Set frame's + window_width. Use a maximum tooltip size specified by + Vx_max_tooltip_size, if that has valid contents. + (compute_tip_xy): Add parameters WIDTH and HEIGHT. + Make sure the tooltip is completely visible. + (x_create_tip_frame): Set tooltip buffer's truncate-lines to nil. + (Fx_create_frame): Adjust the frame's height for presence + of the tool bar before calling x_figure_window_size. + (x_set_tool_bar_lines): Clear the tool bar window's current matrix + when the window gets smaller. + (x_set_foreground_color): Set frame's cursor_pixel. + (x_set_foreground_color, x_set_background_color): Cleaned up. + (x_set_font): Handle case of x_new_fontset returning the same name + as before, although there was a change in fontsets. + +2001-10-21 Miles Bader + + * data.c (Fplus, Fminus, Fmax, Ftimes, Fquo, Flogand, Flogior) + (Flogxor): Add usage: string to doc string. + * charset.c (Fstring): Likewise. + * callproc.c (Fcall_process_region, Fcall_process): Likewise. + * alloc.c (Fmake_byte_code, Fvector, Flist): Likewise. + +2001-10-21 Pavel Jan,Am(Bk + + * buffer.c: Reindent DEFUNs and DEFVARs with doc: keywords. + + * alloc.c: Reindent DEFUNs with doc: keywords. + + * abbrev.c (Finsert_abbrev_table_description): Reindent. + + * frame.c: Change doc-string comments to `new style' [w/`doc:' + keyword]. + +See ChangeLog.9 for earlier changes. + +;; Local Variables: +;; coding: iso-2022-7bit +;; add-log-time-zone-rule: t +;; End: + + Copyright (C) 2001, 2002, 2003, 2004, 2005, + 2006, 2007 Free Software Foundation, Inc. + + This file is part of GNU Emacs. + + GNU Emacs is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GNU Emacs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Emacs; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. + +;;; arch-tag: 5dcc435f-4038-4141-b3bf-5be51cd76bd4 diff --cc src/keyboard.c index 9068f944664,538c0a0d1b0..5824042e663 --- a/src/keyboard.c +++ b/src/keyboard.c @@@ -4098,9 -3995,15 +4102,15 @@@ kbd_buffer_get_event (kbp, used_mouse_m /* Wait until there is input available. */ for (;;) { + /* Break loop if there's an unread command event. Needed in + moused window autoselection which uses a timer to insert such + events. */ + if (CONSP (Vunread_command_events)) + break; + if (kbd_fetch_ptr != kbd_store_ptr) break; -#ifdef HAVE_MOUSE +#if defined (HAVE_MOUSE) || defined (HAVE_GPM) if (!NILP (do_mouse_tracking) && some_mouse_moved ()) break; #endif @@@ -11482,7 -10985,7 +11492,8 @@@ init_kboard (kb kb->Voverriding_terminal_local_map = Qnil; kb->Vlast_command = Qnil; kb->Vreal_last_command = Qnil; + kb->Vkeyboard_translate_table = Qnil; + kb->Vlast_repeatable_command = Qnil; kb->Vprefix_arg = Qnil; kb->Vlast_prefix_arg = Qnil; kb->kbd_queue = Qnil; @@@ -12460,7 -11879,7 +12476,8 @@@ mark_kboards ( mark_object (kb->Voverriding_terminal_local_map); mark_object (kb->Vlast_command); mark_object (kb->Vreal_last_command); + mark_object (kb->Vkeyboard_translate_table); + mark_object (kb->Vlast_repeatable_command); mark_object (kb->Vprefix_arg); mark_object (kb->Vlast_prefix_arg); mark_object (kb->kbd_queue); diff --cc src/keyboard.h index 2e50c4c5f1f,ea147cad483..ae135b30b77 --- a/src/keyboard.h +++ b/src/keyboard.h @@@ -84,9 -83,9 +84,12 @@@ struct kboar other commands. */ Lisp_Object Vreal_last_command; + /* User-supplied table to translate input characters through. */ + Lisp_Object Vkeyboard_translate_table; + + /* Last command that may be repeated by `repeat'. */ + Lisp_Object Vlast_repeatable_command; + /* The prefix argument for the next command, in raw form. */ Lisp_Object Vprefix_arg; diff --cc src/termhooks.h index 7f58114c219,56f98092c6a..4d8fb8a861b --- a/src/termhooks.h +++ b/src/termhooks.h @@@ -194,12 -340,8 +194,12 @@@ enum event_kin symbols, respectively. Member `arg' is a Lisp object converted from the received Apple event. Parameters for non-Apple events are converted to those in Apple events. */ - MAC_APPLE_EVENT, + , MAC_APPLE_EVENT #endif + +#ifdef HAVE_GPM - GPM_CLICK_EVENT ++ , GPM_CLICK_EVENT +#endif }; /* If a struct input_event has a kind which is SELECTION_REQUEST_EVENT